Date: Monday, February 16, 2015 @ 18:07:20 Author: tredaelli Revision: 127801
upgpkg: bitcoin 0.10.0-1 Deleted: bitcoin/trunk/037bfefe6bccbdf656e628a1f4526db8f80c3922.patch bitcoin/trunk/0a94661e8db94e84ecbf1ea45a51fb3c7fb77283.patch bitcoin/trunk/60c51f1c381bbd93c70cfdf41c6688609a7956fc.patch bitcoin/trunk/b8e81b7ccd4490155e3345fc73346ff8c3a77524.patch ------------------------------------------------+ 037bfefe6bccbdf656e628a1f4526db8f80c3922.patch | 43 ------------------- 0a94661e8db94e84ecbf1ea45a51fb3c7fb77283.patch | 50 ----------------------- 60c51f1c381bbd93c70cfdf41c6688609a7956fc.patch | 25 ----------- b8e81b7ccd4490155e3345fc73346ff8c3a77524.patch | 43 ------------------- 4 files changed, 161 deletions(-) Deleted: 037bfefe6bccbdf656e628a1f4526db8f80c3922.patch =================================================================== --- 037bfefe6bccbdf656e628a1f4526db8f80c3922.patch 2015-02-16 17:05:57 UTC (rev 127800) +++ 037bfefe6bccbdf656e628a1f4526db8f80c3922.patch 2015-02-16 17:07:20 UTC (rev 127801) @@ -1,43 +0,0 @@ -From 037bfefe6bccbdf656e628a1f4526db8f80c3922 Mon Sep 17 00:00:00 2001 -From: "Wladimir J. van der Laan" <[email protected]> -Date: Mon, 12 Jan 2015 09:28:24 +0100 -Subject: [PATCH] Improve robustness of DER recoding code - -Add some defensive programming on top of #5634. - -This copies the respective OpenSSL code in ECDSA_verify in -OpenSSL pre-1.0.1k (e.g. https://github.com/openssl/openssl/blob/OpenSSL_1_0_1j/crypto/ecdsa/ecs_vrf.c#L89) -more closely. - -As reported by @sergiodemianlerner. - -Github-Pull: #5640 -Rebased-From: c6b7b29f232c651f898eeffb93f36c8f537c56d2 ---- - src/key.cpp | 13 ++++++++++++- - 1 file changed, 12 insertions(+), 1 deletion(-) - -diff --git a/src/key.cpp b/src/key.cpp -index a845ba1..63332bf 100644 ---- a/src/key.cpp -+++ b/src/key.cpp -@@ -234,7 +234,18 @@ class CECKey { - unsigned char *norm_der = NULL; - ECDSA_SIG *norm_sig = ECDSA_SIG_new(); - const unsigned char* sigptr = &vchSig[0]; -- d2i_ECDSA_SIG(&norm_sig, &sigptr, vchSig.size()); -+ assert(norm_sig); -+ if (d2i_ECDSA_SIG(&norm_sig, &sigptr, vchSig.size()) == NULL) -+ { -+ /* As of OpenSSL 1.0.0p d2i_ECDSA_SIG frees and nulls the pointer on -+ * error. But OpenSSL's own use of this function redundantly frees the -+ * result. As ECDSA_SIG_free(NULL) is a no-op, and in the absence of a -+ * clear contract for the function behaving the same way is more -+ * conservative. -+ */ -+ ECDSA_SIG_free(norm_sig); -+ return false; -+ } - int derlen = i2d_ECDSA_SIG(norm_sig, &norm_der); - ECDSA_SIG_free(norm_sig); - if (derlen <= 0) Deleted: 0a94661e8db94e84ecbf1ea45a51fb3c7fb77283.patch =================================================================== --- 0a94661e8db94e84ecbf1ea45a51fb3c7fb77283.patch 2015-02-16 17:05:57 UTC (rev 127800) +++ 0a94661e8db94e84ecbf1ea45a51fb3c7fb77283.patch 2015-02-16 17:07:20 UTC (rev 127801) @@ -1,50 +0,0 @@ -From 0a94661e8db94e84ecbf1ea45a51fb3c7fb77283 Mon Sep 17 00:00:00 2001 -From: Gregory Maxwell <[email protected]> -Date: Sat, 6 Dec 2014 07:08:02 -0800 -Subject: [PATCH] Disable SSLv3 (in favor of TLS) for the RPC client and - server. - -TLS is subject to downgrade attacks when SSLv3 is available, and - SSLv3 has vulnerabilities. - -The popular solution is to disable SSLv3. On the web this breaks - some tiny number of very old clients. While Bitcoin RPC shouldn't - be exposed to the open Internet, it also shouldn't be exposed to - really old SSL implementations, so it shouldn't be a major issue - for us to disable SSLv3. - -There is more information on the downgrade attacks and disabling - SSLv3 at https://disablessl3.com/ . - -Rebased-From: 683dc4009b2b01699e672f8150c28e2ebe0aae19 ---- - src/rpcclient.cpp | 2 +- - src/rpcserver.cpp | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/rpcclient.cpp b/src/rpcclient.cpp -index 4f3c39c..5e62b71 100644 ---- a/src/rpcclient.cpp -+++ b/src/rpcclient.cpp -@@ -40,7 +40,7 @@ Object CallRPC(const string& strMethod, const Array& params) - bool fUseSSL = GetBoolArg("-rpcssl", false); - asio::io_service io_service; - ssl::context context(io_service, ssl::context::sslv23); -- context.set_options(ssl::context::no_sslv2); -+ context.set_options(ssl::context::no_sslv2 | ssl::context::no_sslv3); - asio::ssl::stream<asio::ip::tcp::socket> sslStream(io_service, context); - SSLIOStreamDevice<asio::ip::tcp> d(sslStream, fUseSSL); - iostreams::stream< SSLIOStreamDevice<asio::ip::tcp> > stream(d); -diff --git a/src/rpcserver.cpp b/src/rpcserver.cpp -index f43acf4..cc9e330 100644 ---- a/src/rpcserver.cpp -+++ b/src/rpcserver.cpp -@@ -539,7 +539,7 @@ void StartRPCThreads() - - if (fUseSSL) - { -- rpc_ssl_context->set_options(ssl::context::no_sslv2); -+ rpc_ssl_context->set_options(ssl::context::no_sslv2 | ssl::context::no_sslv3); - - filesystem::path pathCertFile(GetArg("-rpcsslcertificatechainfile", "server.cert")); - if (!pathCertFile.is_complete()) pathCertFile = filesystem::path(GetDataDir()) / pathCertFile; Deleted: 60c51f1c381bbd93c70cfdf41c6688609a7956fc.patch =================================================================== --- 60c51f1c381bbd93c70cfdf41c6688609a7956fc.patch 2015-02-16 17:05:57 UTC (rev 127800) +++ 60c51f1c381bbd93c70cfdf41c6688609a7956fc.patch 2015-02-16 17:07:20 UTC (rev 127801) @@ -1,25 +0,0 @@ -From 60c51f1c381bbd93c70cfdf41c6688609a7956fc Mon Sep 17 00:00:00 2001 -From: "Wladimir J. van der Laan" <[email protected]> -Date: Sat, 10 Jan 2015 08:58:47 +0100 -Subject: [PATCH] fail immediately on an empty signature - -Github-Pull: #5634 -Rebased-From: 8dccba6a45db0466370726ed462b9da2eae43bce ---- - src/key.cpp | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/key.cpp b/src/key.cpp -index e5943af..a845ba1 100644 ---- a/src/key.cpp -+++ b/src/key.cpp -@@ -227,6 +227,9 @@ class CECKey { - } - - bool Verify(const uint256 &hash, const std::vector<unsigned char>& vchSig) { -+ if (vchSig.empty()) -+ return false; -+ - // New versions of OpenSSL will reject non-canonical DER signatures. de/re-serialize first. - unsigned char *norm_der = NULL; - ECDSA_SIG *norm_sig = ECDSA_SIG_new(); Deleted: b8e81b7ccd4490155e3345fc73346ff8c3a77524.patch =================================================================== --- b8e81b7ccd4490155e3345fc73346ff8c3a77524.patch 2015-02-16 17:05:57 UTC (rev 127800) +++ b8e81b7ccd4490155e3345fc73346ff8c3a77524.patch 2015-02-16 17:07:20 UTC (rev 127801) @@ -1,43 +0,0 @@ -From b8e81b7ccd4490155e3345fc73346ff8c3a77524 Mon Sep 17 00:00:00 2001 -From: Cory Fields <[email protected]> -Date: Fri, 9 Jan 2015 16:39:12 -0500 -Subject: [PATCH] consensus: guard against openssl's new strict DER checks - -New versions of OpenSSL will reject non-canonical DER signatures. However, -it'll happily decode them. Decode then re-encode before verification in order -to ensure that it is properly consumed. - -Github-Pull: #5634 -Rebased-From: 488ed32f2ada1d1dd108fc245d025c4d5f252783 ---- - src/key.cpp | 16 +++++++++++++--- - 1 file changed, 13 insertions(+), 3 deletions(-) - -diff --git a/src/key.cpp b/src/key.cpp -index 5b261bb..e5943af 100644 ---- a/src/key.cpp -+++ b/src/key.cpp -@@ -227,10 +227,20 @@ class CECKey { - } - - bool Verify(const uint256 &hash, const std::vector<unsigned char>& vchSig) { -- // -1 = error, 0 = bad sig, 1 = good -- if (ECDSA_verify(0, (unsigned char*)&hash, sizeof(hash), &vchSig[0], vchSig.size(), pkey) != 1) -+ // New versions of OpenSSL will reject non-canonical DER signatures. de/re-serialize first. -+ unsigned char *norm_der = NULL; -+ ECDSA_SIG *norm_sig = ECDSA_SIG_new(); -+ const unsigned char* sigptr = &vchSig[0]; -+ d2i_ECDSA_SIG(&norm_sig, &sigptr, vchSig.size()); -+ int derlen = i2d_ECDSA_SIG(norm_sig, &norm_der); -+ ECDSA_SIG_free(norm_sig); -+ if (derlen <= 0) - return false; -- return true; -+ -+ // -1 = error, 0 = bad sig, 1 = good -+ bool ret = ECDSA_verify(0, (unsigned char*)&hash, sizeof(hash), norm_der, derlen, pkey) == 1; -+ OPENSSL_free(norm_der); -+ return ret; - } - - bool SignCompact(const uint256 &hash, unsigned char *p64, int &rec) {
