Documentation Index
Fetch the complete documentation index at: https://docs.qu.ai/llms.txt
Use this file to discover all available pages before exploring further.
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
| Parameter | Type |
|---|
privateKey | BytesLike |
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
The private key.
Returns
string
Source
crypto/signing-key.ts:34
publicKey
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
| Parameter | Type | Description |
|---|
other | BytesLike | The 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()
Return the signature of the signed digest.
Parameters
| Parameter | Type | Description |
|---|
digest | BytesLike | The 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
| Parameter | Type | Description |
|---|
p0 | BytesLike | The first point to add. |
p1 | BytesLike | The second point to add. |
compressed? | boolean | Whether 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
| Parameter | Type | Description |
|---|
key | BytesLike | The key to compute the public key for. |
compressed? | boolean | Whether 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
| Parameter | Type | Description |
|---|
digest | BytesLike | The data that was signed. |
signature | SignatureLike | The 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