ecash-lib
Version:
Library for eCash transaction building
54 lines • 2.66 kB
TypeScript
/** Interface to abstract over Elliptic Curve Cryptography */
export interface Ecc {
/** Derive a public key from secret key. */
derivePubkey(seckey: Uint8Array): Uint8Array;
/** Sign an ECDSA signature. msg needs to be a 32-byte hash */
ecdsaSign(seckey: Uint8Array, msg: Uint8Array): Uint8Array;
/**
* Verify an ECDSA signature. msg needs to be a 32-byte hash.
* Throws an exception if the signature is invalid.
**/
ecdsaVerify(sig: Uint8Array, msg: Uint8Array, pk: Uint8Array): void;
/** Sign a Schnorr signature. msg needs to be a 32-byte hash */
schnorrSign(seckey: Uint8Array, msg: Uint8Array): Uint8Array;
/**
* Verify a Schnorr signature. msg needs to be a 32-byte hash.
* Throws an exception if the signature is invalid.
**/
schnorrVerify(sig: Uint8Array, msg: Uint8Array, pk: Uint8Array): void;
/**
* Return whether the given secret key is valid, i.e. whether is of correct
* length (32 bytes) and is on the curve.
*/
isValidSeckey(seckey: Uint8Array): boolean;
/** Add a scalar to a secret key */
seckeyAdd(a: Uint8Array, b: Uint8Array): Uint8Array;
/** Add a scalar to a public key (adding G*b) */
pubkeyAdd(a: Uint8Array, b: Uint8Array): Uint8Array;
/** Sign a ECDSA recoverable signature, includes the recovery ID */
signRecoverable(seckey: Uint8Array, msg: Uint8Array): Uint8Array;
/** Recover the public key of an ECDSA signed signature (with recovery ID) */
recoverSig(sig: Uint8Array, msg: Uint8Array): Uint8Array;
/** Compress an uncompressed public key (must start with 0x04) */
compressPk(pk: Uint8Array): Uint8Array;
}
/** Dummy Ecc impl that always returns 0, useful for measuring tx size */
export declare class EccDummy implements Ecc {
derivePubkey(_seckey: Uint8Array): Uint8Array;
ecdsaSign(_seckey: Uint8Array, _msg: Uint8Array): Uint8Array;
ecdsaVerify(_sig: Uint8Array, _msg: Uint8Array, _pk: Uint8Array): void;
schnorrSign(_seckey: Uint8Array, _msg: Uint8Array): Uint8Array;
schnorrVerify(_sig: Uint8Array, _msg: Uint8Array, _pk: Uint8Array): void;
isValidSeckey(_seckey: Uint8Array): boolean;
seckeyAdd(_a: Uint8Array, _b: Uint8Array): Uint8Array;
pubkeyAdd(_a: Uint8Array, _b: Uint8Array): Uint8Array;
signRecoverable(_seckey: Uint8Array, _msg: Uint8Array): Uint8Array;
recoverSig(_sig: Uint8Array, _msg: Uint8Array): Uint8Array;
compressPk(_pk: Uint8Array): Uint8Array;
}
type FfiEcc = Omit<Ecc, 'compressPk'>;
export declare function __setEcc(ecc: FfiEcc): void;
export declare class Ecc implements Ecc {
}
export {};
//# sourceMappingURL=ecc.d.ts.map