You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
3.3 KiB
JavaScript
121 lines
3.3 KiB
JavaScript
// eslint-disable-next-line func-names
|
|
(function() {
|
|
'use strict';
|
|
|
|
const store = window.SignalProtocolStore.prototype;
|
|
|
|
store.storeContactPreKey = async (pubKey, preKey) => {
|
|
const key = {
|
|
// id: (autoincrement)
|
|
identityKeyString: pubKey,
|
|
publicKey: preKey.publicKey,
|
|
keyId: preKey.keyId,
|
|
};
|
|
|
|
await window.Signal.Data.createOrUpdateContactPreKey(key);
|
|
};
|
|
|
|
store.loadContactPreKey = async pubKey => {
|
|
const preKey = await window.Signal.Data.getContactPreKeyByIdentityKey(pubKey);
|
|
if (preKey) {
|
|
return {
|
|
id: preKey.id,
|
|
keyId: preKey.keyId,
|
|
publicKey: preKey.publicKey,
|
|
identityKeyString: preKey.identityKeyString,
|
|
}
|
|
}
|
|
|
|
window.log.warn('Failed to fetch contact prekey:', pubKey);
|
|
return undefined;
|
|
};
|
|
|
|
store.loadContactPreKeys = async filters => {
|
|
const { keyId, identityKeyString } = filters;
|
|
const keys = await window.Signal.Data.getContactPreKeys(keyId, identityKeyString);
|
|
if (keys) {
|
|
return keys.map(preKey => ({
|
|
id: preKey.id,
|
|
keyId: preKey.keyId,
|
|
publicKey: preKey.publicKey,
|
|
identityKeyString: preKey.identityKeyString,
|
|
}));
|
|
}
|
|
|
|
window.log.warn(
|
|
'Failed to fetch signed prekey with filters',
|
|
filters
|
|
);
|
|
return undefined;
|
|
};
|
|
|
|
store.removeContactPreKey = async pubKey => {
|
|
await window.Signal.Data.removeContactPreKeyByIdentityKey(pubKey);
|
|
};
|
|
|
|
store.clearContactPreKeysStore = async () => {
|
|
await window.Signal.Data.removeAllContactPreKeys();
|
|
};
|
|
|
|
store.storeContactSignedPreKey = async (pubKey, signedPreKey) => {
|
|
const key = {
|
|
// id: (autoincrement)
|
|
identityKeyString: pubKey,
|
|
keyId: signedPreKey.keyId,
|
|
publicKey: signedPreKey.publicKey,
|
|
signature: signedPreKey.signature,
|
|
created_at: Date.now(),
|
|
confirmed: false,
|
|
};
|
|
await window.Signal.Data.createOrUpdateContactSignedPreKey(key);
|
|
};
|
|
|
|
store.loadContactSignedPreKey = async pubKey => {
|
|
const preKey = await window.Signal.Data.getContactSignedPreKeyByIdentityKey(pubKey);
|
|
if (preKey) {
|
|
return {
|
|
id: preKey.id,
|
|
identityKeyString: preKey.identityKeyString,
|
|
publicKey: preKey.publicKey,
|
|
signature: preKey.signature,
|
|
created_at: preKey.created_at,
|
|
keyId: preKey.keyId,
|
|
confirmed: preKey.confirmed,
|
|
};
|
|
}
|
|
window.log.warn('Failed to fetch contact signed prekey:', pubKey);
|
|
return undefined;
|
|
};
|
|
|
|
store.loadContactSignedPreKeys = async filters => {
|
|
const { keyId, identityKeyString } = filters;
|
|
const keys = await window.Signal.Data.getContactSignedPreKeys(keyId, identityKeyString);
|
|
if (keys) {
|
|
return keys.map(preKey => ({
|
|
id: preKey.id,
|
|
identityKeyString: preKey.identityKeyString,
|
|
publicKey: preKey.publicKey,
|
|
signature: preKey.signature,
|
|
created_at: preKey.created_at,
|
|
keyId: preKey.keyId,
|
|
confirmed: preKey.confirmed,
|
|
}));
|
|
}
|
|
|
|
window.log.warn(
|
|
'Failed to fetch contact signed prekey with filters',
|
|
filters
|
|
);
|
|
return undefined;
|
|
};
|
|
|
|
store.removeContactSignedPreKey = async pubKey => {
|
|
await window.Signal.Data.removeContactSignedPreKeyByIdentityKey(pubKey);
|
|
};
|
|
|
|
store.clearContactSignedPreKeysStore = async () => {
|
|
await window.Signal.Data.removeAllContactSignedPreKeys();
|
|
};
|
|
|
|
})();
|