diff options
author | Matt Corallo <git@bluematt.me> | 2017-09-20 20:19:14 -0400 |
---|---|---|
committer | MarcoFalke <falke.marco@gmail.com> | 2017-10-03 20:12:07 +0200 |
commit | 75997c3b35db39031a222e2d63da83e67cc9397c (patch) | |
tree | a55618c338b8275925bb301abd2fd3a86927a760 /src/bitcoin-tx.cpp | |
parent | 8d13b4298c1ca83db0a65c8c8a93bd3be9135754 (diff) |
Disallow uncompressed pubkeys in bitcoin-tx [multisig] output adds
Github-Pull: #11377
Rebased-From: 28d4542a0ac77a30a242d0568e580a5b437f53fa
Diffstat (limited to 'src/bitcoin-tx.cpp')
-rw-r--r-- | src/bitcoin-tx.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/bitcoin-tx.cpp b/src/bitcoin-tx.cpp index cff90d13af..0f2c19bd5d 100644 --- a/src/bitcoin-tx.cpp +++ b/src/bitcoin-tx.cpp @@ -310,6 +310,9 @@ static void MutateTxAddOutPubKey(CMutableTransaction& tx, const std::string& str } if (bSegWit) { + if (!pubkey.IsCompressed()) { + throw std::runtime_error("Uncompressed pubkeys are not useable for SegWit outputs"); + } // Call GetScriptForWitness() to build a P2WSH scriptPubKey scriptPubKey = GetScriptForWitness(scriptPubKey); } @@ -377,6 +380,11 @@ static void MutateTxAddOutMultiSig(CMutableTransaction& tx, const std::string& s CScript scriptPubKey = GetScriptForMultisig(required, pubkeys); if (bSegWit) { + for (CPubKey& pubkey : pubkeys) { + if (!pubkey.IsCompressed()) { + throw std::runtime_error("Uncompressed pubkeys are not useable for SegWit outputs"); + } + } // Call GetScriptForWitness() to build a P2WSH scriptPubKey scriptPubKey = GetScriptForWitness(scriptPubKey); } |