@opentdf/sdk 0.2.0-beta.1758 → 0.2.0
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/README.md +45 -38
- package/dist/cjs/src/access.js +47 -11
- package/dist/cjs/src/auth/auth.js +5 -5
- package/dist/cjs/src/auth/oidc-clientcredentials-provider.js +1 -1
- package/dist/cjs/src/auth/oidc-externaljwt-provider.js +1 -1
- package/dist/cjs/src/auth/oidc-refreshtoken-provider.js +1 -1
- package/dist/cjs/src/auth/oidc.js +1 -1
- package/dist/cjs/src/auth/providers.js +1 -1
- package/dist/cjs/src/concurrency.js +3 -4
- package/dist/cjs/src/encodings/base64.js +4 -4
- package/dist/cjs/src/encodings/hex.js +5 -6
- package/dist/cjs/src/encodings/index.js +18 -8
- package/dist/cjs/src/errors.js +1 -1
- package/dist/cjs/src/index.js +28 -318
- package/dist/cjs/src/nanoclients.js +285 -0
- package/dist/cjs/src/nanoindex.js +47 -0
- package/dist/cjs/src/nanotdf/Client.js +18 -8
- package/dist/cjs/src/nanotdf/NanoTDF.js +1 -1
- package/dist/cjs/src/nanotdf/decrypt.js +2 -2
- package/dist/cjs/src/nanotdf/encrypt-dataset.js +2 -2
- package/dist/cjs/src/nanotdf/encrypt.js +2 -2
- package/dist/cjs/src/nanotdf/helpers/calculateByCurve.js +3 -4
- package/dist/cjs/src/nanotdf/helpers/getHkdfSalt.js +2 -2
- package/dist/cjs/src/nanotdf/models/Ciphers.js +3 -3
- package/dist/cjs/src/nanotdf/models/EcCurves.js +3 -3
- package/dist/cjs/src/nanotdf/models/Header.js +1 -1
- package/dist/cjs/src/nanotdf/models/Payload.js +1 -1
- package/dist/cjs/src/nanotdf/models/Policy/AbstractPolicy.js +1 -1
- package/dist/cjs/src/nanotdf/models/Policy/EmbeddedPolicy.js +1 -1
- package/dist/cjs/src/nanotdf/models/Policy/PolicyFactory.js +1 -1
- package/dist/cjs/src/nanotdf/models/ResourceLocator.js +1 -1
- package/dist/cjs/src/nanotdf/models/Signature.js +1 -1
- package/dist/cjs/src/nanotdf-crypto/ciphers.js +1 -1
- package/dist/cjs/src/nanotdf-crypto/decrypt.js +2 -2
- package/dist/cjs/src/nanotdf-crypto/digest.js +2 -2
- package/dist/cjs/src/nanotdf-crypto/ecdsaSignature.js +4 -5
- package/dist/cjs/src/nanotdf-crypto/encrypt.js +2 -2
- package/dist/cjs/src/nanotdf-crypto/exportCryptoKey.js +2 -2
- package/dist/cjs/src/nanotdf-crypto/generateKeyPair.js +2 -2
- package/dist/cjs/src/nanotdf-crypto/generateRandomNumber.js +2 -2
- package/dist/cjs/src/nanotdf-crypto/index.js +21 -13
- package/dist/cjs/src/nanotdf-crypto/keyAgreement.js +10 -8
- package/dist/cjs/src/nanotdf-crypto/pemPublicToCrypto.js +20 -11
- package/dist/cjs/src/opentdf.js +251 -0
- package/dist/cjs/src/policy/api.js +2 -3
- package/dist/cjs/src/policy/granter.js +3 -4
- package/dist/cjs/src/seekable.js +157 -0
- package/dist/cjs/src/tdf/AttributeObject.js +2 -4
- package/dist/cjs/src/tdf/Policy.js +1 -2
- package/dist/cjs/src/utils.js +12 -14
- package/dist/cjs/src/version.js +6 -2
- package/dist/cjs/tdf3/index.js +27 -15
- package/dist/cjs/tdf3/src/assertions.js +25 -11
- package/dist/cjs/tdf3/src/binary.js +1 -1
- package/dist/cjs/tdf3/src/ciphers/aes-gcm-cipher.js +1 -1
- package/dist/cjs/tdf3/src/ciphers/symmetric-cipher-base.js +1 -1
- package/dist/cjs/tdf3/src/client/DecoratedReadableStream.js +7 -74
- package/dist/cjs/tdf3/src/client/builders.js +26 -22
- package/dist/cjs/tdf3/src/client/index.js +88 -61
- package/dist/cjs/tdf3/src/client/validation.js +3 -3
- package/dist/cjs/tdf3/src/crypto/crypto-utils.js +1 -1
- package/dist/cjs/tdf3/src/crypto/index.js +18 -18
- package/dist/cjs/tdf3/src/index.js +22 -11
- package/dist/cjs/tdf3/src/models/attribute-set.js +1 -1
- package/dist/cjs/tdf3/src/models/encryption-information.js +3 -3
- package/dist/cjs/tdf3/src/models/key-access.js +67 -35
- package/dist/cjs/tdf3/src/models/policy.js +3 -3
- package/dist/cjs/tdf3/src/tdf.js +177 -151
- package/dist/cjs/tdf3/src/utils/buffer-crc32.js +2 -3
- package/dist/cjs/tdf3/src/utils/index.js +30 -28
- package/dist/cjs/tdf3/src/utils/keysplit.js +4 -5
- package/dist/cjs/tdf3/src/utils/unwrap.js +21 -0
- package/dist/cjs/tdf3/src/utils/zip-reader.js +4 -4
- package/dist/cjs/tdf3/src/utils/zip-writer.js +4 -4
- package/dist/types/src/access.d.ts +3 -0
- package/dist/types/src/access.d.ts.map +1 -1
- package/dist/types/src/auth/providers.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +5 -136
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/nanoclients.d.ts +107 -0
- package/dist/types/src/nanoclients.d.ts.map +1 -0
- package/dist/types/src/nanoindex.d.ts +5 -0
- package/dist/types/src/nanoindex.d.ts.map +1 -0
- package/dist/types/src/nanotdf/enum/CipherEnum.d.ts +1 -1
- package/dist/types/src/nanotdf/enum/CipherEnum.d.ts.map +1 -1
- package/dist/types/src/nanotdf/enum/PolicyTypeEnum.d.ts +1 -1
- package/dist/types/src/nanotdf/enum/PolicyTypeEnum.d.ts.map +1 -1
- package/dist/types/src/nanotdf/models/DefaultParams.d.ts +1 -1
- package/dist/types/src/nanotdf/models/ResourceLocator.d.ts.map +1 -1
- package/dist/types/src/nanotdf-crypto/generateKeyPair.d.ts +1 -1
- package/dist/types/src/nanotdf-crypto/generateKeyPair.d.ts.map +1 -1
- package/dist/types/src/nanotdf-crypto/generateRandomNumber.d.ts +1 -1
- package/dist/types/src/nanotdf-crypto/generateRandomNumber.d.ts.map +1 -1
- package/dist/types/src/nanotdf-crypto/index.d.ts +2 -3
- package/dist/types/src/nanotdf-crypto/index.d.ts.map +1 -1
- package/dist/types/src/nanotdf-crypto/keyAgreement.d.ts.map +1 -1
- package/dist/types/src/opentdf.d.ts +110 -0
- package/dist/types/src/opentdf.d.ts.map +1 -0
- package/dist/types/src/seekable.d.ts +39 -0
- package/dist/types/src/seekable.d.ts.map +1 -0
- package/dist/types/src/tdf/AttributeObject.d.ts +0 -2
- package/dist/types/src/tdf/AttributeObject.d.ts.map +1 -1
- package/dist/types/src/tdf/NanoTDF/NanoTDF.d.ts +2 -2
- package/dist/types/src/tdf/NanoTDF/NanoTDF.d.ts.map +1 -1
- package/dist/types/src/tdf/Policy.d.ts.map +1 -1
- package/dist/types/src/tdf/PolicyObject.d.ts +0 -1
- package/dist/types/src/tdf/PolicyObject.d.ts.map +1 -1
- package/dist/types/src/utils.d.ts +0 -1
- package/dist/types/src/utils.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +4 -0
- package/dist/types/src/version.d.ts.map +1 -1
- package/dist/types/tdf3/index.d.ts +3 -2
- package/dist/types/tdf3/index.d.ts.map +1 -1
- package/dist/types/tdf3/src/assertions.d.ts +3 -3
- package/dist/types/tdf3/src/assertions.d.ts.map +1 -1
- package/dist/types/tdf3/src/client/DecoratedReadableStream.d.ts +1 -13
- package/dist/types/tdf3/src/client/DecoratedReadableStream.d.ts.map +1 -1
- package/dist/types/tdf3/src/client/builders.d.ts +43 -37
- package/dist/types/tdf3/src/client/builders.d.ts.map +1 -1
- package/dist/types/tdf3/src/client/index.d.ts +8 -9
- package/dist/types/tdf3/src/client/index.d.ts.map +1 -1
- package/dist/types/tdf3/src/client/validation.d.ts +3 -3
- 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/index.d.ts +1 -1
- package/dist/types/tdf3/src/index.d.ts.map +1 -1
- package/dist/types/tdf3/src/models/key-access.d.ts +63 -15
- package/dist/types/tdf3/src/models/key-access.d.ts.map +1 -1
- package/dist/types/tdf3/src/models/manifest.d.ts +2 -0
- package/dist/types/tdf3/src/models/manifest.d.ts.map +1 -1
- package/dist/types/tdf3/src/models/policy.d.ts +0 -1
- package/dist/types/tdf3/src/models/policy.d.ts.map +1 -1
- package/dist/types/tdf3/src/tdf.d.ts +20 -24
- package/dist/types/tdf3/src/tdf.d.ts.map +1 -1
- package/dist/types/tdf3/src/utils/index.d.ts +0 -2
- package/dist/types/tdf3/src/utils/index.d.ts.map +1 -1
- package/dist/types/tdf3/src/utils/unwrap.d.ts +2 -0
- package/dist/types/tdf3/src/utils/unwrap.d.ts.map +1 -0
- package/dist/types/tdf3/src/utils/zip-reader.d.ts +1 -1
- package/dist/types/tdf3/src/utils/zip-reader.d.ts.map +1 -1
- package/dist/types/tdf3/src/utils/zip-writer.d.ts +2 -2
- package/dist/web/src/access.js +40 -7
- package/dist/web/src/auth/auth.js +1 -1
- package/dist/web/src/auth/oidc-clientcredentials-provider.js +1 -1
- package/dist/web/src/auth/oidc-externaljwt-provider.js +1 -1
- package/dist/web/src/auth/oidc-refreshtoken-provider.js +1 -1
- package/dist/web/src/auth/oidc.js +1 -1
- package/dist/web/src/auth/providers.js +1 -1
- package/dist/web/src/concurrency.js +1 -1
- package/dist/web/src/encodings/base64.js +1 -1
- package/dist/web/src/encodings/hex.js +1 -1
- package/dist/web/src/errors.js +1 -1
- package/dist/web/src/index.js +6 -310
- package/dist/web/src/nanoclients.js +280 -0
- package/dist/web/src/nanoindex.js +5 -0
- 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/models/Ciphers.js +1 -1
- package/dist/web/src/nanotdf/models/EcCurves.js +1 -1
- package/dist/web/src/nanotdf/models/Header.js +1 -1
- package/dist/web/src/nanotdf/models/Payload.js +1 -1
- package/dist/web/src/nanotdf/models/Policy/AbstractPolicy.js +1 -1
- package/dist/web/src/nanotdf/models/Policy/EmbeddedPolicy.js +1 -1
- package/dist/web/src/nanotdf/models/Policy/PolicyFactory.js +1 -1
- package/dist/web/src/nanotdf/models/ResourceLocator.js +1 -1
- package/dist/web/src/nanotdf/models/Signature.js +1 -1
- package/dist/web/src/nanotdf-crypto/ciphers.js +1 -1
- package/dist/web/src/nanotdf-crypto/ecdsaSignature.js +1 -1
- package/dist/web/src/nanotdf-crypto/generateKeyPair.js +2 -2
- package/dist/web/src/nanotdf-crypto/generateRandomNumber.js +2 -2
- package/dist/web/src/nanotdf-crypto/index.js +3 -4
- package/dist/web/src/nanotdf-crypto/keyAgreement.js +9 -6
- package/dist/web/src/nanotdf-crypto/pemPublicToCrypto.js +1 -1
- package/dist/web/src/opentdf.js +242 -0
- package/dist/web/src/policy/api.js +1 -1
- package/dist/web/src/policy/granter.js +1 -1
- package/dist/web/src/seekable.js +148 -0
- package/dist/web/src/tdf/AttributeObject.js +1 -2
- package/dist/web/src/tdf/Policy.js +1 -2
- package/dist/web/src/utils.js +2 -3
- package/dist/web/src/version.js +5 -1
- package/dist/web/tdf3/index.js +3 -2
- package/dist/web/tdf3/src/assertions.js +21 -6
- package/dist/web/tdf3/src/binary.js +1 -1
- package/dist/web/tdf3/src/ciphers/aes-gcm-cipher.js +1 -1
- package/dist/web/tdf3/src/ciphers/symmetric-cipher-base.js +1 -1
- package/dist/web/tdf3/src/client/DecoratedReadableStream.js +4 -68
- package/dist/web/tdf3/src/client/builders.js +26 -22
- package/dist/web/tdf3/src/client/index.js +69 -52
- package/dist/web/tdf3/src/client/validation.js +1 -1
- package/dist/web/tdf3/src/crypto/crypto-utils.js +1 -1
- package/dist/web/tdf3/src/crypto/index.js +1 -1
- package/dist/web/tdf3/src/index.js +2 -2
- package/dist/web/tdf3/src/models/attribute-set.js +1 -1
- package/dist/web/tdf3/src/models/encryption-information.js +3 -3
- package/dist/web/tdf3/src/models/key-access.js +47 -24
- package/dist/web/tdf3/src/models/policy.js +1 -1
- package/dist/web/tdf3/src/tdf.js +149 -130
- package/dist/web/tdf3/src/utils/buffer-crc32.js +1 -1
- package/dist/web/tdf3/src/utils/index.js +1 -5
- package/dist/web/tdf3/src/utils/keysplit.js +1 -1
- package/dist/web/tdf3/src/utils/unwrap.js +18 -0
- package/dist/web/tdf3/src/utils/zip-reader.js +1 -1
- package/dist/web/tdf3/src/utils/zip-writer.js +1 -1
- package/package.json +45 -42
- package/src/access.ts +37 -1
- package/src/index.ts +5 -435
- package/src/nanoclients.ts +405 -0
- package/src/nanoindex.ts +4 -0
- package/src/nanotdf-crypto/generateKeyPair.ts +1 -1
- package/src/nanotdf-crypto/generateRandomNumber.ts +1 -1
- package/src/nanotdf-crypto/index.ts +2 -3
- package/src/nanotdf-crypto/keyAgreement.ts +14 -7
- package/src/opentdf.ts +473 -0
- package/{tdf3/src/utils/chunkers.ts → src/seekable.ts} +69 -20
- package/src/tdf/AttributeObject.ts +0 -3
- package/src/tdf/Policy.ts +0 -1
- package/src/tdf/PolicyObject.ts +0 -1
- package/src/utils.ts +1 -3
- package/src/version.ts +5 -0
- package/tdf3/index.ts +14 -2
- package/tdf3/src/assertions.ts +33 -8
- package/tdf3/src/client/DecoratedReadableStream.ts +2 -78
- package/tdf3/src/client/builders.ts +44 -26
- package/tdf3/src/client/index.ts +101 -86
- package/tdf3/src/index.ts +1 -1
- package/tdf3/src/models/encryption-information.ts +2 -2
- package/tdf3/src/models/key-access.ts +120 -38
- package/tdf3/src/models/manifest.ts +3 -0
- package/tdf3/src/models/policy.ts +0 -1
- package/tdf3/src/tdf.ts +251 -207
- package/tdf3/src/utils/index.ts +0 -5
- package/tdf3/src/utils/unwrap.ts +17 -0
- package/tdf3/src/utils/zip-reader.ts +1 -1
- package/dist/cjs/src/nanotdf-crypto/importRawKey.js +0 -18
- package/dist/cjs/tdf3/src/templates/default.html.js +0 -98
- package/dist/cjs/tdf3/src/templates/escaper.js +0 -15
- package/dist/cjs/tdf3/src/templates/index.js +0 -12
- package/dist/cjs/tdf3/src/utils/chunkers.js +0 -114
- package/dist/cjs/tdf3/src/version.js +0 -6
- package/dist/types/src/nanotdf-crypto/importRawKey.d.ts +0 -13
- package/dist/types/src/nanotdf-crypto/importRawKey.d.ts.map +0 -1
- package/dist/types/tdf3/src/templates/default.html.d.ts +0 -8
- package/dist/types/tdf3/src/templates/default.html.d.ts.map +0 -1
- package/dist/types/tdf3/src/templates/escaper.d.ts +0 -6
- package/dist/types/tdf3/src/templates/escaper.d.ts.map +0 -1
- package/dist/types/tdf3/src/templates/index.d.ts +0 -3
- package/dist/types/tdf3/src/templates/index.d.ts.map +0 -1
- package/dist/types/tdf3/src/utils/chunkers.d.ts +0 -29
- package/dist/types/tdf3/src/utils/chunkers.d.ts.map +0 -1
- package/dist/types/tdf3/src/version.d.ts +0 -3
- package/dist/types/tdf3/src/version.d.ts.map +0 -1
- package/dist/web/src/nanotdf-crypto/importRawKey.js +0 -15
- package/dist/web/tdf3/src/templates/default.html.js +0 -96
- package/dist/web/tdf3/src/templates/escaper.js +0 -10
- package/dist/web/tdf3/src/templates/index.js +0 -3
- package/dist/web/tdf3/src/utils/chunkers.js +0 -107
- package/dist/web/tdf3/src/version.js +0 -3
- package/src/nanotdf-crypto/importRawKey.ts +0 -19
- package/tdf3/src/templates/default.html.ts +0 -105
- package/tdf3/src/templates/escaper.ts +0 -10
- package/tdf3/src/templates/index.ts +0 -2
- package/tdf3/src/version.ts +0 -2
package/tdf3/src/utils/index.ts
CHANGED
|
@@ -9,7 +9,6 @@ export { ZipReader, readUInt64LE } from './zip-reader.js';
|
|
|
9
9
|
export { ZipWriter } from './zip-writer.js';
|
|
10
10
|
export { keySplit, keyMerge } from './keysplit.js';
|
|
11
11
|
export { streamToBuffer } from '../client/DecoratedReadableStream.js';
|
|
12
|
-
export * from './chunkers.js';
|
|
13
12
|
|
|
14
13
|
export type SupportedEncoding = 'hex' | 'utf8' | 'utf-8' | 'binary' | 'latin1' | 'base64';
|
|
15
14
|
|
|
@@ -25,10 +24,6 @@ const hexSliceLookupTable = (() => {
|
|
|
25
24
|
return table;
|
|
26
25
|
})();
|
|
27
26
|
|
|
28
|
-
export function base64ToBuffer(b64: string): Uint8Array {
|
|
29
|
-
return Uint8Array.from(atob(b64).split(''), (c) => c.charCodeAt(0));
|
|
30
|
-
}
|
|
31
|
-
|
|
32
27
|
export function concatUint8(uint8Arrays: Uint8Array[]): Uint8Array {
|
|
33
28
|
const newLength = uint8Arrays.reduce(
|
|
34
29
|
(accumulator, currentValue) => accumulator + currentValue.length,
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { decodeArrayBuffer } from '../../../src/encodings/base64.js';
|
|
2
|
+
import { InvalidFileError } from '../../../src/errors.js';
|
|
3
|
+
|
|
4
|
+
export function unwrapHtml(htmlPayload: Uint8Array): Uint8Array {
|
|
5
|
+
const html = new TextDecoder().decode(htmlPayload);
|
|
6
|
+
const payloadRe = /<input id=['"]?data-input['"]?[^>]*?value=['"]?([a-zA-Z0-9+/=]+)['"]?/;
|
|
7
|
+
const reResult = payloadRe.exec(html);
|
|
8
|
+
if (!reResult) {
|
|
9
|
+
throw new InvalidFileError('Payload is missing');
|
|
10
|
+
}
|
|
11
|
+
const base64Payload = reResult[1];
|
|
12
|
+
try {
|
|
13
|
+
return new Uint8Array(decodeArrayBuffer(base64Payload));
|
|
14
|
+
} catch (e) {
|
|
15
|
+
throw new InvalidFileError('There was a problem extracting the TDF3 payload', e);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { InvalidFileError } from '../../../src/errors.js';
|
|
2
|
+
import { type Chunker } from '../../../src/seekable.js';
|
|
2
3
|
import { Manifest } from '../models/index.js';
|
|
3
|
-
import { Chunker } from './chunkers.js';
|
|
4
4
|
import { readUInt32LE, readUInt16LE, copyUint8Arr, buffToString } from './index.js';
|
|
5
5
|
|
|
6
6
|
// TODO: Better document what these constants are
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const enums_js_1 = require("./enums.js");
|
|
4
|
-
/**
|
|
5
|
-
* Import raw key
|
|
6
|
-
*
|
|
7
|
-
* A specific implementation of the importKey method to import raw keys. Specifies some defaults
|
|
8
|
-
* to ensure security.
|
|
9
|
-
*
|
|
10
|
-
* @param key Key which needs to be imported
|
|
11
|
-
* @param keyUsages How the key will be used
|
|
12
|
-
* @param isExtractable Whether key is extractable
|
|
13
|
-
*/
|
|
14
|
-
async function importRawKey(key, keyUsages, isExtractable = false) {
|
|
15
|
-
return crypto.subtle.importKey(enums_js_1.KeyFormat.Raw, key, enums_js_1.CipherType.AesGcm, isExtractable, keyUsages);
|
|
16
|
-
}
|
|
17
|
-
exports.default = importRawKey;
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0UmF3S2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYtY3J5cHRvL2ltcG9ydFJhd0tleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHlDQUFpRTtBQUVqRTs7Ozs7Ozs7O0dBU0c7QUFDWSxLQUFLLFVBQVUsWUFBWSxDQUN4QyxHQUFnQixFQUNoQixTQUE4QixFQUM5QixhQUFhLEdBQUcsS0FBSztJQUVyQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLG9CQUFTLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxxQkFBVSxDQUFDLE1BQU0sRUFBRSxhQUFhLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDbEcsQ0FBQztBQU5ELCtCQU1DIn0=
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const escaper_js_1 = require("./escaper.js");
|
|
4
|
-
exports.default = ({ manifest, payload, transferUrl, transferBaseUrl, }) => `<html>
|
|
5
|
-
<head>
|
|
6
|
-
<meta charset="UTF-8">
|
|
7
|
-
</head>
|
|
8
|
-
<body style="font-family: Arial; color: #2D323B; overflow: hidden; margin: 0; height: 100%; background-color: white;">
|
|
9
|
-
<input id="data-input" type="hidden" value="${(0, escaper_js_1.escHtml)(payload)}">
|
|
10
|
-
<input id="data-manifest" type="hidden" value="${(0, escaper_js_1.escHtml)(manifest)}">
|
|
11
|
-
<iframe style="width:0;height:0;border:0; border:none;" src="${(0, escaper_js_1.escHtml)(transferUrl)}"></iframe>
|
|
12
|
-
<div role="banner" style="background-color: #092356; color: white; height: 55px;">
|
|
13
|
-
<img src="https://cdn.virtru.com/assets/virtru-logo-white-rgb.png"
|
|
14
|
-
style="display: inline-block; padding: 18px 0 0 24px;"
|
|
15
|
-
width="62px" height="19px" alt="Virtru logo" title="Virtru"/>
|
|
16
|
-
</div>
|
|
17
|
-
<div role="main" class="wrapper" style="padding-top: 107px; display: flex; flex-direction: row; max-width: 1200px;
|
|
18
|
-
min-width: 800px; margin: 0 auto; min-height: calc(100vh - 230px); border-bottom: 1px solid #F3F5F7;">
|
|
19
|
-
<div role="region">
|
|
20
|
-
<img src="https://cdn.virtru.com/assets/request-access.png" style="display: inline-block;"
|
|
21
|
-
width="387px" height="310px" alt="Request access image" title="Request access"/>
|
|
22
|
-
</div>
|
|
23
|
-
<div role="complementary" style="word-break: break-all; padding-right: 12px;">
|
|
24
|
-
<h1 style="font-size: 1.5em;">Virtru Secure File</h1>
|
|
25
|
-
<noscript style="font-weight: 100;">
|
|
26
|
-
<span>
|
|
27
|
-
To view this file, download and access it from your computer:
|
|
28
|
-
<br />
|
|
29
|
-
<br />
|
|
30
|
-
</span>
|
|
31
|
-
<div>
|
|
32
|
-
1. <b>Go Back</b> to the file directory and <b>Right-click</b> on the file
|
|
33
|
-
</div>
|
|
34
|
-
<div>
|
|
35
|
-
2. Select <b>Download</b>
|
|
36
|
-
</div>
|
|
37
|
-
<div>
|
|
38
|
-
3. Once download is complete, <b>double-click</b> on the local file to open
|
|
39
|
-
</div>
|
|
40
|
-
</noscript>
|
|
41
|
-
<div id="js-enabled-message" style="display: none;">
|
|
42
|
-
<span>We are trying to send you to Secure Reader. If this does not work, please click the button below</span>
|
|
43
|
-
<br />
|
|
44
|
-
<button
|
|
45
|
-
id="viewbutton"
|
|
46
|
-
style="color: #fff!important; background: gray; padding: 10px 40px; border-radius: 25px; display: inline-block; border: none; font-size: 15px; width: 300px; margin-block-start: 1.1em;
|
|
47
|
-
margin-block-end: 1.1em;"
|
|
48
|
-
class="viewbutton"
|
|
49
|
-
type="button"
|
|
50
|
-
>
|
|
51
|
-
View File in Secure Reader
|
|
52
|
-
</button>
|
|
53
|
-
</div>
|
|
54
|
-
</div>
|
|
55
|
-
</div>
|
|
56
|
-
<div role="contentinfo" style="color: grey; text-align: center; padding-top: 25px; font-family: Arial;">
|
|
57
|
-
<span style="padding: 25px; font-size: 13px;">© Copyright 2019 Virtru Corporation</span>
|
|
58
|
-
<span style="padding: 25px; font-size: 13px;">Learn more at www.virtru.com</span>
|
|
59
|
-
</div>
|
|
60
|
-
<script type="text/javascript">
|
|
61
|
-
var transferComplete = false;
|
|
62
|
-
var data = document.getElementById('data-input').value;
|
|
63
|
-
var manifest = JSON.parse(atob(document.getElementById('data-manifest').value));
|
|
64
|
-
var redirectButton = document.getElementById('viewbutton');
|
|
65
|
-
var ifr = document.querySelector('iframe');
|
|
66
|
-
var otherWindow = ifr.contentWindow;
|
|
67
|
-
|
|
68
|
-
document.getElementById('js-enabled-message').style.display = 'block';
|
|
69
|
-
ifr.addEventListener("load", iframeLoaded, false);
|
|
70
|
-
|
|
71
|
-
function iframeLoaded() {
|
|
72
|
-
var channel = new MessageChannel();
|
|
73
|
-
otherWindow.postMessage({
|
|
74
|
-
type: 'tdf.html',
|
|
75
|
-
data: data,
|
|
76
|
-
policy: manifest.encryptionInformation.policy
|
|
77
|
-
}, '${(0, escaper_js_1.escJavaScript)(transferBaseUrl)}', [channel.port2]);
|
|
78
|
-
|
|
79
|
-
channel.port1.onmessage = handleMessage;
|
|
80
|
-
|
|
81
|
-
function handleMessage(e) {
|
|
82
|
-
let msg = e.data;
|
|
83
|
-
if (msg.status === 'success') {
|
|
84
|
-
transferComplete = true;
|
|
85
|
-
redirectButton.style.background = '#4585ff';
|
|
86
|
-
window.location.href = "${(0, escaper_js_1.escJavaScript)(transferUrl)}";
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
redirectButton.onclick = function(){
|
|
91
|
-
if (transferComplete) {
|
|
92
|
-
window.location.href = "${(0, escaper_js_1.escJavaScript)(transferUrl)}";
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
</script>
|
|
96
|
-
</body>
|
|
97
|
-
</html>`;
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC5odG1sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGRmMy9zcmMvdGVtcGxhdGVzL2RlZmF1bHQuaHRtbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDZDQUFzRDtBQUN0RCxrQkFBZSxDQUFDLEVBQ2QsUUFBUSxFQUNSLE9BQU8sRUFDUCxXQUFXLEVBQ1gsZUFBZSxHQU1oQixFQUFFLEVBQUUsQ0FBQzs7Ozs7a0RBSzRDLElBQUEsb0JBQU8sRUFBQyxPQUFPLENBQUM7cURBQ2IsSUFBQSxvQkFBTyxFQUFDLFFBQVEsQ0FBQzttRUFDSCxJQUFBLG9CQUFPLEVBQUMsV0FBVyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Y0FrRXpFLElBQUEsMEJBQWEsRUFBQyxlQUFlLENBQUM7Ozs7Ozs7OztzQ0FTTixJQUFBLDBCQUFhLEVBQUMsV0FBVyxDQUFDOzs7Ozs7b0NBTTVCLElBQUEsMEJBQWEsRUFBQyxXQUFXLENBQUM7Ozs7O1FBS3RELENBQUMifQ==
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.escJavaScript = exports.escHtml = void 0;
|
|
4
|
-
/** Javascript escape attribute strings. How is this not part of the lib?.
|
|
5
|
-
* https://stackoverflow.com/a/30970751
|
|
6
|
-
*/
|
|
7
|
-
function escHtml(plainString = '') {
|
|
8
|
-
return plainString.replace(/["'&<]/g, (c) => `&#${c.charCodeAt(0)};`);
|
|
9
|
-
}
|
|
10
|
-
exports.escHtml = escHtml;
|
|
11
|
-
function escJavaScript(plainString = '') {
|
|
12
|
-
return plainString.replace(/["'\\<]/g, (c) => `\\${c === '<' ? '074' : c}`);
|
|
13
|
-
}
|
|
14
|
-
exports.escJavaScript = escJavaScript;
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNjYXBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RkZjMvc3JjL3RlbXBsYXRlcy9lc2NhcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOztHQUVHO0FBQ0gsU0FBZ0IsT0FBTyxDQUFDLFdBQVcsR0FBRyxFQUFFO0lBQ3RDLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDeEUsQ0FBQztBQUZELDBCQUVDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLFdBQVcsR0FBRyxFQUFFO0lBQzVDLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzlFLENBQUM7QUFGRCxzQ0FFQyJ9
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.htmlWrapperTemplate = exports.escJavaScript = exports.escHtml = void 0;
|
|
7
|
-
var escaper_js_1 = require("./escaper.js");
|
|
8
|
-
Object.defineProperty(exports, "escHtml", { enumerable: true, get: function () { return escaper_js_1.escHtml; } });
|
|
9
|
-
Object.defineProperty(exports, "escJavaScript", { enumerable: true, get: function () { return escaper_js_1.escJavaScript; } });
|
|
10
|
-
var default_html_js_1 = require("./default.html.js");
|
|
11
|
-
Object.defineProperty(exports, "htmlWrapperTemplate", { enumerable: true, get: function () { return __importDefault(default_html_js_1).default; } });
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZGYzL3NyYy90ZW1wbGF0ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsMkNBQXNEO0FBQTdDLHFHQUFBLE9BQU8sT0FBQTtBQUFFLDJHQUFBLGFBQWEsT0FBQTtBQUMvQixxREFBbUU7QUFBMUQsdUlBQUEsT0FBTyxPQUF1QiJ9
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.fromDataSource = exports.fromUrl = exports.fromBuffer = exports.fromBrowserFile = void 0;
|
|
4
|
-
const DecoratedReadableStream_js_1 = require("../client/DecoratedReadableStream.js");
|
|
5
|
-
const errors_js_1 = require("../../../src/errors.js");
|
|
6
|
-
const fromBrowserFile = (fileRef) => {
|
|
7
|
-
return async (byteStart, byteEnd) => {
|
|
8
|
-
const chunkBlob = fileRef.slice(byteStart, byteEnd);
|
|
9
|
-
const arrayBuffer = await new Response(chunkBlob).arrayBuffer();
|
|
10
|
-
return new Uint8Array(arrayBuffer);
|
|
11
|
-
};
|
|
12
|
-
};
|
|
13
|
-
exports.fromBrowserFile = fromBrowserFile;
|
|
14
|
-
const fromBuffer = (source) => {
|
|
15
|
-
return (byteStart, byteEnd) => {
|
|
16
|
-
return Promise.resolve(source.slice(byteStart, byteEnd));
|
|
17
|
-
};
|
|
18
|
-
};
|
|
19
|
-
exports.fromBuffer = fromBuffer;
|
|
20
|
-
async function getRemoteChunk(url, range) {
|
|
21
|
-
// loop with fetch for three times, with an exponential backoff
|
|
22
|
-
// if the fetch fails with a network error
|
|
23
|
-
// this is to handle transient network errors
|
|
24
|
-
const errors = [];
|
|
25
|
-
for (let i = 0; i < 3; i++) {
|
|
26
|
-
let res;
|
|
27
|
-
try {
|
|
28
|
-
res = await fetch(url, {
|
|
29
|
-
redirect: 'follow',
|
|
30
|
-
...(range && {
|
|
31
|
-
headers: {
|
|
32
|
-
Range: `bytes=${range}`,
|
|
33
|
-
},
|
|
34
|
-
}),
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
catch (e) {
|
|
38
|
-
console.warn(`fetch failed with network error [${e}], retrying...`);
|
|
39
|
-
sleep(2 ** i * 1000);
|
|
40
|
-
continue;
|
|
41
|
-
}
|
|
42
|
-
if (!res.ok) {
|
|
43
|
-
if (res.status === 416) {
|
|
44
|
-
throw new errors_js_1.InvalidFileError(`${res.status}: range not satisfiable: requested [${range}] from [${url}]; response [${res.statusText}]`);
|
|
45
|
-
}
|
|
46
|
-
else if (res.status === 404) {
|
|
47
|
-
throw new errors_js_1.InvalidFileError(`${res.status}: [${url}] not found; response: [${res.statusText}]`);
|
|
48
|
-
}
|
|
49
|
-
console.warn(`fetch failed with status [${res.status}: ${res.statusText}], retrying...`);
|
|
50
|
-
// waits for 1, 2, 4 seconds
|
|
51
|
-
sleep(2 ** i * 1000);
|
|
52
|
-
continue;
|
|
53
|
-
}
|
|
54
|
-
const data = await res.arrayBuffer();
|
|
55
|
-
if (!data) {
|
|
56
|
-
throw new errors_js_1.NetworkError(`empty response for range request: requested [${range}] from [${url}]`);
|
|
57
|
-
}
|
|
58
|
-
return new Uint8Array(data);
|
|
59
|
-
}
|
|
60
|
-
throw new AggregateError(errors, 'fetch failed after 3 retries');
|
|
61
|
-
}
|
|
62
|
-
const fromUrl = async (location) => {
|
|
63
|
-
return async (byteStart, byteEnd) => {
|
|
64
|
-
if (byteStart === undefined) {
|
|
65
|
-
return getRemoteChunk(location);
|
|
66
|
-
}
|
|
67
|
-
let rangeHeader = `${byteStart}`;
|
|
68
|
-
if (byteEnd && byteEnd < 0) {
|
|
69
|
-
// NOTE: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range
|
|
70
|
-
throw Error('negative end unsupported');
|
|
71
|
-
}
|
|
72
|
-
else if (byteEnd) {
|
|
73
|
-
rangeHeader += `-${byteEnd - 1}`;
|
|
74
|
-
}
|
|
75
|
-
return await getRemoteChunk(location, rangeHeader);
|
|
76
|
-
};
|
|
77
|
-
};
|
|
78
|
-
exports.fromUrl = fromUrl;
|
|
79
|
-
const fromDataSource = async ({ type, location }) => {
|
|
80
|
-
switch (type) {
|
|
81
|
-
case 'buffer':
|
|
82
|
-
if (!(location instanceof Uint8Array)) {
|
|
83
|
-
throw new errors_js_1.ConfigurationError('Invalid data source; must be uint8 array');
|
|
84
|
-
}
|
|
85
|
-
return (0, exports.fromBuffer)(location);
|
|
86
|
-
case 'chunker':
|
|
87
|
-
if (!(location instanceof Function)) {
|
|
88
|
-
throw new errors_js_1.ConfigurationError('Invalid data source; must be uint8 array');
|
|
89
|
-
}
|
|
90
|
-
return location;
|
|
91
|
-
case 'file-browser':
|
|
92
|
-
if (!(location instanceof Blob)) {
|
|
93
|
-
throw new errors_js_1.ConfigurationError('Invalid data source; must be at least a Blob');
|
|
94
|
-
}
|
|
95
|
-
return (0, exports.fromBrowserFile)(location);
|
|
96
|
-
case 'remote':
|
|
97
|
-
if (typeof location !== 'string') {
|
|
98
|
-
throw new errors_js_1.ConfigurationError('Invalid data source; url not provided');
|
|
99
|
-
}
|
|
100
|
-
return (0, exports.fromUrl)(location);
|
|
101
|
-
case 'stream':
|
|
102
|
-
if (!(0, DecoratedReadableStream_js_1.isDecoratedReadableStream)(location)) {
|
|
103
|
-
throw new errors_js_1.ConfigurationError('Invalid data source; must be DecoratedTdfStream');
|
|
104
|
-
}
|
|
105
|
-
return (0, exports.fromBuffer)(await location.toBuffer());
|
|
106
|
-
default:
|
|
107
|
-
throw new errors_js_1.ConfigurationError(`Data source type not defined, or not supported: ${type}}`);
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
exports.fromDataSource = fromDataSource;
|
|
111
|
-
async function sleep(ms) {
|
|
112
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
113
|
-
}
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2h1bmtlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZGYzL3NyYy91dGlscy9jaHVua2Vycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxRkFHOEM7QUFDOUMsc0RBQTRGO0FBU3JGLE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBYSxFQUFXLEVBQUU7SUFDeEQsT0FBTyxLQUFLLEVBQUUsU0FBa0IsRUFBRSxPQUFnQixFQUF1QixFQUFFO1FBQ3pFLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3BELE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEUsT0FBTyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNyQyxDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7QUFOVyxRQUFBLGVBQWUsbUJBTTFCO0FBRUssTUFBTSxVQUFVLEdBQUcsQ0FBQyxNQUEyQixFQUFXLEVBQUU7SUFDakUsT0FBTyxDQUFDLFNBQWtCLEVBQUUsT0FBZ0IsRUFBRSxFQUFFO1FBQzlDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUpXLFFBQUEsVUFBVSxjQUlyQjtBQUVGLEtBQUssVUFBVSxjQUFjLENBQUMsR0FBVyxFQUFFLEtBQWM7SUFDdkQsK0RBQStEO0lBQy9ELDBDQUEwQztJQUMxQyw2Q0FBNkM7SUFDN0MsTUFBTSxNQUFNLEdBQVksRUFBRSxDQUFDO0lBQzNCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDMUIsSUFBSSxHQUFhLENBQUM7UUFD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
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.clientType = exports.version = void 0;
|
|
4
|
-
exports.version = '0.2.0';
|
|
5
|
-
exports.clientType = 'tdf3-js-client';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3RkZjMvc3JjL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQ2xCLFFBQUEsVUFBVSxHQUFHLGdCQUFnQixDQUFDIn0=
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { KeyUsageType } from './enums.js';
|
|
2
|
-
/**
|
|
3
|
-
* Import raw key
|
|
4
|
-
*
|
|
5
|
-
* A specific implementation of the importKey method to import raw keys. Specifies some defaults
|
|
6
|
-
* to ensure security.
|
|
7
|
-
*
|
|
8
|
-
* @param key Key which needs to be imported
|
|
9
|
-
* @param keyUsages How the key will be used
|
|
10
|
-
* @param isExtractable Whether key is extractable
|
|
11
|
-
*/
|
|
12
|
-
export default function importRawKey(key: ArrayBuffer, keyUsages: Array<KeyUsageType>, isExtractable?: boolean): Promise<CryptoKey>;
|
|
13
|
-
//# sourceMappingURL=importRawKey.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"importRawKey.d.ts","sourceRoot":"","sources":["../../../../src/nanotdf-crypto/importRawKey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,YAAY,EAAE,MAAM,YAAY,CAAC;AAEjE;;;;;;;;;GASG;AACH,wBAA8B,YAAY,CACxC,GAAG,EAAE,WAAW,EAChB,SAAS,EAAE,KAAK,CAAC,YAAY,CAAC,EAC9B,aAAa,UAAQ,GACpB,OAAO,CAAC,SAAS,CAAC,CAEpB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"default.html.d.ts","sourceRoot":"","sources":["../../../../../tdf3/src/templates/default.html.ts"],"names":[],"mappings":";cAOY,MAAM;aACP,MAAM;iBACF,MAAM;qBACF,MAAM;;AATzB,wBAuGS"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/** Javascript escape attribute strings. How is this not part of the lib?.
|
|
2
|
-
* https://stackoverflow.com/a/30970751
|
|
3
|
-
*/
|
|
4
|
-
export declare function escHtml(plainString?: string): string;
|
|
5
|
-
export declare function escJavaScript(plainString?: string): string;
|
|
6
|
-
//# sourceMappingURL=escaper.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"escaper.d.ts","sourceRoot":"","sources":["../../../../../tdf3/src/templates/escaper.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,OAAO,CAAC,WAAW,SAAK,UAEvC;AAED,wBAAgB,aAAa,CAAC,WAAW,SAAK,UAE7C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../tdf3/src/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" resolution-mode="require"/>
|
|
2
|
-
import { type DecoratedReadableStream } from '../client/DecoratedReadableStream.js';
|
|
3
|
-
/**
|
|
4
|
-
* Read data from a seekable stream.
|
|
5
|
-
* @param byteStart First byte to read. If negative, reads from the end. If absent, reads everything
|
|
6
|
-
* @param byteEnd Index after last byte to read (exclusive)
|
|
7
|
-
*/
|
|
8
|
-
export type Chunker = (byteStart?: number, byteEnd?: number) => Promise<Uint8Array>;
|
|
9
|
-
export declare const fromBrowserFile: (fileRef: Blob) => Chunker;
|
|
10
|
-
export declare const fromBuffer: (source: Uint8Array | Buffer) => Chunker;
|
|
11
|
-
export declare const fromUrl: (location: string) => Promise<Chunker>;
|
|
12
|
-
export type DataSource = {
|
|
13
|
-
type: 'buffer';
|
|
14
|
-
location: Uint8Array;
|
|
15
|
-
} | {
|
|
16
|
-
type: 'chunker';
|
|
17
|
-
location: Chunker;
|
|
18
|
-
} | {
|
|
19
|
-
type: 'file-browser';
|
|
20
|
-
location: Blob;
|
|
21
|
-
} | {
|
|
22
|
-
type: 'remote';
|
|
23
|
-
location: string;
|
|
24
|
-
} | {
|
|
25
|
-
type: 'stream';
|
|
26
|
-
location: DecoratedReadableStream;
|
|
27
|
-
};
|
|
28
|
-
export declare const fromDataSource: ({ type, location }: DataSource) => Promise<Chunker>;
|
|
29
|
-
//# sourceMappingURL=chunkers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunkers.d.ts","sourceRoot":"","sources":["../../../../../tdf3/src/utils/chunkers.ts"],"names":[],"mappings":";AAAA,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,sCAAsC,CAAC;AAG9C;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAEpF,eAAO,MAAM,eAAe,YAAa,IAAI,KAAG,OAM/C,CAAC;AAEF,eAAO,MAAM,UAAU,WAAY,UAAU,GAAG,MAAM,KAAG,OAIxD,CAAC;AAiDF,eAAO,MAAM,OAAO,aAAoB,MAAM,KAAG,QAAQ,OAAO,CAc/D,CAAC;AAEF,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,UAAU,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,uBAAuB,CAAA;CAAE,CAAC;AAE1D,eAAO,MAAM,cAAc,uBAA8B,UAAU,qBA8BlE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../../tdf3/src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,UAAU,mBAAmB,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { CipherType, KeyFormat } from './enums.js';
|
|
2
|
-
/**
|
|
3
|
-
* Import raw key
|
|
4
|
-
*
|
|
5
|
-
* A specific implementation of the importKey method to import raw keys. Specifies some defaults
|
|
6
|
-
* to ensure security.
|
|
7
|
-
*
|
|
8
|
-
* @param key Key which needs to be imported
|
|
9
|
-
* @param keyUsages How the key will be used
|
|
10
|
-
* @param isExtractable Whether key is extractable
|
|
11
|
-
*/
|
|
12
|
-
export default async function importRawKey(key, keyUsages, isExtractable = false) {
|
|
13
|
-
return crypto.subtle.importKey(KeyFormat.Raw, key, CipherType.AesGcm, isExtractable, keyUsages);
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0UmF3S2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25hbm90ZGYtY3J5cHRvL2ltcG9ydFJhd0tleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxZQUFZLENBQUM7QUFFakU7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLFVBQVUsWUFBWSxDQUN4QyxHQUFnQixFQUNoQixTQUE4QixFQUM5QixhQUFhLEdBQUcsS0FBSztJQUVyQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFVBQVUsQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ2xHLENBQUMifQ==
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { escHtml, escJavaScript } from './escaper.js';
|
|
2
|
-
export default ({ manifest, payload, transferUrl, transferBaseUrl, }) => `<html>
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
</head>
|
|
6
|
-
<body style="font-family: Arial; color: #2D323B; overflow: hidden; margin: 0; height: 100%; background-color: white;">
|
|
7
|
-
<input id="data-input" type="hidden" value="${escHtml(payload)}">
|
|
8
|
-
<input id="data-manifest" type="hidden" value="${escHtml(manifest)}">
|
|
9
|
-
<iframe style="width:0;height:0;border:0; border:none;" src="${escHtml(transferUrl)}"></iframe>
|
|
10
|
-
<div role="banner" style="background-color: #092356; color: white; height: 55px;">
|
|
11
|
-
<img src="https://cdn.virtru.com/assets/virtru-logo-white-rgb.png"
|
|
12
|
-
style="display: inline-block; padding: 18px 0 0 24px;"
|
|
13
|
-
width="62px" height="19px" alt="Virtru logo" title="Virtru"/>
|
|
14
|
-
</div>
|
|
15
|
-
<div role="main" class="wrapper" style="padding-top: 107px; display: flex; flex-direction: row; max-width: 1200px;
|
|
16
|
-
min-width: 800px; margin: 0 auto; min-height: calc(100vh - 230px); border-bottom: 1px solid #F3F5F7;">
|
|
17
|
-
<div role="region">
|
|
18
|
-
<img src="https://cdn.virtru.com/assets/request-access.png" style="display: inline-block;"
|
|
19
|
-
width="387px" height="310px" alt="Request access image" title="Request access"/>
|
|
20
|
-
</div>
|
|
21
|
-
<div role="complementary" style="word-break: break-all; padding-right: 12px;">
|
|
22
|
-
<h1 style="font-size: 1.5em;">Virtru Secure File</h1>
|
|
23
|
-
<noscript style="font-weight: 100;">
|
|
24
|
-
<span>
|
|
25
|
-
To view this file, download and access it from your computer:
|
|
26
|
-
<br />
|
|
27
|
-
<br />
|
|
28
|
-
</span>
|
|
29
|
-
<div>
|
|
30
|
-
1. <b>Go Back</b> to the file directory and <b>Right-click</b> on the file
|
|
31
|
-
</div>
|
|
32
|
-
<div>
|
|
33
|
-
2. Select <b>Download</b>
|
|
34
|
-
</div>
|
|
35
|
-
<div>
|
|
36
|
-
3. Once download is complete, <b>double-click</b> on the local file to open
|
|
37
|
-
</div>
|
|
38
|
-
</noscript>
|
|
39
|
-
<div id="js-enabled-message" style="display: none;">
|
|
40
|
-
<span>We are trying to send you to Secure Reader. If this does not work, please click the button below</span>
|
|
41
|
-
<br />
|
|
42
|
-
<button
|
|
43
|
-
id="viewbutton"
|
|
44
|
-
style="color: #fff!important; background: gray; padding: 10px 40px; border-radius: 25px; display: inline-block; border: none; font-size: 15px; width: 300px; margin-block-start: 1.1em;
|
|
45
|
-
margin-block-end: 1.1em;"
|
|
46
|
-
class="viewbutton"
|
|
47
|
-
type="button"
|
|
48
|
-
>
|
|
49
|
-
View File in Secure Reader
|
|
50
|
-
</button>
|
|
51
|
-
</div>
|
|
52
|
-
</div>
|
|
53
|
-
</div>
|
|
54
|
-
<div role="contentinfo" style="color: grey; text-align: center; padding-top: 25px; font-family: Arial;">
|
|
55
|
-
<span style="padding: 25px; font-size: 13px;">© Copyright 2019 Virtru Corporation</span>
|
|
56
|
-
<span style="padding: 25px; font-size: 13px;">Learn more at www.virtru.com</span>
|
|
57
|
-
</div>
|
|
58
|
-
<script type="text/javascript">
|
|
59
|
-
var transferComplete = false;
|
|
60
|
-
var data = document.getElementById('data-input').value;
|
|
61
|
-
var manifest = JSON.parse(atob(document.getElementById('data-manifest').value));
|
|
62
|
-
var redirectButton = document.getElementById('viewbutton');
|
|
63
|
-
var ifr = document.querySelector('iframe');
|
|
64
|
-
var otherWindow = ifr.contentWindow;
|
|
65
|
-
|
|
66
|
-
document.getElementById('js-enabled-message').style.display = 'block';
|
|
67
|
-
ifr.addEventListener("load", iframeLoaded, false);
|
|
68
|
-
|
|
69
|
-
function iframeLoaded() {
|
|
70
|
-
var channel = new MessageChannel();
|
|
71
|
-
otherWindow.postMessage({
|
|
72
|
-
type: 'tdf.html',
|
|
73
|
-
data: data,
|
|
74
|
-
policy: manifest.encryptionInformation.policy
|
|
75
|
-
}, '${escJavaScript(transferBaseUrl)}', [channel.port2]);
|
|
76
|
-
|
|
77
|
-
channel.port1.onmessage = handleMessage;
|
|
78
|
-
|
|
79
|
-
function handleMessage(e) {
|
|
80
|
-
let msg = e.data;
|
|
81
|
-
if (msg.status === 'success') {
|
|
82
|
-
transferComplete = true;
|
|
83
|
-
redirectButton.style.background = '#4585ff';
|
|
84
|
-
window.location.href = "${escJavaScript(transferUrl)}";
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
redirectButton.onclick = function(){
|
|
89
|
-
if (transferComplete) {
|
|
90
|
-
window.location.href = "${escJavaScript(transferUrl)}";
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
</script>
|
|
94
|
-
</body>
|
|
95
|
-
</html>`;
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC5odG1sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vdGRmMy9zcmMvdGVtcGxhdGVzL2RlZmF1bHQuaHRtbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0RCxlQUFlLENBQUMsRUFDZCxRQUFRLEVBQ1IsT0FBTyxFQUNQLFdBQVcsRUFDWCxlQUFlLEdBTWhCLEVBQUUsRUFBRSxDQUFDOzs7OztrREFLNEMsT0FBTyxDQUFDLE9BQU8sQ0FBQztxREFDYixPQUFPLENBQUMsUUFBUSxDQUFDO21FQUNILE9BQU8sQ0FBQyxXQUFXLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztjQWtFekUsYUFBYSxDQUFDLGVBQWUsQ0FBQzs7Ozs7Ozs7O3NDQVNOLGFBQWEsQ0FBQyxXQUFXLENBQUM7Ozs7OztvQ0FNNUIsYUFBYSxDQUFDLFdBQVcsQ0FBQzs7Ozs7UUFLdEQsQ0FBQyJ9
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/** Javascript escape attribute strings. How is this not part of the lib?.
|
|
2
|
-
* https://stackoverflow.com/a/30970751
|
|
3
|
-
*/
|
|
4
|
-
export function escHtml(plainString = '') {
|
|
5
|
-
return plainString.replace(/["'&<]/g, (c) => `&#${c.charCodeAt(0)};`);
|
|
6
|
-
}
|
|
7
|
-
export function escJavaScript(plainString = '') {
|
|
8
|
-
return plainString.replace(/["'\\<]/g, (c) => `\\${c === '<' ? '074' : c}`);
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNjYXBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3RkZjMvc3JjL3RlbXBsYXRlcy9lc2NhcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxVQUFVLE9BQU8sQ0FBQyxXQUFXLEdBQUcsRUFBRTtJQUN0QyxPQUFPLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFFRCxNQUFNLFVBQVUsYUFBYSxDQUFDLFdBQVcsR0FBRyxFQUFFO0lBQzVDLE9BQU8sV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzlFLENBQUMifQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export { escHtml, escJavaScript } from './escaper.js';
|
|
2
|
-
export { default as htmlWrapperTemplate } from './default.html.js';
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZGYzL3NyYy90ZW1wbGF0ZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sSUFBSSxtQkFBbUIsRUFBRSxNQUFNLG1CQUFtQixDQUFDIn0=
|