@opentdf/sdk 0.2.0 → 0.3.0-beta.2029

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 (96) hide show
  1. package/dist/cjs/src/auth/auth.js +1 -1
  2. package/dist/cjs/src/encodings/base64.js +1 -1
  3. package/dist/cjs/src/nanoclients.js +5 -5
  4. package/dist/cjs/src/nanotdf/Client.js +1 -1
  5. package/dist/cjs/src/nanotdf/NanoTDF.js +1 -1
  6. package/dist/cjs/src/nanotdf/encrypt-dataset.js +1 -1
  7. package/dist/cjs/src/nanotdf/encrypt.js +1 -1
  8. package/dist/cjs/src/nanotdf/helpers/getHkdfSalt.js +1 -1
  9. package/dist/cjs/src/nanotdf-crypto/digest.js +1 -1
  10. package/dist/cjs/src/nanotdf-crypto/pemPublicToCrypto.js +4 -27
  11. package/dist/cjs/src/opentdf.js +175 -45
  12. package/dist/cjs/src/version.js +1 -1
  13. package/dist/cjs/tdf3/index.js +1 -1
  14. package/dist/cjs/tdf3/src/assertions.js +1 -1
  15. package/dist/cjs/tdf3/src/crypto/salt.js +12 -0
  16. package/dist/cjs/tdf3/src/models/key-access.js +3 -2
  17. package/dist/cjs/tdf3/src/tdf.js +8 -3
  18. package/dist/types/src/access.d.ts.map +1 -1
  19. package/dist/types/src/auth/auth.d.ts +2 -2
  20. package/dist/types/src/auth/auth.d.ts.map +1 -1
  21. package/dist/types/src/auth/providers.d.ts.map +1 -1
  22. package/dist/types/src/encodings/base64.d.ts +1 -1
  23. package/dist/types/src/encodings/base64.d.ts.map +1 -1
  24. package/dist/types/src/nanoclients.d.ts +9 -10
  25. package/dist/types/src/nanoclients.d.ts.map +1 -1
  26. package/dist/types/src/nanotdf/Client.d.ts +1 -2
  27. package/dist/types/src/nanotdf/Client.d.ts.map +1 -1
  28. package/dist/types/src/nanotdf/NanoTDF.d.ts +1 -2
  29. package/dist/types/src/nanotdf/NanoTDF.d.ts.map +1 -1
  30. package/dist/types/src/nanotdf/encrypt-dataset.d.ts +1 -2
  31. package/dist/types/src/nanotdf/encrypt-dataset.d.ts.map +1 -1
  32. package/dist/types/src/nanotdf/encrypt.d.ts +1 -2
  33. package/dist/types/src/nanotdf/encrypt.d.ts.map +1 -1
  34. package/dist/types/src/nanotdf/helpers/getHkdfSalt.d.ts +1 -2
  35. package/dist/types/src/nanotdf/helpers/getHkdfSalt.d.ts.map +1 -1
  36. package/dist/types/src/nanotdf-crypto/digest.d.ts +1 -2
  37. package/dist/types/src/nanotdf-crypto/digest.d.ts.map +1 -1
  38. package/dist/types/src/nanotdf-crypto/pemPublicToCrypto.d.ts.map +1 -1
  39. package/dist/types/src/opentdf.d.ts +29 -5
  40. package/dist/types/src/opentdf.d.ts.map +1 -1
  41. package/dist/types/src/seekable.d.ts.map +1 -1
  42. package/dist/types/src/utils.d.ts.map +1 -1
  43. package/dist/types/src/version.d.ts +1 -1
  44. package/dist/types/tdf3/index.d.ts +1 -1
  45. package/dist/types/tdf3/index.d.ts.map +1 -1
  46. package/dist/types/tdf3/src/assertions.d.ts +1 -2
  47. package/dist/types/tdf3/src/assertions.d.ts.map +1 -1
  48. package/dist/types/tdf3/src/client/index.d.ts +1 -6
  49. package/dist/types/tdf3/src/client/index.d.ts.map +1 -1
  50. package/dist/types/tdf3/src/client/validation.d.ts.map +1 -1
  51. package/dist/types/tdf3/src/crypto/crypto-utils.d.ts.map +1 -1
  52. package/dist/types/tdf3/src/crypto/salt.d.ts +2 -0
  53. package/dist/types/tdf3/src/crypto/salt.d.ts.map +1 -0
  54. package/dist/types/tdf3/src/models/key-access.d.ts.map +1 -1
  55. package/dist/types/tdf3/src/tdf.d.ts +4 -2
  56. package/dist/types/tdf3/src/tdf.d.ts.map +1 -1
  57. package/dist/web/src/auth/auth.js +1 -1
  58. package/dist/web/src/encodings/base64.js +1 -1
  59. package/dist/web/src/nanoclients.js +5 -5
  60. package/dist/web/src/nanotdf/Client.js +1 -1
  61. package/dist/web/src/nanotdf/NanoTDF.js +1 -1
  62. package/dist/web/src/nanotdf/encrypt-dataset.js +1 -1
  63. package/dist/web/src/nanotdf/encrypt.js +1 -1
  64. package/dist/web/src/nanotdf/helpers/getHkdfSalt.js +1 -1
  65. package/dist/web/src/nanotdf-crypto/digest.js +1 -1
  66. package/dist/web/src/nanotdf-crypto/pemPublicToCrypto.js +4 -27
  67. package/dist/web/src/opentdf.js +174 -44
  68. package/dist/web/src/version.js +1 -1
  69. package/dist/web/tdf3/index.js +1 -1
  70. package/dist/web/tdf3/src/assertions.js +1 -1
  71. package/dist/web/tdf3/src/crypto/salt.js +9 -0
  72. package/dist/web/tdf3/src/models/key-access.js +3 -2
  73. package/dist/web/tdf3/src/tdf.js +7 -3
  74. package/package.json +12 -12
  75. package/src/auth/auth.ts +2 -2
  76. package/src/encodings/base64.ts +1 -1
  77. package/src/nanoclients.ts +9 -16
  78. package/src/nanotdf/Client.ts +2 -3
  79. package/src/nanotdf/NanoTDF.ts +1 -2
  80. package/src/nanotdf/encrypt-dataset.ts +1 -2
  81. package/src/nanotdf/encrypt.ts +1 -2
  82. package/src/nanotdf/helpers/getHkdfSalt.ts +1 -3
  83. package/src/nanotdf-crypto/digest.ts +1 -3
  84. package/src/nanotdf-crypto/pemPublicToCrypto.ts +3 -33
  85. package/src/opentdf.ts +249 -54
  86. package/src/version.ts +1 -1
  87. package/tdf3/index.ts +2 -1
  88. package/tdf3/src/assertions.ts +2 -2
  89. package/tdf3/src/crypto/salt.ts +11 -0
  90. package/tdf3/src/models/key-access.ts +2 -1
  91. package/tdf3/src/tdf.ts +19 -5
  92. package/dist/cjs/src/tdf/TypedArray.js +0 -3
  93. package/dist/types/src/tdf/TypedArray.d.ts +0 -2
  94. package/dist/types/src/tdf/TypedArray.d.ts.map +0 -1
  95. package/dist/web/src/tdf/TypedArray.js +0 -2
  96. package/src/tdf/TypedArray.ts +0 -10
@@ -123,4 +123,4 @@ function concatenateUint8Arrays(array1, array2) {
123
123
  combinedArray.set(array2, array1.length);
124
124
  return combinedArray;
125
125
  }
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RkZjMvc3JjL2Fzc2VydGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBZ0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN4RCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQW9DM0Y7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsSUFBSSxDQUFDLENBQVk7SUFDckMsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUVyRixNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxJQUFJLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3JGLE9BQU8sR0FBRyxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsS0FBSyxVQUFVLElBQUksQ0FDakIsSUFBZSxFQUNmLGFBQXFCLEVBQ3JCLEdBQVcsRUFDWCxHQUFpQjtJQUVqQixNQUFNLE9BQU8sR0FBcUI7UUFDaEMsYUFBYTtRQUNiLFlBQVksRUFBRSxHQUFHO0tBQ2xCLENBQUM7SUFFRixJQUFJLEtBQWEsQ0FBQztJQUNsQixJQUFJLENBQUM7UUFDSCxLQUFLLEdBQUcsTUFBTSxJQUFJLE9BQU8sQ0FBQyxP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
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RkZjMvc3JjL2Fzc2VydGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBb0MzRjs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxJQUFJLENBQUMsQ0FBWTtJQUNyQyxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXJGLE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLElBQUksV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDckYsT0FBTyxHQUFHLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxLQUFLLFVBQVUsSUFBSSxDQUNqQixJQUFlLEVBQ2YsYUFBcUIsRUFDckIsR0FBVyxFQUNYLEdBQWlCO0lBRWpCLE1BQU0sT0FBTyxHQUFxQjtRQUNoQyxhQUFhO1FBQ2IsWUFBWSxFQUFFLEdBQUc7S0FDbEIsQ0FBQztJQUVGLElBQUksS0FBYSxDQUFDO0lBQ2xCLElBQUksQ0FBQztRQUNILEtBQUssR0FBRyxNQUFNLElBQUksT0FBTyxDQUFDLE9B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
@@ -0,0 +1,9 @@
1
+ const generateSalt = async () => {
2
+ const encoder = new TextEncoder();
3
+ const data = encoder.encode('TDF');
4
+ // Generate hash
5
+ const hashBuffer = await crypto.subtle.digest('SHA-256', data);
6
+ return new Uint8Array(hashBuffer);
7
+ };
8
+ export const ztdfSalt = generateSalt();
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FsdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RkZjMvc3JjL2NyeXB0by9zYWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sWUFBWSxHQUFHLEtBQUssSUFBSSxFQUFFO0lBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7SUFDbEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVuQyxnQkFBZ0I7SUFDaEIsTUFBTSxVQUFVLEdBQUcsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFL0QsT0FBTyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNwQyxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsWUFBWSxFQUFFLENBQUMifQ==
@@ -5,6 +5,7 @@ import { pemPublicToCrypto } from '../../../src/nanotdf-crypto/pemPublicToCrypto
5
5
  import { cryptoPublicToPem } from '../../../src/utils.js';
6
6
  import { Binary } from '../binary.js';
7
7
  import * as cryptoService from '../crypto/index.js';
8
+ import { ztdfSalt } from '../crypto/salt.js';
8
9
  export const schemaVersion = '1.0';
9
10
  export class ECWrapped {
10
11
  constructor(url, kid, publicKey, metadata, sid) {
@@ -26,7 +27,7 @@ export class ECWrapped {
26
27
  pemPublicToCrypto(this.publicKey),
27
28
  ]);
28
29
  const kek = await keyAgreement(ek.privateKey, clientPublicKey, {
29
- hkdfSalt: new TextEncoder().encode('salt'),
30
+ hkdfSalt: await ztdfSalt,
30
31
  hkdfHash: 'SHA-256',
31
32
  });
32
33
  const iv = generateRandomNumber(12);
@@ -94,4 +95,4 @@ export class Wrapped {
94
95
  return this.keyAccessObject;
95
96
  }
96
97
  }
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LWFjY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RkZjMvc3JjL21vZGVscy9rZXktYWNjZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDM0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxLQUFLLGFBQWEsTUFBTSxvQkFBb0IsQ0FBQztBQUtwRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDO0FBRW5DLE1BQU0sT0FBTyxTQUFTO0lBS3BCLFlBQ2tCLEdBQVcsRUFDWCxHQUF1QixFQUN2QixTQUFpQixFQUNqQixRQUFpQixFQUNqQixHQUFZO1FBSlosUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUNYLFFBQUcsR0FBSCxHQUFHLENBQW9CO1FBQ3ZCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFTO1FBVHJCLFNBQUksR0FBRyxZQUFZLENBQUM7UUFXM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUMvQztZQUNFLElBQUksRUFBRSxNQUFNO1lBQ1osVUFBVSxFQUFFLE9BQU87U0FDcEIsRUFDRCxLQUFLLEVBQ0wsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxD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
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LWFjY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RkZjMvc3JjL21vZGVscy9rZXktYWNjZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDM0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxLQUFLLGFBQWEsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFLN0MsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQztBQUVuQyxNQUFNLE9BQU8sU0FBUztJQUtwQixZQUNrQixHQUFXLEVBQ1gsR0FBdUIsRUFDdkIsU0FBaUIsRUFDakIsUUFBaUIsRUFDakIsR0FBWTtRQUpaLFFBQUcsR0FBSCxHQUFHLENBQVE7UUFDWCxRQUFHLEdBQUgsR0FBRyxDQUFvQjtRQUN2QixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsUUFBRyxHQUFILEdBQUcsQ0FBUztRQVRyQixTQUFJLEdBQUcsWUFBWSxDQUFDO1FBVzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FDL0M7WUFDRSxJQUFJLEVBQUUsTUFBTTtZQUNaLFVBQVUsRUFBRSxPQUFPO1NBQ3BCLEVBQ0QsS0FBSyxFQUNMLENBQUMsWUFBWSxFQUFF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
@@ -15,6 +15,7 @@ import { DecoratedReadableStream } from './client/DecoratedReadableStream.js';
15
15
  import { ECWrapped, Wrapped, } from './models/index.js';
16
16
  import { unsigned } from './utils/buffer-crc32.js';
17
17
  import { ZipReader, ZipWriter, keyMerge, concatUint8 } from './utils/index.js';
18
+ import { ztdfSalt } from './crypto/salt.js';
18
19
  // TODO: input validation on manifest JSON
19
20
  const DEFAULT_SEGMENT_SIZE = 1024 * 1024;
20
21
  function mailbox() {
@@ -382,7 +383,7 @@ async function unwrapKey({ manifest, allowedKases, authProvider, dpopKeys, concu
382
383
  const serverEphemeralKey = await pemPublicToCrypto(sessionPublicKey);
383
384
  const ekr = ephemeralEncryptionKeysRaw;
384
385
  const kek = await keyAgreement(ekr.privateKey, serverEphemeralKey, {
385
- hkdfSalt: new TextEncoder().encode('salt'),
386
+ hkdfSalt: await ztdfSalt,
386
387
  hkdfHash: 'SHA-256',
387
388
  });
388
389
  const wrappedKeyAndNonce = base64.decodeArrayBuffer(entityWrappedKey);
@@ -519,6 +520,10 @@ export async function sliceAndDecrypt({ buffer, reconstructedKeyBinary, slice, c
519
520
  }
520
521
  }
521
522
  export async function readStream(cfg) {
523
+ const overview = await loadTDFStream(cfg.chunker);
524
+ return decryptStreamFrom(cfg, overview);
525
+ }
526
+ export async function decryptStreamFrom(cfg, { manifest, zipReader, centralDirectory }) {
522
527
  let { allowList } = cfg;
523
528
  if (!allowList) {
524
529
  if (!cfg.allowedKases) {
@@ -526,7 +531,6 @@ export async function readStream(cfg) {
526
531
  }
527
532
  allowList = new OriginAllowList(cfg.allowedKases);
528
533
  }
529
- const { manifest, zipReader, centralDirectory } = await loadTDFStream(cfg.chunker);
530
534
  if (!manifest) {
531
535
  throw new InvalidFileError('Missing manifest data');
532
536
  }
@@ -624,4 +628,4 @@ async function concatenateUint8Array(uint8arrays) {
624
628
  const buffer = await blob.arrayBuffer();
625
629
  return new Uint8Array(buffer);
626
630
  }
627
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGRmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGRmMy9zcmMvdGRmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFHTCxlQUFlLEVBQ2YsY0FBYyxJQUFJLGdCQUFnQixFQUNsQyxlQUFlLEVBQ2YsdUJBQXVCLEdBQ3hCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFxQixZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxZQUFZLEVBQ1osY0FBYyxFQUNkLHVCQUF1QixJQUFJLGdCQUFnQixHQUM1QyxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFHbEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXRELE9BQU8sS0FBSyxVQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFPOUUsT0FBTyxFQUNMLFNBQVMsRUFNVCxPQUFPLEdBSVIs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
631
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGRmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGRmMy9zcmMvdGRmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFHTCxlQUFlLEVBQ2YsY0FBYyxJQUFJLGdCQUFnQixFQUNsQyxlQUFlLEVBQ2YsdUJBQXVCLEdBQ3hCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFxQixZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxZQUFZLEVBQ1osY0FBYyxFQUNkLHVCQUF1QixJQUFJLGdCQUFnQixHQUM1QyxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFHbEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXRELE9BQU8sS0FBSyxVQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFPOUUsT0FBTyxFQUNMLFNBQVMsRUFNVCxPQUFPLEdBSVIs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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opentdf/sdk",
3
- "version": "0.2.0",
3
+ "version": "0.3.0-beta.2029",
4
4
  "description": "OpenTDF for the Web",
5
5
  "homepage": "https://github.com/opentdf/web-sdk",
6
6
  "bugs": {
@@ -74,26 +74,26 @@
74
74
  "dependencies": {
75
75
  "buffer-crc32": "^1.0.0",
76
76
  "dpop": "^1.4.1",
77
- "jose": "^5.10.0",
77
+ "jose": "^6.0.8",
78
78
  "json-canonicalize": "^1.0.6",
79
79
  "uuid": "~11.1.0"
80
80
  },
81
81
  "devDependencies": {
82
- "@eslint/js": "^9.20.0",
82
+ "@eslint/js": "^9.21.0",
83
83
  "@esm-bundle/chai": "~4.3.4-fix.0",
84
84
  "@types/buffer-crc32": "^0.2.4",
85
85
  "@types/chai": "~5.0.1",
86
86
  "@types/jest": "^29.5.14",
87
87
  "@types/jsdom": "^21.1.7",
88
- "@types/jsonwebtoken": "~9.0.8",
88
+ "@types/jsonwebtoken": "~9.0.9",
89
89
  "@types/mocha": "~10.0.10",
90
- "@types/node": "^22.13.4",
90
+ "@types/node": "^22.13.8",
91
91
  "@types/send": "^0.17.4",
92
- "@types/sinon": "~17.0.3",
92
+ "@types/sinon": "~17.0.4",
93
93
  "@types/uuid": "~10.0.0",
94
94
  "@types/wicg-file-system-access": "^2023.10.5",
95
- "@typescript-eslint/eslint-plugin": "^8.24.1",
96
- "@typescript-eslint/parser": "^8.24.1",
95
+ "@typescript-eslint/eslint-plugin": "^8.26.0",
96
+ "@typescript-eslint/parser": "^8.26.0",
97
97
  "@web/dev-server-esbuild": "1.0.4",
98
98
  "@web/dev-server-rollup": "^0.6.4",
99
99
  "@web/test-runner": "^0.20.0",
@@ -102,7 +102,7 @@
102
102
  "c8": "^10.1.3",
103
103
  "chai": "^5.2.0",
104
104
  "colors": "^1.4.0",
105
- "eslint-config-prettier": "^10.0.1",
105
+ "eslint-config-prettier": "^10.0.2",
106
106
  "eslint-plugin-chai-friendly": "^1.0.1",
107
107
  "eslint-plugin-prettier": "^5.2.3",
108
108
  "glob": "^11.0.1",
@@ -113,13 +113,13 @@
113
113
  "license-checker-rseidelsohn": "^4.4.2",
114
114
  "mocha": "^11.1.0",
115
115
  "nyc": "^17.1.0",
116
- "prettier": "^3.5.1",
116
+ "prettier": "^3.5.3",
117
117
  "process": "^0.11.10",
118
118
  "sinon": "~19.0.2",
119
119
  "tsconfig-paths": "^4.2.0",
120
120
  "typedoc": "^0.27.9",
121
- "typescript": "^5.7.3",
122
- "typescript-eslint": "^8.24.1",
121
+ "typescript": "^5.8.2",
122
+ "typescript-eslint": "^8.26.0",
123
123
  "webpack": "^5.98.0",
124
124
  "webpack-cli": "^6.0.1"
125
125
  }
package/src/auth/auth.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type JWTHeaderParameters, type JWTPayload, type KeyLike, SignJWT } from 'jose';
1
+ import { type JWTHeaderParameters, type JWTPayload, SignJWT } from 'jose';
2
2
 
3
3
  export type HttpMethod =
4
4
  | 'GET'
@@ -60,7 +60,7 @@ function getTimestampInSeconds() {
60
60
  */
61
61
  export async function reqSignature(
62
62
  toSign: unknown,
63
- privateKey: KeyLike,
63
+ privateKey: CryptoKey,
64
64
  jwtProtectedHeader: JWTHeaderParameters = { alg: 'RS256' }
65
65
  ) {
66
66
  const now = getTimestampInSeconds();
@@ -74,7 +74,7 @@ function encodeFallback(input: string, urlSafe?: boolean): string {
74
74
  * Copyright (c) 2012 Niklas von Hertzen
75
75
  * MIT License
76
76
  */
77
- function encodeArrayBuffer(arrayBuffer: ArrayBuffer, urlSafe?: boolean): string {
77
+ function encodeArrayBuffer(arrayBuffer: ArrayBufferLike, urlSafe?: boolean): string {
78
78
  const bytes = new Uint8Array(arrayBuffer);
79
79
  const len = bytes.length;
80
80
  const chars = urlSafe ? charsUrlSafe : charsStandard;
@@ -10,7 +10,6 @@ import {
10
10
  } from './nanotdf/index.js';
11
11
  import { keyAgreement } from './nanotdf-crypto/index.js';
12
12
  import { Policy } from './tdf/Policy.js';
13
- import { type TypedArray } from './tdf/TypedArray.js';
14
13
  import { createAttribute } from './tdf/AttributeObject.js';
15
14
  import { fetchECKasPubKey } from './access.js';
16
15
  import { ClientConfig } from './nanotdf/Client.js';
@@ -38,7 +37,7 @@ export class NanoTDFClient extends Client {
38
37
  *
39
38
  * @param ciphertext Ciphertext to decrypt
40
39
  */
41
- async decrypt(ciphertext: string | TypedArray | ArrayBuffer): Promise<ArrayBuffer> {
40
+ async decrypt(ciphertext: string | ArrayBufferLike): Promise<ArrayBuffer> {
42
41
  // Parse ciphertext
43
42
  const nanotdf = NanoTDF.from(ciphertext);
44
43
 
@@ -68,7 +67,7 @@ export class NanoTDFClient extends Client {
68
67
  *
69
68
  * @param ciphertext Ciphertext to decrypt
70
69
  */
71
- async decryptLegacyTDF(ciphertext: string | TypedArray | ArrayBuffer): Promise<ArrayBuffer> {
70
+ async decryptLegacyTDF(ciphertext: string | ArrayBufferLike): Promise<ArrayBuffer> {
72
71
  // Parse ciphertext
73
72
  const nanotdf = NanoTDF.from(ciphertext, undefined, true);
74
73
 
@@ -91,15 +90,12 @@ export class NanoTDFClient extends Client {
91
90
  /**
92
91
  * Encrypts the given data using the NanoTDF encryption scheme.
93
92
  *
94
- * @param {string | TypedArray | ArrayBuffer} data - The data to be encrypted.
95
- * @param {EncryptOptions} [options=defaultOptions] - The encryption options (currently unused).
96
- * @returns {Promise<ArrayBuffer>} A promise that resolves to the encrypted data as an ArrayBuffer.
97
- * @throws {Error} If the initialization vector is not a number.
93
+ * @param data The data to be encrypted.
94
+ * @param options The encryption options (currently unused).
95
+ * @returns A promise that resolves to the encrypted data as an ArrayBuffer.
96
+ * @throws If the initialization vector is not a number.
98
97
  */
99
- async encrypt(
100
- data: string | TypedArray | ArrayBuffer,
101
- options?: EncryptOptions
102
- ): Promise<ArrayBuffer> {
98
+ async encrypt(data: string | ArrayBufferLike, options?: EncryptOptions): Promise<ArrayBuffer> {
103
99
  // For encrypt always generate the client ephemeralKeyPair
104
100
  const ephemeralKeyPair = await this.ephemeralKeyPair;
105
101
  const initializationVector = this.iv;
@@ -234,10 +230,7 @@ export class NanoTDFDatasetClient extends Client {
234
230
  *
235
231
  * @param data to decrypt
236
232
  */
237
- async encrypt(
238
- data: string | TypedArray | ArrayBuffer,
239
- options?: EncryptOptions
240
- ): Promise<ArrayBuffer> {
233
+ async encrypt(data: string | ArrayBufferLike, options?: EncryptOptions): Promise<ArrayBuffer> {
241
234
  // Intial encrypt
242
235
  if (this.keyIterationCount == 0) {
243
236
  const mergedOptions: EncryptOptions = { ...defaultOptions, ...options };
@@ -323,7 +316,7 @@ export class NanoTDFDatasetClient extends Client {
323
316
  *
324
317
  * @param ciphertext Ciphertext to decrypt
325
318
  */
326
- async decrypt(ciphertext: string | TypedArray | ArrayBuffer): Promise<ArrayBuffer> {
319
+ async decrypt(ciphertext: string | ArrayBufferLike): Promise<ArrayBuffer> {
327
320
  // Parse ciphertext
328
321
  const nanotdf = NanoTDF.from(ciphertext);
329
322
 
@@ -1,4 +1,3 @@
1
- import { type TypedArray } from '../tdf/TypedArray.js';
2
1
  import * as base64 from '../encodings/base64.js';
3
2
  import { generateKeyPair, keyAgreement } from '../nanotdf-crypto/index.js';
4
3
  import getHkdfSalt from './helpers/getHkdfSalt.js';
@@ -210,9 +209,9 @@ export default class Client {
210
209
  * @param clientVersion version of the client, as SemVer
211
210
  */
212
211
  async rewrapKey(
213
- nanoTdfHeader: TypedArray | ArrayBuffer,
212
+ nanoTdfHeader: ArrayBufferLike,
214
213
  kasRewrapUrl: string,
215
- magicNumberVersion: TypedArray | ArrayBuffer,
214
+ magicNumberVersion: ArrayBufferLike,
216
215
  clientVersion: string
217
216
  ): Promise<CryptoKey> {
218
217
  if (!this.allowedKases.allows(kasRewrapUrl)) {
@@ -1,4 +1,3 @@
1
- import { TypedArray } from '../tdf/TypedArray.js';
2
1
  import { base64 } from '../encodings/index.js';
3
2
  import Header from './models/Header.js';
4
3
  import Payload from './models/Payload.js';
@@ -22,7 +21,7 @@ export default class NanoTDF {
22
21
  public signature?: Signature;
23
22
 
24
23
  static from(
25
- content: TypedArray | ArrayBuffer | string,
24
+ content: ArrayBufferLike | string,
26
25
  encoding?: EncodingEnum,
27
26
  legacyTDF = false
28
27
  ): NanoTDF {
@@ -3,7 +3,6 @@ import Header from './models/Header.js';
3
3
  import DefaultParams from './models/DefaultParams.js';
4
4
  import Payload from './models/Payload.js';
5
5
  import { getBitLength as authTagLengthForCipher } from './models/Ciphers.js';
6
- import { TypedArray } from '../tdf/TypedArray.js';
7
6
  import encrypt from '../nanotdf-crypto/encrypt.js';
8
7
 
9
8
  /**
@@ -18,7 +17,7 @@ export default async function encryptDataset(
18
17
  symmetricKey: CryptoKey,
19
18
  header: Header,
20
19
  iv: Uint8Array,
21
- data: string | TypedArray | ArrayBuffer
20
+ data: string | ArrayBufferLike
22
21
  ): Promise<ArrayBuffer> {
23
22
  // Auth tag length for policy and payload
24
23
  const authTagLengthInBytes = authTagLengthForCipher(DefaultParams.symmetricCipher) / 8;
@@ -6,7 +6,6 @@ import EmbeddedPolicy from './models/Policy/EmbeddedPolicy.js';
6
6
  import Payload from './models/Payload.js';
7
7
  import getHkdfSalt from './helpers/getHkdfSalt.js';
8
8
  import { getBitLength as authTagLengthForCipher } from './models/Ciphers.js';
9
- import { TypedArray } from '../tdf/TypedArray.js';
10
9
  import { GMAC_BINDING_LEN } from './constants.js';
11
10
  import { AlgorithmName, KeyFormat, KeyUsageType } from './../nanotdf-crypto/enums.js';
12
11
 
@@ -35,7 +34,7 @@ export default async function encrypt(
35
34
  kasInfo: KasPublicKeyInfo,
36
35
  ephemeralKeyPair: CryptoKeyPair,
37
36
  iv: Uint8Array,
38
- data: string | TypedArray | ArrayBuffer,
37
+ data: string | ArrayBufferLike,
39
38
  ecdsaBinding: boolean = DefaultParams.ecdsaBinding
40
39
  ): Promise<ArrayBuffer> {
41
40
  // Generate a symmetric key.
@@ -1,5 +1,3 @@
1
- import { TypedArray } from '../../tdf/TypedArray.js';
2
-
3
1
  import { digest, enums } from '../../nanotdf-crypto/index.js';
4
2
 
5
3
  interface HkdfSalt {
@@ -7,7 +5,7 @@ interface HkdfSalt {
7
5
  hkdfHash: enums.HashType;
8
6
  }
9
7
 
10
- export default async function getHkdfSalt(buffer: TypedArray | ArrayBuffer): Promise<HkdfSalt> {
8
+ export default async function getHkdfSalt(buffer: ArrayBufferLike): Promise<HkdfSalt> {
11
9
  return {
12
10
  hkdfSalt: await digest(enums.HashType.Sha256, buffer),
13
11
  hkdfHash: enums.HashType.Sha256,
@@ -1,8 +1,6 @@
1
- import { TypedArray } from '../tdf/TypedArray.js';
2
-
3
1
  export default function digest(
4
2
  hashType: AlgorithmIdentifier,
5
- data: TypedArray | ArrayBuffer
3
+ data: ArrayBufferLike
6
4
  ): Promise<ArrayBuffer> {
7
5
  return crypto.subtle.digest(hashType, data);
8
6
  }
@@ -29,7 +29,6 @@
29
29
 
30
30
  import * as base64 from '../encodings/base64.js';
31
31
  import { importX509 } from 'jose';
32
- import { type KeyObject } from 'crypto';
33
32
  import { encodeArrayBuffer as hexEncodeArrayBuffer } from '../encodings/hex.js';
34
33
  import { ConfigurationError, TdfError } from '../errors.js';
35
34
 
@@ -181,19 +180,6 @@ function toJwsAlg(hex: string) {
181
180
  return 'RSA-OAEP-512';
182
181
  }
183
182
  }
184
- function toSubtleAlg(hex: string) {
185
- const name = guessAlgorithmName(hex);
186
- if (name === ECDH || name === ECDSA) {
187
- return {
188
- name,
189
- namedCurve: guessCurveName(hex),
190
- };
191
- }
192
- return {
193
- name,
194
- hash: { name: SHA_512 },
195
- };
196
- }
197
183
 
198
184
  export async function pemCertToCrypto(
199
185
  pem: string,
@@ -207,26 +193,10 @@ export async function pemCertToCrypto(
207
193
  const arrayBuffer = base64.decodeArrayBuffer(b64);
208
194
  const hex = hexEncodeArrayBuffer(arrayBuffer);
209
195
  const jwsAlg = toJwsAlg(hex);
210
- const keylike = await importX509(pem, jwsAlg, { extractable: options.isExtractable });
211
- const { type } = keylike;
196
+ const key = await importX509(pem, jwsAlg, { extractable: options.isExtractable });
197
+ const { type } = key;
212
198
  if (type !== 'public') {
213
199
  throw new ConfigurationError('unpublic');
214
200
  }
215
- // FIXME Jose workaround for node clients.
216
- // jose returns a crypto key on node, but we expect a subtle-crypto key
217
- // The below should convert it, I hope, by exporting to a JWK and back.
218
- if ((keylike as KeyObject)?.export) {
219
- const keyObject = keylike as KeyObject;
220
- const subtleAlg = toSubtleAlg(hex);
221
- const keyUsages = guessKeyUsages(subtleAlg.name, options.usages);
222
- const subtleKey = await crypto.subtle.importKey(
223
- 'jwk',
224
- keyObject.export({ format: 'jwk' }),
225
- subtleAlg,
226
- options.isExtractable,
227
- keyUsages
228
- );
229
- return subtleKey;
230
- }
231
- return keylike as CryptoKey;
201
+ return key;
232
202
  }