@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.
- package/dist/cjs/src/auth/auth.js +1 -1
- package/dist/cjs/src/encodings/base64.js +1 -1
- package/dist/cjs/src/nanoclients.js +5 -5
- package/dist/cjs/src/nanotdf/Client.js +1 -1
- package/dist/cjs/src/nanotdf/NanoTDF.js +1 -1
- package/dist/cjs/src/nanotdf/encrypt-dataset.js +1 -1
- package/dist/cjs/src/nanotdf/encrypt.js +1 -1
- package/dist/cjs/src/nanotdf/helpers/getHkdfSalt.js +1 -1
- package/dist/cjs/src/nanotdf-crypto/digest.js +1 -1
- package/dist/cjs/src/nanotdf-crypto/pemPublicToCrypto.js +4 -27
- package/dist/cjs/src/opentdf.js +175 -45
- package/dist/cjs/src/version.js +1 -1
- package/dist/cjs/tdf3/index.js +1 -1
- package/dist/cjs/tdf3/src/assertions.js +1 -1
- package/dist/cjs/tdf3/src/crypto/salt.js +12 -0
- package/dist/cjs/tdf3/src/models/key-access.js +3 -2
- package/dist/cjs/tdf3/src/tdf.js +8 -3
- package/dist/types/src/access.d.ts.map +1 -1
- package/dist/types/src/auth/auth.d.ts +2 -2
- package/dist/types/src/auth/auth.d.ts.map +1 -1
- package/dist/types/src/auth/providers.d.ts.map +1 -1
- package/dist/types/src/encodings/base64.d.ts +1 -1
- package/dist/types/src/encodings/base64.d.ts.map +1 -1
- package/dist/types/src/nanoclients.d.ts +9 -10
- package/dist/types/src/nanoclients.d.ts.map +1 -1
- package/dist/types/src/nanotdf/Client.d.ts +1 -2
- package/dist/types/src/nanotdf/Client.d.ts.map +1 -1
- package/dist/types/src/nanotdf/NanoTDF.d.ts +1 -2
- package/dist/types/src/nanotdf/NanoTDF.d.ts.map +1 -1
- package/dist/types/src/nanotdf/encrypt-dataset.d.ts +1 -2
- package/dist/types/src/nanotdf/encrypt-dataset.d.ts.map +1 -1
- package/dist/types/src/nanotdf/encrypt.d.ts +1 -2
- package/dist/types/src/nanotdf/encrypt.d.ts.map +1 -1
- package/dist/types/src/nanotdf/helpers/getHkdfSalt.d.ts +1 -2
- package/dist/types/src/nanotdf/helpers/getHkdfSalt.d.ts.map +1 -1
- package/dist/types/src/nanotdf-crypto/digest.d.ts +1 -2
- package/dist/types/src/nanotdf-crypto/digest.d.ts.map +1 -1
- package/dist/types/src/nanotdf-crypto/pemPublicToCrypto.d.ts.map +1 -1
- package/dist/types/src/opentdf.d.ts +29 -5
- package/dist/types/src/opentdf.d.ts.map +1 -1
- package/dist/types/src/seekable.d.ts.map +1 -1
- package/dist/types/src/utils.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +1 -1
- package/dist/types/tdf3/index.d.ts +1 -1
- package/dist/types/tdf3/index.d.ts.map +1 -1
- package/dist/types/tdf3/src/assertions.d.ts +1 -2
- package/dist/types/tdf3/src/assertions.d.ts.map +1 -1
- package/dist/types/tdf3/src/client/index.d.ts +1 -6
- package/dist/types/tdf3/src/client/index.d.ts.map +1 -1
- package/dist/types/tdf3/src/client/validation.d.ts.map +1 -1
- package/dist/types/tdf3/src/crypto/crypto-utils.d.ts.map +1 -1
- package/dist/types/tdf3/src/crypto/salt.d.ts +2 -0
- package/dist/types/tdf3/src/crypto/salt.d.ts.map +1 -0
- package/dist/types/tdf3/src/models/key-access.d.ts.map +1 -1
- package/dist/types/tdf3/src/tdf.d.ts +4 -2
- package/dist/types/tdf3/src/tdf.d.ts.map +1 -1
- package/dist/web/src/auth/auth.js +1 -1
- package/dist/web/src/encodings/base64.js +1 -1
- package/dist/web/src/nanoclients.js +5 -5
- package/dist/web/src/nanotdf/Client.js +1 -1
- package/dist/web/src/nanotdf/NanoTDF.js +1 -1
- package/dist/web/src/nanotdf/encrypt-dataset.js +1 -1
- package/dist/web/src/nanotdf/encrypt.js +1 -1
- package/dist/web/src/nanotdf/helpers/getHkdfSalt.js +1 -1
- package/dist/web/src/nanotdf-crypto/digest.js +1 -1
- package/dist/web/src/nanotdf-crypto/pemPublicToCrypto.js +4 -27
- package/dist/web/src/opentdf.js +174 -44
- package/dist/web/src/version.js +1 -1
- package/dist/web/tdf3/index.js +1 -1
- package/dist/web/tdf3/src/assertions.js +1 -1
- package/dist/web/tdf3/src/crypto/salt.js +9 -0
- package/dist/web/tdf3/src/models/key-access.js +3 -2
- package/dist/web/tdf3/src/tdf.js +7 -3
- package/package.json +12 -12
- package/src/auth/auth.ts +2 -2
- package/src/encodings/base64.ts +1 -1
- package/src/nanoclients.ts +9 -16
- package/src/nanotdf/Client.ts +2 -3
- package/src/nanotdf/NanoTDF.ts +1 -2
- package/src/nanotdf/encrypt-dataset.ts +1 -2
- package/src/nanotdf/encrypt.ts +1 -2
- package/src/nanotdf/helpers/getHkdfSalt.ts +1 -3
- package/src/nanotdf-crypto/digest.ts +1 -3
- package/src/nanotdf-crypto/pemPublicToCrypto.ts +3 -33
- package/src/opentdf.ts +249 -54
- package/src/version.ts +1 -1
- package/tdf3/index.ts +2 -1
- package/tdf3/src/assertions.ts +2 -2
- package/tdf3/src/crypto/salt.ts +11 -0
- package/tdf3/src/models/key-access.ts +2 -1
- package/tdf3/src/tdf.ts +19 -5
- package/dist/cjs/src/tdf/TypedArray.js +0 -3
- package/dist/types/src/tdf/TypedArray.d.ts +0 -2
- package/dist/types/src/tdf/TypedArray.d.ts.map +0 -1
- package/dist/web/src/tdf/TypedArray.js +0 -2
- 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,
|
|
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:
|
|
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,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LWFjY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RkZjMvc3JjL21vZGVscy9rZXktYWNjZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDOUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDM0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEMsT0FBTyxLQUFLLGFBQWEsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFLN0MsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQztBQUVuQyxNQUFNLE9BQU8sU0FBUztJQUtwQixZQUNrQixHQUFXLEVBQ1gsR0FBdUIsRUFDdkIsU0FBaUIsRUFDakIsUUFBaUIsRUFDakIsR0FBWTtRQUpaLFFBQUcsR0FBSCxHQUFHLENBQVE7UUFDWCxRQUFHLEdBQUgsR0FBRyxDQUFvQjtRQUN2QixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsUUFBRyxHQUFILEdBQUcsQ0FBUztRQVRyQixTQUFJLEdBQUcsWUFBWSxDQUFDO1FBVzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FDL0M7WUFDRSxJQUFJLEVBQUUsTUFBTTtZQUNaLFVBQVUsRUFBRSxPQUFPO1NBQ3BCLEVBQ0QsS0FBSyxFQUNMLENBQUMsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLLENBQ1QsTUFBYyxFQUNkLEdBQWUsRUFDZixvQkFBNEI7UUFFNUIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN6QyxNQUFNLENBQUMsRUFBRSxFQUFFLGVBQWUsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUM5QyxJQUFJLENBQUMsZ0JBQWdCO1lBQ3JCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDbEMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxHQUFHLEdBQUcsTUFBTSxZQUFZLENBQUMsRUFBRSxDQUFDLFVBQVUsRUFBRSxlQUFlLEVBQUU7WUFDN0QsUUFBUSxFQUFFLE1BQU0sUUFBUTtZQUN4QixRQUFRLEVBQUUsU0FBUztTQUNwQixDQUFDLENBQUM7UUFDSCxNQUFNLEVBQUUsR0FBRyxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwQyxNQUFNLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMzRixNQUFNLGdCQUFnQixHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BFLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJELE1BQU0sYUFBYSxHQUFHLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FDNUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxFQUMxQixNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUN6QixDQUFDO1FBRUYsTUFBTSxxQkFBcUIsR0FBRyxNQUFNLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNwRSxNQUFNLEdBQUcsR0FBb0I7WUFDM0IsSUFBSSxFQUFFLFlBQVk7WUFDbEIsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsUUFBUSxFQUFFLEtBQUs7WUFDZixVQUFVLEVBQUUsTUFBTSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDO1lBQ3RELGlCQUFpQixFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUM7WUFDdEQsYUFBYSxFQUFFO2dCQUNiLEdBQUcsRUFBRSxPQUFPO2dCQUNaLElBQUksRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQzthQUNuQztZQUNELGFBQWE7WUFDYixrQkFBa0IsRUFBRSxxQkFBcUI7U0FDMUMsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2IsR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDckIsR0FBRyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQztRQUMzQixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxPQUFPO0lBSWxCLFlBQ2tCLEdBQVcsRUFDWCxHQUF1QixFQUN2QixTQUFpQixFQUNqQixRQUFpQixFQUNqQixHQUFZO1FBSlosUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUNYLFFBQUcsR0FBSCxHQUFHLENBQW9CO1FBQ3ZCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBUztRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFTO1FBUnJCLFNBQUksR0FBRyxTQUFTLENBQUM7SUFTdkIsQ0FBQztJQUVKLEtBQUssQ0FBQyxLQUFLLENBQ1QsTUFBYyxFQUNkLFNBQXFCLEVBQ3JCLG9CQUE0QjtRQUU1QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEUsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLGFBQWEsQ0FBQyxvQkFBb0IsQ0FDL0Qsa0JBQWtCLEVBQ2xCLElBQUksQ0FBQyxTQUFTLENBQ2YsQ0FBQztRQUVGLE1BQU0sYUFBYSxHQUFHLE1BQU0sYUFBYSxDQUFDLElBQUksQ0FDNUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxFQUNoQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUN6QixDQUFDO1FBRUYsSUFBSSxDQUFDLGVBQWUsR0FBRztZQUNyQixJQUFJLEVBQUUsU0FBUztZQUNmLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztZQUNiLFFBQVEsRUFBRSxLQUFLO1lBQ2YsVUFBVSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDdEQsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQztZQUN0RCxhQUFhLEVBQUU7Z0JBQ2IsR0FBRyxFQUFFLE9BQU87Z0JBQ1osSUFBSSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO2FBQ25DO1lBQ0QsYUFBYTtTQUNkLENBQUM7UUFDRixJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDdEMsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ3RDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztDQUNGIn0=
|
package/dist/web/tdf3/src/tdf.js
CHANGED
|
@@ -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:
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGRmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGRmMy9zcmMvdGRmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlDLE9BQU8sRUFHTCxlQUFlLEVBQ2YsY0FBYyxJQUFJLGdCQUFnQixFQUNsQyxlQUFlLEVBQ2YsdUJBQXVCLEdBQ3hCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFxQixZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDM0QsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixZQUFZLEVBQ1osZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxZQUFZLEVBQ1osY0FBYyxFQUNkLHVCQUF1QixJQUFJLGdCQUFnQixHQUM1QyxNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDeEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFHbEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXRELE9BQU8sS0FBSyxVQUFVLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUNyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHM0QsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFPOUUsT0FBTyxFQUNMLFNBQVMsRUFNVCxPQUFPLEdBSVIsTUFBTSxtQkFBbUIsQ0FBQztBQUMzQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRy9FLDBDQUEwQztBQUMxQyxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxJQUFJLENBQUM7QUFtRHpDLFNBQVMsT0FBTztJQUNkLElBQUksR0FBdUIsQ0FBQztJQUM1QixJQUFJLE1BQThCLENBQUM7SUFFbkMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLEVBQUU7UUFDbkQsR0FBRyxHQUFHLE9BQU8sQ0FBQztRQUNkLE1BQU0sR0FBRyxRQUFRLENBQUM7SUFDcEIsQ0FBQyxDQUFlLENBQUM7SUFFakIsT0FBTyxDQUFDLEdBQUcsR0FBRyxHQUFJLENBQUM7SUFDbkIsT0FBTyxDQUFDLE1BQU0sR0FBRyxNQUFPLENBQUM7SUFFekIsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQXdFRDs7O0dBR0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGlCQUFpQixDQUNyQyxHQUFXLEVBQ1gsU0FBaUM7SUFFakMsT0FBTyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsU0FBUyxJQUFJLFVBQVUsQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRCxNQUFNLENBQUMsS0FBSyxVQUFVLHVCQUF1QixDQUMzQyxTQUFpQixFQUNqQixHQUEwQjtJQUUxQixJQUFJLEdBQUcsR0FBVyxTQUFTLENBQUM7SUFFNUIsd0VBQXdFO0lBQ3hFLHlDQUF5QztJQUN6QyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztRQUN0QyxNQUFNLENBQUMsR0FBRyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBRyxNQUFNLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbkUsR0FBRyxHQUFHLE1BQU0sVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLGNBQWMsQ0FBQyxFQUNuQyxJQUFJLEVBQ0osR0FBRyxFQUNILFNBQVMsRUFDVCxHQUFHLEVBQ0gsUUFBUSxFQUNSLEdBQUcsR0FBRyxFQUFFLEVBQ1IsR0FBRyxHQUFHLFVBQVUsR0FDRDtJQUNmLHlFQUF5RTtJQUN6RSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLGtCQUFrQixDQUFDLG9EQUFvRCxDQUFDLENBQUM7SUFDckYsQ0FBQztTQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksa0JBQWtCLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNoRSxDQUFDO1NBQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxJQUFJLE1BQWMsQ0FBQztJQUNuQixJQUFJLENBQUM7UUFDSCxNQUFNLEdBQUcsTUFBTSx1QkFBdUIsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUksa0JBQWtCLENBQzFCLDJDQUEyQyxTQUFTLGlCQUFpQixDQUFDLEdBQUcsRUFDekUsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBQ0QsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNiLEtBQUssU0FBUztZQUNaLE9BQU8sSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3RELEtBQUssWUFBWTtZQUNmLE9BQU8sSUFBSSxTQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3hEO1lBQ0UsTUFBTSxJQUFJLGtCQUFrQixDQUFDLG9DQUFvQyxJQUFJLGtCQUFrQixDQUFDLENBQUM7SUFDN0YsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsb0JBQW9CLENBQUMsTUFBYztJQUNqRCxNQUFNLGFBQWEsR0FBYSxFQUFFLENBQUM7SUFFbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJO1FBQUUsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUk7UUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FBQztJQUM1RCxJQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU07UUFBRSxhQUFhLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRTFFLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxrQkFBa0IsQ0FDMUIsOERBQThELGFBQWEsRUFBRSxDQUM5RSxDQUFDO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFRCxLQUFLLFVBQVUsaUJBQWlCLENBQzlCLE9BQWdCLEVBQ2hCLHFCQUErQixFQUMvQixNQUFjLEVBQ2QsUUFBNEI7SUFFNUIsOENBQThDO0lBQzlDLE1BQU0sT0FBTyxHQUFHO1FBQ2QsSUFBSSxFQUFFLFdBQVc7UUFDakIsR0FBRyxFQUFFLFdBQVc7UUFDaEIsUUFBUSxFQUFFLEtBQUs7UUFDZixXQUFXLEVBQUUsSUFBSTtRQUNqQixHQUFHLENBQUMsUUFBUSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7S0FDOUIsQ0FBQztJQUVGLE1BQU0sd0JBQXdCLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BGLE1BQU0sVUFBVSxHQUEyQixFQUFFLENBQUM7SUFDOUMsT0FBTztRQUNMLE9BQU87UUFDUCx5RUFBeUU7UUFDekUscUJBQXFCLEVBQUUsd0JBQXdCO1FBQy9DLFVBQVUsRUFBRSxVQUFVO1FBQ3RCLGFBQWEsRUFBRSxjQUFjO0tBQzlCLENBQUM7QUFDSixDQUFDO0FBRUQsS0FBSyxVQUFVLFlBQVksQ0FDekIsWUFBd0IsRUFDeEIsT0FBbUIsRUFDbkIsYUFBaUM7SUFFakMsUUFBUSxhQUFhLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztRQUNwQyxLQUFLLE1BQU07WUFDVCxvREFBb0Q7WUFDcEQsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUIsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2IsNkJBQTZCO1lBQzdCLE1BQU0sU0FBUyxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQzdDLEtBQUssRUFDTCxZQUFZLEVBQ1o7Z0JBQ0UsSUFBSSxFQUFFLE1BQU07Z0JBQ1osSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTthQUMxQixFQUNELElBQUksRUFDSixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FDbkIsQ0FBQztZQUNGLE1BQU0sU0FBUyxHQUFHLE1BQU0sTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUN2RSxPQUFPLElBQUksVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFDRDtZQUNFLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyw4QkFBOEIsYUFBYSxHQUFHLENBQUMsQ0FBQztJQUNqRixDQUFDO0FBQ0gsQ0FBQztBQUVELE1BQU0sQ0FBQyxLQUFLLFVBQVUsV0FBVyxDQUFDLEdBQXlCO0lBQ3pELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsTUFBTSxJQUFJLGtCQUFrQixDQUFDLHFDQUFxQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUNELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLGtCQUFrQixDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELDREQUE0RDtJQUM1RCxNQUFNLFlBQVksR0FBYyxFQUFFLENBQUM7SUFFbkMsR0FBRyxDQUFDLFNBQVMsS0FBSyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7SUFFMUMsTUFBTSxVQUFVLEdBQWdCO1FBQzlCO1lBQ0UsUUFBUSxFQUFFLFdBQVc7U0FDdEI7UUFDRDtZQUNFLFFBQVEsRUFBRSxpQkFBaUI7U0FDNUI7S0FDRixDQUFDO0lBRUYsSUFBSSxhQUFhLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUVyQyxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7SUFDdkIsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZCLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztJQUNuQixJQUFJLGFBQWEsR0FBRyxDQUFDLENBQUM7SUFDdEIsTUFBTSxlQUFlLEdBQWlCLEVBQUUsQ0FBQztJQUV6QyxNQUFNLFNBQVMsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO0lBQ2xDLE1BQU0sUUFBUSxHQUFHLE1BQU0saUJBQWlCLENBQ3RDLEdBQUcsQ0FBQyxjQUFjLEVBQ2xCLEdBQUcsQ0FBQyxxQkFBcUIsRUFDekIsR0FBRyxDQUFDLE1BQU0sRUFDVixHQUFHLENBQUMsUUFBUSxDQUNiLENBQUM7SUFFRixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCwyQ0FBMkM7UUFDM0MsTUFBTSxJQUFJLGtCQUFrQixDQUFDLGdFQUFnRSxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVELHlEQUF5RDtJQUN6RCxNQUFNLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxHQUFHLENBQUM7SUFDbkMsTUFBTSxlQUFlLEdBQUcsTUFBTSxHQUFHLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUM3RCxNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksV0FBVyxDQUFDLGtCQUFrQixDQUFDLENBQUMsRUFDM0QsR0FBRyxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUN4QyxDQUFDO0lBQ0YsTUFBTSxhQUFhLEdBQUcsSUFBSSxVQUFVLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLE1BQU0sMkJBQTJCLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQztJQUV6RCw0QkFBNEI7SUFDNUIsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUM7SUFDckMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUM7SUFDdEMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUVuRDs7Ozs7OztNQU9FO0lBQ0YsTUFBTSxlQUFlLEdBQUc7UUFDdEIsS0FBSyxFQUFFLENBQUMsVUFBMkMsRUFBRSxFQUFFO1lBQ3JELFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1lBQ3RELFdBQVcsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDL0MsVUFBVSxHQUFHLENBQUMsQ0FBQztZQUNmLGFBQWEsR0FBRyxDQUFDLENBQUM7UUFDcEIsQ0FBQztRQUVELElBQUksRUFBRSxLQUFLLEVBQUUsVUFBMkMsRUFBRSxFQUFFO1lBQzFELElBQUksTUFBTSxDQUFDO1lBRVgsT0FBTyxhQUFhLENBQUMsTUFBTSxHQUFHLGtCQUFrQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzVELE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2xELE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ2QsSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDVixhQUFhLEdBQUcsV0FBVyxDQUFDLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ3RELENBQUM7WUFDSCxDQUFDO1lBRUQsT0FDRSxhQUFhLENBQUMsTUFBTSxJQUFJLGtCQUFrQjtnQkFDMUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXO2dCQUN4QixVQUFVLENBQUMsV0FBVyxHQUFHLENBQUMsRUFDMUIsQ0FBQztnQkFDRCxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO2dCQUMzRCxNQUFNLGdCQUFnQixHQUFHLE1BQU0sdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2hFLFVBQVUsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFFckMsYUFBYSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztZQUMxRCxDQUFDO1lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLElBQUksYUFBYSxDQUFDLE1BQU0sQ0FBQztZQUV4RCxJQUFJLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDdEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUNyQyxhQUFhLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNuQyxDQUFDO1lBRUQsSUFBSSxNQUFNLElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDekMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7Z0JBQ3RDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO2dCQUM1QyxNQUFNLHFCQUFxQixHQUFHLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUM7Z0JBRXZGLFVBQVUsQ0FBQyxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQztnQkFDMUMsV0FBVyxDQUFDLHFCQUFxQixDQUFDLENBQUM7Z0JBRW5DLHVCQUF1QjtnQkFDdkIsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQztnQkFDM0MsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxjQUFjLENBQUM7Z0JBQ3RDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUN0RCxXQUFXLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUMvQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO2dCQUNmLGFBQWEsR0FBRyxDQUFDLENBQUM7Z0JBRWxCLGdDQUFnQztnQkFDaEMsTUFBTSxhQUFhLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFFbkUsTUFBTSxVQUFVLEdBQUcsTUFBTSxZQUFZLENBQ25DLElBQUksVUFBVSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxFQUN2RSxhQUFhLEVBQ2IsR0FBRyxDQUFDLGtCQUFrQixDQUN2QixDQUFDO2dCQUVGLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDckQsUUFBUSxDQUFDLHFCQUFxQixDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDO2dCQUNoRixRQUFRLENBQUMscUJBQXFCLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLEdBQUc7b0JBQ25FLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztnQkFFekIsUUFBUSxDQUFDLHFCQUFxQixDQUFDLG9CQUFvQixDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO2dCQUM1RixRQUFRLENBQUMscUJBQXFCLENBQUMsb0JBQW9CLENBQUMsMkJBQTJCO29CQUM3RSwyQkFBMkIsQ0FBQztnQkFDOUIsUUFBUSxDQUFDLHFCQUFxQixDQUFDLG9CQUFvQixDQUFDLGNBQWM7b0JBQ2hFLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQztnQkFDaEMsUUFBUSxDQUFDLHFCQUFxQixDQUFDLG9CQUFvQixDQUFDLFFBQVEsR0FBRyxZQUFZLENBQUM7Z0JBRTVFLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFFMUQsTUFBTSxnQkFBZ0IsR0FBMkIsRUFBRSxDQUFDO2dCQUNwRCxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUM1RCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsR0FBRyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsZUFBZSxFQUFFLEVBQUU7d0JBQ2pELG9EQUFvRDt3QkFDcEQsTUFBTSxVQUFVLEdBQWlCLGVBQWUsQ0FBQyxVQUFVLElBQUk7NEJBQzdELEdBQUcsRUFBRSxPQUFPOzRCQUNaLEdBQUcsRUFBRSxJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUM7eUJBQzdFLENBQUM7d0JBQ0YsTUFBTSxTQUFTLEdBQUcsTUFBTSxVQUFVLENBQUMsZUFBZSxDQUFDLGFBQWEsRUFBRTs0QkFDaEUsR0FBRyxlQUFlOzRCQUNsQixVQUFVO3lCQUNYLENBQUMsQ0FBQzt3QkFFSCxxREFBcUQ7d0JBQ3JELGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDbkMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztnQkFDSixDQUFDO2dCQUVELFFBQVEsQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUM7Z0JBRXZDLHFCQUFxQjtnQkFDckIsTUFBTSxjQUFjLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO2dCQUMxRSxVQUFVLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO2dCQUNuQyxXQUFXLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQzVCLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO2dCQUN0QyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztnQkFDNUMsTUFBTSxzQkFBc0IsR0FBRyxTQUFTLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUN4RixVQUFVLENBQUMsT0FBTyxDQUFDLHNCQUFzQixDQUFDLENBQUM7Z0JBQzNDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO2dCQUVwQyxrQ0FBa0M7Z0JBQ2xDLE1BQU0seUJBQXlCLEdBQUcsY0FBYyxDQUFDO2dCQUNqRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO29CQUMzQyxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hDLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQywyQkFBMkIsQ0FDbEQsU0FBUyxDQUFDLGFBQWEsSUFBSSxDQUFDLEVBQzVCLFNBQVMsQ0FBQyxRQUFRLEVBQ2xCLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUNyQixTQUFTLENBQUMsVUFBVSxJQUFJLENBQUMsRUFDekIsVUFBVSxDQUNYLENBQUM7b0JBQ0YsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDM0IsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0QixDQUFDO2dCQUNELE1BQU0sOEJBQThCLEdBQUcsY0FBYyxHQUFHLHlCQUF5QixDQUFDO2dCQUNsRixNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUMsZ0NBQWdDLENBQzNELFVBQVUsQ0FBQyxNQUFNLEVBQ2pCLDhCQUE4QixFQUM5Qix5QkFBeUIsQ0FDMUIsQ0FBQztnQkFDRixVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUMvQixXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBRXhCLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQixDQUFDO1FBQ0gsQ0FBQztLQUNGLENBQUM7SUFFRixNQUFNLGVBQWUsR0FBRyxJQUFJLHVCQUF1QixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ3JFLGVBQWUsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBRXBDLE9BQU8sZUFBZSxDQUFDO0lBRXZCLHFCQUFxQjtJQUNyQixTQUFTLFNBQVMsQ0FBQyxRQUFnQjtRQUNqQyxPQUFPLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsU0FBUyxXQUFXLENBQUMsS0FBMEI7UUFDN0MsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixLQUFLLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUNELGNBQWMsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQy9CLElBQUksY0FBYyxHQUFHLEdBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksa0JBQWtCLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxTQUFTLFlBQVksQ0FBQyxDQUFDO1FBQzlFLENBQUM7UUFDRCxtRUFBbUU7UUFDbkUsVUFBVSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekMsYUFBYSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDaEMsQ0FBQztJQUVELEtBQUssVUFBVSx1QkFBdUIsQ0FBQyxLQUFpQjtRQUN0RCxjQUFjLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMvQixHQUFHLENBQUMsZUFBZSxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFdEMsd0hBQXdIO1FBQ3hILE1BQU0sZUFBZSxHQUFHLE1BQU0sR0FBRyxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FDN0QsTUFBTSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQ3BDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FDeEMsQ0FBQztRQUNGLE1BQU0sYUFBYSxHQUFHLElBQUksVUFBVSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUM1RSxNQUFNLFVBQVUsR0FBRyxNQUFNLFlBQVksQ0FDbkMsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDLEVBQ3ZFLElBQUksVUFBVSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsRUFDdkQsR0FBRyxDQUFDLHlCQUF5QixDQUM5QixDQUFDO1FBRUYsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBRWpELFlBQVksQ0FBQyxJQUFJLENBQUM7WUFDaEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUM7WUFDMUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxNQUFNLEtBQUssa0JBQWtCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU07WUFDM0Usb0JBQW9CLEVBQ2xCLGFBQWEsQ0FBQyxNQUFNLEtBQUssMkJBQTJCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE1BQU07U0FDMUYsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwQixPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0FBQ0gsQ0FBQztBQUVELGlGQUFpRjtBQUNqRixNQUFNLENBQUMsS0FBSyxVQUFVLGFBQWEsQ0FDakMsT0FBZ0I7SUFFaEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLFNBQVMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQy9ELE1BQU0sUUFBUSxHQUFHLE1BQU0sU0FBUyxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2xGLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLENBQUM7QUFDbkQsQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FDckMsU0FBNEIsRUFDNUIsWUFBNkI7SUFFN0IsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFrQixFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuRSxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFaEUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDbEYsSUFBSSxRQUFRLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzFDLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUM1RixNQUFNLElBQUksY0FBYyxDQUN0QixxREFBcUQsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNsRSxHQUFHLGVBQWU7U0FDbkIsQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUNuRCxHQUFHLGVBQWUsQ0FDbkIsQ0FBQztJQUNKLENBQUM7SUFDRCxNQUFNLGVBQWUsR0FBb0QsTUFBTSxDQUFDLFdBQVcsQ0FDekYsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FDbEMsQ0FBQztJQUNGLEtBQUssTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7UUFDNUIsTUFBTSxXQUFXLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbkQsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxnQkFBZ0IsQ0FDeEIseURBQXlELEdBQUcsQ0FBQyxHQUFHLGVBQWUsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUMxRixDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDakIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLGVBQWUsQ0FBQztBQUN6QixDQUFDO0FBT0QsS0FBSyxVQUFVLFNBQVMsQ0FBQyxFQUN2QixRQUFRLEVBQ1IsWUFBWSxFQUNaLFlBQVksRUFDWixRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYixvQkFBb0IsR0FTckI7SUFDQyxJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMvQixNQUFNLElBQUksa0JBQWtCLENBQzFCLHlFQUF5RSxDQUMxRSxDQUFDO0lBQ0osQ0FBQztJQUNELE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxRQUFRLENBQUMscUJBQXFCLENBQUM7SUFDckQsTUFBTSxlQUFlLEdBQUcsdUJBQXVCLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBRXpFLEtBQUssVUFBVSxZQUFZLENBQUMsWUFBNkI7UUFDdkQsTUFBTSxHQUFHLEdBQUcsR0FBRyxZQUFZLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDNUMsSUFBSSwwQkFBc0MsQ0FBQztRQUMzQyxJQUFJLHVCQUFtQyxDQUFDO1FBQ3hDLElBQUksb0JBQW9CLEtBQUssY0FBYyxFQUFFLENBQUM7WUFDNUMsMEJBQTBCLEdBQUcsTUFBTSxlQUFlLEVBQUUsQ0FBQztZQUNyRCx1QkFBdUIsR0FBRyxNQUFNLGFBQWEsQ0FBQyxlQUFlLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUM1RixDQUFDO2FBQU0sSUFBSSxvQkFBb0IsS0FBSyxVQUFVLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQ3hFLDBCQUEwQixHQUFHLE1BQU0sYUFBYSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ25FLHVCQUF1QixHQUFHLE1BQU0sYUFBYSxDQUFDLGVBQWUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzVGLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLGtCQUFrQixDQUFDLHVDQUF1QyxvQkFBb0IsR0FBRyxDQUFDLENBQUM7UUFDL0YsQ0FBQztRQUVELE1BQU0sZUFBZSxHQUFHLHVCQUF1QixDQUFDLFNBQVMsQ0FBQztRQUUxRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3BDLFNBQVMsRUFBRSxPQUFPO1lBQ2xCLFNBQVMsRUFBRSxZQUFZO1lBQ3ZCLE1BQU0sRUFBRSxRQUFRLENBQUMscUJBQXFCLENBQUMsTUFBTTtZQUM3QyxlQUFlO1NBQ2hCLENBQUMsQ0FBQztRQUVILE1BQU0sVUFBVSxHQUFHLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxDQUFDO1FBQ25ELE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxZQUFZLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUvRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsTUFBTSxlQUFlLENBQzVFLEdBQUcsRUFDSCxFQUFFLGtCQUFrQixFQUFFLEVBQ3RCLFlBQVksRUFDWixPQUFPLENBQ1IsQ0FBQztRQUVGLElBQUksb0JBQW9CLEtBQUssY0FBYyxFQUFFLENBQUM7WUFDNUMsTUFBTSxrQkFBa0IsR0FBYyxNQUFNLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDaEYsTUFBTSxHQUFHLEdBQUcsMEJBQTJDLENBQUM7WUFDeEQsTUFBTSxHQUFHLEdBQUcsTUFBTSxZQUFZLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxrQkFBa0IsRUFBRTtnQkFDakUsUUFBUSxFQUFFLElBQUksV0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztnQkFDMUMsUUFBUSxFQUFFLFNBQVM7YUFDcEIsQ0FBQyxDQUFDO1lBQ0gsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUN0RSxNQUFNLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sVUFBVSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUVoRCxNQUFNLEdBQUcsR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUM7WUFFbEYsT0FBTztnQkFDTCxHQUFHLEVBQUUsSUFBSSxVQUFVLENBQUMsR0FBRyxDQUFDO2dCQUN4QixRQUFRO2FBQ1QsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sa0JBQWtCLEdBQUcsTUFBTSxhQUFhLENBQUMscUJBQXFCLENBQ2xFLEdBQUcsRUFDSCx1QkFBdUIsQ0FBQyxVQUFVLENBQ25DLENBQUM7UUFFRixPQUFPO1lBQ0wsR0FBRyxFQUFFLElBQUksVUFBVSxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JELFFBQVE7U0FDVCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztJQUNqQixJQUFJLGdCQUFnQixLQUFLLFNBQVMsSUFBSSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUMzRCxRQUFRLEdBQUcsZ0JBQWdCLENBQUM7SUFDOUIsQ0FBQztJQUNELE1BQU0sYUFBYSxHQUFzRCxFQUFFLENBQUM7SUFDNUUsS0FBSyxNQUFNLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7UUFDbkQsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25ELE1BQU0sSUFBSSxjQUFjLENBQ3RCLHdEQUF3RCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQ2pGLEVBQUUsQ0FDSCxDQUFDO1FBQ0osQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFzRCxFQUFFLENBQUM7UUFDMUUsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUM3RCxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxJQUFJLEVBQUU7Z0JBQzVCLElBQUksQ0FBQztvQkFDSCxPQUFPLE1BQU0sWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUMxQyxDQUFDO2dCQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7b0JBQ1gsTUFBTSxpQkFBaUIsQ0FBQyxDQUFVLENBQUMsQ0FBQztnQkFDdEMsQ0FBQztZQUNILENBQUMsQ0FBQztRQUNKLENBQUM7UUFDRCxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0QsSUFBSSxDQUFDO1FBQ0gsTUFBTSxZQUFZLEdBQUcsTUFBTSxPQUFPLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzVELDJCQUEyQjtRQUMzQixNQUFNLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsRSxPQUFPO1lBQ0wsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsQ0FBQztZQUNoRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxnQ0FBZ0M7U0FDckUsQ0FBQztJQUNKLENBQUM7SUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQ1gsSUFBSSxDQUFDLFlBQVksY0FBYyxFQUFFLENBQUM7WUFDaEMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUN4QixJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3hCLE1BQU0sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xCLENBQUM7UUFDSCxDQUFDO1FBQ0QsTUFBTSxDQUFDLENBQUM7SUFDVixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsaUJBQWlCLENBQUMsS0FBWTtJQUNyQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssb0JBQW9CLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzNFLE9BQU8sSUFBSSxZQUFZLENBQUMsK0JBQStCLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELEtBQUssVUFBVSxZQUFZLENBQ3pCLGNBQTBCLEVBQzFCLHNCQUE4QixFQUM5QixJQUFZLEVBQ1osTUFBdUIsRUFDdkIseUJBQTZDLEVBQzdDLFdBQW9CO0lBRXBCLElBQUkseUJBQXlCLEtBQUssTUFBTSxJQUFJLHlCQUF5QixLQUFLLE9BQU8sRUFBRSxDQUFDO1FBQ2xGLE1BQU0sSUFBSSxnQkFBZ0IsQ0FBQyw4QkFBOEIseUJBQXlCLEdBQUcsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFDRCxNQUFNLFVBQVUsR0FBRyxNQUFNLFlBQVksQ0FDbkMsSUFBSSxVQUFVLENBQUMsc0JBQXNCLENBQUMsYUFBYSxFQUFFLENBQUMsRUFDdEQsY0FBYyxFQUNkLHlCQUF5QixDQUMxQixDQUFDO0lBRUYsTUFBTSxXQUFXLEdBQUcsV0FBVztRQUM3QixDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV6QyxJQUFJLElBQUksS0FBSyxXQUFXLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksY0FBYyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUNELE9BQU8sTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFFRCxLQUFLLFVBQVUsZ0JBQWdCLENBQzdCLFFBQWlCLEVBQ2pCLGdCQUFvQyxFQUNwQyxTQUFvQixFQUNwQixzQkFBOEIsRUFDOUIsTUFBdUIsRUFDdkIseUJBQTZDLEVBQzdDLGFBQTRCLEVBQzVCLFdBQW9CO0lBRXBCLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0lBQ2hDLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNsQixNQUFNLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFFcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLG1CQUFtQixFQUFFLENBQUM7UUFDOUQsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM1QixRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLENBQUM7UUFDRCxRQUFRLENBQUMsSUFBSSxDQUNYLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDVixJQUFJLE1BQXlCLENBQUM7WUFFOUIsTUFBTSxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDO2dCQUNILE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQzdCLENBQUMsVUFBVSxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsRUFBRSxFQUFFLENBQUMsVUFBVSxHQUFJLG9CQUErQixFQUN2RixDQUFDLENBQ0YsQ0FBQztnQkFDRixNQUFNLEdBQUcsTUFBTSxTQUFTLENBQUMsaUJBQWlCLENBQ3hDLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFDeEIsVUFBVSxDQUNYLENBQUM7WUFDSixDQUFDO1lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDWCxJQUFJLENBQUMsWUFBWSxnQkFBZ0IsRUFBRSxDQUFDO29CQUNsQyxNQUFNLENBQUMsQ0FBQztnQkFDVixDQUFDO2dCQUNELE1BQU0sSUFBSSxZQUFZLENBQUMsaUNBQWlDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDL0QsQ0FBQztZQUNELElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsZUFBZSxDQUFDO29CQUNkLE1BQU07b0JBQ04sYUFBYTtvQkFDYixzQkFBc0I7b0JBQ3RCLEtBQUs7b0JBQ0wsTUFBTTtvQkFDTix5QkFBeUI7b0JBQ3pCLFdBQVc7aUJBQ1osQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUMsQ0FBQyxFQUFFLENBQ0wsQ0FBQztJQUNKLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlLENBQUMsRUFDcEMsTUFBTSxFQUNOLHNCQUFzQixFQUN0QixLQUFLLEVBQ0wsTUFBTSxFQUNOLHlCQUF5QixFQUN6QixXQUFXLEdBU1o7SUFDQyxLQUFLLE1BQU0sS0FBSyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQzFCLE1BQU0sRUFBRSxlQUFlLEVBQUUsb0JBQW9CLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFakYsTUFBTSxNQUFNLEdBQ1YsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUM7UUFDaEcsTUFBTSxjQUFjLEdBQUcsSUFBSSxVQUFVLENBQ25DLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLE1BQU0sR0FBSSxvQkFBK0IsQ0FBQyxDQUNoRSxDQUFDO1FBRUYsSUFBSSxjQUFjLENBQUMsTUFBTSxLQUFLLG9CQUFvQixFQUFFLENBQUM7WUFDbkQsTUFBTSxJQUFJLFlBQVksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQzNELENBQUM7UUFFRCxJQUFJLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLFlBQVksQ0FDL0IsY0FBYyxFQUNkLHNCQUFzQixFQUN0QixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQ3BCLE1BQU0sRUFDTix5QkFBeUIsRUFDekIsV0FBVyxDQUNaLENBQUM7WUFDRixJQUFJLGdCQUFnQixJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztnQkFDckUsTUFBTSxJQUFJLFlBQVksQ0FDcEIsa0NBQWtDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLGdCQUFnQixnQkFBZ0IsR0FBRyxDQUM3RixDQUFDO1lBQ0osQ0FBQztZQUNELEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ1gsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVLENBQUMsR0FBeUI7SUFDeEQsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLEdBQUcsQ0FBQztJQUN4QixJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxrQkFBa0IsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFDRCxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFDRCxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLE1BQU0sYUFBYSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNuRixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxNQUFNLElBQUksZ0JBQWdCLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBQ0QsR0FBRyxDQUFDLGFBQWEsS0FBSyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUM7SUFFekMsTUFBTSxFQUNKLDJCQUEyQixFQUFFLGtCQUFrQixFQUMvQyxhQUFhLEVBQ2IsY0FBYyxFQUNkLGtCQUFrQixFQUNsQixRQUFRLEdBQ1QsR0FBRyxRQUFRLENBQUMscUJBQXFCLENBQUMsb0JBQW9CLENBQUM7SUFDeEQsTUFBTSxFQUFFLFFBQVEsRUFBRSxzQkFBc0IsRUFBRSxHQUFHLE1BQU0sU0FBUyxDQUFDO1FBQzNELFFBQVE7UUFDUixZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVk7UUFDOUIsWUFBWSxFQUFFLFNBQVM7UUFDdkIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO1FBQ3RCLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYTtLQUNqQyxDQUFDLENBQUM7SUFDSCxzTEFBc0w7SUFDdEwsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLEdBQUcsQ0FBQyxhQUFhLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUN6RSxNQUFNLDJCQUEyQixHQUFHLGtCQUFrQixJQUFJLG9CQUFvQixDQUFDO0lBRS9FLG1DQUFtQztJQUNuQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsYUFBYSxJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztJQUN4RSxNQUFNLFdBQVcsR0FBRyxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBRWpFLDBEQUEwRDtJQUMxRCxNQUFNLGVBQWUsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUNsQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUM3RCxDQUFDO0lBRUYsMERBQTBEO0lBQzFELE1BQU0sYUFBYSxHQUFHLE1BQU0scUJBQXFCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFbkUsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDO0lBQzdDLElBQUksa0JBQWtCLEtBQUssTUFBTSxJQUFJLGtCQUFrQixLQUFLLE9BQU8sRUFBRSxDQUFDO1FBQ3BFLE1BQU0sSUFBSSxnQkFBZ0IsQ0FBQyw4QkFBOEIsa0JBQWtCLEdBQUcsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxNQUFNLFlBQVksQ0FDbkMsSUFBSSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLENBQUMsRUFDaEQsYUFBYSxFQUNiLGtCQUFrQixDQUNuQixDQUFDO0lBRUYsSUFBSSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLEtBQUssTUFBTSxTQUFTLElBQUksUUFBUSxDQUFDLFVBQVUsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNsRCxpQ0FBaUM7WUFDakMsSUFBSSxZQUFZLEdBQWlCO2dCQUMvQixHQUFHLEVBQUUsT0FBTztnQkFDWixHQUFHLEVBQUUsSUFBSSxVQUFVLENBQUMsc0JBQXNCLENBQUMsYUFBYSxFQUFFLENBQUM7YUFDNUQsQ0FBQztZQUVGLElBQUksR0FBRyxDQUFDLHlCQUF5QixFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRSxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUNiLFlBQVksR0FBRyxRQUFRLENBQUM7Z0JBQzFCLENBQUM7WUFDSCxDQUFDO1lBQ0QsTUFBTSxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQy9FLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQUcsV0FBVztRQUN6QixDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV6QyxJQUFJLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxLQUFLLE9BQU8sRUFBRSxDQUFDO1FBQ3RGLE1BQU0sSUFBSSxjQUFjLENBQUMsMENBQTBDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsSUFBSSxtQkFBbUIsR0FBRyxDQUFDLENBQUM7SUFDNUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQ3RCLFFBQVEsQ0FBQyxHQUFHLENBQ1YsQ0FBQyxFQUNDLElBQUksRUFDSixvQkFBb0IsR0FBRywyQkFBMkIsRUFDbEQsV0FBVyxHQUFHLGtCQUFrQixHQUNqQyxFQUFFLEVBQUU7UUFDSCxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNuQixNQUFNLEtBQUssR0FBVTtnQkFDbkIsSUFBSTtnQkFDSixlQUFlLEVBQUUsbUJBQW1CO2dCQUNwQyxvQkFBb0I7Z0JBQ3BCLGNBQWMsRUFBRSxPQUFPLEVBQWlCO2dCQUN4QyxnQkFBZ0IsRUFBRSxXQUFXO2FBQzlCLENBQUM7WUFDRixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDTCxtQkFBbUIsSUFBSSxvQkFBb0IsQ0FBQztRQUM1QyxPQUFPLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3hCLENBQUMsQ0FDRixDQUNGLENBQUM7SUFFRixNQUFNLE1BQU0sR0FBRyxJQUFJLFlBQVksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDbkQsTUFBTSxtQkFBbUIsR0FBRyxjQUFjLElBQUksa0JBQWtCLENBQUM7SUFDakUsSUFBSSxtQkFBbUIsS0FBSyxNQUFNLElBQUksbUJBQW1CLEtBQUssT0FBTyxFQUFFLENBQUM7UUFDdEUsTUFBTSxJQUFJLGdCQUFnQixDQUFDLGlDQUFpQyxtQkFBbUIsR0FBRyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELHFDQUFxQztJQUNyQyxnQkFBZ0IsQ0FDZCxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUM3QixnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULGdCQUFnQixFQUNoQixNQUFNLEVBQ04sbUJBQW1CLEVBQ25CLEdBQUcsQ0FBQyxhQUFhLEVBQ2pCLFdBQVcsQ0FDWixDQUFDO0lBRUYsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLE1BQU0sZ0JBQWdCLEdBQUc7UUFDdkIsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUEyQyxFQUFFLEVBQUU7WUFDMUQsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUN4QixVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ25CLE9BQU87WUFDVCxDQUFDO1lBRUQsTUFBTSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQ3RELE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxLQUFLLENBQUMsY0FBYyxDQUFDO1lBRXBELFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxVQUFVLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUMzRSxRQUFRLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDO1lBQ3ZDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUM7UUFDRCxHQUFHLENBQUMsR0FBRyxDQUFDLHVCQUF1QixJQUFJLEVBQUUsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLHVCQUF1QixFQUFFLENBQUM7S0FDN0YsQ0FBQztJQUVGLE1BQU0sWUFBWSxHQUFHLElBQUksdUJBQXVCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUVuRSxZQUFZLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUNqQyxZQUFZLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUNqQyxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDO0FBRUQsS0FBSyxVQUFVLHFCQUFxQixDQUFDLFdBQXlCO0lBQzVELE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ25DLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3hDLE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDaEMsQ0FBQyJ9
|
|
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.
|
|
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": "^
|
|
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.
|
|
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.
|
|
88
|
+
"@types/jsonwebtoken": "~9.0.9",
|
|
89
89
|
"@types/mocha": "~10.0.10",
|
|
90
|
-
"@types/node": "^22.13.
|
|
90
|
+
"@types/node": "^22.13.8",
|
|
91
91
|
"@types/send": "^0.17.4",
|
|
92
|
-
"@types/sinon": "~17.0.
|
|
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.
|
|
96
|
-
"@typescript-eslint/parser": "^8.
|
|
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.
|
|
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.
|
|
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.
|
|
122
|
-
"typescript-eslint": "^8.
|
|
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,
|
|
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:
|
|
63
|
+
privateKey: CryptoKey,
|
|
64
64
|
jwtProtectedHeader: JWTHeaderParameters = { alg: 'RS256' }
|
|
65
65
|
) {
|
|
66
66
|
const now = getTimestampInSeconds();
|
package/src/encodings/base64.ts
CHANGED
|
@@ -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:
|
|
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;
|
package/src/nanoclients.ts
CHANGED
|
@@ -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 |
|
|
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 |
|
|
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
|
|
95
|
-
* @param
|
|
96
|
-
* @returns
|
|
97
|
-
* @throws
|
|
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 |
|
|
319
|
+
async decrypt(ciphertext: string | ArrayBufferLike): Promise<ArrayBuffer> {
|
|
327
320
|
// Parse ciphertext
|
|
328
321
|
const nanotdf = NanoTDF.from(ciphertext);
|
|
329
322
|
|
package/src/nanotdf/Client.ts
CHANGED
|
@@ -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:
|
|
212
|
+
nanoTdfHeader: ArrayBufferLike,
|
|
214
213
|
kasRewrapUrl: string,
|
|
215
|
-
magicNumberVersion:
|
|
214
|
+
magicNumberVersion: ArrayBufferLike,
|
|
216
215
|
clientVersion: string
|
|
217
216
|
): Promise<CryptoKey> {
|
|
218
217
|
if (!this.allowedKases.allows(kasRewrapUrl)) {
|
package/src/nanotdf/NanoTDF.ts
CHANGED
|
@@ -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:
|
|
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 |
|
|
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;
|
package/src/nanotdf/encrypt.ts
CHANGED
|
@@ -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 |
|
|
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:
|
|
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,
|
|
@@ -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
|
|
211
|
-
const { type } =
|
|
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
|
-
|
|
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
|
}
|