@wireapp/core-crypto 1.0.0-rc.5 → 1.0.0-rc.51
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 +4 -2
- package/package.json +12 -31
- package/platforms/web/core-crypto-ffi_bg.wasm +0 -0
- package/platforms/web/corecrypto.d.ts +416 -212
- package/platforms/web/corecrypto.js +3193 -4956
- package/platforms/web/assets/core_crypto_ffi-9ad99558.wasm +0 -0
@@ -1,3 +1,74 @@
|
|
1
|
+
/**
|
2
|
+
* For creating a challenge.
|
3
|
+
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.5.1
|
4
|
+
*/
|
5
|
+
export class AcmeChallenge {
|
6
|
+
free(): void;
|
7
|
+
/**
|
8
|
+
* Contains raw JSON data of this challenge. This is parsed by the underlying Rust library hence should not be accessed
|
9
|
+
*/
|
10
|
+
readonly delegate: Uint8Array;
|
11
|
+
/**
|
12
|
+
* Non-standard, Wire specific claim. Indicates the consumer from where it should get the challenge proof.
|
13
|
+
* Either from wire-server "/access-token" endpoint in case of a DPoP challenge, or from an OAuth token endpoint for an OIDC challenge
|
14
|
+
*/
|
15
|
+
readonly target: string;
|
16
|
+
/**
|
17
|
+
* URL of this challenge
|
18
|
+
*/
|
19
|
+
readonly url: string;
|
20
|
+
}
|
21
|
+
/**
|
22
|
+
* Dump of the PKI environemnt as PEM
|
23
|
+
*/
|
24
|
+
export class E2eiDumpedPkiEnv {
|
25
|
+
free(): void;
|
26
|
+
/**
|
27
|
+
* CRLs registered in the PKI env
|
28
|
+
*/
|
29
|
+
readonly crls: (string)[];
|
30
|
+
/**
|
31
|
+
* Intermediate CAs that are loaded
|
32
|
+
*/
|
33
|
+
readonly intermediates: (string)[];
|
34
|
+
/**
|
35
|
+
* Root CA in use (i.e. Trust Anchor)
|
36
|
+
*/
|
37
|
+
readonly root_ca: string;
|
38
|
+
}
|
39
|
+
/**
|
40
|
+
* Result of an authorization creation.
|
41
|
+
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.5
|
42
|
+
*/
|
43
|
+
export class NewAcmeAuthz {
|
44
|
+
free(): void;
|
45
|
+
/**
|
46
|
+
* Associated ACME Challenge
|
47
|
+
*/
|
48
|
+
readonly challenge: AcmeChallenge;
|
49
|
+
/**
|
50
|
+
* DNS entry associated with those challenge
|
51
|
+
*/
|
52
|
+
readonly identifier: string;
|
53
|
+
/**
|
54
|
+
* ACME challenge + ACME key thumbprint
|
55
|
+
*/
|
56
|
+
readonly keyauth: string | undefined;
|
57
|
+
}
|
58
|
+
/**
|
59
|
+
* Result of an order creation.
|
60
|
+
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
|
61
|
+
*/
|
62
|
+
export class NewAcmeOrder {
|
63
|
+
free(): void;
|
64
|
+
/**
|
65
|
+
*/
|
66
|
+
readonly authorizations: (Uint8Array)[];
|
67
|
+
/**
|
68
|
+
* Contains raw JSON data of this order. This is parsed by the underlying Rust library hence should not be accessed
|
69
|
+
*/
|
70
|
+
readonly delegate: Uint8Array;
|
71
|
+
}
|
1
72
|
/**
|
2
73
|
* Error wrapper that takes care of extracting rich error details across the FFI (through JSON parsing)
|
3
74
|
*
|
@@ -79,24 +150,6 @@ export interface ConversationConfiguration {
|
|
79
150
|
* Implementation specific configuration
|
80
151
|
*/
|
81
152
|
custom?: CustomConfiguration;
|
82
|
-
/**
|
83
|
-
* Trust anchors to be added in the group's context extensions
|
84
|
-
*/
|
85
|
-
perDomainTrustAnchors?: PerDomainTrustAnchor[];
|
86
|
-
}
|
87
|
-
/**
|
88
|
-
* A wrapper containing the configuration for trust anchors to be added in the group's context
|
89
|
-
* extensions
|
90
|
-
*/
|
91
|
-
export interface PerDomainTrustAnchor {
|
92
|
-
/**
|
93
|
-
* Domain name of the owning backend this anchor refers to. One of the certificate in the chain has to have this domain in its SANs
|
94
|
-
*/
|
95
|
-
domain_name: string;
|
96
|
-
/**
|
97
|
-
* PEM encoded (partial) certificate chain. This contains the certificate chain for the CA certificate issuing the E2E Identity certificates
|
98
|
-
*/
|
99
|
-
intermediate_certificate_chain: string;
|
100
153
|
}
|
101
154
|
/**
|
102
155
|
* see [core_crypto::prelude::MlsWirePolicy]
|
@@ -179,6 +232,10 @@ export interface MemberAddedMessages {
|
|
179
232
|
* @readonly
|
180
233
|
*/
|
181
234
|
groupInfo: GroupInfoBundle;
|
235
|
+
/**
|
236
|
+
* New CRL distribution points that appeared by the introduction of a new credential
|
237
|
+
*/
|
238
|
+
crlNewDistributionPoints?: string[];
|
182
239
|
}
|
183
240
|
/**
|
184
241
|
* Data shape for a MLS generic commit + optional bundle (aka stapled commit & welcome)
|
@@ -262,7 +319,7 @@ export interface RotateBundle {
|
|
262
319
|
*
|
263
320
|
* @readonly
|
264
321
|
*/
|
265
|
-
commits: CommitBundle
|
322
|
+
commits: Map<string, CommitBundle>;
|
266
323
|
/**
|
267
324
|
* Fresh KeyPackages with the new Credential
|
268
325
|
*
|
@@ -275,6 +332,10 @@ export interface RotateBundle {
|
|
275
332
|
* @readonly
|
276
333
|
*/
|
277
334
|
keyPackageRefsToRemove: Uint8Array[];
|
335
|
+
/**
|
336
|
+
* New CRL distribution points that appeared by the introduction of a new credential
|
337
|
+
*/
|
338
|
+
crlNewDistributionPoints?: string[];
|
278
339
|
}
|
279
340
|
/**
|
280
341
|
* Params for CoreCrypto deferred initialization
|
@@ -303,6 +364,10 @@ export interface CoreCryptoDeferredParams {
|
|
303
364
|
* .wasm file path, this will be useful in case your bundling system likes to relocate files (i.e. what webpack does)
|
304
365
|
*/
|
305
366
|
wasmFilePath?: string;
|
367
|
+
/**
|
368
|
+
* Number of initial KeyPackage to create when initializing the client
|
369
|
+
*/
|
370
|
+
nbKeyPackage?: number;
|
306
371
|
}
|
307
372
|
/**
|
308
373
|
* Params for CoreCrypto initialization
|
@@ -315,19 +380,6 @@ export interface CoreCryptoParams extends CoreCryptoDeferredParams {
|
|
315
380
|
*/
|
316
381
|
clientId: ClientId;
|
317
382
|
}
|
318
|
-
/**
|
319
|
-
* Data shape for adding clients to a conversation
|
320
|
-
*/
|
321
|
-
export interface Invitee {
|
322
|
-
/**
|
323
|
-
* Client ID as a byte array
|
324
|
-
*/
|
325
|
-
id: ClientId;
|
326
|
-
/**
|
327
|
-
* MLS KeyPackage belonging to the aforementioned client
|
328
|
-
*/
|
329
|
-
kp: Uint8Array;
|
330
|
-
}
|
331
383
|
export interface ConversationInitBundle {
|
332
384
|
/**
|
333
385
|
* Conversation ID of the conversation created
|
@@ -348,6 +400,27 @@ export interface ConversationInitBundle {
|
|
348
400
|
* @readonly
|
349
401
|
*/
|
350
402
|
groupInfo: GroupInfoBundle;
|
403
|
+
/**
|
404
|
+
* New CRL distribution points that appeared by the introduction of a new credential
|
405
|
+
*/
|
406
|
+
crlNewDistributionPoints?: string[];
|
407
|
+
}
|
408
|
+
/**
|
409
|
+
* Supporting struct for CRL registration result
|
410
|
+
*/
|
411
|
+
export interface CRLRegistration {
|
412
|
+
/**
|
413
|
+
* Whether this CRL modifies the old CRL (i.e. has a different revocated cert list)
|
414
|
+
*
|
415
|
+
* @readonly
|
416
|
+
*/
|
417
|
+
dirty: boolean;
|
418
|
+
/**
|
419
|
+
* Optional expiration timestamp
|
420
|
+
*
|
421
|
+
* @readonly
|
422
|
+
*/
|
423
|
+
expiration?: number;
|
351
424
|
}
|
352
425
|
/**
|
353
426
|
* This is a wrapper for all the possible outcomes you can get after decrypting a message
|
@@ -386,17 +459,65 @@ export interface DecryptedMessage {
|
|
386
459
|
* Present for all messages
|
387
460
|
*/
|
388
461
|
identity?: WireIdentity;
|
462
|
+
/**
|
463
|
+
* Only set when the decrypted message is a commit.
|
464
|
+
* Contains buffered messages for next epoch which were received before the commit creating the epoch
|
465
|
+
* because the DS did not fan them out in order.
|
466
|
+
*/
|
467
|
+
bufferedMessages?: BufferedDecryptedMessage[];
|
468
|
+
/**
|
469
|
+
* New CRL distribution points that appeared by the introduction of a new credential
|
470
|
+
*/
|
471
|
+
crlNewDistributionPoints?: string[];
|
472
|
+
}
|
473
|
+
/**
|
474
|
+
* Almost same as {@link DecryptedMessage} but avoids recursion
|
475
|
+
*/
|
476
|
+
export interface BufferedDecryptedMessage {
|
477
|
+
/**
|
478
|
+
* see {@link DecryptedMessage.message}
|
479
|
+
*/
|
480
|
+
message?: Uint8Array;
|
481
|
+
/**
|
482
|
+
* see {@link DecryptedMessage.proposals}
|
483
|
+
*/
|
484
|
+
proposals: ProposalBundle[];
|
485
|
+
/**
|
486
|
+
* see {@link DecryptedMessage.isActive}
|
487
|
+
*/
|
488
|
+
isActive: boolean;
|
489
|
+
/**
|
490
|
+
* see {@link DecryptedMessage.commitDelay}
|
491
|
+
*/
|
492
|
+
commitDelay?: number;
|
493
|
+
/**
|
494
|
+
* see {@link DecryptedMessage.senderClientId}
|
495
|
+
*/
|
496
|
+
senderClientId?: ClientId;
|
497
|
+
/**
|
498
|
+
* see {@link DecryptedMessage.hasEpochChanged}
|
499
|
+
*/
|
500
|
+
hasEpochChanged: boolean;
|
501
|
+
/**
|
502
|
+
* see {@link DecryptedMessage.identity}
|
503
|
+
*/
|
504
|
+
identity?: WireIdentity;
|
505
|
+
/**
|
506
|
+
* see {@link DecryptedMessage.crlNewDistributionPoints}
|
507
|
+
*/
|
508
|
+
crlNewDistributionPoints?: string[];
|
389
509
|
}
|
390
510
|
/**
|
391
|
-
* Represents the identity claims identifying a client
|
511
|
+
* Represents the identity claims identifying a client
|
512
|
+
* Those claims are verifiable by any member in the group
|
392
513
|
*/
|
393
514
|
export interface WireIdentity {
|
394
515
|
/**
|
395
|
-
*
|
516
|
+
* Unique client identifier
|
396
517
|
*/
|
397
518
|
clientId: string;
|
398
519
|
/**
|
399
|
-
*
|
520
|
+
* User handle e.g. `john_wire`
|
400
521
|
*/
|
401
522
|
handle: string;
|
402
523
|
/**
|
@@ -407,6 +528,66 @@ export interface WireIdentity {
|
|
407
528
|
* DNS domain for which this identity proof was generated e.g. `whitehouse.gov`
|
408
529
|
*/
|
409
530
|
domain: string;
|
531
|
+
/**
|
532
|
+
* X509 certificate identifying this client in the MLS group ; PEM encoded
|
533
|
+
*/
|
534
|
+
certificate: string;
|
535
|
+
/**
|
536
|
+
* Status of the Credential at the moment T when this object is created
|
537
|
+
*/
|
538
|
+
status: DeviceStatus;
|
539
|
+
/**
|
540
|
+
* MLS thumbprint
|
541
|
+
*/
|
542
|
+
thumbprint: string;
|
543
|
+
/**
|
544
|
+
* X509 certificate serial number
|
545
|
+
*/
|
546
|
+
serialNumber: string;
|
547
|
+
/**
|
548
|
+
* X509 certificate not before as Unix timestamp
|
549
|
+
*/
|
550
|
+
notBefore: bigint;
|
551
|
+
/**
|
552
|
+
* X509 certificate not after as Unix timestamp
|
553
|
+
*/
|
554
|
+
notAfter: bigint;
|
555
|
+
}
|
556
|
+
export interface AcmeDirectory {
|
557
|
+
/**
|
558
|
+
* URL for fetching a new nonce. Use this only for creating a new account.
|
559
|
+
*/
|
560
|
+
newNonce: string;
|
561
|
+
/**
|
562
|
+
* URL for creating a new account.
|
563
|
+
*/
|
564
|
+
newAccount: string;
|
565
|
+
/**
|
566
|
+
* URL for creating a new order.
|
567
|
+
*/
|
568
|
+
newOrder: string;
|
569
|
+
/**
|
570
|
+
* Revocation URL
|
571
|
+
*/
|
572
|
+
revokeCert: string;
|
573
|
+
}
|
574
|
+
/**
|
575
|
+
* Indicates the standalone status of a device Credential in a MLS group at a moment T.
|
576
|
+
* This does not represent the states where a device is not using MLS or is not using end-to-end identity
|
577
|
+
*/
|
578
|
+
export declare enum DeviceStatus {
|
579
|
+
/**
|
580
|
+
* All is fine
|
581
|
+
*/
|
582
|
+
Valid = 1,
|
583
|
+
/**
|
584
|
+
* The Credential's certificate is expired
|
585
|
+
*/
|
586
|
+
Expired = 2,
|
587
|
+
/**
|
588
|
+
* The Credential's certificate is revoked
|
589
|
+
*/
|
590
|
+
Revoked = 3
|
410
591
|
}
|
411
592
|
/**
|
412
593
|
* Returned by all methods creating proposals. Contains a proposal message and an identifier to roll back the proposal
|
@@ -424,6 +605,26 @@ export interface ProposalBundle {
|
|
424
605
|
* @readonly
|
425
606
|
*/
|
426
607
|
proposalRef: ProposalRef;
|
608
|
+
/**
|
609
|
+
* New CRL Distribution of members of this group
|
610
|
+
*
|
611
|
+
* @readonly
|
612
|
+
*/
|
613
|
+
crlNewDistributionPoints?: string[];
|
614
|
+
}
|
615
|
+
export interface WelcomeBundle {
|
616
|
+
/**
|
617
|
+
* Conversation ID
|
618
|
+
*
|
619
|
+
* @readonly
|
620
|
+
*/
|
621
|
+
id: Uint8Array;
|
622
|
+
/**
|
623
|
+
* New CRL Distribution of members of this group
|
624
|
+
*
|
625
|
+
* @readonly
|
626
|
+
*/
|
627
|
+
crlNewDistributionPoints?: string[];
|
427
628
|
}
|
428
629
|
/**
|
429
630
|
* MLS Proposal type
|
@@ -540,6 +741,10 @@ export interface CoreCryptoCallbacks {
|
|
540
741
|
*/
|
541
742
|
export declare class CoreCrypto {
|
542
743
|
#private;
|
744
|
+
/**
|
745
|
+
* Should only be used internally
|
746
|
+
*/
|
747
|
+
inner(): unknown;
|
543
748
|
/**
|
544
749
|
* This is your entrypoint to initialize {@link CoreCrypto}!
|
545
750
|
*
|
@@ -573,7 +778,7 @@ export declare class CoreCrypto {
|
|
573
778
|
* });
|
574
779
|
* ````
|
575
780
|
*/
|
576
|
-
static init({ databaseName, key, clientId, wasmFilePath, ciphersuites, entropySeed }: CoreCryptoParams): Promise<CoreCrypto>;
|
781
|
+
static init({ databaseName, key, clientId, wasmFilePath, ciphersuites, entropySeed, nbKeyPackage, }: CoreCryptoParams): Promise<CoreCrypto>;
|
577
782
|
/**
|
578
783
|
* Almost identical to {@link CoreCrypto.init} but allows a 2 phase initialization of MLS.
|
579
784
|
* First, calling this will set up the keystore and will allow generating proteus prekeys.
|
@@ -581,14 +786,15 @@ export declare class CoreCrypto {
|
|
581
786
|
* Use this clientId to initialize MLS with {@link CoreCrypto.mlsInit}.
|
582
787
|
* @param params - {@link CoreCryptoDeferredParams}
|
583
788
|
*/
|
584
|
-
static deferredInit({ databaseName, key, ciphersuites, entropySeed, wasmFilePath }: CoreCryptoDeferredParams): Promise<CoreCrypto>;
|
789
|
+
static deferredInit({ databaseName, key, ciphersuites, entropySeed, wasmFilePath, nbKeyPackage, }: CoreCryptoDeferredParams): Promise<CoreCrypto>;
|
585
790
|
/**
|
586
791
|
* Use this after {@link CoreCrypto.deferredInit} when you have a clientId. It initializes MLS.
|
587
792
|
*
|
588
793
|
* @param clientId - {@link CoreCryptoParams#clientId} but required
|
589
794
|
* @param ciphersuites - All the ciphersuites supported by this MLS client
|
795
|
+
* @param nbKeyPackage - number of initial KeyPackage to create when initializing the client
|
590
796
|
*/
|
591
|
-
mlsInit(clientId: ClientId, ciphersuites: Ciphersuite[]): Promise<void>;
|
797
|
+
mlsInit(clientId: ClientId, ciphersuites: Ciphersuite[], nbKeyPackage?: number): Promise<void>;
|
592
798
|
/**
|
593
799
|
* Generates a MLS KeyPair/CredentialBundle with a temporary, random client ID.
|
594
800
|
* This method is designed to be used in conjunction with {@link CoreCrypto.mlsInitWithClientId} and represents the first step in this process
|
@@ -625,7 +831,7 @@ export declare class CoreCrypto {
|
|
625
831
|
/**
|
626
832
|
* Closes this {@link CoreCrypto} instance and deallocates all loaded resources
|
627
833
|
*
|
628
|
-
* **CAUTION**: This {@link CoreCrypto} instance won't be
|
834
|
+
* **CAUTION**: This {@link CoreCrypto} instance won't be usable after a call to this method, but there's no way to express this requirement in TypeScript, so you'll get errors instead!
|
629
835
|
*/
|
630
836
|
close(): Promise<void>;
|
631
837
|
/**
|
@@ -691,7 +897,12 @@ export declare class CoreCrypto {
|
|
691
897
|
*/
|
692
898
|
createConversation(conversationId: ConversationId, creatorCredentialType: CredentialType, configuration?: ConversationConfiguration): Promise<any>;
|
693
899
|
/**
|
694
|
-
* Decrypts a message for a given conversation
|
900
|
+
* Decrypts a message for a given conversation.
|
901
|
+
*
|
902
|
+
* Note: you should catch & ignore the following error reasons:
|
903
|
+
* * "We already decrypted this message once"
|
904
|
+
* * "You tried to join with an external commit but did not merge it yet. We will reapply this message for you when you merge your external commit"
|
905
|
+
* * "Incoming message is for a future epoch. We will buffer it until the commit for that epoch arrives"
|
695
906
|
*
|
696
907
|
* @param conversationId - The ID of the conversation
|
697
908
|
* @param payload - The encrypted message buffer
|
@@ -708,34 +919,26 @@ export declare class CoreCrypto {
|
|
708
919
|
* @returns The encrypted payload for the given group. This needs to be fanned out to the other members of the group.
|
709
920
|
*/
|
710
921
|
encryptMessage(conversationId: ConversationId, message: Uint8Array): Promise<Uint8Array>;
|
711
|
-
/**
|
712
|
-
* Updates the trust anchors for a conversation. This should be called when a federated event happens (new team added/removed).
|
713
|
-
* Clients should add and/or remove trust anchors from the new backend to the conversation. The method will check
|
714
|
-
* for duplicated domains and the validity of the certificate chain.
|
715
|
-
*
|
716
|
-
* **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterwards **ONLY IF** the Delivery Service responds
|
717
|
-
* '200 OK' to the {@link CommitBundle} upload. It will "merge" the commit locally i.e. increment the local group
|
718
|
-
* epoch, use new encryption secrets etc...
|
719
|
-
*
|
720
|
-
* @param conversationId - The ID of the conversation
|
721
|
-
* @param removeDomainNames - Domains to remove from the trust anchors
|
722
|
-
* @param addTrustAnchors - New trust anchors to add to the conversation
|
723
|
-
*
|
724
|
-
* @returns A {@link CommitBundle}
|
725
|
-
*/
|
726
|
-
update_trust_anchors_from_conversation(conversationId: ConversationId, removeDomainNames: string[], addTrustAnchors: PerDomainTrustAnchor[]): Promise<CommitBundle>;
|
727
922
|
/**
|
728
923
|
* Ingest a TLS-serialized MLS welcome message to join an existing MLS group
|
729
924
|
*
|
925
|
+
* Important: you have to catch the error with this reason "Although this Welcome seems valid, the local KeyPackage
|
926
|
+
* it references has already been deleted locally. Join this group with an external commit", ignore it and then try
|
927
|
+
* to join this group with an external commit.
|
928
|
+
*
|
730
929
|
* @param welcomeMessage - TLS-serialized MLS Welcome message
|
731
930
|
* @param configuration - configuration of the MLS group
|
732
931
|
* @returns The conversation ID of the newly joined group. You can use the same ID to decrypt/encrypt messages
|
733
932
|
*/
|
734
|
-
processWelcomeMessage(welcomeMessage: Uint8Array, configuration?: CustomConfiguration): Promise<
|
933
|
+
processWelcomeMessage(welcomeMessage: Uint8Array, configuration?: CustomConfiguration): Promise<WelcomeBundle>;
|
735
934
|
/**
|
736
|
-
*
|
935
|
+
* Get the client's public signature key. To upload to the DS for further backend side validation
|
936
|
+
*
|
937
|
+
* @param ciphersuite - of the signature key to get
|
938
|
+
* @param credentialType - of the public key to look for
|
939
|
+
* @returns the client's public signature key
|
737
940
|
*/
|
738
|
-
clientPublicKey(ciphersuite: Ciphersuite): Promise<Uint8Array>;
|
941
|
+
clientPublicKey(ciphersuite: Ciphersuite, credentialType: CredentialType): Promise<Uint8Array>;
|
739
942
|
/**
|
740
943
|
*
|
741
944
|
* @param ciphersuite - of the KeyPackages to count
|
@@ -762,21 +965,21 @@ export declare class CoreCrypto {
|
|
762
965
|
/**
|
763
966
|
* Adds new clients to a conversation, assuming the current client has the right to add new clients to the conversation.
|
764
967
|
*
|
765
|
-
* **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called
|
968
|
+
* **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterward **ONLY IF** the Delivery Service responds
|
766
969
|
* '200 OK' to the {@link CommitBundle} upload. It will "merge" the commit locally i.e. increment the local group
|
767
970
|
* epoch, use new encryption secrets etc...
|
768
971
|
*
|
769
972
|
* @param conversationId - The ID of the conversation
|
770
|
-
* @param
|
973
|
+
* @param keyPackages - KeyPackages of the new clients to add
|
771
974
|
*
|
772
975
|
* @returns A {@link CommitBundle}
|
773
976
|
*/
|
774
|
-
addClientsToConversation(conversationId: ConversationId,
|
977
|
+
addClientsToConversation(conversationId: ConversationId, keyPackages: Uint8Array[]): Promise<MemberAddedMessages>;
|
775
978
|
/**
|
776
979
|
* Removes the provided clients from a conversation; Assuming those clients exist and the current client is allowed
|
777
980
|
* to do so, otherwise this operation does nothing.
|
778
981
|
*
|
779
|
-
* **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called
|
982
|
+
* **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterward **ONLY IF** the Delivery Service responds
|
780
983
|
* '200 OK' to the {@link CommitBundle} upload. It will "merge" the commit locally i.e. increment the local group
|
781
984
|
* epoch, use new encryption secrets etc...
|
782
985
|
*
|
@@ -787,9 +990,9 @@ export declare class CoreCrypto {
|
|
787
990
|
*/
|
788
991
|
removeClientsFromConversation(conversationId: ConversationId, clientIds: ClientId[]): Promise<CommitBundle>;
|
789
992
|
/**
|
790
|
-
* Creates an update commit which forces every client to update their
|
993
|
+
* Creates an update commit which forces every client to update their LeafNode in the conversation
|
791
994
|
*
|
792
|
-
* **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called
|
995
|
+
* **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterward **ONLY IF** the Delivery Service responds
|
793
996
|
* '200 OK' to the {@link CommitBundle} upload. It will "merge" the commit locally i.e. increment the local group
|
794
997
|
* epoch, use new encryption secrets etc...
|
795
998
|
*
|
@@ -819,6 +1022,9 @@ export declare class CoreCrypto {
|
|
819
1022
|
* @returns A {@link ProposalBundle} containing the Proposal and its reference in order to roll it back if necessary
|
820
1023
|
*/
|
821
1024
|
newProposal(proposalType: ProposalType, args: ProposalArgs | AddProposalArgs | RemoveProposalArgs): Promise<ProposalBundle>;
|
1025
|
+
/**
|
1026
|
+
* Creates a new external Add proposal for self client to join a conversation.
|
1027
|
+
*/
|
822
1028
|
newExternalProposal(externalProposalType: ExternalProposalType, args: ExternalAddProposalArgs): Promise<Uint8Array>;
|
823
1029
|
/**
|
824
1030
|
* Allows to create an external commit to "apply" to join a group through its GroupInfo.
|
@@ -843,8 +1049,9 @@ export declare class CoreCrypto {
|
|
843
1049
|
* and deletes the temporary one. This step makes the group operational and ready to encrypt/decrypt message
|
844
1050
|
*
|
845
1051
|
* @param conversationId - The ID of the conversation
|
1052
|
+
* @returns eventually decrypted buffered messages if any
|
846
1053
|
*/
|
847
|
-
mergePendingGroupFromExternalCommit(conversationId: ConversationId): Promise<
|
1054
|
+
mergePendingGroupFromExternalCommit(conversationId: ConversationId): Promise<BufferedDecryptedMessage[] | undefined>;
|
848
1055
|
/**
|
849
1056
|
* In case the external commit generated by {@link CoreCrypto.joinByExternalCommit} is rejected by the Delivery Service, and we
|
850
1057
|
* want to abort this external commit once for all, we can wipe out the pending group from the keystore in order
|
@@ -854,26 +1061,24 @@ export declare class CoreCrypto {
|
|
854
1061
|
*/
|
855
1062
|
clearPendingGroupFromExternalCommit(conversationId: ConversationId): Promise<void>;
|
856
1063
|
/**
|
857
|
-
* Allows to mark the latest commit produced as "accepted" and be able to safely merge it
|
858
|
-
* into the local group state
|
1064
|
+
* Allows to mark the latest commit produced as "accepted" and be able to safely merge it into the local group state
|
859
1065
|
*
|
860
1066
|
* @param conversationId - The group's ID
|
1067
|
+
* @returns the messages from current epoch which had been buffered, if any
|
861
1068
|
*/
|
862
|
-
commitAccepted(conversationId: ConversationId): Promise<
|
1069
|
+
commitAccepted(conversationId: ConversationId): Promise<BufferedDecryptedMessage[] | undefined>;
|
863
1070
|
/**
|
864
|
-
* Allows to remove a pending proposal (rollback). Use this when backend rejects the proposal you just sent e.g. if permissions
|
865
|
-
* have changed meanwhile.
|
1071
|
+
* Allows to remove a pending proposal (rollback). Use this when backend rejects the proposal you just sent e.g. if permissions have changed meanwhile.
|
866
1072
|
*
|
867
1073
|
* **CAUTION**: only use this when you had an explicit response from the Delivery Service
|
868
|
-
* e.g. 403 or 409. Do not use otherwise e.g. 5xx responses, timeout etc
|
1074
|
+
* e.g. 403 or 409. Do not use otherwise e.g. 5xx responses, timeout etc…
|
869
1075
|
*
|
870
1076
|
* @param conversationId - The group's ID
|
871
1077
|
* @param proposalRef - A reference to the proposal to delete. You get one when using {@link CoreCrypto.newProposal}
|
872
1078
|
*/
|
873
1079
|
clearPendingProposal(conversationId: ConversationId, proposalRef: ProposalRef): Promise<void>;
|
874
1080
|
/**
|
875
|
-
* Allows to remove a pending commit (rollback). Use this when backend rejects the commit you just sent e.g. if permissions
|
876
|
-
* have changed meanwhile.
|
1081
|
+
* Allows to remove a pending commit (rollback). Use this when backend rejects the commit you just sent e.g. if permissions have changed meanwhile.
|
877
1082
|
*
|
878
1083
|
* **CAUTION**: only use this when you had an explicit response from the Delivery Service
|
879
1084
|
* e.g. 403. Do not use otherwise e.g. 5xx responses, timeout etc..
|
@@ -893,6 +1098,15 @@ export declare class CoreCrypto {
|
|
893
1098
|
* @returns A `Uint8Array` representing the derived key
|
894
1099
|
*/
|
895
1100
|
exportSecretKey(conversationId: ConversationId, keyLength: number): Promise<Uint8Array>;
|
1101
|
+
/**
|
1102
|
+
* Returns the raw public key of the single external sender present in this group.
|
1103
|
+
* This should be used to initialize a subconversation
|
1104
|
+
*
|
1105
|
+
* @param conversationId - The group's ID
|
1106
|
+
*
|
1107
|
+
* @returns A `Uint8Array` representing the external sender raw public key
|
1108
|
+
*/
|
1109
|
+
getExternalSender(conversationId: ConversationId): Promise<Uint8Array>;
|
896
1110
|
/**
|
897
1111
|
* Returns all clients from group's members
|
898
1112
|
*
|
@@ -917,7 +1131,7 @@ export declare class CoreCrypto {
|
|
917
1131
|
*/
|
918
1132
|
reseedRng(seed: Uint8Array): Promise<void>;
|
919
1133
|
/**
|
920
|
-
*
|
1134
|
+
* Initializes the proteus client
|
921
1135
|
*/
|
922
1136
|
proteusInit(): Promise<void>;
|
923
1137
|
/**
|
@@ -1050,47 +1264,91 @@ export declare class CoreCrypto {
|
|
1050
1264
|
* Creates an enrollment instance with private key material you can use in order to fetch
|
1051
1265
|
* a new x509 certificate from the acme server.
|
1052
1266
|
*
|
1053
|
-
* @param clientId client identifier
|
1054
|
-
* @param displayName human
|
1055
|
-
* @param handle user handle e.g. `alice.smith.qa@example.com`
|
1056
|
-
* @param
|
1267
|
+
* @param clientId - client identifier e.g. `b7ac11a4-8f01-4527-af88-1c30885a7931:6add501bacd1d90e@example.com`
|
1268
|
+
* @param displayName - human-readable name displayed in the application e.g. `Smith, Alice M (QA)`
|
1269
|
+
* @param handle - user handle e.g. `alice.smith.qa@example.com`
|
1270
|
+
* @param expirySec - generated x509 certificate expiry
|
1057
1271
|
* @param ciphersuite - for generating signing key material
|
1058
|
-
* @
|
1272
|
+
* @param team - name of the Wire team a user belongs to
|
1273
|
+
* @returns The new {@link E2eiEnrollment} enrollment instance to use with {@link CoreCrypto.e2eiMlsInitOnly}
|
1059
1274
|
*/
|
1060
|
-
e2eiNewEnrollment(clientId: string, displayName: string, handle: string,
|
1275
|
+
e2eiNewEnrollment(clientId: string, displayName: string, handle: string, expirySec: number, ciphersuite: Ciphersuite, team?: string): Promise<E2eiEnrollment>;
|
1061
1276
|
/**
|
1062
1277
|
* Generates an E2EI enrollment instance for a "regular" client (with a Basic credential) willing to migrate to E2EI.
|
1063
1278
|
* Once the enrollment is finished, use the instance in {@link CoreCrypto.e2eiRotateAll} to do the rotation.
|
1064
1279
|
*
|
1065
|
-
* @param
|
1066
|
-
* @param
|
1067
|
-
* @param
|
1068
|
-
* @param expiryDays generated x509 certificate expiry
|
1280
|
+
* @param displayName - human-readable name displayed in the application e.g. `Smith, Alice M (QA)`
|
1281
|
+
* @param handle - user handle e.g. `alice.smith.qa@example.com`
|
1282
|
+
* @param expirySec - generated x509 certificate expiry
|
1069
1283
|
* @param ciphersuite - for generating signing key material
|
1070
|
-
* @
|
1284
|
+
* @param team - name of the Wire team a user belongs to
|
1285
|
+
* @returns The new {@link E2eiEnrollment} enrollment instance to use with {@link CoreCrypto.e2eiRotateAll}
|
1071
1286
|
*/
|
1072
|
-
e2eiNewActivationEnrollment(
|
1287
|
+
e2eiNewActivationEnrollment(displayName: string, handle: string, expirySec: number, ciphersuite: Ciphersuite, team?: string): Promise<E2eiEnrollment>;
|
1073
1288
|
/**
|
1074
1289
|
* Generates an E2EI enrollment instance for a E2EI client (with a X509 certificate credential)
|
1075
1290
|
* having to change/rotate their credential, either because the former one is expired or it
|
1076
1291
|
* has been revoked. It lets you change the DisplayName or the handle
|
1077
1292
|
* if you need to. Once the enrollment is finished, use the instance in {@link CoreCrypto.e2eiRotateAll} to do the rotation.
|
1078
1293
|
*
|
1079
|
-
* @param
|
1080
|
-
* @param expiryDays generated x509 certificate expiry
|
1294
|
+
* @param expirySec - generated x509 certificate expiry
|
1081
1295
|
* @param ciphersuite - for generating signing key material
|
1082
|
-
* @param displayName human
|
1083
|
-
* @param handle user handle e.g. `alice.smith.qa@example.com`
|
1084
|
-
* @
|
1296
|
+
* @param displayName - human-readable name displayed in the application e.g. `Smith, Alice M (QA)`
|
1297
|
+
* @param handle - user handle e.g. `alice.smith.qa@example.com`
|
1298
|
+
* @param team - name of the Wire team a user belongs to
|
1299
|
+
* @returns The new {@link E2eiEnrollment} enrollment instance to use with {@link CoreCrypto.e2eiRotateAll}
|
1085
1300
|
*/
|
1086
|
-
e2eiNewRotateEnrollment(
|
1301
|
+
e2eiNewRotateEnrollment(expirySec: number, ciphersuite: Ciphersuite, displayName?: string, handle?: string, team?: string): Promise<E2eiEnrollment>;
|
1087
1302
|
/**
|
1088
|
-
* Use this method to initialize end-to-end identity when a client signs up and the grace period is already expired ;
|
1303
|
+
* Use this method to initialize end-to-end identity when a client signs up and the grace period is already expired ;
|
1304
|
+
* that means he cannot initialize with a Basic credential
|
1089
1305
|
*
|
1090
1306
|
* @param enrollment - the enrollment instance used to fetch the certificates
|
1091
1307
|
* @param certificateChain - the raw response from ACME server
|
1308
|
+
* @param nbKeyPackage - number of initial KeyPackage to create when initializing the client
|
1309
|
+
* @returns a MlsClient initialized with only a x509 credential
|
1310
|
+
*/
|
1311
|
+
e2eiMlsInitOnly(enrollment: E2eiEnrollment, certificateChain: string, nbKeyPackage?: number): Promise<string[] | undefined>;
|
1312
|
+
/**
|
1313
|
+
* Dumps the PKI environment as PEM
|
1314
|
+
*
|
1315
|
+
* @returns a struct with different fields representing the PKI environment as PEM strings
|
1092
1316
|
*/
|
1093
|
-
|
1317
|
+
e2eiDumpPKIEnv(): Promise<E2eiDumpedPkiEnv | undefined>;
|
1318
|
+
/**
|
1319
|
+
* @returns whether the E2EI PKI environment is setup (i.e. Root CA, Intermediates, CRLs)
|
1320
|
+
*/
|
1321
|
+
e2eiIsPKIEnvSetup(): Promise<boolean>;
|
1322
|
+
/**
|
1323
|
+
* Registers a Root Trust Anchor CA for the use in E2EI processing.
|
1324
|
+
*
|
1325
|
+
* Please note that without a Root Trust Anchor, all validations *will* fail;
|
1326
|
+
* So this is the first step to perform after initializing your E2EI client
|
1327
|
+
*
|
1328
|
+
* @param trustAnchorPEM - PEM certificate to anchor as a Trust Root
|
1329
|
+
*/
|
1330
|
+
e2eiRegisterAcmeCA(trustAnchorPEM: string): Promise<void>;
|
1331
|
+
/**
|
1332
|
+
* Registers an Intermediate CA for the use in E2EI processing.
|
1333
|
+
*
|
1334
|
+
* Please note that a Root Trust Anchor CA is needed to validate Intermediate CAs;
|
1335
|
+
* You **need** to have a Root CA registered before calling this
|
1336
|
+
*
|
1337
|
+
* @param certPEM - PEM certificate to register as an Intermediate CA
|
1338
|
+
*/
|
1339
|
+
e2eiRegisterIntermediateCA(certPEM: string): Promise<string[] | undefined>;
|
1340
|
+
/**
|
1341
|
+
* Registers a CRL for the use in E2EI processing.
|
1342
|
+
*
|
1343
|
+
* Please note that a Root Trust Anchor CA is needed to validate CRLs;
|
1344
|
+
* You **need** to have a Root CA registered before calling this
|
1345
|
+
*
|
1346
|
+
* @param crlDP - CRL Distribution Point; Basically the URL you fetched it from
|
1347
|
+
* @param crlDER - DER representation of the CRL
|
1348
|
+
*
|
1349
|
+
* @returns a {@link CRLRegistration} with the dirty state of the new CRL (see struct) and its expiration timestamp
|
1350
|
+
*/
|
1351
|
+
e2eiRegisterCRL(crlDP: string, crlDER: Uint8Array): Promise<CRLRegistration>;
|
1094
1352
|
/**
|
1095
1353
|
* Creates a commit in all local conversations for changing the credential. Requires first
|
1096
1354
|
* having enrolled a new X509 certificate with either {@link CoreCrypto.e2eiNewActivationEnrollment}
|
@@ -1099,8 +1357,9 @@ export declare class CoreCrypto {
|
|
1099
1357
|
* @param enrollment - the enrollment instance used to fetch the certificates
|
1100
1358
|
* @param certificateChain - the raw response from ACME server
|
1101
1359
|
* @param newKeyPackageCount - number of KeyPackages with new identity to generate
|
1360
|
+
* @returns a {@link RotateBundle} with commits to fan-out to other group members, KeyPackages to upload and old ones to delete
|
1102
1361
|
*/
|
1103
|
-
e2eiRotateAll(enrollment:
|
1362
|
+
e2eiRotateAll(enrollment: E2eiEnrollment, certificateChain: string, newKeyPackageCount: number): Promise<RotateBundle>;
|
1104
1363
|
/**
|
1105
1364
|
* Allows persisting an active enrollment (for example while redirecting the user during OAuth) in order to resume
|
1106
1365
|
* it later with {@link e2eiEnrollmentStashPop}
|
@@ -1108,16 +1367,16 @@ export declare class CoreCrypto {
|
|
1108
1367
|
* @param enrollment the enrollment instance to persist
|
1109
1368
|
* @returns a handle to fetch the enrollment later with {@link e2eiEnrollmentStashPop}
|
1110
1369
|
*/
|
1111
|
-
e2eiEnrollmentStash(enrollment:
|
1370
|
+
e2eiEnrollmentStash(enrollment: E2eiEnrollment): Promise<Uint8Array>;
|
1112
1371
|
/**
|
1113
1372
|
* Fetches the persisted enrollment and deletes it from the keystore
|
1114
1373
|
*
|
1115
1374
|
* @param handle returned by {@link e2eiEnrollmentStash}
|
1116
1375
|
* @returns the persisted enrollment instance
|
1117
1376
|
*/
|
1118
|
-
e2eiEnrollmentStashPop(handle: Uint8Array): Promise<
|
1377
|
+
e2eiEnrollmentStashPop(handle: Uint8Array): Promise<E2eiEnrollment>;
|
1119
1378
|
/**
|
1120
|
-
* Indicates when to mark a conversation as
|
1379
|
+
* Indicates when to mark a conversation as not verified i.e. when not all its members have a X509.
|
1121
1380
|
* Credential generated by Wire's end-to-end identity enrollment
|
1122
1381
|
*
|
1123
1382
|
* @param conversationId The group's ID
|
@@ -1128,9 +1387,37 @@ export declare class CoreCrypto {
|
|
1128
1387
|
* Returns true when end-to-end-identity is enabled for the given Ciphersuite
|
1129
1388
|
*
|
1130
1389
|
* @param ciphersuite of the credential to check
|
1131
|
-
* @returns true end-to-end identity is enabled for the given ciphersuite
|
1390
|
+
* @returns true if end-to-end identity is enabled for the given ciphersuite
|
1132
1391
|
*/
|
1133
1392
|
e2eiIsEnabled(ciphersuite: Ciphersuite): Promise<boolean>;
|
1393
|
+
/**
|
1394
|
+
* From a given conversation, get the identity of the members supplied. Identity is only present for members with a
|
1395
|
+
* Certificate Credential (after turning on end-to-end identity).
|
1396
|
+
*
|
1397
|
+
* @param conversationId - identifier of the conversation
|
1398
|
+
* @param deviceIds - identifiers of the devices
|
1399
|
+
* @returns identities or if no member has a x509 certificate, it will return an empty List
|
1400
|
+
*/
|
1401
|
+
getDeviceIdentities(conversationId: ConversationId, deviceIds: ClientId[]): Promise<WireIdentity[]>;
|
1402
|
+
/**
|
1403
|
+
* From a given conversation, get the identity of the users (device holders) supplied.
|
1404
|
+
* Identity is only present for devices with a Certificate Credential (after turning on end-to-end identity).
|
1405
|
+
* If no member has a x509 certificate, it will return an empty Vec.
|
1406
|
+
*
|
1407
|
+
* @param conversationId - identifier of the conversation
|
1408
|
+
* @param userIds - user identifiers hyphenated UUIDv4 e.g. 'bd4c7053-1c5a-4020-9559-cd7bf7961954'
|
1409
|
+
* @returns a Map with all the identities for a given users. Consumers are then recommended to reduce those identities to determine the actual status of a user.
|
1410
|
+
*/
|
1411
|
+
getUserIdentities(conversationId: ConversationId, userIds: string[]): Promise<Map<string, WireIdentity[]>>;
|
1412
|
+
/**
|
1413
|
+
* Gets the e2ei conversation state from a `GroupInfo`. Useful to check if the group has e2ei
|
1414
|
+
* turned on or not before joining it.
|
1415
|
+
*
|
1416
|
+
* @param groupInfo - a TLS encoded GroupInfo fetched from the Delivery Service
|
1417
|
+
* @param credentialType - kind of Credential to check usage of. Defaults to X509 for now as no other value will give any result.
|
1418
|
+
* @returns see {@link E2eiConversationState}
|
1419
|
+
*/
|
1420
|
+
getCredentialInUse(groupInfo: Uint8Array, credentialType?: CredentialType): Promise<E2eiConversationState>;
|
1134
1421
|
/**
|
1135
1422
|
* Returns the current version of {@link CoreCrypto}
|
1136
1423
|
*
|
@@ -1139,7 +1426,7 @@ export declare class CoreCrypto {
|
|
1139
1426
|
static version(): string;
|
1140
1427
|
}
|
1141
1428
|
type JsonRawData = Uint8Array;
|
1142
|
-
export declare class
|
1429
|
+
export declare class E2eiEnrollment {
|
1143
1430
|
#private;
|
1144
1431
|
/** @hidden */
|
1145
1432
|
constructor(e2ei: unknown);
|
@@ -1156,7 +1443,7 @@ export declare class WireE2eIdentity {
|
|
1156
1443
|
* @param directory HTTP response body
|
1157
1444
|
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.1.1
|
1158
1445
|
*/
|
1159
|
-
directoryResponse(directory: JsonRawData): AcmeDirectory
|
1446
|
+
directoryResponse(directory: JsonRawData): Promise<AcmeDirectory>;
|
1160
1447
|
/**
|
1161
1448
|
* For creating a new acme account. This returns a signed JWS-alike request body to send to
|
1162
1449
|
* `POST /acme/{provisioner-name}/new-account`.
|
@@ -1164,27 +1451,27 @@ export declare class WireE2eIdentity {
|
|
1164
1451
|
* @param previousNonce you got from calling `HEAD {@link AcmeDirectory.newNonce}`
|
1165
1452
|
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.3
|
1166
1453
|
*/
|
1167
|
-
newAccountRequest(previousNonce: string): JsonRawData
|
1454
|
+
newAccountRequest(previousNonce: string): Promise<JsonRawData>;
|
1168
1455
|
/**
|
1169
1456
|
* Parses the response from `POST /acme/{provisioner-name}/new-account`.
|
1170
1457
|
* @param account HTTP response body
|
1171
1458
|
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.3
|
1172
1459
|
*/
|
1173
|
-
newAccountResponse(account: JsonRawData): void
|
1460
|
+
newAccountResponse(account: JsonRawData): Promise<void>;
|
1174
1461
|
/**
|
1175
1462
|
* Creates a new acme order for the handle (userId + display name) and the clientId.
|
1176
1463
|
*
|
1177
1464
|
* @param previousNonce `replay-nonce` response header from `POST /acme/{provisioner-name}/new-account`
|
1178
1465
|
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
|
1179
1466
|
*/
|
1180
|
-
newOrderRequest(previousNonce: string): JsonRawData
|
1467
|
+
newOrderRequest(previousNonce: string): Promise<JsonRawData>;
|
1181
1468
|
/**
|
1182
1469
|
* Parses the response from `POST /acme/{provisioner-name}/new-order`.
|
1183
1470
|
*
|
1184
1471
|
* @param order HTTP response body
|
1185
1472
|
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
|
1186
1473
|
*/
|
1187
|
-
newOrderResponse(order: JsonRawData): NewAcmeOrder
|
1474
|
+
newOrderResponse(order: JsonRawData): Promise<NewAcmeOrder>;
|
1188
1475
|
/**
|
1189
1476
|
* Creates a new authorization request.
|
1190
1477
|
*
|
@@ -1193,14 +1480,14 @@ export declare class WireE2eIdentity {
|
|
1193
1480
|
* previous to this method if you are creating the second authorization)
|
1194
1481
|
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.5
|
1195
1482
|
*/
|
1196
|
-
newAuthzRequest(url: string, previousNonce: string): JsonRawData
|
1483
|
+
newAuthzRequest(url: string, previousNonce: string): Promise<JsonRawData>;
|
1197
1484
|
/**
|
1198
1485
|
* Parses the response from `POST /acme/{provisioner-name}/authz/{authz-id}`
|
1199
1486
|
*
|
1200
1487
|
* @param authz HTTP response body
|
1201
1488
|
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.5
|
1202
1489
|
*/
|
1203
|
-
newAuthzResponse(authz: JsonRawData): NewAcmeAuthz
|
1490
|
+
newAuthzResponse(authz: JsonRawData): Promise<NewAcmeAuthz>;
|
1204
1491
|
/**
|
1205
1492
|
* Generates a new client Dpop JWT token. It demonstrates proof of possession of the nonces
|
1206
1493
|
* (from wire-server & acme server) and will be verified by the acme server when verifying the
|
@@ -1212,7 +1499,7 @@ export declare class WireE2eIdentity {
|
|
1212
1499
|
* @param expirySecs of the client Dpop JWT. This should be equal to the grace period set in Team Management
|
1213
1500
|
* @param backendNonce you get by calling `GET /clients/token/nonce` on wire-server as defined here {@link https://staging-nginz-https.zinfra.io/api/swagger-ui/#/default/get_clients__client__nonce}
|
1214
1501
|
*/
|
1215
|
-
createDpopToken(expirySecs: number, backendNonce: string): Uint8Array
|
1502
|
+
createDpopToken(expirySecs: number, backendNonce: string): Promise<Uint8Array>;
|
1216
1503
|
/**
|
1217
1504
|
* Creates a new challenge request for Wire Dpop challenge.
|
1218
1505
|
*
|
@@ -1220,7 +1507,14 @@ export declare class WireE2eIdentity {
|
|
1220
1507
|
* @param previousNonce `replay-nonce` response header from `POST /acme/{provisioner-name}/authz/{authz-id}`
|
1221
1508
|
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.5.1
|
1222
1509
|
*/
|
1223
|
-
newDpopChallengeRequest(accessToken: string, previousNonce: string): JsonRawData
|
1510
|
+
newDpopChallengeRequest(accessToken: string, previousNonce: string): Promise<JsonRawData>;
|
1511
|
+
/**
|
1512
|
+
* Parses the response from `POST /acme/{provisioner-name}/challenge/{challenge-id}` for the DPoP challenge.
|
1513
|
+
*
|
1514
|
+
* @param challenge HTTP response body
|
1515
|
+
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.5.1
|
1516
|
+
*/
|
1517
|
+
newDpopChallengeResponse(challenge: JsonRawData): Promise<void>;
|
1224
1518
|
/**
|
1225
1519
|
* Creates a new challenge request for Wire Oidc challenge.
|
1226
1520
|
*
|
@@ -1228,14 +1522,15 @@ export declare class WireE2eIdentity {
|
|
1228
1522
|
* @param previousNonce `replay-nonce` response header from `POST /acme/{provisioner-name}/authz/{authz-id}`
|
1229
1523
|
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.5.1
|
1230
1524
|
*/
|
1231
|
-
newOidcChallengeRequest(idToken: string, previousNonce: string): JsonRawData
|
1525
|
+
newOidcChallengeRequest(idToken: string, previousNonce: string): Promise<JsonRawData>;
|
1232
1526
|
/**
|
1233
|
-
* Parses the response from `POST /acme/{provisioner-name}/challenge/{challenge-id}
|
1527
|
+
* Parses the response from `POST /acme/{provisioner-name}/challenge/{challenge-id}` for the OIDC challenge.
|
1234
1528
|
*
|
1529
|
+
* @param cc the CoreCrypto instance
|
1235
1530
|
* @param challenge HTTP response body
|
1236
1531
|
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.5.1
|
1237
1532
|
*/
|
1238
|
-
|
1533
|
+
newOidcChallengeResponse(challenge: JsonRawData): Promise<void>;
|
1239
1534
|
/**
|
1240
1535
|
* Verifies that the previous challenge has been completed.
|
1241
1536
|
*
|
@@ -1243,22 +1538,22 @@ export declare class WireE2eIdentity {
|
|
1243
1538
|
* @param previousNonce `replay-nonce` response header from `POST /acme/{provisioner-name}/challenge/{challenge-id}`
|
1244
1539
|
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
|
1245
1540
|
*/
|
1246
|
-
checkOrderRequest(orderUrl: string, previousNonce: string): JsonRawData
|
1541
|
+
checkOrderRequest(orderUrl: string, previousNonce: string): Promise<JsonRawData>;
|
1247
1542
|
/**
|
1248
1543
|
* Parses the response from `POST /acme/{provisioner-name}/order/{order-id}`.
|
1249
1544
|
*
|
1250
1545
|
* @param order HTTP response body
|
1251
|
-
* @return
|
1546
|
+
* @return finalize url to use with {@link finalizeRequest}
|
1252
1547
|
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
|
1253
1548
|
*/
|
1254
|
-
checkOrderResponse(order: JsonRawData): string
|
1549
|
+
checkOrderResponse(order: JsonRawData): Promise<string>;
|
1255
1550
|
/**
|
1256
1551
|
* Final step before fetching the certificate.
|
1257
1552
|
*
|
1258
1553
|
* @param previousNonce - `replay-nonce` response header from `POST /acme/{provisioner-name}/order/{order-id}`
|
1259
1554
|
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
|
1260
1555
|
*/
|
1261
|
-
finalizeRequest(previousNonce: string): JsonRawData
|
1556
|
+
finalizeRequest(previousNonce: string): Promise<JsonRawData>;
|
1262
1557
|
/**
|
1263
1558
|
* Parses the response from `POST /acme/{provisioner-name}/order/{order-id}/finalize`.
|
1264
1559
|
*
|
@@ -1266,105 +1561,14 @@ export declare class WireE2eIdentity {
|
|
1266
1561
|
* @return the certificate url to use with {@link certificateRequest}
|
1267
1562
|
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
|
1268
1563
|
*/
|
1269
|
-
finalizeResponse(finalize: JsonRawData): string
|
1564
|
+
finalizeResponse(finalize: JsonRawData): Promise<string>;
|
1270
1565
|
/**
|
1271
1566
|
* Creates a request for finally fetching the x509 certificate.
|
1272
1567
|
*
|
1273
1568
|
* @param previousNonce `replay-nonce` response header from `POST /acme/{provisioner-name}/order/{order-id}/finalize`
|
1274
1569
|
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4.2
|
1275
1570
|
*/
|
1276
|
-
certificateRequest(previousNonce: string): JsonRawData
|
1277
|
-
}
|
1278
|
-
/**
|
1279
|
-
* Holds URLs of all the standard ACME endpoint supported on an ACME server.
|
1280
|
-
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.1.1
|
1281
|
-
*/
|
1282
|
-
export interface AcmeDirectory {
|
1283
|
-
/**
|
1284
|
-
* URL for fetching a new nonce. Use this only for creating a new account.
|
1285
|
-
*
|
1286
|
-
* @readonly
|
1287
|
-
*/
|
1288
|
-
newNonce: string;
|
1289
|
-
/**
|
1290
|
-
* URL for creating a new account.
|
1291
|
-
*
|
1292
|
-
* @readonly
|
1293
|
-
*/
|
1294
|
-
newAccount: string;
|
1295
|
-
/**
|
1296
|
-
* URL for creating a new order.
|
1297
|
-
*
|
1298
|
-
* @readonly
|
1299
|
-
*/
|
1300
|
-
newOrder: string;
|
1301
|
-
}
|
1302
|
-
/**
|
1303
|
-
* Result of an order creation
|
1304
|
-
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
|
1305
|
-
*/
|
1306
|
-
export interface NewAcmeOrder {
|
1307
|
-
/**
|
1308
|
-
* Contains raw JSON data of this order. This is parsed by the underlying Rust library hence should not be accessed
|
1309
|
-
*
|
1310
|
-
* @readonly
|
1311
|
-
*/
|
1312
|
-
delegate: Uint8Array;
|
1313
|
-
/**
|
1314
|
-
* An authorization for each domain to create
|
1315
|
-
*
|
1316
|
-
* @readonly
|
1317
|
-
*/
|
1318
|
-
authorizations: Uint8Array[];
|
1319
|
-
}
|
1320
|
-
/**
|
1321
|
-
* Result of an authorization creation.
|
1322
|
-
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.5
|
1323
|
-
*/
|
1324
|
-
export interface NewAcmeAuthz {
|
1325
|
-
/**
|
1326
|
-
* DNS entry associated with those challenge
|
1327
|
-
*
|
1328
|
-
* @readonly
|
1329
|
-
*/
|
1330
|
-
identifier: string;
|
1331
|
-
/**
|
1332
|
-
* Challenge for the clientId
|
1333
|
-
*
|
1334
|
-
* @readonly
|
1335
|
-
*/
|
1336
|
-
wireDpopChallenge?: AcmeChallenge;
|
1337
|
-
/**
|
1338
|
-
* Challenge for the userId and displayName
|
1339
|
-
*
|
1340
|
-
* @readonly
|
1341
|
-
*/
|
1342
|
-
wireOidcChallenge?: AcmeChallenge;
|
1343
|
-
}
|
1344
|
-
/**
|
1345
|
-
* For creating a challenge
|
1346
|
-
* @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.5.1
|
1347
|
-
*/
|
1348
|
-
export interface AcmeChallenge {
|
1349
|
-
/**
|
1350
|
-
* Contains raw JSON data of this challenge. This is parsed by the underlying Rust library hence should not be accessed
|
1351
|
-
*
|
1352
|
-
* @readonly
|
1353
|
-
*/
|
1354
|
-
delegate: Uint8Array;
|
1355
|
-
/**
|
1356
|
-
* URL of this challenge
|
1357
|
-
*
|
1358
|
-
* @readonly
|
1359
|
-
*/
|
1360
|
-
url: string;
|
1361
|
-
/**
|
1362
|
-
* Non-standard, Wire specific claim. Indicates the consumer from where it should get the challenge proof.
|
1363
|
-
* Either from wire-server "/access-token" endpoint in case of a DPoP challenge, or from an OAuth token endpoint for an OIDC challenge
|
1364
|
-
*
|
1365
|
-
* @readonly
|
1366
|
-
*/
|
1367
|
-
target: string;
|
1571
|
+
certificateRequest(previousNonce: string): Promise<JsonRawData>;
|
1368
1572
|
}
|
1369
1573
|
/**
|
1370
1574
|
* Indicates the state of a Conversation regarding end-to-end identity.
|
@@ -1379,9 +1583,9 @@ export declare enum E2eiConversationState {
|
|
1379
1583
|
/**
|
1380
1584
|
* Some clients are either still Basic or their certificate is expired
|
1381
1585
|
*/
|
1382
|
-
|
1586
|
+
NotVerified = 2,
|
1383
1587
|
/**
|
1384
|
-
* All clients are still Basic. If all client have expired certificates,
|
1588
|
+
* All clients are still Basic. If all client have expired certificates, NotVerified is returned.
|
1385
1589
|
*/
|
1386
1590
|
NotEnabled = 3
|
1387
1591
|
}
|