@wireapp/core-crypto 0.6.0-rc.2 → 0.6.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -114,7 +114,7 @@ cargo make wasm
114
114
 
115
115
  ### Android / JVM
116
116
 
117
- You can publish the JVM and Android bindings to maven using gradle after you'be build the corresponding target.
117
+ You can publish the JVM and Android bindings to maven using gradle after you've built the corresponding target.
118
118
 
119
119
  ```ignore
120
120
  cd kotlin
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wireapp/core-crypto",
3
- "version": "0.6.0-rc.2",
3
+ "version": "0.6.0-rc.4",
4
4
  "description": "CoreCrypto bindings for the Web",
5
5
  "type": "module",
6
6
  "module": "platforms/web/corecrypto.js",
@@ -1,34 +1,155 @@
1
+ declare class WireE2eIdentity {
2
+ free(): void;
3
+ /**
4
+ * See [core_crypto::e2e_identity::WireE2eIdentity::directory_response]
5
+ * @param {Uint8Array} directory
6
+ * @returns {any}
7
+ */
8
+ directory_response(directory: Uint8Array): any;
9
+ /**
10
+ * See [core_crypto::e2e_identity::WireE2eIdentity::new_account_request]
11
+ * @param {any} directory
12
+ * @param {string} previous_nonce
13
+ * @returns {Uint8Array}
14
+ */
15
+ new_account_request(directory: any, previous_nonce: string): Uint8Array;
16
+ /**
17
+ * See [core_crypto::e2e_identity::WireE2eIdentity::new_account_response]
18
+ * @param {Uint8Array} account
19
+ * @returns {Uint8Array}
20
+ */
21
+ new_account_response(account: Uint8Array): Uint8Array;
22
+ /**
23
+ * See [core_crypto::e2e_identity::WireE2eIdentity::new_order_request]
24
+ * @param {string} handle
25
+ * @param {string} client_id
26
+ * @param {number} expiry_days
27
+ * @param {any} directory
28
+ * @param {Uint8Array} account
29
+ * @param {string} previous_nonce
30
+ * @returns {Uint8Array}
31
+ */
32
+ new_order_request(handle: string, client_id: string, expiry_days: number, directory: any, account: Uint8Array, previous_nonce: string): Uint8Array;
33
+ /**
34
+ * See [core_crypto::e2e_identity::WireE2eIdentity::new_order_response]
35
+ * @param {Uint8Array} order
36
+ * @returns {any}
37
+ */
38
+ new_order_response(order: Uint8Array): any;
39
+ /**
40
+ * See [core_crypto::e2e_identity::WireE2eIdentity::new_authz_request]
41
+ * @param {string} url
42
+ * @param {Uint8Array} account
43
+ * @param {string} previous_nonce
44
+ * @returns {Uint8Array}
45
+ */
46
+ new_authz_request(url: string, account: Uint8Array, previous_nonce: string): Uint8Array;
47
+ /**
48
+ * See [core_crypto::e2e_identity::WireE2eIdentity::new_authz_response]
49
+ * @param {Uint8Array} authz
50
+ * @returns {any}
51
+ */
52
+ new_authz_response(authz: Uint8Array): any;
53
+ /**
54
+ * See [core_crypto::e2e_identity::WireE2eIdentity::create_dpop_token]
55
+ * @param {string} access_token_url
56
+ * @param {string} user_id
57
+ * @param {bigint} client_id
58
+ * @param {string} domain
59
+ * @param {any} client_id_challenge
60
+ * @param {string} backend_nonce
61
+ * @param {number} expiry_days
62
+ * @returns {string}
63
+ */
64
+ create_dpop_token(access_token_url: string, user_id: string, client_id: bigint, domain: string, client_id_challenge: any, backend_nonce: string, expiry_days: number): string;
65
+ /**
66
+ * See [core_crypto::e2e_identity::WireE2eIdentity::new_challenge_request]
67
+ * @param {any} handle_challenge
68
+ * @param {Uint8Array} account
69
+ * @param {string} previous_nonce
70
+ * @returns {Uint8Array}
71
+ */
72
+ new_challenge_request(handle_challenge: any, account: Uint8Array, previous_nonce: string): Uint8Array;
73
+ /**
74
+ * See [core_crypto::e2e_identity::WireE2eIdentity::new_challenge_response]
75
+ * @param {Uint8Array} challenge
76
+ */
77
+ new_challenge_response(challenge: Uint8Array): void;
78
+ /**
79
+ * See [core_crypto::e2e_identity::WireE2eIdentity::check_order_request]
80
+ * @param {string} order_url
81
+ * @param {Uint8Array} account
82
+ * @param {string} previous_nonce
83
+ * @returns {Uint8Array}
84
+ */
85
+ check_order_request(order_url: string, account: Uint8Array, previous_nonce: string): Uint8Array;
86
+ /**
87
+ * See [core_crypto::e2e_identity::WireE2eIdentity::check_order_response]
88
+ * @param {Uint8Array} order
89
+ * @returns {Uint8Array}
90
+ */
91
+ check_order_response(order: Uint8Array): Uint8Array;
92
+ /**
93
+ * See [core_crypto::e2e_identity::WireE2eIdentity::finalize_request]
94
+ * @param {(Uint8Array)[]} domains
95
+ * @param {Uint8Array} order
96
+ * @param {Uint8Array} account
97
+ * @param {string} previous_nonce
98
+ * @returns {Uint8Array}
99
+ */
100
+ finalize_request(domains: (Uint8Array)[], order: Uint8Array, account: Uint8Array, previous_nonce: string): Uint8Array;
101
+ /**
102
+ * See [core_crypto::e2e_identity::WireE2eIdentity::finalize_response]
103
+ * @param {Uint8Array} finalize
104
+ * @returns {any}
105
+ */
106
+ finalize_response(finalize: Uint8Array): any;
107
+ /**
108
+ * See [core_crypto::e2e_identity::WireE2eIdentity::certificate_request]
109
+ * @param {any} finalize
110
+ * @param {Uint8Array} account
111
+ * @param {string} previous_nonce
112
+ * @returns {Uint8Array}
113
+ */
114
+ certificate_request(finalize: any, account: Uint8Array, previous_nonce: string): Uint8Array;
115
+ /**
116
+ * See [core_crypto::e2e_identity::WireE2eIdentity::certificate_response]
117
+ * @param {string} certificate_chain
118
+ * @returns {(Uint8Array)[]}
119
+ */
120
+ certificate_response(certificate_chain: string): (Uint8Array)[];
121
+ }
1
122
  /**
2
- * see [core_crypto::prelude::CiphersuiteName]
3
- */
123
+ * see [core_crypto::prelude::CiphersuiteName]
124
+ */
4
125
  export declare enum Ciphersuite {
5
126
  /**
6
- * DH KEM x25519 | AES-GCM 128 | SHA2-256 | Ed25519
7
- */
127
+ * DH KEM x25519 | AES-GCM 128 | SHA2-256 | Ed25519
128
+ */
8
129
  MLS_128_DHKEMX25519_AES128GCM_SHA256_Ed25519 = 1,
9
130
  /**
10
- * DH KEM P256 | AES-GCM 128 | SHA2-256 | EcDSA P256
11
- */
131
+ * DH KEM P256 | AES-GCM 128 | SHA2-256 | EcDSA P256
132
+ */
12
133
  MLS_128_DHKEMP256_AES128GCM_SHA256_P256 = 2,
13
134
  /**
14
- * DH KEM x25519 | Chacha20Poly1305 | SHA2-256 | Ed25519
15
- */
135
+ * DH KEM x25519 | Chacha20Poly1305 | SHA2-256 | Ed25519
136
+ */
16
137
  MLS_128_DHKEMX25519_CHACHA20POLY1305_SHA256_Ed25519 = 3,
17
138
  /**
18
- * DH KEM x448 | AES-GCM 256 | SHA2-512 | Ed448
19
- */
139
+ * DH KEM x448 | AES-GCM 256 | SHA2-512 | Ed448
140
+ */
20
141
  MLS_256_DHKEMX448_AES256GCM_SHA512_Ed448 = 4,
21
142
  /**
22
- * DH KEM P521 | AES-GCM 256 | SHA2-512 | EcDSA P521
23
- */
143
+ * DH KEM P521 | AES-GCM 256 | SHA2-512 | EcDSA P521
144
+ */
24
145
  MLS_256_DHKEMP521_AES256GCM_SHA512_P521 = 5,
25
146
  /**
26
- * DH KEM x448 | Chacha20Poly1305 | SHA2-512 | Ed448
27
- */
147
+ * DH KEM x448 | Chacha20Poly1305 | SHA2-512 | Ed448
148
+ */
28
149
  MLS_256_DHKEMX448_CHACHA20POLY1305_SHA512_Ed448 = 6,
29
150
  /**
30
- * DH KEM P384 | AES-GCM 256 | SHA2-384 | EcDSA P384
31
- */
151
+ * DH KEM P384 | AES-GCM 256 | SHA2-384 | EcDSA P384
152
+ */
32
153
  MLS_256_DHKEMP384_AES256GCM_SHA384_P384 = 7
33
154
  }
34
155
  /**
@@ -689,7 +810,7 @@ export declare class CoreCrypto {
689
810
  * **CAUTION**: only use this when you had an explicit response from the Delivery Service
690
811
  * e.g. 403. Do not use otherwise e.g. 5xx responses, timeout etc..
691
812
  * **DO NOT** use when Delivery Service responds 409, pending state will be renewed
692
- * in {@link CoreCrypto.decrypt_message}
813
+ * in {@link CoreCrypto.decryptMessage}
693
814
  *
694
815
  * @param conversationId - The group's ID
695
816
  */
@@ -750,6 +871,8 @@ export declare class CoreCrypto {
750
871
  /**
751
872
  * Locally persists a session to the keystore
752
873
  *
874
+ * **Note**: This isn't usually needed as persisting sessions happens automatically when decrypting/encrypting messages and initializing Sessions
875
+ *
753
876
  * @param sessionId - ID of the Proteus session
754
877
  */
755
878
  proteusSessionSave(sessionId: string): Promise<void>;
@@ -800,6 +923,12 @@ export declare class CoreCrypto {
800
923
  * @returns: A CBOR-serialized version of the PreKeyBundle corresponding to the newly generated and stored PreKey
801
924
  */
802
925
  proteusNewPrekey(prekeyId: number): Promise<Uint8Array>;
926
+ /**
927
+ * Creates a new prekey with an automatically generated ID..
928
+ *
929
+ * @returns: A CBOR-serialized version of the PreKeyBundle corresponding to the newly generated and stored PreKey
930
+ */
931
+ proteusNewPrekeyAuto(): Promise<Uint8Array>;
803
932
  /**
804
933
  * Proteus public key fingerprint
805
934
  * It's basically the public key encoded as an hex string
@@ -826,7 +955,7 @@ export declare class CoreCrypto {
826
955
  *
827
956
  * @param prekey - the prekey bundle to get the fingerprint from
828
957
  * @returns Hex-encoded public key string
829
- **/
958
+ **/
830
959
  static proteusFingerprintPrekeybundle(prekey: Uint8Array): string;
831
960
  /**
832
961
  * Imports all the data stored by Cryptobox into the CoreCrypto keystore
@@ -834,6 +963,15 @@ export declare class CoreCrypto {
834
963
  * @param storeName - The name of the IndexedDB store where the data is stored
835
964
  */
836
965
  proteusCryptoboxMigrate(storeName: string): Promise<void>;
966
+ /**
967
+ * Creates an enrollment instance with private key material you can use in order to fetch
968
+ * a new x509 certificate from the acme server.
969
+ * Make sure to call [WireE2eIdentity::free] (not yet available) to dispose this instance and its associated
970
+ * keying material.
971
+ *
972
+ * @param ciphersuite - For generating signing key material. Only {@link Ciphersuite.MLS_128_DHKEMX25519_AES128GCM_SHA256_Ed25519} is supported currently
973
+ */
974
+ newAcmeEnrollment(): Promise<WireE2eIdentity>;
837
975
  /**
838
976
  * Returns the current version of {@link CoreCrypto}
839
977
  *
@@ -841,5 +979,261 @@ export declare class CoreCrypto {
841
979
  */
842
980
  static version(): string;
843
981
  }
982
+ type JsonRawData = Uint8Array;
983
+ type AcmeAccount = Uint8Array;
984
+ type AcmeOrder = Uint8Array;
985
+ export declare class WireE2eIdentity {
986
+ #private;
987
+ /** @hidden */
988
+ constructor(e2ei: CoreCryptoFfiTypes.WireE2eIdentity, module: typeof CoreCryptoFfiTypes);
989
+ /**
990
+ * Parses the response from `GET /acme/{provisioner-name}/directory`.
991
+ * Use this {@link AcmeDirectory} in the next step to fetch the first nonce from the acme server. Use
992
+ * {@link AcmeDirectory.newNonce}.
993
+ *
994
+ * @param directory HTTP response body
995
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.1.1
996
+ */
997
+ directoryResponse(directory: JsonRawData): AcmeDirectory;
998
+ /**
999
+ * For creating a new acme account. This returns a signed JWS-alike request body to send to
1000
+ * `POST /acme/{provisioner-name}/new-account`.
1001
+ *
1002
+ * @param directory you got from {@link directoryResponse}
1003
+ * @param previousNonce you got from calling `HEAD {@link AcmeDirectory.newNonce}`
1004
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.3
1005
+ */
1006
+ newAccountRequest(directory: AcmeDirectory, previousNonce: string): JsonRawData;
1007
+ /**
1008
+ * Parses the response from `POST /acme/{provisioner-name}/new-account`.
1009
+ * @param account HTTP response body
1010
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.3
1011
+ */
1012
+ newAccountResponse(account: JsonRawData): AcmeAccount;
1013
+ /**
1014
+ * Creates a new acme order for the handle (userId + display name) and the clientId.
1015
+ *
1016
+ * @param handle domain of the authorization server e.g. `idp.example.org`
1017
+ * @param clientId domain of the wire-server e.g. `wire.example.org`
1018
+ * @param expiryDays generated x509 certificate expiry
1019
+ * @param directory you got from {@link directoryResponse}
1020
+ * @param account you got from {@link newAccountResponse}
1021
+ * @param previousNonce `replay-nonce` response header from `POST /acme/{provisioner-name}/new-account`
1022
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
1023
+ */
1024
+ newOrderRequest(handle: string, clientId: string, expiryDays: number, directory: AcmeDirectory, account: AcmeAccount, previousNonce: string): JsonRawData;
1025
+ /**
1026
+ * Parses the response from `POST /acme/{provisioner-name}/new-order`.
1027
+ *
1028
+ * @param order HTTP response body
1029
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
1030
+ */
1031
+ newOrderResponse(order: JsonRawData): NewAcmeOrder;
1032
+ /**
1033
+ * Creates a new authorization request.
1034
+ *
1035
+ * @param url one of the URL in new order's authorizations (use {@link NewAcmeOrder.authorizations} from {@link newOrderResponse})
1036
+ * @param account you got from {@link newAccountResponse}
1037
+ * @param previousNonce `replay-nonce` response header from `POST /acme/{provisioner-name}/new-order` (or from the
1038
+ * previous to this method if you are creating the second authorization)
1039
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.5
1040
+ */
1041
+ newAuthzRequest(url: string, account: AcmeAccount, previousNonce: string): JsonRawData;
1042
+ /**
1043
+ * Parses the response from `POST /acme/{provisioner-name}/authz/{authz-id}`
1044
+ *
1045
+ * You then have to map the challenge from this authorization object. The `client_id_challenge`
1046
+ * will be the one with the `client_id_host` (you supplied to {@link newOrderRequest}) identifier,
1047
+ * the other will be your `handle_challenge`.
1048
+ *
1049
+ * @param authz HTTP response body
1050
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.5
1051
+ */
1052
+ newAuthzResponse(authz: JsonRawData): NewAcmeAuthz;
1053
+ /**
1054
+ * Generates a new client Dpop JWT token. It demonstrates proof of possession of the nonces
1055
+ * (from wire-server & acme server) and will be verified by the acme server when verifying the
1056
+ * challenge (in order to deliver a certificate).
1057
+ *
1058
+ * Then send it to `POST /clients/{id}/access-token`
1059
+ * {@link https://staging-nginz-https.zinfra.io/api/swagger-ui/#/default/post_clients__cid__access_token} on wire-server.
1060
+ *
1061
+ * @param accessTokenUrl backend endpoint where this token will be sent. Should be this one {@link https://staging-nginz-https.zinfra.io/api/swagger-ui/#/default/post_clients__cid__access_token}
1062
+ * @param userId an UUIDv4 uniquely identifying the user
1063
+ * @param clientId client identifier
1064
+ * @param domain owning backend domain e.g. `wire.com`
1065
+ * @param clientIdChallenge you found after {@link newAuthzResponse}
1066
+ * @param backendNonce you get by calling `GET /clients/token/nonce` on wire-server as defined here {@link https://staging-nginz-https.zinfra.io/api/swagger-ui/#/default/get_clients__client__nonce}
1067
+ * @param expiryDays token expiry in days
1068
+ */
1069
+ createDpopToken(accessTokenUrl: string, userId: string, clientId: bigint, domain: string, clientIdChallenge: AcmeChallenge, backendNonce: string, expiryDays: number): string;
1070
+ /**
1071
+ * Creates a new challenge request.
1072
+ *
1073
+ * @param handleChallenge you found after {@link newAuthzResponse}
1074
+ * @param account you found after {@link newAccountResponse}
1075
+ * @param previousNonce `replay-nonce` response header from `POST /acme/{provisioner-name}/authz/{authz-id}`
1076
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.5.1
1077
+ */
1078
+ newChallengeRequest(handleChallenge: AcmeChallenge, account: AcmeAccount, previousNonce: string): JsonRawData;
1079
+ /**
1080
+ * Parses the response from `POST /acme/{provisioner-name}/challenge/{challenge-id}`.
1081
+ *
1082
+ * @param challenge HTTP response body
1083
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.5.1
1084
+ */
1085
+ newChallengeResponse(challenge: JsonRawData): void;
1086
+ /**
1087
+ * Verifies that the previous challenge has been completed.
1088
+ *
1089
+ * @param orderUrl `location` header from http response you got from {@link newOrderResponse}
1090
+ * @param account you found after {@link newAccountResponse}
1091
+ * @param previousNonce `replay-nonce` response header from `POST /acme/{provisioner-name}/challenge/{challenge-id}`
1092
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
1093
+ */
1094
+ checkOrderRequest(orderUrl: string, account: AcmeAccount, previousNonce: string): JsonRawData;
1095
+ /**
1096
+ * Parses the response from `POST /acme/{provisioner-name}/order/{order-id}`.
1097
+ *
1098
+ * @param order HTTP response body
1099
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
1100
+ */
1101
+ checkOrderResponse(order: JsonRawData): AcmeOrder;
1102
+ /**
1103
+ * Final step before fetching the certificate.
1104
+ *
1105
+ * @param domains you want to generate a certificate for e.g. `["wire.com"]`
1106
+ * @param order you got from {@link checkOrderResponse}
1107
+ * @param account you found after {@link newAccountResponse}
1108
+ * @param previousNonce `replay-nonce` response header from `POST /acme/{provisioner-name}/order/{order-id}`
1109
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
1110
+ */
1111
+ finalizeRequest(domains: Uint8Array[], order: AcmeOrder, account: AcmeAccount, previousNonce: string): JsonRawData;
1112
+ /**
1113
+ * Parses the response from `POST /acme/{provisioner-name}/order/{order-id}/finalize`.
1114
+ *
1115
+ * @param finalize HTTP response body
1116
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
1117
+ */
1118
+ finalizeResponse(finalize: JsonRawData): AcmeFinalize;
1119
+ /**
1120
+ * Creates a request for finally fetching the x509 certificate.
1121
+ *
1122
+ * @param finalize you got from {@link finalizeResponse}
1123
+ * @param account you got from {@link newAccountResponse}
1124
+ * @param previousNonce `replay-nonce` response header from `POST /acme/{provisioner-name}/order/{order-id}/finalize`
1125
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4.2
1126
+ */
1127
+ certificateRequest(finalize: AcmeFinalize, account: AcmeAccount, previousNonce: string): JsonRawData;
1128
+ /**
1129
+ * Parses the response from `POST /acme/{provisioner-name}/certificate/{certificate-id}`.
1130
+ *
1131
+ * @param certificateChain HTTP string response body
1132
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4.2
1133
+ */
1134
+ certificateResponse(certificateChain: string): Uint8Array[];
1135
+ }
1136
+ /**
1137
+ * Holds URLs of all the standard ACME endpoint supported on an ACME server.
1138
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.1.1
1139
+ */
1140
+ export interface AcmeDirectory {
1141
+ /**
1142
+ * URL for fetching a new nonce. Use this only for creating a new account.
1143
+ *
1144
+ * @readonly
1145
+ */
1146
+ newNonce: string;
1147
+ /**
1148
+ * URL for creating a new account.
1149
+ *
1150
+ * @readonly
1151
+ */
1152
+ newAccount: string;
1153
+ /**
1154
+ * URL for creating a new order.
1155
+ *
1156
+ * @readonly
1157
+ */
1158
+ newOrder: string;
1159
+ }
1160
+ /**
1161
+ * Result of an order creation
1162
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
1163
+ */
1164
+ export interface NewAcmeOrder {
1165
+ /**
1166
+ * Contains raw JSON data of this order. This is parsed by the underlying Rust library hence should not be accessed
1167
+ *
1168
+ * @readonly
1169
+ */
1170
+ delegate: Uint8Array;
1171
+ /**
1172
+ * An authorization for each domain to create
1173
+ *
1174
+ * @readonly
1175
+ */
1176
+ authorizations: Uint8Array[];
1177
+ }
1178
+ /**
1179
+ * Result of an authorization creation.
1180
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.5
1181
+ */
1182
+ export interface NewAcmeAuthz {
1183
+ /**
1184
+ * DNS entry associated with those challenge
1185
+ *
1186
+ * @readonly
1187
+ */
1188
+ identifier: string;
1189
+ /**
1190
+ * Challenge for the clientId
1191
+ *
1192
+ * @readonly
1193
+ */
1194
+ wireHttpChallenge: AcmeChallenge | null;
1195
+ /**
1196
+ * Challenge for the userId and displayName
1197
+ *
1198
+ * @readonly
1199
+ */
1200
+ wireOidcChallenge: AcmeChallenge | null;
1201
+ }
1202
+ /**
1203
+ * For creating a challenge
1204
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.5.1
1205
+ */
1206
+ export interface AcmeChallenge {
1207
+ /**
1208
+ * Contains raw JSON data of this challenge. This is parsed by the underlying Rust library hence should not be accessed
1209
+ *
1210
+ * @readonly
1211
+ */
1212
+ delegate: Uint8Array;
1213
+ /**
1214
+ * URL of this challenge
1215
+ *
1216
+ * @readonly
1217
+ */
1218
+ url: string;
1219
+ }
1220
+ /**
1221
+ * Result from finalize.
1222
+ * @see https://www.rfc-editor.org/rfc/rfc8555.html#section-7.4
1223
+ */
1224
+ export interface AcmeFinalize {
1225
+ /**
1226
+ * Contains raw JSON data of this finalize. This is parsed by the underlying Rust library hence should not be accessed
1227
+ *
1228
+ * @readonly
1229
+ */
1230
+ delegate: Uint8Array;
1231
+ /**
1232
+ * URL of to use for the last request to fetch the x509 certificate
1233
+ *
1234
+ * @readonly
1235
+ */
1236
+ certificateUrl: string;
1237
+ }
844
1238
 
845
1239
  export {};