@wireapp/core-crypto 1.0.0-rc.1 → 1.0.0-rc.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wireapp/core-crypto",
3
- "version": "1.0.0-rc.1",
3
+ "version": "1.0.0-rc.10",
4
4
  "description": "CoreCrypto bindings for the Web",
5
5
  "type": "module",
6
6
  "module": "platforms/web/corecrypto.js",
@@ -79,6 +79,24 @@ export interface ConversationConfiguration {
79
79
  * Implementation specific configuration
80
80
  */
81
81
  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;
82
100
  }
83
101
  /**
84
102
  * see [core_crypto::prelude::MlsWirePolicy]
@@ -244,7 +262,7 @@ export interface RotateBundle {
244
262
  *
245
263
  * @readonly
246
264
  */
247
- commits: CommitBundle[];
265
+ commits: Map<string, CommitBundle>;
248
266
  /**
249
267
  * Fresh KeyPackages with the new Credential
250
268
  *
@@ -368,6 +386,45 @@ export interface DecryptedMessage {
368
386
  * Present for all messages
369
387
  */
370
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;
371
428
  }
372
429
  /**
373
430
  * Represents the identity claims identifying a client. Those claims are verifiable by any member in the group
@@ -389,6 +446,10 @@ export interface WireIdentity {
389
446
  * DNS domain for which this identity proof was generated e.g. `whitehouse.gov`
390
447
  */
391
448
  domain: string;
449
+ /**
450
+ * X509 certificate identifying this client in the MLS group ; PEM encoded
451
+ */
452
+ certificate: string;
392
453
  }
393
454
  /**
394
455
  * Returned by all methods creating proposals. Contains a proposal message and an identifier to roll back the proposal
@@ -607,7 +668,7 @@ export declare class CoreCrypto {
607
668
  /**
608
669
  * Closes this {@link CoreCrypto} instance and deallocates all loaded resources
609
670
  *
610
- * **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!
671
+ * **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!
611
672
  */
612
673
  close(): Promise<void>;
613
674
  /**
@@ -673,7 +734,12 @@ export declare class CoreCrypto {
673
734
  */
674
735
  createConversation(conversationId: ConversationId, creatorCredentialType: CredentialType, configuration?: ConversationConfiguration): Promise<any>;
675
736
  /**
676
- * Decrypts a message for a given conversation
737
+ * Decrypts a message for a given conversation.
738
+ *
739
+ * Note: you should catch & ignore the following error reasons:
740
+ * * "We already decrypted this message once"
741
+ * * "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"
742
+ * * "Incoming message is for a future epoch. We will buffer it until the commit for that epoch arrives"
677
743
  *
678
744
  * @param conversationId - The ID of the conversation
679
745
  * @param payload - The encrypted message buffer
@@ -690,16 +756,39 @@ export declare class CoreCrypto {
690
756
  * @returns The encrypted payload for the given group. This needs to be fanned out to the other members of the group.
691
757
  */
692
758
  encryptMessage(conversationId: ConversationId, message: Uint8Array): Promise<Uint8Array>;
759
+ /**
760
+ * Updates the trust anchors for a conversation. This should be called when a federated event happens (new team added/removed).
761
+ * Clients should add and/or remove trust anchors from the new backend to the conversation. The method will check
762
+ * for duplicated domains and the validity of the certificate chain.
763
+ *
764
+ * **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterwards **ONLY IF** the Delivery Service responds
765
+ * '200 OK' to the {@link CommitBundle} upload. It will "merge" the commit locally i.e. increment the local group
766
+ * epoch, use new encryption secrets etc...
767
+ *
768
+ * @param conversationId - The ID of the conversation
769
+ * @param removeDomainNames - Domains to remove from the trust anchors
770
+ * @param addTrustAnchors - New trust anchors to add to the conversation
771
+ *
772
+ * @returns A {@link CommitBundle}
773
+ */
774
+ updateTrustAnchorsFromConversation(conversationId: ConversationId, removeDomainNames: string[], addTrustAnchors: PerDomainTrustAnchor[]): Promise<CommitBundle>;
693
775
  /**
694
776
  * Ingest a TLS-serialized MLS welcome message to join an existing MLS group
695
777
  *
778
+ * Important: you have to catch the error with this reason "Although this Welcome seems valid, the local KeyPackage
779
+ * it references has already been deleted locally. Join this group with an external commit", ignore it and then try
780
+ * to join this group with an external commit.
781
+ *
696
782
  * @param welcomeMessage - TLS-serialized MLS Welcome message
697
783
  * @param configuration - configuration of the MLS group
698
784
  * @returns The conversation ID of the newly joined group. You can use the same ID to decrypt/encrypt messages
699
785
  */
700
786
  processWelcomeMessage(welcomeMessage: Uint8Array, configuration?: CustomConfiguration): Promise<ConversationId>;
701
787
  /**
702
- * @returns The client's public key
788
+ * Get the client's public signature key. To upload to the DS for further backend side validation
789
+ *
790
+ * @param ciphersuite - of the signature key to get
791
+ * @returns the client's public signature key
703
792
  */
704
793
  clientPublicKey(ciphersuite: Ciphersuite): Promise<Uint8Array>;
705
794
  /**
@@ -728,7 +817,7 @@ export declare class CoreCrypto {
728
817
  /**
729
818
  * Adds new clients to a conversation, assuming the current client has the right to add new clients to the conversation.
730
819
  *
731
- * **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterwards **ONLY IF** the Delivery Service responds
820
+ * **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterward **ONLY IF** the Delivery Service responds
732
821
  * '200 OK' to the {@link CommitBundle} upload. It will "merge" the commit locally i.e. increment the local group
733
822
  * epoch, use new encryption secrets etc...
734
823
  *
@@ -742,7 +831,7 @@ export declare class CoreCrypto {
742
831
  * Removes the provided clients from a conversation; Assuming those clients exist and the current client is allowed
743
832
  * to do so, otherwise this operation does nothing.
744
833
  *
745
- * **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterwards **ONLY IF** the Delivery Service responds
834
+ * **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterward **ONLY IF** the Delivery Service responds
746
835
  * '200 OK' to the {@link CommitBundle} upload. It will "merge" the commit locally i.e. increment the local group
747
836
  * epoch, use new encryption secrets etc...
748
837
  *
@@ -753,9 +842,9 @@ export declare class CoreCrypto {
753
842
  */
754
843
  removeClientsFromConversation(conversationId: ConversationId, clientIds: ClientId[]): Promise<CommitBundle>;
755
844
  /**
756
- * Creates an update commit which forces every client to update their keypackages in the conversation
845
+ * Creates an update commit which forces every client to update their LeafNode in the conversation
757
846
  *
758
- * **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterwards **ONLY IF** the Delivery Service responds
847
+ * **CAUTION**: {@link CoreCrypto.commitAccepted} **HAS TO** be called afterward **ONLY IF** the Delivery Service responds
759
848
  * '200 OK' to the {@link CommitBundle} upload. It will "merge" the commit locally i.e. increment the local group
760
849
  * epoch, use new encryption secrets etc...
761
850
  *
@@ -785,6 +874,9 @@ export declare class CoreCrypto {
785
874
  * @returns A {@link ProposalBundle} containing the Proposal and its reference in order to roll it back if necessary
786
875
  */
787
876
  newProposal(proposalType: ProposalType, args: ProposalArgs | AddProposalArgs | RemoveProposalArgs): Promise<ProposalBundle>;
877
+ /**
878
+ * Creates a new external Add proposal for self client to join a conversation.
879
+ */
788
880
  newExternalProposal(externalProposalType: ExternalProposalType, args: ExternalAddProposalArgs): Promise<Uint8Array>;
789
881
  /**
790
882
  * Allows to create an external commit to "apply" to join a group through its GroupInfo.
@@ -809,8 +901,9 @@ export declare class CoreCrypto {
809
901
  * and deletes the temporary one. This step makes the group operational and ready to encrypt/decrypt message
810
902
  *
811
903
  * @param conversationId - The ID of the conversation
904
+ * @returns eventually decrypted buffered messages if any
812
905
  */
813
- mergePendingGroupFromExternalCommit(conversationId: ConversationId): Promise<DecryptedMessage[] | undefined>;
906
+ mergePendingGroupFromExternalCommit(conversationId: ConversationId): Promise<BufferedDecryptedMessage[] | undefined>;
814
907
  /**
815
908
  * In case the external commit generated by {@link CoreCrypto.joinByExternalCommit} is rejected by the Delivery Service, and we
816
909
  * want to abort this external commit once for all, we can wipe out the pending group from the keystore in order
@@ -820,26 +913,24 @@ export declare class CoreCrypto {
820
913
  */
821
914
  clearPendingGroupFromExternalCommit(conversationId: ConversationId): Promise<void>;
822
915
  /**
823
- * Allows to mark the latest commit produced as "accepted" and be able to safely merge it
824
- * into the local group state
916
+ * Allows to mark the latest commit produced as "accepted" and be able to safely merge it into the local group state
825
917
  *
826
918
  * @param conversationId - The group's ID
919
+ * @returns the messages from current epoch which had been buffered, if any
827
920
  */
828
- commitAccepted(conversationId: ConversationId): Promise<void>;
921
+ commitAccepted(conversationId: ConversationId): Promise<BufferedDecryptedMessage[] | undefined>;
829
922
  /**
830
- * Allows to remove a pending proposal (rollback). Use this when backend rejects the proposal you just sent e.g. if permissions
831
- * have changed meanwhile.
923
+ * Allows to remove a pending proposal (rollback). Use this when backend rejects the proposal you just sent e.g. if permissions have changed meanwhile.
832
924
  *
833
925
  * **CAUTION**: only use this when you had an explicit response from the Delivery Service
834
- * e.g. 403 or 409. Do not use otherwise e.g. 5xx responses, timeout etc..
926
+ * e.g. 403 or 409. Do not use otherwise e.g. 5xx responses, timeout etc
835
927
  *
836
928
  * @param conversationId - The group's ID
837
929
  * @param proposalRef - A reference to the proposal to delete. You get one when using {@link CoreCrypto.newProposal}
838
930
  */
839
931
  clearPendingProposal(conversationId: ConversationId, proposalRef: ProposalRef): Promise<void>;
840
932
  /**
841
- * Allows to remove a pending commit (rollback). Use this when backend rejects the commit you just sent e.g. if permissions
842
- * have changed meanwhile.
933
+ * Allows to remove a pending commit (rollback). Use this when backend rejects the commit you just sent e.g. if permissions have changed meanwhile.
843
934
  *
844
935
  * **CAUTION**: only use this when you had an explicit response from the Delivery Service
845
936
  * e.g. 403. Do not use otherwise e.g. 5xx responses, timeout etc..
@@ -883,7 +974,7 @@ export declare class CoreCrypto {
883
974
  */
884
975
  reseedRng(seed: Uint8Array): Promise<void>;
885
976
  /**
886
- * Initiailizes the proteus client
977
+ * Initializes the proteus client
887
978
  */
888
979
  proteusInit(): Promise<void>;
889
980
  /**
@@ -1016,47 +1107,49 @@ export declare class CoreCrypto {
1016
1107
  * Creates an enrollment instance with private key material you can use in order to fetch
1017
1108
  * a new x509 certificate from the acme server.
1018
1109
  *
1019
- * @param clientId client identifier with user b64Url encoded & clientId hex encoded e.g. `NDUyMGUyMmY2YjA3NGU3NjkyZjE1NjJjZTAwMmQ2NTQ:6add501bacd1d90e@example.com`
1020
- * @param displayName human readable name displayed in the application e.g. `Smith, Alice M (QA)`
1021
- * @param handle user handle e.g. `alice.smith.qa@example.com`
1022
- * @param expiryDays generated x509 certificate expiry
1110
+ * @param clientId - client identifier with user b64Url encoded & clientId hex encoded e.g. `NDUyMGUyMmY2YjA3NGU3NjkyZjE1NjJjZTAwMmQ2NTQ:6add501bacd1d90e@example.com`
1111
+ * @param displayName - human-readable name displayed in the application e.g. `Smith, Alice M (QA)`
1112
+ * @param handle - user handle e.g. `alice.smith.qa@example.com`
1113
+ * @param expiryDays - generated x509 certificate expiry
1023
1114
  * @param ciphersuite - for generating signing key material
1024
- * @returns The new {@link WireE2eIdentity} object
1115
+ * @returns The new {@link E2eiEnrollment} enrollment instance to use with {@link CoreCrypto.e2eiMlsInitOnly}
1025
1116
  */
1026
- e2eiNewEnrollment(clientId: string, displayName: string, handle: string, expiryDays: number, ciphersuite: Ciphersuite): Promise<WireE2eIdentity>;
1117
+ e2eiNewEnrollment(clientId: string, displayName: string, handle: string, expiryDays: number, ciphersuite: Ciphersuite): Promise<E2eiEnrollment>;
1027
1118
  /**
1028
1119
  * Generates an E2EI enrollment instance for a "regular" client (with a Basic credential) willing to migrate to E2EI.
1029
- * As a consequence, this method does not support changing the ClientId which should remain the same as the Basic one.
1030
1120
  * Once the enrollment is finished, use the instance in {@link CoreCrypto.e2eiRotateAll} to do the rotation.
1031
1121
  *
1032
- * @param displayName human readable name displayed in the application e.g. `Smith, Alice M (QA)`
1033
- * @param handle user handle e.g. `alice.smith.qa@example.com`
1034
- * @param expiryDays generated x509 certificate expiry
1122
+ * @param clientId - client identifier with user b64Url encoded & clientId hex encoded e.g. `NDUyMGUyMmY2YjA3NGU3NjkyZjE1NjJjZTAwMmQ2NTQ:6add501bacd1d90e@example.com`
1123
+ * @param displayName - human-readable name displayed in the application e.g. `Smith, Alice M (QA)`
1124
+ * @param handle - user handle e.g. `alice.smith.qa@example.com`
1125
+ * @param expiryDays - generated x509 certificate expiry
1035
1126
  * @param ciphersuite - for generating signing key material
1036
- * @returns The new {@link WireE2eIdentity} object
1127
+ * @returns The new {@link E2eiEnrollment} enrollment instance to use with {@link CoreCrypto.e2eiRotateAll}
1037
1128
  */
1038
- e2eiNewActivationEnrollment(displayName: string, handle: string, expiryDays: number, ciphersuite: Ciphersuite): Promise<WireE2eIdentity>;
1129
+ e2eiNewActivationEnrollment(clientId: string, displayName: string, handle: string, expiryDays: number, ciphersuite: Ciphersuite): Promise<E2eiEnrollment>;
1039
1130
  /**
1040
1131
  * Generates an E2EI enrollment instance for a E2EI client (with a X509 certificate credential)
1041
1132
  * having to change/rotate their credential, either because the former one is expired or it
1042
- * has been revoked. As a consequence, this method does not support changing neither ClientId which
1043
- * should remain the same as the previous one. It lets you change the DisplayName or the handle
1133
+ * has been revoked. It lets you change the DisplayName or the handle
1044
1134
  * if you need to. Once the enrollment is finished, use the instance in {@link CoreCrypto.e2eiRotateAll} to do the rotation.
1045
1135
  *
1046
- * @param expiryDays generated x509 certificate expiry
1136
+ * @param clientId - client identifier with user b64Url encoded & clientId hex encoded e.g. `NDUyMGUyMmY2YjA3NGU3NjkyZjE1NjJjZTAwMmQ2NTQ:6add501bacd1d90e@example.com`
1137
+ * @param expiryDays - generated x509 certificate expiry
1047
1138
  * @param ciphersuite - for generating signing key material
1048
- * @param displayName human readable name displayed in the application e.g. `Smith, Alice M (QA)`
1049
- * @param handle user handle e.g. `alice.smith.qa@example.com`
1050
- * @returns The new {@link WireE2eIdentity} object
1139
+ * @param displayName - human-readable name displayed in the application e.g. `Smith, Alice M (QA)`
1140
+ * @param handle - user handle e.g. `alice.smith.qa@example.com`
1141
+ * @returns The new {@link E2eiEnrollment} enrollment instance to use with {@link CoreCrypto.e2eiRotateAll}
1051
1142
  */
1052
- e2eiNewRotateEnrollment(expiryDays: number, ciphersuite: Ciphersuite, displayName?: string, handle?: string): Promise<WireE2eIdentity>;
1143
+ e2eiNewRotateEnrollment(clientId: string, expiryDays: number, ciphersuite: Ciphersuite, displayName?: string, handle?: string): Promise<E2eiEnrollment>;
1053
1144
  /**
1054
- * 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
1145
+ * Use this method to initialize end-to-end identity when a client signs up and the grace period is already expired ;
1146
+ * that means he cannot initialize with a Basic credential
1055
1147
  *
1056
1148
  * @param enrollment - the enrollment instance used to fetch the certificates
1057
1149
  * @param certificateChain - the raw response from ACME server
1150
+ * @returns a MlsClient initialized with only a x509 credential
1058
1151
  */
1059
- e2eiMlsInitOnly(enrollment: WireE2eIdentity, certificateChain: string): Promise<void>;
1152
+ e2eiMlsInitOnly(enrollment: E2eiEnrollment, certificateChain: string): Promise<void>;
1060
1153
  /**
1061
1154
  * Creates a commit in all local conversations for changing the credential. Requires first
1062
1155
  * having enrolled a new X509 certificate with either {@link CoreCrypto.e2eiNewActivationEnrollment}
@@ -1065,8 +1158,9 @@ export declare class CoreCrypto {
1065
1158
  * @param enrollment - the enrollment instance used to fetch the certificates
1066
1159
  * @param certificateChain - the raw response from ACME server
1067
1160
  * @param newKeyPackageCount - number of KeyPackages with new identity to generate
1161
+ * @returns a {@link RotateBundle} with commits to fan-out to other group members, KeyPackages to upload and old ones to delete
1068
1162
  */
1069
- e2eiRotateAll(enrollment: WireE2eIdentity, certificateChain: string, newKeyPackageCount: number): Promise<RotateBundle>;
1163
+ e2eiRotateAll(enrollment: E2eiEnrollment, certificateChain: string, newKeyPackageCount: number): Promise<RotateBundle>;
1070
1164
  /**
1071
1165
  * Allows persisting an active enrollment (for example while redirecting the user during OAuth) in order to resume
1072
1166
  * it later with {@link e2eiEnrollmentStashPop}
@@ -1074,22 +1168,38 @@ export declare class CoreCrypto {
1074
1168
  * @param enrollment the enrollment instance to persist
1075
1169
  * @returns a handle to fetch the enrollment later with {@link e2eiEnrollmentStashPop}
1076
1170
  */
1077
- e2eiEnrollmentStash(enrollment: WireE2eIdentity): Promise<Uint8Array>;
1171
+ e2eiEnrollmentStash(enrollment: E2eiEnrollment): Promise<Uint8Array>;
1078
1172
  /**
1079
1173
  * Fetches the persisted enrollment and deletes it from the keystore
1080
1174
  *
1081
1175
  * @param handle returned by {@link e2eiEnrollmentStash}
1082
1176
  * @returns the persisted enrollment instance
1083
1177
  */
1084
- e2eiEnrollmentStashPop(handle: Uint8Array): Promise<WireE2eIdentity>;
1178
+ e2eiEnrollmentStashPop(handle: Uint8Array): Promise<E2eiEnrollment>;
1085
1179
  /**
1086
1180
  * Indicates when to mark a conversation as degraded i.e. when not all its members have a X509.
1087
1181
  * Credential generated by Wire's end-to-end identity enrollment
1088
1182
  *
1089
1183
  * @param conversationId The group's ID
1090
- * @returns true if all the members have valid X509 credentials
1184
+ * @returns the conversation state given current members
1091
1185
  */
1092
- e2eiIsDegraded(conversationId: ConversationId): Promise<boolean>;
1186
+ e2eiConversationState(conversationId: ConversationId): Promise<E2eiConversationState>;
1187
+ /**
1188
+ * Returns true when end-to-end-identity is enabled for the given Ciphersuite
1189
+ *
1190
+ * @param ciphersuite of the credential to check
1191
+ * @returns true if end-to-end identity is enabled for the given ciphersuite
1192
+ */
1193
+ e2eiIsEnabled(ciphersuite: Ciphersuite): Promise<boolean>;
1194
+ /**
1195
+ * From a given conversation, get the identity of the members supplied. Identity is only present for members with a
1196
+ * Certificate Credential (after turning on end-to-end identity).
1197
+ *
1198
+ * @param conversationId - identifier of the conversation
1199
+ * @param clientIds - identifiers of the user
1200
+ * @returns identities or if no member has a x509 certificate, it will return an empty List
1201
+ */
1202
+ getUserIdentities(conversationId: ConversationId, clientIds: ClientId[]): Promise<WireIdentity[]>;
1093
1203
  /**
1094
1204
  * Returns the current version of {@link CoreCrypto}
1095
1205
  *
@@ -1098,7 +1208,7 @@ export declare class CoreCrypto {
1098
1208
  static version(): string;
1099
1209
  }
1100
1210
  type JsonRawData = Uint8Array;
1101
- export declare class WireE2eIdentity {
1211
+ export declare class E2eiEnrollment {
1102
1212
  #private;
1103
1213
  /** @hidden */
1104
1214
  constructor(e2ei: unknown);
@@ -1207,7 +1317,7 @@ export declare class WireE2eIdentity {
1207
1317
  * Parses the response from `POST /acme/{provisioner-name}/order/{order-id}`.
1208
1318
  *
1209
1319
  * @param order HTTP response body
1210
- * @return the finalize url to use with {@link finalizeRequest}
1320
+ * @return finalize url to use with {@link finalizeRequest}
1211
1321
  * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
1212
1322
  */
1213
1323
  checkOrderResponse(order: JsonRawData): string;
@@ -1257,6 +1367,12 @@ export interface AcmeDirectory {
1257
1367
  * @readonly
1258
1368
  */
1259
1369
  newOrder: string;
1370
+ /**
1371
+ * Revocation URL
1372
+ *
1373
+ * @readonly
1374
+ */
1375
+ revokeCert: string;
1260
1376
  }
1261
1377
  /**
1262
1378
  * Result of an order creation
@@ -1325,5 +1441,24 @@ export interface AcmeChallenge {
1325
1441
  */
1326
1442
  target: string;
1327
1443
  }
1444
+ /**
1445
+ * Indicates the state of a Conversation regarding end-to-end identity.
1446
+ * Note: this does not check pending state (pending commit, pending proposals) so it does not
1447
+ * consider members about to be added/removed
1448
+ */
1449
+ export declare enum E2eiConversationState {
1450
+ /**
1451
+ * All clients have a valid E2EI certificate
1452
+ */
1453
+ Verified = 1,
1454
+ /**
1455
+ * Some clients are either still Basic or their certificate is expired
1456
+ */
1457
+ Degraded = 2,
1458
+ /**
1459
+ * All clients are still Basic. If all client have expired certificates, Degraded is returned.
1460
+ */
1461
+ NotEnabled = 3
1462
+ }
1328
1463
 
1329
1464
  export {};