wowok
Version:
Wowok Blockchain TypeScript API
42 lines (41 loc) • 2.76 kB
TypeScript
import type { X25519KeyPair, MLKEMKeyPair, PQPreKeyBundle, PQIdentity, EncryptedMessage, SerializedPQSessionState } from "./types.js";
export interface PQSessionStore {
getIdentityKeyPair(): Promise<X25519KeyPair | null>;
setIdentityKeyPair(keyPair: X25519KeyPair): Promise<void>;
getRegistrationId(): Promise<number | null>;
setRegistrationId(id: number): Promise<void>;
getSignedPreKey(keyId: number): Promise<X25519KeyPair | null>;
setSignedPreKey(keyId: number, keyPair: X25519KeyPair): Promise<void>;
getSignedPreKeySignature(keyId: number): Promise<Uint8Array | null>;
setSignedPreKeySignature(keyId: number, sig: Uint8Array): Promise<void>;
getOneTimePreKey(keyId: number): Promise<X25519KeyPair | null>;
setOneTimePreKey(keyId: number, keyPair: X25519KeyPair): Promise<void>;
removeOneTimePreKey(keyId: number): Promise<void>;
getPQPreKey(keyId: number): Promise<MLKEMKeyPair | null>;
setPQPreKey(keyId: number, keyPair: MLKEMKeyPair): Promise<void>;
getPQPreKeySignature(keyId: number): Promise<Uint8Array | null>;
setPQPreKeySignature(keyId: number, sig: Uint8Array): Promise<void>;
getSession(peerAddress: string, peerDeviceId: number): Promise<SerializedPQSessionState | null>;
setSession(peerAddress: string, peerDeviceId: number, state: SerializedPQSessionState): Promise<void>;
removeSession(peerAddress: string, peerDeviceId: number): Promise<void>;
getPeerIdentity(peerAddress: string): Promise<Uint8Array | null>;
setPeerIdentity(peerAddress: string, identityKey: Uint8Array): Promise<void>;
}
export declare class PQSessionCipher {
private store;
private identity;
private getFalcon512KeyPair;
constructor(store: PQSessionStore, getFalcon512KeyPair?: () => Promise<{
publicKey: Uint8Array;
privateKey: Uint8Array;
}>);
ensureIdentity(): Promise<PQIdentity>;
generatePreKeyBundle(signedPreKeyId: number, pqPreKeyId: number, oneTimePreKeyCount: number): Promise<import("./pqxdh.js").GeneratedPreKeyBundle>;
processPreKeyBundle(peerAddress: string, peerDeviceId: number, bundle: PQPreKeyBundle): Promise<void>;
processInitialMessage(peerAddress: string, peerDeviceId: number, ephemeralPublicKey: Uint8Array, mlkemCiphertext: Uint8Array, peerIdentityKey: Uint8Array, signedPreKeyId: number, oneTimePreKeyId: number | null, pqPreKeyId: number): Promise<void>;
encryptMessage(peerAddress: string, plaintext: Uint8Array, peerDeviceId?: number): Promise<EncryptedMessage>;
decryptMessage(peerAddress: string, messageBody: Uint8Array, peerDeviceId?: number): Promise<Uint8Array>;
hasSession(peerAddress: string, peerDeviceId?: number): Promise<boolean>;
private loadSession;
private saveSession;
}