| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "crypto/rsa_private_key.h" | 5 #include "crypto/rsa_private_key.h" |
| 6 | 6 |
| 7 #include <stdint.h> |
| 8 |
| 7 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 8 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| 9 | 11 |
| 10 namespace { | 12 namespace { |
| 11 | 13 |
| 12 const uint8 kTestPrivateKeyInfo[] = { | 14 const uint8_t kTestPrivateKeyInfo[] = { |
| 13 0x30, 0x82, 0x02, 0x78, 0x02, 0x01, 0x00, 0x30, | 15 0x30, 0x82, 0x02, 0x78, 0x02, 0x01, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, |
| 14 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, | 16 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, |
| 15 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, | 17 0x02, 0x62, 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, |
| 16 0x02, 0x62, 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01, | 18 0x00, 0xb8, 0x7f, 0x2b, 0x20, 0xdc, 0x7c, 0x9b, 0x0c, 0xdc, 0x51, 0x61, |
| 17 0x00, 0x02, 0x81, 0x81, 0x00, 0xb8, 0x7f, 0x2b, | 19 0x99, 0x0d, 0x36, 0x0f, 0xd4, 0x66, 0x88, 0x08, 0x55, 0x84, 0xd5, 0x3a, |
| 18 0x20, 0xdc, 0x7c, 0x9b, 0x0c, 0xdc, 0x51, 0x61, | 20 0xbf, 0x2b, 0xa4, 0x64, 0x85, 0x7b, 0x0c, 0x04, 0x13, 0x3f, 0x8d, 0xf4, |
| 19 0x99, 0x0d, 0x36, 0x0f, 0xd4, 0x66, 0x88, 0x08, | 21 0xbc, 0x38, 0x0d, 0x49, 0xfe, 0x6b, 0xc4, 0x5a, 0xb0, 0x40, 0x53, 0x3a, |
| 20 0x55, 0x84, 0xd5, 0x3a, 0xbf, 0x2b, 0xa4, 0x64, | 22 0xd7, 0x66, 0x09, 0x0f, 0x9e, 0x36, 0x74, 0x30, 0xda, 0x8a, 0x31, 0x4f, |
| 21 0x85, 0x7b, 0x0c, 0x04, 0x13, 0x3f, 0x8d, 0xf4, | 23 0x1f, 0x14, 0x50, 0xd7, 0xc7, 0x20, 0x94, 0x17, 0xde, 0x4e, 0xb9, 0x57, |
| 22 0xbc, 0x38, 0x0d, 0x49, 0xfe, 0x6b, 0xc4, 0x5a, | 24 0x5e, 0x7e, 0x0a, 0xe5, 0xb2, 0x65, 0x7a, 0x89, 0x4e, 0xb6, 0x47, 0xff, |
| 23 0xb0, 0x40, 0x53, 0x3a, 0xd7, 0x66, 0x09, 0x0f, | 25 0x1c, 0xbd, 0xb7, 0x38, 0x13, 0xaf, 0x47, 0x85, 0x84, 0x32, 0x33, 0xf3, |
| 24 0x9e, 0x36, 0x74, 0x30, 0xda, 0x8a, 0x31, 0x4f, | 26 0x17, 0x49, 0xbf, 0xe9, 0x96, 0xd0, 0xd6, 0x14, 0x6f, 0x13, 0x8d, 0xc5, |
| 25 0x1f, 0x14, 0x50, 0xd7, 0xc7, 0x20, 0x94, 0x17, | 27 0xfc, 0x2c, 0x72, 0xba, 0xac, 0xea, 0x7e, 0x18, 0x53, 0x56, 0xa6, 0x83, |
| 26 0xde, 0x4e, 0xb9, 0x57, 0x5e, 0x7e, 0x0a, 0xe5, | 28 0xa2, 0xce, 0x93, 0x93, 0xe7, 0x1f, 0x0f, 0xe6, 0x0f, 0x02, 0x03, 0x01, |
| 27 0xb2, 0x65, 0x7a, 0x89, 0x4e, 0xb6, 0x47, 0xff, | 29 0x00, 0x01, 0x02, 0x81, 0x80, 0x03, 0x61, 0x89, 0x37, 0xcb, 0xf2, 0x98, |
| 28 0x1c, 0xbd, 0xb7, 0x38, 0x13, 0xaf, 0x47, 0x85, | 30 0xa0, 0xce, 0xb4, 0xcb, 0x16, 0x13, 0xf0, 0xe6, 0xaf, 0x5c, 0xc5, 0xa7, |
| 29 0x84, 0x32, 0x33, 0xf3, 0x17, 0x49, 0xbf, 0xe9, | 31 0x69, 0x71, 0xca, 0xba, 0x8d, 0xe0, 0x4d, 0xdd, 0xed, 0xb8, 0x48, 0x8b, |
| 30 0x96, 0xd0, 0xd6, 0x14, 0x6f, 0x13, 0x8d, 0xc5, | 32 0x16, 0x93, 0x36, 0x95, 0xc2, 0x91, 0x40, 0x65, 0x17, 0xbd, 0x7f, 0xd6, |
| 31 0xfc, 0x2c, 0x72, 0xba, 0xac, 0xea, 0x7e, 0x18, | 33 0xad, 0x9e, 0x30, 0x28, 0x46, 0xe4, 0x3e, 0xcc, 0x43, 0x78, 0xf9, 0xfe, |
| 32 0x53, 0x56, 0xa6, 0x83, 0xa2, 0xce, 0x93, 0x93, | 34 0x1f, 0x33, 0x23, 0x1e, 0x31, 0x12, 0x9d, 0x3c, 0xa7, 0x08, 0x82, 0x7b, |
| 33 0xe7, 0x1f, 0x0f, 0xe6, 0x0f, 0x02, 0x03, 0x01, | 35 0x7d, 0x25, 0x4e, 0x5e, 0x19, 0xa8, 0x9b, 0xed, 0x86, 0xb2, 0xcb, 0x3c, |
| 34 0x00, 0x01, 0x02, 0x81, 0x80, 0x03, 0x61, 0x89, | 36 0xfe, 0x4e, 0xa1, 0xfa, 0x62, 0x87, 0x3a, 0x17, 0xf7, 0x60, 0xec, 0x38, |
| 35 0x37, 0xcb, 0xf2, 0x98, 0xa0, 0xce, 0xb4, 0xcb, | 37 0x29, 0xe8, 0x4f, 0x34, 0x9f, 0x76, 0x9d, 0xee, 0xa3, 0xf6, 0x85, 0x6b, |
| 36 0x16, 0x13, 0xf0, 0xe6, 0xaf, 0x5c, 0xc5, 0xa7, | 38 0x84, 0x43, 0xc9, 0x1e, 0x01, 0xff, 0xfd, 0xd0, 0x29, 0x4c, 0xfa, 0x8e, |
| 37 0x69, 0x71, 0xca, 0xba, 0x8d, 0xe0, 0x4d, 0xdd, | 39 0x57, 0x0c, 0xc0, 0x71, 0xa5, 0xbb, 0x88, 0x46, 0x29, 0x5c, 0xc0, 0x4f, |
| 38 0xed, 0xb8, 0x48, 0x8b, 0x16, 0x93, 0x36, 0x95, | 40 0x01, 0x02, 0x41, 0x00, 0xf5, 0x83, 0xa4, 0x64, 0x4a, 0xf2, 0xdd, 0x8c, |
| 39 0xc2, 0x91, 0x40, 0x65, 0x17, 0xbd, 0x7f, 0xd6, | 41 0x2c, 0xed, 0xa8, 0xd5, 0x60, 0x5a, 0xe4, 0xc7, 0xcc, 0x61, 0xcd, 0x38, |
| 40 0xad, 0x9e, 0x30, 0x28, 0x46, 0xe4, 0x3e, 0xcc, | 42 0x42, 0x20, 0xd3, 0x82, 0x18, 0xf2, 0x35, 0x00, 0x72, 0x2d, 0xf7, 0x89, |
| 41 0x43, 0x78, 0xf9, 0xfe, 0x1f, 0x33, 0x23, 0x1e, | 43 0x80, 0x67, 0xb5, 0x93, 0x05, 0x5f, 0xdd, 0x42, 0xba, 0x16, 0x1a, 0xea, |
| 42 0x31, 0x12, 0x9d, 0x3c, 0xa7, 0x08, 0x82, 0x7b, | 44 0x15, 0xc6, 0xf0, 0xb8, 0x8c, 0xbc, 0xbf, 0x54, 0x9e, 0xf1, 0xc1, 0xb2, |
| 43 0x7d, 0x25, 0x4e, 0x5e, 0x19, 0xa8, 0x9b, 0xed, | 45 0xb3, 0x8b, 0xb6, 0x26, 0x02, 0x30, 0xc4, 0x81, 0x02, 0x41, 0x00, 0xc0, |
| 44 0x86, 0xb2, 0xcb, 0x3c, 0xfe, 0x4e, 0xa1, 0xfa, | 46 0x60, 0x62, 0x80, 0xe1, 0x22, 0x78, 0xf6, 0x9d, 0x83, 0x18, 0xeb, 0x72, |
| 45 0x62, 0x87, 0x3a, 0x17, 0xf7, 0x60, 0xec, 0x38, | 47 0x45, 0xd7, 0xc8, 0x01, 0x7f, 0xa9, 0xca, 0x8f, 0x7d, 0xd6, 0xb8, 0x31, |
| 46 0x29, 0xe8, 0x4f, 0x34, 0x9f, 0x76, 0x9d, 0xee, | 48 0x2b, 0x84, 0x7f, 0x62, 0xd9, 0xa9, 0x22, 0x17, 0x7d, 0x06, 0x35, 0x6c, |
| 47 0xa3, 0xf6, 0x85, 0x6b, 0x84, 0x43, 0xc9, 0x1e, | 49 0xf3, 0xc1, 0x94, 0x17, 0x85, 0x5a, 0xaf, 0x9c, 0x5c, 0x09, 0x3c, 0xcf, |
| 48 0x01, 0xff, 0xfd, 0xd0, 0x29, 0x4c, 0xfa, 0x8e, | 50 0x2f, 0x44, 0x9d, 0xb6, 0x52, 0x68, 0x5f, 0xf9, 0x59, 0xc8, 0x84, 0x2b, |
| 49 0x57, 0x0c, 0xc0, 0x71, 0xa5, 0xbb, 0x88, 0x46, | 51 0x39, 0x22, 0x8f, 0x02, 0x41, 0x00, 0xb2, 0x04, 0xe2, 0x0e, 0x56, 0xca, |
| 50 0x29, 0x5c, 0xc0, 0x4f, 0x01, 0x02, 0x41, 0x00, | 52 0x03, 0x1a, 0xc0, 0xf9, 0x12, 0x92, 0xa5, 0x6b, 0x42, 0xb8, 0x1c, 0xda, |
| 51 0xf5, 0x83, 0xa4, 0x64, 0x4a, 0xf2, 0xdd, 0x8c, | 53 0x4d, 0x93, 0x9d, 0x5f, 0x6f, 0xfd, 0xc5, 0x58, 0xda, 0x55, 0x98, 0x74, |
| 52 0x2c, 0xed, 0xa8, 0xd5, 0x60, 0x5a, 0xe4, 0xc7, | 54 0xfc, 0x28, 0x17, 0x93, 0x1b, 0x75, 0x9f, 0x50, 0x03, 0x7f, 0x7e, 0xae, |
| 53 0xcc, 0x61, 0xcd, 0x38, 0x42, 0x20, 0xd3, 0x82, | 55 0xc8, 0x95, 0x33, 0x75, 0x2c, 0xd6, 0xa4, 0x35, 0xb8, 0x06, 0x03, 0xba, |
| 54 0x18, 0xf2, 0x35, 0x00, 0x72, 0x2d, 0xf7, 0x89, | 56 0x08, 0x59, 0x2b, 0x17, 0x02, 0xdc, 0x4c, 0x7a, 0x50, 0x01, 0x02, 0x41, |
| 55 0x80, 0x67, 0xb5, 0x93, 0x05, 0x5f, 0xdd, 0x42, | 57 0x00, 0x9d, 0xdb, 0x39, 0x59, 0x09, 0xe4, 0x30, 0xa0, 0x24, 0xf5, 0xdb, |
| 56 0xba, 0x16, 0x1a, 0xea, 0x15, 0xc6, 0xf0, 0xb8, | 58 0x2f, 0xf0, 0x2f, 0xf1, 0x75, 0x74, 0x0d, 0x5e, 0xb5, 0x11, 0x73, 0xb0, |
| 57 0x8c, 0xbc, 0xbf, 0x54, 0x9e, 0xf1, 0xc1, 0xb2, | 59 0x0a, 0xaa, 0x86, 0x4c, 0x0d, 0xff, 0x7e, 0x1d, 0xb4, 0x14, 0xd4, 0x09, |
| 58 0xb3, 0x8b, 0xb6, 0x26, 0x02, 0x30, 0xc4, 0x81, | 60 0x91, 0x33, 0x5a, 0xfd, 0xa0, 0x58, 0x80, 0x9b, 0xbe, 0x78, 0x2e, 0x69, |
| 59 0x02, 0x41, 0x00, 0xc0, 0x60, 0x62, 0x80, 0xe1, | 61 0x82, 0x15, 0x7c, 0x72, 0xf0, 0x7b, 0x18, 0x39, 0xff, 0x6e, 0xeb, 0xc6, |
| 60 0x22, 0x78, 0xf6, 0x9d, 0x83, 0x18, 0xeb, 0x72, | 62 0x86, 0xf5, 0xb4, 0xc7, 0x6f, 0x02, 0x41, 0x00, 0x8d, 0x1a, 0x37, 0x0f, |
| 61 0x45, 0xd7, 0xc8, 0x01, 0x7f, 0xa9, 0xca, 0x8f, | 63 0x76, 0xc4, 0x82, 0xfa, 0x5c, 0xc3, 0x79, 0x35, 0x3e, 0x70, 0x8a, 0xbf, |
| 62 0x7d, 0xd6, 0xb8, 0x31, 0x2b, 0x84, 0x7f, 0x62, | 64 0x27, 0x49, 0xb0, 0x99, 0x63, 0xcb, 0x77, 0x5f, 0xa8, 0x82, 0x65, 0xf6, |
| 63 0xd9, 0xa9, 0x22, 0x17, 0x7d, 0x06, 0x35, 0x6c, | 65 0x03, 0x52, 0x51, 0xf1, 0xae, 0x2e, 0x05, 0xb3, 0xc6, 0xa4, 0x92, 0xd1, |
| 64 0xf3, 0xc1, 0x94, 0x17, 0x85, 0x5a, 0xaf, 0x9c, | 66 0xce, 0x6c, 0x72, 0xfb, 0x21, 0xb3, 0x02, 0x87, 0xe4, 0xfd, 0x61, 0xca, |
| 65 0x5c, 0x09, 0x3c, 0xcf, 0x2f, 0x44, 0x9d, 0xb6, | 67 0x00, 0x42, 0x19, 0xf0, 0xda, 0x5a, 0x53, 0xe3, 0xb1, 0xc5, 0x15, 0xf3}; |
| 66 0x52, 0x68, 0x5f, 0xf9, 0x59, 0xc8, 0x84, 0x2b, | |
| 67 0x39, 0x22, 0x8f, 0x02, 0x41, 0x00, 0xb2, 0x04, | |
| 68 0xe2, 0x0e, 0x56, 0xca, 0x03, 0x1a, 0xc0, 0xf9, | |
| 69 0x12, 0x92, 0xa5, 0x6b, 0x42, 0xb8, 0x1c, 0xda, | |
| 70 0x4d, 0x93, 0x9d, 0x5f, 0x6f, 0xfd, 0xc5, 0x58, | |
| 71 0xda, 0x55, 0x98, 0x74, 0xfc, 0x28, 0x17, 0x93, | |
| 72 0x1b, 0x75, 0x9f, 0x50, 0x03, 0x7f, 0x7e, 0xae, | |
| 73 0xc8, 0x95, 0x33, 0x75, 0x2c, 0xd6, 0xa4, 0x35, | |
| 74 0xb8, 0x06, 0x03, 0xba, 0x08, 0x59, 0x2b, 0x17, | |
| 75 0x02, 0xdc, 0x4c, 0x7a, 0x50, 0x01, 0x02, 0x41, | |
| 76 0x00, 0x9d, 0xdb, 0x39, 0x59, 0x09, 0xe4, 0x30, | |
| 77 0xa0, 0x24, 0xf5, 0xdb, 0x2f, 0xf0, 0x2f, 0xf1, | |
| 78 0x75, 0x74, 0x0d, 0x5e, 0xb5, 0x11, 0x73, 0xb0, | |
| 79 0x0a, 0xaa, 0x86, 0x4c, 0x0d, 0xff, 0x7e, 0x1d, | |
| 80 0xb4, 0x14, 0xd4, 0x09, 0x91, 0x33, 0x5a, 0xfd, | |
| 81 0xa0, 0x58, 0x80, 0x9b, 0xbe, 0x78, 0x2e, 0x69, | |
| 82 0x82, 0x15, 0x7c, 0x72, 0xf0, 0x7b, 0x18, 0x39, | |
| 83 0xff, 0x6e, 0xeb, 0xc6, 0x86, 0xf5, 0xb4, 0xc7, | |
| 84 0x6f, 0x02, 0x41, 0x00, 0x8d, 0x1a, 0x37, 0x0f, | |
| 85 0x76, 0xc4, 0x82, 0xfa, 0x5c, 0xc3, 0x79, 0x35, | |
| 86 0x3e, 0x70, 0x8a, 0xbf, 0x27, 0x49, 0xb0, 0x99, | |
| 87 0x63, 0xcb, 0x77, 0x5f, 0xa8, 0x82, 0x65, 0xf6, | |
| 88 0x03, 0x52, 0x51, 0xf1, 0xae, 0x2e, 0x05, 0xb3, | |
| 89 0xc6, 0xa4, 0x92, 0xd1, 0xce, 0x6c, 0x72, 0xfb, | |
| 90 0x21, 0xb3, 0x02, 0x87, 0xe4, 0xfd, 0x61, 0xca, | |
| 91 0x00, 0x42, 0x19, 0xf0, 0xda, 0x5a, 0x53, 0xe3, | |
| 92 0xb1, 0xc5, 0x15, 0xf3 | |
| 93 }; | |
| 94 | 68 |
| 95 } // namespace | 69 } // namespace |
| 96 | 70 |
| 97 // Generate random private keys with two different sizes. Reimport, then | 71 // Generate random private keys with two different sizes. Reimport, then |
| 98 // export them again. We should get back the same exact bytes. | 72 // export them again. We should get back the same exact bytes. |
| 99 TEST(RSAPrivateKeyUnitTest, InitRandomTest) { | 73 TEST(RSAPrivateKeyUnitTest, InitRandomTest) { |
| 100 scoped_ptr<crypto::RSAPrivateKey> keypair1( | 74 scoped_ptr<crypto::RSAPrivateKey> keypair1( |
| 101 crypto::RSAPrivateKey::Create(1024)); | 75 crypto::RSAPrivateKey::Create(1024)); |
| 102 scoped_ptr<crypto::RSAPrivateKey> keypair2( | 76 scoped_ptr<crypto::RSAPrivateKey> keypair2( |
| 103 crypto::RSAPrivateKey::Create(2048)); | 77 crypto::RSAPrivateKey::Create(2048)); |
| 104 ASSERT_TRUE(keypair1.get()); | 78 ASSERT_TRUE(keypair1.get()); |
| 105 ASSERT_TRUE(keypair2.get()); | 79 ASSERT_TRUE(keypair2.get()); |
| 106 | 80 |
| 107 std::vector<uint8> privkey1; | 81 std::vector<uint8_t> privkey1; |
| 108 std::vector<uint8> privkey2; | 82 std::vector<uint8_t> privkey2; |
| 109 std::vector<uint8> pubkey1; | 83 std::vector<uint8_t> pubkey1; |
| 110 std::vector<uint8> pubkey2; | 84 std::vector<uint8_t> pubkey2; |
| 111 | 85 |
| 112 ASSERT_TRUE(keypair1->ExportPrivateKey(&privkey1)); | 86 ASSERT_TRUE(keypair1->ExportPrivateKey(&privkey1)); |
| 113 ASSERT_TRUE(keypair2->ExportPrivateKey(&privkey2)); | 87 ASSERT_TRUE(keypair2->ExportPrivateKey(&privkey2)); |
| 114 ASSERT_TRUE(keypair1->ExportPublicKey(&pubkey1)); | 88 ASSERT_TRUE(keypair1->ExportPublicKey(&pubkey1)); |
| 115 ASSERT_TRUE(keypair2->ExportPublicKey(&pubkey2)); | 89 ASSERT_TRUE(keypair2->ExportPublicKey(&pubkey2)); |
| 116 | 90 |
| 117 scoped_ptr<crypto::RSAPrivateKey> keypair3( | 91 scoped_ptr<crypto::RSAPrivateKey> keypair3( |
| 118 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(privkey1)); | 92 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(privkey1)); |
| 119 scoped_ptr<crypto::RSAPrivateKey> keypair4( | 93 scoped_ptr<crypto::RSAPrivateKey> keypair4( |
| 120 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(privkey2)); | 94 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(privkey2)); |
| 121 ASSERT_TRUE(keypair3.get()); | 95 ASSERT_TRUE(keypair3.get()); |
| 122 ASSERT_TRUE(keypair4.get()); | 96 ASSERT_TRUE(keypair4.get()); |
| 123 | 97 |
| 124 std::vector<uint8> privkey3; | 98 std::vector<uint8_t> privkey3; |
| 125 std::vector<uint8> privkey4; | 99 std::vector<uint8_t> privkey4; |
| 126 ASSERT_TRUE(keypair3->ExportPrivateKey(&privkey3)); | 100 ASSERT_TRUE(keypair3->ExportPrivateKey(&privkey3)); |
| 127 ASSERT_TRUE(keypair4->ExportPrivateKey(&privkey4)); | 101 ASSERT_TRUE(keypair4->ExportPrivateKey(&privkey4)); |
| 128 | 102 |
| 129 ASSERT_EQ(privkey1.size(), privkey3.size()); | 103 ASSERT_EQ(privkey1.size(), privkey3.size()); |
| 130 ASSERT_EQ(privkey2.size(), privkey4.size()); | 104 ASSERT_EQ(privkey2.size(), privkey4.size()); |
| 131 ASSERT_TRUE(0 == memcmp(&privkey1.front(), &privkey3.front(), | 105 ASSERT_TRUE(0 == memcmp(&privkey1.front(), &privkey3.front(), |
| 132 privkey1.size())); | 106 privkey1.size())); |
| 133 ASSERT_TRUE(0 == memcmp(&privkey2.front(), &privkey4.front(), | 107 ASSERT_TRUE(0 == memcmp(&privkey2.front(), &privkey4.front(), |
| 134 privkey2.size())); | 108 privkey2.size())); |
| 135 } | 109 } |
| 136 | 110 |
| 137 // Test Copy() method. | 111 // Test Copy() method. |
| 138 TEST(RSAPrivateKeyUnitTest, CopyTest) { | 112 TEST(RSAPrivateKeyUnitTest, CopyTest) { |
| 139 std::vector<uint8> input( | 113 std::vector<uint8_t> input(kTestPrivateKeyInfo, |
| 140 kTestPrivateKeyInfo, kTestPrivateKeyInfo + sizeof(kTestPrivateKeyInfo)); | 114 kTestPrivateKeyInfo + sizeof(kTestPrivateKeyInfo)); |
| 141 | 115 |
| 142 scoped_ptr<crypto::RSAPrivateKey> key( | 116 scoped_ptr<crypto::RSAPrivateKey> key( |
| 143 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(input)); | 117 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(input)); |
| 144 | 118 |
| 145 scoped_ptr<crypto::RSAPrivateKey> key_copy(key->Copy()); | 119 scoped_ptr<crypto::RSAPrivateKey> key_copy(key->Copy()); |
| 146 ASSERT_TRUE(key_copy.get()); | 120 ASSERT_TRUE(key_copy.get()); |
| 147 | 121 |
| 148 std::vector<uint8> privkey_copy; | 122 std::vector<uint8_t> privkey_copy; |
| 149 ASSERT_TRUE(key_copy->ExportPrivateKey(&privkey_copy)); | 123 ASSERT_TRUE(key_copy->ExportPrivateKey(&privkey_copy)); |
| 150 ASSERT_EQ(input, privkey_copy); | 124 ASSERT_EQ(input, privkey_copy); |
| 151 } | 125 } |
| 152 | 126 |
| 153 // Test that CreateFromPrivateKeyInfo fails if there is extra data after the RSA | 127 // Test that CreateFromPrivateKeyInfo fails if there is extra data after the RSA |
| 154 // key. | 128 // key. |
| 155 TEST(RSAPrivateKeyUnitTest, ExtraData) { | 129 TEST(RSAPrivateKeyUnitTest, ExtraData) { |
| 156 std::vector<uint8> input( | 130 std::vector<uint8_t> input(kTestPrivateKeyInfo, |
| 157 kTestPrivateKeyInfo, kTestPrivateKeyInfo + sizeof(kTestPrivateKeyInfo)); | 131 kTestPrivateKeyInfo + sizeof(kTestPrivateKeyInfo)); |
| 158 input.push_back(0); | 132 input.push_back(0); |
| 159 | 133 |
| 160 scoped_ptr<crypto::RSAPrivateKey> key( | 134 scoped_ptr<crypto::RSAPrivateKey> key( |
| 161 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(input)); | 135 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(input)); |
| 162 | 136 |
| 163 // Import should fail. | 137 // Import should fail. |
| 164 EXPECT_FALSE(key); | 138 EXPECT_FALSE(key); |
| 165 } | 139 } |
| 166 | 140 |
| 167 TEST(RSAPrivateKeyUnitTest, NotRsaKey) { | 141 TEST(RSAPrivateKeyUnitTest, NotRsaKey) { |
| 168 // Defines a valid P-256 private key. | 142 // Defines a valid P-256 private key. |
| 169 const uint8 kTestEcPrivateKeyInfo[] = { | 143 const uint8_t kTestEcPrivateKeyInfo[] = { |
| 170 0x30, 0x81, 0x87, 0x02, 0x01, 0x00, 0x30, 0x13, 0x06, 0x07, 0x2A, 0x86, | 144 0x30, 0x81, 0x87, 0x02, 0x01, 0x00, 0x30, 0x13, 0x06, 0x07, 0x2A, 0x86, |
| 171 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, | 145 0x48, 0xCE, 0x3D, 0x02, 0x01, 0x06, 0x08, 0x2A, 0x86, 0x48, 0xCE, 0x3D, |
| 172 0x03, 0x01, 0x07, 0x04, 0x6D, 0x30, 0x6B, 0x02, 0x01, 0x01, 0x04, 0x20, | 146 0x03, 0x01, 0x07, 0x04, 0x6D, 0x30, 0x6B, 0x02, 0x01, 0x01, 0x04, 0x20, |
| 173 0x1F, 0xE3, 0x39, 0x50, 0xC5, 0xF4, 0x61, 0x12, 0x4A, 0xE9, 0x92, 0xC2, | 147 0x1F, 0xE3, 0x39, 0x50, 0xC5, 0xF4, 0x61, 0x12, 0x4A, 0xE9, 0x92, 0xC2, |
| 174 0xBD, 0xFD, 0xF1, 0xC7, 0x3B, 0x16, 0x15, 0xF5, 0x71, 0xBD, 0x56, 0x7E, | 148 0xBD, 0xFD, 0xF1, 0xC7, 0x3B, 0x16, 0x15, 0xF5, 0x71, 0xBD, 0x56, 0x7E, |
| 175 0x60, 0xD1, 0x9A, 0xA1, 0xF4, 0x8C, 0xDF, 0x42, 0xA1, 0x44, 0x03, 0x42, | 149 0x60, 0xD1, 0x9A, 0xA1, 0xF4, 0x8C, 0xDF, 0x42, 0xA1, 0x44, 0x03, 0x42, |
| 176 0x00, 0x04, 0x7C, 0x11, 0x0C, 0x66, 0xDC, 0xFD, 0xA8, 0x07, 0xF6, 0xE6, | 150 0x00, 0x04, 0x7C, 0x11, 0x0C, 0x66, 0xDC, 0xFD, 0xA8, 0x07, 0xF6, 0xE6, |
| 177 0x9E, 0x45, 0xDD, 0xB3, 0xC7, 0x4F, 0x69, 0xA1, 0x48, 0x4D, 0x20, 0x3E, | 151 0x9E, 0x45, 0xDD, 0xB3, 0xC7, 0x4F, 0x69, 0xA1, 0x48, 0x4D, 0x20, 0x3E, |
| 178 0x8D, 0xC5, 0xAD, 0xA8, 0xE9, 0xA9, 0xDD, 0x7C, 0xB3, 0xC7, 0x0D, 0xF4, | 152 0x8D, 0xC5, 0xAD, 0xA8, 0xE9, 0xA9, 0xDD, 0x7C, 0xB3, 0xC7, 0x0D, 0xF4, |
| 179 0x48, 0x98, 0x6E, 0x51, 0xBD, 0xE5, 0xD1, 0x57, 0x6F, 0x99, 0x90, 0x1F, | 153 0x48, 0x98, 0x6E, 0x51, 0xBD, 0xE5, 0xD1, 0x57, 0x6F, 0x99, 0x90, 0x1F, |
| 180 0x9C, 0x2C, 0x6A, 0x80, 0x6A, 0x47, 0xFD, 0x90, 0x76, 0x43, 0xA7, 0x2B, | 154 0x9C, 0x2C, 0x6A, 0x80, 0x6A, 0x47, 0xFD, 0x90, 0x76, 0x43, 0xA7, 0x2B, |
| 181 0x83, 0x55, 0x97, 0xEF, 0xC8, 0xC6 | 155 0x83, 0x55, 0x97, 0xEF, 0xC8, 0xC6}; |
| 182 }; | |
| 183 | 156 |
| 184 std::vector<uint8> input( | 157 std::vector<uint8_t> input( |
| 185 kTestEcPrivateKeyInfo, | 158 kTestEcPrivateKeyInfo, |
| 186 kTestEcPrivateKeyInfo + sizeof(kTestEcPrivateKeyInfo)); | 159 kTestEcPrivateKeyInfo + sizeof(kTestEcPrivateKeyInfo)); |
| 187 | 160 |
| 188 scoped_ptr<crypto::RSAPrivateKey> key( | 161 scoped_ptr<crypto::RSAPrivateKey> key( |
| 189 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(input)); | 162 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(input)); |
| 190 | 163 |
| 191 // Import should fail as the given PKCS8 bytes were for an EC key not RSA key. | 164 // Import should fail as the given PKCS8 bytes were for an EC key not RSA key. |
| 192 EXPECT_FALSE(key); | 165 EXPECT_FALSE(key); |
| 193 } | 166 } |
| 194 | 167 |
| 195 // Verify that generated public keys look good. This test data was generated | 168 // Verify that generated public keys look good. This test data was generated |
| 196 // with the openssl command line tool. | 169 // with the openssl command line tool. |
| 197 TEST(RSAPrivateKeyUnitTest, PublicKeyTest) { | 170 TEST(RSAPrivateKeyUnitTest, PublicKeyTest) { |
| 198 const uint8 expected_public_key_info[] = { | 171 const uint8_t expected_public_key_info[] = { |
| 199 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, | 172 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, |
| 200 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, | 173 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, |
| 201 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, | 174 0x89, 0x02, 0x81, 0x81, 0x00, 0xb8, 0x7f, 0x2b, 0x20, 0xdc, 0x7c, 0x9b, |
| 202 0x89, 0x02, 0x81, 0x81, 0x00, 0xb8, 0x7f, 0x2b, | 175 0x0c, 0xdc, 0x51, 0x61, 0x99, 0x0d, 0x36, 0x0f, 0xd4, 0x66, 0x88, 0x08, |
| 203 0x20, 0xdc, 0x7c, 0x9b, 0x0c, 0xdc, 0x51, 0x61, | 176 0x55, 0x84, 0xd5, 0x3a, 0xbf, 0x2b, 0xa4, 0x64, 0x85, 0x7b, 0x0c, 0x04, |
| 204 0x99, 0x0d, 0x36, 0x0f, 0xd4, 0x66, 0x88, 0x08, | 177 0x13, 0x3f, 0x8d, 0xf4, 0xbc, 0x38, 0x0d, 0x49, 0xfe, 0x6b, 0xc4, 0x5a, |
| 205 0x55, 0x84, 0xd5, 0x3a, 0xbf, 0x2b, 0xa4, 0x64, | 178 0xb0, 0x40, 0x53, 0x3a, 0xd7, 0x66, 0x09, 0x0f, 0x9e, 0x36, 0x74, 0x30, |
| 206 0x85, 0x7b, 0x0c, 0x04, 0x13, 0x3f, 0x8d, 0xf4, | 179 0xda, 0x8a, 0x31, 0x4f, 0x1f, 0x14, 0x50, 0xd7, 0xc7, 0x20, 0x94, 0x17, |
| 207 0xbc, 0x38, 0x0d, 0x49, 0xfe, 0x6b, 0xc4, 0x5a, | 180 0xde, 0x4e, 0xb9, 0x57, 0x5e, 0x7e, 0x0a, 0xe5, 0xb2, 0x65, 0x7a, 0x89, |
| 208 0xb0, 0x40, 0x53, 0x3a, 0xd7, 0x66, 0x09, 0x0f, | 181 0x4e, 0xb6, 0x47, 0xff, 0x1c, 0xbd, 0xb7, 0x38, 0x13, 0xaf, 0x47, 0x85, |
| 209 0x9e, 0x36, 0x74, 0x30, 0xda, 0x8a, 0x31, 0x4f, | 182 0x84, 0x32, 0x33, 0xf3, 0x17, 0x49, 0xbf, 0xe9, 0x96, 0xd0, 0xd6, 0x14, |
| 210 0x1f, 0x14, 0x50, 0xd7, 0xc7, 0x20, 0x94, 0x17, | 183 0x6f, 0x13, 0x8d, 0xc5, 0xfc, 0x2c, 0x72, 0xba, 0xac, 0xea, 0x7e, 0x18, |
| 211 0xde, 0x4e, 0xb9, 0x57, 0x5e, 0x7e, 0x0a, 0xe5, | 184 0x53, 0x56, 0xa6, 0x83, 0xa2, 0xce, 0x93, 0x93, 0xe7, 0x1f, 0x0f, 0xe6, |
| 212 0xb2, 0x65, 0x7a, 0x89, 0x4e, 0xb6, 0x47, 0xff, | 185 0x0f, 0x02, 0x03, 0x01, 0x00, 0x01}; |
| 213 0x1c, 0xbd, 0xb7, 0x38, 0x13, 0xaf, 0x47, 0x85, | |
| 214 0x84, 0x32, 0x33, 0xf3, 0x17, 0x49, 0xbf, 0xe9, | |
| 215 0x96, 0xd0, 0xd6, 0x14, 0x6f, 0x13, 0x8d, 0xc5, | |
| 216 0xfc, 0x2c, 0x72, 0xba, 0xac, 0xea, 0x7e, 0x18, | |
| 217 0x53, 0x56, 0xa6, 0x83, 0xa2, 0xce, 0x93, 0x93, | |
| 218 0xe7, 0x1f, 0x0f, 0xe6, 0x0f, 0x02, 0x03, 0x01, | |
| 219 0x00, 0x01 | |
| 220 }; | |
| 221 | 186 |
| 222 std::vector<uint8> input( | 187 std::vector<uint8_t> input(kTestPrivateKeyInfo, |
| 223 kTestPrivateKeyInfo, kTestPrivateKeyInfo + sizeof(kTestPrivateKeyInfo)); | 188 kTestPrivateKeyInfo + sizeof(kTestPrivateKeyInfo)); |
| 224 | 189 |
| 225 scoped_ptr<crypto::RSAPrivateKey> key( | 190 scoped_ptr<crypto::RSAPrivateKey> key( |
| 226 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(input)); | 191 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(input)); |
| 227 ASSERT_TRUE(key.get()); | 192 ASSERT_TRUE(key.get()); |
| 228 | 193 |
| 229 std::vector<uint8> output; | 194 std::vector<uint8_t> output; |
| 230 ASSERT_TRUE(key->ExportPublicKey(&output)); | 195 ASSERT_TRUE(key->ExportPublicKey(&output)); |
| 231 | 196 |
| 232 ASSERT_TRUE( | 197 ASSERT_TRUE( |
| 233 memcmp(expected_public_key_info, &output.front(), output.size()) == 0); | 198 memcmp(expected_public_key_info, &output.front(), output.size()) == 0); |
| 234 } | 199 } |
| 235 | 200 |
| 236 // These two test keys each contain an integer that has 0x00 for its most | 201 // These two test keys each contain an integer that has 0x00 for its most |
| 237 // significant byte. When encoded as ASN.1, this byte is dropped and there are | 202 // significant byte. When encoded as ASN.1, this byte is dropped and there are |
| 238 // two interesting sub-cases. When the sign bit of the integer is set, an extra | 203 // two interesting sub-cases. When the sign bit of the integer is set, an extra |
| 239 // null byte is added back to force the encoded value to be positive. When the | 204 // null byte is added back to force the encoded value to be positive. When the |
| 240 // sign bit is not set, the encoded integer is just left shorter than usual. | 205 // sign bit is not set, the encoded integer is just left shorter than usual. |
| 241 // See also: http://code.google.com/p/chromium/issues/detail?id=14877. | 206 // See also: http://code.google.com/p/chromium/issues/detail?id=14877. |
| 242 // | 207 // |
| 243 // Before we were handling this correctly, we would see one of two failures: | 208 // Before we were handling this correctly, we would see one of two failures: |
| 244 // * RSAPrivateKey::CreateFromPrivateKeyInfo would return null because the | 209 // * RSAPrivateKey::CreateFromPrivateKeyInfo would return null because the |
| 245 // underlying windows API failed to import the key. | 210 // underlying windows API failed to import the key. |
| 246 // * The import would succeed, but incorrectly interpret the data. On export, | 211 // * The import would succeed, but incorrectly interpret the data. On export, |
| 247 // the key would contain different values. | 212 // the key would contain different values. |
| 248 // | 213 // |
| 249 // This test case verifies these two failures modes don't occur. | 214 // This test case verifies these two failures modes don't occur. |
| 250 TEST(RSAPrivateKeyUnitTest, ShortIntegers) { | 215 TEST(RSAPrivateKeyUnitTest, ShortIntegers) { |
| 251 const uint8 short_integer_with_high_bit[] = { | 216 const uint8_t short_integer_with_high_bit[] = { |
| 252 0x30, 0x82, 0x02, 0x77, 0x02, 0x01, 0x00, 0x30, | 217 0x30, 0x82, 0x02, 0x77, 0x02, 0x01, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, |
| 253 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, | 218 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, |
| 254 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, | 219 0x02, 0x61, 0x30, 0x82, 0x02, 0x5d, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, |
| 255 0x02, 0x61, 0x30, 0x82, 0x02, 0x5d, 0x02, 0x01, | 220 0x00, 0x92, 0x59, 0x32, 0x7d, 0x8e, 0xaf, 0x2e, 0xd5, 0xb2, 0x5c, 0x67, |
| 256 0x00, 0x02, 0x81, 0x81, 0x00, 0x92, 0x59, 0x32, | 221 0xc8, 0x7d, 0x48, 0xb7, 0x84, 0x12, 0xd0, 0x76, 0xda, 0xe1, 0xa3, 0x1e, |
| 257 0x7d, 0x8e, 0xaf, 0x2e, 0xd5, 0xb2, 0x5c, 0x67, | 222 0x40, 0x01, 0x14, 0x5c, 0xef, 0x26, 0x6e, 0x28, 0xa2, 0xf7, 0xa5, 0xb4, |
| 258 0xc8, 0x7d, 0x48, 0xb7, 0x84, 0x12, 0xd0, 0x76, | 223 0x02, 0x37, 0xd0, 0x53, 0x10, 0xcb, 0x7c, 0x6a, 0xf4, 0x53, 0x9f, 0xb8, |
| 259 0xda, 0xe1, 0xa3, 0x1e, 0x40, 0x01, 0x14, 0x5c, | 224 0xe0, 0x83, 0x93, 0xd1, 0x19, 0xd8, 0x28, 0xd1, 0xd1, 0xd8, 0x87, 0x8f, |
| 260 0xef, 0x26, 0x6e, 0x28, 0xa2, 0xf7, 0xa5, 0xb4, | 225 0x92, 0xfd, 0x73, 0xc0, 0x4d, 0x3e, 0x07, 0x22, 0x1f, 0xc1, 0x20, 0xb0, |
| 261 0x02, 0x37, 0xd0, 0x53, 0x10, 0xcb, 0x7c, 0x6a, | 226 0x70, 0xb2, 0x3b, 0xea, 0xb1, 0xe5, 0x0a, 0xfd, 0x56, 0x49, 0x5e, 0x39, |
| 262 0xf4, 0x53, 0x9f, 0xb8, 0xe0, 0x83, 0x93, 0xd1, | 227 0x90, 0x91, 0xce, 0x04, 0x83, 0x29, 0xaa, 0xfd, 0x12, 0xa4, 0x42, 0x26, |
| 263 0x19, 0xd8, 0x28, 0xd1, 0xd1, 0xd8, 0x87, 0x8f, | 228 0x6c, 0x6e, 0x79, 0x70, 0x77, 0x03, 0xb2, 0x07, 0x01, 0x3d, 0x85, 0x81, |
| 264 0x92, 0xfd, 0x73, 0xc0, 0x4d, 0x3e, 0x07, 0x22, | 229 0x95, 0x9e, 0xda, 0x5a, 0xa3, 0xf4, 0x2d, 0x38, 0x04, 0x58, 0xf5, 0x6b, |
| 265 0x1f, 0xc1, 0x20, 0xb0, 0x70, 0xb2, 0x3b, 0xea, | 230 0xc9, 0xf1, 0xb5, 0x65, 0xfe, 0x66, 0x0d, 0xa2, 0xd5, 0x02, 0x03, 0x01, |
| 266 0xb1, 0xe5, 0x0a, 0xfd, 0x56, 0x49, 0x5e, 0x39, | 231 0x00, 0x01, 0x02, 0x81, 0x80, 0x5e, 0x01, 0x5f, 0xb6, 0x59, 0x1d, 0xdc, |
| 267 0x90, 0x91, 0xce, 0x04, 0x83, 0x29, 0xaa, 0xfd, | 232 0x36, 0xb6, 0x60, 0x36, 0xe6, 0x08, 0xdb, 0xd9, 0xcd, 0xc3, 0x8c, 0x16, |
| 268 0x12, 0xa4, 0x42, 0x26, 0x6c, 0x6e, 0x79, 0x70, | 233 0x9c, 0x98, 0x8d, 0x7f, 0xd3, 0xdb, 0x1d, 0xaa, 0x68, 0x8f, 0xc5, 0xf8, |
| 269 0x77, 0x03, 0xb2, 0x07, 0x01, 0x3d, 0x85, 0x81, | 234 0xe2, 0x5d, 0xb3, 0x19, 0xc2, 0xc6, 0xf9, 0x51, 0x32, 0x1b, 0x93, 0x6a, |
| 270 0x95, 0x9e, 0xda, 0x5a, 0xa3, 0xf4, 0x2d, 0x38, | 235 0xdc, 0x50, 0x8e, 0xeb, 0x61, 0x84, 0x03, 0x42, 0x30, 0x98, 0xb1, 0xf7, |
| 271 0x04, 0x58, 0xf5, 0x6b, 0xc9, 0xf1, 0xb5, 0x65, | 236 0xbd, 0x14, 0x9a, 0x57, 0x36, 0x33, 0x09, 0xd4, 0x3e, 0x90, 0xda, 0xef, |
| 272 0xfe, 0x66, 0x0d, 0xa2, 0xd5, 0x02, 0x03, 0x01, | 237 0x09, 0x6e, 0xef, 0x49, 0xb6, 0x60, 0x68, 0x5e, 0x54, 0x17, 0x25, 0x5b, |
| 273 0x00, 0x01, 0x02, 0x81, 0x80, 0x5e, 0x01, 0x5f, | 238 0x37, 0xe3, 0x35, 0x63, 0x5b, 0x60, 0x3c, 0xbd, 0x50, 0xdf, 0x46, 0x43, |
| 274 0xb6, 0x59, 0x1d, 0xdc, 0x36, 0xb6, 0x60, 0x36, | 239 0x08, 0xa4, 0x71, 0x21, 0xf1, 0x30, 0x71, 0xdc, 0xda, 0xd7, 0x6f, 0xd2, |
| 275 0xe6, 0x08, 0xdb, 0xd9, 0xcd, 0xc3, 0x8c, 0x16, | 240 0x18, 0xbd, 0x39, 0xf1, 0xe1, 0xbe, 0xa8, 0x8d, 0x62, 0xdf, 0xa2, 0x3e, |
| 276 0x9c, 0x98, 0x8d, 0x7f, 0xd3, 0xdb, 0x1d, 0xaa, | 241 0xb6, 0x15, 0x26, 0xb6, 0x57, 0xbd, 0x63, 0xdb, 0xc1, 0x91, 0xec, 0xb8, |
| 277 0x68, 0x8f, 0xc5, 0xf8, 0xe2, 0x5d, 0xb3, 0x19, | 242 0x01, 0x02, 0x41, 0x00, 0xc6, 0x1a, 0x06, 0x48, 0xf2, 0x12, 0x1c, 0x9f, |
| 278 0xc2, 0xc6, 0xf9, 0x51, 0x32, 0x1b, 0x93, 0x6a, | 243 0x74, 0x20, 0x5c, 0x85, 0xa2, 0xda, 0xe5, 0x62, 0x96, 0x8d, 0x22, 0x7b, |
| 279 0xdc, 0x50, 0x8e, 0xeb, 0x61, 0x84, 0x03, 0x42, | 244 0x78, 0x73, 0xea, 0xbb, 0x9f, 0x59, 0x42, 0x13, 0x15, 0xc8, 0x11, 0x50, |
| 280 0x30, 0x98, 0xb1, 0xf7, 0xbd, 0x14, 0x9a, 0x57, | 245 0x6c, 0x55, 0xf6, 0xdf, 0x8b, 0xfe, 0xc7, 0xdd, 0xa8, 0xca, 0x54, 0x41, |
| 281 0x36, 0x33, 0x09, 0xd4, 0x3e, 0x90, 0xda, 0xef, | 246 0xe8, 0xce, 0xbe, 0x7d, 0xbd, 0xe2, 0x13, 0x4b, 0x5b, 0x61, 0xeb, 0x69, |
| 282 0x09, 0x6e, 0xef, 0x49, 0xb6, 0x60, 0x68, 0x5e, | 247 0x6c, 0xb1, 0x9b, 0x28, 0x68, 0x5b, 0xd6, 0x01, 0x02, 0x41, 0x00, 0xbd, |
| 283 0x54, 0x17, 0x25, 0x5b, 0x37, 0xe3, 0x35, 0x63, | 248 0x1e, 0xfe, 0x51, 0x99, 0xb6, 0xe3, 0x84, 0xfe, 0xf1, 0x9e, 0xfd, 0x9c, |
| 284 0x5b, 0x60, 0x3c, 0xbd, 0x50, 0xdf, 0x46, 0x43, | 249 0xe7, 0x86, 0x43, 0x68, 0x7f, 0x2f, 0x6a, 0x2a, 0x4c, 0xae, 0xa6, 0x41, |
| 285 0x08, 0xa4, 0x71, 0x21, 0xf1, 0x30, 0x71, 0xdc, | 250 0x1c, 0xf0, 0x10, 0x37, 0x54, 0x23, 0xba, 0x05, 0x0d, 0x18, 0x27, 0x8d, |
| 286 0xda, 0xd7, 0x6f, 0xd2, 0x18, 0xbd, 0x39, 0xf1, | 251 0xb8, 0xe4, 0x8f, 0xf2, 0x25, 0x73, 0x8a, 0xd7, 0x05, 0x98, 0x6b, 0x3d, |
| 287 0xe1, 0xbe, 0xa8, 0x8d, 0x62, 0xdf, 0xa2, 0x3e, | 252 0x55, 0xb7, 0x6f, 0x7c, 0xec, 0x77, 0x61, 0x54, 0x7b, 0xb6, 0x6b, 0x31, |
| 288 0xb6, 0x15, 0x26, 0xb6, 0x57, 0xbd, 0x63, 0xdb, | 253 0xec, 0x94, 0xd5, 0x02, 0x41, 0x00, 0x90, 0xa2, 0xa5, 0x9e, 0x12, 0xa7, |
| 289 0xc1, 0x91, 0xec, 0xb8, 0x01, 0x02, 0x41, 0x00, | 254 0x68, 0xa0, 0x7e, 0xdf, 0xb5, 0xcd, 0x98, 0x26, 0xab, 0xbd, 0xbc, 0x5f, |
| 290 0xc6, 0x1a, 0x06, 0x48, 0xf2, 0x12, 0x1c, 0x9f, | 255 0xd5, 0x22, 0x42, 0xc2, 0x97, 0x4a, 0x5f, 0x40, 0x82, 0xfe, 0x7e, 0x33, |
| 291 0x74, 0x20, 0x5c, 0x85, 0xa2, 0xda, 0xe5, 0x62, | 256 0xb1, 0x78, 0x7f, 0x70, 0x90, 0x2b, 0x8d, 0x01, 0xfb, 0x18, 0xfa, 0x48, |
| 292 0x96, 0x8d, 0x22, 0x7b, 0x78, 0x73, 0xea, 0xbb, | 257 0xa7, 0x15, 0xec, 0x0d, 0x2e, 0x85, 0x8d, 0xe2, 0x86, 0xe5, 0xc9, 0x15, |
| 293 0x9f, 0x59, 0x42, 0x13, 0x15, 0xc8, 0x11, 0x50, | 258 0x88, 0x14, 0x53, 0xd8, 0xa4, 0x88, 0xef, 0x10, 0xc6, 0x01, 0x02, 0x41, |
| 294 0x6c, 0x55, 0xf6, 0xdf, 0x8b, 0xfe, 0xc7, 0xdd, | 259 0x00, 0xba, 0xe4, 0xaf, 0x14, 0xfa, 0xdf, 0xf6, 0xd5, 0xce, 0x8f, 0xfe, |
| 295 0xa8, 0xca, 0x54, 0x41, 0xe8, 0xce, 0xbe, 0x7d, | 260 0xbb, 0xc8, 0x5c, 0x30, 0x9d, 0xda, 0xdd, 0x9d, 0x80, 0xc0, 0x0e, 0x89, |
| 296 0xbd, 0xe2, 0x13, 0x4b, 0x5b, 0x61, 0xeb, 0x69, | 261 0xa5, 0xb8, 0xc1, 0x1d, 0x28, 0x19, 0x55, 0x67, 0xfd, 0x03, 0xd2, 0xdd, |
| 297 0x6c, 0xb1, 0x9b, 0x28, 0x68, 0x5b, 0xd6, 0x01, | 262 0xe4, 0xf0, 0xb4, 0x20, 0x03, 0x74, 0x9b, 0xb8, 0x24, 0x23, 0xbb, 0xde, |
| 298 0x02, 0x41, 0x00, 0xbd, 0x1e, 0xfe, 0x51, 0x99, | 263 0xd5, 0x53, 0x86, 0xaa, 0xc1, 0x5d, 0x65, 0xdd, 0xcf, 0xec, 0x8a, 0x59, |
| 299 0xb6, 0xe3, 0x84, 0xfe, 0xf1, 0x9e, 0xfd, 0x9c, | 264 0x4a, 0x73, 0xca, 0xc5, 0x85, 0x02, 0x40, 0x00, 0xc4, 0x5e, 0x8d, 0xa4, |
| 300 0xe7, 0x86, 0x43, 0x68, 0x7f, 0x2f, 0x6a, 0x2a, | 265 0xea, 0xbb, 0x6a, 0x9b, 0xe6, 0x3a, 0x4d, 0xc1, 0xdb, 0xe5, 0x52, 0x38, |
| 301 0x4c, 0xae, 0xa6, 0x41, 0x1c, 0xf0, 0x10, 0x37, | 266 0xf9, 0x59, 0x91, 0x2d, 0x90, 0x82, 0xe3, 0x31, 0x1b, 0x48, 0xb7, 0x42, |
| 302 0x54, 0x23, 0xba, 0x05, 0x0d, 0x18, 0x27, 0x8d, | 267 0xfa, 0x1d, 0x83, 0xd5, 0x3d, 0x02, 0xc2, 0x12, 0x71, 0x10, 0x3a, 0xbd, |
| 303 0xb8, 0xe4, 0x8f, 0xf2, 0x25, 0x73, 0x8a, 0xd7, | 268 0x92, 0x8f, 0x9b, 0xa2, 0x6b, 0x2d, 0x21, 0xa4, 0x65, 0xe9, 0xfa, 0x8c, |
| 304 0x05, 0x98, 0x6b, 0x3d, 0x55, 0xb7, 0x6f, 0x7c, | 269 0x30, 0x2a, 0x89, 0xce, 0xd0, 0xa7, 0x67, 0xd8, 0x45, 0x84, 0xb0}; |
| 305 0xec, 0x77, 0x61, 0x54, 0x7b, 0xb6, 0x6b, 0x31, | |
| 306 0xec, 0x94, 0xd5, 0x02, 0x41, 0x00, 0x90, 0xa2, | |
| 307 0xa5, 0x9e, 0x12, 0xa7, 0x68, 0xa0, 0x7e, 0xdf, | |
| 308 0xb5, 0xcd, 0x98, 0x26, 0xab, 0xbd, 0xbc, 0x5f, | |
| 309 0xd5, 0x22, 0x42, 0xc2, 0x97, 0x4a, 0x5f, 0x40, | |
| 310 0x82, 0xfe, 0x7e, 0x33, 0xb1, 0x78, 0x7f, 0x70, | |
| 311 0x90, 0x2b, 0x8d, 0x01, 0xfb, 0x18, 0xfa, 0x48, | |
| 312 0xa7, 0x15, 0xec, 0x0d, 0x2e, 0x85, 0x8d, 0xe2, | |
| 313 0x86, 0xe5, 0xc9, 0x15, 0x88, 0x14, 0x53, 0xd8, | |
| 314 0xa4, 0x88, 0xef, 0x10, 0xc6, 0x01, 0x02, 0x41, | |
| 315 0x00, 0xba, 0xe4, 0xaf, 0x14, 0xfa, 0xdf, 0xf6, | |
| 316 0xd5, 0xce, 0x8f, 0xfe, 0xbb, 0xc8, 0x5c, 0x30, | |
| 317 0x9d, 0xda, 0xdd, 0x9d, 0x80, 0xc0, 0x0e, 0x89, | |
| 318 0xa5, 0xb8, 0xc1, 0x1d, 0x28, 0x19, 0x55, 0x67, | |
| 319 0xfd, 0x03, 0xd2, 0xdd, 0xe4, 0xf0, 0xb4, 0x20, | |
| 320 0x03, 0x74, 0x9b, 0xb8, 0x24, 0x23, 0xbb, 0xde, | |
| 321 0xd5, 0x53, 0x86, 0xaa, 0xc1, 0x5d, 0x65, 0xdd, | |
| 322 0xcf, 0xec, 0x8a, 0x59, 0x4a, 0x73, 0xca, 0xc5, | |
| 323 0x85, 0x02, 0x40, 0x00, 0xc4, 0x5e, 0x8d, 0xa4, | |
| 324 0xea, 0xbb, 0x6a, 0x9b, 0xe6, 0x3a, 0x4d, 0xc1, | |
| 325 0xdb, 0xe5, 0x52, 0x38, 0xf9, 0x59, 0x91, 0x2d, | |
| 326 0x90, 0x82, 0xe3, 0x31, 0x1b, 0x48, 0xb7, 0x42, | |
| 327 0xfa, 0x1d, 0x83, 0xd5, 0x3d, 0x02, 0xc2, 0x12, | |
| 328 0x71, 0x10, 0x3a, 0xbd, 0x92, 0x8f, 0x9b, 0xa2, | |
| 329 0x6b, 0x2d, 0x21, 0xa4, 0x65, 0xe9, 0xfa, 0x8c, | |
| 330 0x30, 0x2a, 0x89, 0xce, 0xd0, 0xa7, 0x67, 0xd8, | |
| 331 0x45, 0x84, 0xb0 | |
| 332 }; | |
| 333 | 270 |
| 334 const uint8 short_integer_without_high_bit[] = { | 271 const uint8_t short_integer_without_high_bit[] = { |
| 335 0x30, 0x82, 0x02, 0x76, 0x02, 0x01, 0x00, 0x30, | 272 0x30, 0x82, 0x02, 0x76, 0x02, 0x01, 0x00, 0x30, 0x0d, 0x06, 0x09, 0x2a, |
| 336 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, | 273 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, |
| 337 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, | 274 0x02, 0x60, 0x30, 0x82, 0x02, 0x5c, 0x02, 0x01, 0x00, 0x02, 0x81, 0x81, |
| 338 0x02, 0x60, 0x30, 0x82, 0x02, 0x5c, 0x02, 0x01, | 275 0x00, 0xc3, 0x9e, 0x8d, 0xc4, 0x6d, 0x38, 0xe8, 0x0e, 0x9f, 0x84, 0x03, |
| 339 0x00, 0x02, 0x81, 0x81, 0x00, 0xc3, 0x9e, 0x8d, | 276 0x40, 0x8e, 0x81, 0x2e, 0x56, 0x67, 0x78, 0x11, 0x85, 0x27, 0x81, 0x52, |
| 340 0xc4, 0x6d, 0x38, 0xe8, 0x0e, 0x9f, 0x84, 0x03, | 277 0xf2, 0x1b, 0x3e, 0x5b, 0xf8, 0xab, 0xfc, 0xaf, 0xca, 0x5c, 0x26, 0xd5, |
| 341 0x40, 0x8e, 0x81, 0x2e, 0x56, 0x67, 0x78, 0x11, | 278 0xfa, 0xd4, 0x55, 0x50, 0x38, 0xb9, 0x9d, 0x89, 0x92, 0x7e, 0x34, 0xcf, |
| 342 0x85, 0x27, 0x81, 0x52, 0xf2, 0x1b, 0x3e, 0x5b, | 279 0x37, 0x82, 0x48, 0x2d, 0xaa, 0xc4, 0x6a, 0x0e, 0x93, 0xea, 0xad, 0x8a, |
| 343 0xf8, 0xab, 0xfc, 0xaf, 0xca, 0x5c, 0x26, 0xd5, | 280 0x33, 0xf0, 0x42, 0x23, 0xe0, 0x4c, 0x98, 0xbf, 0x01, 0x00, 0x1b, 0xfe, |
| 344 0xfa, 0xd4, 0x55, 0x50, 0x38, 0xb9, 0x9d, 0x89, | 281 0x06, 0x15, 0xc6, 0xe3, 0x80, 0x79, 0x6d, 0xfe, 0x48, 0xcd, 0x40, 0xbb, |
| 345 0x92, 0x7e, 0x34, 0xcf, 0x37, 0x82, 0x48, 0x2d, | 282 0xf9, 0x58, 0xe6, 0xbf, 0xd5, 0x4c, 0x29, 0x48, 0x53, 0x78, 0x06, 0x03, |
| 346 0xaa, 0xc4, 0x6a, 0x0e, 0x93, 0xea, 0xad, 0x8a, | 283 0x0d, 0x59, 0xf5, 0x20, 0xe0, 0xe6, 0x8c, 0xb2, 0xf5, 0xd8, 0x61, 0x52, |
| 347 0x33, 0xf0, 0x42, 0x23, 0xe0, 0x4c, 0x98, 0xbf, | 284 0x7e, 0x40, 0x83, 0xd7, 0x69, 0xae, 0xd7, 0x75, 0x02, 0x2d, 0x49, 0xd5, |
| 348 0x01, 0x00, 0x1b, 0xfe, 0x06, 0x15, 0xc6, 0xe3, | 285 0x15, 0x5b, 0xf1, 0xd9, 0x4d, 0x60, 0x7d, 0x62, 0xa5, 0x02, 0x03, 0x01, |
| 349 0x80, 0x79, 0x6d, 0xfe, 0x48, 0xcd, 0x40, 0xbb, | 286 0x00, 0x01, 0x02, 0x7f, 0x6d, 0x45, 0x23, 0xeb, 0x95, 0x17, 0x34, 0x88, |
| 350 0xf9, 0x58, 0xe6, 0xbf, 0xd5, 0x4c, 0x29, 0x48, | 287 0xf6, 0x91, 0xc7, 0x3f, 0x48, 0x5a, 0xe0, 0x87, 0x63, 0x44, 0xae, 0x84, |
| 351 0x53, 0x78, 0x06, 0x03, 0x0d, 0x59, 0xf5, 0x20, | 288 0xb2, 0x8c, 0x8a, 0xc8, 0xb2, 0x6f, 0x22, 0xf0, 0xc5, 0x21, 0x61, 0x10, |
| 352 0xe0, 0xe6, 0x8c, 0xb2, 0xf5, 0xd8, 0x61, 0x52, | 289 0xa8, 0x69, 0x09, 0x1e, 0x13, 0x7d, 0x94, 0x52, 0x1b, 0x5c, 0xe4, 0x7b, |
| 353 0x7e, 0x40, 0x83, 0xd7, 0x69, 0xae, 0xd7, 0x75, | 290 0xf0, 0x03, 0x8f, 0xbc, 0x72, 0x09, 0xdf, 0x78, 0x84, 0x3e, 0xb9, 0xe5, |
| 354 0x02, 0x2d, 0x49, 0xd5, 0x15, 0x5b, 0xf1, 0xd9, | 291 0xe6, 0x31, 0x0a, 0x01, 0xf9, 0x32, 0xf8, 0xd6, 0x57, 0xa3, 0x87, 0xe6, |
| 355 0x4d, 0x60, 0x7d, 0x62, 0xa5, 0x02, 0x03, 0x01, | 292 0xf5, 0x98, 0xbc, 0x8e, 0x41, 0xb9, 0x50, 0x17, 0x7b, 0xd3, 0x97, 0x5a, |
| 356 0x00, 0x01, 0x02, 0x7f, 0x6d, 0x45, 0x23, 0xeb, | 293 0x44, 0x3a, 0xee, 0xff, 0x6b, 0xb3, 0x3a, 0x52, 0xe7, 0xa4, 0x96, 0x9a, |
| 357 0x95, 0x17, 0x34, 0x88, 0xf6, 0x91, 0xc7, 0x3f, | 294 0xf6, 0x83, 0xc8, 0x97, 0x1c, 0x63, 0xa1, 0xd6, 0xb3, 0xa8, 0xb2, 0xc7, |
| 358 0x48, 0x5a, 0xe0, 0x87, 0x63, 0x44, 0xae, 0x84, | 295 0x73, 0x25, 0x0f, 0x58, 0x36, 0xb9, 0x7a, 0x47, 0xa7, 0x4d, 0x30, 0xfe, |
| 359 0xb2, 0x8c, 0x8a, 0xc8, 0xb2, 0x6f, 0x22, 0xf0, | 296 0x4d, 0x74, 0x56, 0xe8, 0xfb, 0xd6, 0x50, 0xe5, 0xe0, 0x28, 0x15, 0x02, |
| 360 0xc5, 0x21, 0x61, 0x10, 0xa8, 0x69, 0x09, 0x1e, | 297 0x41, 0x00, 0xeb, 0x15, 0x62, 0xb6, 0x37, 0x41, 0x7c, 0xc5, 0x00, 0x22, |
| 361 0x13, 0x7d, 0x94, 0x52, 0x1b, 0x5c, 0xe4, 0x7b, | 298 0x2c, 0x5a, 0x5e, 0xe4, 0xb2, 0x11, 0x87, 0x89, 0xad, 0xf4, 0x57, 0x68, |
| 362 0xf0, 0x03, 0x8f, 0xbc, 0x72, 0x09, 0xdf, 0x78, | 299 0x90, 0xb7, 0x9f, 0xe2, 0x79, 0x20, 0x6b, 0x98, 0x00, 0x0d, 0x3a, 0x3b, |
| 363 0x84, 0x3e, 0xb9, 0xe5, 0xe6, 0x31, 0x0a, 0x01, | 300 0xc1, 0xcd, 0x36, 0xf9, 0x27, 0xda, 0x40, 0x36, 0x1d, 0xb8, 0x5c, 0x96, |
| 364 0xf9, 0x32, 0xf8, 0xd6, 0x57, 0xa3, 0x87, 0xe6, | 301 0xeb, 0x04, 0x08, 0xe1, 0x3f, 0xfa, 0x94, 0x8b, 0x0f, 0xa0, 0xff, 0xc1, |
| 365 0xf5, 0x98, 0xbc, 0x8e, 0x41, 0xb9, 0x50, 0x17, | 302 0x51, 0xea, 0x90, 0xad, 0x15, 0xc7, 0x02, 0x41, 0x00, 0xd5, 0x06, 0x45, |
| 366 0x7b, 0xd3, 0x97, 0x5a, 0x44, 0x3a, 0xee, 0xff, | 303 0xd7, 0x55, 0x63, 0x1a, 0xf0, 0x89, 0x81, 0xae, 0x87, 0x23, 0xa2, 0x39, |
| 367 0x6b, 0xb3, 0x3a, 0x52, 0xe7, 0xa4, 0x96, 0x9a, | 304 0xfe, 0x3d, 0x82, 0xc7, 0xcb, 0x15, 0xb9, 0xe3, 0xe2, 0x5b, 0xc6, 0xd2, |
| 368 0xf6, 0x83, 0xc8, 0x97, 0x1c, 0x63, 0xa1, 0xd6, | 305 0x55, 0xdd, 0xab, 0x55, 0x29, 0x7c, 0xda, 0x0e, 0x1c, 0x09, 0xfc, 0x73, |
| 369 0xb3, 0xa8, 0xb2, 0xc7, 0x73, 0x25, 0x0f, 0x58, | 306 0x0d, 0x01, 0xed, 0x6d, 0x2f, 0x05, 0xd0, 0xd5, 0x1d, 0xce, 0x18, 0x7f, |
| 370 0x36, 0xb9, 0x7a, 0x47, 0xa7, 0x4d, 0x30, 0xfe, | 307 0xb0, 0xc8, 0x47, 0x77, 0xd2, 0xa9, 0x9e, 0xfc, 0x39, 0x4b, 0x3d, 0x94, |
| 371 0x4d, 0x74, 0x56, 0xe8, 0xfb, 0xd6, 0x50, 0xe5, | 308 0x33, 0x02, 0x41, 0x00, 0x8f, 0x94, 0x09, 0x2d, 0x17, 0x44, 0x75, 0x0a, |
| 372 0xe0, 0x28, 0x15, 0x02, 0x41, 0x00, 0xeb, 0x15, | 309 0xf1, 0x10, 0xee, 0x1b, 0xe7, 0xd7, 0x2f, 0xf6, 0xca, 0xdc, 0x49, 0x15, |
| 373 0x62, 0xb6, 0x37, 0x41, 0x7c, 0xc5, 0x00, 0x22, | 310 0x72, 0x09, 0x58, 0x51, 0xfe, 0x61, 0xd8, 0xee, 0xf7, 0x27, 0xe7, 0xe8, |
| 374 0x2c, 0x5a, 0x5e, 0xe4, 0xb2, 0x11, 0x87, 0x89, | 311 0x2c, 0x47, 0xf1, 0x0f, 0x00, 0x63, 0x5e, 0x76, 0xcb, 0x3f, 0x02, 0x19, |
| 375 0xad, 0xf4, 0x57, 0x68, 0x90, 0xb7, 0x9f, 0xe2, | 312 0xe6, 0xda, 0xfa, 0x01, 0x05, 0xd7, 0x65, 0x37, 0x0b, 0x60, 0x7f, 0x94, |
| 376 0x79, 0x20, 0x6b, 0x98, 0x00, 0x0d, 0x3a, 0x3b, | 313 0x2a, 0x80, 0x8d, 0x22, 0x81, 0x68, 0x65, 0x63, 0x02, 0x41, 0x00, 0xc2, |
| 377 0xc1, 0xcd, 0x36, 0xf9, 0x27, 0xda, 0x40, 0x36, | 314 0xd4, 0x18, 0xde, 0x47, 0x9e, 0xfb, 0x8d, 0x91, 0x05, 0xc5, 0x3c, 0x9d, |
| 378 0x1d, 0xb8, 0x5c, 0x96, 0xeb, 0x04, 0x08, 0xe1, | 315 0xcf, 0x8a, 0x60, 0xc7, 0x9b, 0x2b, 0xe5, 0xc6, 0xba, 0x1b, 0xfc, 0xf3, |
| 379 0x3f, 0xfa, 0x94, 0x8b, 0x0f, 0xa0, 0xff, 0xc1, | 316 0xd9, 0x54, 0x97, 0xe9, 0xc4, 0x00, 0x80, 0x90, 0x4a, 0xd2, 0x6a, 0xbc, |
| 380 0x51, 0xea, 0x90, 0xad, 0x15, 0xc7, 0x02, 0x41, | 317 0x8b, 0x62, 0x22, 0x3c, 0x68, 0x0c, 0xda, 0xdb, 0xe3, 0xd2, 0x76, 0x8e, |
| 381 0x00, 0xd5, 0x06, 0x45, 0xd7, 0x55, 0x63, 0x1a, | 318 0xff, 0x03, 0x12, 0x09, 0x2a, 0xac, 0x21, 0x44, 0xb7, 0x3e, 0x91, 0x9c, |
| 382 0xf0, 0x89, 0x81, 0xae, 0x87, 0x23, 0xa2, 0x39, | 319 0x09, 0xf6, 0xd7, 0x02, 0x41, 0x00, 0xc0, 0xa1, 0xbb, 0x70, 0xdc, 0xf8, |
| 383 0xfe, 0x3d, 0x82, 0xc7, 0xcb, 0x15, 0xb9, 0xe3, | 320 0xeb, 0x17, 0x61, 0xd4, 0x8c, 0x7c, 0x3b, 0x82, 0x91, 0x58, 0xff, 0xf9, |
| 384 0xe2, 0x5b, 0xc6, 0xd2, 0x55, 0xdd, 0xab, 0x55, | 321 0x19, 0xac, 0x3a, 0x73, 0xa7, 0x20, 0xe5, 0x22, 0x02, 0xc4, 0xf6, 0xb9, |
| 385 0x29, 0x7c, 0xda, 0x0e, 0x1c, 0x09, 0xfc, 0x73, | 322 0xb9, 0x43, 0x53, 0x35, 0x88, 0xe1, 0x05, 0xb6, 0x43, 0x9b, 0x39, 0xc8, |
| 386 0x0d, 0x01, 0xed, 0x6d, 0x2f, 0x05, 0xd0, 0xd5, | 323 0x04, 0x4d, 0x2b, 0x01, 0xf7, 0xe6, 0x1b, 0x8d, 0x7e, 0x89, 0xe3, 0x43, |
| 387 0x1d, 0xce, 0x18, 0x7f, 0xb0, 0xc8, 0x47, 0x77, | 324 0xd4, 0xf3, 0xab, 0x28, 0xd4, 0x5a, 0x1f, 0x20, 0xea, 0xbe}; |
| 388 0xd2, 0xa9, 0x9e, 0xfc, 0x39, 0x4b, 0x3d, 0x94, | |
| 389 0x33, 0x02, 0x41, 0x00, 0x8f, 0x94, 0x09, 0x2d, | |
| 390 0x17, 0x44, 0x75, 0x0a, 0xf1, 0x10, 0xee, 0x1b, | |
| 391 0xe7, 0xd7, 0x2f, 0xf6, 0xca, 0xdc, 0x49, 0x15, | |
| 392 0x72, 0x09, 0x58, 0x51, 0xfe, 0x61, 0xd8, 0xee, | |
| 393 0xf7, 0x27, 0xe7, 0xe8, 0x2c, 0x47, 0xf1, 0x0f, | |
| 394 0x00, 0x63, 0x5e, 0x76, 0xcb, 0x3f, 0x02, 0x19, | |
| 395 0xe6, 0xda, 0xfa, 0x01, 0x05, 0xd7, 0x65, 0x37, | |
| 396 0x0b, 0x60, 0x7f, 0x94, 0x2a, 0x80, 0x8d, 0x22, | |
| 397 0x81, 0x68, 0x65, 0x63, 0x02, 0x41, 0x00, 0xc2, | |
| 398 0xd4, 0x18, 0xde, 0x47, 0x9e, 0xfb, 0x8d, 0x91, | |
| 399 0x05, 0xc5, 0x3c, 0x9d, 0xcf, 0x8a, 0x60, 0xc7, | |
| 400 0x9b, 0x2b, 0xe5, 0xc6, 0xba, 0x1b, 0xfc, 0xf3, | |
| 401 0xd9, 0x54, 0x97, 0xe9, 0xc4, 0x00, 0x80, 0x90, | |
| 402 0x4a, 0xd2, 0x6a, 0xbc, 0x8b, 0x62, 0x22, 0x3c, | |
| 403 0x68, 0x0c, 0xda, 0xdb, 0xe3, 0xd2, 0x76, 0x8e, | |
| 404 0xff, 0x03, 0x12, 0x09, 0x2a, 0xac, 0x21, 0x44, | |
| 405 0xb7, 0x3e, 0x91, 0x9c, 0x09, 0xf6, 0xd7, 0x02, | |
| 406 0x41, 0x00, 0xc0, 0xa1, 0xbb, 0x70, 0xdc, 0xf8, | |
| 407 0xeb, 0x17, 0x61, 0xd4, 0x8c, 0x7c, 0x3b, 0x82, | |
| 408 0x91, 0x58, 0xff, 0xf9, 0x19, 0xac, 0x3a, 0x73, | |
| 409 0xa7, 0x20, 0xe5, 0x22, 0x02, 0xc4, 0xf6, 0xb9, | |
| 410 0xb9, 0x43, 0x53, 0x35, 0x88, 0xe1, 0x05, 0xb6, | |
| 411 0x43, 0x9b, 0x39, 0xc8, 0x04, 0x4d, 0x2b, 0x01, | |
| 412 0xf7, 0xe6, 0x1b, 0x8d, 0x7e, 0x89, 0xe3, 0x43, | |
| 413 0xd4, 0xf3, 0xab, 0x28, 0xd4, 0x5a, 0x1f, 0x20, | |
| 414 0xea, 0xbe | |
| 415 }; | |
| 416 | 325 |
| 417 std::vector<uint8> input1; | 326 std::vector<uint8_t> input1; |
| 418 std::vector<uint8> input2; | 327 std::vector<uint8_t> input2; |
| 419 | 328 |
| 420 input1.resize(sizeof(short_integer_with_high_bit)); | 329 input1.resize(sizeof(short_integer_with_high_bit)); |
| 421 input2.resize(sizeof(short_integer_without_high_bit)); | 330 input2.resize(sizeof(short_integer_without_high_bit)); |
| 422 | 331 |
| 423 memcpy(&input1.front(), short_integer_with_high_bit, | 332 memcpy(&input1.front(), short_integer_with_high_bit, |
| 424 sizeof(short_integer_with_high_bit)); | 333 sizeof(short_integer_with_high_bit)); |
| 425 memcpy(&input2.front(), short_integer_without_high_bit, | 334 memcpy(&input2.front(), short_integer_without_high_bit, |
| 426 sizeof(short_integer_without_high_bit)); | 335 sizeof(short_integer_without_high_bit)); |
| 427 | 336 |
| 428 scoped_ptr<crypto::RSAPrivateKey> keypair1( | 337 scoped_ptr<crypto::RSAPrivateKey> keypair1( |
| 429 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(input1)); | 338 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(input1)); |
| 430 scoped_ptr<crypto::RSAPrivateKey> keypair2( | 339 scoped_ptr<crypto::RSAPrivateKey> keypair2( |
| 431 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(input2)); | 340 crypto::RSAPrivateKey::CreateFromPrivateKeyInfo(input2)); |
| 432 ASSERT_TRUE(keypair1.get()); | 341 ASSERT_TRUE(keypair1.get()); |
| 433 ASSERT_TRUE(keypair2.get()); | 342 ASSERT_TRUE(keypair2.get()); |
| 434 | 343 |
| 435 std::vector<uint8> output1; | 344 std::vector<uint8_t> output1; |
| 436 std::vector<uint8> output2; | 345 std::vector<uint8_t> output2; |
| 437 ASSERT_TRUE(keypair1->ExportPrivateKey(&output1)); | 346 ASSERT_TRUE(keypair1->ExportPrivateKey(&output1)); |
| 438 ASSERT_TRUE(keypair2->ExportPrivateKey(&output2)); | 347 ASSERT_TRUE(keypair2->ExportPrivateKey(&output2)); |
| 439 | 348 |
| 440 ASSERT_EQ(input1.size(), output1.size()); | 349 ASSERT_EQ(input1.size(), output1.size()); |
| 441 ASSERT_EQ(input2.size(), output2.size()); | 350 ASSERT_EQ(input2.size(), output2.size()); |
| 442 ASSERT_TRUE(0 == memcmp(&output1.front(), &input1.front(), | 351 ASSERT_TRUE(0 == memcmp(&output1.front(), &input1.front(), |
| 443 input1.size())); | 352 input1.size())); |
| 444 ASSERT_TRUE(0 == memcmp(&output2.front(), &input2.front(), | 353 ASSERT_TRUE(0 == memcmp(&output2.front(), &input2.front(), |
| 445 input2.size())); | 354 input2.size())); |
| 446 } | 355 } |
| 447 | 356 |
| 448 TEST(RSAPrivateKeyUnitTest, CreateFromKeyTest) { | 357 TEST(RSAPrivateKeyUnitTest, CreateFromKeyTest) { |
| 449 scoped_ptr<crypto::RSAPrivateKey> key_pair( | 358 scoped_ptr<crypto::RSAPrivateKey> key_pair( |
| 450 crypto::RSAPrivateKey::Create(512)); | 359 crypto::RSAPrivateKey::Create(512)); |
| 451 ASSERT_TRUE(key_pair.get()); | 360 ASSERT_TRUE(key_pair.get()); |
| 452 | 361 |
| 453 scoped_ptr<crypto::RSAPrivateKey> key_copy( | 362 scoped_ptr<crypto::RSAPrivateKey> key_copy( |
| 454 crypto::RSAPrivateKey::CreateFromKey(key_pair->key())); | 363 crypto::RSAPrivateKey::CreateFromKey(key_pair->key())); |
| 455 ASSERT_TRUE(key_copy.get()); | 364 ASSERT_TRUE(key_copy.get()); |
| 456 | 365 |
| 457 std::vector<uint8> privkey; | 366 std::vector<uint8_t> privkey; |
| 458 std::vector<uint8> pubkey; | 367 std::vector<uint8_t> pubkey; |
| 459 ASSERT_TRUE(key_pair->ExportPrivateKey(&privkey)); | 368 ASSERT_TRUE(key_pair->ExportPrivateKey(&privkey)); |
| 460 ASSERT_TRUE(key_pair->ExportPublicKey(&pubkey)); | 369 ASSERT_TRUE(key_pair->ExportPublicKey(&pubkey)); |
| 461 | 370 |
| 462 std::vector<uint8> privkey_copy; | 371 std::vector<uint8_t> privkey_copy; |
| 463 std::vector<uint8> pubkey_copy; | 372 std::vector<uint8_t> pubkey_copy; |
| 464 ASSERT_TRUE(key_copy->ExportPrivateKey(&privkey_copy)); | 373 ASSERT_TRUE(key_copy->ExportPrivateKey(&privkey_copy)); |
| 465 ASSERT_TRUE(key_copy->ExportPublicKey(&pubkey_copy)); | 374 ASSERT_TRUE(key_copy->ExportPublicKey(&pubkey_copy)); |
| 466 | 375 |
| 467 ASSERT_EQ(privkey, privkey_copy); | 376 ASSERT_EQ(privkey, privkey_copy); |
| 468 ASSERT_EQ(pubkey, pubkey_copy); | 377 ASSERT_EQ(pubkey, pubkey_copy); |
| 469 } | 378 } |
| 470 | 379 |
| OLD | NEW |