diff --git a/js/modules/loki_app_dot_net_api.js b/js/modules/loki_app_dot_net_api.js index a7a17763f..1cc177847 100644 --- a/js/modules/loki_app_dot_net_api.js +++ b/js/modules/loki_app_dot_net_api.js @@ -98,7 +98,7 @@ const sendToProxy = async ( payloadObj.body = false; // free memory // make temporary key for this request/response - const ephemeralKey = libsignal.Curve.generateKeyPair(); + const ephemeralKey = await libsignal.Curve.async.generateKeyPair(); // mix server pub key with our priv key const symKey = libsignal.Curve.calculateAgreement( diff --git a/js/modules/loki_rpc.js b/js/modules/loki_rpc.js index 0734428bd..85425385a 100644 --- a/js/modules/loki_rpc.js +++ b/js/modules/loki_rpc.js @@ -18,7 +18,7 @@ const encryptForNode = async (node, payload) => { const textEncoder = new TextEncoder(); const plaintext = textEncoder.encode(payload); - const ephemeral = libloki.crypto.generateEphemeralKeyPair(); + const ephemeral = await libloki.crypto.generateEphemeralKeyPair(); const snPubkey = StringView.hexToArrayBuffer(node.pubkey_x25519); @@ -235,7 +235,7 @@ const sendToProxy = async (options = {}, targetNode, retryNumber = 0) => { const snPubkeyHex = StringView.hexToArrayBuffer(targetNode.pubkey_x25519); - const myKeys = window.libloki.crypto.generateEphemeralKeyPair(); + const myKeys = await window.libloki.crypto.generateEphemeralKeyPair(); const symmetricKey = libsignal.Curve.calculateAgreement( snPubkeyHex, diff --git a/libloki/crypto.js b/libloki/crypto.js index 23a7f68c7..dabe9cb7b 100644 --- a/libloki/crypto.js +++ b/libloki/crypto.js @@ -144,8 +144,8 @@ return Multibase.decode(`${base32zCode}${snodeAddressClean}`); } - function generateEphemeralKeyPair() { - const keys = libsignal.Curve.generateKeyPair(); + async function generateEphemeralKeyPair() { + const keys = await libsignal.Curve.async.generateKeyPair(); // Signal protocol prepends with "0x05" keys.pubKey = keys.pubKey.slice(1); return keys;