Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: net/quic/test_tools/crypto_test_utils_openssl.cc

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/quic/test_tools/crypto_test_utils.h" 5 #include "net/quic/test_tools/crypto_test_utils.h"
6 6
7 #include <openssl/bn.h> 7 #include <openssl/bn.h>
8 #include <openssl/ec.h> 8 #include <openssl/ec.h>
9 #include <openssl/ecdsa.h> 9 #include <openssl/ecdsa.h>
10 #include <openssl/evp.h> 10 #include <openssl/evp.h>
11 #include <openssl/obj_mac.h> 11 #include <openssl/obj_mac.h>
12 #include <openssl/sha.h> 12 #include <openssl/sha.h>
13 13
14 #include "crypto/openssl_util.h" 14 #include "crypto/openssl_util.h"
15 #include "crypto/secure_hash.h" 15 #include "crypto/secure_hash.h"
16 #include "net/quic/crypto/channel_id.h" 16 #include "net/quic/crypto/channel_id.h"
17 17
18 using base::StringPiece; 18 using base::StringPiece;
19 using std::string; 19 using std::string;
20 20
21 namespace { 21 namespace {
22 22
23 void EvpMdCtxCleanUp(EVP_MD_CTX* ctx) { 23 void EvpMdCtxCleanUp(EVP_MD_CTX* ctx) {
24 (void)EVP_MD_CTX_cleanup(ctx); 24 (void)EVP_MD_CTX_cleanup(ctx);
25 } 25 }
26 26
27 } // namespace anonymous 27 } // namespace anonymous
28 28
29 namespace net { 29 namespace net {
30 30
31 namespace test { 31 namespace test {
32 32
33 class TestChannelIDSigner : public ChannelIDSigner { 33 class TestChannelIDSigner : public ChannelIDSigner {
34 public: 34 public:
35 virtual ~TestChannelIDSigner() { } 35 virtual ~TestChannelIDSigner() {}
36 36
37 // ChannelIDSigner implementation. 37 // ChannelIDSigner implementation.
38 38
39 virtual bool Sign(const string& hostname, 39 virtual bool Sign(const string& hostname,
40 StringPiece signed_data, 40 StringPiece signed_data,
41 string* out_key, 41 string* out_key,
42 string* out_signature) OVERRIDE { 42 string* out_signature) OVERRIDE {
43 crypto::ScopedOpenSSL<EVP_PKEY, EVP_PKEY_free> ecdsa_key( 43 crypto::ScopedOpenSSL<EVP_PKEY, EVP_PKEY_free> ecdsa_key(
44 HostnameToKey(hostname)); 44 HostnameToKey(hostname));
45 45
46 *out_key = SerializeKey(ecdsa_key.get()); 46 *out_key = SerializeKey(ecdsa_key.get());
47 if (out_key->empty()) { 47 if (out_key->empty()) {
48 return false; 48 return false;
49 } 49 }
50 50
51 EVP_MD_CTX md_ctx; 51 EVP_MD_CTX md_ctx;
52 EVP_MD_CTX_init(&md_ctx); 52 EVP_MD_CTX_init(&md_ctx);
53 crypto::ScopedOpenSSL<EVP_MD_CTX, EvpMdCtxCleanUp> 53 crypto::ScopedOpenSSL<EVP_MD_CTX, EvpMdCtxCleanUp> md_ctx_cleanup(&md_ctx);
54 md_ctx_cleanup(&md_ctx);
55 54
56 if (EVP_DigestSignInit(&md_ctx, NULL, EVP_sha256(), NULL, 55 if (EVP_DigestSignInit(
57 ecdsa_key.get()) != 1) { 56 &md_ctx, NULL, EVP_sha256(), NULL, ecdsa_key.get()) != 1) {
58 return false; 57 return false;
59 } 58 }
60 59
61 EVP_DigestUpdate(&md_ctx, ChannelIDVerifier::kContextStr, 60 EVP_DigestUpdate(&md_ctx,
61 ChannelIDVerifier::kContextStr,
62 strlen(ChannelIDVerifier::kContextStr) + 1); 62 strlen(ChannelIDVerifier::kContextStr) + 1);
63 EVP_DigestUpdate(&md_ctx, ChannelIDVerifier::kClientToServerStr, 63 EVP_DigestUpdate(&md_ctx,
64 ChannelIDVerifier::kClientToServerStr,
64 strlen(ChannelIDVerifier::kClientToServerStr) + 1); 65 strlen(ChannelIDVerifier::kClientToServerStr) + 1);
65 EVP_DigestUpdate(&md_ctx, signed_data.data(), signed_data.size()); 66 EVP_DigestUpdate(&md_ctx, signed_data.data(), signed_data.size());
66 67
67 size_t sig_len; 68 size_t sig_len;
68 if (!EVP_DigestSignFinal(&md_ctx, NULL, &sig_len)) { 69 if (!EVP_DigestSignFinal(&md_ctx, NULL, &sig_len)) {
69 return false; 70 return false;
70 } 71 }
71 72
72 scoped_ptr<uint8[]> der_sig(new uint8[sig_len]); 73 scoped_ptr<uint8[]> der_sig(new uint8[sig_len]);
73 if (!EVP_DigestSignFinal(&md_ctx, der_sig.get(), &sig_len)) { 74 if (!EVP_DigestSignFinal(&md_ctx, der_sig.get(), &sig_len)) {
74 return false; 75 return false;
75 } 76 }
76 77
77 uint8* derp = der_sig.get(); 78 uint8* derp = der_sig.get();
78 crypto::ScopedOpenSSL<ECDSA_SIG, ECDSA_SIG_free> sig( 79 crypto::ScopedOpenSSL<ECDSA_SIG, ECDSA_SIG_free> sig(
79 d2i_ECDSA_SIG(NULL, const_cast<const uint8**>(&derp), sig_len)); 80 d2i_ECDSA_SIG(NULL, const_cast<const uint8**>(&derp), sig_len));
80 if (sig.get() == NULL) { 81 if (sig.get() == NULL) {
81 return false; 82 return false;
82 } 83 }
83 84
84 // The signature consists of a pair of 32-byte numbers. 85 // The signature consists of a pair of 32-byte numbers.
85 static const size_t kSignatureLength = 32 * 2; 86 static const size_t kSignatureLength = 32 * 2;
86 scoped_ptr<uint8[]> signature(new uint8[kSignatureLength]); 87 scoped_ptr<uint8[]> signature(new uint8[kSignatureLength]);
87 memset(signature.get(), 0, kSignatureLength); 88 memset(signature.get(), 0, kSignatureLength);
88 BN_bn2bin(sig.get()->r, signature.get() + 32 - BN_num_bytes(sig.get()->r)); 89 BN_bn2bin(sig.get()->r, signature.get() + 32 - BN_num_bytes(sig.get()->r));
89 BN_bn2bin(sig.get()->s, signature.get() + 64 - BN_num_bytes(sig.get()->s)); 90 BN_bn2bin(sig.get()->s, signature.get() + 64 - BN_num_bytes(sig.get()->s));
90 91
91 *out_signature = string(reinterpret_cast<char*>(signature.get()), 92 *out_signature =
92 kSignatureLength); 93 string(reinterpret_cast<char*>(signature.get()), kSignatureLength);
93 94
94 return true; 95 return true;
95 } 96 }
96 97
97 virtual string GetKeyForHostname(const string& hostname) OVERRIDE { 98 virtual string GetKeyForHostname(const string& hostname) OVERRIDE {
98 crypto::ScopedOpenSSL<EVP_PKEY, EVP_PKEY_free> ecdsa_key( 99 crypto::ScopedOpenSSL<EVP_PKEY, EVP_PKEY_free> ecdsa_key(
99 HostnameToKey(hostname)); 100 HostnameToKey(hostname));
100 return SerializeKey(ecdsa_key.get()); 101 return SerializeKey(ecdsa_key.get());
101 } 102 }
102 103
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 }; 165 };
165 166
166 // static 167 // static
167 ChannelIDSigner* CryptoTestUtils::ChannelIDSignerForTesting() { 168 ChannelIDSigner* CryptoTestUtils::ChannelIDSignerForTesting() {
168 return new TestChannelIDSigner(); 169 return new TestChannelIDSigner();
169 } 170 }
170 171
171 } // namespace test 172 } // namespace test
172 173
173 } // namespace net 174 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698