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

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.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 {};