UNPKG

@scintilla-network/signatures

Version:

Enhanced signature and key exchange functions for blockchain and crypto applications, including post-quantum algorithms

65 lines (58 loc) 2.81 kB
declare module '@scintilla-network/signatures' { export type Bytes = Uint8Array; export type PublicKey = Bytes; export type PrivateKey = Bytes; export type Signature = Bytes; export type SharedSecret = Bytes; // Classic signatures export namespace classic { export interface SignatureAlgorithm { generateKeyPair(): Promise<{ publicKey: PublicKey; privateKey: PrivateKey }>; sign(message: Bytes, privateKey: PrivateKey): Promise<Signature>; verify(message: Bytes, signature: Signature, publicKey: PublicKey): Promise<boolean>; } export const secp256k1: SignatureAlgorithm; export const ed25519: SignatureAlgorithm; export const bls12_381: SignatureAlgorithm; export const p256: SignatureAlgorithm; export const p384: SignatureAlgorithm; export const p521: SignatureAlgorithm; } // Post-quantum signatures export namespace pq { export interface SignatureAlgorithm { generateKeyPair(): Promise<{ publicKey: PublicKey; privateKey: PrivateKey }>; sign(message: Bytes, privateKey: PrivateKey): Promise<Signature>; verify(message: Bytes, signature: Signature, publicKey: PublicKey): Promise<boolean>; } export const dilithium65: SignatureAlgorithm; export const dilithium87: SignatureAlgorithm; export const sphincs192: SignatureAlgorithm; export const sphincs256: SignatureAlgorithm; } // Key exchange export namespace kex { export interface KeyExchangeAlgorithm { generateKeyPair(): Promise<{ publicKey: PublicKey; privateKey: PrivateKey }>; deriveSharedSecret(privateKey: PrivateKey, peerPublicKey: PublicKey): Promise<SharedSecret>; } export const kyber768: KeyExchangeAlgorithm; export const kyber1024: KeyExchangeAlgorithm; export const ecdh: KeyExchangeAlgorithm; } // Utilities export namespace utils { export function bytesToHex(bytes: Bytes): string; export function hexToBytes(hex: string): Bytes; export function stringToBytes(str: string): Bytes; export function bytesToString(bytes: Bytes): string; export function jsonToBytes(json: any): Bytes; export function bytesToJson<T>(bytes: Bytes): T; export function formatPublicKey(publicKey: PublicKey): string; export function formatPrivateKey(privateKey: PrivateKey): string; export function formatSignature(signature: Signature): string; export function parsePublicKey(formatted: string): PublicKey; export function parsePrivateKey(formatted: string): PrivateKey; export function parseSignature(formatted: string): Signature; } }