@wireapp/core-crypto 0.6.0-rc.5 → 0.6.0-rc.7
Sign up to get free protection for your applications and to get access to all the features.
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@wireapp/core-crypto",
|
3
|
-
"version": "0.6.0-rc.
|
3
|
+
"version": "0.6.0-rc.7",
|
4
4
|
"description": "CoreCrypto bindings for the Web",
|
5
5
|
"type": "module",
|
6
6
|
"module": "platforms/web/corecrypto.js",
|
@@ -11,9 +11,10 @@
|
|
11
11
|
"build:test": "npm run clean && rollup -c crypto-ffi/bindings/js/rollup.config.test.js",
|
12
12
|
"clean": "rm -f ./platforms/web/*.{js,ts,wasm,html} && rm -rf ./platforms/web/assets",
|
13
13
|
"package": "npm run build && npm pack",
|
14
|
-
"test:raw": "jest -c crypto-ffi/bindings/js/jest.config.js --
|
14
|
+
"test:raw": "jest -c crypto-ffi/bindings/js/jest.config.js --runInBand",
|
15
15
|
"test": "npm run build:test && npm run test:raw",
|
16
|
-
"test:cov": "npm run build:test && jest -c crypto-ffi/bindings/js/jest.config.js --coverage --
|
16
|
+
"test:cov": "npm run build:test && jest -c crypto-ffi/bindings/js/jest.config.js --coverage --runInBand",
|
17
|
+
"test:http-server": "http-server platforms/web -g -p 3000"
|
17
18
|
},
|
18
19
|
"publishConfig": {
|
19
20
|
"access": "public"
|
@@ -39,25 +40,26 @@
|
|
39
40
|
"url": "https://github.com/wireapp/core-crypto/issues"
|
40
41
|
},
|
41
42
|
"devDependencies": {
|
42
|
-
"@rollup/plugin-html": "^0.2
|
43
|
-
"@types/jest": "^29.0
|
43
|
+
"@rollup/plugin-html": "^1.0.2",
|
44
|
+
"@types/jest": "^29.4.0",
|
44
45
|
"@types/jest-dev-server": "^5.0.0",
|
45
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
46
|
-
"@typescript-eslint/parser": "^5.
|
47
|
-
"@wasm-tool/rollup-plugin-rust": "^2.3.
|
48
|
-
"dts-bundle-generator": "^
|
49
|
-
"eslint": "^8.
|
50
|
-
"eslint-config-prettier": "^8.
|
46
|
+
"@typescript-eslint/eslint-plugin": "^5.50.0",
|
47
|
+
"@typescript-eslint/parser": "^5.50.0",
|
48
|
+
"@wasm-tool/rollup-plugin-rust": "^2.3.3",
|
49
|
+
"dts-bundle-generator": "^7.2.0",
|
50
|
+
"eslint": "^8.33.0",
|
51
|
+
"eslint-config-prettier": "^8.6.0",
|
51
52
|
"eslint-plugin-prettier": "^4.2.1",
|
52
|
-
"
|
53
|
-
"jest
|
54
|
-
"
|
55
|
-
"
|
56
|
-
"
|
57
|
-
"rollup
|
58
|
-
"rollup-
|
59
|
-
"ts
|
60
|
-
"ts-
|
61
|
-
"
|
53
|
+
"http-server": "^14.1.1",
|
54
|
+
"jest": "^29.4.1",
|
55
|
+
"jest-dev-server": "^6.2.0",
|
56
|
+
"prettier": "^2.8.3",
|
57
|
+
"puppeteer": "^19.6.2",
|
58
|
+
"rollup": "^3.12.0",
|
59
|
+
"rollup-jest": "^3.1.0",
|
60
|
+
"rollup-plugin-ts": "^3.2.0",
|
61
|
+
"ts-jest": "^29.0.5",
|
62
|
+
"ts-loader": "^9.4.2",
|
63
|
+
"typescript": "^4.9.5"
|
62
64
|
}
|
63
65
|
}
|
Binary file
|
@@ -1,123 +1,20 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
* @param {Uint8Array} account
|
19
|
-
* @returns {Uint8Array}
|
20
|
-
*/
|
21
|
-
new_account_response(account: Uint8Array): Uint8Array;
|
22
|
-
/**
|
23
|
-
* See [core_crypto::e2e_identity::WireE2eIdentity::new_order_request]
|
24
|
-
* @param {string} handle
|
25
|
-
* @param {string} client_id
|
26
|
-
* @param {number} expiry_days
|
27
|
-
* @param {any} directory
|
28
|
-
* @param {Uint8Array} account
|
29
|
-
* @param {string} previous_nonce
|
30
|
-
* @returns {Uint8Array}
|
31
|
-
*/
|
32
|
-
new_order_request(handle: string, client_id: string, expiry_days: number, directory: any, account: Uint8Array, previous_nonce: string): Uint8Array;
|
33
|
-
/**
|
34
|
-
* See [core_crypto::e2e_identity::WireE2eIdentity::new_order_response]
|
35
|
-
* @param {Uint8Array} order
|
36
|
-
* @returns {any}
|
37
|
-
*/
|
38
|
-
new_order_response(order: Uint8Array): any;
|
39
|
-
/**
|
40
|
-
* See [core_crypto::e2e_identity::WireE2eIdentity::new_authz_request]
|
41
|
-
* @param {string} url
|
42
|
-
* @param {Uint8Array} account
|
43
|
-
* @param {string} previous_nonce
|
44
|
-
* @returns {Uint8Array}
|
45
|
-
*/
|
46
|
-
new_authz_request(url: string, account: Uint8Array, previous_nonce: string): Uint8Array;
|
47
|
-
/**
|
48
|
-
* See [core_crypto::e2e_identity::WireE2eIdentity::new_authz_response]
|
49
|
-
* @param {Uint8Array} authz
|
50
|
-
* @returns {any}
|
51
|
-
*/
|
52
|
-
new_authz_response(authz: Uint8Array): any;
|
53
|
-
/**
|
54
|
-
* See [core_crypto::e2e_identity::WireE2eIdentity::create_dpop_token]
|
55
|
-
* @param {string} access_token_url
|
56
|
-
* @param {string} user_id
|
57
|
-
* @param {bigint} client_id
|
58
|
-
* @param {string} domain
|
59
|
-
* @param {any} client_id_challenge
|
60
|
-
* @param {string} backend_nonce
|
61
|
-
* @param {number} expiry_days
|
62
|
-
* @returns {string}
|
63
|
-
*/
|
64
|
-
create_dpop_token(access_token_url: string, user_id: string, client_id: bigint, domain: string, client_id_challenge: any, backend_nonce: string, expiry_days: number): string;
|
65
|
-
/**
|
66
|
-
* See [core_crypto::e2e_identity::WireE2eIdentity::new_challenge_request]
|
67
|
-
* @param {any} handle_challenge
|
68
|
-
* @param {Uint8Array} account
|
69
|
-
* @param {string} previous_nonce
|
70
|
-
* @returns {Uint8Array}
|
71
|
-
*/
|
72
|
-
new_challenge_request(handle_challenge: any, account: Uint8Array, previous_nonce: string): Uint8Array;
|
73
|
-
/**
|
74
|
-
* See [core_crypto::e2e_identity::WireE2eIdentity::new_challenge_response]
|
75
|
-
* @param {Uint8Array} challenge
|
76
|
-
*/
|
77
|
-
new_challenge_response(challenge: Uint8Array): void;
|
78
|
-
/**
|
79
|
-
* See [core_crypto::e2e_identity::WireE2eIdentity::check_order_request]
|
80
|
-
* @param {string} order_url
|
81
|
-
* @param {Uint8Array} account
|
82
|
-
* @param {string} previous_nonce
|
83
|
-
* @returns {Uint8Array}
|
84
|
-
*/
|
85
|
-
check_order_request(order_url: string, account: Uint8Array, previous_nonce: string): Uint8Array;
|
86
|
-
/**
|
87
|
-
* See [core_crypto::e2e_identity::WireE2eIdentity::check_order_response]
|
88
|
-
* @param {Uint8Array} order
|
89
|
-
* @returns {Uint8Array}
|
90
|
-
*/
|
91
|
-
check_order_response(order: Uint8Array): Uint8Array;
|
92
|
-
/**
|
93
|
-
* See [core_crypto::e2e_identity::WireE2eIdentity::finalize_request]
|
94
|
-
* @param {(Uint8Array)[]} domains
|
95
|
-
* @param {Uint8Array} order
|
96
|
-
* @param {Uint8Array} account
|
97
|
-
* @param {string} previous_nonce
|
98
|
-
* @returns {Uint8Array}
|
99
|
-
*/
|
100
|
-
finalize_request(domains: (Uint8Array)[], order: Uint8Array, account: Uint8Array, previous_nonce: string): Uint8Array;
|
101
|
-
/**
|
102
|
-
* See [core_crypto::e2e_identity::WireE2eIdentity::finalize_response]
|
103
|
-
* @param {Uint8Array} finalize
|
104
|
-
* @returns {any}
|
105
|
-
*/
|
106
|
-
finalize_response(finalize: Uint8Array): any;
|
107
|
-
/**
|
108
|
-
* See [core_crypto::e2e_identity::WireE2eIdentity::certificate_request]
|
109
|
-
* @param {any} finalize
|
110
|
-
* @param {Uint8Array} account
|
111
|
-
* @param {string} previous_nonce
|
112
|
-
* @returns {Uint8Array}
|
113
|
-
*/
|
114
|
-
certificate_request(finalize: any, account: Uint8Array, previous_nonce: string): Uint8Array;
|
115
|
-
/**
|
116
|
-
* See [core_crypto::e2e_identity::WireE2eIdentity::certificate_response]
|
117
|
-
* @param {string} certificate_chain
|
118
|
-
* @returns {(Uint8Array)[]}
|
119
|
-
*/
|
120
|
-
certificate_response(certificate_chain: string): (Uint8Array)[];
|
1
|
+
/**
|
2
|
+
* Error wrapper that takes care of extracting rich error details across the FFI (through JSON parsing)
|
3
|
+
*
|
4
|
+
* Whenever you're supposed to get this class (that extends `Error`) you might end up with a base `Error`
|
5
|
+
* in case the parsing of the message structure fails. This is unlikely but the case is still covered and fall backs automatically.
|
6
|
+
* More information will be found in the base `Error.cause` to inform you why the parsing has failed.
|
7
|
+
*
|
8
|
+
* Please note that in this case the extra properties will not be available.
|
9
|
+
*/
|
10
|
+
export declare class CoreCryptoError extends Error {
|
11
|
+
rustStackTrace: string;
|
12
|
+
proteusErrorCode: number;
|
13
|
+
private constructor();
|
14
|
+
private static fallback;
|
15
|
+
static build(msg: string, ...params: any[]): CoreCryptoError | Error;
|
16
|
+
static fromStdError(e: Error): CoreCryptoError | Error;
|
17
|
+
static asyncMapErr<T>(p: Promise<T>): Promise<T>;
|
121
18
|
}
|
122
19
|
/**
|
123
20
|
* see [core_crypto::prelude::CiphersuiteName]
|
@@ -308,10 +205,10 @@ export declare enum RatchetTreeType {
|
|
308
205
|
ByRef = 3
|
309
206
|
}
|
310
207
|
/**
|
311
|
-
* Params for CoreCrypto initialization
|
208
|
+
* Params for CoreCrypto deferred initialization
|
312
209
|
* Please note that the `entropySeed` parameter MUST be exactly 32 bytes
|
313
210
|
*/
|
314
|
-
export interface
|
211
|
+
export interface CoreCryptoDeferredParams {
|
315
212
|
/**
|
316
213
|
* Name of the IndexedDB database
|
317
214
|
*/
|
@@ -321,11 +218,6 @@ export interface CoreCryptoParams {
|
|
321
218
|
* This should be appropriately stored in a secure location (i.e. WebCrypto private key storage)
|
322
219
|
*/
|
323
220
|
key: string;
|
324
|
-
/**
|
325
|
-
* MLS Client ID.
|
326
|
-
* This should stay consistent as it will be verified against the stored signature & identity to validate the persisted credential
|
327
|
-
*/
|
328
|
-
clientId: ClientId;
|
329
221
|
/**
|
330
222
|
* External PRNG entropy pool seed.
|
331
223
|
* This **must** be exactly 32 bytes
|
@@ -336,6 +228,17 @@ export interface CoreCryptoParams {
|
|
336
228
|
*/
|
337
229
|
wasmFilePath?: string;
|
338
230
|
}
|
231
|
+
/**
|
232
|
+
* Params for CoreCrypto initialization
|
233
|
+
* Please note that the `entropySeed` parameter MUST be exactly 32 bytes
|
234
|
+
*/
|
235
|
+
export interface CoreCryptoParams extends CoreCryptoDeferredParams {
|
236
|
+
/**
|
237
|
+
* MLS Client ID.
|
238
|
+
* This should stay consistent as it will be verified against the stored signature & identity to validate the persisted credential
|
239
|
+
*/
|
240
|
+
clientId: ClientId;
|
241
|
+
}
|
339
242
|
/**
|
340
243
|
* Data shape for adding clients to a conversation
|
341
244
|
*/
|
@@ -572,8 +475,9 @@ export declare class CoreCrypto {
|
|
572
475
|
* First, calling this will set up the keystore and will allow generating proteus prekeys.
|
573
476
|
* Then, those keys can be traded for a clientId.
|
574
477
|
* Use this clientId to initialize MLS with {@link CoreCrypto.mlsInit}.
|
478
|
+
* @param params - {@link CoreCryptoDeferredParams}
|
575
479
|
*/
|
576
|
-
static deferredInit(databaseName
|
480
|
+
static deferredInit({ databaseName, key, entropySeed, wasmFilePath }: CoreCryptoDeferredParams): Promise<CoreCrypto>;
|
577
481
|
/**
|
578
482
|
* Use this after {@link CoreCrypto.deferredInit} when you have a clientId. It initializes MLS.
|
579
483
|
*
|
@@ -964,6 +868,11 @@ export declare class CoreCrypto {
|
|
964
868
|
* @param storeName - The name of the IndexedDB store where the data is stored
|
965
869
|
*/
|
966
870
|
proteusCryptoboxMigrate(storeName: string): Promise<void>;
|
871
|
+
/**
|
872
|
+
* Note: this call clears out the code and resets it to 0 (aka no error)
|
873
|
+
* @returns the last proteus error code that occured.
|
874
|
+
*/
|
875
|
+
proteusLastErrorCode(): Promise<number>;
|
967
876
|
/**
|
968
877
|
* Creates an enrollment instance with private key material you can use in order to fetch
|
969
878
|
* a new x509 certificate from the acme server.
|
@@ -986,7 +895,7 @@ type AcmeOrder = Uint8Array;
|
|
986
895
|
export declare class WireE2eIdentity {
|
987
896
|
#private;
|
988
897
|
/** @hidden */
|
989
|
-
constructor(e2ei:
|
898
|
+
constructor(e2ei: unknown);
|
990
899
|
/**
|
991
900
|
* Parses the response from `GET /acme/{provisioner-name}/directory`.
|
992
901
|
* Use this {@link AcmeDirectory} in the next step to fetch the first nonce from the acme server. Use
|
@@ -1103,13 +1012,13 @@ export declare class WireE2eIdentity {
|
|
1103
1012
|
/**
|
1104
1013
|
* Final step before fetching the certificate.
|
1105
1014
|
*
|
1106
|
-
* @param domains you want to generate a certificate for e.g. `["wire.com"]`
|
1107
|
-
* @param order you got from {@link checkOrderResponse}
|
1108
|
-
* @param account you found after {@link newAccountResponse}
|
1109
|
-
* @param previousNonce `replay-nonce` response header from `POST /acme/{provisioner-name}/order/{order-id}`
|
1015
|
+
* @param domains - domains you want to generate a certificate for e.g. `["wire.com"]`
|
1016
|
+
* @param order - order you got from {@link checkOrderResponse}
|
1017
|
+
* @param account - account you found after {@link newAccountResponse}
|
1018
|
+
* @param previousNonce - `replay-nonce` response header from `POST /acme/{provisioner-name}/order/{order-id}`
|
1110
1019
|
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
|
1111
1020
|
*/
|
1112
|
-
finalizeRequest(domains:
|
1021
|
+
finalizeRequest(domains: string[], order: AcmeOrder, account: AcmeAccount, previousNonce: string): JsonRawData;
|
1113
1022
|
/**
|
1114
1023
|
* Parses the response from `POST /acme/{provisioner-name}/order/{order-id}/finalize`.
|
1115
1024
|
*
|