1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import { _converse } from '@converse/headless/core';
- import { generateFingerprint } from './utils.js';
- export default {
- /**
- * The "omemo" namespace groups methods relevant to OMEMO
- * encryption.
- *
- * @namespace _converse.api.omemo
- * @memberOf _converse.api
- */
- 'omemo': {
- /**
- * The "bundle" namespace groups methods relevant to the user's
- * OMEMO bundle.
- *
- * @namespace _converse.api.omemo.bundle
- * @memberOf _converse.api.omemo
- */
- 'bundle': {
- /**
- * Lets you generate a new OMEMO device bundle
- *
- * @method _converse.api.omemo.bundle.generate
- * @returns {promise} Promise which resolves once we have a result from the server.
- */
- 'generate': async () => {
- // Remove current device
- const devicelist = _converse.devicelists.get(_converse.bare_jid);
- const device_id = _converse.omemo_store.get('device_id');
- if (device_id) {
- const device = devicelist.devices.get(device_id);
- _converse.omemo_store.unset(device_id);
- if (device) {
- await new Promise(done => device.destroy({ 'success': done, 'error': done }));
- }
- devicelist.devices.trigger('remove');
- }
- // Generate new device bundle and publish
- // https://xmpp.org/extensions/attic/xep-0384-0.3.0.html#usecases-announcing
- await _converse.omemo_store.generateBundle();
- await devicelist.publishDevices();
- const device = devicelist.devices.get(_converse.omemo_store.get('device_id'));
- const fp = generateFingerprint(device);
- await _converse.omemo_store.publishBundle();
- return fp;
- }
- }
- }
- }
|