UNPKG

@ucanto/principal

Version:
59 lines 1.97 kB
import { SignerKey, VerifierKey, MulticodecCode, ByteView, DIDKey, SignatureView, Await } from '@ucanto/interface'; import * as Signature from '@ipld/dag-ucan/signature'; export * from '@ucanto/interface'; /** * Integer corresponding to BLS12381G2 byteprefix of the VarSig. */ export type SigAlg = MulticodecCode<typeof Signature.BLS12381G2, 'BLS12381G2'>; /** * Name corresponding to BLS12381G2 algorithm. */ export type Name = 'BLS12381G2'; /** * This interface parametrizes {@link SignerKey} and extends it with BLS specific * details. */ export interface BLSSigner extends SignerKey<SigAlg> { readonly signatureAlgorithm: Name; readonly signatureCode: SigAlg; /** * Multicodec code that corresponds to BLS private key. */ readonly code: MulticodecCode<0x1309, 'bls12-381-private-key'>; readonly signer: BLSSigner; readonly verifier: BLSVerifier; readonly secret: Uint8Array; /** * Encodes keypair into bytes. */ encode(): ByteView<BLSSigner & CryptoKeyPair>; /** * Overrides method to make it more concrete allowing one to use `keys` * without checking if it's a `CryptoKey` or bytes. */ toArchive(): { id: DIDKey; keys: { [Key: DIDKey]: ByteView<SignerKey<SigAlg> & CryptoKey>; }; }; toFilecoinWallet(): string; sign<T>(payload: ByteView<T>): Await<BLSSignature<T>>; } export interface BLSSignature<T = unknown> extends SignatureView<T, SigAlg> { } /** * This interface parametrizes {@link VerifierKey} and extends it with BLS * specific details. */ export interface BLSVerifier extends VerifierKey<SigAlg> { /** * Multicodec code that corresponds to BLS public key. */ readonly code: MulticodecCode<0xeb, 'BLS12-381'>; readonly signatureCode: SigAlg; readonly signatureAlgorithm: Name; publicKey: Uint8Array; toFilecoinAddress(network?: 't' | 'f'): string; } //# sourceMappingURL=type.d.ts.map