Commit graph

171 commits

Author SHA1 Message Date
Byron Hambly
1c37230da9
Merge 514268170b into merged_master (Bitcoin PR bitcoin/bitcoin#29133) 2025-11-18 13:27:06 +02:00
Byron Hambly
e2aa52246d
Merge 265250687b into merged_master (Bitcoin PR bitcoin/bitcoin#28455) 2025-11-17 21:16:45 +02:00
Byron Hambly
c44264a9b6
Merge 0f9307c4cb into merged_master (Bitcoin PR bitcoin/bitcoin#28500) 2025-08-04 15:47:42 +02:00
Byron Hambly
2a1d79e0f0 Merge 679f825ba3 into merged_master (Bitcoin PR bitcoin/bitcoin#27479) 2025-06-28 09:46:07 +02:00
Byron Hambly
91316a17b7 Merge 8fc3bcf93d into merged_master (Bitcoin PR bitcoin/bitcoin#27010) 2025-04-05 10:18:32 +02:00
Byron Hambly
e9d7ca4858 Merge 07c54de550 into merged_master (Bitcoin PR bitcoin/bitcoin#26691) 2025-04-02 09:40:04 +02:00
Byron Hambly
b4405ba453 Merge e9262ea32a into merged_master (Bitcoin PR bitcoin/bitcoin#26750) 2025-03-31 16:37:52 +02:00
Byron Hambly
a6f8dc6a86
tidy: fixes for clang tidy ci job 2024-12-04 14:16:45 +02:00
Byron Hambly
5104b4635b Merge 93999a5fbe into merged_master (Bitcoin PR bitcoin/bitcoin#25642) 2024-11-01 13:41:41 +02:00
James Dorfman
ce93bea48c Merge 0cd1a2eff9 into merged_master (Bitcoin PR bitcoin/bitcoin#23595) 2024-08-13 17:56:07 +00:00
James Dorfman
f86857195f Merge 43bb106613 into merged_master (Bitcoin PR bitcoin/bitcoin#24213) 2024-08-01 20:20:30 +00:00
MarcoFalke
fa96d93711
refactor: Allow std::span construction from CKey 2024-01-16 15:29:18 +01:00
Sebastian Falbesoner
fa1d49542e refactor: share and use GenerateRandomKey helper
Making the `GenerateRandomKey` helper available to other modules via
key.{h.cpp} allows us to create random private keys directly at
instantiation of CKey, in contrast to the two-step process of creating
the instance and then having to call `MakeNewKey(...)`.
2023-12-23 13:26:00 +01:00
Pieter Wuille
6ef405ddb1 key: don't allocate secure mem for null (invalid) key
Instead of storing the key material as an std::vector (with secure allocator),
use a secure_unique_ptr to a 32-byte array, and use nullptr for invalid keys.
This means a smaller CKey type, and no secure/dynamic memory usage for invalid
keys.
2023-09-27 15:05:26 -04:00
Byron Hambly
3911e7e2b3
build: fix compilation warnings 2023-09-01 16:39:08 +02:00
Pieter Wuille
eff72a0dff Add ElligatorSwift key creation and ECDH logic
Co-authored-by: Dhruv Mehta <856960+dhruv@users.noreply.github.com>
2023-06-23 14:22:33 -04:00
Byron Hambly
47626b5a64 Merge 623745ca74 into merged_master (Bitcoin PR bitcoin/bitcoin#23912) 2023-06-14 15:44:11 +00:00
Byron Hambly
ab249ee428 Merge c06cda3e48 into merged_master (Bitcoin PR bitcoin/bitcoin#23383)
Kept what we already had since it's a newer version of secp256k1-zkp
2023-06-13 15:44:13 +00:00
Byron Hambly
1beaa601b4 Merge 5ccab7187b into merged_master (Bitcoin PR bitcoin/bitcoin#23394)
- commented out some script tests that need to be fixed
 - commented out feature_taproot.py since it needs significant updates
2023-05-26 09:14:20 +00:00
Byron Hambly
32f69113b5 Merge cb4adbd8ab into merged_master (Bitcoin PR bitcoin/bitcoin#22934) 2023-05-17 13:59:50 +00:00
Byron Hambly
120f8cad78 Merge aecc08f62e into merged_master (Bitcoin PR bitcoin/bitcoin#23409) 2023-05-17 12:01:23 +00:00
Byron Hambly
bedb85c8c6 Merge 829d3e0e71 into merged_master (Bitcoin PR bitcoin/bitcoin#23199) 2023-05-10 13:11:07 +00:00
Byron Hambly
3757afb0bd Merge 01fa1481f9 into merged_master (Bitcoin PR bitcoin/bitcoin#22836) 2023-04-13 11:25:45 +00:00
Byron Hambly
09333e2aca Merge 71797beec5 into merged_master (Bitcoin PR bitcoin/bitcoin#22448) 2023-04-05 13:40:55 +02:00
Sebastian Falbesoner
87f11ef47f refactor: use Hash helper for double-SHA256 calculations 2023-01-31 19:34:35 +01:00
fanquake
07c54de550
Merge bitcoin/bitcoin#26691: Update secp256k1 subtree to libsecp256k1 version 0.2.0
2022917223 Add secp256k1_selftest call (Pieter Wuille)
3bfca788b0 Remove explicit enabling of default modules (Pieter Wuille)
4462cb0498 Adapt to libsecp256k1 API changes (Pieter Wuille)
9d47e7b71b Squashed 'src/secp256k1/' changes from 44c2452fd3..21ffe4b22a (Pieter Wuille)

Pull request description:

  Now that libsecp256k1 has a release (https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2022-December/021271.html), update the subtree to match it.

  The changes themselves are not very impactful for Bitcoin Core, but include:
  * It's no longer needed to specify whether contexts are for signing or verification or both (all contexts support everything), so make use of that in this PR.
  * Verification operations can use the static context now, removing the need for some infrastructure in pubkey.cpp to make sure a context exists.
  * Most modules are now enabled by default, so we can drop explicit enabling for them.
  * CI improvements (in particular, MSVC and more recent MacOS)
  * Introduction of an internal int128 type, which has no effect for GCC/Clang builds, but enables 128-bit multiplication in MSVC, giving a ~20% speedup there (but still slower than GCC/Clang).
  * Release process changes (process documentation, changelog, ...).

ACKs for top commit:
  Sjors:
    ACK 2022917223, but 4462cb0498 could use more eyes on it.
  achow101:
    ACK 2022917223
  jonasnick:
    utACK 2022917223

Tree-SHA512: 8a9fe28852abe74abd6f96fef16a94d5a427b1d99bff4caab1699014d24698aab9b966a5364a46ed1001c07a7c1d825154ed4e6557c7decce952b77330a8616b
2023-01-13 09:40:57 +00:00
Hennadii Stepanov
306ccd4927
scripted-diff: Bump copyright headers
-BEGIN VERIFY SCRIPT-
./contrib/devtools/copyright_header.py update ./
-END VERIFY SCRIPT-

Commits of previous years:
- 2021: f47dda2c58
- 2020: fa0074e2d8
- 2019: aaaaad6ac9
2022-12-24 23:49:50 +00:00
Pieter Wuille
4462cb0498 Adapt to libsecp256k1 API changes
* Use SECP256K1_CONTEXT_NONE when creating signing context, as
  SECP256K1_CONTEXT_SIGN is deprecated and unnecessary.
* Use secp256k1_static_context where applicable.
2022-12-13 15:08:24 -05:00
Antoine Poinsot
fb9faffae3
extended keys: fail to derive too large depth instead of wrapping around
This issue was reported to me by Marco Falke, and found with the
descriptor_parse fuzz target.
2022-08-04 11:32:26 +02:00
Glenn Willen
0fe5e825ad ci: Update for libsecp256k1-zkp API changes 2022-05-25 16:12:00 -07:00
MarcoFalke
facd1fb911
refactor: Use Span of std::byte in CExtKey::SetSeed 2022-04-27 19:53:37 +02:00
laanwj
43bb106613
Merge bitcoin/bitcoin#24213: refactor: use Span in random.*
3ae7791bca refactor: use Span in random.* (pasta)

Pull request description:

  ~This PR does two things~
  1. use a Span<unsigned char> for GetRandBytes and GetStrongRandBytes

  ~2. make GetRand a template for which any integral type can be used, where the default behavior is to return a random integral up to the max of the integral unless a max is provided.
  This simplifies a lot of code from `GetRand(std::numeric_limits<uint64_t>::max()` -> `GetRand<uint64_t>()`~

  MarcoFalke this was inspired by your comment here: https://github.com/bitcoin/bitcoin/pull/24185#issuecomment-1025514263 about using Span, so hopefully I'll be able to get this PR done and merged 😂

  ~Also, if requested I could revert the `GetRand(std::numeric_limits<uint64_t>::max()` -> `GetRand<uint64_t>()` related changes if it ends up causing too many conflicts~

ACKs for top commit:
  laanwj:
    Thank you! Code review re-ACK 3ae7791bca

Tree-SHA512: 12375a83b68b288916ba0de81cfcab4aac14389a66a36811ae850427435eb67dd55e47df9ac3ec47db4e214f4330139e548bec815fff8a3f571484ea558dca79
2022-04-21 16:38:04 +02:00
fanquake
404c53062b
key: use secp256k1_schnorrsig_sign32 over deprecated secp256k1_schnorrsig_sign
The renaming occured in
https://github.com/bitcoin-core/secp256k1/pull/1089.
2022-04-07 22:24:44 +01:00
pasta
3ae7791bca refactor: use Span in random.* 2022-03-23 17:36:33 -05:00
Hennadii Stepanov
f47dda2c58
scripted-diff: Bump copyright headers
-BEGIN VERIFY SCRIPT-
./contrib/devtools/copyright_header.py update ./
-END VERIFY SCRIPT-

Commits of previous years:
* 2020: fa0074e2d8
* 2019: aaaaad6ac9
2021-12-30 19:36:57 +02:00
Pieter Wuille
314195c8be Remove unnecessary cast in CKey::SignSchnorr 2021-12-15 09:20:26 -05:00
Pieter Wuille
2478c6730a Make signing follow BIP340 exactly w.r.t. aux randomness
libsecp256k1's secp256k1_schnorrsig_sign only follows BIP340 exactly
if an aux_rand32 argument is passed. When no randomness is used
(as is the case in the current codebase here), there is no impact
on security between not providing aux_rand32 at all, or providing
an empty one. Yet, for repeatability/testability it is simpler
to always use an all-zero one.
2021-11-12 12:04:20 -05:00
W. J. van der Laan
cb4adbd8ab
Merge bitcoin/bitcoin#22934: Add verification to Sign, SignCompact and SignSchnorr
79fd28cacb Adds verification step to Schnorr and ECDSA signing (amadeuszpawlik)

Pull request description:

  As detailed in #22435, BIP340 defines that during Schnorr signing a verification should be done. This is so that potentially corrupt signage does not leak information about private keys used during the process. This is not followed today as no such verification step is being done. The same is valid for ECDSA signing functions `Sign` and `SignCompact`.
  This PR adds this missing verification step to `SignSchnorr`, `Sign` and `SignCompact`.

ACKs for top commit:
  sipa:
    utACK 79fd28cacb
  laanwj:
    Code review ACK 79fd28cacb
  theStack:
    re-ACK 79fd28cacb

Tree-SHA512: 8fefa26caea577ae8631cc16c4e2f4cc6cfa1c7cf51d45a4a34165636ee290950617a17a19b4237c6f7a841db0e40fd5c36ad12ef43da82507c0e9fb9375ab82
2021-11-09 14:12:41 +01:00
amadeuszpawlik
79fd28cacb Adds verification step to Schnorr and ECDSA signing
As defined in BIP340, a verification step should be executed after
`secp256k1_schnorrsig_sign` to ensure that a potentially corrupted
signature isn't used; using corrupted signatures could reveal
information about the private key used. This applies to ECSDA as
well.

Additionally clears schnorr signature if signing failed.
2021-11-02 17:18:40 +01:00
MarcoFalke
fa93ef5a8a
refactor: Take Span in SetSeed
This makes calling code less verbose and less fragile. Also, by adding
the CKey::data() member function, it is now possible to call HexStr()
with a CKey object.
2021-11-01 14:20:56 +01:00
Sebastian Falbesoner
7fc487afd1 refactor: use {Read,Write}BE32 helpers for BIP32 nChild (de)serialization 2021-10-05 23:53:33 +02:00
Andrew Poelstra
c3643b62a6 Merge d0095727d3 into merged_master (Elements PR pull #1024)
This updates libsecp to the latest API. This involves a sketchy (in
my view) cast of a const pointer to a const one, but (a) it is safe
given the actual usage of this pointer, and (b) I copied it directly
from Core -- see the final (20th) commit of the corresponding PR
https://github.com/bitcoin/bitcoin/pull/22448
2021-09-05 02:00:19 +00:00
Pieter Wuille
56a42f10f4 Stricter BIP32 decoding and test vector 5 2021-08-30 12:02:04 -04:00
Andrew Poelstra
0afcb6d978 Merge 5c2e2afe99 into merged_master (Bitcoin PR bitcoin/bitcoin#21365)
This introduces Taproot wallet support. I fixed all the merge conflicts
and ensured that the tests pass, but this is still using the old sighash
(before Russell/Sanket/I redid it) so is not actually production ready.
Will be fixed when we bring Elements #1002 in.
2021-08-03 20:43:53 +00:00
Pieter Wuille
e4ffb44716 Update secp256k1 subtree to latest upstream + adapt API
The new schnorrsig API requires changing a few arguments.
2021-07-14 14:43:45 -07:00
Andrew Poelstra
3850e85010 Merge 32f1f021bf into merged_master (Bitcoin PR bitcoin/bitcoin#21817) 2021-07-07 02:29:25 +00:00
Andrew Poelstra
617905a928 Merge 34322b7f5c into merged_master (Bitcoin PR #20842) 2021-06-16 18:28:04 +00:00
Andrew Poelstra
27930edc9c Merge 4a540683ec into merged_master (Bitcoin PR #20813) 2021-06-16 14:11:07 +00:00
Pieter Wuille
a91d532338 Add CKey::SignSchnorr function for BIP 340/341 signing 2021-06-12 12:25:28 -07:00
MarcoFalke
faece47c47
refactor: Avoid &foo[0] on C-Style arrays
This is confusing at best when parts of a class use the
redundant operators and other parts do not.
2021-05-04 06:55:30 +02:00