diff --git a/keyserver/src/utils/olm-utils.js b/keyserver/src/utils/olm-utils.js --- a/keyserver/src/utils/olm-utils.js +++ b/keyserver/src/utils/olm-utils.js @@ -49,12 +49,21 @@ account: OlmAccount, accountPicklingKey: string, initialEncryptedMessage: string, + theirCurve25519Key?: string, + oneTimeKey?: string, ): Promise { await olm.init(); const session = new olm.Session(); - session.create_inbound(account, initialEncryptedMessage); + + if (theirCurve25519Key && oneTimeKey) { + session.create_inbound_from(account, theirCurve25519Key, oneTimeKey); + } else { + session.create_inbound(account, initialEncryptedMessage); + } + account.remove_one_time_keys(session); session.decrypt(olmEncryptedMessageTypes.PREKEY, initialEncryptedMessage); + return session.pickle(accountPicklingKey); }