@wireapp/core-crypto 1.0.0-rc.7 → 1.0.0-rc.8

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": "1.0.0-rc.7",
3
+ "version": "1.0.0-rc.8",
4
4
  "description": "CoreCrypto bindings for the Web",
5
5
  "type": "module",
6
6
  "module": "platforms/web/corecrypto.js",
@@ -386,6 +386,45 @@ export interface DecryptedMessage {
386
386
  * Present for all messages
387
387
  */
388
388
  identity?: WireIdentity;
389
+ /**
390
+ * Only set when the decrypted message is a commit.
391
+ * Contains buffered messages for next epoch which were received before the commit creating the epoch
392
+ * because the DS did not fan them out in order.
393
+ */
394
+ bufferedMessages?: BufferedDecryptedMessage[];
395
+ }
396
+ /**
397
+ * Almost same as {@link DecryptedMessage} but avoids recursion
398
+ */
399
+ export interface BufferedDecryptedMessage {
400
+ /**
401
+ * see {@link DecryptedMessage.message}
402
+ */
403
+ message?: Uint8Array;
404
+ /**
405
+ * see {@link DecryptedMessage.proposals}
406
+ */
407
+ proposals: ProposalBundle[];
408
+ /**
409
+ * see {@link DecryptedMessage.isActive}
410
+ */
411
+ isActive: boolean;
412
+ /**
413
+ * see {@link DecryptedMessage.commitDelay}
414
+ */
415
+ commitDelay?: number;
416
+ /**
417
+ * see {@link DecryptedMessage.senderClientId}
418
+ */
419
+ senderClientId?: ClientId;
420
+ /**
421
+ * see {@link DecryptedMessage.hasEpochChanged}
422
+ */
423
+ hasEpochChanged: boolean;
424
+ /**
425
+ * see {@link DecryptedMessage.identity}
426
+ */
427
+ identity?: WireIdentity;
389
428
  }
390
429
  /**
391
430
  * Represents the identity claims identifying a client. Those claims are verifiable by any member in the group
@@ -625,7 +664,7 @@ export declare class CoreCrypto {
625
664
  /**
626
665
  * Closes this {@link CoreCrypto} instance and deallocates all loaded resources
627
666
  *
628
- * **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!
667
+ * **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
668
  */
630
669
  close(): Promise<void>;
631
670
  /**
@@ -691,7 +730,12 @@ export declare class CoreCrypto {
691
730
  */
692
731
  createConversation(conversationId: ConversationId, creatorCredentialType: CredentialType, configuration?: ConversationConfiguration): Promise<any>;
693
732
  /**
694
- * Decrypts a message for a given conversation
733
+ * Decrypts a message for a given conversation.
734
+ *
735
+ * Note: you should catch & ignore the following error reasons:
736
+ * * "We already decrypted this message once"
737
+ * * "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"
738
+ * * "Incoming message is for a future epoch. We will buffer it until the commit for that epoch arrives"
695
739
  *
696
740
  * @param conversationId - The ID of the conversation
697
741
  * @param payload - The encrypted message buffer
@@ -723,7 +767,7 @@ export declare class CoreCrypto {
723
767
  *
724
768
  * @returns A {@link CommitBundle}
725
769
  */
726
- update_trust_anchors_from_conversation(conversationId: ConversationId, removeDomainNames: string[], addTrustAnchors: PerDomainTrustAnchor[]): Promise<CommitBundle>;
770
+ updateTrustAnchorsFromConversation(conversationId: ConversationId, removeDomainNames: string[], addTrustAnchors: PerDomainTrustAnchor[]): Promise<CommitBundle>;
727
771
  /**
728
772
  * Ingest a TLS-serialized MLS welcome message to join an existing MLS group
729
773
  *
@@ -737,7 +781,10 @@ export declare class CoreCrypto {
737
781
  */
738
782
  processWelcomeMessage(welcomeMessage: Uint8Array, configuration?: CustomConfiguration): Promise<ConversationId>;
739
783
  /**
740
- * @returns The client's public key
784
+ * Get the client's public signature key. To upload to the DS for further backend side validation
785
+ *
786
+ * @param ciphersuite - of the signature key to get
787
+ * @returns the client's public signature key
741
788
  */
742
789
  clientPublicKey(ciphersuite: Ciphersuite): Promise<Uint8Array>;
743
790
  /**
@@ -766,7 +813,7 @@ export declare class CoreCrypto {
766
813
  /**
767
814
  * Adds new clients to a conversation, assuming the current client has the right to add new clients to the conversation.
768
815
  *
769
- * **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterwards **ONLY IF** the Delivery Service responds
816
+ * **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterward **ONLY IF** the Delivery Service responds
770
817
  * '200 OK' to the {@link CommitBundle} upload. It will "merge" the commit locally i.e. increment the local group
771
818
  * epoch, use new encryption secrets etc...
772
819
  *
@@ -780,7 +827,7 @@ export declare class CoreCrypto {
780
827
  * Removes the provided clients from a conversation; Assuming those clients exist and the current client is allowed
781
828
  * to do so, otherwise this operation does nothing.
782
829
  *
783
- * **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterwards **ONLY IF** the Delivery Service responds
830
+ * **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterward **ONLY IF** the Delivery Service responds
784
831
  * '200 OK' to the {@link CommitBundle} upload. It will "merge" the commit locally i.e. increment the local group
785
832
  * epoch, use new encryption secrets etc...
786
833
  *
@@ -791,9 +838,9 @@ export declare class CoreCrypto {
791
838
  */
792
839
  removeClientsFromConversation(conversationId: ConversationId, clientIds: ClientId[]): Promise<CommitBundle>;
793
840
  /**
794
- * Creates an update commit which forces every client to update their keypackages in the conversation
841
+ * Creates an update commit which forces every client to update their LeafNode in the conversation
795
842
  *
796
- * **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterwards **ONLY IF** the Delivery Service responds
843
+ * **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterward **ONLY IF** the Delivery Service responds
797
844
  * '200 OK' to the {@link CommitBundle} upload. It will "merge" the commit locally i.e. increment the local group
798
845
  * epoch, use new encryption secrets etc...
799
846
  *
@@ -823,6 +870,9 @@ export declare class CoreCrypto {
823
870
  * @returns A {@link ProposalBundle} containing the Proposal and its reference in order to roll it back if necessary
824
871
  */
825
872
  newProposal(proposalType: ProposalType, args: ProposalArgs | AddProposalArgs | RemoveProposalArgs): Promise<ProposalBundle>;
873
+ /**
874
+ * Creates a new external Add proposal for self client to join a conversation.
875
+ */
826
876
  newExternalProposal(externalProposalType: ExternalProposalType, args: ExternalAddProposalArgs): Promise<Uint8Array>;
827
877
  /**
828
878
  * Allows to create an external commit to "apply" to join a group through its GroupInfo.
@@ -847,8 +897,9 @@ export declare class CoreCrypto {
847
897
  * and deletes the temporary one. This step makes the group operational and ready to encrypt/decrypt message
848
898
  *
849
899
  * @param conversationId - The ID of the conversation
900
+ * @returns eventually decrypted buffered messages if any
850
901
  */
851
- mergePendingGroupFromExternalCommit(conversationId: ConversationId): Promise<DecryptedMessage[] | undefined>;
902
+ mergePendingGroupFromExternalCommit(conversationId: ConversationId): Promise<BufferedDecryptedMessage[] | undefined>;
852
903
  /**
853
904
  * In case the external commit generated by {@link CoreCrypto.joinByExternalCommit} is rejected by the Delivery Service, and we
854
905
  * want to abort this external commit once for all, we can wipe out the pending group from the keystore in order
@@ -858,26 +909,24 @@ export declare class CoreCrypto {
858
909
  */
859
910
  clearPendingGroupFromExternalCommit(conversationId: ConversationId): Promise<void>;
860
911
  /**
861
- * Allows to mark the latest commit produced as "accepted" and be able to safely merge it
862
- * into the local group state
912
+ * Allows to mark the latest commit produced as "accepted" and be able to safely merge it into the local group state
863
913
  *
864
914
  * @param conversationId - The group's ID
915
+ * @returns the messages from current epoch which had been buffered, if any
865
916
  */
866
- commitAccepted(conversationId: ConversationId): Promise<void>;
917
+ commitAccepted(conversationId: ConversationId): Promise<BufferedDecryptedMessage[] | undefined>;
867
918
  /**
868
- * Allows to remove a pending proposal (rollback). Use this when backend rejects the proposal you just sent e.g. if permissions
869
- * have changed meanwhile.
919
+ * Allows to remove a pending proposal (rollback). Use this when backend rejects the proposal you just sent e.g. if permissions have changed meanwhile.
870
920
  *
871
921
  * **CAUTION**: only use this when you had an explicit response from the Delivery Service
872
- * e.g. 403 or 409. Do not use otherwise e.g. 5xx responses, timeout etc..
922
+ * e.g. 403 or 409. Do not use otherwise e.g. 5xx responses, timeout etc
873
923
  *
874
924
  * @param conversationId - The group's ID
875
925
  * @param proposalRef - A reference to the proposal to delete. You get one when using {@link CoreCrypto.newProposal}
876
926
  */
877
927
  clearPendingProposal(conversationId: ConversationId, proposalRef: ProposalRef): Promise<void>;
878
928
  /**
879
- * Allows to remove a pending commit (rollback). Use this when backend rejects the commit you just sent e.g. if permissions
880
- * have changed meanwhile.
929
+ * Allows to remove a pending commit (rollback). Use this when backend rejects the commit you just sent e.g. if permissions have changed meanwhile.
881
930
  *
882
931
  * **CAUTION**: only use this when you had an explicit response from the Delivery Service
883
932
  * e.g. 403. Do not use otherwise e.g. 5xx responses, timeout etc..
@@ -921,7 +970,7 @@ export declare class CoreCrypto {
921
970
  */
922
971
  reseedRng(seed: Uint8Array): Promise<void>;
923
972
  /**
924
- * Initiailizes the proteus client
973
+ * Initializes the proteus client
925
974
  */
926
975
  proteusInit(): Promise<void>;
927
976
  /**
@@ -1054,47 +1103,49 @@ export declare class CoreCrypto {
1054
1103
  * Creates an enrollment instance with private key material you can use in order to fetch
1055
1104
  * a new x509 certificate from the acme server.
1056
1105
  *
1057
- * @param clientId client identifier with user b64Url encoded & clientId hex encoded e.g. `NDUyMGUyMmY2YjA3NGU3NjkyZjE1NjJjZTAwMmQ2NTQ:6add501bacd1d90e@example.com`
1058
- * @param displayName human readable name displayed in the application e.g. `Smith, Alice M (QA)`
1059
- * @param handle user handle e.g. `alice.smith.qa@example.com`
1060
- * @param expiryDays generated x509 certificate expiry
1106
+ * @param clientId - client identifier with user b64Url encoded & clientId hex encoded e.g. `NDUyMGUyMmY2YjA3NGU3NjkyZjE1NjJjZTAwMmQ2NTQ:6add501bacd1d90e@example.com`
1107
+ * @param displayName - human-readable name displayed in the application e.g. `Smith, Alice M (QA)`
1108
+ * @param handle - user handle e.g. `alice.smith.qa@example.com`
1109
+ * @param expiryDays - generated x509 certificate expiry
1061
1110
  * @param ciphersuite - for generating signing key material
1062
- * @returns The new {@link WireE2eIdentity} object
1111
+ * @returns The new {@link E2eiEnrollment} enrollment instance to use with {@link CoreCrypto.e2eiMlsInitOnly}
1063
1112
  */
1064
- e2eiNewEnrollment(clientId: string, displayName: string, handle: string, expiryDays: number, ciphersuite: Ciphersuite): Promise<WireE2eIdentity>;
1113
+ e2eiNewEnrollment(clientId: string, displayName: string, handle: string, expiryDays: number, ciphersuite: Ciphersuite): Promise<E2eiEnrollment>;
1065
1114
  /**
1066
1115
  * Generates an E2EI enrollment instance for a "regular" client (with a Basic credential) willing to migrate to E2EI.
1067
1116
  * Once the enrollment is finished, use the instance in {@link CoreCrypto.e2eiRotateAll} to do the rotation.
1068
1117
  *
1069
- * @param clientId client identifier with user b64Url encoded & clientId hex encoded e.g. `NDUyMGUyMmY2YjA3NGU3NjkyZjE1NjJjZTAwMmQ2NTQ:6add501bacd1d90e@example.com`
1070
- * @param displayName human readable name displayed in the application e.g. `Smith, Alice M (QA)`
1071
- * @param handle user handle e.g. `alice.smith.qa@example.com`
1072
- * @param expiryDays generated x509 certificate expiry
1118
+ * @param clientId - client identifier with user b64Url encoded & clientId hex encoded e.g. `NDUyMGUyMmY2YjA3NGU3NjkyZjE1NjJjZTAwMmQ2NTQ:6add501bacd1d90e@example.com`
1119
+ * @param displayName - human-readable name displayed in the application e.g. `Smith, Alice M (QA)`
1120
+ * @param handle - user handle e.g. `alice.smith.qa@example.com`
1121
+ * @param expiryDays - generated x509 certificate expiry
1073
1122
  * @param ciphersuite - for generating signing key material
1074
- * @returns The new {@link WireE2eIdentity} object
1123
+ * @returns The new {@link E2eiEnrollment} enrollment instance to use with {@link CoreCrypto.e2eiRotateAll}
1075
1124
  */
1076
- e2eiNewActivationEnrollment(clientId: string, displayName: string, handle: string, expiryDays: number, ciphersuite: Ciphersuite): Promise<WireE2eIdentity>;
1125
+ e2eiNewActivationEnrollment(clientId: string, displayName: string, handle: string, expiryDays: number, ciphersuite: Ciphersuite): Promise<E2eiEnrollment>;
1077
1126
  /**
1078
1127
  * Generates an E2EI enrollment instance for a E2EI client (with a X509 certificate credential)
1079
1128
  * having to change/rotate their credential, either because the former one is expired or it
1080
1129
  * has been revoked. It lets you change the DisplayName or the handle
1081
1130
  * if you need to. Once the enrollment is finished, use the instance in {@link CoreCrypto.e2eiRotateAll} to do the rotation.
1082
1131
  *
1083
- * @param clientId client identifier with user b64Url encoded & clientId hex encoded e.g. `NDUyMGUyMmY2YjA3NGU3NjkyZjE1NjJjZTAwMmQ2NTQ:6add501bacd1d90e@example.com`
1084
- * @param expiryDays generated x509 certificate expiry
1132
+ * @param clientId - client identifier with user b64Url encoded & clientId hex encoded e.g. `NDUyMGUyMmY2YjA3NGU3NjkyZjE1NjJjZTAwMmQ2NTQ:6add501bacd1d90e@example.com`
1133
+ * @param expiryDays - generated x509 certificate expiry
1085
1134
  * @param ciphersuite - for generating signing key material
1086
- * @param displayName human readable name displayed in the application e.g. `Smith, Alice M (QA)`
1087
- * @param handle user handle e.g. `alice.smith.qa@example.com`
1088
- * @returns The new {@link WireE2eIdentity} object
1135
+ * @param displayName - human-readable name displayed in the application e.g. `Smith, Alice M (QA)`
1136
+ * @param handle - user handle e.g. `alice.smith.qa@example.com`
1137
+ * @returns The new {@link E2eiEnrollment} enrollment instance to use with {@link CoreCrypto.e2eiRotateAll}
1089
1138
  */
1090
- e2eiNewRotateEnrollment(clientId: string, expiryDays: number, ciphersuite: Ciphersuite, displayName?: string, handle?: string): Promise<WireE2eIdentity>;
1139
+ e2eiNewRotateEnrollment(clientId: string, expiryDays: number, ciphersuite: Ciphersuite, displayName?: string, handle?: string): Promise<E2eiEnrollment>;
1091
1140
  /**
1092
- * Use this method to initialize end-to-end identity when a client signs up and the grace period is already expired ; that means he cannot initialize with a Basic credential
1141
+ * Use this method to initialize end-to-end identity when a client signs up and the grace period is already expired ;
1142
+ * that means he cannot initialize with a Basic credential
1093
1143
  *
1094
1144
  * @param enrollment - the enrollment instance used to fetch the certificates
1095
1145
  * @param certificateChain - the raw response from ACME server
1146
+ * @returns a MlsClient initialized with only a x509 credential
1096
1147
  */
1097
- e2eiMlsInitOnly(enrollment: WireE2eIdentity, certificateChain: string): Promise<void>;
1148
+ e2eiMlsInitOnly(enrollment: E2eiEnrollment, certificateChain: string): Promise<void>;
1098
1149
  /**
1099
1150
  * Creates a commit in all local conversations for changing the credential. Requires first
1100
1151
  * having enrolled a new X509 certificate with either {@link CoreCrypto.e2eiNewActivationEnrollment}
@@ -1103,8 +1154,9 @@ export declare class CoreCrypto {
1103
1154
  * @param enrollment - the enrollment instance used to fetch the certificates
1104
1155
  * @param certificateChain - the raw response from ACME server
1105
1156
  * @param newKeyPackageCount - number of KeyPackages with new identity to generate
1157
+ * @returns a {@link RotateBundle} with commits to fan-out to other group members, KeyPackages to upload and old ones to delete
1106
1158
  */
1107
- e2eiRotateAll(enrollment: WireE2eIdentity, certificateChain: string, newKeyPackageCount: number): Promise<RotateBundle>;
1159
+ e2eiRotateAll(enrollment: E2eiEnrollment, certificateChain: string, newKeyPackageCount: number): Promise<RotateBundle>;
1108
1160
  /**
1109
1161
  * Allows persisting an active enrollment (for example while redirecting the user during OAuth) in order to resume
1110
1162
  * it later with {@link e2eiEnrollmentStashPop}
@@ -1112,14 +1164,14 @@ export declare class CoreCrypto {
1112
1164
  * @param enrollment the enrollment instance to persist
1113
1165
  * @returns a handle to fetch the enrollment later with {@link e2eiEnrollmentStashPop}
1114
1166
  */
1115
- e2eiEnrollmentStash(enrollment: WireE2eIdentity): Promise<Uint8Array>;
1167
+ e2eiEnrollmentStash(enrollment: E2eiEnrollment): Promise<Uint8Array>;
1116
1168
  /**
1117
1169
  * Fetches the persisted enrollment and deletes it from the keystore
1118
1170
  *
1119
1171
  * @param handle returned by {@link e2eiEnrollmentStash}
1120
1172
  * @returns the persisted enrollment instance
1121
1173
  */
1122
- e2eiEnrollmentStashPop(handle: Uint8Array): Promise<WireE2eIdentity>;
1174
+ e2eiEnrollmentStashPop(handle: Uint8Array): Promise<E2eiEnrollment>;
1123
1175
  /**
1124
1176
  * Indicates when to mark a conversation as degraded i.e. when not all its members have a X509.
1125
1177
  * Credential generated by Wire's end-to-end identity enrollment
@@ -1132,9 +1184,18 @@ export declare class CoreCrypto {
1132
1184
  * Returns true when end-to-end-identity is enabled for the given Ciphersuite
1133
1185
  *
1134
1186
  * @param ciphersuite of the credential to check
1135
- * @returns true end-to-end identity is enabled for the given ciphersuite
1187
+ * @returns true if end-to-end identity is enabled for the given ciphersuite
1136
1188
  */
1137
1189
  e2eiIsEnabled(ciphersuite: Ciphersuite): Promise<boolean>;
1190
+ /**
1191
+ * From a given conversation, get the identity of the members supplied. Identity is only present for members with a
1192
+ * Certificate Credential (after turning on end-to-end identity).
1193
+ *
1194
+ * @param conversationId - identifier of the conversation
1195
+ * @param clientIds - identifiers of the user
1196
+ * @returns identities or if no member has a x509 certificate, it will return an empty List
1197
+ */
1198
+ getUserIdentities(conversationId: ConversationId, clientIds: ClientId[]): Promise<WireIdentity[]>;
1138
1199
  /**
1139
1200
  * Returns the current version of {@link CoreCrypto}
1140
1201
  *
@@ -1143,7 +1204,7 @@ export declare class CoreCrypto {
1143
1204
  static version(): string;
1144
1205
  }
1145
1206
  type JsonRawData = Uint8Array;
1146
- export declare class WireE2eIdentity {
1207
+ export declare class E2eiEnrollment {
1147
1208
  #private;
1148
1209
  /** @hidden */
1149
1210
  constructor(e2ei: unknown);
@@ -1252,7 +1313,7 @@ export declare class WireE2eIdentity {
1252
1313
  * Parses the response from `POST /acme/{provisioner-name}/order/{order-id}`.
1253
1314
  *
1254
1315
  * @param order HTTP response body
1255
- * @return the finalize url to use with {@link finalizeRequest}
1316
+ * @return finalize url to use with {@link finalizeRequest}
1256
1317
  * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
1257
1318
  */
1258
1319
  checkOrderResponse(order: JsonRawData): string;
@@ -234,12 +234,12 @@ function makeMutClosure(arg0, arg1, dtor, f) {
234
234
  return real;
235
235
  }
236
236
  function __wbg_adapter_52(arg0, arg1, arg2) {
237
- wasm$1.wasm_bindgen__convert__closures__invoke1_mut__h17baf5e1d66e67f4(arg0, arg1, addHeapObject(arg2));
237
+ wasm$1.wasm_bindgen__convert__closures__invoke1_mut__hdb6540dbb26cf63b(arg0, arg1, addHeapObject(arg2));
238
238
  }
239
239
  function __wbg_adapter_55(arg0, arg1, arg2) {
240
240
  try {
241
241
  const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16);
242
- wasm$1.wasm_bindgen__convert__closures__invoke1_mut__h98d6800184b7661d(retptr, arg0, arg1, addHeapObject(arg2));
242
+ wasm$1.wasm_bindgen__convert__closures__invoke1_mut__h5e436dc96f7334f7(retptr, arg0, arg1, addHeapObject(arg2));
243
243
  var r0 = getInt32Memory0()[retptr / 4 + 0];
244
244
  var r1 = getInt32Memory0()[retptr / 4 + 1];
245
245
  if (r1) {
@@ -313,8 +313,8 @@ function handleError(f, args) {
313
313
  wasm$1.__wbindgen_exn_store(addHeapObject(e));
314
314
  }
315
315
  }
316
- function __wbg_adapter_299(arg0, arg1, arg2, arg3) {
317
- wasm$1.wasm_bindgen__convert__closures__invoke2_mut__haf4f26fdea6dc8ca(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
316
+ function __wbg_adapter_310(arg0, arg1, arg2, arg3) {
317
+ wasm$1.wasm_bindgen__convert__closures__invoke2_mut__h5286c52f12e3fed2(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
318
318
  }
319
319
  /**
320
320
  * see [core_crypto::prelude::MlsWirePolicy]
@@ -554,6 +554,83 @@ class AcmeDirectory {
554
554
  }
555
555
  }
556
556
  /**
557
+ * to avoid recursion
558
+ */
559
+ class BufferedDecryptedMessage {
560
+ static __wrap(ptr) {
561
+ ptr = ptr >>> 0;
562
+ const obj = Object.create(BufferedDecryptedMessage.prototype);
563
+ obj.__wbg_ptr = ptr;
564
+ return obj;
565
+ }
566
+ __destroy_into_raw() {
567
+ const ptr = this.__wbg_ptr;
568
+ this.__wbg_ptr = 0;
569
+ return ptr;
570
+ }
571
+ free() {
572
+ const ptr = this.__destroy_into_raw();
573
+ wasm$1.__wbg_buffereddecryptedmessage_free(ptr);
574
+ }
575
+ /**
576
+ * @returns {any}
577
+ */
578
+ get message() {
579
+ const ret = wasm$1.buffereddecryptedmessage_message(this.__wbg_ptr);
580
+ return takeObject(ret);
581
+ }
582
+ /**
583
+ * @returns {Array<any>}
584
+ */
585
+ get proposals() {
586
+ const ret = wasm$1.buffereddecryptedmessage_proposals(this.__wbg_ptr);
587
+ return takeObject(ret);
588
+ }
589
+ /**
590
+ * @returns {boolean}
591
+ */
592
+ get is_active() {
593
+ const ret = wasm$1.buffereddecryptedmessage_is_active(this.__wbg_ptr);
594
+ return ret !== 0;
595
+ }
596
+ /**
597
+ * @returns {number | undefined}
598
+ */
599
+ get commit_delay() {
600
+ try {
601
+ const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16);
602
+ wasm$1.buffereddecryptedmessage_commit_delay(retptr, this.__wbg_ptr);
603
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
604
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
605
+ return r0 === 0 ? undefined : r1 >>> 0;
606
+ }
607
+ finally {
608
+ wasm$1.__wbindgen_add_to_stack_pointer(16);
609
+ }
610
+ }
611
+ /**
612
+ * @returns {any}
613
+ */
614
+ get sender_client_id() {
615
+ const ret = wasm$1.buffereddecryptedmessage_sender_client_id(this.__wbg_ptr);
616
+ return takeObject(ret);
617
+ }
618
+ /**
619
+ * @returns {boolean}
620
+ */
621
+ get has_epoch_changed() {
622
+ const ret = wasm$1.buffereddecryptedmessage_has_epoch_changed(this.__wbg_ptr);
623
+ return ret !== 0;
624
+ }
625
+ /**
626
+ * @returns {WireIdentity | undefined}
627
+ */
628
+ get identity() {
629
+ const ret = wasm$1.buffereddecryptedmessage_identity(this.__wbg_ptr);
630
+ return ret === 0 ? undefined : WireIdentity.__wrap(ret);
631
+ }
632
+ }
633
+ /**
557
634
  */
558
635
  class CommitBundle {
559
636
  static __wrap(ptr) {
@@ -691,7 +768,7 @@ let CoreCrypto$1 = class CoreCrypto {
691
768
  wasm$1.__wbg_corecrypto_free(ptr);
692
769
  }
693
770
  /**
694
- * Returns: [`WasmCryptoResult<WireE2eIdentity>`]
771
+ * Returns: [`WasmCryptoResult<E2eiEnrollment>`]
695
772
  *
696
773
  * see [core_crypto::mls::MlsCentral::e2ei_new_enrollment]
697
774
  * @param {string} client_id
@@ -712,7 +789,7 @@ let CoreCrypto$1 = class CoreCrypto {
712
789
  return takeObject(ret);
713
790
  }
714
791
  /**
715
- * Returns: [`WasmCryptoResult<WireE2eIdentity>`]
792
+ * Returns: [`WasmCryptoResult<E2eiEnrollment>`]
716
793
  *
717
794
  * see [core_crypto::mls::MlsCentral::e2ei_new_activation_enrollment]
718
795
  * @param {string} client_id
@@ -733,7 +810,7 @@ let CoreCrypto$1 = class CoreCrypto {
733
810
  return takeObject(ret);
734
811
  }
735
812
  /**
736
- * Returns: [`WasmCryptoResult<WireE2eIdentity>`]
813
+ * Returns: [`WasmCryptoResult<E2eiEnrollment>`]
737
814
  *
738
815
  * see [core_crypto::mls::MlsCentral::e2ei_new_rotate_enrollment]
739
816
  * @param {string} client_id
@@ -829,6 +906,22 @@ let CoreCrypto$1 = class CoreCrypto {
829
906
  return takeObject(ret);
830
907
  }
831
908
  /**
909
+ * Returns [`WasmCryptoResult<Vec<WireIdentity>>`]
910
+ *
911
+ * see [core_crypto::mls::MlsCentral::get_user_identities]
912
+ * @param {Uint8Array} conversation_id
913
+ * @param {(Uint8Array)[]} client_ids
914
+ * @returns {Promise<any>}
915
+ */
916
+ get_user_identities(conversation_id, client_ids) {
917
+ const ptr0 = passArray8ToWasm0(conversation_id, wasm$1.__wbindgen_malloc);
918
+ const len0 = WASM_VECTOR_LEN;
919
+ const ptr1 = passArrayJsValueToWasm0(client_ids, wasm$1.__wbindgen_malloc);
920
+ const len1 = WASM_VECTOR_LEN;
921
+ const ret = wasm$1.corecrypto_get_user_identities(this.__wbg_ptr, ptr0, len0, ptr1, len1);
922
+ return takeObject(ret);
923
+ }
924
+ /**
832
925
  * Returns the current version of CoreCrypto
833
926
  * @returns {string}
834
927
  */
@@ -1766,14 +1859,14 @@ class DecryptedMessage {
1766
1859
  * @returns {any}
1767
1860
  */
1768
1861
  get message() {
1769
- const ret = wasm$1.decryptedmessage_message(this.__wbg_ptr);
1862
+ const ret = wasm$1.buffereddecryptedmessage_message(this.__wbg_ptr);
1770
1863
  return takeObject(ret);
1771
1864
  }
1772
1865
  /**
1773
1866
  * @returns {Array<any>}
1774
1867
  */
1775
1868
  get proposals() {
1776
- const ret = wasm$1.decryptedmessage_proposals(this.__wbg_ptr);
1869
+ const ret = wasm$1.buffereddecryptedmessage_proposals(this.__wbg_ptr);
1777
1870
  return takeObject(ret);
1778
1871
  }
1779
1872
  /**
@@ -1789,7 +1882,7 @@ class DecryptedMessage {
1789
1882
  get commit_delay() {
1790
1883
  try {
1791
1884
  const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16);
1792
- wasm$1.decryptedmessage_commit_delay(retptr, this.__wbg_ptr);
1885
+ wasm$1.buffereddecryptedmessage_commit_delay(retptr, this.__wbg_ptr);
1793
1886
  var r0 = getInt32Memory0()[retptr / 4 + 0];
1794
1887
  var r1 = getInt32Memory0()[retptr / 4 + 1];
1795
1888
  return r0 === 0 ? undefined : r1 >>> 0;
@@ -1802,7 +1895,7 @@ class DecryptedMessage {
1802
1895
  * @returns {any}
1803
1896
  */
1804
1897
  get sender_client_id() {
1805
- const ret = wasm$1.decryptedmessage_sender_client_id(this.__wbg_ptr);
1898
+ const ret = wasm$1.buffereddecryptedmessage_sender_client_id(this.__wbg_ptr);
1806
1899
  return takeObject(ret);
1807
1900
  }
1808
1901
  /**
@@ -1816,9 +1909,16 @@ class DecryptedMessage {
1816
1909
  * @returns {WireIdentity | undefined}
1817
1910
  */
1818
1911
  get identity() {
1819
- const ret = wasm$1.decryptedmessage_identity(this.__wbg_ptr);
1912
+ const ret = wasm$1.buffereddecryptedmessage_identity(this.__wbg_ptr);
1820
1913
  return ret === 0 ? undefined : WireIdentity.__wrap(ret);
1821
1914
  }
1915
+ /**
1916
+ * @returns {Array<any> | undefined}
1917
+ */
1918
+ get buffered_messages() {
1919
+ const ret = wasm$1.decryptedmessage_buffered_messages(this.__wbg_ptr);
1920
+ return takeObject(ret);
1921
+ }
1822
1922
  }
1823
1923
  /**
1824
1924
  */
@@ -2869,18 +2969,14 @@ function __wbg_get_imports() {
2869
2969
  const ret = getObject(arg0).length;
2870
2970
  return ret;
2871
2971
  };
2872
- imports.wbg.__wbg_new_8125e318e6245eed = function (arg0) {
2873
- const ret = new Uint8Array(getObject(arg0));
2874
- return addHeapObject(ret);
2875
- };
2876
2972
  imports.wbg.__wbg_call_01734de55d61e11d = function () {
2877
2973
  return handleError(function (arg0, arg1, arg2) {
2878
2974
  const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));
2879
2975
  return addHeapObject(ret);
2880
2976
  }, arguments);
2881
2977
  };
2882
- imports.wbg.__wbg_new_b51585de1b234aff = function () {
2883
- const ret = new Object();
2978
+ imports.wbg.__wbg_new_8125e318e6245eed = function (arg0) {
2979
+ const ret = new Uint8Array(getObject(arg0));
2884
2980
  return addHeapObject(ret);
2885
2981
  };
2886
2982
  imports.wbg.__wbg_new_898a68150f225f2e = function () {
@@ -2890,26 +2986,33 @@ function __wbg_get_imports() {
2890
2986
  imports.wbg.__wbg_set_502d29070ea18557 = function (arg0, arg1, arg2) {
2891
2987
  getObject(arg0)[arg1 >>> 0] = takeObject(arg2);
2892
2988
  };
2989
+ imports.wbg.__wbg_ffiwiree2eidentity_new = function (arg0) {
2990
+ const ret = FfiWireE2EIdentity.__wrap(arg0);
2991
+ return addHeapObject(ret);
2992
+ };
2993
+ imports.wbg.__wbg_push_ca1c26067ef907ac = function (arg0, arg1) {
2994
+ const ret = getObject(arg0).push(getObject(arg1));
2995
+ return ret;
2996
+ };
2893
2997
  imports.wbg.__wbindgen_bigint_from_u64 = function (arg0) {
2894
2998
  const ret = BigInt.asUintN(64, arg0);
2895
2999
  return addHeapObject(ret);
2896
3000
  };
2897
- imports.wbg.__wbindgen_number_new = function (arg0) {
2898
- const ret = arg0;
3001
+ imports.wbg.__wbg_new_b51585de1b234aff = function () {
3002
+ const ret = new Object();
2899
3003
  return addHeapObject(ret);
2900
3004
  };
2901
- imports.wbg.__wbg_ffiwiree2eidentity_new = function (arg0) {
2902
- const ret = FfiWireE2EIdentity.__wrap(arg0);
3005
+ imports.wbg.__wbg_set_841ac57cff3d672b = function (arg0, arg1, arg2) {
3006
+ getObject(arg0)[takeObject(arg1)] = takeObject(arg2);
3007
+ };
3008
+ imports.wbg.__wbindgen_number_new = function (arg0) {
3009
+ const ret = arg0;
2903
3010
  return addHeapObject(ret);
2904
3011
  };
2905
3012
  imports.wbg.__wbg_proteusautoprekeybundle_new = function (arg0) {
2906
3013
  const ret = ProteusAutoPrekeyBundle.__wrap(arg0);
2907
3014
  return addHeapObject(ret);
2908
3015
  };
2909
- imports.wbg.__wbg_push_ca1c26067ef907ac = function (arg0, arg1) {
2910
- const ret = getObject(arg0).push(getObject(arg1));
2911
- return ret;
2912
- };
2913
3016
  imports.wbg.__wbg_new_56693dbed0c32988 = function () {
2914
3017
  const ret = new Map();
2915
3018
  return addHeapObject(ret);
@@ -2922,18 +3025,18 @@ function __wbg_get_imports() {
2922
3025
  const ret = new Error(getStringFromWasm0(arg0, arg1));
2923
3026
  return addHeapObject(ret);
2924
3027
  };
2925
- imports.wbg.__wbg_openCursor_555d508ba71b21cc = function () {
2926
- return handleError(function (arg0, arg1) {
2927
- const ret = getObject(arg0).openCursor(getObject(arg1));
2928
- return addHeapObject(ret);
2929
- }, arguments);
2930
- };
2931
3028
  imports.wbg.__wbg_openCursor_4d6f62b69b34be26 = function () {
2932
3029
  return handleError(function (arg0) {
2933
3030
  const ret = getObject(arg0).openCursor();
2934
3031
  return addHeapObject(ret);
2935
3032
  }, arguments);
2936
3033
  };
3034
+ imports.wbg.__wbg_openCursor_555d508ba71b21cc = function () {
3035
+ return handleError(function (arg0, arg1) {
3036
+ const ret = getObject(arg0).openCursor(getObject(arg1));
3037
+ return addHeapObject(ret);
3038
+ }, arguments);
3039
+ };
2937
3040
  imports.wbg.__wbg_setonsuccess_f518a37d8228a576 = function (arg0, arg1) {
2938
3041
  getObject(arg0).onsuccess = getObject(arg1);
2939
3042
  };
@@ -2990,9 +3093,6 @@ function __wbg_get_imports() {
2990
3093
  const ret = CoreCrypto$1.__wrap(arg0);
2991
3094
  return addHeapObject(ret);
2992
3095
  };
2993
- imports.wbg.__wbg_set_841ac57cff3d672b = function (arg0, arg1, arg2) {
2994
- getObject(arg0)[takeObject(arg1)] = takeObject(arg2);
2995
- };
2996
3096
  imports.wbg.__wbg_instanceof_Promise_0e98a5bf082e090f = function (arg0) {
2997
3097
  let result;
2998
3098
  try {
@@ -3044,7 +3144,7 @@ function __wbg_get_imports() {
3044
3144
  const a = state0.a;
3045
3145
  state0.a = 0;
3046
3146
  try {
3047
- return __wbg_adapter_299(a, state0.b, arg0, arg1);
3147
+ return __wbg_adapter_310(a, state0.b, arg0, arg1);
3048
3148
  }
3049
3149
  finally {
3050
3150
  state0.a = a;
@@ -3069,6 +3169,10 @@ function __wbg_get_imports() {
3069
3169
  const ret = ProposalBundle.__wrap(arg0);
3070
3170
  return addHeapObject(ret);
3071
3171
  };
3172
+ imports.wbg.__wbg_buffereddecryptedmessage_new = function (arg0) {
3173
+ const ret = BufferedDecryptedMessage.__wrap(arg0);
3174
+ return addHeapObject(ret);
3175
+ };
3072
3176
  imports.wbg.__wbg_commitbundle_new = function (arg0) {
3073
3177
  const ret = CommitBundle.__wrap(arg0);
3074
3178
  return addHeapObject(ret);
@@ -3142,18 +3246,18 @@ function __wbg_get_imports() {
3142
3246
  const ret = Date.now();
3143
3247
  return ret;
3144
3248
  };
3145
- imports.wbg.__wbg_put_fb32824d87feec5c = function () {
3146
- return handleError(function (arg0, arg1, arg2) {
3147
- const ret = getObject(arg0).put(getObject(arg1), getObject(arg2));
3148
- return addHeapObject(ret);
3149
- }, arguments);
3150
- };
3151
3249
  imports.wbg.__wbg_put_d6937bc51f51a398 = function () {
3152
3250
  return handleError(function (arg0, arg1) {
3153
3251
  const ret = getObject(arg0).put(getObject(arg1));
3154
3252
  return addHeapObject(ret);
3155
3253
  }, arguments);
3156
3254
  };
3255
+ imports.wbg.__wbg_put_fb32824d87feec5c = function () {
3256
+ return handleError(function (arg0, arg1, arg2) {
3257
+ const ret = getObject(arg0).put(getObject(arg1), getObject(arg2));
3258
+ return addHeapObject(ret);
3259
+ }, arguments);
3260
+ };
3157
3261
  imports.wbg.__wbg_delete_ca1cfc48f1f7981c = function () {
3158
3262
  return handleError(function (arg0, arg1) {
3159
3263
  const ret = getObject(arg0).delete(getObject(arg1));
@@ -3493,12 +3597,12 @@ function __wbg_get_imports() {
3493
3597
  return addHeapObject(ret);
3494
3598
  }, arguments);
3495
3599
  };
3496
- imports.wbg.__wbindgen_closure_wrapper1999 = function (arg0, arg1, arg2) {
3497
- const ret = makeMutClosure(arg0, arg1, 169, __wbg_adapter_52);
3600
+ imports.wbg.__wbindgen_closure_wrapper1725 = function (arg0, arg1, arg2) {
3601
+ const ret = makeMutClosure(arg0, arg1, 149, __wbg_adapter_52);
3498
3602
  return addHeapObject(ret);
3499
3603
  };
3500
- imports.wbg.__wbindgen_closure_wrapper4745 = function (arg0, arg1, arg2) {
3501
- const ret = makeMutClosure(arg0, arg1, 169, __wbg_adapter_55);
3604
+ imports.wbg.__wbindgen_closure_wrapper4854 = function (arg0, arg1, arg2) {
3605
+ const ret = makeMutClosure(arg0, arg1, 149, __wbg_adapter_55);
3502
3606
  return addHeapObject(ret);
3503
3607
  };
3504
3608
  return imports;
@@ -3539,6 +3643,7 @@ var exports = /*#__PURE__*/Object.freeze({
3539
3643
  __proto__: null,
3540
3644
  AcmeChallenge: AcmeChallenge,
3541
3645
  AcmeDirectory: AcmeDirectory,
3646
+ BufferedDecryptedMessage: BufferedDecryptedMessage,
3542
3647
  Ciphersuite: Ciphersuite$1,
3543
3648
  CommitBundle: CommitBundle,
3544
3649
  ConversationConfiguration: ConversationConfiguration,
@@ -3564,26 +3669,35 @@ var exports = /*#__PURE__*/Object.freeze({
3564
3669
  initSync: initSync
3565
3670
  });
3566
3671
 
3567
- var wasm = async (opt = {}) => {
3568
- let {importHook, serverPath} = opt;
3672
+ const wasm_path = "assets/core_crypto_ffi-ded089fb.wasm";
3569
3673
 
3570
- let path = "assets/core_crypto_ffi-663eb4cf.wasm";
3674
+
3675
+ var wasm = async (opt = {}) => {
3676
+ let {importHook, serverPath, initializeHook} = opt;
3677
+
3678
+ let final_path = wasm_path;
3571
3679
 
3572
3680
  if (serverPath != null) {
3573
- path = serverPath + /[^\/\\]*$/.exec(path)[0];
3681
+ final_path = serverPath + /[^\/\\]*$/.exec(final_path)[0];
3574
3682
  }
3575
3683
 
3576
3684
  if (importHook != null) {
3577
- path = importHook(path);
3685
+ final_path = importHook(final_path);
3686
+ }
3687
+
3688
+ if (initializeHook != null) {
3689
+ await initializeHook(__wbg_init, final_path);
3690
+
3691
+ } else {
3692
+ await __wbg_init(final_path);
3578
3693
  }
3579
3694
 
3580
- await __wbg_init(path);
3581
3695
  return exports;
3582
3696
  };
3583
3697
 
3584
3698
  // Wire
3585
3699
  // Copyright (C) 2022 Wire Swiss GmbH
3586
- var _a, _CoreCrypto_module, _CoreCrypto_cc, _CoreCrypto_assertModuleLoaded, _WireE2eIdentity_e2ei;
3700
+ var _a, _CoreCrypto_module, _CoreCrypto_cc, _CoreCrypto_assertModuleLoaded, _E2eiEnrollment_enrollment;
3587
3701
  /**
3588
3702
  * Error wrapper that takes care of extracting rich error details across the FFI (through JSON parsing)
3589
3703
  *
@@ -3891,7 +4005,7 @@ class CoreCrypto {
3891
4005
  /**
3892
4006
  * Closes this {@link CoreCrypto} instance and deallocates all loaded resources
3893
4007
  *
3894
- * **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!
4008
+ * **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!
3895
4009
  */
3896
4010
  async close() {
3897
4011
  await CoreCryptoError.asyncMapErr(__classPrivateFieldGet(this, _CoreCrypto_cc, "f").close());
@@ -3985,7 +4099,12 @@ class CoreCrypto {
3985
4099
  }
3986
4100
  }
3987
4101
  /**
3988
- * Decrypts a message for a given conversation
4102
+ * Decrypts a message for a given conversation.
4103
+ *
4104
+ * Note: you should catch & ignore the following error reasons:
4105
+ * * "We already decrypted this message once"
4106
+ * * "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"
4107
+ * * "Incoming message is for a future epoch. We will buffer it until the commit for that epoch arrives"
3989
4108
  *
3990
4109
  * @param conversationId - The ID of the conversation
3991
4110
  * @param payload - The encrypted message buffer
@@ -4010,6 +4129,16 @@ class CoreCrypto {
4010
4129
  senderClientId: ffiDecryptedMessage.sender_client_id,
4011
4130
  commitDelay,
4012
4131
  hasEpochChanged: ffiDecryptedMessage.has_epoch_changed,
4132
+ bufferedMessages: ffiDecryptedMessage.buffered_messages?.map(m => {
4133
+ return {
4134
+ message: m.message,
4135
+ proposals: m.proposals,
4136
+ isActive: m.is_active,
4137
+ senderClientId: m.sender_client_id,
4138
+ commitDelay: m.commit_delay,
4139
+ hasEpochChanged: m.has_epoch_changed,
4140
+ };
4141
+ }),
4013
4142
  };
4014
4143
  return ret;
4015
4144
  }
@@ -4043,7 +4172,7 @@ class CoreCrypto {
4043
4172
  *
4044
4173
  * @returns A {@link CommitBundle}
4045
4174
  */
4046
- async update_trust_anchors_from_conversation(conversationId, removeDomainNames, addTrustAnchors) {
4175
+ async updateTrustAnchorsFromConversation(conversationId, removeDomainNames, addTrustAnchors) {
4047
4176
  try {
4048
4177
  const ffiRet = await CoreCryptoError.asyncMapErr(__classPrivateFieldGet(this, _CoreCrypto_cc, "f").update_trust_anchors_from_conversation(conversationId, removeDomainNames, addTrustAnchors));
4049
4178
  const gi = ffiRet.group_info;
@@ -4084,7 +4213,10 @@ class CoreCrypto {
4084
4213
  }
4085
4214
  }
4086
4215
  /**
4087
- * @returns The client's public key
4216
+ * Get the client's public signature key. To upload to the DS for further backend side validation
4217
+ *
4218
+ * @param ciphersuite - of the signature key to get
4219
+ * @returns the client's public signature key
4088
4220
  */
4089
4221
  async clientPublicKey(ciphersuite) {
4090
4222
  return await CoreCryptoError.asyncMapErr(__classPrivateFieldGet(this, _CoreCrypto_cc, "f").client_public_key(ciphersuite));
@@ -4121,7 +4253,7 @@ class CoreCrypto {
4121
4253
  /**
4122
4254
  * Adds new clients to a conversation, assuming the current client has the right to add new clients to the conversation.
4123
4255
  *
4124
- * **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterwards **ONLY IF** the Delivery Service responds
4256
+ * **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterward **ONLY IF** the Delivery Service responds
4125
4257
  * '200 OK' to the {@link CommitBundle} upload. It will "merge" the commit locally i.e. increment the local group
4126
4258
  * epoch, use new encryption secrets etc...
4127
4259
  *
@@ -4155,7 +4287,7 @@ class CoreCrypto {
4155
4287
  * Removes the provided clients from a conversation; Assuming those clients exist and the current client is allowed
4156
4288
  * to do so, otherwise this operation does nothing.
4157
4289
  *
4158
- * **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterwards **ONLY IF** the Delivery Service responds
4290
+ * **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterward **ONLY IF** the Delivery Service responds
4159
4291
  * '200 OK' to the {@link CommitBundle} upload. It will "merge" the commit locally i.e. increment the local group
4160
4292
  * epoch, use new encryption secrets etc...
4161
4293
  *
@@ -4184,9 +4316,9 @@ class CoreCrypto {
4184
4316
  }
4185
4317
  }
4186
4318
  /**
4187
- * Creates an update commit which forces every client to update their keypackages in the conversation
4319
+ * Creates an update commit which forces every client to update their LeafNode in the conversation
4188
4320
  *
4189
- * **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterwards **ONLY IF** the Delivery Service responds
4321
+ * **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterward **ONLY IF** the Delivery Service responds
4190
4322
  * '200 OK' to the {@link CommitBundle} upload. It will "merge" the commit locally i.e. increment the local group
4191
4323
  * epoch, use new encryption secrets etc...
4192
4324
  *
@@ -4274,6 +4406,9 @@ class CoreCrypto {
4274
4406
  throw new Error("Invalid proposal type!");
4275
4407
  }
4276
4408
  }
4409
+ /**
4410
+ * Creates a new external Add proposal for self client to join a conversation.
4411
+ */
4277
4412
  async newExternalProposal(externalProposalType, args) {
4278
4413
  switch (externalProposalType) {
4279
4414
  case ExternalProposalType.Add: {
@@ -4327,6 +4462,7 @@ class CoreCrypto {
4327
4462
  * and deletes the temporary one. This step makes the group operational and ready to encrypt/decrypt message
4328
4463
  *
4329
4464
  * @param conversationId - The ID of the conversation
4465
+ * @returns eventually decrypted buffered messages if any
4330
4466
  */
4331
4467
  async mergePendingGroupFromExternalCommit(conversationId) {
4332
4468
  return await CoreCryptoError.asyncMapErr(__classPrivateFieldGet(this, _CoreCrypto_cc, "f").merge_pending_group_from_external_commit(conversationId));
@@ -4342,20 +4478,19 @@ class CoreCrypto {
4342
4478
  return await CoreCryptoError.asyncMapErr(__classPrivateFieldGet(this, _CoreCrypto_cc, "f").clear_pending_group_from_external_commit(conversationId));
4343
4479
  }
4344
4480
  /**
4345
- * Allows to mark the latest commit produced as "accepted" and be able to safely merge it
4346
- * into the local group state
4481
+ * Allows to mark the latest commit produced as "accepted" and be able to safely merge it into the local group state
4347
4482
  *
4348
4483
  * @param conversationId - The group's ID
4484
+ * @returns the messages from current epoch which had been buffered, if any
4349
4485
  */
4350
4486
  async commitAccepted(conversationId) {
4351
4487
  return await CoreCryptoError.asyncMapErr(__classPrivateFieldGet(this, _CoreCrypto_cc, "f").commit_accepted(conversationId));
4352
4488
  }
4353
4489
  /**
4354
- * Allows to remove a pending proposal (rollback). Use this when backend rejects the proposal you just sent e.g. if permissions
4355
- * have changed meanwhile.
4490
+ * Allows to remove a pending proposal (rollback). Use this when backend rejects the proposal you just sent e.g. if permissions have changed meanwhile.
4356
4491
  *
4357
4492
  * **CAUTION**: only use this when you had an explicit response from the Delivery Service
4358
- * e.g. 403 or 409. Do not use otherwise e.g. 5xx responses, timeout etc..
4493
+ * e.g. 403 or 409. Do not use otherwise e.g. 5xx responses, timeout etc
4359
4494
  *
4360
4495
  * @param conversationId - The group's ID
4361
4496
  * @param proposalRef - A reference to the proposal to delete. You get one when using {@link CoreCrypto.newProposal}
@@ -4364,8 +4499,7 @@ class CoreCrypto {
4364
4499
  return await CoreCryptoError.asyncMapErr(__classPrivateFieldGet(this, _CoreCrypto_cc, "f").clear_pending_proposal(conversationId, proposalRef));
4365
4500
  }
4366
4501
  /**
4367
- * Allows to remove a pending commit (rollback). Use this when backend rejects the commit you just sent e.g. if permissions
4368
- * have changed meanwhile.
4502
+ * Allows to remove a pending commit (rollback). Use this when backend rejects the commit you just sent e.g. if permissions have changed meanwhile.
4369
4503
  *
4370
4504
  * **CAUTION**: only use this when you had an explicit response from the Delivery Service
4371
4505
  * e.g. 403. Do not use otherwise e.g. 5xx responses, timeout etc..
@@ -4422,7 +4556,7 @@ class CoreCrypto {
4422
4556
  return await CoreCryptoError.asyncMapErr(__classPrivateFieldGet(this, _CoreCrypto_cc, "f").reseed_rng(seed));
4423
4557
  }
4424
4558
  /**
4425
- * Initiailizes the proteus client
4559
+ * Initializes the proteus client
4426
4560
  */
4427
4561
  async proteusInit() {
4428
4562
  return await CoreCryptoError.asyncMapErr(__classPrivateFieldGet(this, _CoreCrypto_cc, "f").proteus_init());
@@ -4599,31 +4733,31 @@ class CoreCrypto {
4599
4733
  * Creates an enrollment instance with private key material you can use in order to fetch
4600
4734
  * a new x509 certificate from the acme server.
4601
4735
  *
4602
- * @param clientId client identifier with user b64Url encoded & clientId hex encoded e.g. `NDUyMGUyMmY2YjA3NGU3NjkyZjE1NjJjZTAwMmQ2NTQ:6add501bacd1d90e@example.com`
4603
- * @param displayName human readable name displayed in the application e.g. `Smith, Alice M (QA)`
4604
- * @param handle user handle e.g. `alice.smith.qa@example.com`
4605
- * @param expiryDays generated x509 certificate expiry
4736
+ * @param clientId - client identifier with user b64Url encoded & clientId hex encoded e.g. `NDUyMGUyMmY2YjA3NGU3NjkyZjE1NjJjZTAwMmQ2NTQ:6add501bacd1d90e@example.com`
4737
+ * @param displayName - human-readable name displayed in the application e.g. `Smith, Alice M (QA)`
4738
+ * @param handle - user handle e.g. `alice.smith.qa@example.com`
4739
+ * @param expiryDays - generated x509 certificate expiry
4606
4740
  * @param ciphersuite - for generating signing key material
4607
- * @returns The new {@link WireE2eIdentity} object
4741
+ * @returns The new {@link E2eiEnrollment} enrollment instance to use with {@link CoreCrypto.e2eiMlsInitOnly}
4608
4742
  */
4609
4743
  async e2eiNewEnrollment(clientId, displayName, handle, expiryDays, ciphersuite) {
4610
4744
  const e2ei = await CoreCryptoError.asyncMapErr(__classPrivateFieldGet(this, _CoreCrypto_cc, "f").e2ei_new_enrollment(clientId, displayName, handle, expiryDays, ciphersuite));
4611
- return new WireE2eIdentity(e2ei);
4745
+ return new E2eiEnrollment(e2ei);
4612
4746
  }
4613
4747
  /**
4614
4748
  * Generates an E2EI enrollment instance for a "regular" client (with a Basic credential) willing to migrate to E2EI.
4615
4749
  * Once the enrollment is finished, use the instance in {@link CoreCrypto.e2eiRotateAll} to do the rotation.
4616
4750
  *
4617
- * @param clientId client identifier with user b64Url encoded & clientId hex encoded e.g. `NDUyMGUyMmY2YjA3NGU3NjkyZjE1NjJjZTAwMmQ2NTQ:6add501bacd1d90e@example.com`
4618
- * @param displayName human readable name displayed in the application e.g. `Smith, Alice M (QA)`
4619
- * @param handle user handle e.g. `alice.smith.qa@example.com`
4620
- * @param expiryDays generated x509 certificate expiry
4751
+ * @param clientId - client identifier with user b64Url encoded & clientId hex encoded e.g. `NDUyMGUyMmY2YjA3NGU3NjkyZjE1NjJjZTAwMmQ2NTQ:6add501bacd1d90e@example.com`
4752
+ * @param displayName - human-readable name displayed in the application e.g. `Smith, Alice M (QA)`
4753
+ * @param handle - user handle e.g. `alice.smith.qa@example.com`
4754
+ * @param expiryDays - generated x509 certificate expiry
4621
4755
  * @param ciphersuite - for generating signing key material
4622
- * @returns The new {@link WireE2eIdentity} object
4756
+ * @returns The new {@link E2eiEnrollment} enrollment instance to use with {@link CoreCrypto.e2eiRotateAll}
4623
4757
  */
4624
4758
  async e2eiNewActivationEnrollment(clientId, displayName, handle, expiryDays, ciphersuite) {
4625
4759
  const e2ei = await CoreCryptoError.asyncMapErr(__classPrivateFieldGet(this, _CoreCrypto_cc, "f").e2ei_new_activation_enrollment(clientId, displayName, handle, expiryDays, ciphersuite));
4626
- return new WireE2eIdentity(e2ei);
4760
+ return new E2eiEnrollment(e2ei);
4627
4761
  }
4628
4762
  /**
4629
4763
  * Generates an E2EI enrollment instance for a E2EI client (with a X509 certificate credential)
@@ -4631,22 +4765,24 @@ class CoreCrypto {
4631
4765
  * has been revoked. It lets you change the DisplayName or the handle
4632
4766
  * if you need to. Once the enrollment is finished, use the instance in {@link CoreCrypto.e2eiRotateAll} to do the rotation.
4633
4767
  *
4634
- * @param clientId client identifier with user b64Url encoded & clientId hex encoded e.g. `NDUyMGUyMmY2YjA3NGU3NjkyZjE1NjJjZTAwMmQ2NTQ:6add501bacd1d90e@example.com`
4635
- * @param expiryDays generated x509 certificate expiry
4768
+ * @param clientId - client identifier with user b64Url encoded & clientId hex encoded e.g. `NDUyMGUyMmY2YjA3NGU3NjkyZjE1NjJjZTAwMmQ2NTQ:6add501bacd1d90e@example.com`
4769
+ * @param expiryDays - generated x509 certificate expiry
4636
4770
  * @param ciphersuite - for generating signing key material
4637
- * @param displayName human readable name displayed in the application e.g. `Smith, Alice M (QA)`
4638
- * @param handle user handle e.g. `alice.smith.qa@example.com`
4639
- * @returns The new {@link WireE2eIdentity} object
4771
+ * @param displayName - human-readable name displayed in the application e.g. `Smith, Alice M (QA)`
4772
+ * @param handle - user handle e.g. `alice.smith.qa@example.com`
4773
+ * @returns The new {@link E2eiEnrollment} enrollment instance to use with {@link CoreCrypto.e2eiRotateAll}
4640
4774
  */
4641
4775
  async e2eiNewRotateEnrollment(clientId, expiryDays, ciphersuite, displayName, handle) {
4642
4776
  const e2ei = await CoreCryptoError.asyncMapErr(__classPrivateFieldGet(this, _CoreCrypto_cc, "f").e2ei_new_rotate_enrollment(clientId, displayName, handle, expiryDays, ciphersuite));
4643
- return new WireE2eIdentity(e2ei);
4777
+ return new E2eiEnrollment(e2ei);
4644
4778
  }
4645
4779
  /**
4646
- * Use this method to initialize end-to-end identity when a client signs up and the grace period is already expired ; that means he cannot initialize with a Basic credential
4780
+ * Use this method to initialize end-to-end identity when a client signs up and the grace period is already expired ;
4781
+ * that means he cannot initialize with a Basic credential
4647
4782
  *
4648
4783
  * @param enrollment - the enrollment instance used to fetch the certificates
4649
4784
  * @param certificateChain - the raw response from ACME server
4785
+ * @returns a MlsClient initialized with only a x509 credential
4650
4786
  */
4651
4787
  async e2eiMlsInitOnly(enrollment, certificateChain) {
4652
4788
  return await __classPrivateFieldGet(this, _CoreCrypto_cc, "f").e2ei_mls_init_only(enrollment.inner(), certificateChain);
@@ -4659,6 +4795,7 @@ class CoreCrypto {
4659
4795
  * @param enrollment - the enrollment instance used to fetch the certificates
4660
4796
  * @param certificateChain - the raw response from ACME server
4661
4797
  * @param newKeyPackageCount - number of KeyPackages with new identity to generate
4798
+ * @returns a {@link RotateBundle} with commits to fan-out to other group members, KeyPackages to upload and old ones to delete
4662
4799
  */
4663
4800
  async e2eiRotateAll(enrollment, certificateChain, newKeyPackageCount) {
4664
4801
  const ffiRet = await __classPrivateFieldGet(this, _CoreCrypto_cc, "f").e2ei_rotate_all(enrollment.inner(), certificateChain, newKeyPackageCount);
@@ -4687,7 +4824,7 @@ class CoreCrypto {
4687
4824
  */
4688
4825
  async e2eiEnrollmentStashPop(handle) {
4689
4826
  const e2ei = await CoreCryptoError.asyncMapErr(__classPrivateFieldGet(this, _CoreCrypto_cc, "f").e2ei_enrollment_stash_pop(handle));
4690
- return new WireE2eIdentity(e2ei);
4827
+ return new E2eiEnrollment(e2ei);
4691
4828
  }
4692
4829
  /**
4693
4830
  * Indicates when to mark a conversation as degraded i.e. when not all its members have a X509.
@@ -4705,11 +4842,22 @@ class CoreCrypto {
4705
4842
  * Returns true when end-to-end-identity is enabled for the given Ciphersuite
4706
4843
  *
4707
4844
  * @param ciphersuite of the credential to check
4708
- * @returns true end-to-end identity is enabled for the given ciphersuite
4845
+ * @returns true if end-to-end identity is enabled for the given ciphersuite
4709
4846
  */
4710
4847
  async e2eiIsEnabled(ciphersuite) {
4711
4848
  return await CoreCryptoError.asyncMapErr(__classPrivateFieldGet(this, _CoreCrypto_cc, "f").e2ei_is_enabled(ciphersuite));
4712
4849
  }
4850
+ /**
4851
+ * From a given conversation, get the identity of the members supplied. Identity is only present for members with a
4852
+ * Certificate Credential (after turning on end-to-end identity).
4853
+ *
4854
+ * @param conversationId - identifier of the conversation
4855
+ * @param clientIds - identifiers of the user
4856
+ * @returns identities or if no member has a x509 certificate, it will return an empty List
4857
+ */
4858
+ async getUserIdentities(conversationId, clientIds) {
4859
+ return await CoreCryptoError.asyncMapErr(__classPrivateFieldGet(this, _CoreCrypto_cc, "f").get_user_identities(conversationId, clientIds));
4860
+ }
4713
4861
  /**
4714
4862
  * Returns the current version of {@link CoreCrypto}
4715
4863
  *
@@ -4727,21 +4875,21 @@ _a = CoreCrypto, _CoreCrypto_cc = new WeakMap(), _CoreCrypto_assertModuleLoaded
4727
4875
  };
4728
4876
  /** @hidden */
4729
4877
  _CoreCrypto_module = { value: void 0 };
4730
- class WireE2eIdentity {
4878
+ class E2eiEnrollment {
4731
4879
  /** @hidden */
4732
4880
  constructor(e2ei) {
4733
4881
  /** @hidden */
4734
- _WireE2eIdentity_e2ei.set(this, void 0);
4735
- __classPrivateFieldSet(this, _WireE2eIdentity_e2ei, e2ei, "f");
4882
+ _E2eiEnrollment_enrollment.set(this, void 0);
4883
+ __classPrivateFieldSet(this, _E2eiEnrollment_enrollment, e2ei, "f");
4736
4884
  }
4737
4885
  free() {
4738
- __classPrivateFieldGet(this, _WireE2eIdentity_e2ei, "f").free();
4886
+ __classPrivateFieldGet(this, _E2eiEnrollment_enrollment, "f").free();
4739
4887
  }
4740
4888
  /**
4741
4889
  * Should only be used internally
4742
4890
  */
4743
4891
  inner() {
4744
- return __classPrivateFieldGet(this, _WireE2eIdentity_e2ei, "f");
4892
+ return __classPrivateFieldGet(this, _E2eiEnrollment_enrollment, "f");
4745
4893
  }
4746
4894
  /**
4747
4895
  * Parses the response from `GET /acme/{provisioner-name}/directory`.
@@ -4753,7 +4901,7 @@ class WireE2eIdentity {
4753
4901
  */
4754
4902
  directoryResponse(directory) {
4755
4903
  try {
4756
- return __classPrivateFieldGet(this, _WireE2eIdentity_e2ei, "f").directory_response(directory);
4904
+ return __classPrivateFieldGet(this, _E2eiEnrollment_enrollment, "f").directory_response(directory);
4757
4905
  }
4758
4906
  catch (e) {
4759
4907
  throw CoreCryptoError.fromStdError(e);
@@ -4768,7 +4916,7 @@ class WireE2eIdentity {
4768
4916
  */
4769
4917
  newAccountRequest(previousNonce) {
4770
4918
  try {
4771
- return __classPrivateFieldGet(this, _WireE2eIdentity_e2ei, "f").new_account_request(previousNonce);
4919
+ return __classPrivateFieldGet(this, _E2eiEnrollment_enrollment, "f").new_account_request(previousNonce);
4772
4920
  }
4773
4921
  catch (e) {
4774
4922
  throw CoreCryptoError.fromStdError(e);
@@ -4781,7 +4929,7 @@ class WireE2eIdentity {
4781
4929
  */
4782
4930
  newAccountResponse(account) {
4783
4931
  try {
4784
- return __classPrivateFieldGet(this, _WireE2eIdentity_e2ei, "f").new_account_response(account);
4932
+ return __classPrivateFieldGet(this, _E2eiEnrollment_enrollment, "f").new_account_response(account);
4785
4933
  }
4786
4934
  catch (e) {
4787
4935
  throw CoreCryptoError.fromStdError(e);
@@ -4795,7 +4943,7 @@ class WireE2eIdentity {
4795
4943
  */
4796
4944
  newOrderRequest(previousNonce) {
4797
4945
  try {
4798
- return __classPrivateFieldGet(this, _WireE2eIdentity_e2ei, "f").new_order_request(previousNonce);
4946
+ return __classPrivateFieldGet(this, _E2eiEnrollment_enrollment, "f").new_order_request(previousNonce);
4799
4947
  }
4800
4948
  catch (e) {
4801
4949
  throw CoreCryptoError.fromStdError(e);
@@ -4809,7 +4957,7 @@ class WireE2eIdentity {
4809
4957
  */
4810
4958
  newOrderResponse(order) {
4811
4959
  try {
4812
- return __classPrivateFieldGet(this, _WireE2eIdentity_e2ei, "f").new_order_response(order);
4960
+ return __classPrivateFieldGet(this, _E2eiEnrollment_enrollment, "f").new_order_response(order);
4813
4961
  }
4814
4962
  catch (e) {
4815
4963
  throw CoreCryptoError.fromStdError(e);
@@ -4825,7 +4973,7 @@ class WireE2eIdentity {
4825
4973
  */
4826
4974
  newAuthzRequest(url, previousNonce) {
4827
4975
  try {
4828
- return __classPrivateFieldGet(this, _WireE2eIdentity_e2ei, "f").new_authz_request(url, previousNonce);
4976
+ return __classPrivateFieldGet(this, _E2eiEnrollment_enrollment, "f").new_authz_request(url, previousNonce);
4829
4977
  }
4830
4978
  catch (e) {
4831
4979
  throw CoreCryptoError.fromStdError(e);
@@ -4839,7 +4987,7 @@ class WireE2eIdentity {
4839
4987
  */
4840
4988
  newAuthzResponse(authz) {
4841
4989
  try {
4842
- return __classPrivateFieldGet(this, _WireE2eIdentity_e2ei, "f").new_authz_response(authz);
4990
+ return __classPrivateFieldGet(this, _E2eiEnrollment_enrollment, "f").new_authz_response(authz);
4843
4991
  }
4844
4992
  catch (e) {
4845
4993
  throw CoreCryptoError.fromStdError(e);
@@ -4858,7 +5006,7 @@ class WireE2eIdentity {
4858
5006
  */
4859
5007
  createDpopToken(expirySecs, backendNonce) {
4860
5008
  try {
4861
- return __classPrivateFieldGet(this, _WireE2eIdentity_e2ei, "f").create_dpop_token(expirySecs, backendNonce);
5009
+ return __classPrivateFieldGet(this, _E2eiEnrollment_enrollment, "f").create_dpop_token(expirySecs, backendNonce);
4862
5010
  }
4863
5011
  catch (e) {
4864
5012
  throw CoreCryptoError.fromStdError(e);
@@ -4873,7 +5021,7 @@ class WireE2eIdentity {
4873
5021
  */
4874
5022
  newDpopChallengeRequest(accessToken, previousNonce) {
4875
5023
  try {
4876
- return __classPrivateFieldGet(this, _WireE2eIdentity_e2ei, "f").new_dpop_challenge_request(accessToken, previousNonce);
5024
+ return __classPrivateFieldGet(this, _E2eiEnrollment_enrollment, "f").new_dpop_challenge_request(accessToken, previousNonce);
4877
5025
  }
4878
5026
  catch (e) {
4879
5027
  throw CoreCryptoError.fromStdError(e);
@@ -4888,7 +5036,7 @@ class WireE2eIdentity {
4888
5036
  */
4889
5037
  newOidcChallengeRequest(idToken, previousNonce) {
4890
5038
  try {
4891
- return __classPrivateFieldGet(this, _WireE2eIdentity_e2ei, "f").new_oidc_challenge_request(idToken, previousNonce);
5039
+ return __classPrivateFieldGet(this, _E2eiEnrollment_enrollment, "f").new_oidc_challenge_request(idToken, previousNonce);
4892
5040
  }
4893
5041
  catch (e) {
4894
5042
  throw CoreCryptoError.fromStdError(e);
@@ -4902,7 +5050,7 @@ class WireE2eIdentity {
4902
5050
  */
4903
5051
  newChallengeResponse(challenge) {
4904
5052
  try {
4905
- return __classPrivateFieldGet(this, _WireE2eIdentity_e2ei, "f").new_challenge_response(challenge);
5053
+ return __classPrivateFieldGet(this, _E2eiEnrollment_enrollment, "f").new_challenge_response(challenge);
4906
5054
  }
4907
5055
  catch (e) {
4908
5056
  throw CoreCryptoError.fromStdError(e);
@@ -4917,7 +5065,7 @@ class WireE2eIdentity {
4917
5065
  */
4918
5066
  checkOrderRequest(orderUrl, previousNonce) {
4919
5067
  try {
4920
- return __classPrivateFieldGet(this, _WireE2eIdentity_e2ei, "f").check_order_request(orderUrl, previousNonce);
5068
+ return __classPrivateFieldGet(this, _E2eiEnrollment_enrollment, "f").check_order_request(orderUrl, previousNonce);
4921
5069
  }
4922
5070
  catch (e) {
4923
5071
  throw CoreCryptoError.fromStdError(e);
@@ -4927,12 +5075,12 @@ class WireE2eIdentity {
4927
5075
  * Parses the response from `POST /acme/{provisioner-name}/order/{order-id}`.
4928
5076
  *
4929
5077
  * @param order HTTP response body
4930
- * @return the finalize url to use with {@link finalizeRequest}
5078
+ * @return finalize url to use with {@link finalizeRequest}
4931
5079
  * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
4932
5080
  */
4933
5081
  checkOrderResponse(order) {
4934
5082
  try {
4935
- return __classPrivateFieldGet(this, _WireE2eIdentity_e2ei, "f").check_order_response(order);
5083
+ return __classPrivateFieldGet(this, _E2eiEnrollment_enrollment, "f").check_order_response(order);
4936
5084
  }
4937
5085
  catch (e) {
4938
5086
  throw CoreCryptoError.fromStdError(e);
@@ -4946,7 +5094,7 @@ class WireE2eIdentity {
4946
5094
  */
4947
5095
  finalizeRequest(previousNonce) {
4948
5096
  try {
4949
- return __classPrivateFieldGet(this, _WireE2eIdentity_e2ei, "f").finalize_request(previousNonce);
5097
+ return __classPrivateFieldGet(this, _E2eiEnrollment_enrollment, "f").finalize_request(previousNonce);
4950
5098
  }
4951
5099
  catch (e) {
4952
5100
  throw CoreCryptoError.fromStdError(e);
@@ -4961,7 +5109,7 @@ class WireE2eIdentity {
4961
5109
  */
4962
5110
  finalizeResponse(finalize) {
4963
5111
  try {
4964
- return __classPrivateFieldGet(this, _WireE2eIdentity_e2ei, "f").finalize_response(finalize);
5112
+ return __classPrivateFieldGet(this, _E2eiEnrollment_enrollment, "f").finalize_response(finalize);
4965
5113
  }
4966
5114
  catch (e) {
4967
5115
  throw CoreCryptoError.fromStdError(e);
@@ -4975,14 +5123,14 @@ class WireE2eIdentity {
4975
5123
  */
4976
5124
  certificateRequest(previousNonce) {
4977
5125
  try {
4978
- return __classPrivateFieldGet(this, _WireE2eIdentity_e2ei, "f").certificate_request(previousNonce);
5126
+ return __classPrivateFieldGet(this, _E2eiEnrollment_enrollment, "f").certificate_request(previousNonce);
4979
5127
  }
4980
5128
  catch (e) {
4981
5129
  throw CoreCryptoError.fromStdError(e);
4982
5130
  }
4983
5131
  }
4984
5132
  }
4985
- _WireE2eIdentity_e2ei = new WeakMap();
5133
+ _E2eiEnrollment_enrollment = new WeakMap();
4986
5134
  /**
4987
5135
  * Indicates the state of a Conversation regarding end-to-end identity.
4988
5136
  * Note: this does not check pending state (pending commit, pending proposals) so it does not
@@ -5004,4 +5152,4 @@ var E2eiConversationState;
5004
5152
  E2eiConversationState[E2eiConversationState["NotEnabled"] = 3] = "NotEnabled";
5005
5153
  })(E2eiConversationState || (E2eiConversationState = {}));
5006
5154
 
5007
- export { Ciphersuite, CoreCrypto, CoreCryptoError, CredentialType, E2eiConversationState, ExternalProposalType, GroupInfoEncryptionType, ProposalType, RatchetTreeType, WireE2eIdentity, WirePolicy };
5155
+ export { Ciphersuite, CoreCrypto, CoreCryptoError, CredentialType, E2eiConversationState, E2eiEnrollment, ExternalProposalType, GroupInfoEncryptionType, ProposalType, RatchetTreeType, WirePolicy };