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();
 | |
|   };
 | |
| 
 | |
| })();
 |