Support for loading, storing, and using kyber keys in decryption
This commit is contained in:
parent
c1580a5eb3
commit
b6445a6af0
49 changed files with 2260 additions and 806 deletions
|
@ -52,6 +52,8 @@ import type {
|
|||
SignedPreKeyIdType,
|
||||
SignedPreKeyType,
|
||||
StoredSignedPreKeyType,
|
||||
KyberPreKeyType,
|
||||
StoredKyberPreKeyType,
|
||||
} from './Interface';
|
||||
import { MINUTE } from '../util/durations';
|
||||
import { getMessageIdForLogging } from '../util/idForLogging';
|
||||
|
@ -73,6 +75,11 @@ const exclusiveInterface: ClientExclusiveInterface = {
|
|||
bulkAddIdentityKeys,
|
||||
getAllIdentityKeys,
|
||||
|
||||
createOrUpdateKyberPreKey,
|
||||
getKyberPreKeyById,
|
||||
bulkAddKyberPreKeys,
|
||||
getAllKyberPreKeys,
|
||||
|
||||
createOrUpdatePreKey,
|
||||
getPreKeyById,
|
||||
bulkAddPreKeys,
|
||||
|
@ -248,6 +255,37 @@ async function getAllIdentityKeys(): Promise<Array<IdentityKeyType>> {
|
|||
return keys.map(key => specToBytes(IDENTITY_KEY_SPEC, key));
|
||||
}
|
||||
|
||||
// Kyber Pre Keys
|
||||
|
||||
const KYBER_PRE_KEY_SPEC = ['data'];
|
||||
async function createOrUpdateKyberPreKey(data: KyberPreKeyType): Promise<void> {
|
||||
const updated: StoredKyberPreKeyType = specFromBytes(
|
||||
KYBER_PRE_KEY_SPEC,
|
||||
data
|
||||
);
|
||||
await channels.createOrUpdateKyberPreKey(updated);
|
||||
}
|
||||
async function getKyberPreKeyById(
|
||||
id: PreKeyIdType
|
||||
): Promise<KyberPreKeyType | undefined> {
|
||||
const data = await channels.getPreKeyById(id);
|
||||
|
||||
return specToBytes(KYBER_PRE_KEY_SPEC, data);
|
||||
}
|
||||
async function bulkAddKyberPreKeys(
|
||||
array: Array<KyberPreKeyType>
|
||||
): Promise<void> {
|
||||
const updated: Array<StoredKyberPreKeyType> = map(array, data =>
|
||||
specFromBytes(KYBER_PRE_KEY_SPEC, data)
|
||||
);
|
||||
await channels.bulkAddKyberPreKeys(updated);
|
||||
}
|
||||
async function getAllKyberPreKeys(): Promise<Array<KyberPreKeyType>> {
|
||||
const keys = await channels.getAllPreKeys();
|
||||
|
||||
return keys.map(key => specToBytes(KYBER_PRE_KEY_SPEC, key));
|
||||
}
|
||||
|
||||
// Pre Keys
|
||||
|
||||
async function createOrUpdatePreKey(data: PreKeyType): Promise<void> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue