Files
Shade/packages/shade-server/src/store.ts

49 lines
1.4 KiB
TypeScript
Raw Normal View History

/**
* PrekeyStore server-side storage interface for prekey bundles.
*
* The prekey server stores public keys only (never private keys).
*/
export interface PrekeyStore {
/** Save or update an identity for an address */
saveIdentity(
address: string,
identitySigningKey: Uint8Array,
identityDHKey: Uint8Array,
): Promise<void>;
/** Get an identity by address */
getIdentity(
address: string,
): Promise<{ identitySigningKey: Uint8Array; identityDHKey: Uint8Array } | null>;
/** Save or update a signed prekey for an address */
saveSignedPreKey(
address: string,
keyId: number,
publicKey: Uint8Array,
signature: Uint8Array,
): Promise<void>;
/** Get the current signed prekey for an address */
getSignedPreKey(
address: string,
): Promise<{ keyId: number; publicKey: Uint8Array; signature: Uint8Array } | null>;
/** Add one-time prekeys for an address */
saveOneTimePreKeys(
address: string,
keys: Array<{ keyId: number; publicKey: Uint8Array }>,
): Promise<void>;
/** Consume (pop) one one-time prekey for an address. Returns null if none left. */
consumeOneTimePreKey(
address: string,
): Promise<{ keyId: number; publicKey: Uint8Array } | null>;
/** Get remaining one-time prekey count for an address */
getOneTimePreKeyCount(address: string): Promise<number>;
/** Delete all keys for an address */
deleteAll(address: string): Promise<void>;
}