@opentdf/sdk 0.8.0-beta.74 → 0.8.0-rc.73

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 +30 -5
  2. package/dist/cjs/src/nanoclients.js +292 -0
  3. package/dist/cjs/src/nanoindex.js +47 -0
  4. package/dist/cjs/src/nanotdf/Client.js +315 -0
  5. package/dist/cjs/src/nanotdf/NanoTDF.js +94 -0
  6. package/dist/cjs/src/nanotdf/browser-entry.js +19 -0
  7. package/dist/cjs/src/nanotdf/constants.js +5 -0
  8. package/dist/cjs/src/nanotdf/decrypt.js +17 -0
  9. package/dist/cjs/src/nanotdf/encrypt-dataset.js +38 -0
  10. package/dist/cjs/src/nanotdf/encrypt.js +132 -0
  11. package/dist/cjs/src/nanotdf/enum/CipherEnum.js +13 -0
  12. package/dist/cjs/src/nanotdf/enum/CurveNameEnum.js +15 -0
  13. package/dist/cjs/src/nanotdf/enum/EncodingEnum.js +8 -0
  14. package/dist/cjs/src/nanotdf/enum/PolicyTypeEnum.js +11 -0
  15. package/dist/cjs/src/nanotdf/enum/ProtocolEnum.js +10 -0
  16. package/dist/cjs/src/nanotdf/enum/ResourceLocatorIdentifierEnum.js +11 -0
  17. package/dist/cjs/src/nanotdf/helpers/calculateByCurve.js +28 -0
  18. package/dist/cjs/src/nanotdf/helpers/getHkdfSalt.js +11 -0
  19. package/dist/cjs/src/nanotdf/index.js +25 -0
  20. package/dist/cjs/src/nanotdf/interfaces/PolicyInterface.js +3 -0
  21. package/dist/cjs/src/nanotdf/models/Ciphers.js +61 -0
  22. package/dist/cjs/src/nanotdf/models/DefaultParams.js +27 -0
  23. package/dist/cjs/src/nanotdf/models/EcCurves.js +39 -0
  24. package/dist/cjs/src/nanotdf/models/Header.js +255 -0
  25. package/dist/cjs/src/nanotdf/models/Payload.js +158 -0
  26. package/dist/cjs/src/nanotdf/models/Policy/AbstractPolicy.js +73 -0
  27. package/dist/cjs/src/nanotdf/models/Policy/EmbeddedPolicy.js +82 -0
  28. package/dist/cjs/src/nanotdf/models/Policy/PolicyFactory.js +38 -0
  29. package/dist/cjs/src/nanotdf/models/Policy/RemotePolicy.js +62 -0
  30. package/dist/cjs/src/nanotdf/models/ResourceLocator.js +211 -0
  31. package/dist/cjs/src/nanotdf/models/Signature.js +77 -0
  32. package/dist/cjs/src/{crypto → nanotdf-crypto}/ciphers.js +1 -1
  33. package/dist/cjs/src/{crypto → nanotdf-crypto}/decrypt.js +1 -1
  34. package/dist/cjs/src/{crypto → nanotdf-crypto}/digest.js +1 -1
  35. package/dist/cjs/src/{crypto → nanotdf-crypto}/ecdsaSignature.js +2 -2
  36. package/dist/cjs/src/{crypto → nanotdf-crypto}/encrypt.js +1 -1
  37. package/dist/cjs/src/{crypto → nanotdf-crypto}/enums.js +1 -1
  38. package/dist/cjs/src/nanotdf-crypto/exportCryptoKey.js +20 -0
  39. package/dist/cjs/src/{crypto → nanotdf-crypto}/generateKeyPair.js +1 -1
  40. package/dist/cjs/src/{crypto → nanotdf-crypto}/generateRandomNumber.js +1 -1
  41. package/dist/cjs/src/{crypto → nanotdf-crypto}/index.js +1 -1
  42. package/dist/cjs/src/{crypto → nanotdf-crypto}/keyAgreement.js +1 -1
  43. package/dist/cjs/src/{crypto → nanotdf-crypto}/pemPublicToCrypto.js +1 -1
  44. package/dist/cjs/src/opentdf.js +260 -9
  45. package/dist/cjs/src/tdf/NanoTDF/NanoTDF.js +38 -0
  46. package/dist/cjs/src/types/index.js +3 -0
  47. package/dist/cjs/src/utils.js +2 -2
  48. package/dist/cjs/tdf3/index.js +8 -7
  49. package/dist/cjs/tdf3/src/models/key-access.js +4 -4
  50. package/dist/cjs/tdf3/src/tdf.js +4 -4
  51. package/dist/types/src/nanoclients.d.ts +106 -0
  52. package/dist/types/src/nanoclients.d.ts.map +1 -0
  53. package/dist/types/src/nanoindex.d.ts +5 -0
  54. package/dist/types/src/nanoindex.d.ts.map +1 -0
  55. package/dist/types/src/nanotdf/Client.d.ts +91 -0
  56. package/dist/types/src/nanotdf/Client.d.ts.map +1 -0
  57. package/dist/types/src/nanotdf/NanoTDF.d.ts +24 -0
  58. package/dist/types/src/nanotdf/NanoTDF.d.ts.map +1 -0
  59. package/dist/types/src/nanotdf/browser-entry.d.ts +17 -0
  60. package/dist/types/src/nanotdf/browser-entry.d.ts.map +1 -0
  61. package/dist/types/src/nanotdf/constants.d.ts +2 -0
  62. package/dist/types/src/nanotdf/constants.d.ts.map +1 -0
  63. package/dist/types/src/nanotdf/decrypt.d.ts +9 -0
  64. package/dist/types/src/nanotdf/decrypt.d.ts.map +1 -0
  65. package/dist/types/src/nanotdf/encrypt-dataset.d.ts +11 -0
  66. package/dist/types/src/nanotdf/encrypt-dataset.d.ts.map +1 -0
  67. package/dist/types/src/nanotdf/encrypt.d.ts +13 -0
  68. package/dist/types/src/nanotdf/encrypt.d.ts.map +1 -0
  69. package/dist/types/src/nanotdf/enum/CipherEnum.d.ts +10 -0
  70. package/dist/types/src/nanotdf/enum/CipherEnum.d.ts.map +1 -0
  71. package/dist/types/src/nanotdf/enum/CurveNameEnum.d.ts +12 -0
  72. package/dist/types/src/nanotdf/enum/CurveNameEnum.d.ts.map +1 -0
  73. package/dist/types/src/nanotdf/enum/EncodingEnum.d.ts +5 -0
  74. package/dist/types/src/nanotdf/enum/EncodingEnum.d.ts.map +1 -0
  75. package/dist/types/src/nanotdf/enum/PolicyTypeEnum.d.ts +8 -0
  76. package/dist/types/src/nanotdf/enum/PolicyTypeEnum.d.ts.map +1 -0
  77. package/dist/types/src/nanotdf/enum/ProtocolEnum.d.ts +7 -0
  78. package/dist/types/src/nanotdf/enum/ProtocolEnum.d.ts.map +1 -0
  79. package/dist/types/src/nanotdf/enum/ResourceLocatorIdentifierEnum.d.ts +8 -0
  80. package/dist/types/src/nanotdf/enum/ResourceLocatorIdentifierEnum.d.ts.map +1 -0
  81. package/dist/types/src/nanotdf/helpers/calculateByCurve.d.ts +20 -0
  82. package/dist/types/src/nanotdf/helpers/calculateByCurve.d.ts.map +1 -0
  83. package/dist/types/src/nanotdf/helpers/getHkdfSalt.d.ts +8 -0
  84. package/dist/types/src/nanotdf/helpers/getHkdfSalt.d.ts.map +1 -0
  85. package/dist/types/src/nanotdf/index.d.ts +9 -0
  86. package/dist/types/src/nanotdf/index.d.ts.map +1 -0
  87. package/dist/types/src/nanotdf/interfaces/PolicyInterface.d.ts +17 -0
  88. package/dist/types/src/nanotdf/interfaces/PolicyInterface.d.ts.map +1 -0
  89. package/dist/types/src/nanotdf/models/Ciphers.d.ts +14 -0
  90. package/dist/types/src/nanotdf/models/Ciphers.d.ts.map +1 -0
  91. package/dist/types/src/nanotdf/models/DefaultParams.d.ts +21 -0
  92. package/dist/types/src/nanotdf/models/DefaultParams.d.ts.map +1 -0
  93. package/dist/types/src/nanotdf/models/EcCurves.d.ts +15 -0
  94. package/dist/types/src/nanotdf/models/EcCurves.d.ts.map +1 -0
  95. package/dist/types/src/nanotdf/models/Header.d.ts +73 -0
  96. package/dist/types/src/nanotdf/models/Header.d.ts.map +1 -0
  97. package/dist/types/src/nanotdf/models/Payload.d.ts +47 -0
  98. package/dist/types/src/nanotdf/models/Payload.d.ts.map +1 -0
  99. package/dist/types/src/nanotdf/models/Policy/AbstractPolicy.d.ts +52 -0
  100. package/dist/types/src/nanotdf/models/Policy/AbstractPolicy.d.ts.map +1 -0
  101. package/dist/types/src/nanotdf/models/Policy/EmbeddedPolicy.d.ts +35 -0
  102. package/dist/types/src/nanotdf/models/Policy/EmbeddedPolicy.d.ts.map +1 -0
  103. package/dist/types/src/nanotdf/models/Policy/PolicyFactory.d.ts +11 -0
  104. package/dist/types/src/nanotdf/models/Policy/PolicyFactory.d.ts.map +1 -0
  105. package/dist/types/src/nanotdf/models/Policy/RemotePolicy.d.ts +31 -0
  106. package/dist/types/src/nanotdf/models/Policy/RemotePolicy.d.ts.map +1 -0
  107. package/dist/types/src/nanotdf/models/ResourceLocator.d.ts +65 -0
  108. package/dist/types/src/nanotdf/models/ResourceLocator.d.ts.map +1 -0
  109. package/dist/types/src/nanotdf/models/Signature.d.ts +33 -0
  110. package/dist/types/src/nanotdf/models/Signature.d.ts.map +1 -0
  111. package/dist/types/src/nanotdf-crypto/ciphers.d.ts.map +1 -0
  112. package/dist/types/src/nanotdf-crypto/decrypt.d.ts.map +1 -0
  113. package/dist/types/src/nanotdf-crypto/digest.d.ts.map +1 -0
  114. package/dist/types/src/nanotdf-crypto/ecdsaSignature.d.ts.map +1 -0
  115. package/dist/types/src/nanotdf-crypto/encrypt.d.ts.map +1 -0
  116. package/dist/types/src/nanotdf-crypto/enums.d.ts.map +1 -0
  117. package/dist/types/src/nanotdf-crypto/exportCryptoKey.d.ts.map +1 -0
  118. package/dist/types/src/nanotdf-crypto/generateKeyPair.d.ts.map +1 -0
  119. package/dist/types/src/nanotdf-crypto/generateRandomNumber.d.ts.map +1 -0
  120. package/dist/types/src/nanotdf-crypto/index.d.ts.map +1 -0
  121. package/dist/types/src/nanotdf-crypto/keyAgreement.d.ts.map +1 -0
  122. package/dist/types/src/nanotdf-crypto/pemPublicToCrypto.d.ts.map +1 -0
  123. package/dist/types/src/opentdf.d.ts +65 -1
  124. package/dist/types/src/opentdf.d.ts.map +1 -1
  125. package/dist/types/src/tdf/NanoTDF/NanoTDF.d.ts +99 -0
  126. package/dist/types/src/tdf/NanoTDF/NanoTDF.d.ts.map +1 -0
  127. package/dist/types/src/types/index.d.ts +45 -0
  128. package/dist/types/src/types/index.d.ts.map +1 -0
  129. package/dist/types/tdf3/index.d.ts +3 -4
  130. package/dist/types/tdf3/index.d.ts.map +1 -1
  131. package/dist/web/src/nanoclients.js +287 -0
  132. package/dist/web/src/nanoindex.js +5 -0
  133. package/dist/web/src/nanotdf/Client.js +310 -0
  134. package/dist/web/src/nanotdf/NanoTDF.js +89 -0
  135. package/dist/web/src/nanotdf/browser-entry.js +14 -0
  136. package/dist/web/src/nanotdf/constants.js +2 -0
  137. package/dist/web/src/nanotdf/decrypt.js +14 -0
  138. package/dist/web/src/nanotdf/encrypt-dataset.js +32 -0
  139. package/dist/web/src/nanotdf/encrypt.js +126 -0
  140. package/dist/web/src/nanotdf/enum/CipherEnum.js +11 -0
  141. package/dist/web/src/nanotdf/enum/CurveNameEnum.js +13 -0
  142. package/dist/web/src/nanotdf/enum/EncodingEnum.js +6 -0
  143. package/dist/web/src/nanotdf/enum/PolicyTypeEnum.js +9 -0
  144. package/dist/web/src/nanotdf/enum/ProtocolEnum.js +8 -0
  145. package/dist/web/src/nanotdf/enum/ResourceLocatorIdentifierEnum.js +9 -0
  146. package/dist/web/src/nanotdf/helpers/calculateByCurve.js +24 -0
  147. package/dist/web/src/nanotdf/helpers/getHkdfSalt.js +8 -0
  148. package/dist/web/src/nanotdf/index.js +11 -0
  149. package/dist/web/src/nanotdf/interfaces/PolicyInterface.js +2 -0
  150. package/dist/web/src/nanotdf/models/Ciphers.js +54 -0
  151. package/dist/web/src/nanotdf/models/DefaultParams.js +22 -0
  152. package/dist/web/src/nanotdf/models/EcCurves.js +32 -0
  153. package/dist/web/src/nanotdf/models/Header.js +250 -0
  154. package/dist/web/src/nanotdf/models/Payload.js +156 -0
  155. package/dist/web/src/nanotdf/models/Policy/AbstractPolicy.js +71 -0
  156. package/dist/web/src/nanotdf/models/Policy/EmbeddedPolicy.js +77 -0
  157. package/dist/web/src/nanotdf/models/Policy/PolicyFactory.js +33 -0
  158. package/dist/web/src/nanotdf/models/Policy/RemotePolicy.js +57 -0
  159. package/dist/web/src/nanotdf/models/ResourceLocator.js +206 -0
  160. package/dist/web/src/nanotdf/models/Signature.js +74 -0
  161. package/dist/web/src/nanotdf-crypto/ciphers.js +14 -0
  162. package/dist/web/src/{crypto → nanotdf-crypto}/decrypt.js +1 -1
  163. package/dist/web/src/nanotdf-crypto/digest.js +4 -0
  164. package/dist/web/src/{crypto → nanotdf-crypto}/ecdsaSignature.js +2 -2
  165. package/dist/web/src/{crypto → nanotdf-crypto}/encrypt.js +1 -1
  166. package/dist/web/src/{crypto → nanotdf-crypto}/enums.js +1 -1
  167. package/dist/web/src/nanotdf-crypto/exportCryptoKey.js +17 -0
  168. package/dist/web/src/nanotdf-crypto/generateKeyPair.js +10 -0
  169. package/dist/web/src/nanotdf-crypto/generateRandomNumber.js +9 -0
  170. package/dist/web/src/nanotdf-crypto/index.js +11 -0
  171. package/dist/web/src/{crypto → nanotdf-crypto}/keyAgreement.js +1 -1
  172. package/dist/web/src/{crypto → nanotdf-crypto}/pemPublicToCrypto.js +1 -1
  173. package/dist/web/src/opentdf.js +255 -8
  174. package/dist/web/src/tdf/NanoTDF/NanoTDF.js +35 -0
  175. package/dist/web/src/types/index.js +2 -0
  176. package/dist/web/src/utils.js +2 -2
  177. package/dist/web/tdf3/index.js +3 -4
  178. package/dist/web/tdf3/src/models/key-access.js +4 -4
  179. package/dist/web/tdf3/src/tdf.js +4 -4
  180. package/package.json +6 -1
  181. package/src/nanoclients.ts +406 -0
  182. package/src/nanoindex.ts +4 -0
  183. package/src/nanotdf/Client.ts +425 -0
  184. package/src/nanotdf/NanoTDF.ts +120 -0
  185. package/src/nanotdf/browser-entry.ts +20 -0
  186. package/src/nanotdf/constants.ts +1 -0
  187. package/src/nanotdf/decrypt.ts +19 -0
  188. package/src/nanotdf/encrypt-dataset.ts +51 -0
  189. package/src/nanotdf/encrypt.ts +196 -0
  190. package/src/nanotdf/enum/CipherEnum.ts +10 -0
  191. package/src/nanotdf/enum/CurveNameEnum.ts +12 -0
  192. package/src/nanotdf/enum/EncodingEnum.ts +5 -0
  193. package/src/nanotdf/enum/PolicyTypeEnum.ts +8 -0
  194. package/src/nanotdf/enum/ProtocolEnum.ts +7 -0
  195. package/src/nanotdf/enum/ResourceLocatorIdentifierEnum.ts +8 -0
  196. package/src/nanotdf/helpers/calculateByCurve.ts +26 -0
  197. package/src/nanotdf/helpers/getHkdfSalt.ts +13 -0
  198. package/src/nanotdf/index.ts +10 -0
  199. package/src/nanotdf/interfaces/PolicyInterface.ts +27 -0
  200. package/src/nanotdf/models/Ciphers.ts +67 -0
  201. package/src/nanotdf/models/DefaultParams.ts +24 -0
  202. package/src/nanotdf/models/EcCurves.ts +40 -0
  203. package/src/nanotdf/models/Header.ts +322 -0
  204. package/src/nanotdf/models/Payload.ts +196 -0
  205. package/src/nanotdf/models/Policy/AbstractPolicy.ts +90 -0
  206. package/src/nanotdf/models/Policy/EmbeddedPolicy.ts +101 -0
  207. package/src/nanotdf/models/Policy/PolicyFactory.ts +48 -0
  208. package/src/nanotdf/models/Policy/RemotePolicy.ts +74 -0
  209. package/src/nanotdf/models/ResourceLocator.ts +212 -0
  210. package/src/nanotdf/models/Signature.ts +85 -0
  211. package/src/{crypto → nanotdf-crypto}/ecdsaSignature.ts +1 -1
  212. package/src/opentdf.ts +343 -6
  213. package/src/tdf/NanoTDF/NanoTDF.ts +120 -0
  214. package/src/types/index.ts +55 -0
  215. package/src/utils.ts +1 -1
  216. package/tdf3/index.ts +12 -2
  217. package/tdf3/src/models/key-access.ts +3 -3
  218. package/tdf3/src/tdf.ts +3 -3
  219. package/dist/cjs/src/crypto/exportCryptoKey.js +0 -20
  220. package/dist/types/src/crypto/ciphers.d.ts.map +0 -1
  221. package/dist/types/src/crypto/decrypt.d.ts.map +0 -1
  222. package/dist/types/src/crypto/digest.d.ts.map +0 -1
  223. package/dist/types/src/crypto/ecdsaSignature.d.ts.map +0 -1
  224. package/dist/types/src/crypto/encrypt.d.ts.map +0 -1
  225. package/dist/types/src/crypto/enums.d.ts.map +0 -1
  226. package/dist/types/src/crypto/exportCryptoKey.d.ts.map +0 -1
  227. package/dist/types/src/crypto/generateKeyPair.d.ts.map +0 -1
  228. package/dist/types/src/crypto/generateRandomNumber.d.ts.map +0 -1
  229. package/dist/types/src/crypto/index.d.ts.map +0 -1
  230. package/dist/types/src/crypto/keyAgreement.d.ts.map +0 -1
  231. package/dist/types/src/crypto/pemPublicToCrypto.d.ts.map +0 -1
  232. package/dist/web/src/crypto/ciphers.js +0 -14
  233. package/dist/web/src/crypto/digest.js +0 -4
  234. package/dist/web/src/crypto/exportCryptoKey.js +0 -17
  235. package/dist/web/src/crypto/generateKeyPair.js +0 -10
  236. package/dist/web/src/crypto/generateRandomNumber.js +0 -9
  237. package/dist/web/src/crypto/index.js +0 -11
  238. /package/dist/types/src/{crypto → nanotdf-crypto}/ciphers.d.ts +0 -0
  239. /package/dist/types/src/{crypto → nanotdf-crypto}/decrypt.d.ts +0 -0
  240. /package/dist/types/src/{crypto → nanotdf-crypto}/digest.d.ts +0 -0
  241. /package/dist/types/src/{crypto → nanotdf-crypto}/ecdsaSignature.d.ts +0 -0
  242. /package/dist/types/src/{crypto → nanotdf-crypto}/encrypt.d.ts +0 -0
  243. /package/dist/types/src/{crypto → nanotdf-crypto}/enums.d.ts +0 -0
  244. /package/dist/types/src/{crypto → nanotdf-crypto}/exportCryptoKey.d.ts +0 -0
  245. /package/dist/types/src/{crypto → nanotdf-crypto}/generateKeyPair.d.ts +0 -0
  246. /package/dist/types/src/{crypto → nanotdf-crypto}/generateRandomNumber.d.ts +0 -0
  247. /package/dist/types/src/{crypto → nanotdf-crypto}/index.d.ts +0 -0
  248. /package/dist/types/src/{crypto → nanotdf-crypto}/keyAgreement.d.ts +0 -0
  249. /package/dist/types/src/{crypto → nanotdf-crypto}/pemPublicToCrypto.d.ts +0 -0
  250. /package/src/{crypto → nanotdf-crypto}/ciphers.ts +0 -0
  251. /package/src/{crypto → nanotdf-crypto}/decrypt.ts +0 -0
  252. /package/src/{crypto → nanotdf-crypto}/digest.ts +0 -0
  253. /package/src/{crypto → nanotdf-crypto}/encrypt.ts +0 -0
  254. /package/src/{crypto → nanotdf-crypto}/enums.ts +0 -0
  255. /package/src/{crypto → nanotdf-crypto}/exportCryptoKey.ts +0 -0
  256. /package/src/{crypto → nanotdf-crypto}/generateKeyPair.ts +0 -0
  257. /package/src/{crypto → nanotdf-crypto}/generateRandomNumber.ts +0 -0
  258. /package/src/{crypto → nanotdf-crypto}/index.ts +0 -0
  259. /package/src/{crypto → nanotdf-crypto}/keyAgreement.ts +0 -0
  260. /package/src/{crypto → nanotdf-crypto}/pemPublicToCrypto.ts +0 -0
@@ -0,0 +1,62 @@
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 AbstractPolicy_js_1 = __importDefault(require("./AbstractPolicy.js"));
7
+ const ResourceLocator_js_1 = __importDefault(require("../ResourceLocator.js"));
8
+ const PolicyTypeEnum_js_1 = __importDefault(require("../../enum/PolicyTypeEnum.js"));
9
+ /**
10
+ * Set remote policy body
11
+ *
12
+ * If the policy type is set to use a Remote Policy, then the Resource Locator object described in Section 3.4.1 is
13
+ * used to describe the remote policy.
14
+ */
15
+ class RemotePolicy extends AbstractPolicy_js_1.default {
16
+ static parse(buff, useEcdsaBinding) {
17
+ let offset = 0;
18
+ const resource = ResourceLocator_js_1.default.parse(buff);
19
+ offset += resource.offset;
20
+ const { binding, newOffset: bindingOffset } = this.parseBinding(buff, useEcdsaBinding, offset);
21
+ offset = bindingOffset;
22
+ return {
23
+ policy: new RemotePolicy(PolicyTypeEnum_js_1.default.Remote, binding, resource),
24
+ offset,
25
+ };
26
+ }
27
+ constructor(type, binding, resource) {
28
+ super(type, binding);
29
+ this.type = PolicyTypeEnum_js_1.default.Remote;
30
+ this.type = PolicyTypeEnum_js_1.default.Remote;
31
+ this.remotePolicy = resource;
32
+ }
33
+ /**
34
+ * Length of policy
35
+ *
36
+ * @returns { number } length
37
+ */
38
+ getLength() {
39
+ return (
40
+ // Type length
41
+ 1 +
42
+ // Resource locator length
43
+ this.remotePolicy.length +
44
+ // Binding length
45
+ this.binding.length);
46
+ }
47
+ /**
48
+ * Return the content of the policy
49
+ */
50
+ toBuffer() {
51
+ const target = new Uint8Array(this.getLength());
52
+ target.set([PolicyTypeEnum_js_1.default.Remote], 0);
53
+ // Write the remote policy location
54
+ const resourceLocatorAsBuf = this.remotePolicy.toBuffer();
55
+ target.set(resourceLocatorAsBuf, 1);
56
+ // Write the binding.
57
+ target.set(this.binding, resourceLocatorAsBuf.length + 1);
58
+ return target;
59
+ }
60
+ }
61
+ exports.default = RemotePolicy;
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVtb3RlUG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYvbW9kZWxzL1BvbGljeS9SZW1vdGVQb2xpY3kudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0RUFBaUQ7QUFDakQsK0VBQW9EO0FBRXBELHFGQUEwRDtBQUUxRDs7Ozs7R0FLRztBQUNILE1BQU0sWUFBYSxTQUFRLDJCQUFjO0lBSXZDLE1BQU0sQ0FBVSxLQUFLLENBQ25CLElBQWdCLEVBQ2hCLGVBQXdCO1FBRXhCLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNmLE1BQU0sUUFBUSxHQUFHLDRCQUFlLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdDLE1BQU0sSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDO1FBRTFCLE1BQU0sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUMvRixNQUFNLEdBQUcsYUFBYSxDQUFDO1FBRXZCLE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBSSxZQUFZLENBQUMsMkJBQWMsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQztZQUNsRSxNQUFNO1NBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZLElBQW9CLEVBQUUsT0FBbUIsRUFBRSxRQUF5QjtRQUM5RSxLQUFLLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBckJMLFNBQUksR0FBbUIsMkJBQWMsQ0FBQyxNQUFNLENBQUM7UUFzQjdELElBQUksQ0FBQyxJQUFJLEdBQUcsMkJBQWMsQ0FBQyxNQUFNLENBQUM7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDTSxTQUFTO1FBQ2hCLE9BQU87UUFDTCxjQUFjO1FBQ2QsQ0FBQztZQUNELDBCQUEwQjtZQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU07WUFDeEIsaUJBQWlCO1lBQ2pCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUNwQixDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ00sUUFBUTtRQUNmLE1BQU0sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBRWhELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQywyQkFBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXZDLG1DQUFtQztRQUNuQyxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVwQyxxQkFBcUI7UUFDckIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLG9CQUFvQixDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUUxRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0Y7QUFFRCxrQkFBZSxZQUFZLENBQUMifQ==
@@ -0,0 +1,211 @@
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 errors_js_1 = require("../../errors.js");
7
+ const ProtocolEnum_js_1 = __importDefault(require("../enum/ProtocolEnum.js"));
8
+ const ResourceLocatorIdentifierEnum_js_1 = __importDefault(require("../enum/ResourceLocatorIdentifierEnum.js"));
9
+ /**
10
+ *
11
+ * The Resource Locator is a way for the nanotdf to represent references to external resources in as succinct a format
12
+ * as possible.
13
+ *
14
+ * | Section | Minimum Length (B) | Maximum Length (B) |
15
+ * |---------------|--------------------|--------------------|
16
+ * | Protocol Enum | 1 | 1 |
17
+ * | Body Length | 1 | 1 |
18
+ * | Body | 1 | 255 |
19
+ * | Identifier | 0 | n |
20
+ *
21
+ * @link https://github.com/virtru/nanotdf/blob/master/spec/index.md#3312-kas
22
+ * @link https://github.com/virtru/nanotdf/blob/master/spec/index.md#341-resource-locator
23
+ */
24
+ class ResourceLocator {
25
+ constructor(protocol, lengthOfBody, body, offset, id, idType = ResourceLocatorIdentifierEnum_js_1.default.None) {
26
+ this.protocol = protocol;
27
+ this.lengthOfBody = lengthOfBody;
28
+ this.body = body;
29
+ this.offset = offset;
30
+ this.id = id;
31
+ this.idType = idType;
32
+ }
33
+ /**
34
+ * Construct a new URL or URL + identifier pair, for use with NanoTDF envelopes.
35
+ * @param url The URL to encrypt; `http` and `https` schemes are supported
36
+ * @param identifier An optional identifier.
37
+ * For KAS URLs, this is usually a public key identifier (kid). Limit 32 characters
38
+ * @returns a value representing the URL and identifier, if present.
39
+ * This method throws an Error if the URL is invalid or of the wrong schema,
40
+ * or if the identifier is an unsupported value.
41
+ */
42
+ static fromURL(url, identifier) {
43
+ const [protocolStr, body] = url.split('://');
44
+ let protocol;
45
+ // Validate and set protocol identifier byte
46
+ switch (protocolStr.toLowerCase()) {
47
+ case 'http':
48
+ protocol = ProtocolEnum_js_1.default.Http;
49
+ break;
50
+ case 'https':
51
+ protocol = ProtocolEnum_js_1.default.Https;
52
+ break;
53
+ default:
54
+ throw new errors_js_1.ConfigurationError(`resource locator protocol [${protocolStr}] unsupported`);
55
+ }
56
+ // Set identifier padded length and protocol identifier byte
57
+ const identifierType = (() => {
58
+ if (!identifier) {
59
+ return ResourceLocatorIdentifierEnum_js_1.default.None;
60
+ }
61
+ const identifierLength = new TextEncoder().encode(identifier).length;
62
+ if (identifierLength <= 2) {
63
+ return ResourceLocatorIdentifierEnum_js_1.default.TwoBytes;
64
+ }
65
+ else if (identifierLength <= 8) {
66
+ return ResourceLocatorIdentifierEnum_js_1.default.EightBytes;
67
+ }
68
+ else if (identifierLength <= 32) {
69
+ return ResourceLocatorIdentifierEnum_js_1.default.ThirtyTwoBytes;
70
+ }
71
+ throw new errors_js_1.ConfigurationError(`unsupported identifier length: ${identifier.length}`);
72
+ })();
73
+ // Create buffer to hold protocol, body length, body, and identifier
74
+ const lengthOfBody = new TextEncoder().encode(body).length;
75
+ if (lengthOfBody == 0) {
76
+ throw new errors_js_1.ConfigurationError('url body empty');
77
+ }
78
+ const identifierLength = identifierType.valueOf();
79
+ const offset = ResourceLocator.BODY_OFFSET + lengthOfBody + identifierLength;
80
+ return new ResourceLocator(protocol, lengthOfBody, body, offset, identifier, identifierType);
81
+ }
82
+ static parse(buff) {
83
+ // Protocol
84
+ const protocolAndIdentifierType = buff[ResourceLocator.PROTOCOL_OFFSET];
85
+ // Length of body
86
+ const lengthOfBody = buff[ResourceLocator.LENGTH_OFFSET];
87
+ if (lengthOfBody == 0) {
88
+ throw new errors_js_1.InvalidFileError('url body empty');
89
+ }
90
+ // Body as utf8 string
91
+ const decoder = new TextDecoder();
92
+ let offset = ResourceLocator.BODY_OFFSET + lengthOfBody;
93
+ if (offset > buff.length) {
94
+ throw new errors_js_1.InvalidFileError('url parser: out of bounds error');
95
+ }
96
+ const body = decoder.decode(buff.subarray(ResourceLocator.BODY_OFFSET, offset));
97
+ const protocol = protocolAndIdentifierType & 0xf;
98
+ switch (protocol) {
99
+ case ProtocolEnum_js_1.default.Http:
100
+ case ProtocolEnum_js_1.default.Https:
101
+ break;
102
+ default:
103
+ throw new errors_js_1.InvalidFileError(`url parser: unsupported protocol type [${protocol}]`);
104
+ }
105
+ // identifier
106
+ const identifierTypeNibble = protocolAndIdentifierType & 0xf0;
107
+ let identifierType = ResourceLocatorIdentifierEnum_js_1.default.None;
108
+ if (identifierTypeNibble === ResourceLocator.IDENTIFIER_2_BYTE) {
109
+ identifierType = ResourceLocatorIdentifierEnum_js_1.default.TwoBytes;
110
+ }
111
+ else if (identifierTypeNibble === ResourceLocator.IDENTIFIER_8_BYTE) {
112
+ identifierType = ResourceLocatorIdentifierEnum_js_1.default.EightBytes;
113
+ }
114
+ else if (identifierTypeNibble === ResourceLocator.IDENTIFIER_32_BYTE) {
115
+ identifierType = ResourceLocatorIdentifierEnum_js_1.default.ThirtyTwoBytes;
116
+ }
117
+ else if (identifierTypeNibble !== ResourceLocator.IDENTIFIER_0_BYTE) {
118
+ throw new errors_js_1.InvalidFileError(`url parser: unsupported fragment type [${identifierTypeNibble}]`);
119
+ }
120
+ let identifier = undefined;
121
+ switch (identifierType) {
122
+ case ResourceLocatorIdentifierEnum_js_1.default.None:
123
+ // noop
124
+ break;
125
+ case ResourceLocatorIdentifierEnum_js_1.default.TwoBytes:
126
+ case ResourceLocatorIdentifierEnum_js_1.default.EightBytes:
127
+ case ResourceLocatorIdentifierEnum_js_1.default.ThirtyTwoBytes: {
128
+ const kidStart = offset;
129
+ offset = kidStart + identifierType.valueOf();
130
+ if (offset > buff.length) {
131
+ throw new errors_js_1.InvalidFileError('url parser: out of bounds error');
132
+ }
133
+ const kidSubarray = buff.subarray(kidStart, offset);
134
+ // Remove padding (assuming the padding is null bytes, 0x00)
135
+ const zeroIndex = kidSubarray.indexOf(0);
136
+ if (zeroIndex >= 0) {
137
+ const trimmedSubarray = kidSubarray.subarray(0, zeroIndex);
138
+ identifier = decoder.decode(trimmedSubarray);
139
+ }
140
+ else {
141
+ identifier = decoder.decode(kidSubarray);
142
+ }
143
+ break;
144
+ }
145
+ }
146
+ return new ResourceLocator(protocol, lengthOfBody, body, offset, identifier, identifierType);
147
+ }
148
+ /**
149
+ * Length
150
+ *
151
+ * @returns { number } Length of resource locator
152
+ */
153
+ get length() {
154
+ return this.offset;
155
+ }
156
+ get url() {
157
+ switch (this.protocol) {
158
+ case ProtocolEnum_js_1.default.Http:
159
+ return 'http://' + this.body;
160
+ case ProtocolEnum_js_1.default.Https:
161
+ return 'https://' + this.body;
162
+ default:
163
+ throw new errors_js_1.ConfigurationError(`resource locator protocol unsupported [${this.protocol}]`);
164
+ }
165
+ }
166
+ /**
167
+ * Return the contents of the Resource Locator in buffer
168
+ */
169
+ toBuffer() {
170
+ const target = new Uint8Array(ResourceLocator.BODY_OFFSET + this.body.length + this.idType);
171
+ let idTypeNibble = 0;
172
+ switch (this.idType) {
173
+ case ResourceLocatorIdentifierEnum_js_1.default.TwoBytes:
174
+ idTypeNibble = ResourceLocator.IDENTIFIER_2_BYTE;
175
+ break;
176
+ case ResourceLocatorIdentifierEnum_js_1.default.EightBytes:
177
+ idTypeNibble = ResourceLocator.IDENTIFIER_8_BYTE;
178
+ break;
179
+ case ResourceLocatorIdentifierEnum_js_1.default.ThirtyTwoBytes:
180
+ idTypeNibble = ResourceLocator.IDENTIFIER_32_BYTE;
181
+ break;
182
+ }
183
+ target.set([this.protocol | idTypeNibble], ResourceLocator.PROTOCOL_OFFSET);
184
+ target.set([this.lengthOfBody], ResourceLocator.LENGTH_OFFSET);
185
+ target.set(new TextEncoder().encode(this.body), ResourceLocator.BODY_OFFSET);
186
+ if (this.id) {
187
+ target.set(new TextEncoder().encode(this.id), ResourceLocator.BODY_OFFSET + this.body.length);
188
+ }
189
+ return target;
190
+ }
191
+ /**
192
+ * Get Identifier
193
+ *
194
+ * Returns the identifier of the ResourceLocator or an empty string if no identifier is present.
195
+ * @returns { string } Identifier of the resource locator.
196
+ */
197
+ get identifier() {
198
+ return this.id ?? '';
199
+ }
200
+ }
201
+ ResourceLocator.PROTOCOL_OFFSET = 0;
202
+ ResourceLocator.PROTOCOL_LENGTH = 1;
203
+ ResourceLocator.LENGTH_OFFSET = 1;
204
+ ResourceLocator.LENGTH_LENGTH = 1;
205
+ ResourceLocator.BODY_OFFSET = 2;
206
+ ResourceLocator.IDENTIFIER_0_BYTE = 0 << 4; // 0
207
+ ResourceLocator.IDENTIFIER_2_BYTE = 1 << 4; // 16
208
+ ResourceLocator.IDENTIFIER_8_BYTE = 2 << 4; // 32
209
+ ResourceLocator.IDENTIFIER_32_BYTE = 3 << 4; // 48
210
+ exports.default = ResourceLocator;
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2VMb2NhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYvbW9kZWxzL1Jlc291cmNlTG9jYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtDQUF1RTtBQUN2RSw4RUFBbUQ7QUFDbkQsZ0hBQXFGO0FBRXJGOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBcUIsZUFBZTtJQVdsQyxZQUNXLFFBQXNCLEVBQ3RCLFlBQW9CLEVBQ3BCLElBQVksRUFDWixNQUFjLEVBQ2QsRUFBVyxFQUNYLFNBQXdDLDBDQUE2QixDQUFDLElBQUk7UUFMMUUsYUFBUSxHQUFSLFFBQVEsQ0FBYztRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBUTtRQUNwQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ1osV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLE9BQUUsR0FBRixFQUFFLENBQVM7UUFDWCxXQUFNLEdBQU4sTUFBTSxDQUFvRTtJQUNsRixDQUFDO0lBRUo7Ozs7Ozs7O09BUUc7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQVcsRUFBRSxVQUFtQjtRQUM3QyxNQUFNLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0MsSUFBSSxRQUFzQixDQUFDO1FBRTNCLDRDQUE0QztRQUM1QyxRQUFRLFdBQVcsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ2xDLEtBQUssTUFBTTtnQkFDVCxRQUFRLEdBQUcseUJBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQzdCLE1BQU07WUFDUixLQUFLLE9BQU87Z0JBQ1YsUUFBUSxHQUFHLHlCQUFZLENBQUMsS0FBSyxDQUFDO2dCQUM5QixNQUFNO1lBQ1I7Z0JBQ0UsTUFBTSxJQUFJLDhCQUFrQixDQUFDLDhCQUE4QixXQUFXLGVBQWUsQ0FBQyxDQUFDO1FBQzNGLENBQUM7UUFFRCw0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
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const calculateByCurve_js_1 = require("../helpers/calculateByCurve.js");
4
+ const errors_js_1 = require("../../errors.js");
5
+ /**
6
+ * NanoTDF Signature
7
+ *
8
+ * The signature section is an optional section that contains an ECDSA signature used to cryptographically bind the Header and Payload to a creator of the nanotdf. The key used for signing is the private key of the creator of the nanotdf. The ECC Params used for the signature are described in Section 3.3.1.4.2. The private key used for this signature is distinctly different than the ephemeral private key. This is a persistent key belonging to an individual, entity, or device that creates nanotdfs. The signature is used to authenticate the entire nanotdf and contains both the public key related to the creators private key and the resulting signature. The structure of this section:
9
+ *
10
+ * | Section | Minimum Length (B) | Maximum Length (B) |
11
+ * |------------|--------------------|--------------------|
12
+ * | Public Key | 33 | 67 |
13
+ * | Signature | 64 | 132 |
14
+ *
15
+ * @link https://github.com/virtru/nanotdf/blob/master/spec/index.md#333-signature
16
+ */
17
+ class Signature {
18
+ static parse(header, buff) {
19
+ let offset = 0;
20
+ /**
21
+ * Parse the public key
22
+ *
23
+ * This section contains the compressed public key of the private key used to sign the message.
24
+ */
25
+ // TODO: Resolve where offset is missing 1 byte
26
+ const publicKeyLength = (0, calculateByCurve_js_1.lengthOfPublicKey)(header.signatureCurveName) + 1;
27
+ const publicKey = buff.subarray(offset, offset + publicKeyLength);
28
+ offset += publicKeyLength;
29
+ /**
30
+ * Parse signature
31
+ *
32
+ * This section contains the encoded `r` and `s` values of the ECDSA signature.
33
+ *
34
+ * ECDSA signatures are big endian encodings of the `r` and `s` values of an ECDSA signature.The length of `r` and `s`
35
+ * values is determined by the ECC Mode used for the signature. The encoding for the signature is the big endian
36
+ * encodings of R and S concatenated to each other. For example, `r = 1` and `s = 2` for an ECDSA signature of a
37
+ * ecp256k1 key would be (line breaks and spaces are added for easier visualization):
38
+ *
39
+ * ```
40
+ * 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
41
+ * 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01
42
+ * 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
43
+ * 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02
44
+ * ```
45
+ *
46
+ * @link https://github.com/virtru/nanotdf/blob/master/spec/index.md#52-ecdsa-signature-encoding
47
+ */
48
+ const signatureLength = (0, calculateByCurve_js_1.lengthOfSignature)(header.signatureCurveName);
49
+ const signature = buff.subarray(offset, offset + signatureLength);
50
+ offset += signatureLength;
51
+ return { signature: new Signature(publicKey, signature), offset };
52
+ }
53
+ constructor(publicKey, signature) {
54
+ this.publicKey = publicKey;
55
+ this.signature = signature;
56
+ }
57
+ /**
58
+ * Length
59
+ *
60
+ * @returns { number } Length of signature
61
+ */
62
+ get length() {
63
+ return this.publicKey.length + this.signature.length;
64
+ }
65
+ /**
66
+ * Copy the contents of the signature to buffer
67
+ */
68
+ copyToBuffer(target) {
69
+ if (this.length > target.length) {
70
+ throw new errors_js_1.ConfigurationError('Invalid buffer size to copy signature');
71
+ }
72
+ target.set(this.publicKey, 0);
73
+ target.set(this.signature, this.publicKey.length);
74
+ }
75
+ }
76
+ exports.default = Signature;
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2lnbmF0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYvbW9kZWxzL1NpZ25hdHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLHdFQUFzRjtBQUN0RiwrQ0FBcUQ7QUFFckQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFxQixTQUFTO0lBSTVCLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBYyxFQUFFLElBQWdCO1FBQzNDLElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztRQUVmOzs7O1dBSUc7UUFDSCwrQ0FBK0M7UUFDL0MsTUFBTSxlQUFlLEdBQUcsSUFBQSx1Q0FBaUIsRUFBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLGVBQWUsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sSUFBSSxlQUFlLENBQUM7UUFFMUI7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQWtCRztRQUNILE1BQU0sZUFBZSxHQUFHLElBQUEsdUNBQWlCLEVBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckUsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLGVBQWUsQ0FBQyxDQUFDO1FBQ2xFLE1BQU0sSUFBSSxlQUFlLENBQUM7UUFFMUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUM7SUFDcEUsQ0FBQztJQUVELFlBQVksU0FBcUIsRUFBRSxTQUFxQjtRQUN0RCxJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksTUFBTTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUM7SUFDdkQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWSxDQUFDLE1BQWtCO1FBQzdCLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLDhCQUFrQixDQUFDLHVDQUF1QyxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5QixNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRCxDQUFDO0NBQ0Y7QUFwRUQsNEJBb0VDIn0=
@@ -14,4 +14,4 @@ for (const cipherKey in Ciphers) {
14
14
  cipherKeys.push(cipherKey);
15
15
  }
16
16
  exports.supportedCiphers = cipherKeys;
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lwaGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jcnlwdG8vY2lwaGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFZLE9BRVg7QUFGRCxXQUFZLE9BQU87SUFDakIsNkJBQWtCLENBQUE7QUFDcEIsQ0FBQyxFQUZXLE9BQU8sdUJBQVAsT0FBTyxRQUVsQjtBQUVELElBQVksZ0JBRVg7QUFGRCxXQUFZLGdCQUFnQjtJQUMxQiw2REFBWSxDQUFBO0FBQ2QsQ0FBQyxFQUZXLGdCQUFnQixnQ0FBaEIsZ0JBQWdCLFFBRTNCO0FBRUQsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO0FBQ3RCLEtBQUssTUFBTSxTQUFTLElBQUksT0FBTyxFQUFFLENBQUM7SUFDaEMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBQ1ksUUFBQSxnQkFBZ0IsR0FBRyxVQUFVLENBQUMifQ==
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2lwaGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmLWNyeXB0by9jaXBoZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQVksT0FFWDtBQUZELFdBQVksT0FBTztJQUNqQiw2QkFBa0IsQ0FBQTtBQUNwQixDQUFDLEVBRlcsT0FBTyx1QkFBUCxPQUFPLFFBRWxCO0FBRUQsSUFBWSxnQkFFWDtBQUZELFdBQVksZ0JBQWdCO0lBQzFCLDZEQUFZLENBQUE7QUFDZCxDQUFDLEVBRlcsZ0JBQWdCLGdDQUFoQixnQkFBZ0IsUUFFM0I7QUFFRCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFDdEIsS0FBSyxNQUFNLFNBQVMsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUNoQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFDWSxRQUFBLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyJ9
@@ -21,4 +21,4 @@ async function decrypt(key, ciphertext, iv, tagLength) {
21
21
  tagLength: tagLength || ciphers_js_1.CipherTagLengths.AesGcm,
22
22
  }, key, ciphertext);
23
23
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jcnlwdG8vZGVjcnlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWNBLDBCQWVDO0FBN0JELDZDQUF5RDtBQUV6RDs7Ozs7Ozs7Ozs7R0FXRztBQUNZLEtBQUssVUFBVSxPQUFPLENBQ25DLEdBQWMsRUFDZCxVQUFzQixFQUN0QixFQUFjLEVBQ2QsU0FBa0I7SUFFbEIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FDMUI7UUFDRSxJQUFJLEVBQUUsb0JBQU8sQ0FBQyxNQUFNO1FBQ3BCLEVBQUU7UUFDRixTQUFTLEVBQUUsU0FBUyxJQUFJLDZCQUFnQixDQUFDLE1BQU07S0FDaEQsRUFDRCxHQUFHLEVBQ0gsVUFBVSxDQUNYLENBQUM7QUFDSixDQUFDIn0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmLWNyeXB0by9kZWNyeXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBY0EsMEJBZUM7QUE3QkQsNkNBQXlEO0FBRXpEOzs7Ozs7Ozs7OztHQVdHO0FBQ1ksS0FBSyxVQUFVLE9BQU8sQ0FDbkMsR0FBYyxFQUNkLFVBQXNCLEVBQ3RCLEVBQWMsRUFDZCxTQUFrQjtJQUVsQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUMxQjtRQUNFLElBQUksRUFBRSxvQkFBTyxDQUFDLE1BQU07UUFDcEIsRUFBRTtRQUNGLFNBQVMsRUFBRSxTQUFTLElBQUksNkJBQWdCLENBQUMsTUFBTTtLQUNoRCxFQUNELEdBQUcsRUFDSCxVQUFVLENBQ1gsQ0FBQztBQUNKLENBQUMifQ==
@@ -4,4 +4,4 @@ exports.default = digest;
4
4
  function digest(hashType, data) {
5
5
  return crypto.subtle.digest(hashType, data);
6
6
  }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NyeXB0by9kaWdlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5QkFLQztBQUxELFNBQXdCLE1BQU0sQ0FDNUIsUUFBNkIsRUFDN0IsSUFBcUI7SUFFckIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDOUMsQ0FBQyJ9
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYtY3J5cHRvL2RpZ2VzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlCQUtDO0FBTEQsU0FBd0IsTUFBTSxDQUM1QixRQUE2QixFQUM3QixJQUFxQjtJQUVyQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUM5QyxDQUFDIn0=
@@ -4,7 +4,7 @@ exports.computeECDSASig = computeECDSASig;
4
4
  exports.verifyECDSASignature = verifyECDSASignature;
5
5
  exports.extractRSValuesFromSignature = extractRSValuesFromSignature;
6
6
  const errors_js_1 = require("../errors.js");
7
- const enums_js_1 = require("./enums.js");
7
+ const enums_js_1 = require("./../nanotdf-crypto/enums.js");
8
8
  /**
9
9
  * Computes an ECDSA signature for the given data using the provided private key.
10
10
  *
@@ -79,4 +79,4 @@ function concatAndCompareUint8Arrays(arr1, arr2, arr3) {
79
79
  }
80
80
  return true;
81
81
  }
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2FTaWduYXR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3J5cHRvL2VjZHNhU2lnbmF0dXJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBYUEsMENBYUM7QUFhRCxvREFlQztBQVNELG9FQWtCQztBQWpGRCw0Q0FBa0Q7QUFDbEQseUNBQTJDO0FBRTNDOzs7Ozs7Ozs7R0FTRztBQUNJLEtBQUssVUFBVSxlQUFlLENBQ25DLFVBQXFCLEVBQ3JCLElBQWdCO0lBRWhCLE1BQU0sU0FBUyxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQ3hDO1FBQ0UsSUFBSSxFQUFFLHdCQUFhLENBQUMsS0FBSztRQUN6QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0tBQzFCLEVBQ0QsVUFBVSxFQUNWLElBQUksQ0FDTCxDQUFDO0lBQ0YsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSSxLQUFLLFVBQVUsb0JBQW9CLENBQ3hDLFNBQW9CLEVBQ3BCLFNBQXFCLEVBQ3JCLElBQWdCO0lBRWhCLE1BQU0sT0FBTyxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQ3hDO1FBQ0UsSUFBSSxFQUFFLHdCQUFhLENBQUMsS0FBSztRQUN6QixJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0tBQzFCLEVBQ0QsU0FBUyxFQUNULFNBQVMsRUFDVCxJQUFJLENBQ0wsQ0FBQztJQUNGLE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQiw0QkFBNEIsQ0FBQyxjQUEwQjtJQUlyRSw4Q0FBOEM7SUFDOUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFaEQscUJBQXFCO0lBQ3JCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDakUsTUFBTSxJQUFJLDhCQUFrQixDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELE9BQU87UUFDTCxDQUFDLEVBQUUsTUFBTTtRQUNULENBQUMsRUFBRSxNQUFNO0tBQ1YsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLDJCQUEyQixDQUNsQyxJQUFnQixFQUNoQixJQUFnQixFQUNoQixJQUFnQjtJQUVoQixvRUFBb0U7SUFDcEUsTUFBTSxZQUFZLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFL0Qsd0NBQXdDO0lBQ3hDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzFCLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVwQyxvQ0FBb0M7SUFDcEMsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN4QyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUM3QyxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIn0=
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNkc2FTaWduYXR1cmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmFub3RkZi1jcnlwdG8vZWNkc2FTaWduYXR1cmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFhQSwwQ0FhQztBQWFELG9EQWVDO0FBU0Qsb0VBa0JDO0FBakZELDRDQUFrRDtBQUNsRCwyREFBNkQ7QUFFN0Q7Ozs7Ozs7OztHQVNHO0FBQ0ksS0FBSyxVQUFVLGVBQWUsQ0FDbkMsVUFBcUIsRUFDckIsSUFBZ0I7SUFFaEIsTUFBTSxTQUFTLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FDeEM7UUFDRSxJQUFJLEVBQUUsd0JBQWEsQ0FBQyxLQUFLO1FBQ3pCLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7S0FDMUIsRUFDRCxVQUFVLEVBQ1YsSUFBSSxDQUNMLENBQUM7SUFDRixPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNJLEtBQUssVUFBVSxvQkFBb0IsQ0FDeEMsU0FBb0IsRUFDcEIsU0FBcUIsRUFDckIsSUFBZ0I7SUFFaEIsTUFBTSxPQUFPLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FDeEM7UUFDRSxJQUFJLEVBQUUsd0JBQWEsQ0FBQyxLQUFLO1FBQ3pCLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7S0FDMUIsRUFDRCxTQUFTLEVBQ1QsU0FBUyxFQUNULElBQUksQ0FDTCxDQUFDO0lBQ0YsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLDRCQUE0QixDQUFDLGNBQTBCO0lBSXJFLDhDQUE4QztJQUM5QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekQsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDbkQsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVoRCxxQkFBcUI7SUFDckIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUNqRSxNQUFNLElBQUksOEJBQWtCLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsT0FBTztRQUNMLENBQUMsRUFBRSxNQUFNO1FBQ1QsQ0FBQyxFQUFFLE1BQU07S0FDVixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsMkJBQTJCLENBQ2xDLElBQWdCLEVBQ2hCLElBQWdCLEVBQ2hCLElBQWdCO0lBRWhCLG9FQUFvRTtJQUNwRSxNQUFNLFlBQVksR0FBRyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUUvRCx3Q0FBd0M7SUFDeEMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXBDLG9DQUFvQztJQUNwQyxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3hDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELHVCQUF1QjtJQUN2QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQzdDLElBQUksWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMifQ==
@@ -21,4 +21,4 @@ async function encrypt(key, plaintext, iv, tagLength) {
21
21
  tagLength: tagLength || ciphers_js_1.CipherTagLengths.AesGcm,
22
22
  }, key, plaintext);
23
23
  }
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jcnlwdG8vZW5jcnlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWNBLDBCQWVDO0FBN0JELDZDQUF5RDtBQUV6RDs7Ozs7Ozs7Ozs7R0FXRztBQUNZLEtBQUssVUFBVSxPQUFPLENBQ25DLEdBQWMsRUFDZCxTQUFxQixFQUNyQixFQUFjLEVBQ2QsU0FBa0I7SUFFbEIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FDMUI7UUFDRSxJQUFJLEVBQUUsb0JBQU8sQ0FBQyxNQUFNO1FBQ3BCLEVBQUU7UUFDRixTQUFTLEVBQUUsU0FBUyxJQUFJLDZCQUFnQixDQUFDLE1BQU07S0FDaEQsRUFDRCxHQUFHLEVBQ0gsU0FBUyxDQUNWLENBQUM7QUFDSixDQUFDIn0=
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uYW5vdGRmLWNyeXB0by9lbmNyeXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBY0EsMEJBZUM7QUE3QkQsNkNBQXlEO0FBRXpEOzs7Ozs7Ozs7OztHQVdHO0FBQ1ksS0FBSyxVQUFVLE9BQU8sQ0FDbkMsR0FBYyxFQUNkLFNBQXFCLEVBQ3JCLEVBQWMsRUFDZCxTQUFrQjtJQUVsQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUMxQjtRQUNFLElBQUksRUFBRSxvQkFBTyxDQUFDLE1BQU07UUFDcEIsRUFBRTtRQUNGLFNBQVMsRUFBRSxTQUFTLElBQUksNkJBQWdCLENBQUMsTUFBTTtLQUNoRCxFQUNELEdBQUcsRUFDSCxTQUFTLENBQ1YsQ0FBQztBQUNKLENBQUMifQ==
@@ -49,4 +49,4 @@ var KeyUsageType;
49
49
  KeyUsageType["UnwrapKey"] = "unwrapKey";
50
50
  KeyUsageType["WrapKey"] = "wrapKey";
51
51
  })(KeyUsageType || (exports.KeyUsageType = KeyUsageType = {}));
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3J5cHRvL2VudW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQVksYUFPWDtBQVBELFdBQVksYUFBYTtJQUN2Qiw4QkFBYSxDQUFBO0lBQ2IsZ0NBQWUsQ0FBQTtJQUNmLGdDQUFlLENBQUE7SUFDZiw4QkFBYSxDQUFBO0lBQ2Isc0NBQXFCLENBQUE7SUFDckIsb0NBQW1CLENBQUE7QUFDckIsQ0FBQyxFQVBXLGFBQWEsNkJBQWIsYUFBYSxRQU94QjtBQUVELElBQVksVUFJWDtBQUpELFdBQVksVUFBVTtJQUNwQiw0QkFBYyxDQUFBO0lBQ2QsNEJBQWMsQ0FBQTtJQUNkLDRCQUFjLENBQUE7QUFDaEIsQ0FBQyxFQUpXLFVBQVUsMEJBQVYsVUFBVSxRQUlyQjtBQUVELElBQVksVUFFWDtBQUZELFdBQVksVUFBVTtJQUNwQixnQ0FBa0IsQ0FBQTtBQUNwQixDQUFDLEVBRlcsVUFBVSwwQkFBVixVQUFVLFFBRXJCO0FBRUQsSUFBWSxRQUtYO0FBTEQsV0FBWSxRQUFRO0lBQ2xCLDBCQUFjLENBQUE7SUFDZCw4QkFBa0IsQ0FBQTtJQUNsQiw4QkFBa0IsQ0FBQTtJQUNsQiw4QkFBa0IsQ0FBQTtBQUNwQixDQUFDLEVBTFcsUUFBUSx3QkFBUixRQUFRLFFBS25CO0FBRUQsSUFBWSxTQUlYO0FBSkQsV0FBWSxTQUFTO0lBQ25CLHdCQUFXLENBQUE7SUFDWCw0QkFBZSxDQUFBO0lBQ2YsMEJBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxTQUFTLHlCQUFULFNBQVMsUUFJcEI7QUFFRCxJQUFZLE9BR1g7QUFIRCxXQUFZLE9BQU87SUFDakIsOEJBQW1CLENBQUE7SUFDbkIsNEJBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUhXLE9BQU8sdUJBQVAsT0FBTyxRQUdsQjtBQUVELElBQVksWUFTWDtBQVRELFdBQVksWUFBWTtJQUN0QixtQ0FBbUIsQ0FBQTtJQUNuQixtQ0FBbUIsQ0FBQTtJQUNuQix5Q0FBeUIsQ0FBQTtJQUN6Qix1Q0FBdUIsQ0FBQTtJQUN2QixpQ0FBaUIsQ0FBQTtJQUNqQiw2QkFBYSxDQUFBO0lBQ2IsdUNBQXVCLENBQUE7SUFDdkIsbUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQVRXLFlBQVksNEJBQVosWUFBWSxRQVN2QiJ9
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmFub3RkZi1jcnlwdG8vZW51bXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsSUFBWSxhQU9YO0FBUEQsV0FBWSxhQUFhO0lBQ3ZCLDhCQUFhLENBQUE7SUFDYixnQ0FBZSxDQUFBO0lBQ2YsZ0NBQWUsQ0FBQTtJQUNmLDhCQUFhLENBQUE7SUFDYixzQ0FBcUIsQ0FBQTtJQUNyQixvQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBUFcsYUFBYSw2QkFBYixhQUFhLFFBT3hCO0FBRUQsSUFBWSxVQUlYO0FBSkQsV0FBWSxVQUFVO0lBQ3BCLDRCQUFjLENBQUE7SUFDZCw0QkFBYyxDQUFBO0lBQ2QsNEJBQWMsQ0FBQTtBQUNoQixDQUFDLEVBSlcsVUFBVSwwQkFBVixVQUFVLFFBSXJCO0FBRUQsSUFBWSxVQUVYO0FBRkQsV0FBWSxVQUFVO0lBQ3BCLGdDQUFrQixDQUFBO0FBQ3BCLENBQUMsRUFGVyxVQUFVLDBCQUFWLFVBQVUsUUFFckI7QUFFRCxJQUFZLFFBS1g7QUFMRCxXQUFZLFFBQVE7SUFDbEIsMEJBQWMsQ0FBQTtJQUNkLDhCQUFrQixDQUFBO0lBQ2xCLDhCQUFrQixDQUFBO0lBQ2xCLDhCQUFrQixDQUFBO0FBQ3BCLENBQUMsRUFMVyxRQUFRLHdCQUFSLFFBQVEsUUFLbkI7QUFFRCxJQUFZLFNBSVg7QUFKRCxXQUFZLFNBQVM7SUFDbkIsd0JBQVcsQ0FBQTtJQUNYLDRCQUFlLENBQUE7SUFDZiwwQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQUpXLFNBQVMseUJBQVQsU0FBUyxRQUlwQjtBQUVELElBQVksT0FHWDtBQUhELFdBQVksT0FBTztJQUNqQiw4QkFBbUIsQ0FBQTtJQUNuQiw0QkFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSFcsT0FBTyx1QkFBUCxPQUFPLFFBR2xCO0FBRUQsSUFBWSxZQVNYO0FBVEQsV0FBWSxZQUFZO0lBQ3RCLG1DQUFtQixDQUFBO0lBQ25CLG1DQUFtQixDQUFBO0lBQ25CLHlDQUF5QixDQUFBO0lBQ3pCLHVDQUF1QixDQUFBO0lBQ3ZCLGlDQUFpQixDQUFBO0lBQ2pCLDZCQUFhLENBQUE7SUFDYix1Q0FBdUIsQ0FBQTtJQUN2QixtQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBVFcsWUFBWSw0QkFBWixZQUFZLFFBU3ZCIn0=
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = exportCryptoKey;
4
+ /**
5
+ *
6
+ * Export to PEM format to binary buffer
7
+ * - key {CryptoKey} default: "undefined" CryptoKey generated by WebCrypto API
8
+ */
9
+ async function exportCryptoKey(key) {
10
+ const exportedKey = await crypto.subtle.exportKey('raw', key);
11
+ const keyBuffer = new Uint8Array(exportedKey);
12
+ const len = keyBuffer.byteLength;
13
+ const xPoint = keyBuffer.slice(0, (1 + len) >>> 1); // drop `y`
14
+ xPoint[0] = 0x2 | (keyBuffer[len - 1] & 0x01); // encode sign of `y` in first bit
15
+ // Copy to Arraybuffer
16
+ const compressedPubKeyBuf = new ArrayBuffer(xPoint.byteLength);
17
+ new Uint8Array(compressedPubKeyBuf).set(new Uint8Array(xPoint));
18
+ return compressedPubKeyBuf;
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0Q3J5cHRvS2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYtY3J5cHRvL2V4cG9ydENyeXB0b0tleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUtBLGtDQVdDO0FBaEJEOzs7O0dBSUc7QUFDWSxLQUFLLFVBQVUsZUFBZSxDQUFDLEdBQWM7SUFDMUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDOUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUMsTUFBTSxHQUFHLEdBQUcsU0FBUyxDQUFDLFVBQVUsQ0FBQztJQUNqQyxNQUFNLE1BQU0sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVc7SUFDL0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxrQ0FBa0M7SUFFakYsc0JBQXNCO0lBQ3RCLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9ELElBQUksVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDaEUsT0FBTyxtQkFBbUIsQ0FBQztBQUM3QixDQUFDIn0=
@@ -10,4 +10,4 @@ async function generateKeyPair({ type: name, curve: namedCurve, keyUsages, isExt
10
10
  }) {
11
11
  return crypto.subtle.generateKey({ name, namedCurve }, isExtractable, keyUsages);
12
12
  }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVLZXlQYWlyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NyeXB0by9nZW5lcmF0ZUtleVBhaXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFTQSwwQ0FTQztBQWxCRCx5Q0FBcUU7QUFTOUQsS0FBSyxVQUFVLGVBQWUsQ0FDbkMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGFBQWEsS0FBNkI7SUFDcEYsSUFBSSxFQUFFLHdCQUFhLENBQUMsSUFBSTtJQUN4QixLQUFLLEVBQUUscUJBQVUsQ0FBQyxJQUFJO0lBQ3RCLFNBQVMsRUFBRSxDQUFDLHVCQUFZLENBQUMsVUFBVSxFQUFFLHVCQUFZLENBQUMsU0FBUyxDQUFDO0lBQzVELGFBQWEsRUFBRSxJQUFJO0NBQ3BCO0lBRUQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDbkYsQ0FBQyJ9
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVLZXlQYWlyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYtY3J5cHRvL2dlbmVyYXRlS2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVNBLDBDQVNDO0FBbEJELHlDQUFxRTtBQVM5RCxLQUFLLFVBQVUsZUFBZSxDQUNuQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsYUFBYSxLQUE2QjtJQUNwRixJQUFJLEVBQUUsd0JBQWEsQ0FBQyxJQUFJO0lBQ3hCLEtBQUssRUFBRSxxQkFBVSxDQUFDLElBQUk7SUFDdEIsU0FBUyxFQUFFLENBQUMsdUJBQVksQ0FBQyxVQUFVLEVBQUUsdUJBQVksQ0FBQyxTQUFTLENBQUM7SUFDNUQsYUFBYSxFQUFFLElBQUk7Q0FDcEI7SUFFRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNuRixDQUFDIn0=
@@ -9,4 +9,4 @@ function generateRandomNumber(length) {
9
9
  crypto.getRandomValues(byteArray);
10
10
  return byteArray;
11
11
  }
12
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVSYW5kb21OdW1iZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3J5cHRvL2dlbmVyYXRlUmFuZG9tTnVtYmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0Esb0RBSUM7QUFQRDs7R0FFRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLE1BQWM7SUFDakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNsQyxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIn0=
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVSYW5kb21OdW1iZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmFub3RkZi1jcnlwdG8vZ2VuZXJhdGVSYW5kb21OdW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFHQSxvREFJQztBQVBEOztHQUVHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsTUFBYztJQUNqRCxNQUFNLFNBQVMsR0FBRyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QyxNQUFNLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2xDLE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMifQ==
@@ -57,4 +57,4 @@ var pemPublicToCrypto_js_1 = require("./pemPublicToCrypto.js");
57
57
  Object.defineProperty(exports, "pemPublicToCrypto", { enumerable: true, get: function () { return pemPublicToCrypto_js_1.pemPublicToCrypto; } });
58
58
  Object.defineProperty(exports, "pemCertToCrypto", { enumerable: true, get: function () { return pemPublicToCrypto_js_1.pemCertToCrypto; } });
59
59
  exports.enums = __importStar(require("./enums.js"));
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3J5cHRvL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF1QztBQUE5QixxR0FBQSxPQUFPLE9BQUE7QUFDaEIsMkNBQWtEO0FBQXpDLHNIQUFBLE9BQU8sT0FBVztBQUMzQix5Q0FBZ0Q7QUFBdkMsb0hBQUEsT0FBTyxPQUFVO0FBQzFCLDJDQUFrRDtBQUF6QyxzSEFBQSxPQUFPLE9BQVc7QUFDM0IsMkRBQXVEO0FBQTlDLHFIQUFBLGVBQWUsT0FBQTtBQUN4QixxREFBaUQ7QUFBeEMsK0dBQUEsWUFBWSxPQUFBO0FBQ3JCLDJEQUFrRTtBQUF6RCxzSUFBQSxPQUFPLE9BQW1CO0FBQ25DLHFFQUFpRTtBQUF4RCwrSEFBQSxvQkFBb0IsT0FBQTtBQUM3QiwrREFBNEU7QUFBbkUseUhBQUEsaUJBQWlCLE9BQUE7QUFBRSx1SEFBQSxlQUFlLE9BQUE7QUFDM0Msb0RBQW9DIn0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmFub3RkZi1jcnlwdG8vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXVDO0FBQTlCLHFHQUFBLE9BQU8sT0FBQTtBQUNoQiwyQ0FBa0Q7QUFBekMsc0hBQUEsT0FBTyxPQUFXO0FBQzNCLHlDQUFnRDtBQUF2QyxvSEFBQSxPQUFPLE9BQVU7QUFDMUIsMkNBQWtEO0FBQXpDLHNIQUFBLE9BQU8sT0FBVztBQUMzQiwyREFBdUQ7QUFBOUMscUhBQUEsZUFBZSxPQUFBO0FBQ3hCLHFEQUFpRDtBQUF4QywrR0FBQSxZQUFZLE9BQUE7QUFDckIsMkRBQWtFO0FBQXpELHNJQUFBLE9BQU8sT0FBbUI7QUFDbkMscUVBQWlFO0FBQXhELCtIQUFBLG9CQUFvQixPQUFBO0FBQzdCLCtEQUE0RTtBQUFuRSx5SEFBQSxpQkFBaUIsT0FBQTtBQUFFLHVIQUFBLGVBQWUsT0FBQTtBQUMzQyxvREFBb0MifQ==
@@ -90,4 +90,4 @@ async function keyAgreement(privateKey, publicKey, options = {
90
90
  }, isExtractable, keyUsages);
91
91
  return symmetricKey;
92
92
  }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5QWdyZWVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NyeXB0by9rZXlBZ3JlZW1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0c7O0FBOENILG9DQTRGQztBQXhJRDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBRUgsNENBQWdFO0FBQ2hFLDRDQUFrRDtBQUNsRCx5Q0FBbUc7QUFFbkcsTUFBTSxvQkFBb0IsR0FBRyxXQUFXLENBQUM7QUFhekM7Ozs7OztHQU1HO0FBQ0ksS0FBSyxVQUFVLFlBQVksQ0FDaEMsVUFBcUIsRUFDckIsU0FBb0IsRUFDcEIsVUFBd0M7SUFDdEMsU0FBUyxFQUFFLEdBQUc7SUFDZCxRQUFRLEVBQUUsbUJBQVEsQ0FBQyxNQUFNO0lBQ3pCLFFBQVEsRUFBRSxJQUFJLFVBQVUsRUFBRTtJQUMxQixRQUFRLEVBQUUsSUFBSSxVQUFVLEVBQUU7SUFDMUIsU0FBUyxFQUFFLHFCQUFVLENBQUMsTUFBTTtJQUM1QixTQUFTLEVBQUUsR0FBRztJQUNkLFNBQVMsRUFBRTtRQUNULHVCQUFZLENBQUMsT0FBTztRQUNwQix1QkFBWSxDQUFDLE9BQU87UUFDcEIsdUJBQVksQ0FBQyxTQUFTO1FBQ3RCLHVCQUFZLENBQUMsT0FBTztLQUNyQjtJQUNELGFBQWEsRUFBRSxJQUFJO0NBQ3BCO0lBRUQsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sU0FBUyxHQUFHLElBQUEsNENBQWdDLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxTQUFTLEtBQUssY0FBYyxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLDhCQUFrQixDQUMxQixHQUFHLENBQUMsQ0FBQyxJQUFJLDREQUE0RCxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksR0FBRyxDQUMxRixDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxJQUFJLEtBQUssa0JBQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN4QyxNQUFNLElBQUksOEJBQWtCLENBQzFCLHdFQUF3RSxVQUFVLENBQUMsSUFBSSxHQUFHLENBQzNGLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLGtCQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdEMsTUFBTSxJQUFJLDhCQUFrQixDQUMxQixzRUFBc0UsU0FBUyxDQUFDLElBQUksR0FBRyxDQUN4RixDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sRUFDSixTQUFTLEdBQUcsR0FBRyxFQUNmLFFBQVEsR0FBRyxtQkFBUSxDQUFDLE1BQU0sRUFDMUIsUUFBUSxHQUFHLElBQUksVUFBVSxFQUFFLEVBQzNCLFFBQVEsR0FBRyxJQUFJLFVBQVUsRUFBRSxFQUMzQixTQUFTLEdBQUcscUJBQVUsQ0FBQyxNQUFNLEVBQzdCLFNBQVMsR0FBRyxHQUFHLEVBQ2YsYUFBYSxHQUFHLElBQUksRUFDcEIsU0FBUyxHQUFHO1FBQ1YsdUJBQVksQ0FBQyxPQUFPO1FBQ3BCLHVCQUFZLENBQUMsT0FBTztRQUNwQix1QkFBWSxDQUFDLFNBQVM7UUFDdEIsdUJBQVksQ0FBQyxPQUFPO0tBQ3JCLEdBQ0YsR0FBRyxPQUFPLENBQUM7SUFFWixNQUFNLFdBQVcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUNoRDtRQUNFLElBQUksRUFBRSx3QkFBYSxDQUFDLElBQUk7UUFDeEIsTUFBTSxFQUFFLFNBQVM7S0FDbEIsRUFDRCxVQUFVLEVBQ1YsU0FBUyxDQUNWLENBQUM7SUFFRixNQUFNLFVBQVUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUM5QyxvQkFBUyxDQUFDLEdBQUcsRUFDYixXQUFXLEVBQ1g7UUFDRSxJQUFJLEVBQUUsd0JBQWEsQ0FBQyxJQUFJO0tBQ3pCLEVBQ0QsS0FBSyxFQUNMLENBQUMsb0JBQW9CLENBQUMsQ0FDdkIsQ0FBQztJQUVGLE1BQU0sWUFBWSxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQ2hEO1FBQ0UsSUFBSSxFQUFFLHdCQUFhLENBQUMsSUFBSTtRQUN4QixJQUFJLEVBQUUsUUFBUTtRQUNkLElBQUksRUFBRSxRQUFRO1FBQ2QsSUFBSSxFQUFFLFFBQVE7S0FDZixFQUNELFVBQVUsRUFDVjtRQUNFLElBQUksRUFBRSxTQUFTO1FBQ2YsTUFBTSxFQUFFLFNBQVM7S0FDbEIsRUFDRCxhQUFhLEVBQ2IsU0FBUyxDQUNWLENBQUM7SUFFRixPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDIn0=
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5QWdyZWVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYtY3J5cHRvL2tleUFncmVlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7R0FPRzs7QUE4Q0gsb0NBNEZDO0FBeElEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFFSCw0Q0FBZ0U7QUFDaEUsNENBQWtEO0FBQ2xELHlDQUFtRztBQUVuRyxNQUFNLG9CQUFvQixHQUFHLFdBQVcsQ0FBQztBQWF6Qzs7Ozs7O0dBTUc7QUFDSSxLQUFLLFVBQVUsWUFBWSxDQUNoQyxVQUFxQixFQUNyQixTQUFvQixFQUNwQixVQUF3QztJQUN0QyxTQUFTLEVBQUUsR0FBRztJQUNkLFFBQVEsRUFBRSxtQkFBUSxDQUFDLE1BQU07SUFDekIsUUFBUSxFQUFFLElBQUksVUFBVSxFQUFFO0lBQzFCLFFBQVEsRUFBRSxJQUFJLFVBQVUsRUFBRTtJQUMxQixTQUFTLEVBQUUscUJBQVUsQ0FBQyxNQUFNO0lBQzVCLFNBQVMsRUFBRSxHQUFHO0lBQ2QsU0FBUyxFQUFFO1FBQ1QsdUJBQVksQ0FBQyxPQUFPO1FBQ3BCLHVCQUFZLENBQUMsT0FBTztRQUNwQix1QkFBWSxDQUFDLFNBQVM7UUFDdEIsdUJBQVksQ0FBQyxPQUFPO0tBQ3JCO0lBQ0QsYUFBYSxFQUFFLElBQUk7Q0FDcEI7SUFFRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDeEMsTUFBTSxTQUFTLEdBQUcsSUFBQSw0Q0FBZ0MsRUFBQyxDQUFDLENBQUMsQ0FBQztRQUN0RCxJQUFJLFNBQVMsS0FBSyxjQUFjLEVBQUUsQ0FBQztZQUNqQyxNQUFNLElBQUksOEJBQWtCLENBQzFCLEdBQUcsQ0FBQyxDQUFDLElBQUksNERBQTRELENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQzFGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLElBQUksS0FBSyxrQkFBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3hDLE1BQU0sSUFBSSw4QkFBa0IsQ0FDMUIsd0VBQXdFLFVBQVUsQ0FBQyxJQUFJLEdBQUcsQ0FDM0YsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLFNBQVMsQ0FBQyxJQUFJLEtBQUssa0JBQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0QyxNQUFNLElBQUksOEJBQWtCLENBQzFCLHNFQUFzRSxTQUFTLENBQUMsSUFBSSxHQUFHLENBQ3hGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxFQUNKLFNBQVMsR0FBRyxHQUFHLEVBQ2YsUUFBUSxHQUFHLG1CQUFRLENBQUMsTUFBTSxFQUMxQixRQUFRLEdBQUcsSUFBSSxVQUFVLEVBQUUsRUFDM0IsUUFBUSxHQUFHLElBQUksVUFBVSxFQUFFLEVBQzNCLFNBQVMsR0FBRyxxQkFBVSxDQUFDLE1BQU0sRUFDN0IsU0FBUyxHQUFHLEdBQUcsRUFDZixhQUFhLEdBQUcsSUFBSSxFQUNwQixTQUFTLEdBQUc7UUFDVix1QkFBWSxDQUFDLE9BQU87UUFDcEIsdUJBQVksQ0FBQyxPQUFPO1FBQ3BCLHVCQUFZLENBQUMsU0FBUztRQUN0Qix1QkFBWSxDQUFDLE9BQU87S0FDckIsR0FDRixHQUFHLE9BQU8sQ0FBQztJQUVaLE1BQU0sV0FBVyxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQ2hEO1FBQ0UsSUFBSSxFQUFFLHdCQUFhLENBQUMsSUFBSTtRQUN4QixNQUFNLEVBQUUsU0FBUztLQUNsQixFQUNELFVBQVUsRUFDVixTQUFTLENBQ1YsQ0FBQztJQUVGLE1BQU0sVUFBVSxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQzlDLG9CQUFTLENBQUMsR0FBRyxFQUNiLFdBQVcsRUFDWDtRQUNFLElBQUksRUFBRSx3QkFBYSxDQUFDLElBQUk7S0FDekIsRUFDRCxLQUFLLEVBQ0wsQ0FBQyxvQkFBb0IsQ0FBQyxDQUN2QixDQUFDO0lBRUYsTUFBTSxZQUFZLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FDaEQ7UUFDRSxJQUFJLEVBQUUsd0JBQWEsQ0FBQyxJQUFJO1FBQ3hCLElBQUksRUFBRSxRQUFRO1FBQ2QsSUFBSSxFQUFFLFFBQVE7UUFDZCxJQUFJLEVBQUUsUUFBUTtLQUNmLEVBQ0QsVUFBVSxFQUNWO1FBQ0UsSUFBSSxFQUFFLFNBQVM7UUFDZixNQUFNLEVBQUUsU0FBUztLQUNsQixFQUNELGFBQWEsRUFDYixTQUFTLENBQ1YsQ0FBQztJQUVGLE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUMifQ==
@@ -208,4 +208,4 @@ async function pemCertToCrypto(pem, options = {
208
208
  }
209
209
  return key;
210
210
  }
211
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVtUHVibGljVG9DcnlwdG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY3J5cHRvL3BlbVB1YmxpY1RvQ3J5cHRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7OztHQU9HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTRHSCw4Q0EyQ0M7QUF5QkQsMENBa0JDO0FBaE1EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFFSCwrREFBaUQ7QUFDakQsK0JBQWtDO0FBQ2xDLGdEQUFnRjtBQUNoRiw0Q0FBNEQ7QUFFNUQsTUFBTSxPQUFPLEdBQUcsd0JBQXdCLENBQUM7QUFDekMsTUFBTSxNQUFNLEdBQUcsb0JBQW9CLENBQUM7QUFDcEMsTUFBTSxRQUFRLEdBQUcsc0JBQXNCLENBQUM7QUFDeEMsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUM7QUFDbEMsTUFBTSxRQUFRLEdBQUcsZ0JBQWdCLENBQUM7QUFDbEMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDO0FBQzFCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUNwQixNQUFNLFVBQVUsR0FBRyw2QkFBNkIsQ0FBQztBQUNqRCxNQUFNLFFBQVEsR0FBRywyQkFBMkIsQ0FBQztBQUU3QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUM7QUFDdEIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDO0FBQ3RCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQztBQUd0QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUM7QUFDcEIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDO0FBQ3RCLE1BQU0sUUFBUSxHQUFHLFVBQVUsQ0FBQztBQUM1QixNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUM7QUFVMUIsU0FBUyxjQUFjLENBQUMsYUFBNEIsRUFBRSxNQUFtQjtJQUN2RSxJQUFJLE1BQU07UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUMxQixRQUFRLGFBQWEsRUFB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
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVtUHVibGljVG9DcnlwdG8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmFub3RkZi1jcnlwdG8vcGVtUHVibGljVG9DcnlwdG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7O0dBT0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEdILDhDQTJDQztBQXlCRCwwQ0FrQkM7QUFoTUQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUVILCtEQUFpRDtBQUNqRCwrQkFBa0M7QUFDbEMsZ0RBQWdGO0FBQ2hGLDRDQUE0RDtBQUU1RCxNQUFNLE9BQU8sR0FBRyx3QkFBd0IsQ0FBQztBQUN6QyxNQUFNLE1BQU0sR0FBRyxvQkFBb0IsQ0FBQztBQUNwQyxNQUFNLFFBQVEsR0FBRyxzQkFBc0IsQ0FBQztBQUN4QyxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQztBQUNsQyxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQztBQUNsQyxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUM7QUFDMUIsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDO0FBQ3BCLE1BQU0sVUFBVSxHQUFHLDZCQUE2QixDQUFDO0FBQ2pELE1BQU0sUUFBUSxHQUFHLDJCQUEyQixDQUFDO0FBRTdDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQztBQUN0QixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUM7QUFDdEIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDO0FBR3RCLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUNwQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUM7QUFDdEIsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDO0FBQzVCLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQztBQVUxQixTQUFTLGNBQWMsQ0FBQyxhQUE0QixFQUFFLE1BQW1CO0lBQ3ZFLElBQUksTUFBTTtRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQzFCLFFBQVEs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