UNPKG

@signalapp/mock-server

Version:
62 lines (61 loc) 3.63 kB
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>;