ledger-core
Public Member Functions | Static Public Member Functions | List of all members
ledger::core::api::Secp256k1 Class Referenceabstract

#include <Secp256k1.hpp>

+ Inheritance diagram for ledger::core::api::Secp256k1:

Public Member Functions

virtual std::vector< uint8_t > computePubKey (const std::vector< uint8_t > &privKey, bool compress)=0
 
virtual std::vector< uint8_t > computeUncompressedPubKey (const std::vector< uint8_t > &pubKey)=0
 
virtual std::vector< uint8_t > sign (const std::vector< uint8_t > &privKey, const std::vector< uint8_t > &data)=0
 
virtual bool verify (const std::vector< uint8_t > &data, const std::vector< uint8_t > &signature, const std::vector< uint8_t > &pubKey)=0
 

Static Public Member Functions

static std::shared_ptr< Secp256k1createInstance ()
 
static std::shared_ptr< Secp256k1newInstance ()
 

Detailed Description

Class implementing secp256k1 used in Bitcoin.

Member Function Documentation

◆ computePubKey()

virtual std::vector<uint8_t> ledger::core::api::Secp256k1::computePubKey ( const std::vector< uint8_t > &  privKey,
bool  compress 
)
pure virtual

Generates public key from private key.

Parameters
privKey32 byte private key
compressget compressed (35 bytes) or uncompressed (65 bytes)
Returns
public key can be compressed (35 bytes starting with 02 or 03) or un compressed (65 bytes starting with 04)

Implemented in ledger::core::Secp256k1Api.

◆ computeUncompressedPubKey()

virtual std::vector<uint8_t> ledger::core::api::Secp256k1::computeUncompressedPubKey ( const std::vector< uint8_t > &  pubKey)
pure virtual

Generates uncompressed public key from compressed public key.

Parameters
pubKey33 byte private key (starting with 02 or 03)
Returns
uncompressed public key (65 bytes starting with 04)

Implemented in ledger::core::Secp256k1Api.

◆ createInstance()

std::shared_ptr< api::Secp256k1 > ledger::core::api::Secp256k1::createInstance ( )
static

Create an instance of Secp256k1.

Returns
Secp256k1 instance

◆ sign()

virtual std::vector<uint8_t> ledger::core::api::Secp256k1::sign ( const std::vector< uint8_t > &  privKey,
const std::vector< uint8_t > &  data 
)
pure virtual

Signs message using a given private key.

Parameters
privKey32 bytes private key
data32 bytes message to sign
Returns
32 bytes signed message

Implemented in ledger::core::Secp256k1Api.

◆ verify()

virtual bool ledger::core::api::Secp256k1::verify ( const std::vector< uint8_t > &  data,
const std::vector< uint8_t > &  signature,
const std::vector< uint8_t > &  pubKey 
)
pure virtual

Check if message was signed with given signature and public key.

Parameters
data32 bytes signed message
signature32 bytes signature (generated from private key)
oubkey32 bytes public key
Returns
true if message was signed with signature and public key (both issued from same private key)

Implemented in ledger::core::Secp256k1Api.


The documentation for this class was generated from the following files: