From 3cb46b38ff29baee4a43ff0483337538a231c1d7 Mon Sep 17 00:00:00 2001 From: Bruno Windels Date: Wed, 2 Sep 2020 17:38:46 +0200 Subject: [PATCH] extract olm/Session into own file --- src/matrix/e2ee/olm/Decryption.js | 39 +-------------------- src/matrix/e2ee/olm/Session.js | 58 +++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 38 deletions(-) create mode 100644 src/matrix/e2ee/olm/Session.js diff --git a/src/matrix/e2ee/olm/Decryption.js b/src/matrix/e2ee/olm/Decryption.js index ec87af74..01362266 100644 --- a/src/matrix/e2ee/olm/Decryption.js +++ b/src/matrix/e2ee/olm/Decryption.js @@ -16,6 +16,7 @@ limitations under the License. import {DecryptionError} from "../common.js"; import {groupBy} from "../../../utils/groupBy.js"; +import {Session} from "./Session.js"; const SESSION_LIMIT_PER_SENDER_KEY = 4; @@ -169,44 +170,6 @@ export class Decryption { } } -class Session { - constructor(data, pickleKey, olm, isNew = false) { - this.data = data; - this._olm = olm; - this._pickleKey = pickleKey; - this.isNew = isNew; - this.isModified = isNew; - } - - static create(senderKey, olmSession, olm, pickleKey, timestamp) { - return new Session({ - session: olmSession.pickle(pickleKey), - sessionId: olmSession.session_id(), - senderKey, - lastUsed: timestamp, - }, pickleKey, olm, true); - } - - get id() { - return this.data.sessionId; - } - - load() { - const session = new this._olm.Session(); - session.unpickle(this._pickleKey, this.data.session); - return session; - } - - unload(olmSession) { - olmSession.free(); - } - - save(olmSession) { - this.data.session = olmSession.pickle(this._pickleKey); - this.isModified = true; - } -} - // decryption helper for a single senderKey class SenderKeyDecryption { constructor(senderKey, sessions, olm, timestamp) { diff --git a/src/matrix/e2ee/olm/Session.js b/src/matrix/e2ee/olm/Session.js new file mode 100644 index 00000000..9b5f4db0 --- /dev/null +++ b/src/matrix/e2ee/olm/Session.js @@ -0,0 +1,58 @@ +/* +Copyright 2020 The Matrix.org Foundation C.I.C. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +export function createSessionEntry(olmSession, senderKey, timestamp, pickleKey) { + return { + session: olmSession.pickle(pickleKey), + sessionId: olmSession.session_id(), + senderKey, + lastUsed: timestamp, + }; +} + +export class Session { + constructor(data, pickleKey, olm, isNew = false) { + this.data = data; + this._olm = olm; + this._pickleKey = pickleKey; + this.isNew = isNew; + this.isModified = isNew; + } + + static create(senderKey, olmSession, olm, pickleKey, timestamp) { + const data = createSessionEntry(olmSession, senderKey, timestamp, pickleKey); + return new Session(data, pickleKey, olm, true); + } + + get id() { + return this.data.sessionId; + } + + load() { + const session = new this._olm.Session(); + session.unpickle(this._pickleKey, this.data.session); + return session; + } + + unload(olmSession) { + olmSession.free(); + } + + save(olmSession) { + this.data.session = olmSession.pickle(this._pickleKey); + this.isModified = true; + } +}