@opentdf/sdk 0.8.0-beta.71 → 0.8.0-beta.74

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 (260) hide show
  1. package/README.md +5 -30
  2. package/dist/cjs/src/{nanotdf-crypto → crypto}/ciphers.js +1 -1
  3. package/dist/cjs/src/{nanotdf-crypto → crypto}/decrypt.js +1 -1
  4. package/dist/cjs/src/{nanotdf-crypto → crypto}/digest.js +1 -1
  5. package/dist/cjs/src/{nanotdf-crypto → crypto}/ecdsaSignature.js +2 -2
  6. package/dist/cjs/src/{nanotdf-crypto → crypto}/encrypt.js +1 -1
  7. package/dist/cjs/src/{nanotdf-crypto → crypto}/enums.js +1 -1
  8. package/dist/cjs/src/crypto/exportCryptoKey.js +20 -0
  9. package/dist/cjs/src/{nanotdf-crypto → crypto}/generateKeyPair.js +1 -1
  10. package/dist/cjs/src/{nanotdf-crypto → crypto}/generateRandomNumber.js +1 -1
  11. package/dist/cjs/src/{nanotdf-crypto → crypto}/index.js +1 -1
  12. package/dist/cjs/src/{nanotdf-crypto → crypto}/keyAgreement.js +1 -1
  13. package/dist/cjs/src/{nanotdf-crypto → crypto}/pemPublicToCrypto.js +1 -1
  14. package/dist/cjs/src/opentdf.js +9 -260
  15. package/dist/cjs/src/utils.js +2 -2
  16. package/dist/cjs/tdf3/index.js +7 -8
  17. package/dist/cjs/tdf3/src/models/key-access.js +4 -4
  18. package/dist/cjs/tdf3/src/tdf.js +4 -4
  19. package/dist/types/src/crypto/ciphers.d.ts.map +1 -0
  20. package/dist/types/src/crypto/decrypt.d.ts.map +1 -0
  21. package/dist/types/src/crypto/digest.d.ts.map +1 -0
  22. package/dist/types/src/crypto/ecdsaSignature.d.ts.map +1 -0
  23. package/dist/types/src/crypto/encrypt.d.ts.map +1 -0
  24. package/dist/types/src/crypto/enums.d.ts.map +1 -0
  25. package/dist/types/src/crypto/exportCryptoKey.d.ts.map +1 -0
  26. package/dist/types/src/crypto/generateKeyPair.d.ts.map +1 -0
  27. package/dist/types/src/crypto/generateRandomNumber.d.ts.map +1 -0
  28. package/dist/types/src/crypto/index.d.ts.map +1 -0
  29. package/dist/types/src/crypto/keyAgreement.d.ts.map +1 -0
  30. package/dist/types/src/crypto/pemPublicToCrypto.d.ts.map +1 -0
  31. package/dist/types/src/opentdf.d.ts +1 -65
  32. package/dist/types/src/opentdf.d.ts.map +1 -1
  33. package/dist/types/tdf3/index.d.ts +4 -3
  34. package/dist/types/tdf3/index.d.ts.map +1 -1
  35. package/dist/web/src/crypto/ciphers.js +14 -0
  36. package/dist/web/src/{nanotdf-crypto → crypto}/decrypt.js +1 -1
  37. package/dist/web/src/crypto/digest.js +4 -0
  38. package/dist/web/src/{nanotdf-crypto → crypto}/ecdsaSignature.js +2 -2
  39. package/dist/web/src/{nanotdf-crypto → crypto}/encrypt.js +1 -1
  40. package/dist/web/src/{nanotdf-crypto → crypto}/enums.js +1 -1
  41. package/dist/web/src/crypto/exportCryptoKey.js +17 -0
  42. package/dist/web/src/crypto/generateKeyPair.js +10 -0
  43. package/dist/web/src/crypto/generateRandomNumber.js +9 -0
  44. package/dist/web/src/crypto/index.js +11 -0
  45. package/dist/web/src/{nanotdf-crypto → crypto}/keyAgreement.js +1 -1
  46. package/dist/web/src/{nanotdf-crypto → crypto}/pemPublicToCrypto.js +1 -1
  47. package/dist/web/src/opentdf.js +8 -255
  48. package/dist/web/src/utils.js +2 -2
  49. package/dist/web/tdf3/index.js +4 -3
  50. package/dist/web/tdf3/src/models/key-access.js +4 -4
  51. package/dist/web/tdf3/src/tdf.js +4 -4
  52. package/package.json +1 -6
  53. package/src/{nanotdf-crypto → crypto}/ecdsaSignature.ts +1 -1
  54. package/src/opentdf.ts +6 -343
  55. package/src/utils.ts +1 -1
  56. package/tdf3/index.ts +2 -12
  57. package/tdf3/src/models/key-access.ts +3 -3
  58. package/tdf3/src/tdf.ts +3 -3
  59. package/dist/cjs/src/nanoclients.js +0 -292
  60. package/dist/cjs/src/nanoindex.js +0 -47
  61. package/dist/cjs/src/nanotdf/Client.js +0 -315
  62. package/dist/cjs/src/nanotdf/NanoTDF.js +0 -94
  63. package/dist/cjs/src/nanotdf/browser-entry.js +0 -19
  64. package/dist/cjs/src/nanotdf/constants.js +0 -5
  65. package/dist/cjs/src/nanotdf/decrypt.js +0 -17
  66. package/dist/cjs/src/nanotdf/encrypt-dataset.js +0 -38
  67. package/dist/cjs/src/nanotdf/encrypt.js +0 -132
  68. package/dist/cjs/src/nanotdf/enum/CipherEnum.js +0 -13
  69. package/dist/cjs/src/nanotdf/enum/CurveNameEnum.js +0 -15
  70. package/dist/cjs/src/nanotdf/enum/EncodingEnum.js +0 -8
  71. package/dist/cjs/src/nanotdf/enum/PolicyTypeEnum.js +0 -11
  72. package/dist/cjs/src/nanotdf/enum/ProtocolEnum.js +0 -10
  73. package/dist/cjs/src/nanotdf/enum/ResourceLocatorIdentifierEnum.js +0 -11
  74. package/dist/cjs/src/nanotdf/helpers/calculateByCurve.js +0 -28
  75. package/dist/cjs/src/nanotdf/helpers/getHkdfSalt.js +0 -11
  76. package/dist/cjs/src/nanotdf/index.js +0 -25
  77. package/dist/cjs/src/nanotdf/interfaces/PolicyInterface.js +0 -3
  78. package/dist/cjs/src/nanotdf/models/Ciphers.js +0 -61
  79. package/dist/cjs/src/nanotdf/models/DefaultParams.js +0 -27
  80. package/dist/cjs/src/nanotdf/models/EcCurves.js +0 -39
  81. package/dist/cjs/src/nanotdf/models/Header.js +0 -255
  82. package/dist/cjs/src/nanotdf/models/Payload.js +0 -158
  83. package/dist/cjs/src/nanotdf/models/Policy/AbstractPolicy.js +0 -73
  84. package/dist/cjs/src/nanotdf/models/Policy/EmbeddedPolicy.js +0 -82
  85. package/dist/cjs/src/nanotdf/models/Policy/PolicyFactory.js +0 -38
  86. package/dist/cjs/src/nanotdf/models/Policy/RemotePolicy.js +0 -62
  87. package/dist/cjs/src/nanotdf/models/ResourceLocator.js +0 -211
  88. package/dist/cjs/src/nanotdf/models/Signature.js +0 -77
  89. package/dist/cjs/src/nanotdf-crypto/exportCryptoKey.js +0 -20
  90. package/dist/cjs/src/tdf/NanoTDF/NanoTDF.js +0 -38
  91. package/dist/cjs/src/types/index.js +0 -3
  92. package/dist/types/src/nanoclients.d.ts +0 -106
  93. package/dist/types/src/nanoclients.d.ts.map +0 -1
  94. package/dist/types/src/nanoindex.d.ts +0 -5
  95. package/dist/types/src/nanoindex.d.ts.map +0 -1
  96. package/dist/types/src/nanotdf/Client.d.ts +0 -91
  97. package/dist/types/src/nanotdf/Client.d.ts.map +0 -1
  98. package/dist/types/src/nanotdf/NanoTDF.d.ts +0 -24
  99. package/dist/types/src/nanotdf/NanoTDF.d.ts.map +0 -1
  100. package/dist/types/src/nanotdf/browser-entry.d.ts +0 -17
  101. package/dist/types/src/nanotdf/browser-entry.d.ts.map +0 -1
  102. package/dist/types/src/nanotdf/constants.d.ts +0 -2
  103. package/dist/types/src/nanotdf/constants.d.ts.map +0 -1
  104. package/dist/types/src/nanotdf/decrypt.d.ts +0 -9
  105. package/dist/types/src/nanotdf/decrypt.d.ts.map +0 -1
  106. package/dist/types/src/nanotdf/encrypt-dataset.d.ts +0 -11
  107. package/dist/types/src/nanotdf/encrypt-dataset.d.ts.map +0 -1
  108. package/dist/types/src/nanotdf/encrypt.d.ts +0 -13
  109. package/dist/types/src/nanotdf/encrypt.d.ts.map +0 -1
  110. package/dist/types/src/nanotdf/enum/CipherEnum.d.ts +0 -10
  111. package/dist/types/src/nanotdf/enum/CipherEnum.d.ts.map +0 -1
  112. package/dist/types/src/nanotdf/enum/CurveNameEnum.d.ts +0 -12
  113. package/dist/types/src/nanotdf/enum/CurveNameEnum.d.ts.map +0 -1
  114. package/dist/types/src/nanotdf/enum/EncodingEnum.d.ts +0 -5
  115. package/dist/types/src/nanotdf/enum/EncodingEnum.d.ts.map +0 -1
  116. package/dist/types/src/nanotdf/enum/PolicyTypeEnum.d.ts +0 -8
  117. package/dist/types/src/nanotdf/enum/PolicyTypeEnum.d.ts.map +0 -1
  118. package/dist/types/src/nanotdf/enum/ProtocolEnum.d.ts +0 -7
  119. package/dist/types/src/nanotdf/enum/ProtocolEnum.d.ts.map +0 -1
  120. package/dist/types/src/nanotdf/enum/ResourceLocatorIdentifierEnum.d.ts +0 -8
  121. package/dist/types/src/nanotdf/enum/ResourceLocatorIdentifierEnum.d.ts.map +0 -1
  122. package/dist/types/src/nanotdf/helpers/calculateByCurve.d.ts +0 -20
  123. package/dist/types/src/nanotdf/helpers/calculateByCurve.d.ts.map +0 -1
  124. package/dist/types/src/nanotdf/helpers/getHkdfSalt.d.ts +0 -8
  125. package/dist/types/src/nanotdf/helpers/getHkdfSalt.d.ts.map +0 -1
  126. package/dist/types/src/nanotdf/index.d.ts +0 -9
  127. package/dist/types/src/nanotdf/index.d.ts.map +0 -1
  128. package/dist/types/src/nanotdf/interfaces/PolicyInterface.d.ts +0 -17
  129. package/dist/types/src/nanotdf/interfaces/PolicyInterface.d.ts.map +0 -1
  130. package/dist/types/src/nanotdf/models/Ciphers.d.ts +0 -14
  131. package/dist/types/src/nanotdf/models/Ciphers.d.ts.map +0 -1
  132. package/dist/types/src/nanotdf/models/DefaultParams.d.ts +0 -21
  133. package/dist/types/src/nanotdf/models/DefaultParams.d.ts.map +0 -1
  134. package/dist/types/src/nanotdf/models/EcCurves.d.ts +0 -15
  135. package/dist/types/src/nanotdf/models/EcCurves.d.ts.map +0 -1
  136. package/dist/types/src/nanotdf/models/Header.d.ts +0 -73
  137. package/dist/types/src/nanotdf/models/Header.d.ts.map +0 -1
  138. package/dist/types/src/nanotdf/models/Payload.d.ts +0 -47
  139. package/dist/types/src/nanotdf/models/Payload.d.ts.map +0 -1
  140. package/dist/types/src/nanotdf/models/Policy/AbstractPolicy.d.ts +0 -52
  141. package/dist/types/src/nanotdf/models/Policy/AbstractPolicy.d.ts.map +0 -1
  142. package/dist/types/src/nanotdf/models/Policy/EmbeddedPolicy.d.ts +0 -35
  143. package/dist/types/src/nanotdf/models/Policy/EmbeddedPolicy.d.ts.map +0 -1
  144. package/dist/types/src/nanotdf/models/Policy/PolicyFactory.d.ts +0 -11
  145. package/dist/types/src/nanotdf/models/Policy/PolicyFactory.d.ts.map +0 -1
  146. package/dist/types/src/nanotdf/models/Policy/RemotePolicy.d.ts +0 -31
  147. package/dist/types/src/nanotdf/models/Policy/RemotePolicy.d.ts.map +0 -1
  148. package/dist/types/src/nanotdf/models/ResourceLocator.d.ts +0 -65
  149. package/dist/types/src/nanotdf/models/ResourceLocator.d.ts.map +0 -1
  150. package/dist/types/src/nanotdf/models/Signature.d.ts +0 -33
  151. package/dist/types/src/nanotdf/models/Signature.d.ts.map +0 -1
  152. package/dist/types/src/nanotdf-crypto/ciphers.d.ts.map +0 -1
  153. package/dist/types/src/nanotdf-crypto/decrypt.d.ts.map +0 -1
  154. package/dist/types/src/nanotdf-crypto/digest.d.ts.map +0 -1
  155. package/dist/types/src/nanotdf-crypto/ecdsaSignature.d.ts.map +0 -1
  156. package/dist/types/src/nanotdf-crypto/encrypt.d.ts.map +0 -1
  157. package/dist/types/src/nanotdf-crypto/enums.d.ts.map +0 -1
  158. package/dist/types/src/nanotdf-crypto/exportCryptoKey.d.ts.map +0 -1
  159. package/dist/types/src/nanotdf-crypto/generateKeyPair.d.ts.map +0 -1
  160. package/dist/types/src/nanotdf-crypto/generateRandomNumber.d.ts.map +0 -1
  161. package/dist/types/src/nanotdf-crypto/index.d.ts.map +0 -1
  162. package/dist/types/src/nanotdf-crypto/keyAgreement.d.ts.map +0 -1
  163. package/dist/types/src/nanotdf-crypto/pemPublicToCrypto.d.ts.map +0 -1
  164. package/dist/types/src/tdf/NanoTDF/NanoTDF.d.ts +0 -99
  165. package/dist/types/src/tdf/NanoTDF/NanoTDF.d.ts.map +0 -1
  166. package/dist/types/src/types/index.d.ts +0 -45
  167. package/dist/types/src/types/index.d.ts.map +0 -1
  168. package/dist/web/src/nanoclients.js +0 -287
  169. package/dist/web/src/nanoindex.js +0 -5
  170. package/dist/web/src/nanotdf/Client.js +0 -310
  171. package/dist/web/src/nanotdf/NanoTDF.js +0 -89
  172. package/dist/web/src/nanotdf/browser-entry.js +0 -14
  173. package/dist/web/src/nanotdf/constants.js +0 -2
  174. package/dist/web/src/nanotdf/decrypt.js +0 -14
  175. package/dist/web/src/nanotdf/encrypt-dataset.js +0 -32
  176. package/dist/web/src/nanotdf/encrypt.js +0 -126
  177. package/dist/web/src/nanotdf/enum/CipherEnum.js +0 -11
  178. package/dist/web/src/nanotdf/enum/CurveNameEnum.js +0 -13
  179. package/dist/web/src/nanotdf/enum/EncodingEnum.js +0 -6
  180. package/dist/web/src/nanotdf/enum/PolicyTypeEnum.js +0 -9
  181. package/dist/web/src/nanotdf/enum/ProtocolEnum.js +0 -8
  182. package/dist/web/src/nanotdf/enum/ResourceLocatorIdentifierEnum.js +0 -9
  183. package/dist/web/src/nanotdf/helpers/calculateByCurve.js +0 -24
  184. package/dist/web/src/nanotdf/helpers/getHkdfSalt.js +0 -8
  185. package/dist/web/src/nanotdf/index.js +0 -11
  186. package/dist/web/src/nanotdf/interfaces/PolicyInterface.js +0 -2
  187. package/dist/web/src/nanotdf/models/Ciphers.js +0 -54
  188. package/dist/web/src/nanotdf/models/DefaultParams.js +0 -22
  189. package/dist/web/src/nanotdf/models/EcCurves.js +0 -32
  190. package/dist/web/src/nanotdf/models/Header.js +0 -250
  191. package/dist/web/src/nanotdf/models/Payload.js +0 -156
  192. package/dist/web/src/nanotdf/models/Policy/AbstractPolicy.js +0 -71
  193. package/dist/web/src/nanotdf/models/Policy/EmbeddedPolicy.js +0 -77
  194. package/dist/web/src/nanotdf/models/Policy/PolicyFactory.js +0 -33
  195. package/dist/web/src/nanotdf/models/Policy/RemotePolicy.js +0 -57
  196. package/dist/web/src/nanotdf/models/ResourceLocator.js +0 -206
  197. package/dist/web/src/nanotdf/models/Signature.js +0 -74
  198. package/dist/web/src/nanotdf-crypto/ciphers.js +0 -14
  199. package/dist/web/src/nanotdf-crypto/digest.js +0 -4
  200. package/dist/web/src/nanotdf-crypto/exportCryptoKey.js +0 -17
  201. package/dist/web/src/nanotdf-crypto/generateKeyPair.js +0 -10
  202. package/dist/web/src/nanotdf-crypto/generateRandomNumber.js +0 -9
  203. package/dist/web/src/nanotdf-crypto/index.js +0 -11
  204. package/dist/web/src/tdf/NanoTDF/NanoTDF.js +0 -35
  205. package/dist/web/src/types/index.js +0 -2
  206. package/src/nanoclients.ts +0 -406
  207. package/src/nanoindex.ts +0 -4
  208. package/src/nanotdf/Client.ts +0 -425
  209. package/src/nanotdf/NanoTDF.ts +0 -120
  210. package/src/nanotdf/browser-entry.ts +0 -20
  211. package/src/nanotdf/constants.ts +0 -1
  212. package/src/nanotdf/decrypt.ts +0 -19
  213. package/src/nanotdf/encrypt-dataset.ts +0 -51
  214. package/src/nanotdf/encrypt.ts +0 -196
  215. package/src/nanotdf/enum/CipherEnum.ts +0 -10
  216. package/src/nanotdf/enum/CurveNameEnum.ts +0 -12
  217. package/src/nanotdf/enum/EncodingEnum.ts +0 -5
  218. package/src/nanotdf/enum/PolicyTypeEnum.ts +0 -8
  219. package/src/nanotdf/enum/ProtocolEnum.ts +0 -7
  220. package/src/nanotdf/enum/ResourceLocatorIdentifierEnum.ts +0 -8
  221. package/src/nanotdf/helpers/calculateByCurve.ts +0 -26
  222. package/src/nanotdf/helpers/getHkdfSalt.ts +0 -13
  223. package/src/nanotdf/index.ts +0 -10
  224. package/src/nanotdf/interfaces/PolicyInterface.ts +0 -27
  225. package/src/nanotdf/models/Ciphers.ts +0 -67
  226. package/src/nanotdf/models/DefaultParams.ts +0 -24
  227. package/src/nanotdf/models/EcCurves.ts +0 -40
  228. package/src/nanotdf/models/Header.ts +0 -322
  229. package/src/nanotdf/models/Payload.ts +0 -196
  230. package/src/nanotdf/models/Policy/AbstractPolicy.ts +0 -90
  231. package/src/nanotdf/models/Policy/EmbeddedPolicy.ts +0 -101
  232. package/src/nanotdf/models/Policy/PolicyFactory.ts +0 -48
  233. package/src/nanotdf/models/Policy/RemotePolicy.ts +0 -74
  234. package/src/nanotdf/models/ResourceLocator.ts +0 -212
  235. package/src/nanotdf/models/Signature.ts +0 -85
  236. package/src/tdf/NanoTDF/NanoTDF.ts +0 -120
  237. package/src/types/index.ts +0 -55
  238. /package/dist/types/src/{nanotdf-crypto → crypto}/ciphers.d.ts +0 -0
  239. /package/dist/types/src/{nanotdf-crypto → crypto}/decrypt.d.ts +0 -0
  240. /package/dist/types/src/{nanotdf-crypto → crypto}/digest.d.ts +0 -0
  241. /package/dist/types/src/{nanotdf-crypto → crypto}/ecdsaSignature.d.ts +0 -0
  242. /package/dist/types/src/{nanotdf-crypto → crypto}/encrypt.d.ts +0 -0
  243. /package/dist/types/src/{nanotdf-crypto → crypto}/enums.d.ts +0 -0
  244. /package/dist/types/src/{nanotdf-crypto → crypto}/exportCryptoKey.d.ts +0 -0
  245. /package/dist/types/src/{nanotdf-crypto → crypto}/generateKeyPair.d.ts +0 -0
  246. /package/dist/types/src/{nanotdf-crypto → crypto}/generateRandomNumber.d.ts +0 -0
  247. /package/dist/types/src/{nanotdf-crypto → crypto}/index.d.ts +0 -0
  248. /package/dist/types/src/{nanotdf-crypto → crypto}/keyAgreement.d.ts +0 -0
  249. /package/dist/types/src/{nanotdf-crypto → crypto}/pemPublicToCrypto.d.ts +0 -0
  250. /package/src/{nanotdf-crypto → crypto}/ciphers.ts +0 -0
  251. /package/src/{nanotdf-crypto → crypto}/decrypt.ts +0 -0
  252. /package/src/{nanotdf-crypto → crypto}/digest.ts +0 -0
  253. /package/src/{nanotdf-crypto → crypto}/encrypt.ts +0 -0
  254. /package/src/{nanotdf-crypto → crypto}/enums.ts +0 -0
  255. /package/src/{nanotdf-crypto → crypto}/exportCryptoKey.ts +0 -0
  256. /package/src/{nanotdf-crypto → crypto}/generateKeyPair.ts +0 -0
  257. /package/src/{nanotdf-crypto → crypto}/generateRandomNumber.ts +0 -0
  258. /package/src/{nanotdf-crypto → crypto}/index.ts +0 -0
  259. /package/src/{nanotdf-crypto → crypto}/keyAgreement.ts +0 -0
  260. /package/src/{nanotdf-crypto → crypto}/pemPublicToCrypto.ts +0 -0
@@ -1,310 +0,0 @@
1
- import { create, toJsonString } from '@bufbuild/protobuf';
2
- import { UnsignedRewrapRequest_WithPolicyRequestSchema, UnsignedRewrapRequestSchema, } from '../platform/kas/kas_pb.js';
3
- import { generateKeyPair, keyAgreement } from '../nanotdf-crypto/index.js';
4
- import getHkdfSalt from './helpers/getHkdfSalt.js';
5
- import DefaultParams from './models/DefaultParams.js';
6
- import { fetchKeyAccessServers, fetchWrappedKey, OriginAllowList, } from '../access.js';
7
- import { handleRpcRewrapErrorString } from '../../src/access/access-rpc.js';
8
- import { isAuthProvider, reqSignature } from '../auth/providers.js';
9
- import { ConfigurationError, DecryptError, TdfError, UnsafeUrlError } from '../errors.js';
10
- import { cryptoPublicToPem, getRequiredObligationFQNs, pemToCryptoPublicKey, upgradeRewrapResponseV1, validateSecureUrl, getPlatformUrlFromKasEndpoint, } from '../utils.js';
11
- function toJWSAlg(c) {
12
- const { algorithm } = c;
13
- switch (algorithm.name) {
14
- case 'RSASSA-PKCS1-v1_5':
15
- case 'RSA-PSS':
16
- case 'RSA-OAEP': {
17
- const r = algorithm;
18
- switch (r.modulusLength) {
19
- case 2048:
20
- return 'RS256';
21
- case 3072:
22
- return 'RS384';
23
- case 4096:
24
- return 'RS512';
25
- }
26
- break;
27
- }
28
- case 'ECDSA':
29
- case 'ECDH': {
30
- return 'ES256';
31
- }
32
- }
33
- throw new ConfigurationError(`unsupported key algorithm ${JSON.stringify(algorithm)}`);
34
- }
35
- async function generateEphemeralKeyPair() {
36
- const { publicKey, privateKey } = await generateKeyPair();
37
- if (!privateKey || !publicKey) {
38
- throw Error('Key pair generation failed');
39
- }
40
- return { publicKey, privateKey };
41
- }
42
- async function generateSignerKeyPair() {
43
- return crypto.subtle.generateKey({
44
- name: 'RSASSA-PKCS1-v1_5',
45
- hash: 'SHA-256',
46
- modulusLength: 2048,
47
- publicExponent: new Uint8Array([0x01, 0x00, 0x01]),
48
- }, true, ['sign', 'verify']);
49
- }
50
- /**
51
- * A Client encapsulates sessions interacting with TDF3 and nanoTDF backends, KAS and any
52
- * plugin-based sessions like identity and further attribute control. Most importantly, it is responsible
53
- * for local key and token management, including the ephemeral public/private keypairs
54
- * used for encrypting and decrypting information.
55
- *
56
- * @link https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair
57
- *
58
- * @example
59
- * import { Client, clientAuthProvider, decrypt, encrypt } from '@opentdf/sdk/nanotdf`
60
- *
61
- * const OIDC_ENDPOINT = 'http://localhost:65432/auth/';
62
- * const KAS_URL = 'http://localhost:65432/kas';
63
- *
64
- * let client = new Client(
65
- * await clientAuthProvider({
66
- * clientId: 'tdf-client',
67
- * clientSecret: '123-456',
68
- * oidcOrigin: OIDC_ENDPOINT,
69
- * }),
70
- * KAS_URL
71
- * );
72
- *
73
- * // t=1
74
- * let nanoTDFEncrypted = await encrypt('some string', client.unwrappedKey);
75
- * let nanoTDFDecrypted = await decrypt(nanoTDFEncrypted, client.unwrappedKey);
76
- * nanoTDFDecrypted.toString() // 'some string'
77
- *
78
- */
79
- class Client {
80
- /**
81
- * Create new NanoTDF Client
82
- *
83
- * The Ephemeral Key Pair can either be provided or will be generate when fetching the entity object. Once set it
84
- * cannot be changed. If a new ephemeral key is desired it a new client should be initialized.
85
- * There is no performance impact for creating a new client IFF the ephemeral key pair is provided.
86
- */
87
- constructor(optsOrOldAuthProvider, kasUrl, ephemeralKeyPair, dpopEnabled = false) {
88
- this.dissems = [];
89
- this.dataAttributes = [];
90
- const enwrapAuthProvider = (a) => {
91
- return {
92
- updateClientPublicKey: async (signingKey) => {
93
- await a.updateClientPublicKey(signingKey);
94
- },
95
- withCreds: async (httpReq) => {
96
- const signer = await this.requestSignerKeyPair;
97
- if (!signer) {
98
- throw new ConfigurationError('failed to find or generate signer session key');
99
- }
100
- await a.updateClientPublicKey(signer);
101
- return a.withCreds(httpReq);
102
- },
103
- };
104
- };
105
- if (isAuthProvider(optsOrOldAuthProvider)) {
106
- this.authProvider = enwrapAuthProvider(optsOrOldAuthProvider);
107
- if (!kasUrl) {
108
- throw new ConfigurationError('please specify kasEndpoint');
109
- }
110
- // TODO Disallow http KAS. For now just log as error
111
- validateSecureUrl(kasUrl);
112
- this.kasUrl = kasUrl;
113
- this.dpopEnabled = dpopEnabled;
114
- if (ephemeralKeyPair) {
115
- this.ephemeralKeyPair = Promise.resolve(ephemeralKeyPair);
116
- }
117
- else {
118
- this.ephemeralKeyPair = generateEphemeralKeyPair();
119
- }
120
- this.iv = 1;
121
- }
122
- else {
123
- const { allowedKases, fulfillableObligationFQNs = [], ignoreAllowList, authProvider, dpopEnabled, dpopKeys, ephemeralKeyPair, kasEndpoint, platformUrl, } = optsOrOldAuthProvider;
124
- this.authProvider = enwrapAuthProvider(authProvider);
125
- // TODO Disallow http KAS. For now just log as error
126
- validateSecureUrl(kasEndpoint);
127
- this.kasUrl = kasEndpoint;
128
- this.platformUrl = platformUrl;
129
- if (allowedKases?.length || ignoreAllowList) {
130
- this.allowedKases = new OriginAllowList(allowedKases || [], ignoreAllowList);
131
- }
132
- this.fulfillableObligationFQNs = fulfillableObligationFQNs;
133
- this.dpopEnabled = !!dpopEnabled;
134
- if (dpopKeys) {
135
- this.requestSignerKeyPair = dpopKeys;
136
- }
137
- else {
138
- this.requestSignerKeyPair = generateSignerKeyPair();
139
- }
140
- if (ephemeralKeyPair) {
141
- this.ephemeralKeyPair = ephemeralKeyPair;
142
- }
143
- else {
144
- this.ephemeralKeyPair = generateEphemeralKeyPair();
145
- }
146
- this.iv = 1;
147
- }
148
- }
149
- /**
150
- * Add attribute to the TDF file/data
151
- *
152
- * @param attribute The attribute that decides the access control of the TDF.
153
- */
154
- addAttribute(attribute) {
155
- this.dataAttributes.push(attribute);
156
- }
157
- /**
158
- * Rewrap key
159
- *
160
- * @important the `fetchEntityObject` method must be called prior to
161
- * @param nanoTdfHeader the full header for the nanotdf
162
- * @param kasRewrapUrl key access server's rewrap endpoint
163
- * @param magicNumberVersion nanotdf container version
164
- * @param clientVersion version of the client, as SemVer
165
- */
166
- async rewrapKey(nanoTdfHeader, kasRewrapUrl, magicNumberVersion, clientVersion) {
167
- let allowedKases = this.allowedKases;
168
- if (!allowedKases) {
169
- allowedKases = await fetchKeyAccessServers(this.platformUrl, this.authProvider);
170
- }
171
- if (!allowedKases.allows(kasRewrapUrl)) {
172
- throw new UnsafeUrlError(`request URL ∉ ${allowedKases.origins};`, kasRewrapUrl);
173
- }
174
- const ephemeralKeyPair = await this.ephemeralKeyPair;
175
- const requestSignerKeyPair = await this.requestSignerKeyPair;
176
- // Ensure the ephemeral key pair has been set or generated (see fetchEntityObject)
177
- if (!ephemeralKeyPair?.privateKey) {
178
- throw new ConfigurationError('Ephemeral key has not been set or generated');
179
- }
180
- if (!requestSignerKeyPair?.privateKey) {
181
- throw new ConfigurationError('Signer key has not been set or generated');
182
- }
183
- const unsignedRequest = create(UnsignedRewrapRequestSchema, {
184
- clientPublicKey: await cryptoPublicToPem(ephemeralKeyPair.publicKey),
185
- requests: [
186
- create(UnsignedRewrapRequest_WithPolicyRequestSchema, {
187
- keyAccessObjects: [
188
- {
189
- keyAccessObjectId: 'kao-0', // only one kao, no bulk
190
- keyAccessObject: {
191
- header: new Uint8Array(nanoTdfHeader),
192
- kasUrl: '',
193
- protocol: Client.KAS_PROTOCOL,
194
- keyType: Client.KEY_ACCESS_REMOTE,
195
- },
196
- },
197
- ],
198
- algorithm: DefaultParams.defaultECAlgorithm,
199
- }),
200
- ],
201
- keyAccess: {
202
- header: new Uint8Array(nanoTdfHeader),
203
- kasUrl: '',
204
- protocol: Client.KAS_PROTOCOL,
205
- keyType: Client.KEY_ACCESS_REMOTE,
206
- },
207
- algorithm: DefaultParams.defaultECAlgorithm,
208
- });
209
- const requestBodyStr = toJsonString(UnsignedRewrapRequestSchema, unsignedRequest);
210
- const jwtPayload = { requestBody: requestBodyStr };
211
- const signedRequestToken = await reqSignature(jwtPayload, requestSignerKeyPair.privateKey, {
212
- alg: toJWSAlg(requestSignerKeyPair.publicKey),
213
- });
214
- // Wrapped
215
- const rewrapResp = await fetchWrappedKey(kasRewrapUrl, signedRequestToken, this.authProvider, this.fulfillableObligationFQNs);
216
- // Upgrade any V1 responses to V2
217
- upgradeRewrapResponseV1(rewrapResp);
218
- const result = rewrapResp.responses?.[0]?.results?.[0];
219
- if (!result) {
220
- // This should not happen - KAS should always return at least one response and one result
221
- // or the upgradeRewrapResponseV1 should have created them
222
- throw new DecryptError('KAS rewrap response missing expected response or result');
223
- }
224
- const requiredObligations = getRequiredObligationFQNs(rewrapResp);
225
- let entityWrappedKey;
226
- switch (result.result.case) {
227
- case 'kasWrappedKey': {
228
- entityWrappedKey = result.result.value;
229
- break;
230
- }
231
- case 'error': {
232
- handleRpcRewrapErrorString(result.result.value, getPlatformUrlFromKasEndpoint(kasRewrapUrl), requiredObligations);
233
- }
234
- default: {
235
- throw new DecryptError('KAS rewrap response missing wrapped key');
236
- }
237
- }
238
- // Extract the iv and ciphertext
239
- const ivLength = clientVersion == Client.SDK_INITIAL_RELEASE ? Client.INITIAL_RELEASE_IV_SIZE : Client.IV_SIZE;
240
- const iv = entityWrappedKey.subarray(0, ivLength);
241
- const encryptedSharedKey = entityWrappedKey.subarray(ivLength);
242
- let kasPublicKey;
243
- try {
244
- // Let us import public key as a cert or public key
245
- kasPublicKey = await pemToCryptoPublicKey(rewrapResp.sessionPublicKey);
246
- }
247
- catch (cause) {
248
- throw new ConfigurationError(`internal: [${kasRewrapUrl}] PEM Public Key to crypto public key failed. Is PEM formatted correctly?`, cause);
249
- }
250
- let hkdfSalt;
251
- try {
252
- // Get the hkdf salt params
253
- hkdfSalt = await getHkdfSalt(magicNumberVersion);
254
- }
255
- catch (e) {
256
- throw new TdfError('salting hkdf failed', e);
257
- }
258
- const { privateKey } = await this.ephemeralKeyPair;
259
- // Get the unwrapping key
260
- let unwrappingKey;
261
- try {
262
- unwrappingKey = await keyAgreement(
263
- // Ephemeral private key
264
- privateKey, kasPublicKey, hkdfSalt);
265
- }
266
- catch (e) {
267
- if (e.name == 'InvalidAccessError' || e.name == 'OperationError') {
268
- throw new DecryptError('unable to solve key agreement', e);
269
- }
270
- else if (e.name == 'NotSupported') {
271
- throw new ConfigurationError('unable to unwrap key from kas', e);
272
- }
273
- throw new TdfError('unable to reach agreement', e);
274
- }
275
- const authTagLength = 8 * (encryptedSharedKey.byteLength - 32);
276
- let decryptedKey;
277
- try {
278
- // Decrypt the wrapped key
279
- decryptedKey = await crypto.subtle.decrypt({ name: 'AES-GCM', iv, tagLength: authTagLength }, unwrappingKey, encryptedSharedKey);
280
- }
281
- catch (cause) {
282
- throw new DecryptError(`unable to decrypt key. Are you using the right KAS? Is the salt correct?`, cause);
283
- }
284
- // UnwrappedKey
285
- let unwrappedKey;
286
- try {
287
- unwrappedKey = await crypto.subtle.importKey('raw', decryptedKey, 'AES-GCM',
288
- // @security This allows the key to be used in `exportKey` and `wrapKey`
289
- // https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/exportKey
290
- // https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/wrapKey
291
- true,
292
- // Want to use the key to encrypt and decrypt. Signing key will be used later.
293
- ['encrypt', 'decrypt']);
294
- }
295
- catch (cause) {
296
- throw new DecryptError('Unable to import raw key.', cause);
297
- }
298
- return {
299
- requiredObligations,
300
- unwrappedKey: unwrappedKey,
301
- };
302
- }
303
- }
304
- Client.KEY_ACCESS_REMOTE = 'remote';
305
- Client.KAS_PROTOCOL = 'kas';
306
- Client.SDK_INITIAL_RELEASE = '0.0.0';
307
- Client.INITIAL_RELEASE_IV_SIZE = 3;
308
- Client.IV_SIZE = 12;
309
- export default Client;
310
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYvQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUQsT0FBTyxFQUNMLDZDQUE2QyxFQUM3QywyQkFBMkIsR0FDNUIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNFLE9BQU8sV0FBVyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sYUFBYSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sRUFDTCxxQkFBcUIsRUFDckIsZUFBZSxFQUVmLGVBQWUsR0FDaEIsTUFBTSxjQUFjLENBQUM7QUFDdEIsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUUsT0FBTyxFQUFnQixjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFGLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIseUJBQXlCLEVBQ3pCLG9CQUFvQixFQUNwQix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLDZCQUE2QixHQUM5QixNQUFNLGFBQWEsQ0FBQztBQW1CckIsU0FBUyxRQUFRLENBQUMsQ0FBWTtJQUM1QixNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLFFBQVEsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLEtBQUssbUJBQW1CLENBQUM7UUFDekIsS0FBSyxTQUFTLENBQUM7UUFDZixLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDaEIsTUFBTSxDQUFDLEdBQUcsU0FBa0MsQ0FBQztZQUM3QyxRQUFRLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDeEIsS0FBSyxJQUFJO29CQUNQLE9BQU8sT0FBTyxDQUFDO2dCQUNqQixLQUFLLElBQUk7b0JBQ1AsT0FBTyxPQUFPLENBQUM7Z0JBQ2pCLEtBQUssSUFBSTtvQkFDUCxPQUFPLE9BQU8sQ0FBQztZQUNuQixDQUFDO1lBQ0QsTUFBTTtRQUNSLENBQUM7UUFDRCxLQUFLLE9BQU8sQ0FBQztRQUNiLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNaLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBQ0QsTUFBTSxJQUFJLGtCQUFrQixDQUFDLDZCQUE2QixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN6RixDQUFDO0FBRUQsS0FBSyxVQUFVLHdCQUF3QjtJQUNyQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sZUFBZSxFQUFFLENBQUM7SUFDMUQsSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzlCLE1BQU0sS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUM7QUFDbkMsQ0FBQztBQUVELEtBQUssVUFBVSxxQkFBcUI7SUFDbEMsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FDOUI7UUFDRSxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLElBQUksRUFBRSxTQUFTO1FBQ2YsYUFBYSxFQUFFLElBQUk7UUFDbkIsY0FBYyxFQUFFLElBQUksVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztLQUNuRCxFQUNELElBQUksRUFDSixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FDbkIsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCRztBQUNILE1BQXFCLE1BQU07SUF3QnpCOzs7Ozs7T0FNRztJQUNILFlBQ0UscUJBQWtELEVBQ2xELE1BQWUsRUFDZixnQkFBZ0MsRUFDaEMsV0FBVyxHQUFHLEtBQUs7UUFqQnJCLFlBQU8sR0FBYSxFQUFFLENBQUM7UUFDdkIsbUJBQWMsR0FBYSxFQUFFLENBQUM7UUFrQjVCLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFlLEVBQWdCLEVBQUU7WUFDM0QsT0FBTztnQkFDTCxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUU7b0JBQzFDLE1BQU0sQ0FBQyxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDO2dCQUNELFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7b0JBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDO29CQUMvQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ1osTUFBTSxJQUFJLGtCQUFrQixDQUFDLCtDQUErQyxDQUFDLENBQUM7b0JBQ2hGLENBQUM7b0JBQ0QsTUFBTSxDQUFDLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3RDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDOUIsQ0FBQzthQUNGLENBQUM7UUFDSixDQUFDLENBQUM7UUFDRixJQUFJLGNBQWMsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQzlELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDWixNQUFNLElBQUksa0JBQWtCLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUM3RCxDQUFDO1lBQ0Qsb0RBQW9EO1lBQ3BELGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1lBRS9CLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUM1RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLGdCQUFnQixHQUFHLHdCQUF3QixFQUFFLENBQUM7WUFDckQsQ0FBQztZQUNELElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLEVBQ0osWUFBWSxFQUNaLHlCQUF5QixHQUFHLEVBQUUsRUFDOUIsZUFBZSxFQUNmLFlBQVksRUFDWixXQUFXLEVBQ1gsUUFBUSxFQUNSLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsV0FBVyxHQUNaLEdBQUcscUJBQXFCLENBQUM7WUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUNyRCxvREFBb0Q7WUFDcEQsaUJBQWlCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUM7WUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7WUFDL0IsSUFBSSxZQUFZLEVBQUUsTUFBTSxJQUFJLGVBQWUsRUFBRSxDQUFDO2dCQUM1QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksZUFBZSxDQUFDLFlBQVksSUFBSSxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUM7WUFDL0UsQ0FBQztZQUNELElBQUksQ0FBQyx5QkFBeUIsR0FBRyx5QkFBeUIsQ0FBQztZQUMzRCxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxXQUFXLENBQUM7WUFDakMsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixJQUFJLENBQUMsb0JBQW9CLEdBQUcsUUFBUSxDQUFDO1lBQ3ZDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLENBQUMsb0JBQW9CLEdBQUcscUJBQXFCLEVBQUUsQ0FBQztZQUN0RCxDQUFDO1lBRUQsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7WUFDM0MsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyx3QkFBd0IsRUFBRSxDQUFDO1lBQ3JELENBQUM7WUFDRCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQVksQ0FBQyxTQUFpQjtRQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsU0FBUyxDQUNiLGFBQThCLEVBQzlCLFlBQW9CLEVBQ3BCLGtCQUFtQyxFQUNuQyxhQUFxQjtRQUVyQixJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1FBRXJDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixZQUFZLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRixDQUFDO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUN2QyxNQUFNLElBQUksY0FBYyxDQUFDLGlCQUFpQixZQUFZLENBQUMsT0FBTyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDbkYsQ0FBQztRQUVELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDckQsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUU3RCxrRkFBa0Y7UUFDbEYsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFFRCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLENBQUM7WUFDdEMsTUFBTSxJQUFJLGtCQUFrQixDQUFDLDBDQUEwQyxDQUFDLENBQUM7UUFDM0UsQ0FBQztRQUVELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsRUFBRTtZQUMxRCxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUM7WUFDcEUsUUFBUSxFQUFFO2dCQUNSLE1BQU0sQ0FBQyw2Q0FBNkMsRUFBRTtvQkFDcEQsZ0JBQWdCLEVBQUU7d0JBQ2hCOzRCQUNFLGlCQUFpQixFQUFFLE9BQU8sRUFBRSx3QkFBd0I7NEJBQ3BELGVBQWUsRUFBRTtnQ0FDZixNQUFNLEVBQUUsSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFDO2dDQUNyQyxNQUFNLEVBQUUsRUFBRTtnQ0FDVixRQUFRLEVBQUUsTUFBTSxDQUFDLFlBQVk7Z0NBQzdCLE9BQU8sRUFBRSxNQUFNLENBQUMsaUJBQWlCOzZCQUNsQzt5QkFDRjtxQkFDRjtvQkFDRCxTQUFTLEVBQUUsYUFBYSxDQUFDLGtCQUFrQjtpQkFDNUMsQ0FBQzthQUNIO1lBQ0QsU0FBUyxFQUFFO2dCQUNULE1BQU0sRUFBRSxJQUFJLFVBQVUsQ0FBQyxhQUFhLENBQUM7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFO2dCQUNWLFFBQVEsRUFBRSxNQUFNLENBQUMsWUFBWTtnQkFDN0IsT0FBTyxFQUFFLE1BQU0sQ0FBQyxpQkFBaUI7YUFDbEM7WUFDRCxTQUFTLEVBQUUsYUFBYSxDQUFDLGtCQUFrQjtTQUM1QyxDQUFDLENBQUM7UUFFSCxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUMsMkJBQTJCLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFbEYsTUFBTSxVQUFVLEdBQUcsRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLENBQUM7UUFFbkQsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLFlBQVksQ0FBQyxVQUFVLEVBQUUsb0JBQW9CLENBQUMsVUFBVSxFQUFFO1lBQ3pGLEdBQUcsRUFBRSxRQUFRLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDO1NBQzlDLENBQUMsQ0FBQztRQUVILFVBQVU7UUFDVixNQUFNLFVBQVUsR0FBRyxNQUFNLGVBQWUsQ0FDdEMsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMseUJBQXlCLENBQy9CLENBQUM7UUFDRixpQ0FBaUM7UUFDakMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFcEMsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLHlGQUF5RjtZQUN6RiwwREFBMEQ7WUFDMUQsTUFBTSxJQUFJLFlBQVksQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFFRCxNQUFNLG1CQUFtQixHQUFHLHlCQUF5QixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRWxFLElBQUksZ0JBQTZDLENBQUM7UUFDbEQsUUFBUSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLEtBQUssZUFBZSxDQUFDLENBQUMsQ0FBQztnQkFDckIsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7Z0JBQ3ZDLE1BQU07WUFDUixDQUFDO1lBQ0QsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUNiLDBCQUEwQixDQUN4QixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssRUFDbkIsNkJBQTZCLENBQUMsWUFBWSxDQUFDLEVBQzNDLG1CQUFtQixDQUNwQixDQUFDO1lBQ0osQ0FBQztZQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ1IsTUFBTSxJQUFJLFlBQVksQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7UUFDSCxDQUFDO1FBRUQsZ0NBQWdDO1FBQ2hDLE1BQU0sUUFBUSxHQUNaLGFBQWEsSUFBSSxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztRQUNoRyxNQUFNLEVBQUUsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sa0JBQWtCLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRS9ELElBQUksWUFBWSxDQUFDO1FBQ2pCLElBQUksQ0FBQztZQUNILG1EQUFtRDtZQUNuRCxZQUFZLEdBQUcsTUFBTSxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxrQkFBa0IsQ0FDMUIsY0FBYyxZQUFZLDJFQUEyRSxFQUNyRyxLQUFLLENBQ04sQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLFFBQVEsQ0FBQztRQUNiLElBQUksQ0FBQztZQUNILDJCQUEyQjtZQUMzQixRQUFRLEdBQUcsTUFBTSxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxRQUFRLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDL0MsQ0FBQztRQUNELE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztRQUVuRCx5QkFBeUI7UUFDekIsSUFBSSxhQUFhLENBQUM7UUFDbEIsSUFBSSxDQUFDO1lBQ0gsYUFBYSxHQUFHLE1BQU0sWUFBWTtZQUNoQyx3QkFBd0I7WUFDeEIsVUFBVSxFQUNWLFlBQVksRUFDWixRQUFRLENBQ1QsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksZ0JBQWdCLEVBQUUsQ0FBQztnQkFDakUsTUFBTSxJQUFJLFlBQVksQ0FBQywrQkFBK0IsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3RCxDQUFDO2lCQUFNLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxJQUFJLGtCQUFrQixDQUFDLCtCQUErQixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25FLENBQUM7WUFDRCxNQUFNLElBQUksUUFBUSxDQUFDLDJCQUEyQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDL0QsSUFBSSxZQUFZLENBQUM7UUFDakIsSUFBSSxDQUFDO1lBQ0gsMEJBQTBCO1lBQzFCLFlBQVksR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUN4QyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsRUFDakQsYUFBYSxFQUNiLGtCQUFrQixDQUNuQixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksWUFBWSxDQUNwQiwwRUFBMEUsRUFDMUUsS0FBSyxDQUNOLENBQUM7UUFDSixDQUFDO1FBRUQsZUFBZTtRQUNmLElBQUksWUFBWSxDQUFDO1FBQ2pCLElBQUksQ0FBQztZQUNILFlBQVksR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUMxQyxLQUFLLEVBQ0wsWUFBWSxFQUNaLFNBQVM7WUFDVCx3RUFBd0U7WUFDeEUsMEVBQTBFO1lBQzFFLHdFQUF3RTtZQUN4RSxJQUFJO1lBQ0osOEVBQThFO1lBQzlFLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUN2QixDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksWUFBWSxDQUFDLDJCQUEyQixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdELENBQUM7UUFFRCxPQUFPO1lBQ0wsbUJBQW1CO1lBQ25CLFlBQVksRUFBRSxZQUFZO1NBQzNCLENBQUM7SUFDSixDQUFDOztBQWhUZSx3QkFBaUIsR0FBRyxRQUFRLEFBQVgsQ0FBWTtBQUM3QixtQkFBWSxHQUFHLEtBQUssQUFBUixDQUFTO0FBQ3JCLDBCQUFtQixHQUFHLE9BQU8sQUFBVixDQUFXO0FBQzlCLDhCQUF1QixHQUFHLENBQUMsQUFBSixDQUFLO0FBQzVCLGNBQU8sR0FBRyxFQUFFLEFBQUwsQ0FBTTtlQUxWLE1BQU0ifQ==
@@ -1,89 +0,0 @@
1
- import { base64 } from '../encodings/index.js';
2
- import Header from './models/Header.js';
3
- import Payload from './models/Payload.js';
4
- import Signature from './models/Signature.js';
5
- import EncodingEnum from './enum/EncodingEnum.js';
6
- import { ConfigurationError, InvalidFileError } from '../errors.js';
7
- // Defaults when none set during encryption
8
- class NanoTDF {
9
- static from(content, encoding, legacyTDF = false) {
10
- // If we don't assign an empty array buffer then TS reports buffer as unassigned
11
- let buffer;
12
- if (typeof content === 'string') {
13
- if (!encoding || encoding === EncodingEnum.Base64) {
14
- buffer = base64.decodeArrayBuffer(content);
15
- }
16
- else {
17
- throw new ConfigurationError(`Unsupported encoding: ${encoding}`);
18
- }
19
- }
20
- // Handle Uint8Array types
21
- else if (ArrayBuffer.isView(content) || content instanceof ArrayBuffer) {
22
- buffer = content;
23
- }
24
- else {
25
- throw new ConfigurationError(`unsupported content type`);
26
- }
27
- const dataView = new Uint8Array(buffer);
28
- let offset = 0;
29
- // Header
30
- const { header, offset: headerOffset } = Header.parse(dataView.subarray(offset));
31
- offset += headerOffset;
32
- // Payload
33
- const { payload, offset: payloadOffset } = Payload.parse(header, dataView.subarray(offset), legacyTDF);
34
- offset += payloadOffset;
35
- // Signature
36
- const { signature, offset: signatureOffset } = Signature.parse(header, dataView.subarray(offset));
37
- offset += signatureOffset;
38
- // Singature checking
39
- if (!header.hasSignature && signature.length > 0) {
40
- throw new InvalidFileError("Found signature when there shouldn't be one");
41
- }
42
- if (header.hasSignature && signature.length === 0) {
43
- throw new InvalidFileError('Could not find signature');
44
- }
45
- return new NanoTDF(header, payload, signature);
46
- }
47
- constructor(header, payload, signature) {
48
- this.header = header;
49
- this.payload = payload;
50
- this.signature = signature;
51
- }
52
- /**
53
- * Return the content of nano tdf as binary buffer
54
- */
55
- toBuffer() {
56
- let offset = 0;
57
- const lengthOfSignature = this.signature && this.signature.length ? this.signature.length : 0;
58
- const lengthOfTDF = this.header.length + this.payload.length + lengthOfSignature;
59
- const buffer = new ArrayBuffer(lengthOfTDF);
60
- // Write the header
61
- const headerBufferView = new Uint8Array(buffer, 0, this.header.length);
62
- this.header.copyToBuffer(headerBufferView);
63
- offset += headerBufferView.length;
64
- // Write the payload
65
- const payloadBufferView = new Uint8Array(buffer, offset, this.payload.length);
66
- this.payload.copyToBuffer(payloadBufferView);
67
- offset += payloadBufferView.length;
68
- // Write the signature
69
- if (this.header.hasSignature && this.signature) {
70
- const signatureBufferView = new Uint8Array(buffer, offset, lengthOfSignature);
71
- this.signature.copyToBuffer(signatureBufferView);
72
- }
73
- return buffer;
74
- }
75
- /**
76
- * Return the content of nano tdf as base64 string
77
- */
78
- toBase64() {
79
- const arrayBuffer = this.toBuffer();
80
- return base64.encodeArrayBuffer(arrayBuffer);
81
- }
82
- }
83
- // Add encodings to the NanoTDF class for easy access
84
- NanoTDF.Encodings = EncodingEnum;
85
- NanoTDF.Header = Header;
86
- NanoTDF.Payload = Payload;
87
- NanoTDF.Signature = Signature;
88
- export default NanoTDF;
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmFub1RERi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmL05hbm9UREYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQy9DLE9BQU8sTUFBTSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hDLE9BQU8sT0FBTyxNQUFNLHFCQUFxQixDQUFDO0FBQzFDLE9BQU8sU0FBUyxNQUFNLHVCQUF1QixDQUFDO0FBQzlDLE9BQU8sWUFBWSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVwRSwyQ0FBMkM7QUFFM0MsTUFBcUIsT0FBTztJQWExQixNQUFNLENBQUMsSUFBSSxDQUNULE9BQWlDLEVBQ2pDLFFBQXVCLEVBQ3ZCLFNBQVMsR0FBRyxLQUFLO1FBRWpCLGdGQUFnRjtRQUNoRixJQUFJLE1BQU0sQ0FBQztRQUNYLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDaEMsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLEtBQUssWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNsRCxNQUFNLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLElBQUksa0JBQWtCLENBQUMseUJBQXlCLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDcEUsQ0FBQztRQUNILENBQUM7UUFDRCwwQkFBMEI7YUFDckIsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE9BQU8sWUFBWSxXQUFXLEVBQUUsQ0FBQztZQUN2RSxNQUFNLEdBQUcsT0FBTyxDQUFDO1FBQ25CLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLGtCQUFrQixDQUFDLDBCQUEwQixDQUFD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
@@ -1,14 +0,0 @@
1
- /* globals window */
2
- /**
3
- * This file is used for:
4
- *
5
- * - es5 browser version of nanoTDF and add it to the window as NanoTDF
6
- *
7
- * This is not used for:
8
- *
9
- * - es6 web development (use node modules)
10
- * - node applications
11
- */
12
- import NanoTDF from './NanoTDF.js';
13
- window.NanoTDF = NanoTDF;
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1lbnRyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmL2Jyb3dzZXItZW50cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0JBQW9CO0FBQ3BCOzs7Ozs7Ozs7R0FTRztBQUNILE9BQU8sT0FBTyxNQUFNLGNBQWMsQ0FBQztBQVFuQyxNQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyJ9
@@ -1,2 +0,0 @@
1
- export const GMAC_BINDING_LEN = 8;
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBQyJ9
@@ -1,14 +0,0 @@
1
- import { decrypt as cryptoDecrypt } from '../nanotdf-crypto/index.js';
2
- /**
3
- * Decrypt nanotdf with a crypto key
4
- *
5
- * @param key Crypto key used to decrypt nanotdf
6
- * @param nanotdf NanoTDF to decrypt
7
- */
8
- export default async function decrypt(key, nanotdf) {
9
- // console.log(`Decrypting for content: ${nanotdf}`, nanotdf.header.authTagLength);
10
- return await cryptoDecrypt(key, nanotdf.payload.ciphertextWithAuthTag, nanotdf.payload.iv,
11
- // Auth tag length in bits
12
- nanotdf.header.authTagLength);
13
- }
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmL2RlY3J5cHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sSUFBSSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUd0RTs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FBQyxHQUFjLEVBQUUsT0FBZ0I7SUFDcEUsbUZBQW1GO0lBQ25GLE9BQU8sTUFBTSxhQUFhLENBQ3hCLEdBQUcsRUFDSCxPQUFPLENBQUMsT0FBTyxDQUFDLHFCQUFxQixFQUNyQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7SUFDbEIsMEJBQTBCO0lBQzFCLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUM3QixDQUFDO0FBQ0osQ0FBQyJ9
@@ -1,32 +0,0 @@
1
- import NanoTDF from './NanoTDF.js';
2
- import DefaultParams from './models/DefaultParams.js';
3
- import Payload from './models/Payload.js';
4
- import { getBitLength as authTagLengthForCipher } from './models/Ciphers.js';
5
- import encrypt from '../nanotdf-crypto/encrypt.js';
6
- /**
7
- * Encrypt the plain data into nanotdf buffer
8
- *
9
- * @param symmetricKey Key to encrypt the payload
10
- * @param header NanoTDF header
11
- * @param iv IV to be used for encrypting the payload
12
- * @param data The data to be encrypted
13
- */
14
- export default async function encryptDataset(symmetricKey, header, iv, data) {
15
- // Auth tag length for policy and payload
16
- const authTagLengthInBytes = authTagLengthForCipher(DefaultParams.symmetricCipher) / 8;
17
- // Encrypt the payload
18
- let payloadAsBuffer;
19
- if (typeof data === 'string') {
20
- payloadAsBuffer = new TextEncoder().encode(data);
21
- }
22
- else {
23
- payloadAsBuffer = data;
24
- }
25
- const encryptedPayload = await encrypt(symmetricKey, new Uint8Array(payloadAsBuffer), iv, authTagLengthInBytes * 8);
26
- // Create payload
27
- const payload = new Payload(iv.slice(-3), new Uint8Array(encryptedPayload.slice(0, -authTagLengthInBytes)), new Uint8Array(encryptedPayload.slice(-authTagLengthInBytes)));
28
- // Create a nanotdf.
29
- const nanoTDF = new NanoTDF(header, payload);
30
- return nanoTDF.toBuffer();
31
- }
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdC1kYXRhc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYvZW5jcnlwdC1kYXRhc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sT0FBTyxNQUFNLGNBQWMsQ0FBQztBQUVuQyxPQUFPLGFBQWEsTUFBTSwyQkFBMkIsQ0FBQztBQUN0RCxPQUFPLE9BQU8sTUFBTSxxQkFBcUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxJQUFJLHNCQUFzQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0UsT0FBTyxPQUFPLE1BQU0sOEJBQThCLENBQUM7QUFFbkQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FDMUMsWUFBdUIsRUFDdkIsTUFBYyxFQUNkLEVBQWMsRUFDZCxJQUE4QjtJQUU5Qix5Q0FBeUM7SUFDekMsTUFBTSxvQkFBb0IsR0FBRyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXZGLHNCQUFzQjtJQUN0QixJQUFJLGVBQWUsQ0FBQztJQUNwQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzdCLGVBQWUsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuRCxDQUFDO1NBQU0sQ0FBQztRQUNOLGVBQWUsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxPQUFPLENBQ3BDLFlBQVksRUFDWixJQUFJLFVBQVUsQ0FBQyxlQUFlLENBQUMsRUFDL0IsRUFBRSxFQUNGLG9CQUFvQixHQUFHLENBQUMsQ0FDekIsQ0FBQztJQUVGLGlCQUFpQjtJQUNqQixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FDekIsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUNaLElBQUksVUFBVSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLEVBQ2hFLElBQUksVUFBVSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FDOUQsQ0FBQztJQUVGLG9CQUFvQjtJQUNwQixNQUFNLE9BQU8sR0FBRyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFN0MsT0FBTyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDNUIsQ0FBQyJ9
@@ -1,126 +0,0 @@
1
- import NanoTDF from './NanoTDF.js';
2
- import Header from './models/Header.js';
3
- import ResourceLocator from './models/ResourceLocator.js';
4
- import DefaultParams from './models/DefaultParams.js';
5
- import EmbeddedPolicy from './models/Policy/EmbeddedPolicy.js';
6
- import Payload from './models/Payload.js';
7
- import getHkdfSalt from './helpers/getHkdfSalt.js';
8
- import { getBitLength as authTagLengthForCipher } from './models/Ciphers.js';
9
- import { GMAC_BINDING_LEN } from './constants.js';
10
- import { AlgorithmName, KeyFormat, KeyUsageType } from './../nanotdf-crypto/enums.js';
11
- import { encrypt as cryptoEncrypt, keyAgreement, digest, exportCryptoKey, } from '../nanotdf-crypto/index.js';
12
- import { computeECDSASig, extractRSValuesFromSignature } from '../nanotdf-crypto/ecdsaSignature.js';
13
- import { ConfigurationError } from '../errors.js';
14
- /**
15
- * Encrypt the plain data into nanotdf buffer
16
- *
17
- * @param policy Policy that will added to the nanotdf
18
- * @param kasInfo KAS url and public key data
19
- * @param ephemeralKeyPair SDK ephemeral key pair to generate symmetric key
20
- * @param iv
21
- * @param data The data to be encrypted
22
- * @param ecdsaBinding Flag to enable ECDSA binding
23
- */
24
- export default async function encrypt(policy, kasInfo, ephemeralKeyPair, iv, data, ecdsaBinding = DefaultParams.ecdsaBinding) {
25
- // Generate a symmetric key.
26
- if (!ephemeralKeyPair.privateKey) {
27
- throw new ConfigurationError('incomplete ephemeral key');
28
- }
29
- const symmetricKey = await keyAgreement(ephemeralKeyPair.privateKey, await kasInfo.key,
30
- // Get the hkdf salt params
31
- await getHkdfSalt(DefaultParams.magicNumberVersion));
32
- // Construct the kas locator
33
- const kasResourceLocator = ResourceLocator.fromURL(kasInfo.url, kasInfo.kid);
34
- // Auth tag length for policy and payload
35
- const authTagLengthInBytes = authTagLengthForCipher(DefaultParams.symmetricCipher) / 8;
36
- // Encrypt the policy
37
- const policyIV = new Uint8Array(iv.length).fill(0);
38
- const policyAsBuffer = new TextEncoder().encode(policy);
39
- const encryptedPolicy = await cryptoEncrypt(symmetricKey, policyAsBuffer, policyIV, authTagLengthInBytes * 8);
40
- let policyBinding;
41
- // Calculate the policy binding.
42
- if (ecdsaBinding) {
43
- const curveName = await getCurveNameFromPrivateKey(ephemeralKeyPair.privateKey);
44
- const ecdsaPrivateKey = await convertECDHToECDSA(ephemeralKeyPair.privateKey, curveName);
45
- const ecdsaSignature = await computeECDSASig(ecdsaPrivateKey, new Uint8Array(encryptedPolicy));
46
- const { r, s } = extractRSValuesFromSignature(new Uint8Array(ecdsaSignature));
47
- const rLength = r.length;
48
- const sLength = s.length;
49
- policyBinding = new Uint8Array(1 + rLength + 1 + sLength);
50
- // Set the lengths and values of r and s in policyBinding
51
- policyBinding[0] = rLength;
52
- policyBinding.set(r, 1);
53
- policyBinding[1 + rLength] = sLength;
54
- policyBinding.set(s, 1 + rLength + 1);
55
- }
56
- else {
57
- const signature = await digest('SHA-256', new Uint8Array(encryptedPolicy));
58
- policyBinding = new Uint8Array(signature.slice(-GMAC_BINDING_LEN));
59
- }
60
- // Create embedded policy
61
- const embeddedPolicy = new EmbeddedPolicy(DefaultParams.policyType, policyBinding, new Uint8Array(encryptedPolicy));
62
- if (!ephemeralKeyPair.publicKey) {
63
- throw new ConfigurationError('incomplete ephemeral key');
64
- }
65
- // Create a header
66
- const pubKeyAsArrayBuffer = await exportCryptoKey(ephemeralKeyPair.publicKey);
67
- const header = new Header(DefaultParams.magicNumberVersion, kasResourceLocator, ecdsaBinding, DefaultParams.signatureCurveName, DefaultParams.signature, DefaultParams.signatureCurveName, DefaultParams.symmetricCipher, embeddedPolicy, new Uint8Array(pubKeyAsArrayBuffer));
68
- // Encrypt the payload
69
- let payloadAsBuffer;
70
- if (typeof data === 'string') {
71
- payloadAsBuffer = new TextEncoder().encode(data);
72
- }
73
- else {
74
- payloadAsBuffer = data;
75
- }
76
- const encryptedPayload = await cryptoEncrypt(symmetricKey, new Uint8Array(payloadAsBuffer), iv, authTagLengthInBytes * 8);
77
- // Create payload
78
- const payload = new Payload(iv.slice(-3), new Uint8Array(encryptedPayload.slice(0, -authTagLengthInBytes)), new Uint8Array(encryptedPayload.slice(-authTagLengthInBytes)));
79
- // Create a nanotdf.
80
- const nanoTDF = new NanoTDF(header, payload);
81
- return nanoTDF.toBuffer();
82
- }
83
- /**
84
- * Retrieves the curve name from a given ECDH private key.
85
- *
86
- * This function exports the provided ECDH private key in JWK format and extracts
87
- * the curve name from the 'crv' property of the JWK.
88
- *
89
- * @param {CryptoKey} privateKey - The ECDH private key from which to retrieve the curve name.
90
- * @returns {Promise<string>} - A promise that resolves to the curve name.
91
- *
92
- * @throws {Error} - Throws an error if the curve name is undefined.
93
- *
94
- */
95
- async function getCurveNameFromPrivateKey(privateKey) {
96
- // Export the private key
97
- const keyData = await crypto.subtle.exportKey('jwk', privateKey);
98
- // The curve name is stored in the 'crv' property of the JWK
99
- if (!keyData.crv) {
100
- throw new ConfigurationError('curve name is undefined (bad private key)');
101
- }
102
- return keyData.crv;
103
- }
104
- /**
105
- * Converts an ECDH private key to an ECDSA private key.
106
- *
107
- * This function exports the given ECDH private key in PKCS#8 format and then
108
- * imports it as an ECDSA private key using the specified curve name.
109
- *
110
- * @param {CryptoKey} key - The ECDH private key to be converted.
111
- * @param {string} curveName - The name of the elliptic curve to be used for the ECDSA key.
112
- * @returns {Promise<CryptoKey>} - A promise that resolves to the converted ECDSA private key.
113
- *
114
- * @throws {Error} - Throws an error if the key export or import fails.
115
- */
116
- async function convertECDHToECDSA(key, curveName) {
117
- // Export the ECDH private key
118
- const ecdhPrivateKey = await crypto.subtle.exportKey('pkcs8', key);
119
- // Import the ECDH private key as an ECDSA private key
120
- const ecdsaPrivateKey = await crypto.subtle.importKey(KeyFormat.Pkcs8, ecdhPrivateKey, {
121
- name: AlgorithmName.ECDSA,
122
- namedCurve: curveName,
123
- }, true, [KeyUsageType.Sign]);
124
- return ecdsaPrivateKey;
125
- }
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmL2VuY3J5cHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxPQUFPLE1BQU0sY0FBYyxDQUFDO0FBQ25DLE9BQU8sTUFBTSxNQUFNLG9CQUFvQixDQUFDO0FBQ3hDLE9BQU8sZUFBZSxNQUFNLDZCQUE2QixDQUFDO0FBQzFELE9BQU8sYUFBYSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RELE9BQU8sY0FBYyxNQUFNLG1DQUFtQyxDQUFDO0FBQy9ELE9BQU8sT0FBTyxNQUFNLHFCQUFxQixDQUFDO0FBQzFDLE9BQU8sV0FBVyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLElBQUksc0JBQXNCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUV0RixPQUFPLEVBQ0wsT0FBTyxJQUFJLGFBQWEsRUFDeEIsWUFBWSxFQUNaLE1BQU0sRUFDTixlQUFlLEdBQ2hCLE1BQU0sNEJBQTRCLENBQUM7QUFFcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVsRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssVUFBVSxPQUFPLENBQ25DLE1BQWMsRUFDZCxPQUF5QixFQUN6QixnQkFBK0IsRUFDL0IsRUFBYyxFQUNkLElBQThCLEVBQzlCLGVBQXdCLGFBQWEsQ0FBQyxZQUFZO0lBRWxELDRCQUE0QjtJQUM1QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDakMs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
@@ -1,11 +0,0 @@
1
- var CipherEnum;
2
- (function (CipherEnum) {
3
- CipherEnum[CipherEnum["AES_256_GCM_64"] = 0] = "AES_256_GCM_64";
4
- CipherEnum[CipherEnum["AES_256_GCM_96"] = 1] = "AES_256_GCM_96";
5
- CipherEnum[CipherEnum["AES_256_GCM_104"] = 2] = "AES_256_GCM_104";
6
- CipherEnum[CipherEnum["AES_256_GCM_112"] = 3] = "AES_256_GCM_112";
7
- CipherEnum[CipherEnum["AES_256_GCM_120"] = 4] = "AES_256_GCM_120";
8
- CipherEnum[CipherEnum["AES_256_GCM_128"] = 5] = "AES_256_GCM_128";
9
- })(CipherEnum || (CipherEnum = {}));
10
- export default CipherEnum;
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2lwaGVyRW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmL2VudW0vQ2lwaGVyRW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxJQUFLLFVBT0o7QUFQRCxXQUFLLFVBQVU7SUFDYiwrREFBYyxDQUFBO0lBQ2QsK0RBQWMsQ0FBQTtJQUNkLGlFQUFlLENBQUE7SUFDZixpRUFBZSxDQUFBO0lBQ2YsaUVBQWUsQ0FBQTtJQUNmLGlFQUFlLENBQUE7QUFDakIsQ0FBQyxFQVBJLFVBQVUsS0FBVixVQUFVLFFBT2Q7QUFFRCxlQUFlLFVBQVUsQ0FBQyJ9