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

Side by Side Diff: crypto/rsa_private_key_unittest.cc

Issue 1539353003: Switch to standard integer types in crypto/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 5 years 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
« no previous file with comments | « crypto/rsa_private_key_openssl.cc ('k') | crypto/scoped_capi_types.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
OLDNEW
« no previous file with comments | « crypto/rsa_private_key_openssl.cc ('k') | crypto/scoped_capi_types.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698