@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,62 +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 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==
@@ -1,211 +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 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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
@@ -1,77 +0,0 @@
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=
@@ -1,20 +0,0 @@
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=
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PolicyType = exports.ResourceLocatorProtocol = void 0;
4
- var CipherType;
5
- (function (CipherType) {
6
- CipherType[CipherType["Aes256Gcm64"] = 0] = "Aes256Gcm64";
7
- CipherType[CipherType["Aes256Gcm96"] = 1] = "Aes256Gcm96";
8
- CipherType[CipherType["Aes256Gcm104"] = 2] = "Aes256Gcm104";
9
- CipherType[CipherType["Aes256Gcm112"] = 3] = "Aes256Gcm112";
10
- CipherType[CipherType["Aes256Gcm120"] = 4] = "Aes256Gcm120";
11
- CipherType[CipherType["Aes256Gcm128"] = 5] = "Aes256Gcm128";
12
- })(CipherType || (CipherType = {}));
13
- /**
14
- * The Signature ECC Mode is used to determine the length of the signature at the end of a nanotdf. This, in
15
- * combination with the previous HAS_SIGNATURE section, describe the signature of the nanotdf. The following table
16
- * describes the valid values and the associated ECC Params.
17
- */
18
- var CurveName;
19
- (function (CurveName) {
20
- CurveName[CurveName["Secp256R1"] = 0] = "Secp256R1";
21
- CurveName[CurveName["Secp384R1"] = 1] = "Secp384R1";
22
- CurveName[CurveName["Secp521R1"] = 2] = "Secp521R1";
23
- })(CurveName || (CurveName = {}));
24
- var ResourceLocatorProtocol;
25
- (function (ResourceLocatorProtocol) {
26
- ResourceLocatorProtocol[ResourceLocatorProtocol["Http"] = 0] = "Http";
27
- ResourceLocatorProtocol[ResourceLocatorProtocol["Https"] = 1] = "Https";
28
- ResourceLocatorProtocol[ResourceLocatorProtocol["Unreserverd"] = 2] = "Unreserverd";
29
- ResourceLocatorProtocol[ResourceLocatorProtocol["SharedResourceDirectory"] = 255] = "SharedResourceDirectory";
30
- })(ResourceLocatorProtocol || (exports.ResourceLocatorProtocol = ResourceLocatorProtocol = {}));
31
- var PolicyType;
32
- (function (PolicyType) {
33
- PolicyType[PolicyType["Remote"] = 0] = "Remote";
34
- PolicyType[PolicyType["EmbeddedText"] = 1] = "EmbeddedText";
35
- PolicyType[PolicyType["EmbeddedEncrypted"] = 2] = "EmbeddedEncrypted";
36
- PolicyType[PolicyType["EmbeddedEncryptedPKA"] = 3] = "EmbeddedEncryptedPKA";
37
- })(PolicyType || (exports.PolicyType = PolicyType = {}));
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmFub1RERi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy90ZGYvTmFub1RERi9OYW5vVERGLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUssVUFPSjtBQVBELFdBQUssVUFBVTtJQUNiLHlEQUFXLENBQUE7SUFDWCx5REFBVyxDQUFBO0lBQ1gsMkRBQVksQ0FBQTtJQUNaLDJEQUFZLENBQUE7SUFDWiwyREFBWSxDQUFBO0lBQ1osMkRBQVksQ0FBQTtBQUNkLENBQUMsRUFQSSxVQUFVLEtBQVYsVUFBVSxRQU9kO0FBRUQ7Ozs7R0FJRztBQUNILElBQUssU0FJSjtBQUpELFdBQUssU0FBUztJQUNaLG1EQUFTLENBQUE7SUFDVCxtREFBUyxDQUFBO0lBQ1QsbURBQVMsQ0FBQTtBQUNYLENBQUMsRUFKSSxTQUFTLEtBQVQsU0FBUyxRQUliO0FBRUQsSUFBWSx1QkFLWDtBQUxELFdBQVksdUJBQXVCO0lBQ2pDLHFFQUFJLENBQUE7SUFDSix1RUFBSyxDQUFBO0lBQ0wsbUZBQVcsQ0FBQTtJQUNYLDZHQUE4QixDQUFBO0FBQ2hDLENBQUMsRUFMVyx1QkFBdUIsdUNBQXZCLHVCQUF1QixRQUtsQztBQUVELElBQVksVUFLWDtBQUxELFdBQVksVUFBVTtJQUNwQiwrQ0FBTSxDQUFBO0lBQ04sMkRBQVksQ0FBQTtJQUNaLHFFQUFpQixDQUFBO0lBQ2pCLDJFQUFvQixDQUFBO0FBQ3RCLENBQUMsRUFMVyxVQUFVLDBCQUFWLFVBQVUsUUFLckIifQ==
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,106 +0,0 @@
1
- import { Client, NanoTDF } from './nanotdf/index.js';
2
- import { type ClientConfig } from './nanotdf/Client.js';
3
- export type EncryptOptions = {
4
- ecdsaBinding: boolean;
5
- };
6
- /**
7
- * NanoTDF SDK Client. Deprecated in favor of OpenTDF.
8
- *
9
- */
10
- export declare class NanoTDFClient extends Client {
11
- /**
12
- * Decrypt ciphertext
13
- *
14
- * Pass a base64 string, TypedArray, or ArrayBuffer ciphertext and get a promise which resolves plaintext
15
- *
16
- * @param ciphertext Ciphertext to decrypt
17
- */
18
- decrypt(ciphertext: string | ArrayBufferLike): Promise<ArrayBuffer>;
19
- /**
20
- * Decrypt ciphertext of the legacy TDF, with the older, smaller i.v. calculation.
21
- *
22
- * Pass a base64 string, TypedArray, or ArrayBuffer ciphertext and get a promise which resolves plaintext
23
- *
24
- * @param ciphertext Ciphertext to decrypt
25
- */
26
- decryptLegacyTDF(ciphertext: string | ArrayBufferLike): Promise<ArrayBuffer>;
27
- /**
28
- * Encrypts the given data using the NanoTDF encryption scheme.
29
- *
30
- * @param data The data to be encrypted.
31
- * @param options The encryption options (currently unused).
32
- * @returns A promise that resolves to the encrypted data as an ArrayBuffer.
33
- * @throws If the initialization vector is not a number.
34
- */
35
- encrypt(data: string | ArrayBufferLike, options?: EncryptOptions): Promise<ArrayBuffer>;
36
- }
37
- export type DatasetConfig = ClientConfig & {
38
- maxKeyIterations?: number;
39
- };
40
- /**
41
- * NanoTDF Dataset SDK Client
42
- *
43
- *
44
- * @example
45
- * ```
46
- * import { clientSecretAuthProvider, NanoTDFDatasetClient } from '@opentdf/sdk';
47
- *
48
- * const OIDC_ENDPOINT = 'http://localhost:65432/auth/realms/opentdf';
49
- * const KAS_URL = 'http://localhost:65432/api/kas/';
50
- *
51
- * const ciphertext = '...';
52
- * const client = new NanoTDFDatasetClient({
53
- * authProvider: await clientSecretAuthProvider({
54
- * clientId: 'tdf-client',
55
- * clientSecret: '123-456',
56
- * exchange: 'client',
57
- * oidcOrigin: OIDC_ENDPOINT,
58
- * }),
59
- * kasEndpoint: KAS_URL,
60
- * });
61
- * const plaintext = client.decrypt(ciphertext);
62
- * console.log('Plaintext', plaintext);
63
- * ```
64
- */
65
- export declare class NanoTDFDatasetClient extends Client {
66
- static readonly NTDF_MAX_KEY_ITERATIONS = 8388606;
67
- private maxKeyIteration;
68
- private keyIterationCount;
69
- private cachedEphemeralKey?;
70
- private unwrappedKey?;
71
- private symmetricKey?;
72
- private cachedHeader?;
73
- private ecdsaBinding;
74
- /**
75
- * Create new NanoTDF Dataset Client
76
- *
77
- * The Ephemeral Key Pair can either be provided or will be generate when fetching the entity object. Once set it
78
- * cannot be changed. If a new ephemeral key is desired it a new client should be initialized.
79
- * There is no performance impact for creating a new client IFF the ephemeral key pair is provided.
80
- *
81
- * @param clientConfig OIDC client credentials
82
- * @param kasUrl Key access service URL
83
- * @param ephemeralKeyPair (optional) ephemeral key pair to use
84
- * @param maxKeyIterations Max iteration to performe without a key rotation
85
- */
86
- constructor(opts: DatasetConfig);
87
- /**
88
- * Encrypt data
89
- *
90
- * Pass a string, TypedArray, or ArrayBuffer data and get a promise which resolves ciphertext
91
- *
92
- * @param data to decrypt
93
- */
94
- encrypt(data: string | ArrayBufferLike, options?: EncryptOptions): Promise<ArrayBuffer>;
95
- /**
96
- * Decrypt ciphertext
97
- *
98
- * Pass a base64 string, TypedArray, or ArrayBuffer ciphertext and get a promise which resolves plaintext
99
- *
100
- * @param ciphertext Ciphertext to decrypt
101
- */
102
- decrypt(ciphertext: string | ArrayBufferLike): Promise<ArrayBuffer>;
103
- rewrapAndDecrypt(nanotdf: NanoTDF): Promise<ArrayBuffer>;
104
- generateIV(): Uint8Array;
105
- }
106
- //# sourceMappingURL=nanoclients.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nanoclients.d.ts","sourceRoot":"","sources":["../../../src/nanoclients.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,OAAO,EAOR,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxD,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,EAAE,OAAO,CAAC;CACvB,CAAC;AAOF;;;GAGG;AACH,qBAAa,aAAc,SAAQ,MAAM;IACvC;;;;;;OAMG;IACG,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAuBzE;;;;;;OAMG;IACG,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAoBlF;;;;;;;OAOG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;CA6D9F;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,oBAAqB,SAAQ,MAAM;IAG9C,MAAM,CAAC,QAAQ,CAAC,uBAAuB,WAAW;IAElD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,kBAAkB,CAAC,CAAa;IACxC,OAAO,CAAC,YAAY,CAAC,CAAY;IACjC,OAAO,CAAC,YAAY,CAAC,CAAY;IACjC,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAU;IAE9B;;;;;;;;;;;OAWG;gBACS,IAAI,EAAE,aAAa;IAe/B;;;;;;OAMG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAmF7F;;;;;;OAMG;IACG,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC;IAuBnE,gBAAgB,CAAC,OAAO,EAAE,OAAO;IAsBvC,UAAU,IAAI,UAAU;CAkCzB"}
@@ -1,5 +0,0 @@
1
- export * as AuthProviders from './auth/providers.js';
2
- export { attributeFQNsAsValues } from './policy/api.js';
3
- export * from './nanoclients.js';
4
- export { version, clientType } from './version.js';
5
- //# sourceMappingURL=nanoindex.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"nanoindex.d.ts","sourceRoot":"","sources":["../../../src/nanoindex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
@@ -1,91 +0,0 @@
1
- import { KasPublicKeyInfo, OriginAllowList } from '../access.js';
2
- import { AuthProvider } from '../auth/providers.js';
3
- export interface ClientConfig {
4
- allowedKases?: string[];
5
- fulfillableObligationFQNs?: string[];
6
- ignoreAllowList?: boolean;
7
- authProvider: AuthProvider;
8
- dpopEnabled?: boolean;
9
- dpopKeys?: Promise<CryptoKeyPair>;
10
- ephemeralKeyPair?: Promise<CryptoKeyPair>;
11
- kasEndpoint: string;
12
- platformUrl: string;
13
- }
14
- type RewrapKeyResult = {
15
- unwrappedKey: CryptoKey;
16
- requiredObligations: string[];
17
- };
18
- /**
19
- * A Client encapsulates sessions interacting with TDF3 and nanoTDF backends, KAS and any
20
- * plugin-based sessions like identity and further attribute control. Most importantly, it is responsible
21
- * for local key and token management, including the ephemeral public/private keypairs
22
- * used for encrypting and decrypting information.
23
- *
24
- * @link https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair
25
- *
26
- * @example
27
- * import { Client, clientAuthProvider, decrypt, encrypt } from '@opentdf/sdk/nanotdf`
28
- *
29
- * const OIDC_ENDPOINT = 'http://localhost:65432/auth/';
30
- * const KAS_URL = 'http://localhost:65432/kas';
31
- *
32
- * let client = new Client(
33
- * await clientAuthProvider({
34
- * clientId: 'tdf-client',
35
- * clientSecret: '123-456',
36
- * oidcOrigin: OIDC_ENDPOINT,
37
- * }),
38
- * KAS_URL
39
- * );
40
- *
41
- * // t=1
42
- * let nanoTDFEncrypted = await encrypt('some string', client.unwrappedKey);
43
- * let nanoTDFDecrypted = await decrypt(nanoTDFEncrypted, client.unwrappedKey);
44
- * nanoTDFDecrypted.toString() // 'some string'
45
- *
46
- */
47
- export default class Client {
48
- static readonly KEY_ACCESS_REMOTE = "remote";
49
- static readonly KAS_PROTOCOL = "kas";
50
- static readonly SDK_INITIAL_RELEASE = "0.0.0";
51
- static readonly INITIAL_RELEASE_IV_SIZE = 3;
52
- static readonly IV_SIZE = 12;
53
- allowedKases?: OriginAllowList;
54
- readonly fulfillableObligationFQNs: string[];
55
- protected kasUrl: string;
56
- readonly platformUrl: string;
57
- kasPubKey?: KasPublicKeyInfo;
58
- readonly authProvider: AuthProvider;
59
- readonly dpopEnabled: boolean;
60
- dissems: string[];
61
- dataAttributes: string[];
62
- protected ephemeralKeyPair: Promise<CryptoKeyPair>;
63
- protected requestSignerKeyPair: Promise<CryptoKeyPair>;
64
- protected iv?: number;
65
- /**
66
- * Create new NanoTDF Client
67
- *
68
- * The Ephemeral Key Pair can either be provided or will be generate when fetching the entity object. Once set it
69
- * cannot be changed. If a new ephemeral key is desired it a new client should be initialized.
70
- * There is no performance impact for creating a new client IFF the ephemeral key pair is provided.
71
- */
72
- constructor(optsOrOldAuthProvider: AuthProvider | ClientConfig, kasUrl?: string, ephemeralKeyPair?: CryptoKeyPair, dpopEnabled?: boolean);
73
- /**
74
- * Add attribute to the TDF file/data
75
- *
76
- * @param attribute The attribute that decides the access control of the TDF.
77
- */
78
- addAttribute(attribute: string): void;
79
- /**
80
- * Rewrap key
81
- *
82
- * @important the `fetchEntityObject` method must be called prior to
83
- * @param nanoTdfHeader the full header for the nanotdf
84
- * @param kasRewrapUrl key access server's rewrap endpoint
85
- * @param magicNumberVersion nanotdf container version
86
- * @param clientVersion version of the client, as SemVer
87
- */
88
- rewrapKey(nanoTdfHeader: ArrayBufferLike, kasRewrapUrl: string, magicNumberVersion: ArrayBufferLike, clientVersion: string): Promise<RewrapKeyResult>;
89
- }
90
- export {};
91
- //# sourceMappingURL=Client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../../../../src/nanotdf/Client.ts"],"names":[],"mappings":"AAQA,OAAO,EAGL,gBAAgB,EAChB,eAAe,EAChB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,YAAY,EAAgC,MAAM,sBAAsB,CAAC;AAWlF,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;IACrC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,KAAK,eAAe,GAAG;IACrB,YAAY,EAAE,SAAS,CAAC;IACxB,mBAAmB,EAAE,MAAM,EAAE,CAAC;CAC/B,CAAC;AAgDF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,MAAM,CAAC,QAAQ,CAAC,iBAAiB,YAAY;IAC7C,MAAM,CAAC,QAAQ,CAAC,YAAY,SAAS;IACrC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,WAAW;IAC9C,MAAM,CAAC,QAAQ,CAAC,uBAAuB,KAAK;IAC5C,MAAM,CAAC,QAAQ,CAAC,OAAO,MAAM;IAE7B,YAAY,CAAC,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,yBAAyB,EAAE,MAAM,EAAE,CAAC;IAK7C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAM;IACvB,cAAc,EAAE,MAAM,EAAE,CAAM;IAC9B,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACnD,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvD,SAAS,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAEtB;;;;;;OAMG;gBAED,qBAAqB,EAAE,YAAY,GAAG,YAAY,EAClD,MAAM,CAAC,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,aAAa,EAChC,WAAW,UAAQ;IAsErB;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC;;;;;;;;OAQG;IACG,SAAS,CACb,aAAa,EAAE,eAAe,EAC9B,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,eAAe,EACnC,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,eAAe,CAAC;CAkL5B"}