@wireapp/core-crypto 0.6.0-rc.4 → 0.6.0-rc.6
Sign up to get free protection for your applications and to get access to all the features.
package/package.json
CHANGED
@@ -1,63 +1,65 @@
|
|
1
1
|
{
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
2
|
+
"name": "@wireapp/core-crypto",
|
3
|
+
"version": "0.6.0-rc.6",
|
4
|
+
"description": "CoreCrypto bindings for the Web",
|
5
|
+
"type": "module",
|
6
|
+
"module": "platforms/web/corecrypto.js",
|
7
|
+
"types": "platforms/web/corecrypto.d.js",
|
8
|
+
"scripts": {
|
9
|
+
"prepare": "npm run build",
|
10
|
+
"build": "npm run clean && rollup -c crypto-ffi/bindings/js/rollup.config.js",
|
11
|
+
"build:test": "npm run clean && rollup -c crypto-ffi/bindings/js/rollup.config.test.js",
|
12
|
+
"clean": "rm -f ./platforms/web/*.{js,ts,wasm,html} && rm -rf ./platforms/web/assets",
|
13
|
+
"package": "npm run build && npm pack",
|
14
|
+
"test:raw": "jest -c crypto-ffi/bindings/js/jest.config.js --runInBand",
|
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 --runInBand",
|
17
|
+
"test:http-server": "http-server platforms/web -g -p 3000"
|
18
|
+
},
|
19
|
+
"publishConfig": {
|
20
|
+
"access": "public"
|
21
|
+
},
|
22
|
+
"files": [
|
23
|
+
"platforms/web"
|
24
|
+
],
|
25
|
+
"keywords": [
|
26
|
+
"wire",
|
27
|
+
"e2ee",
|
28
|
+
"corecrypto",
|
29
|
+
"mls",
|
30
|
+
"proteus"
|
31
|
+
],
|
32
|
+
"author": "Mathieu Amiot <amiot.mathieu@gmail.com>",
|
33
|
+
"license": "GPL-3.0",
|
34
|
+
"homepage": "https://github.com/wireapp/core-crypto",
|
35
|
+
"repository": {
|
36
|
+
"type": "git",
|
37
|
+
"url": "git@github.com:wireapp/core-crypto.git"
|
38
|
+
},
|
39
|
+
"bugs": {
|
40
|
+
"url": "https://github.com/wireapp/core-crypto/issues"
|
41
|
+
},
|
42
|
+
"devDependencies": {
|
43
|
+
"@rollup/plugin-html": "^1.0.2",
|
44
|
+
"@types/jest": "^29.4.0",
|
45
|
+
"@types/jest-dev-server": "^5.0.0",
|
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",
|
52
|
+
"eslint-plugin-prettier": "^4.2.1",
|
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"
|
64
|
+
}
|
65
|
+
}
|
Binary file
|
@@ -1,4 +1,4 @@
|
|
1
|
-
declare class
|
1
|
+
declare class FfiWireE2EIdentity {
|
2
2
|
free(): void;
|
3
3
|
/**
|
4
4
|
* See [core_crypto::e2e_identity::WireE2eIdentity::directory_response]
|
@@ -119,6 +119,24 @@ declare class WireE2eIdentity {
|
|
119
119
|
*/
|
120
120
|
certificate_response(certificate_chain: string): (Uint8Array)[];
|
121
121
|
}
|
122
|
+
/**
|
123
|
+
* Error wrapper that takes care of extracting rich error details across the FFI (through JSON parsing)
|
124
|
+
*
|
125
|
+
* Whenever you're supposed to get this class (that extends `Error`) you might end up with a base `Error`
|
126
|
+
* in case the parsing of the message structure fails. This is unlikely but the case is still covered and fall backs automatically.
|
127
|
+
* More information will be found in the base `Error.cause` to inform you why the parsing has failed.
|
128
|
+
*
|
129
|
+
* Please note that in this case the extra properties will not be available.
|
130
|
+
*/
|
131
|
+
export declare class CoreCryptoError extends Error {
|
132
|
+
rustStackTrace: string;
|
133
|
+
proteusErrorCode: number;
|
134
|
+
private constructor();
|
135
|
+
private static fallback;
|
136
|
+
static build(msg: string, ...params: any[]): CoreCryptoError | Error;
|
137
|
+
static fromStdError(e: Error): CoreCryptoError | Error;
|
138
|
+
static asyncMapErr<T>(p: Promise<T>): Promise<T>;
|
139
|
+
}
|
122
140
|
/**
|
123
141
|
* see [core_crypto::prelude::CiphersuiteName]
|
124
142
|
*/
|
@@ -308,10 +326,10 @@ export declare enum RatchetTreeType {
|
|
308
326
|
ByRef = 3
|
309
327
|
}
|
310
328
|
/**
|
311
|
-
* Params for CoreCrypto initialization
|
329
|
+
* Params for CoreCrypto deferred initialization
|
312
330
|
* Please note that the `entropySeed` parameter MUST be exactly 32 bytes
|
313
331
|
*/
|
314
|
-
export interface
|
332
|
+
export interface CoreCryptoDeferredParams {
|
315
333
|
/**
|
316
334
|
* Name of the IndexedDB database
|
317
335
|
*/
|
@@ -321,11 +339,6 @@ export interface CoreCryptoParams {
|
|
321
339
|
* This should be appropriately stored in a secure location (i.e. WebCrypto private key storage)
|
322
340
|
*/
|
323
341
|
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
342
|
/**
|
330
343
|
* External PRNG entropy pool seed.
|
331
344
|
* This **must** be exactly 32 bytes
|
@@ -336,6 +349,17 @@ export interface CoreCryptoParams {
|
|
336
349
|
*/
|
337
350
|
wasmFilePath?: string;
|
338
351
|
}
|
352
|
+
/**
|
353
|
+
* Params for CoreCrypto initialization
|
354
|
+
* Please note that the `entropySeed` parameter MUST be exactly 32 bytes
|
355
|
+
*/
|
356
|
+
export interface CoreCryptoParams extends CoreCryptoDeferredParams {
|
357
|
+
/**
|
358
|
+
* MLS Client ID.
|
359
|
+
* This should stay consistent as it will be verified against the stored signature & identity to validate the persisted credential
|
360
|
+
*/
|
361
|
+
clientId: ClientId;
|
362
|
+
}
|
339
363
|
/**
|
340
364
|
* Data shape for adding clients to a conversation
|
341
365
|
*/
|
@@ -522,10 +546,11 @@ export interface CoreCryptoCallbacks {
|
|
522
546
|
* Callback to ensure that the given `clientId` belongs to one of the provided `existingClients`
|
523
547
|
* This basically allows to defer the client ID parsing logic to the caller - because CoreCrypto is oblivious to such things
|
524
548
|
*
|
549
|
+
* @param conversationId - id of the group/conversation
|
525
550
|
* @param clientId - id of a client
|
526
551
|
* @param existingClients - all the clients currently within the MLS group
|
527
552
|
*/
|
528
|
-
clientIsExistingGroupUser: (clientId: Uint8Array, existingClients: Uint8Array[]) => boolean;
|
553
|
+
clientIsExistingGroupUser: (conversationId: Uint8Array, clientId: Uint8Array, existingClients: Uint8Array[]) => boolean;
|
529
554
|
}
|
530
555
|
/**
|
531
556
|
* Wrapper for the WASM-compiled version of CoreCrypto
|
@@ -571,8 +596,9 @@ export declare class CoreCrypto {
|
|
571
596
|
* First, calling this will set up the keystore and will allow generating proteus prekeys.
|
572
597
|
* Then, those keys can be traded for a clientId.
|
573
598
|
* Use this clientId to initialize MLS with {@link CoreCrypto.mlsInit}.
|
599
|
+
* @param params - {@link CoreCryptoDeferredParams}
|
574
600
|
*/
|
575
|
-
static deferredInit(databaseName
|
601
|
+
static deferredInit({ databaseName, key, entropySeed, wasmFilePath }: CoreCryptoDeferredParams): Promise<CoreCrypto>;
|
576
602
|
/**
|
577
603
|
* Use this after {@link CoreCrypto.deferredInit} when you have a clientId. It initializes MLS.
|
578
604
|
*
|
@@ -963,6 +989,11 @@ export declare class CoreCrypto {
|
|
963
989
|
* @param storeName - The name of the IndexedDB store where the data is stored
|
964
990
|
*/
|
965
991
|
proteusCryptoboxMigrate(storeName: string): Promise<void>;
|
992
|
+
/**
|
993
|
+
* Note: this call clears out the code and resets it to 0 (aka no error)
|
994
|
+
* @returns the last proteus error code that occured.
|
995
|
+
*/
|
996
|
+
proteusLastErrorCode(): Promise<number>;
|
966
997
|
/**
|
967
998
|
* Creates an enrollment instance with private key material you can use in order to fetch
|
968
999
|
* a new x509 certificate from the acme server.
|
@@ -985,7 +1016,7 @@ type AcmeOrder = Uint8Array;
|
|
985
1016
|
export declare class WireE2eIdentity {
|
986
1017
|
#private;
|
987
1018
|
/** @hidden */
|
988
|
-
constructor(e2ei: CoreCryptoFfiTypes.
|
1019
|
+
constructor(e2ei: CoreCryptoFfiTypes.FfiWireE2EIdentity);
|
989
1020
|
/**
|
990
1021
|
* Parses the response from `GET /acme/{provisioner-name}/directory`.
|
991
1022
|
* Use this {@link AcmeDirectory} in the next step to fetch the first nonce from the acme server. Use
|