@ecash/lib
Version:
Library for eCash transaction building
52 lines (45 loc) • 1.49 kB
text/typescript
// Copyright (c) 2024 The Bitcoin developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
export interface Hasher {
update: (data: Uint8Array) => void;
finalize: () => Uint8Array;
clone: () => Hasher;
free: () => void;
}
type HasherClass = { new (): Hasher };
interface EcashLibHashes {
sha256?: (data: Uint8Array) => Uint8Array;
sha256d?: (data: Uint8Array) => Uint8Array;
shaRmd160?: (data: Uint8Array) => Uint8Array;
sha512?: (data: Uint8Array) => Uint8Array;
Sha256H?: HasherClass;
Sha512H?: HasherClass;
}
const HASHES: EcashLibHashes = {};
export function sha256(data: Uint8Array): Uint8Array {
return HASHES.sha256!(data);
}
export function sha256d(data: Uint8Array): Uint8Array {
return HASHES.sha256d!(data);
}
export function shaRmd160(data: Uint8Array): Uint8Array {
return HASHES.shaRmd160!(data);
}
export function sha512(data: Uint8Array): Uint8Array {
return HASHES.sha512!(data);
}
export function sha256Hasher(): Hasher {
return new HASHES.Sha256H!();
}
export function sha512Hasher(): Hasher {
return new HASHES.Sha512H!();
}
export function __setHashes(hashes: EcashLibHashes) {
HASHES.sha256 = hashes.sha256;
HASHES.sha256d = hashes.sha256d;
HASHES.shaRmd160 = hashes.shaRmd160;
HASHES.sha512 = hashes.sha512;
HASHES.Sha256H = hashes.Sha256H;
HASHES.Sha512H = hashes.Sha512H;
}