@wireapp/core-crypto 1.0.0-rc.2 → 1.0.0-rc.6

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.2",
3
+ "version": "1.0.0-rc.6",
4
4
  "description": "CoreCrypto bindings for the Web",
5
5
  "type": "module",
6
6
  "module": "platforms/web/corecrypto.js",
@@ -727,6 +727,10 @@ export declare class CoreCrypto {
727
727
  /**
728
728
  * Ingest a TLS-serialized MLS welcome message to join an existing MLS group
729
729
  *
730
+ * Important: you have to catch the error with this reason "Although this Welcome seems valid, the local KeyPackage
731
+ * it references has already been deleted locally. Join this group with an external commit", ignore it and then try
732
+ * to join this group with an external commit.
733
+ *
730
734
  * @param welcomeMessage - TLS-serialized MLS Welcome message
731
735
  * @param configuration - configuration of the MLS group
732
736
  * @returns The conversation ID of the newly joined group. You can use the same ID to decrypt/encrypt messages
@@ -1121,9 +1125,16 @@ export declare class CoreCrypto {
1121
1125
  * Credential generated by Wire's end-to-end identity enrollment
1122
1126
  *
1123
1127
  * @param conversationId The group's ID
1124
- * @returns true if all the members have valid X509 credentials
1128
+ * @returns the conversation state given current members
1129
+ */
1130
+ e2eiConversationState(conversationId: ConversationId): Promise<E2eiConversationState>;
1131
+ /**
1132
+ * Returns true when end-to-end-identity is enabled for the given Ciphersuite
1133
+ *
1134
+ * @param ciphersuite of the credential to check
1135
+ * @returns true end-to-end identity is enabled for the given ciphersuite
1125
1136
  */
1126
- e2eiIsDegraded(conversationId: ConversationId): Promise<boolean>;
1137
+ e2eiIsEnabled(ciphersuite: Ciphersuite): Promise<boolean>;
1127
1138
  /**
1128
1139
  * Returns the current version of {@link CoreCrypto}
1129
1140
  *
@@ -1359,5 +1370,24 @@ export interface AcmeChallenge {
1359
1370
  */
1360
1371
  target: string;
1361
1372
  }
1373
+ /**
1374
+ * Indicates the state of a Conversation regarding end-to-end identity.
1375
+ * Note: this does not check pending state (pending commit, pending proposals) so it does not
1376
+ * consider members about to be added/removed
1377
+ */
1378
+ export declare enum E2eiConversationState {
1379
+ /**
1380
+ * All clients have a valid E2EI certificate
1381
+ */
1382
+ Verified = 1,
1383
+ /**
1384
+ * Some clients are either still Basic or their certificate is expired
1385
+ */
1386
+ Degraded = 2,
1387
+ /**
1388
+ * All clients are still Basic. If all client have expired certificates, Degraded is returned.
1389
+ */
1390
+ NotEnabled = 3
1391
+ }
1362
1392
 
1363
1393
  export {};
@@ -234,12 +234,12 @@ function makeMutClosure(arg0, arg1, dtor, f) {
234
234
  return real;
235
235
  }
236
236
  function __wbg_adapter_52(arg0, arg1, arg2) {
237
- wasm$1.wasm_bindgen__convert__closures__invoke1_mut__h79cafe3df8446843(arg0, arg1, addHeapObject(arg2));
237
+ wasm$1.wasm_bindgen__convert__closures__invoke1_mut__h17baf5e1d66e67f4(arg0, arg1, addHeapObject(arg2));
238
238
  }
239
239
  function __wbg_adapter_55(arg0, arg1, arg2) {
240
240
  try {
241
241
  const retptr = wasm$1.__wbindgen_add_to_stack_pointer(-16);
242
- wasm$1.wasm_bindgen__convert__closures__invoke1_mut__he1696d119fd3caab(retptr, arg0, arg1, addHeapObject(arg2));
242
+ wasm$1.wasm_bindgen__convert__closures__invoke1_mut__hdbae48319fb47112(retptr, arg0, arg1, addHeapObject(arg2));
243
243
  var r0 = getInt32Memory0()[retptr / 4 + 0];
244
244
  var r1 = getInt32Memory0()[retptr / 4 + 1];
245
245
  if (r1) {
@@ -313,8 +313,8 @@ function handleError(f, args) {
313
313
  wasm$1.__wbindgen_exn_store(addHeapObject(e));
314
314
  }
315
315
  }
316
- function __wbg_adapter_298(arg0, arg1, arg2, arg3) {
317
- wasm$1.wasm_bindgen__convert__closures__invoke2_mut__h2ada45b9b70febc7(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
316
+ function __wbg_adapter_299(arg0, arg1, arg2, arg3) {
317
+ wasm$1.wasm_bindgen__convert__closures__invoke2_mut__haf4f26fdea6dc8ca(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3));
318
318
  }
319
319
  /**
320
320
  * see [core_crypto::prelude::MlsWirePolicy]
@@ -807,14 +807,25 @@ let CoreCrypto$1 = class CoreCrypto {
807
807
  /**
808
808
  * Returns [`WasmCryptoResult<bool>`]
809
809
  *
810
- * see [core_crypto::mls::MlsCentral::e2ei_is_degraded]
810
+ * see [core_crypto::mls::MlsCentral::e2ei_conversation_state]
811
811
  * @param {Uint8Array} conversation_id
812
812
  * @returns {Promise<any>}
813
813
  */
814
- e2ei_is_degraded(conversation_id) {
814
+ e2ei_conversation_state(conversation_id) {
815
815
  const ptr0 = passArray8ToWasm0(conversation_id, wasm$1.__wbindgen_malloc);
816
816
  const len0 = WASM_VECTOR_LEN;
817
- const ret = wasm$1.corecrypto_e2ei_is_degraded(this.__wbg_ptr, ptr0, len0);
817
+ const ret = wasm$1.corecrypto_e2ei_conversation_state(this.__wbg_ptr, ptr0, len0);
818
+ return takeObject(ret);
819
+ }
820
+ /**
821
+ * Returns [`WasmCryptoResult<bool>`]
822
+ *
823
+ * see [core_crypto::mls::MlsCentral::e2ei_is_enabled]
824
+ * @param {number} ciphersuite
825
+ * @returns {Promise<any>}
826
+ */
827
+ e2ei_is_enabled(ciphersuite) {
828
+ const ret = wasm$1.corecrypto_e2ei_is_enabled(this.__wbg_ptr, ciphersuite);
818
829
  return takeObject(ret);
819
830
  }
820
831
  /**
@@ -1215,7 +1226,7 @@ let CoreCrypto$1 = class CoreCrypto {
1215
1226
  /**
1216
1227
  * Returns: [`WasmCryptoResult<js_sys::Uint8Array>`]
1217
1228
  *
1218
- * see [core_crypto::mls::MlsCentral::new_proposal]
1229
+ * see [core_crypto::mls::MlsCentral::new_add_proposal]
1219
1230
  * @param {Uint8Array} conversation_id
1220
1231
  * @param {Uint8Array} keypackage
1221
1232
  * @returns {Promise<any>}
@@ -1231,7 +1242,7 @@ let CoreCrypto$1 = class CoreCrypto {
1231
1242
  /**
1232
1243
  * Returns: [`WasmCryptoResult<js_sys::Uint8Array>`]
1233
1244
  *
1234
- * see [core_crypto::mls::MlsCentral::new_proposal]
1245
+ * see [core_crypto::mls::MlsCentral::new_update_proposal]
1235
1246
  * @param {Uint8Array} conversation_id
1236
1247
  * @returns {Promise<any>}
1237
1248
  */
@@ -1244,7 +1255,7 @@ let CoreCrypto$1 = class CoreCrypto {
1244
1255
  /**
1245
1256
  * Returns: [`WasmCryptoResult<js_sys::Uint8Array>`]
1246
1257
  *
1247
- * see [core_crypto::mls::MlsCentral::new_proposal]
1258
+ * see [core_crypto::mls::MlsCentral::new_remove_proposal]
1248
1259
  * @param {Uint8Array} conversation_id
1249
1260
  * @param {Uint8Array} client_id
1250
1261
  * @returns {Promise<any>}
@@ -2858,39 +2869,50 @@ function __wbg_get_imports() {
2858
2869
  const ret = getObject(arg0).length;
2859
2870
  return ret;
2860
2871
  };
2861
- imports.wbg.__wbg_new_b51585de1b234aff = function () {
2862
- const ret = new Object();
2863
- return addHeapObject(ret);
2864
- };
2865
2872
  imports.wbg.__wbg_call_01734de55d61e11d = function () {
2866
2873
  return handleError(function (arg0, arg1, arg2) {
2867
2874
  const ret = getObject(arg0).call(getObject(arg1), getObject(arg2));
2868
2875
  return addHeapObject(ret);
2869
2876
  }, arguments);
2870
2877
  };
2878
+ imports.wbg.__wbindgen_number_new = function (arg0) {
2879
+ const ret = arg0;
2880
+ return addHeapObject(ret);
2881
+ };
2871
2882
  imports.wbg.__wbg_new_8125e318e6245eed = function (arg0) {
2872
2883
  const ret = new Uint8Array(getObject(arg0));
2873
2884
  return addHeapObject(ret);
2874
2885
  };
2886
+ imports.wbg.__wbg_ffiwiree2eidentity_new = function (arg0) {
2887
+ const ret = FfiWireE2EIdentity.__wrap(arg0);
2888
+ return addHeapObject(ret);
2889
+ };
2890
+ imports.wbg.__wbg_new_b51585de1b234aff = function () {
2891
+ const ret = new Object();
2892
+ return addHeapObject(ret);
2893
+ };
2875
2894
  imports.wbg.__wbg_new_898a68150f225f2e = function () {
2876
2895
  const ret = new Array();
2877
2896
  return addHeapObject(ret);
2878
2897
  };
2898
+ imports.wbg.__wbg_set_502d29070ea18557 = function (arg0, arg1, arg2) {
2899
+ getObject(arg0)[arg1 >>> 0] = takeObject(arg2);
2900
+ };
2901
+ imports.wbg.__wbg_set_841ac57cff3d672b = function (arg0, arg1, arg2) {
2902
+ getObject(arg0)[takeObject(arg1)] = takeObject(arg2);
2903
+ };
2879
2904
  imports.wbg.__wbg_push_ca1c26067ef907ac = function (arg0, arg1) {
2880
2905
  const ret = getObject(arg0).push(getObject(arg1));
2881
2906
  return ret;
2882
2907
  };
2883
- imports.wbg.__wbg_ffiwiree2eidentity_new = function (arg0) {
2884
- const ret = FfiWireE2EIdentity.__wrap(arg0);
2908
+ imports.wbg.__wbg_new_56693dbed0c32988 = function () {
2909
+ const ret = new Map();
2885
2910
  return addHeapObject(ret);
2886
2911
  };
2887
- imports.wbg.__wbindgen_number_new = function (arg0) {
2888
- const ret = arg0;
2912
+ imports.wbg.__wbg_set_bedc3d02d0f05eb0 = function (arg0, arg1, arg2) {
2913
+ const ret = getObject(arg0).set(getObject(arg1), getObject(arg2));
2889
2914
  return addHeapObject(ret);
2890
2915
  };
2891
- imports.wbg.__wbg_set_502d29070ea18557 = function (arg0, arg1, arg2) {
2892
- getObject(arg0)[arg1 >>> 0] = takeObject(arg2);
2893
- };
2894
2916
  imports.wbg.__wbg_proteusautoprekeybundle_new = function (arg0) {
2895
2917
  const ret = ProteusAutoPrekeyBundle.__wrap(arg0);
2896
2918
  return addHeapObject(ret);
@@ -2899,14 +2921,6 @@ function __wbg_get_imports() {
2899
2921
  const ret = BigInt.asUintN(64, arg0);
2900
2922
  return addHeapObject(ret);
2901
2923
  };
2902
- imports.wbg.__wbg_new_56693dbed0c32988 = function () {
2903
- const ret = new Map();
2904
- return addHeapObject(ret);
2905
- };
2906
- imports.wbg.__wbg_set_bedc3d02d0f05eb0 = function (arg0, arg1, arg2) {
2907
- const ret = getObject(arg0).set(getObject(arg1), getObject(arg2));
2908
- return addHeapObject(ret);
2909
- };
2910
2924
  imports.wbg.__wbg_new_d258248ed531ff54 = function (arg0, arg1) {
2911
2925
  const ret = new Error(getStringFromWasm0(arg0, arg1));
2912
2926
  return addHeapObject(ret);
@@ -2979,9 +2993,6 @@ function __wbg_get_imports() {
2979
2993
  const ret = CoreCrypto$1.__wrap(arg0);
2980
2994
  return addHeapObject(ret);
2981
2995
  };
2982
- imports.wbg.__wbg_set_841ac57cff3d672b = function (arg0, arg1, arg2) {
2983
- getObject(arg0)[takeObject(arg1)] = takeObject(arg2);
2984
- };
2985
2996
  imports.wbg.__wbg_instanceof_Promise_0e98a5bf082e090f = function (arg0) {
2986
2997
  let result;
2987
2998
  try {
@@ -3033,7 +3044,7 @@ function __wbg_get_imports() {
3033
3044
  const a = state0.a;
3034
3045
  state0.a = 0;
3035
3046
  try {
3036
- return __wbg_adapter_298(a, state0.b, arg0, arg1);
3047
+ return __wbg_adapter_299(a, state0.b, arg0, arg1);
3037
3048
  }
3038
3049
  finally {
3039
3050
  state0.a = a;
@@ -3123,6 +3134,10 @@ function __wbg_get_imports() {
3123
3134
  return addHeapObject(ret);
3124
3135
  }, arguments);
3125
3136
  };
3137
+ imports.wbg.__wbg_now_9c5990bda04c7e53 = function () {
3138
+ const ret = Date.now();
3139
+ return ret;
3140
+ };
3126
3141
  imports.wbg.__wbg_put_fb32824d87feec5c = function () {
3127
3142
  return handleError(function (arg0, arg1, arg2) {
3128
3143
  const ret = getObject(arg0).put(getObject(arg1), getObject(arg2));
@@ -3165,10 +3180,6 @@ function __wbg_get_imports() {
3165
3180
  return addHeapObject(ret);
3166
3181
  }, arguments);
3167
3182
  };
3168
- imports.wbg.__wbg_now_9c5990bda04c7e53 = function () {
3169
- const ret = Date.now();
3170
- return ret;
3171
- };
3172
3183
  imports.wbg.__wbindgen_memory = function () {
3173
3184
  const ret = wasm$1.memory;
3174
3185
  return addHeapObject(ret);
@@ -3482,12 +3493,12 @@ function __wbg_get_imports() {
3482
3493
  return addHeapObject(ret);
3483
3494
  }, arguments);
3484
3495
  };
3485
- imports.wbg.__wbindgen_closure_wrapper1985 = function (arg0, arg1, arg2) {
3486
- const ret = makeMutClosure(arg0, arg1, 168, __wbg_adapter_52);
3496
+ imports.wbg.__wbindgen_closure_wrapper1951 = function (arg0, arg1, arg2) {
3497
+ const ret = makeMutClosure(arg0, arg1, 167, __wbg_adapter_52);
3487
3498
  return addHeapObject(ret);
3488
3499
  };
3489
- imports.wbg.__wbindgen_closure_wrapper4701 = function (arg0, arg1, arg2) {
3490
- const ret = makeMutClosure(arg0, arg1, 168, __wbg_adapter_55);
3500
+ imports.wbg.__wbindgen_closure_wrapper4727 = function (arg0, arg1, arg2) {
3501
+ const ret = makeMutClosure(arg0, arg1, 167, __wbg_adapter_55);
3491
3502
  return addHeapObject(ret);
3492
3503
  };
3493
3504
  return imports;
@@ -3556,7 +3567,7 @@ var exports = /*#__PURE__*/Object.freeze({
3556
3567
  var wasm = async (opt = {}) => {
3557
3568
  let {importHook, serverPath} = opt;
3558
3569
 
3559
- let path = "assets/core_crypto_ffi-b7eb1191.wasm";
3570
+ let path = "assets/core_crypto_ffi-8c0bd9a1.wasm";
3560
3571
 
3561
3572
  if (serverPath != null) {
3562
3573
  path = serverPath + /[^\/\\]*$/.exec(path)[0];
@@ -4054,6 +4065,10 @@ class CoreCrypto {
4054
4065
  /**
4055
4066
  * Ingest a TLS-serialized MLS welcome message to join an existing MLS group
4056
4067
  *
4068
+ * Important: you have to catch the error with this reason "Although this Welcome seems valid, the local KeyPackage
4069
+ * it references has already been deleted locally. Join this group with an external commit", ignore it and then try
4070
+ * to join this group with an external commit.
4071
+ *
4057
4072
  * @param welcomeMessage - TLS-serialized MLS Welcome message
4058
4073
  * @param configuration - configuration of the MLS group
4059
4074
  * @returns The conversation ID of the newly joined group. You can use the same ID to decrypt/encrypt messages
@@ -4646,7 +4661,13 @@ class CoreCrypto {
4646
4661
  * @param newKeyPackageCount - number of KeyPackages with new identity to generate
4647
4662
  */
4648
4663
  async e2eiRotateAll(enrollment, certificateChain, newKeyPackageCount) {
4649
- return await __classPrivateFieldGet(this, _CoreCrypto_cc, "f").e2ei_rotate_all(enrollment.inner(), certificateChain, newKeyPackageCount);
4664
+ const ffiRet = await __classPrivateFieldGet(this, _CoreCrypto_cc, "f").e2ei_rotate_all(enrollment.inner(), certificateChain, newKeyPackageCount);
4665
+ const ret = {
4666
+ commits: ffiRet.commits,
4667
+ newKeyPackages: ffiRet.new_key_packages,
4668
+ keyPackageRefsToRemove: ffiRet.key_package_refs_to_remove,
4669
+ };
4670
+ return ret;
4650
4671
  }
4651
4672
  /**
4652
4673
  * Allows persisting an active enrollment (for example while redirecting the user during OAuth) in order to resume
@@ -4673,10 +4694,21 @@ class CoreCrypto {
4673
4694
  * Credential generated by Wire's end-to-end identity enrollment
4674
4695
  *
4675
4696
  * @param conversationId The group's ID
4676
- * @returns true if all the members have valid X509 credentials
4697
+ * @returns the conversation state given current members
4677
4698
  */
4678
- async e2eiIsDegraded(conversationId) {
4679
- return await CoreCryptoError.asyncMapErr(__classPrivateFieldGet(this, _CoreCrypto_cc, "f").e2ei_is_degraded(conversationId));
4699
+ async e2eiConversationState(conversationId) {
4700
+ let state = await CoreCryptoError.asyncMapErr(__classPrivateFieldGet(this, _CoreCrypto_cc, "f").e2ei_conversation_state(conversationId));
4701
+ // @ts-ignore
4702
+ return E2eiConversationState[E2eiConversationState[state]];
4703
+ }
4704
+ /**
4705
+ * Returns true when end-to-end-identity is enabled for the given Ciphersuite
4706
+ *
4707
+ * @param ciphersuite of the credential to check
4708
+ * @returns true end-to-end identity is enabled for the given ciphersuite
4709
+ */
4710
+ async e2eiIsEnabled(ciphersuite) {
4711
+ return await CoreCryptoError.asyncMapErr(__classPrivateFieldGet(this, _CoreCrypto_cc, "f").e2ei_is_enabled(ciphersuite));
4680
4712
  }
4681
4713
  /**
4682
4714
  * Returns the current version of {@link CoreCrypto}
@@ -4951,5 +4983,25 @@ class WireE2eIdentity {
4951
4983
  }
4952
4984
  }
4953
4985
  _WireE2eIdentity_e2ei = new WeakMap();
4986
+ /**
4987
+ * Indicates the state of a Conversation regarding end-to-end identity.
4988
+ * Note: this does not check pending state (pending commit, pending proposals) so it does not
4989
+ * consider members about to be added/removed
4990
+ */
4991
+ var E2eiConversationState;
4992
+ (function (E2eiConversationState) {
4993
+ /**
4994
+ * All clients have a valid E2EI certificate
4995
+ */
4996
+ E2eiConversationState[E2eiConversationState["Verified"] = 1] = "Verified";
4997
+ /**
4998
+ * Some clients are either still Basic or their certificate is expired
4999
+ */
5000
+ E2eiConversationState[E2eiConversationState["Degraded"] = 2] = "Degraded";
5001
+ /**
5002
+ * All clients are still Basic. If all client have expired certificates, Degraded is returned.
5003
+ */
5004
+ E2eiConversationState[E2eiConversationState["NotEnabled"] = 3] = "NotEnabled";
5005
+ })(E2eiConversationState || (E2eiConversationState = {}));
4954
5006
 
4955
- export { Ciphersuite, CoreCrypto, CoreCryptoError, CredentialType, ExternalProposalType, GroupInfoEncryptionType, ProposalType, RatchetTreeType, WireE2eIdentity, WirePolicy };
5007
+ export { Ciphersuite, CoreCrypto, CoreCryptoError, CredentialType, E2eiConversationState, ExternalProposalType, GroupInfoEncryptionType, ProposalType, RatchetTreeType, WireE2eIdentity, WirePolicy };