Class Key

Class that implement key-related utility functions.

Constructors

Methods

  • Compresses an uncompressed public key using the elliptic curve secp256k1. This method takes a public key in its uncompressed form and returns a compressed representation of the public key. Elliptic curve public keys can be represented in a shorter form known as compressed format which saves space and still retains the full public key's capabilities.

    The steps involved in the process are:

    1. Parse the uncompressed public key bytes into a secp256k1 Point object.
    2. Serialize the Point into its compressed binary format.
    3. Return the compressed public key as a Buffer object.

    Parameters

    • uncompressedPublicKey: Buffer

      A Buffer containing the uncompressed public key.

    Returns Buffer

    Buffer Returns a Buffer containing the compressed public key.

    Throws

    Error Throws an error if the provided public key cannot be compressed, typically indicating that the key is not valid.

  • Converts a 33-byte Bitcoin public key to a 32-byte x-only public key as used in Taproot. This function checks if the provided public key buffer is already 32 bytes long, in which case it returns the buffer unchanged. If the buffer is 33 bytes long, it assumes that the first byte is the parity byte used for indicating the y-coordinate in traditional SEC1 encoding and removes this byte, thereby converting the public key to an x-only format suitable for use with Bitcoin's Taproot.

    Adopted from https://github.com/ACken2/bip322-js/pull/6 by Czino

    Parameters

    • publicKey: Buffer

      The buffer containing the 33-byte or 32-byte public key to be converted.

    Returns Buffer

    A 32-byte buffer of the x-only public key.

    Throws

    If the public key is neither 32-byte nor 33-byte long

  • Uncompresses a given public key using the elliptic curve secp256k1. This method accepts a compressed public key and attempts to convert it into its uncompressed form. Public keys are often compressed to save space, but certain operations require the full uncompressed key.

    The function operates as follows:

    1. Parse the compressed public key bytes into a secp256k1 Point object.
    2. Serialize the Point into its uncompressed binary format.
    3. Return the uncompressed public key as a Buffer object. If the compressed public key provided is invalid and cannot be uncompressed, the method will throw an error with a descriptive message.

    Parameters

    • compressedPublicKey: Buffer

      A Buffer containing the compressed public key.

    Returns Buffer

    Buffer The uncompressed public key as a Buffer.

    Throws

    Error Throws an error if the provided public key cannot be uncompressed, typically indicating that the key is not valid.