A SigningKey provides high-level access to the elliptic curve cryptography (ECC) operations and key management.

Constructors

new SigningKey()

new SigningKey(privateKey): SigningKey

Creates a new SigningKey for privateKey.

Parameters

ParameterType
privateKeyBytesLike

Returns

SigningKey

Source

crypto/signing-key.ts:26

Accessors

compressedPublicKey

get compressedPublicKey(): string

The compressed public key.

This will always begin with either the prefix 0x02 or 0x03 and be 68 characters long (the 0x prefix and 33 hexadecimal nibbles)

Returns

string

Source

crypto/signing-key.ts:54


privateKey

get privateKey(): string

The private key.

Returns

string

Source

crypto/signing-key.ts:34


publicKey

get publicKey(): string

The uncompressed public key.

This will always begin with the prefix 0x04 and be 132 characters long (the 0x prefix and 130 hexadecimal nibbles).

Returns

string

Source

crypto/signing-key.ts:44

Methods

computeSharedSecret()

computeSharedSecret(other): string

Returns the ECDH shared secret between this private key and the other key.

The other key may be any type of key, a raw public key, a compressed/uncompressed pubic key or aprivate key.

Best practice is usually to use a cryptographic hash on the returned value before using it as a symetric secret.

Parameters

ParameterTypeDescription
otherBytesLikeThe other key to compute the shared secret with.

Returns

string

The shared secret.

Example

sign1 = new SigningKey(id('some-secret-1'));
sign2 = new SigningKey(id('some-secret-2'));

// Notice that privA.computeSharedSecret(pubB)...
sign1.computeSharedSecret(sign2.publicKey);

// ...is equal to privB.computeSharedSecret(pubA).
sign2.computeSharedSecret(sign1.publicKey);

Source

crypto/signing-key.ts:103


sign()

sign(digest): Signature

Return the signature of the signed digest.

Parameters

ParameterTypeDescription
digestBytesLikeThe data to sign.

Returns

Signature

The signature of the data.

Throws

If the digest is not 32 bytes long.

Source

crypto/signing-key.ts:65


addPoints()

static addPoints(
   p0, 
   p1, 
   compressed?): string

Returns the point resulting from adding the ellipic curve points p0 and p1.

This is not a common function most developers should require, but can be useful for certain privacy-specific techniques.

For example, it is used by QuaiHDWallet to compute child addresses from parent public keys and chain codes.

Parameters

ParameterTypeDescription
p0BytesLikeThe first point to add.
p1BytesLikeThe second point to add.
compressed?booleanWhether to return the compressed public key.

Returns

string

The sum of the points.

Source

crypto/signing-key.ts:205


computePublicKey()

static computePublicKey(key, compressed?): string

Compute the public key for key, optionally compressed.

The key may be any type of key, a raw public key, a compressed/uncompressed public key or private key.

Parameters

ParameterTypeDescription
keyBytesLikeThe key to compute the public key for.
compressed?booleanWhether to return the compressed public key.

Returns

string

The public key.

Example

sign = new SigningKey(id('some-secret'));

// Compute the uncompressed public key for a private key
SigningKey.computePublicKey(sign.privateKey);

// Compute the compressed public key for a private key
SigningKey.computePublicKey(sign.privateKey, true);

// Compute the uncompressed public key
SigningKey.computePublicKey(sign.publicKey, false);

// Compute the Compressed a public key
SigningKey.computePublicKey(sign.publicKey, true);

Source

crypto/signing-key.ts:135


recoverPublicKey()

static recoverPublicKey(digest, signature): string

Returns the public key for the private key which produced the signature for the given digest.

Parameters

ParameterTypeDescription
digestBytesLikeThe data that was signed.
signatureSignatureLikeThe signature of the data.

Returns

string

The public key.

Example

key = new SigningKey(id('some-secret'));
digest = id('hello world');
sig = key.sign(digest);

// Notice the signer public key...
key.publicKey;

// ...is equal to the recovered public key
SigningKey.recoverPublicKey(digest, sig);

Source

crypto/signing-key.ts:177