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

Sign up to get free protection for your applications and to get access to all the features.
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 {};