changeset 30150e936a8c in /home/hg/repos/gajim-plugins
author: lovetox <[email protected]>
branches:
details:gajim-plugins?cmd=changeset;node=30150e936a8c
description: Dont generate new SignedPreKey for every publish
A SignedPreKey should only be generated once at install time
A SignedPreKey rotation can be implemented at a later point.
To generate a new SignedPreKey for every publish is overkill
and there is missing a deletion mechansim for old, not used,
SignedPreKeys, which is a potential security risk.
diffstat:
omemo/omemo/liteaxolotlstore.py | 6 ++++++
omemo/omemo/litesignedprekeystore.py | 9 +++++++++
omemo/omemo/state.py | 6 ++----
3 files changed, 17 insertions(+), 4 deletions(-)
diffs (55 lines):
diff -r f0fc5cb50a8c -r 30150e936a8c omemo/omemo/liteaxolotlstore.py
--- a/omemo/omemo/liteaxolotlstore.py Sat Jul 23 02:26:58 2016 +0200
+++ b/omemo/omemo/liteaxolotlstore.py Sat Jul 23 14:10:36 2016 +0200
@@ -41,6 +41,7 @@
except(AttributeError):
raise AssertionError('Expected a sqlite3.Connection got ' +
str(connection))
+
self.identityKeyStore = LiteIdentityKeyStore(connection)
self.preKeyStore = LitePreKeyStore(connection)
self.signedPreKeyStore = LiteSignedPreKeyStore(connection)
@@ -58,6 +59,11 @@
DEFAULT_PREKEY_AMOUNT)
self.storeLocalData(registrationId, identityKeyPair)
+ signedPreKey = KeyHelper.generateSignedPreKey(
+ identityKeyPair, KeyHelper.getRandomSequence(65536))
+
+ self.store.storeSignedPreKey(signedPreKey.getId(), signedPreKey)
+
for preKey in preKeys:
self.storePreKey(preKey.getId(), preKey)
diff -r f0fc5cb50a8c -r 30150e936a8c omemo/omemo/litesignedprekeystore.py
--- a/omemo/omemo/litesignedprekeystore.py Sat Jul 23 02:26:58 2016 +0200
+++ b/omemo/omemo/litesignedprekeystore.py Sat Jul 23 14:10:36 2016 +0200
@@ -75,3 +75,12 @@
cursor = self.dbConn.cursor()
cursor.execute(q, (signedPreKeyId, ))
self.dbConn.commit()
+
+ def loadCurrentSignedPreKey(self):
+ q = "SELECT prekey_id FROM signed_prekeys " \
+ "WHERE _id = (SELECT MAX(_id) FROM signed_prekeys)"
+
+ cursor = self.dbConn.cursor()
+ cursor.execute(q)
+ result = cursor.fetchone()
+ return result[0]
diff -r f0fc5cb50a8c -r 30150e936a8c omemo/omemo/state.py
--- a/omemo/omemo/state.py Sat Jul 23 02:26:58 2016 +0200
+++ b/omemo/omemo/state.py Sat Jul 23 14:10:36 2016 +0200
@@ -155,10 +155,8 @@
identityKeyPair = self.store.getIdentityKeyPair()
- signedPreKey = KeyHelper.generateSignedPreKey(
- identityKeyPair, KeyHelper.getRandomSequence(65536))
-
- self.store.storeSignedPreKey(signedPreKey.getId(), signedPreKey)
+ signedPreKey = self.store.loadSignedPreKey(
+ self.store.signedPreKeyStore.loadCurrentSignedPreKey())
result = {
'signedPreKeyId': signedPreKey.getId(),
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits