@libp2p/interface
Version:
The interface implemented by a libp2p node
270 lines • 8.07 kB
TypeScript
import type { AbortOptions } from './index.ts';
import type { CID } from 'multiformats/cid';
import type { MultihashDigest } from 'multiformats/hashes/interface';
import type { Uint8ArrayList } from 'uint8arraylist';
export type KeyType = 'RSA' | 'Ed25519' | 'secp256k1' | 'ECDSA';
export interface RSAPublicKey {
/**
* The type of this key
*/
readonly type: 'RSA';
/**
* PKIX in ASN1 DER format
*/
readonly raw: Uint8Array;
/**
* The public key as a JSON web key
*/
readonly jwk: JsonWebKey;
/**
* Returns `true` if the passed object matches this key
*/
equals(key?: any): boolean;
/**
* Returns this public key as a Multihash digest.
*
* It contains a sha256 hash of the protobuf version of the public key.
*/
toMultihash(): MultihashDigest<0x12>;
/**
* Return this public key as a CID encoded with the `libp2p-key` codec
*
* The digest contains a sha256 hash of the protobuf version of the public
* key.
*/
toCID(): CID<unknown, 0x72, 0x12, 1>;
/**
* Verify the passed data was signed by the private key corresponding to this
* public key
*/
verify(data: Uint8Array | Uint8ArrayList, sig: Uint8Array, options?: AbortOptions): boolean | Promise<boolean>;
/**
* Returns this key as a multihash with base58btc encoding
*/
toString(): string;
}
export interface Ed25519PublicKey {
/**
* The type of this key
*/
readonly type: 'Ed25519';
/**
* The raw public key bytes
*/
readonly raw: Uint8Array;
/**
* Returns `true` if the passed object matches this key
*/
equals(key?: any): boolean;
/**
* Returns this public key as an identity hash containing the protobuf wrapped
* public key
*/
toMultihash(): MultihashDigest<0x0>;
/**
* Return this public key as a CID encoded with the `libp2p-key` codec
*
* The digest contains an identity hash containing the protobuf wrapped
* version of the public key.
*/
toCID(): CID<unknown, 0x72, 0x0, 1>;
/**
* Verify the passed data was signed by the private key corresponding to this
* public key
*/
verify(data: Uint8Array | Uint8ArrayList, sig: Uint8Array, options?: AbortOptions): boolean | Promise<boolean>;
/**
* Returns this key as a multihash with base58btc encoding
*/
toString(): string;
}
export interface Secp256k1PublicKey {
/**
* The type of this key
*/
readonly type: 'secp256k1';
/**
* The raw public key bytes
*/
readonly raw: Uint8Array;
/**
* Returns `true` if the passed object matches this key
*/
equals(key?: any): boolean;
/**
* Returns this public key as an identity hash containing the protobuf wrapped
* public key
*/
toMultihash(): MultihashDigest<0x0>;
/**
* Return this public key as a CID encoded with the `libp2p-key` codec
*
* The digest contains an identity hash containing the protobuf wrapped
* version of the public key.
*/
toCID(): CID<unknown, 0x72, 0x0, 1>;
/**
* Verify the passed data was signed by the private key corresponding to this
* public key
*/
verify(data: Uint8Array | Uint8ArrayList, sig: Uint8Array, options?: AbortOptions): boolean | Promise<boolean>;
/**
* Returns this key as a multihash with base58btc encoding
*/
toString(): string;
}
export interface ECDSAPublicKey {
/**
* The type of this key
*/
readonly type: 'ECDSA';
/**
* The public key as a DER-encoded PKIMessage
*/
readonly raw: Uint8Array;
/**
* The public key as a JSON web key
*/
readonly jwk: JsonWebKey;
/**
* Returns `true` if the passed object matches this key
*/
equals(key?: any): boolean;
/**
* Returns this public key as an identity hash containing the protobuf wrapped
* public key
*/
toMultihash(): MultihashDigest<0x0>;
/**
* Return this public key as a CID encoded with the `libp2p-key` codec
*
* The digest contains an identity hash containing the protobuf wrapped
* version of the public key.
*/
toCID(): CID<unknown, 0x72, 0x0, 1>;
/**
* Verify the passed data was signed by the private key corresponding to this
* public key
*/
verify(data: Uint8Array | Uint8ArrayList, sig: Uint8Array, options?: AbortOptions): boolean | Promise<boolean>;
/**
* Returns this key as a multihash with base58btc encoding
*/
toString(): string;
}
export type PublicKey = RSAPublicKey | Ed25519PublicKey | Secp256k1PublicKey | ECDSAPublicKey;
/**
* Returns true if the passed argument has type overlap with the `PublicKey`
* interface. Can be used to disambiguate object types.
*/
export declare function isPublicKey(key?: any): key is PublicKey;
/**
* Generic private key interface
*/
export interface RSAPrivateKey {
/**
* The type of this key
*/
readonly type: 'RSA';
/**
* The public key that corresponds to this private key
*/
readonly publicKey: RSAPublicKey;
/**
* PKIX in ASN1 DER format
*/
readonly raw: Uint8Array;
/**
* The private key as a JSON web key
*/
readonly jwk: JsonWebKey;
/**
* Returns `true` if the passed object matches this key
*/
equals(key?: any): boolean;
/**
* Sign the passed data with this private key and return the signature for
* later verification
*/
sign(data: Uint8Array | Uint8ArrayList, options?: AbortOptions): Uint8Array | Promise<Uint8Array>;
}
export interface Ed25519PrivateKey {
/**
* The type of this key
*/
readonly type: 'Ed25519';
/**
* The public key that corresponds to this private key
*/
readonly publicKey: Ed25519PublicKey;
/**
* The raw private key bytes
*/
readonly raw: Uint8Array;
/**
* Returns `true` if the passed object matches this key
*/
equals(key?: any): boolean;
/**
* Sign the passed data with this private key and return the signature for
* later verification
*/
sign(data: Uint8Array | Uint8ArrayList, options?: AbortOptions): Uint8Array | Promise<Uint8Array>;
}
export interface Secp256k1PrivateKey {
/**
* The type of this key
*/
readonly type: 'secp256k1';
/**
* The public key that corresponds to this private key
*/
readonly publicKey: Secp256k1PublicKey;
/**
* The raw private key bytes
*/
readonly raw: Uint8Array;
/**
* Returns `true` if the passed object matches this key
*/
equals(key?: any): boolean;
/**
* Sign the passed data with this private key and return the signature for
* later verification
*/
sign(data: Uint8Array | Uint8ArrayList, options?: AbortOptions): Uint8Array | Promise<Uint8Array>;
}
export interface ECDSAPrivateKey {
/**
* The type of this key
*/
readonly type: 'ECDSA';
/**
* The public key that corresponds to this private key
*/
readonly publicKey: ECDSAPublicKey;
/**
* The private key as a DER-encoded PKIMessage
*/
readonly raw: Uint8Array;
/**
* The private key as a JSON web key
*/
readonly jwk: JsonWebKey;
/**
* Returns `true` if the passed object matches this key
*/
equals(key?: any): boolean;
/**
* Sign the passed data with this private key and return the signature for
* later verification
*/
sign(data: Uint8Array | Uint8ArrayList, options?: AbortOptions): Uint8Array | Promise<Uint8Array>;
}
export type PrivateKey = RSAPrivateKey | Ed25519PrivateKey | Secp256k1PrivateKey | ECDSAPrivateKey;
/**
* Returns true if the passed argument has type overlap with the `PrivateKey`
* interface. Can be used to disambiguate object types.
*/
export declare function isPrivateKey(key?: any): key is PrivateKey;
//# sourceMappingURL=keys.d.ts.map