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

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