瀏覽代碼

Move `publishBundle` to OMEMOStore

updates #497
JC Brand 7 年之前
父節點
當前提交
7959855891
共有 2 個文件被更改,包括 48 次插入51 次删除
  1. 25 27
      dist/converse.js
  2. 23 24
      src/converse-omemo.js

+ 25 - 27
dist/converse.js

@@ -74301,7 +74301,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
               }));
             }).then(plaintext => {
               // TODO remove newly used key before republishing
-              _converse.omemo.publishBundle();
+              _converse.omemo_store.publishBundle();
 
               return _.extend(attrs, {
                 'plaintext': plaintext
@@ -74726,6 +74726,28 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
           return Promise.resolve();
         },
 
+        publishBundle() {
+          const signed_prekey = this.get('signed_prekey');
+          const stanza = $iq({
+            'from': _converse.bare_jid,
+            'type': 'set'
+          }).c('pubsub', {
+            'xmlns': Strophe.NS.PUBSUB
+          }).c('publish', {
+            'node': `${Strophe.NS.OMEMO_BUNDLES}:${this.get('device_id')}`
+          }).c('item').c('bundle', {
+            'xmlns': Strophe.NS.OMEMO
+          }).c('signedPreKeyPublic', {
+            'signedPreKeyId': signed_prekey.keyId
+          }).t(signed_prekey.keyPair.pubKey).up().c('signedPreKeySignature').t(signed_prekey.signature).up().c('identityKey').t(this.get('identity_keypair').pubKey).up().c('prekeys');
+
+          _.forEach(this.get('prekeys').slice(0, _converse.NUM_PREKEYS), prekey => stanza.c('preKeyPublic', {
+            'preKeyId': prekey.keyId
+          }).t(prekey.keyPair.pubKey).up());
+
+          return _converse.api.sendIQ(stanza);
+        },
+
         generateBundle() {
           /* The first thing that needs to happen if a client wants to
            * start using OMEMO is they need to generate an IdentityKey
@@ -74950,31 +74972,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
       _converse.DeviceLists = Backbone.Collection.extend({
         model: _converse.DeviceList
       });
-      _converse.omemo = {
-        publishBundle() {
-          const store = _converse.omemo_store,
-                signed_prekey = store.get('signed_prekey');
-          const stanza = $iq({
-            'from': _converse.bare_jid,
-            'type': 'set'
-          }).c('pubsub', {
-            'xmlns': Strophe.NS.PUBSUB
-          }).c('publish', {
-            'node': `${Strophe.NS.OMEMO_BUNDLES}:${store.get('device_id')}`
-          }).c('item').c('bundle', {
-            'xmlns': Strophe.NS.OMEMO
-          }).c('signedPreKeyPublic', {
-            'signedPreKeyId': signed_prekey.keyId
-          }).t(signed_prekey.keyPair.pubKey).up().c('signedPreKeySignature').t(signed_prekey.signature).up().c('identityKey').t(store.get('identity_keypair').pubKey).up().c('prekeys');
-
-          _.forEach(store.get('prekeys').slice(0, _converse.NUM_PREKEYS), prekey => stanza.c('preKeyPublic', {
-            'preKeyId': prekey.keyId
-          }).t(prekey.keyPair.pubKey).up());
-
-          return _converse.api.sendIQ(stanza);
-        }
-
-      };
+      _converse.omemo = {};
 
       function fetchDeviceLists() {
         return new Promise((resolve, reject) => _converse.devicelists.fetch({
@@ -75097,7 +75095,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
               id = `converse.devicelists-${_converse.bare_jid}`;
 
         _converse.devicelists.browserStorage = new Backbone.BrowserStorage[storage](id);
-        fetchOwnDevices().then(() => restoreOMEMOSession()).then(() => _converse.omemo.publishBundle()).then(() => _converse.emit('OMEMOInitialized')).catch(_.partial(_converse.log, _, Strophe.LogLevel.ERROR));
+        fetchOwnDevices().then(() => restoreOMEMOSession()).then(() => _converse.omemo_store.publishBundle()).then(() => _converse.emit('OMEMOInitialized')).catch(_.partial(_converse.log, _, Strophe.LogLevel.ERROR));
       }
 
       _converse.api.listen.on('afterTearDown', () => {

+ 23 - 24
src/converse-omemo.js

@@ -261,7 +261,7 @@
                                 return this.decryptMessage(_.extend(attrs.encrypted, {'key': aes_data.key, 'tag': aes_data.tag}));
                             }).then(plaintext => {
                                 // TODO remove newly used key before republishing
-                                _converse.omemo.publishBundle()
+                                _converse.omemo_store.publishBundle()
                                 return _.extend(attrs, {'plaintext': plaintext});
                             }).catch((e) => {
                                 this.reportDecryptionError(e);
@@ -656,6 +656,27 @@
                     return Promise.resolve();
                 },
 
+                publishBundle () {
+                    const signed_prekey = this.get('signed_prekey');
+                    const stanza = $iq({
+                        'from': _converse.bare_jid,
+                        'type': 'set'
+                    }).c('pubsub', {'xmlns': Strophe.NS.PUBSUB})
+                        .c('publish', {'node': `${Strophe.NS.OMEMO_BUNDLES}:${this.get('device_id')}`})
+                            .c('item')
+                                .c('bundle', {'xmlns': Strophe.NS.OMEMO})
+                                    .c('signedPreKeyPublic', {'signedPreKeyId': signed_prekey.keyId})
+                                        .t(signed_prekey.keyPair.pubKey).up()
+                                    .c('signedPreKeySignature').t(signed_prekey.signature).up()
+                                    .c('identityKey').t(this.get('identity_keypair').pubKey).up()
+                                    .c('prekeys');
+                    _.forEach(
+                        this.get('prekeys').slice(0, _converse.NUM_PREKEYS),
+                        (prekey) => stanza.c('preKeyPublic', {'preKeyId': prekey.keyId}).t(prekey.keyPair.pubKey).up()
+                    );
+                    return _converse.api.sendIQ(stanza);
+                },
+
                 generateBundle () {
                     /* The first thing that needs to happen if a client wants to
                      * start using OMEMO is they need to generate an IdentityKey
@@ -863,28 +884,6 @@
 
             _converse.omemo = {
 
-                publishBundle () {
-                    const store = _converse.omemo_store,
-                          signed_prekey = store.get('signed_prekey');
-
-                    const stanza = $iq({
-                        'from': _converse.bare_jid,
-                        'type': 'set'
-                    }).c('pubsub', {'xmlns': Strophe.NS.PUBSUB})
-                        .c('publish', {'node': `${Strophe.NS.OMEMO_BUNDLES}:${store.get('device_id')}`})
-                            .c('item')
-                                .c('bundle', {'xmlns': Strophe.NS.OMEMO})
-                                    .c('signedPreKeyPublic', {'signedPreKeyId': signed_prekey.keyId})
-                                        .t(signed_prekey.keyPair.pubKey).up()
-                                    .c('signedPreKeySignature').t(signed_prekey.signature).up()
-                                    .c('identityKey').t(store.get('identity_keypair').pubKey).up()
-                                    .c('prekeys');
-                    _.forEach(
-                        store.get('prekeys').slice(0, _converse.NUM_PREKEYS),
-                        (prekey) => stanza.c('preKeyPublic', {'preKeyId': prekey.keyId}).t(prekey.keyPair.pubKey).up()
-                    );
-                    return _converse.api.sendIQ(stanza);
-                }
             }
 
             function fetchDeviceLists () {
@@ -983,7 +982,7 @@
 
                 fetchOwnDevices()
                     .then(() => restoreOMEMOSession())
-                    .then(() => _converse.omemo.publishBundle())
+                    .then(() => _converse.omemo_store.publishBundle())
                     .then(() => _converse.emit('OMEMOInitialized'))
                     .catch(_.partial(_converse.log, _, Strophe.LogLevel.ERROR));
             }