@signalapp/mock-server
Version:
Mock Signal Server for writing tests
62 lines (61 loc) • 3.63 kB
TypeScript
import { Buffer } from 'buffer';
import { PrivateKey, PublicKey, SenderCertificate } from '@signalapp/libsignal-client';
import { signalservice as Proto } from '../protos/compiled';
import { Attachment } from './data/attachment';
import type { ServerPreKey, ServerSignedPreKey } from './data/schemas';
import { AciString, DeviceId, KyberPreKey, PreKey, SignedPreKey } from './types';
import { ReadonlyDeep } from 'type-fest';
export type EncryptedProvisionMessage = {
body: Buffer<ArrayBuffer>;
ephemeralKey: Buffer<ArrayBuffer>;
};
export type ServerCertificate = {
privateKey: PrivateKey;
certificate: Proto.ServerCertificate.Params;
};
export type Sender = {
readonly aci: AciString;
readonly number?: string;
readonly deviceId: DeviceId;
readonly identityKey: PublicKey;
readonly expires?: number;
};
export declare function encryptProvisionMessage(data: Buffer<ArrayBuffer>, remotePubKey: PublicKey): EncryptedProvisionMessage;
export type EncryptAttachmentOptions = Readonly<{
aesKey: Buffer<ArrayBuffer>;
macKey: Buffer<ArrayBuffer>;
iv: Buffer<ArrayBuffer>;
}>;
export declare function encryptAttachment(cleartext: Buffer<ArrayBuffer>, { aesKey, macKey, iv }?: EncryptAttachmentOptions): Attachment;
export declare function generateServerCertificate(rootKey: PrivateKey): ServerCertificate;
export declare function generateSenderCertificate(serverCert: ServerCertificate, sender: Sender): SenderCertificate;
export declare function deriveAccessKey(profileKey: Uint8Array<ArrayBuffer>): Buffer<ArrayBuffer>;
export declare function deriveMasterKey(accountEntropyPool: string): Buffer<ArrayBuffer>;
export declare function deriveStorageKey(masterKey: Buffer<ArrayBuffer>): Buffer<ArrayBuffer>;
export type DeriveStorageItemKeyOptions = Readonly<{
storageKey: Buffer<ArrayBuffer>;
recordIkm: Buffer<ArrayBuffer> | undefined;
key: Buffer<ArrayBuffer>;
}>;
export declare function deriveStorageItemKey({ storageKey, recordIkm, key, }: DeriveStorageItemKeyOptions): Buffer<ArrayBuffer>;
export declare function decryptStorageManifest(storageKey: Buffer<ArrayBuffer>, manifest: Proto.StorageManifest.Params): Proto.ManifestRecord;
export declare function encryptStorageManifest(storageKey: Buffer<ArrayBuffer>, manifestRecord: Proto.ManifestRecord.Params): Proto.StorageManifest.Params;
export type DecryptStorageItemOptions = Readonly<{
storageKey: Buffer<ArrayBuffer>;
recordIkm: Buffer<ArrayBuffer> | undefined;
item: Proto.StorageItem.Params;
}>;
export declare function decryptStorageItem({ storageKey, recordIkm, item, }: DecryptStorageItemOptions): Proto.StorageRecord;
export type EncryptStorageItemOptions = Readonly<{
storageKey: Buffer<ArrayBuffer>;
key: Buffer<ArrayBuffer>;
recordIkm: Buffer<ArrayBuffer> | undefined;
record: Proto.StorageRecord.Params;
}>;
export declare function encryptStorageItem({ storageKey, key, recordIkm, record, }: EncryptStorageItemOptions): Proto.StorageItem.Params;
export declare function encryptProfileName(profileKey: Uint8Array<ArrayBuffer>, name: string): Buffer<ArrayBuffer>;
export declare function generateAccessKeyVerifier(accessKey: Buffer<ArrayBuffer>): Buffer<ArrayBuffer>;
export declare function decodePreKey({ keyId, publicKey }: ServerPreKey): PreKey;
export declare function decodeSignedPreKey({ keyId, publicKey, signature, }: ServerSignedPreKey): SignedPreKey;
export declare function decodeKyberPreKey({ keyId, publicKey, signature, }: ServerSignedPreKey): KyberPreKey;
export declare function hashRemoteConfig(config: ReadonlyDeep<Array<[string, string]>>): Buffer<ArrayBuffer>;