UNPKG

wowok

Version:

Wowok Blockchain TypeScript API

42 lines (41 loc) 2.76 kB
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; }