@wireapp/core-crypto 0.4.0 → 0.5.1
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/package.json +13 -13
- package/platforms/web/assets/core_crypto_ffi-ec1f65ea.wasm +0 -0
- package/platforms/web/corecrypto.d.ts +55 -27
- package/platforms/web/corecrypto.js +266 -208
- package/platforms/web/assets/core_crypto_ffi-0df6a73f.wasm +0 -0
- package/platforms/web/es2017/assets/core_crypto_ffi-e63ef1c1.wasm +0 -0
- package/platforms/web/es2017/corecrypto.d.ts +0 -644
- package/platforms/web/es2017/corecrypto.js +0 -2284
- package/platforms/web/es2019/assets/core_crypto_ffi-e63ef1c1.wasm +0 -0
- package/platforms/web/es2019/corecrypto.d.ts +0 -644
- package/platforms/web/es2019/corecrypto.js +0 -2284
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@wireapp/core-crypto",
|
3
|
-
"version": "0.
|
4
|
-
"description": "CoreCrypto bindings for the Web
|
3
|
+
"version": "0.5.1",
|
4
|
+
"description": "CoreCrypto bindings for the Web",
|
5
5
|
"type": "module",
|
6
6
|
"module": "platforms/web/corecrypto.js",
|
7
7
|
"types": "platforms/web/corecrypto.d.js",
|
@@ -40,24 +40,24 @@
|
|
40
40
|
},
|
41
41
|
"devDependencies": {
|
42
42
|
"@rollup/plugin-html": "^0.2.4",
|
43
|
-
"@types/jest": "^
|
43
|
+
"@types/jest": "^29.0.1",
|
44
44
|
"@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.
|
48
|
-
"dts-bundle-generator": "^6.
|
49
|
-
"eslint": "^8.
|
45
|
+
"@typescript-eslint/eslint-plugin": "^5.36.2",
|
46
|
+
"@typescript-eslint/parser": "^5.36.2",
|
47
|
+
"@wasm-tool/rollup-plugin-rust": "^2.3.1",
|
48
|
+
"dts-bundle-generator": "^6.13.0",
|
49
|
+
"eslint": "^8.23.1",
|
50
50
|
"eslint-config-prettier": "^8.5.0",
|
51
51
|
"eslint-plugin-prettier": "^4.2.1",
|
52
|
-
"jest": "^
|
52
|
+
"jest": "^29.0.3",
|
53
53
|
"jest-dev-server": "^6.1.1",
|
54
54
|
"prettier": "^2.7.1",
|
55
|
-
"puppeteer": "^
|
56
|
-
"rollup": "^2.
|
55
|
+
"puppeteer": "^17.1.3",
|
56
|
+
"rollup": "^2.79.0",
|
57
57
|
"rollup-jest": "^3.0.0",
|
58
58
|
"rollup-plugin-ts": "^3.0.2",
|
59
|
-
"ts-jest": "^
|
59
|
+
"ts-jest": "^29.0.0",
|
60
60
|
"ts-loader": "^9.3.1",
|
61
|
-
"typescript": "^4.
|
61
|
+
"typescript": "^4.8.3"
|
62
62
|
}
|
63
63
|
}
|
Binary file
|
@@ -189,7 +189,10 @@ export interface DecryptedMessage {
|
|
189
189
|
*/
|
190
190
|
message?: Uint8Array;
|
191
191
|
/**
|
192
|
-
*
|
192
|
+
* Only when decrypted message is a commit, CoreCrypto will renew local proposal which could not make it in the commit.
|
193
|
+
* This will contain either:
|
194
|
+
* * local pending proposal not in the accepted commit
|
195
|
+
* * If there is a pending commit, its proposals which are not in the accepted commit
|
193
196
|
*/
|
194
197
|
proposals: ProposalBundle[];
|
195
198
|
/**
|
@@ -216,7 +219,7 @@ export interface ProposalBundle {
|
|
216
219
|
*/
|
217
220
|
proposal: Uint8Array;
|
218
221
|
/**
|
219
|
-
* Unique identifier of a proposal. Use this in {@link CoreCrypto.
|
222
|
+
* Unique identifier of a proposal. Use this in {@link CoreCrypto.clearPendingProposal} to roll back (delete) the proposal
|
220
223
|
*
|
221
224
|
* @readonly
|
222
225
|
*/
|
@@ -225,7 +228,7 @@ export interface ProposalBundle {
|
|
225
228
|
/**
|
226
229
|
* MLS Proposal type
|
227
230
|
*/
|
228
|
-
export declare
|
231
|
+
export declare enum ProposalType {
|
229
232
|
/**
|
230
233
|
* This allows to propose the addition of other clients to the MLS group/conversation
|
231
234
|
*/
|
@@ -269,7 +272,7 @@ export interface RemoveProposalArgs extends ProposalArgs {
|
|
269
272
|
/**
|
270
273
|
* MLS External Proposal type
|
271
274
|
*/
|
272
|
-
export declare
|
275
|
+
export declare enum ExternalProposalType {
|
273
276
|
/**
|
274
277
|
* This allows to propose the addition of other clients to the MLS group/conversation
|
275
278
|
*/
|
@@ -296,6 +299,25 @@ export interface ExternalRemoveProposalArgs extends ExternalProposalArgs {
|
|
296
299
|
*/
|
297
300
|
keyPackageRef: Uint8Array;
|
298
301
|
}
|
302
|
+
export interface CoreCryptoCallbacks {
|
303
|
+
/**
|
304
|
+
* This callback is called by CoreCrypto to know whether a given clientId is authorized to "write"
|
305
|
+
* in the given conversationId. Think of it as a "isAdmin" callback conceptually
|
306
|
+
*
|
307
|
+
* This callback exists because there are many business cases where CoreCrypto doesn't have enough knowledge
|
308
|
+
* (such as what can exists on a backend) to inform the decision
|
309
|
+
*
|
310
|
+
* @param conversationId - id of the group/conversation
|
311
|
+
* @param clientId - id of the client performing an operation requiring authorization
|
312
|
+
* @returns whether the user is authorized by the logic layer to perform the operation
|
313
|
+
*/
|
314
|
+
authorize: (conversationId: Uint8Array, clientId: Uint8Array) => boolean;
|
315
|
+
/**
|
316
|
+
* Callback to ensure that the given `clientId` belongs to one of the provided `otherClients`
|
317
|
+
* This basically allows to defer the client ID parsing logic to the caller - because CoreCrypto is oblivious to such things
|
318
|
+
*/
|
319
|
+
clientIdBelongsToOneOf: (clientId: Uint8Array, otherClients: Uint8Array[]) => boolean;
|
320
|
+
}
|
299
321
|
/**
|
300
322
|
* Wrapper for the WASM-compiled version of CoreCrypto
|
301
323
|
*/
|
@@ -349,6 +371,12 @@ export declare class CoreCrypto {
|
|
349
371
|
* **CAUTION**: This {@link CoreCrypto} instance won't be useable after a call to this method, but there's no way to express this requirement in TypeScript so you'll get errors instead!
|
350
372
|
*/
|
351
373
|
close(): Promise<void>;
|
374
|
+
/**
|
375
|
+
* Registers the callbacks for CoreCrypto to use in order to gain additional information
|
376
|
+
*
|
377
|
+
* @param callbacks - Any interface following the {@link CoreCryptoCallbacks} interface
|
378
|
+
*/
|
379
|
+
registerCallbacks(callbacks: CoreCryptoCallbacks): void;
|
352
380
|
/**
|
353
381
|
* Checks if the Client is member of a given conversation and if the MLS Group is loaded up
|
354
382
|
*
|
@@ -402,7 +430,7 @@ export declare class CoreCrypto {
|
|
402
430
|
* @param conversationId - The ID of the conversation
|
403
431
|
* @param payload - The encrypted message buffer
|
404
432
|
*
|
405
|
-
* @returns
|
433
|
+
* @returns a {@link DecryptedMessage}. Note that {@link DecryptedMessage#message} is `undefined` when the encrypted payload contains a system message such a proposal or commit
|
406
434
|
*/
|
407
435
|
decryptMessage(conversationId: ConversationId, payload: Uint8Array): Promise<DecryptedMessage>;
|
408
436
|
/**
|
@@ -460,7 +488,7 @@ export declare class CoreCrypto {
|
|
460
488
|
* @param conversationId - The ID of the conversation
|
461
489
|
* @param clientIds - Array of Client IDs to remove.
|
462
490
|
*
|
463
|
-
* @returns A {@link CommitBundle}
|
491
|
+
* @returns A {@link CommitBundle}
|
464
492
|
*/
|
465
493
|
removeClientsFromConversation(conversationId: ConversationId, clientIds: ClientId[]): Promise<CommitBundle>;
|
466
494
|
/**
|
@@ -484,9 +512,9 @@ export declare class CoreCrypto {
|
|
484
512
|
*
|
485
513
|
* @param conversationId - The ID of the conversation
|
486
514
|
*
|
487
|
-
* @returns A {@link CommitBundle}
|
515
|
+
* @returns A {@link CommitBundle} or `undefined` when there was no pending proposal to commit
|
488
516
|
*/
|
489
|
-
commitPendingProposals(conversationId: ConversationId): Promise<CommitBundle>;
|
517
|
+
commitPendingProposals(conversationId: ConversationId): Promise<CommitBundle | undefined>;
|
490
518
|
/**
|
491
519
|
* Adds new clients to a conversation, assuming the current client has the right to add new clients to the conversation.
|
492
520
|
* The returned {@link CommitBundle} is a TLS struct that needs to be fanned out to Delivery Service in order to validate the commit.
|
@@ -550,9 +578,9 @@ export declare class CoreCrypto {
|
|
550
578
|
*
|
551
579
|
* @param conversationId - The ID of the conversation
|
552
580
|
*
|
553
|
-
* @returns A {@link CommitBundle} byte array to fan out to the Delivery Service
|
581
|
+
* @returns A {@link CommitBundle} byte array to fan out to the Delivery Service or `undefined` when there was no pending proposal to commit
|
554
582
|
*/
|
555
|
-
finalCommitPendingProposals(conversationId: ConversationId): Promise<TlsCommitBundle>;
|
583
|
+
finalCommitPendingProposals(conversationId: ConversationId): Promise<TlsCommitBundle | undefined>;
|
556
584
|
/**
|
557
585
|
* Creates a new proposal for the provided Conversation ID
|
558
586
|
*
|
@@ -595,21 +623,6 @@ export declare class CoreCrypto {
|
|
595
623
|
* @param conversationId - The group's ID
|
596
624
|
*/
|
597
625
|
commitAccepted(conversationId: ConversationId): Promise<void>;
|
598
|
-
/**
|
599
|
-
* Allows {@link CoreCrypto} to act as a CSPRNG provider
|
600
|
-
* @note The underlying CSPRNG algorithm is ChaCha20 and takes in account the external seed provider either at init time or provided with {@link CoreCrypto.reseedRng}
|
601
|
-
*
|
602
|
-
* @param length - The number of bytes to be returned in the `Uint8Array`
|
603
|
-
*
|
604
|
-
* @returns A `Uint8Array` buffer that contains `length` cryptographically-secure random bytes
|
605
|
-
*/
|
606
|
-
randomBytes(length: number): Promise<Uint8Array>;
|
607
|
-
/**
|
608
|
-
* Allows to reseed {@link CoreCrypto}'s internal CSPRNG with a new seed.
|
609
|
-
*
|
610
|
-
* @param seed - **exactly 32** bytes buffer seed
|
611
|
-
*/
|
612
|
-
reseedRng(seed: Uint8Array): Promise<void>;
|
613
626
|
/**
|
614
627
|
* Allows to remove a pending proposal (rollback). Use this when backend rejects the proposal you just sent e.g. if permissions
|
615
628
|
* have changed meanwhile.
|
@@ -620,7 +633,7 @@ export declare class CoreCrypto {
|
|
620
633
|
* @param conversationId - The group's ID
|
621
634
|
* @param proposalRef - A reference to the proposal to delete. You get one when using {@link CoreCrypto.newProposal}
|
622
635
|
*/
|
623
|
-
|
636
|
+
clearPendingProposal(conversationId: ConversationId, proposalRef: ProposalRef): Promise<void>;
|
624
637
|
/**
|
625
638
|
* Allows to remove a pending commit (rollback). Use this when backend rejects the commit you just sent e.g. if permissions
|
626
639
|
* have changed meanwhile.
|
@@ -632,7 +645,22 @@ export declare class CoreCrypto {
|
|
632
645
|
*
|
633
646
|
* @param conversationId - The group's ID
|
634
647
|
*/
|
635
|
-
|
648
|
+
clearPendingCommit(conversationId: ConversationId): Promise<void>;
|
649
|
+
/**
|
650
|
+
* Allows {@link CoreCrypto} to act as a CSPRNG provider
|
651
|
+
* @note The underlying CSPRNG algorithm is ChaCha20 and takes in account the external seed provider either at init time or provided with {@link CoreCrypto.reseedRng}
|
652
|
+
*
|
653
|
+
* @param length - The number of bytes to be returned in the `Uint8Array`
|
654
|
+
*
|
655
|
+
* @returns A `Uint8Array` buffer that contains `length` cryptographically-secure random bytes
|
656
|
+
*/
|
657
|
+
randomBytes(length: number): Promise<Uint8Array>;
|
658
|
+
/**
|
659
|
+
* Allows to reseed {@link CoreCrypto}'s internal CSPRNG with a new seed.
|
660
|
+
*
|
661
|
+
* @param seed - **exactly 32** bytes buffer seed
|
662
|
+
*/
|
663
|
+
reseedRng(seed: Uint8Array): Promise<void>;
|
636
664
|
/**
|
637
665
|
* Returns the current version of {@link CoreCrypto}
|
638
666
|
*
|