Changeset View
Changeset View
Standalone View
Standalone View
src/key.cpp
Show First 20 Lines • Show All 94 Lines • ▼ Show 20 Lines | |||||
* | * | ||||
* privkey must point to an output buffer of length at least | * privkey must point to an output buffer of length at least | ||||
* CKey::SIZE bytes. privkeylen must initially be set to the size of | * CKey::SIZE bytes. privkeylen must initially be set to the size of | ||||
* the privkey buffer. Upon return it will be set to the number of bytes used in | * the privkey buffer. Upon return it will be set to the number of bytes used in | ||||
* the buffer. key32 must point to a 32-byte raw private key. | * the buffer. key32 must point to a 32-byte raw private key. | ||||
*/ | */ | ||||
static int ec_privkey_export_der(const secp256k1_context *ctx, uint8_t *privkey, | static int ec_privkey_export_der(const secp256k1_context *ctx, uint8_t *privkey, | ||||
size_t *privkeylen, const uint8_t *key32, | size_t *privkeylen, const uint8_t *key32, | ||||
int compressed) { | bool compressed) { | ||||
assert(*privkeylen >= CKey::SIZE); | assert(*privkeylen >= CKey::SIZE); | ||||
secp256k1_pubkey pubkey; | secp256k1_pubkey pubkey; | ||||
size_t pubkeylen = 0; | size_t pubkeylen = 0; | ||||
if (!secp256k1_ec_pubkey_create(ctx, &pubkey, key32)) { | if (!secp256k1_ec_pubkey_create(ctx, &pubkey, key32)) { | ||||
*privkeylen = 0; | *privkeylen = 0; | ||||
return 0; | return 0; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 83 Lines • ▼ Show 20 Lines | |||||
CPrivKey CKey::GetPrivKey() const { | CPrivKey CKey::GetPrivKey() const { | ||||
assert(fValid); | assert(fValid); | ||||
CPrivKey privkey; | CPrivKey privkey; | ||||
int ret; | int ret; | ||||
size_t privkeylen; | size_t privkeylen; | ||||
privkey.resize(SIZE); | privkey.resize(SIZE); | ||||
privkeylen = SIZE; | privkeylen = SIZE; | ||||
ret = ec_privkey_export_der( | ret = ec_privkey_export_der(secp256k1_context_sign, privkey.data(), | ||||
secp256k1_context_sign, privkey.data(), &privkeylen, begin(), | &privkeylen, begin(), fCompressed); | ||||
fCompressed ? SECP256K1_EC_COMPRESSED : SECP256K1_EC_UNCOMPRESSED); | |||||
assert(ret); | assert(ret); | ||||
privkey.resize(privkeylen); | privkey.resize(privkeylen); | ||||
return privkey; | return privkey; | ||||
} | } | ||||
CPubKey CKey::GetPubKey() const { | CPubKey CKey::GetPubKey() const { | ||||
assert(fValid); | assert(fValid); | ||||
secp256k1_pubkey pubkey; | secp256k1_pubkey pubkey; | ||||
▲ Show 20 Lines • Show All 235 Lines • Show Last 20 Lines |