@opentdf/sdk 0.2.0-beta.1758 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/README.md +45 -38
  2. package/dist/cjs/src/access.js +47 -11
  3. package/dist/cjs/src/auth/auth.js +5 -5
  4. package/dist/cjs/src/auth/oidc-clientcredentials-provider.js +1 -1
  5. package/dist/cjs/src/auth/oidc-externaljwt-provider.js +1 -1
  6. package/dist/cjs/src/auth/oidc-refreshtoken-provider.js +1 -1
  7. package/dist/cjs/src/auth/oidc.js +1 -1
  8. package/dist/cjs/src/auth/providers.js +1 -1
  9. package/dist/cjs/src/concurrency.js +3 -4
  10. package/dist/cjs/src/encodings/base64.js +4 -4
  11. package/dist/cjs/src/encodings/hex.js +5 -6
  12. package/dist/cjs/src/encodings/index.js +18 -8
  13. package/dist/cjs/src/errors.js +1 -1
  14. package/dist/cjs/src/index.js +28 -318
  15. package/dist/cjs/src/nanoclients.js +285 -0
  16. package/dist/cjs/src/nanoindex.js +47 -0
  17. package/dist/cjs/src/nanotdf/Client.js +18 -8
  18. package/dist/cjs/src/nanotdf/NanoTDF.js +1 -1
  19. package/dist/cjs/src/nanotdf/decrypt.js +2 -2
  20. package/dist/cjs/src/nanotdf/encrypt-dataset.js +2 -2
  21. package/dist/cjs/src/nanotdf/encrypt.js +2 -2
  22. package/dist/cjs/src/nanotdf/helpers/calculateByCurve.js +3 -4
  23. package/dist/cjs/src/nanotdf/helpers/getHkdfSalt.js +2 -2
  24. package/dist/cjs/src/nanotdf/models/Ciphers.js +3 -3
  25. package/dist/cjs/src/nanotdf/models/EcCurves.js +3 -3
  26. package/dist/cjs/src/nanotdf/models/Header.js +1 -1
  27. package/dist/cjs/src/nanotdf/models/Payload.js +1 -1
  28. package/dist/cjs/src/nanotdf/models/Policy/AbstractPolicy.js +1 -1
  29. package/dist/cjs/src/nanotdf/models/Policy/EmbeddedPolicy.js +1 -1
  30. package/dist/cjs/src/nanotdf/models/Policy/PolicyFactory.js +1 -1
  31. package/dist/cjs/src/nanotdf/models/ResourceLocator.js +1 -1
  32. package/dist/cjs/src/nanotdf/models/Signature.js +1 -1
  33. package/dist/cjs/src/nanotdf-crypto/ciphers.js +1 -1
  34. package/dist/cjs/src/nanotdf-crypto/decrypt.js +2 -2
  35. package/dist/cjs/src/nanotdf-crypto/digest.js +2 -2
  36. package/dist/cjs/src/nanotdf-crypto/ecdsaSignature.js +4 -5
  37. package/dist/cjs/src/nanotdf-crypto/encrypt.js +2 -2
  38. package/dist/cjs/src/nanotdf-crypto/exportCryptoKey.js +2 -2
  39. package/dist/cjs/src/nanotdf-crypto/generateKeyPair.js +2 -2
  40. package/dist/cjs/src/nanotdf-crypto/generateRandomNumber.js +2 -2
  41. package/dist/cjs/src/nanotdf-crypto/index.js +21 -13
  42. package/dist/cjs/src/nanotdf-crypto/keyAgreement.js +10 -8
  43. package/dist/cjs/src/nanotdf-crypto/pemPublicToCrypto.js +20 -11
  44. package/dist/cjs/src/opentdf.js +251 -0
  45. package/dist/cjs/src/policy/api.js +2 -3
  46. package/dist/cjs/src/policy/granter.js +3 -4
  47. package/dist/cjs/src/seekable.js +157 -0
  48. package/dist/cjs/src/tdf/AttributeObject.js +2 -4
  49. package/dist/cjs/src/tdf/Policy.js +1 -2
  50. package/dist/cjs/src/utils.js +12 -14
  51. package/dist/cjs/src/version.js +6 -2
  52. package/dist/cjs/tdf3/index.js +27 -15
  53. package/dist/cjs/tdf3/src/assertions.js +25 -11
  54. package/dist/cjs/tdf3/src/binary.js +1 -1
  55. package/dist/cjs/tdf3/src/ciphers/aes-gcm-cipher.js +1 -1
  56. package/dist/cjs/tdf3/src/ciphers/symmetric-cipher-base.js +1 -1
  57. package/dist/cjs/tdf3/src/client/DecoratedReadableStream.js +7 -74
  58. package/dist/cjs/tdf3/src/client/builders.js +26 -22
  59. package/dist/cjs/tdf3/src/client/index.js +88 -61
  60. package/dist/cjs/tdf3/src/client/validation.js +3 -3
  61. package/dist/cjs/tdf3/src/crypto/crypto-utils.js +1 -1
  62. package/dist/cjs/tdf3/src/crypto/index.js +18 -18
  63. package/dist/cjs/tdf3/src/index.js +22 -11
  64. package/dist/cjs/tdf3/src/models/attribute-set.js +1 -1
  65. package/dist/cjs/tdf3/src/models/encryption-information.js +3 -3
  66. package/dist/cjs/tdf3/src/models/key-access.js +67 -35
  67. package/dist/cjs/tdf3/src/models/policy.js +3 -3
  68. package/dist/cjs/tdf3/src/tdf.js +177 -151
  69. package/dist/cjs/tdf3/src/utils/buffer-crc32.js +2 -3
  70. package/dist/cjs/tdf3/src/utils/index.js +30 -28
  71. package/dist/cjs/tdf3/src/utils/keysplit.js +4 -5
  72. package/dist/cjs/tdf3/src/utils/unwrap.js +21 -0
  73. package/dist/cjs/tdf3/src/utils/zip-reader.js +4 -4
  74. package/dist/cjs/tdf3/src/utils/zip-writer.js +4 -4
  75. package/dist/types/src/access.d.ts +3 -0
  76. package/dist/types/src/access.d.ts.map +1 -1
  77. package/dist/types/src/auth/providers.d.ts.map +1 -1
  78. package/dist/types/src/index.d.ts +5 -136
  79. package/dist/types/src/index.d.ts.map +1 -1
  80. package/dist/types/src/nanoclients.d.ts +107 -0
  81. package/dist/types/src/nanoclients.d.ts.map +1 -0
  82. package/dist/types/src/nanoindex.d.ts +5 -0
  83. package/dist/types/src/nanoindex.d.ts.map +1 -0
  84. package/dist/types/src/nanotdf/enum/CipherEnum.d.ts +1 -1
  85. package/dist/types/src/nanotdf/enum/CipherEnum.d.ts.map +1 -1
  86. package/dist/types/src/nanotdf/enum/PolicyTypeEnum.d.ts +1 -1
  87. package/dist/types/src/nanotdf/enum/PolicyTypeEnum.d.ts.map +1 -1
  88. package/dist/types/src/nanotdf/models/DefaultParams.d.ts +1 -1
  89. package/dist/types/src/nanotdf/models/ResourceLocator.d.ts.map +1 -1
  90. package/dist/types/src/nanotdf-crypto/generateKeyPair.d.ts +1 -1
  91. package/dist/types/src/nanotdf-crypto/generateKeyPair.d.ts.map +1 -1
  92. package/dist/types/src/nanotdf-crypto/generateRandomNumber.d.ts +1 -1
  93. package/dist/types/src/nanotdf-crypto/generateRandomNumber.d.ts.map +1 -1
  94. package/dist/types/src/nanotdf-crypto/index.d.ts +2 -3
  95. package/dist/types/src/nanotdf-crypto/index.d.ts.map +1 -1
  96. package/dist/types/src/nanotdf-crypto/keyAgreement.d.ts.map +1 -1
  97. package/dist/types/src/opentdf.d.ts +110 -0
  98. package/dist/types/src/opentdf.d.ts.map +1 -0
  99. package/dist/types/src/seekable.d.ts +39 -0
  100. package/dist/types/src/seekable.d.ts.map +1 -0
  101. package/dist/types/src/tdf/AttributeObject.d.ts +0 -2
  102. package/dist/types/src/tdf/AttributeObject.d.ts.map +1 -1
  103. package/dist/types/src/tdf/NanoTDF/NanoTDF.d.ts +2 -2
  104. package/dist/types/src/tdf/NanoTDF/NanoTDF.d.ts.map +1 -1
  105. package/dist/types/src/tdf/Policy.d.ts.map +1 -1
  106. package/dist/types/src/tdf/PolicyObject.d.ts +0 -1
  107. package/dist/types/src/tdf/PolicyObject.d.ts.map +1 -1
  108. package/dist/types/src/utils.d.ts +0 -1
  109. package/dist/types/src/utils.d.ts.map +1 -1
  110. package/dist/types/src/version.d.ts +4 -0
  111. package/dist/types/src/version.d.ts.map +1 -1
  112. package/dist/types/tdf3/index.d.ts +3 -2
  113. package/dist/types/tdf3/index.d.ts.map +1 -1
  114. package/dist/types/tdf3/src/assertions.d.ts +3 -3
  115. package/dist/types/tdf3/src/assertions.d.ts.map +1 -1
  116. package/dist/types/tdf3/src/client/DecoratedReadableStream.d.ts +1 -13
  117. package/dist/types/tdf3/src/client/DecoratedReadableStream.d.ts.map +1 -1
  118. package/dist/types/tdf3/src/client/builders.d.ts +43 -37
  119. package/dist/types/tdf3/src/client/builders.d.ts.map +1 -1
  120. package/dist/types/tdf3/src/client/index.d.ts +8 -9
  121. package/dist/types/tdf3/src/client/index.d.ts.map +1 -1
  122. package/dist/types/tdf3/src/client/validation.d.ts +3 -3
  123. package/dist/types/tdf3/src/client/validation.d.ts.map +1 -1
  124. package/dist/types/tdf3/src/crypto/crypto-utils.d.ts.map +1 -1
  125. package/dist/types/tdf3/src/index.d.ts +1 -1
  126. package/dist/types/tdf3/src/index.d.ts.map +1 -1
  127. package/dist/types/tdf3/src/models/key-access.d.ts +63 -15
  128. package/dist/types/tdf3/src/models/key-access.d.ts.map +1 -1
  129. package/dist/types/tdf3/src/models/manifest.d.ts +2 -0
  130. package/dist/types/tdf3/src/models/manifest.d.ts.map +1 -1
  131. package/dist/types/tdf3/src/models/policy.d.ts +0 -1
  132. package/dist/types/tdf3/src/models/policy.d.ts.map +1 -1
  133. package/dist/types/tdf3/src/tdf.d.ts +20 -24
  134. package/dist/types/tdf3/src/tdf.d.ts.map +1 -1
  135. package/dist/types/tdf3/src/utils/index.d.ts +0 -2
  136. package/dist/types/tdf3/src/utils/index.d.ts.map +1 -1
  137. package/dist/types/tdf3/src/utils/unwrap.d.ts +2 -0
  138. package/dist/types/tdf3/src/utils/unwrap.d.ts.map +1 -0
  139. package/dist/types/tdf3/src/utils/zip-reader.d.ts +1 -1
  140. package/dist/types/tdf3/src/utils/zip-reader.d.ts.map +1 -1
  141. package/dist/types/tdf3/src/utils/zip-writer.d.ts +2 -2
  142. package/dist/web/src/access.js +40 -7
  143. package/dist/web/src/auth/auth.js +1 -1
  144. package/dist/web/src/auth/oidc-clientcredentials-provider.js +1 -1
  145. package/dist/web/src/auth/oidc-externaljwt-provider.js +1 -1
  146. package/dist/web/src/auth/oidc-refreshtoken-provider.js +1 -1
  147. package/dist/web/src/auth/oidc.js +1 -1
  148. package/dist/web/src/auth/providers.js +1 -1
  149. package/dist/web/src/concurrency.js +1 -1
  150. package/dist/web/src/encodings/base64.js +1 -1
  151. package/dist/web/src/encodings/hex.js +1 -1
  152. package/dist/web/src/errors.js +1 -1
  153. package/dist/web/src/index.js +6 -310
  154. package/dist/web/src/nanoclients.js +280 -0
  155. package/dist/web/src/nanoindex.js +5 -0
  156. package/dist/web/src/nanotdf/Client.js +1 -1
  157. package/dist/web/src/nanotdf/NanoTDF.js +1 -1
  158. package/dist/web/src/nanotdf/encrypt-dataset.js +1 -1
  159. package/dist/web/src/nanotdf/encrypt.js +1 -1
  160. package/dist/web/src/nanotdf/models/Ciphers.js +1 -1
  161. package/dist/web/src/nanotdf/models/EcCurves.js +1 -1
  162. package/dist/web/src/nanotdf/models/Header.js +1 -1
  163. package/dist/web/src/nanotdf/models/Payload.js +1 -1
  164. package/dist/web/src/nanotdf/models/Policy/AbstractPolicy.js +1 -1
  165. package/dist/web/src/nanotdf/models/Policy/EmbeddedPolicy.js +1 -1
  166. package/dist/web/src/nanotdf/models/Policy/PolicyFactory.js +1 -1
  167. package/dist/web/src/nanotdf/models/ResourceLocator.js +1 -1
  168. package/dist/web/src/nanotdf/models/Signature.js +1 -1
  169. package/dist/web/src/nanotdf-crypto/ciphers.js +1 -1
  170. package/dist/web/src/nanotdf-crypto/ecdsaSignature.js +1 -1
  171. package/dist/web/src/nanotdf-crypto/generateKeyPair.js +2 -2
  172. package/dist/web/src/nanotdf-crypto/generateRandomNumber.js +2 -2
  173. package/dist/web/src/nanotdf-crypto/index.js +3 -4
  174. package/dist/web/src/nanotdf-crypto/keyAgreement.js +9 -6
  175. package/dist/web/src/nanotdf-crypto/pemPublicToCrypto.js +1 -1
  176. package/dist/web/src/opentdf.js +242 -0
  177. package/dist/web/src/policy/api.js +1 -1
  178. package/dist/web/src/policy/granter.js +1 -1
  179. package/dist/web/src/seekable.js +148 -0
  180. package/dist/web/src/tdf/AttributeObject.js +1 -2
  181. package/dist/web/src/tdf/Policy.js +1 -2
  182. package/dist/web/src/utils.js +2 -3
  183. package/dist/web/src/version.js +5 -1
  184. package/dist/web/tdf3/index.js +3 -2
  185. package/dist/web/tdf3/src/assertions.js +21 -6
  186. package/dist/web/tdf3/src/binary.js +1 -1
  187. package/dist/web/tdf3/src/ciphers/aes-gcm-cipher.js +1 -1
  188. package/dist/web/tdf3/src/ciphers/symmetric-cipher-base.js +1 -1
  189. package/dist/web/tdf3/src/client/DecoratedReadableStream.js +4 -68
  190. package/dist/web/tdf3/src/client/builders.js +26 -22
  191. package/dist/web/tdf3/src/client/index.js +69 -52
  192. package/dist/web/tdf3/src/client/validation.js +1 -1
  193. package/dist/web/tdf3/src/crypto/crypto-utils.js +1 -1
  194. package/dist/web/tdf3/src/crypto/index.js +1 -1
  195. package/dist/web/tdf3/src/index.js +2 -2
  196. package/dist/web/tdf3/src/models/attribute-set.js +1 -1
  197. package/dist/web/tdf3/src/models/encryption-information.js +3 -3
  198. package/dist/web/tdf3/src/models/key-access.js +47 -24
  199. package/dist/web/tdf3/src/models/policy.js +1 -1
  200. package/dist/web/tdf3/src/tdf.js +149 -130
  201. package/dist/web/tdf3/src/utils/buffer-crc32.js +1 -1
  202. package/dist/web/tdf3/src/utils/index.js +1 -5
  203. package/dist/web/tdf3/src/utils/keysplit.js +1 -1
  204. package/dist/web/tdf3/src/utils/unwrap.js +18 -0
  205. package/dist/web/tdf3/src/utils/zip-reader.js +1 -1
  206. package/dist/web/tdf3/src/utils/zip-writer.js +1 -1
  207. package/package.json +45 -42
  208. package/src/access.ts +37 -1
  209. package/src/index.ts +5 -435
  210. package/src/nanoclients.ts +405 -0
  211. package/src/nanoindex.ts +4 -0
  212. package/src/nanotdf-crypto/generateKeyPair.ts +1 -1
  213. package/src/nanotdf-crypto/generateRandomNumber.ts +1 -1
  214. package/src/nanotdf-crypto/index.ts +2 -3
  215. package/src/nanotdf-crypto/keyAgreement.ts +14 -7
  216. package/src/opentdf.ts +473 -0
  217. package/{tdf3/src/utils/chunkers.ts → src/seekable.ts} +69 -20
  218. package/src/tdf/AttributeObject.ts +0 -3
  219. package/src/tdf/Policy.ts +0 -1
  220. package/src/tdf/PolicyObject.ts +0 -1
  221. package/src/utils.ts +1 -3
  222. package/src/version.ts +5 -0
  223. package/tdf3/index.ts +14 -2
  224. package/tdf3/src/assertions.ts +33 -8
  225. package/tdf3/src/client/DecoratedReadableStream.ts +2 -78
  226. package/tdf3/src/client/builders.ts +44 -26
  227. package/tdf3/src/client/index.ts +101 -86
  228. package/tdf3/src/index.ts +1 -1
  229. package/tdf3/src/models/encryption-information.ts +2 -2
  230. package/tdf3/src/models/key-access.ts +120 -38
  231. package/tdf3/src/models/manifest.ts +3 -0
  232. package/tdf3/src/models/policy.ts +0 -1
  233. package/tdf3/src/tdf.ts +251 -207
  234. package/tdf3/src/utils/index.ts +0 -5
  235. package/tdf3/src/utils/unwrap.ts +17 -0
  236. package/tdf3/src/utils/zip-reader.ts +1 -1
  237. package/dist/cjs/src/nanotdf-crypto/importRawKey.js +0 -18
  238. package/dist/cjs/tdf3/src/templates/default.html.js +0 -98
  239. package/dist/cjs/tdf3/src/templates/escaper.js +0 -15
  240. package/dist/cjs/tdf3/src/templates/index.js +0 -12
  241. package/dist/cjs/tdf3/src/utils/chunkers.js +0 -114
  242. package/dist/cjs/tdf3/src/version.js +0 -6
  243. package/dist/types/src/nanotdf-crypto/importRawKey.d.ts +0 -13
  244. package/dist/types/src/nanotdf-crypto/importRawKey.d.ts.map +0 -1
  245. package/dist/types/tdf3/src/templates/default.html.d.ts +0 -8
  246. package/dist/types/tdf3/src/templates/default.html.d.ts.map +0 -1
  247. package/dist/types/tdf3/src/templates/escaper.d.ts +0 -6
  248. package/dist/types/tdf3/src/templates/escaper.d.ts.map +0 -1
  249. package/dist/types/tdf3/src/templates/index.d.ts +0 -3
  250. package/dist/types/tdf3/src/templates/index.d.ts.map +0 -1
  251. package/dist/types/tdf3/src/utils/chunkers.d.ts +0 -29
  252. package/dist/types/tdf3/src/utils/chunkers.d.ts.map +0 -1
  253. package/dist/types/tdf3/src/version.d.ts +0 -3
  254. package/dist/types/tdf3/src/version.d.ts.map +0 -1
  255. package/dist/web/src/nanotdf-crypto/importRawKey.js +0 -15
  256. package/dist/web/tdf3/src/templates/default.html.js +0 -96
  257. package/dist/web/tdf3/src/templates/escaper.js +0 -10
  258. package/dist/web/tdf3/src/templates/index.js +0 -3
  259. package/dist/web/tdf3/src/utils/chunkers.js +0 -107
  260. package/dist/web/tdf3/src/version.js +0 -3
  261. package/src/nanotdf-crypto/importRawKey.ts +0 -19
  262. package/tdf3/src/templates/default.html.ts +0 -105
  263. package/tdf3/src/templates/escaper.ts +0 -10
  264. package/tdf3/src/templates/index.ts +0 -2
  265. package/tdf3/src/version.ts +0 -2
@@ -1,107 +0,0 @@
1
- import { isDecoratedReadableStream, } from '../client/DecoratedReadableStream.js';
2
- import { ConfigurationError, InvalidFileError, NetworkError } from '../../../src/errors.js';
3
- export const fromBrowserFile = (fileRef) => {
4
- return async (byteStart, byteEnd) => {
5
- const chunkBlob = fileRef.slice(byteStart, byteEnd);
6
- const arrayBuffer = await new Response(chunkBlob).arrayBuffer();
7
- return new Uint8Array(arrayBuffer);
8
- };
9
- };
10
- export const fromBuffer = (source) => {
11
- return (byteStart, byteEnd) => {
12
- return Promise.resolve(source.slice(byteStart, byteEnd));
13
- };
14
- };
15
- async function getRemoteChunk(url, range) {
16
- // loop with fetch for three times, with an exponential backoff
17
- // if the fetch fails with a network error
18
- // this is to handle transient network errors
19
- const errors = [];
20
- for (let i = 0; i < 3; i++) {
21
- let res;
22
- try {
23
- res = await fetch(url, {
24
- redirect: 'follow',
25
- ...(range && {
26
- headers: {
27
- Range: `bytes=${range}`,
28
- },
29
- }),
30
- });
31
- }
32
- catch (e) {
33
- console.warn(`fetch failed with network error [${e}], retrying...`);
34
- sleep(2 ** i * 1000);
35
- continue;
36
- }
37
- if (!res.ok) {
38
- if (res.status === 416) {
39
- throw new InvalidFileError(`${res.status}: range not satisfiable: requested [${range}] from [${url}]; response [${res.statusText}]`);
40
- }
41
- else if (res.status === 404) {
42
- throw new InvalidFileError(`${res.status}: [${url}] not found; response: [${res.statusText}]`);
43
- }
44
- console.warn(`fetch failed with status [${res.status}: ${res.statusText}], retrying...`);
45
- // waits for 1, 2, 4 seconds
46
- sleep(2 ** i * 1000);
47
- continue;
48
- }
49
- const data = await res.arrayBuffer();
50
- if (!data) {
51
- throw new NetworkError(`empty response for range request: requested [${range}] from [${url}]`);
52
- }
53
- return new Uint8Array(data);
54
- }
55
- throw new AggregateError(errors, 'fetch failed after 3 retries');
56
- }
57
- export const fromUrl = async (location) => {
58
- return async (byteStart, byteEnd) => {
59
- if (byteStart === undefined) {
60
- return getRemoteChunk(location);
61
- }
62
- let rangeHeader = `${byteStart}`;
63
- if (byteEnd && byteEnd < 0) {
64
- // NOTE: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range
65
- throw Error('negative end unsupported');
66
- }
67
- else if (byteEnd) {
68
- rangeHeader += `-${byteEnd - 1}`;
69
- }
70
- return await getRemoteChunk(location, rangeHeader);
71
- };
72
- };
73
- export const fromDataSource = async ({ type, location }) => {
74
- switch (type) {
75
- case 'buffer':
76
- if (!(location instanceof Uint8Array)) {
77
- throw new ConfigurationError('Invalid data source; must be uint8 array');
78
- }
79
- return fromBuffer(location);
80
- case 'chunker':
81
- if (!(location instanceof Function)) {
82
- throw new ConfigurationError('Invalid data source; must be uint8 array');
83
- }
84
- return location;
85
- case 'file-browser':
86
- if (!(location instanceof Blob)) {
87
- throw new ConfigurationError('Invalid data source; must be at least a Blob');
88
- }
89
- return fromBrowserFile(location);
90
- case 'remote':
91
- if (typeof location !== 'string') {
92
- throw new ConfigurationError('Invalid data source; url not provided');
93
- }
94
- return fromUrl(location);
95
- case 'stream':
96
- if (!isDecoratedReadableStream(location)) {
97
- throw new ConfigurationError('Invalid data source; must be DecoratedTdfStream');
98
- }
99
- return fromBuffer(await location.toBuffer());
100
- default:
101
- throw new ConfigurationError(`Data source type not defined, or not supported: ${type}}`);
102
- }
103
- };
104
- async function sleep(ms) {
105
- return new Promise((resolve) => setTimeout(resolve, ms));
106
- }
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2h1bmtlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZGYzL3NyYy91dGlscy9jaHVua2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwseUJBQXlCLEdBQzFCLE1BQU0sc0NBQXNDLENBQUM7QUFDOUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBUzVGLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxDQUFDLE9BQWEsRUFBVyxFQUFFO0lBQ3hELE9BQU8sS0FBSyxFQUFFLFNBQWtCLEVBQUUsT0FBZ0IsRUFBdUIsRUFBRTtRQUN6RSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNwRCxNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hFLE9BQU8sSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBMkIsRUFBVyxFQUFFO0lBQ2pFLE9BQU8sQ0FBQyxTQUFrQixFQUFFLE9BQWdCLEVBQUUsRUFBRTtRQUM5QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixLQUFLLFVBQVUsY0FBYyxDQUFDLEdBQVcsRUFBRSxLQUFjO0lBQ3ZELCtEQUErRDtJQUMvRCwwQ0FBMEM7SUFDMUMsNkNBQTZDO0lBQzdDLE1BQU0sTUFBTSxHQUFZLEVBQUUsQ0FBQztJQUMzQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFB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
@@ -1,3 +0,0 @@
1
- export const version = '0.2.0';
2
- export const clientType = 'tdf3-js-client';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RkZjMvc3JjL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQztBQUMvQixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLENBQUMifQ==
@@ -1,19 +0,0 @@
1
- import { CipherType, KeyFormat, KeyUsageType } from './enums.js';
2
-
3
- /**
4
- * Import raw key
5
- *
6
- * A specific implementation of the importKey method to import raw keys. Specifies some defaults
7
- * to ensure security.
8
- *
9
- * @param key Key which needs to be imported
10
- * @param keyUsages How the key will be used
11
- * @param isExtractable Whether key is extractable
12
- */
13
- export default async function importRawKey(
14
- key: ArrayBuffer,
15
- keyUsages: Array<KeyUsageType>,
16
- isExtractable = false
17
- ): Promise<CryptoKey> {
18
- return crypto.subtle.importKey(KeyFormat.Raw, key, CipherType.AesGcm, isExtractable, keyUsages);
19
- }
@@ -1,105 +0,0 @@
1
- import { escHtml, escJavaScript } from './escaper.js';
2
- export default ({
3
- manifest,
4
- payload,
5
- transferUrl,
6
- transferBaseUrl,
7
- }: {
8
- manifest: string;
9
- payload: string;
10
- transferUrl: string;
11
- transferBaseUrl: string;
12
- }) => `<html>
13
- <head>
14
- <meta charset="UTF-8">
15
- </head>
16
- <body style="font-family: Arial; color: #2D323B; overflow: hidden; margin: 0; height: 100%; background-color: white;">
17
- <input id="data-input" type="hidden" value="${escHtml(payload)}">
18
- <input id="data-manifest" type="hidden" value="${escHtml(manifest)}">
19
- <iframe style="width:0;height:0;border:0; border:none;" src="${escHtml(transferUrl)}"></iframe>
20
- <div role="banner" style="background-color: #092356; color: white; height: 55px;">
21
- <img src="https://cdn.virtru.com/assets/virtru-logo-white-rgb.png"
22
- style="display: inline-block; padding: 18px 0 0 24px;"
23
- width="62px" height="19px" alt="Virtru logo" title="Virtru"/>
24
- </div>
25
- <div role="main" class="wrapper" style="padding-top: 107px; display: flex; flex-direction: row; max-width: 1200px;
26
- min-width: 800px; margin: 0 auto; min-height: calc(100vh - 230px); border-bottom: 1px solid #F3F5F7;">
27
- <div role="region">
28
- <img src="https://cdn.virtru.com/assets/request-access.png" style="display: inline-block;"
29
- width="387px" height="310px" alt="Request access image" title="Request access"/>
30
- </div>
31
- <div role="complementary" style="word-break: break-all; padding-right: 12px;">
32
- <h1 style="font-size: 1.5em;">Virtru Secure File</h1>
33
- <noscript style="font-weight: 100;">
34
- <span>
35
- To view this file, download and access it from your computer:
36
- <br />
37
- <br />
38
- </span>
39
- <div>
40
- 1. <b>Go Back</b> to the file directory and <b>Right-click</b> on the file
41
- </div>
42
- <div>
43
- 2. Select <b>Download</b>
44
- </div>
45
- <div>
46
- 3. Once download is complete, <b>double-click</b> on the local file to open
47
- </div>
48
- </noscript>
49
- <div id="js-enabled-message" style="display: none;">
50
- <span>We are trying to send you to Secure Reader. If this does not work, please click the button below</span>
51
- <br />
52
- <button
53
- id="viewbutton"
54
- style="color: #fff!important; background: gray; padding: 10px 40px; border-radius: 25px; display: inline-block; border: none; font-size: 15px; width: 300px; margin-block-start: 1.1em;
55
- margin-block-end: 1.1em;"
56
- class="viewbutton"
57
- type="button"
58
- >
59
- View File in Secure Reader
60
- </button>
61
- </div>
62
- </div>
63
- </div>
64
- <div role="contentinfo" style="color: grey; text-align: center; padding-top: 25px; font-family: Arial;">
65
- <span style="padding: 25px; font-size: 13px;">© Copyright 2019 Virtru Corporation</span>
66
- <span style="padding: 25px; font-size: 13px;">Learn more at www.virtru.com</span>
67
- </div>
68
- <script type="text/javascript">
69
- var transferComplete = false;
70
- var data = document.getElementById('data-input').value;
71
- var manifest = JSON.parse(atob(document.getElementById('data-manifest').value));
72
- var redirectButton = document.getElementById('viewbutton');
73
- var ifr = document.querySelector('iframe');
74
- var otherWindow = ifr.contentWindow;
75
-
76
- document.getElementById('js-enabled-message').style.display = 'block';
77
- ifr.addEventListener("load", iframeLoaded, false);
78
-
79
- function iframeLoaded() {
80
- var channel = new MessageChannel();
81
- otherWindow.postMessage({
82
- type: 'tdf.html',
83
- data: data,
84
- policy: manifest.encryptionInformation.policy
85
- }, '${escJavaScript(transferBaseUrl)}', [channel.port2]);
86
-
87
- channel.port1.onmessage = handleMessage;
88
-
89
- function handleMessage(e) {
90
- let msg = e.data;
91
- if (msg.status === 'success') {
92
- transferComplete = true;
93
- redirectButton.style.background = '#4585ff';
94
- window.location.href = "${escJavaScript(transferUrl)}";
95
- }
96
- }
97
- }
98
- redirectButton.onclick = function(){
99
- if (transferComplete) {
100
- window.location.href = "${escJavaScript(transferUrl)}";
101
- }
102
- };
103
- </script>
104
- </body>
105
- </html>`;
@@ -1,10 +0,0 @@
1
- /** Javascript escape attribute strings. How is this not part of the lib?.
2
- * https://stackoverflow.com/a/30970751
3
- */
4
- export function escHtml(plainString = '') {
5
- return plainString.replace(/["'&<]/g, (c) => `&#${c.charCodeAt(0)};`);
6
- }
7
-
8
- export function escJavaScript(plainString = '') {
9
- return plainString.replace(/["'\\<]/g, (c) => `\\${c === '<' ? '074' : c}`);
10
- }
@@ -1,2 +0,0 @@
1
- export { escHtml, escJavaScript } from './escaper.js';
2
- export { default as htmlWrapperTemplate } from './default.html.js';
@@ -1,2 +0,0 @@
1
- export const version = '0.2.0';
2
- export const clientType = 'tdf3-js-client';