| OLD | NEW |
| 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> |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 uint8* derp = der_sig.get(); | 57 uint8* derp = der_sig.get(); |
| 58 crypto::ScopedECDSA_SIG sig( | 58 crypto::ScopedECDSA_SIG sig( |
| 59 d2i_ECDSA_SIG(nullptr, const_cast<const uint8**>(&derp), sig_len)); | 59 d2i_ECDSA_SIG(nullptr, const_cast<const uint8**>(&derp), sig_len)); |
| 60 if (sig.get() == nullptr) { | 60 if (sig.get() == nullptr) { |
| 61 return false; | 61 return false; |
| 62 } | 62 } |
| 63 | 63 |
| 64 // The signature consists of a pair of 32-byte numbers. | 64 // The signature consists of a pair of 32-byte numbers. |
| 65 static const size_t kSignatureLength = 32 * 2; | 65 static const size_t kSignatureLength = 32 * 2; |
| 66 scoped_ptr<uint8[]> signature(new uint8[kSignatureLength]); | 66 scoped_ptr<uint8[]> signature(new uint8[kSignatureLength]); |
| 67 memset(signature.get(), 0, kSignatureLength); | 67 if (!BN_bn2bin_padded(&signature[0], 32, sig->r) || |
| 68 BN_bn2bin(sig.get()->r, signature.get() + 32 - BN_num_bytes(sig.get()->r)); | 68 !BN_bn2bin_padded(&signature[32], 32, sig->s)) { |
| 69 BN_bn2bin(sig.get()->s, signature.get() + 64 - BN_num_bytes(sig.get()->s)); | 69 return false; |
| 70 } |
| 70 | 71 |
| 71 *out_signature = string(reinterpret_cast<char*>(signature.get()), | 72 *out_signature = string(reinterpret_cast<char*>(signature.get()), |
| 72 kSignatureLength); | 73 kSignatureLength); |
| 73 | 74 |
| 74 return true; | 75 return true; |
| 75 } | 76 } |
| 76 | 77 |
| 77 string SerializeKey() const override { | 78 string SerializeKey() const override { |
| 78 // i2d_PublicKey will produce an ANSI X9.62 public key which, for a P-256 | 79 // i2d_PublicKey will produce an ANSI X9.62 public key which, for a P-256 |
| 79 // key, is 0x04 (meaning uncompressed) followed by the x and y field | 80 // key, is 0x04 (meaning uncompressed) followed by the x and y field |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 }; | 158 }; |
| 158 | 159 |
| 159 // static | 160 // static |
| 160 ChannelIDSource* CryptoTestUtils::ChannelIDSourceForTesting() { | 161 ChannelIDSource* CryptoTestUtils::ChannelIDSourceForTesting() { |
| 161 return new TestChannelIDSource(); | 162 return new TestChannelIDSource(); |
| 162 } | 163 } |
| 163 | 164 |
| 164 } // namespace test | 165 } // namespace test |
| 165 | 166 |
| 166 } // namespace net | 167 } // namespace net |
| OLD | NEW |