mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-12 23:18:14 +01:00
Merge #10657: Utils: Improvements to ECDSA key-handling code
63179d0Scope the ECDSA constant sizes to CPubKey / CKey classes (Jack Grigg)1ce9f0aEnsure that ECDSA constant sizes are correctly-sized (Jack Grigg)48abe78Remove redundant `= 0` initialisations (Jack Grigg)17fa391Specify ECDSA constant sizes as constants (Jack Grigg)e4a1086Update Debian copyright list (Jack Grigg)e181dbeAdd comments (Jack Grigg)a3603acFix potential overflows in ECDSA DER parsers (Jack Grigg) Pull request description: Mostly trivial, but includes fixes to potential overflows in the ECDSA DER parsers. Cherry-picked from Zcash PR https://github.com/zcash/zcash/pull/2335 Tree-SHA512: 8fcbd51b0bd6723e5d33fa5d592f7cb68ed182796a9b837ecc8217991ad69d6c970258617dc00eb378c8caa4cec5d6b304d9d2c066acd40cda98e4da68e0caa4
This commit is contained in:
28
src/key.h
28
src/key.h
@@ -1,5 +1,6 @@
|
||||
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||
// Copyright (c) 2009-2016 The Bitcoin Core developers
|
||||
// Copyright (c) 2017 The Zcash developers
|
||||
// Distributed under the MIT software license, see the accompanying
|
||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||
|
||||
@@ -15,25 +16,30 @@
|
||||
#include <vector>
|
||||
|
||||
|
||||
/**
|
||||
* secp256k1:
|
||||
* const unsigned int PRIVATE_KEY_SIZE = 279;
|
||||
* const unsigned int PUBLIC_KEY_SIZE = 65;
|
||||
* const unsigned int SIGNATURE_SIZE = 72;
|
||||
*
|
||||
* see www.keylength.com
|
||||
* script supports up to 75 for single byte push
|
||||
*/
|
||||
|
||||
/**
|
||||
* secure_allocator is defined in allocators.h
|
||||
* CPrivKey is a serialized private key, with all parameters included (279 bytes)
|
||||
* CPrivKey is a serialized private key, with all parameters included
|
||||
* (PRIVATE_KEY_SIZE bytes)
|
||||
*/
|
||||
typedef std::vector<unsigned char, secure_allocator<unsigned char> > CPrivKey;
|
||||
|
||||
/** An encapsulated private key. */
|
||||
class CKey
|
||||
{
|
||||
public:
|
||||
/**
|
||||
* secp256k1:
|
||||
*/
|
||||
static const unsigned int PRIVATE_KEY_SIZE = 279;
|
||||
static const unsigned int COMPRESSED_PRIVATE_KEY_SIZE = 214;
|
||||
/**
|
||||
* see www.keylength.com
|
||||
* script supports up to 75 for single byte push
|
||||
*/
|
||||
static_assert(
|
||||
PRIVATE_KEY_SIZE >= COMPRESSED_PRIVATE_KEY_SIZE,
|
||||
"COMPRESSED_PRIVATE_KEY_SIZE is larger than PRIVATE_KEY_SIZE");
|
||||
|
||||
private:
|
||||
//! Whether this private key is valid. We check for correctness when modifying the key
|
||||
//! data, so fValid should always correspond to the actual state.
|
||||
|
||||
Reference in New Issue
Block a user