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

Side by Side Diff: base/crypto/rsa_private_key_unittest.cc

Issue 6805019: Move crypto files out of base, to a top level directory. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Fixes comments by eroman Created 9 years, 8 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
« no previous file with comments | « base/crypto/rsa_private_key_openssl.cc ('k') | base/crypto/rsa_private_key_win.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "base/crypto/rsa_private_key.h"
6 #include "base/memory/scoped_ptr.h"
7 #include "testing/gtest/include/gtest/gtest.h"
8
9 // Generate random private keys with two different sizes. Reimport, then
10 // export them again. We should get back the same exact bytes.
11 TEST(RSAPrivateKeyUnitTest, InitRandomTest) {
12 scoped_ptr<base::RSAPrivateKey> keypair1(base::RSAPrivateKey::Create(1024));
13 scoped_ptr<base::RSAPrivateKey> keypair2(base::RSAPrivateKey::Create(2048));
14 ASSERT_TRUE(keypair1.get());
15 ASSERT_TRUE(keypair2.get());
16
17 std::vector<uint8> privkey1;
18 std::vector<uint8> privkey2;
19 std::vector<uint8> pubkey1;
20 std::vector<uint8> pubkey2;
21
22 ASSERT_TRUE(keypair1->ExportPrivateKey(&privkey1));
23 ASSERT_TRUE(keypair2->ExportPrivateKey(&privkey2));
24 ASSERT_TRUE(keypair1->ExportPublicKey(&pubkey1));
25 ASSERT_TRUE(keypair2->ExportPublicKey(&pubkey2));
26
27 scoped_ptr<base::RSAPrivateKey> keypair3(
28 base::RSAPrivateKey::CreateFromPrivateKeyInfo(privkey1));
29 scoped_ptr<base::RSAPrivateKey> keypair4(
30 base::RSAPrivateKey::CreateFromPrivateKeyInfo(privkey2));
31 ASSERT_TRUE(keypair3.get());
32 ASSERT_TRUE(keypair4.get());
33
34 std::vector<uint8> privkey3;
35 std::vector<uint8> privkey4;
36 ASSERT_TRUE(keypair3->ExportPrivateKey(&privkey3));
37 ASSERT_TRUE(keypair4->ExportPrivateKey(&privkey4));
38
39 ASSERT_EQ(privkey1.size(), privkey3.size());
40 ASSERT_EQ(privkey2.size(), privkey4.size());
41 ASSERT_TRUE(0 == memcmp(&privkey1.front(), &privkey3.front(),
42 privkey1.size()));
43 ASSERT_TRUE(0 == memcmp(&privkey2.front(), &privkey4.front(),
44 privkey2.size()));
45 }
46
47
48 // Verify that generated public keys look good. This test data was generated
49 // with the openssl command line tool.
50 TEST(RSAPrivateKeyUnitTest, PublicKeyTest) {
51 const uint8 private_key_info[] = {
52 0x30, 0x82, 0x02, 0x78, 0x02, 0x01, 0x00, 0x30,
53 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
54 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82,
55 0x02, 0x62, 0x30, 0x82, 0x02, 0x5e, 0x02, 0x01,
56 0x00, 0x02, 0x81, 0x81, 0x00, 0xb8, 0x7f, 0x2b,
57 0x20, 0xdc, 0x7c, 0x9b, 0x0c, 0xdc, 0x51, 0x61,
58 0x99, 0x0d, 0x36, 0x0f, 0xd4, 0x66, 0x88, 0x08,
59 0x55, 0x84, 0xd5, 0x3a, 0xbf, 0x2b, 0xa4, 0x64,
60 0x85, 0x7b, 0x0c, 0x04, 0x13, 0x3f, 0x8d, 0xf4,
61 0xbc, 0x38, 0x0d, 0x49, 0xfe, 0x6b, 0xc4, 0x5a,
62 0xb0, 0x40, 0x53, 0x3a, 0xd7, 0x66, 0x09, 0x0f,
63 0x9e, 0x36, 0x74, 0x30, 0xda, 0x8a, 0x31, 0x4f,
64 0x1f, 0x14, 0x50, 0xd7, 0xc7, 0x20, 0x94, 0x17,
65 0xde, 0x4e, 0xb9, 0x57, 0x5e, 0x7e, 0x0a, 0xe5,
66 0xb2, 0x65, 0x7a, 0x89, 0x4e, 0xb6, 0x47, 0xff,
67 0x1c, 0xbd, 0xb7, 0x38, 0x13, 0xaf, 0x47, 0x85,
68 0x84, 0x32, 0x33, 0xf3, 0x17, 0x49, 0xbf, 0xe9,
69 0x96, 0xd0, 0xd6, 0x14, 0x6f, 0x13, 0x8d, 0xc5,
70 0xfc, 0x2c, 0x72, 0xba, 0xac, 0xea, 0x7e, 0x18,
71 0x53, 0x56, 0xa6, 0x83, 0xa2, 0xce, 0x93, 0x93,
72 0xe7, 0x1f, 0x0f, 0xe6, 0x0f, 0x02, 0x03, 0x01,
73 0x00, 0x01, 0x02, 0x81, 0x80, 0x03, 0x61, 0x89,
74 0x37, 0xcb, 0xf2, 0x98, 0xa0, 0xce, 0xb4, 0xcb,
75 0x16, 0x13, 0xf0, 0xe6, 0xaf, 0x5c, 0xc5, 0xa7,
76 0x69, 0x71, 0xca, 0xba, 0x8d, 0xe0, 0x4d, 0xdd,
77 0xed, 0xb8, 0x48, 0x8b, 0x16, 0x93, 0x36, 0x95,
78 0xc2, 0x91, 0x40, 0x65, 0x17, 0xbd, 0x7f, 0xd6,
79 0xad, 0x9e, 0x30, 0x28, 0x46, 0xe4, 0x3e, 0xcc,
80 0x43, 0x78, 0xf9, 0xfe, 0x1f, 0x33, 0x23, 0x1e,
81 0x31, 0x12, 0x9d, 0x3c, 0xa7, 0x08, 0x82, 0x7b,
82 0x7d, 0x25, 0x4e, 0x5e, 0x19, 0xa8, 0x9b, 0xed,
83 0x86, 0xb2, 0xcb, 0x3c, 0xfe, 0x4e, 0xa1, 0xfa,
84 0x62, 0x87, 0x3a, 0x17, 0xf7, 0x60, 0xec, 0x38,
85 0x29, 0xe8, 0x4f, 0x34, 0x9f, 0x76, 0x9d, 0xee,
86 0xa3, 0xf6, 0x85, 0x6b, 0x84, 0x43, 0xc9, 0x1e,
87 0x01, 0xff, 0xfd, 0xd0, 0x29, 0x4c, 0xfa, 0x8e,
88 0x57, 0x0c, 0xc0, 0x71, 0xa5, 0xbb, 0x88, 0x46,
89 0x29, 0x5c, 0xc0, 0x4f, 0x01, 0x02, 0x41, 0x00,
90 0xf5, 0x83, 0xa4, 0x64, 0x4a, 0xf2, 0xdd, 0x8c,
91 0x2c, 0xed, 0xa8, 0xd5, 0x60, 0x5a, 0xe4, 0xc7,
92 0xcc, 0x61, 0xcd, 0x38, 0x42, 0x20, 0xd3, 0x82,
93 0x18, 0xf2, 0x35, 0x00, 0x72, 0x2d, 0xf7, 0x89,
94 0x80, 0x67, 0xb5, 0x93, 0x05, 0x5f, 0xdd, 0x42,
95 0xba, 0x16, 0x1a, 0xea, 0x15, 0xc6, 0xf0, 0xb8,
96 0x8c, 0xbc, 0xbf, 0x54, 0x9e, 0xf1, 0xc1, 0xb2,
97 0xb3, 0x8b, 0xb6, 0x26, 0x02, 0x30, 0xc4, 0x81,
98 0x02, 0x41, 0x00, 0xc0, 0x60, 0x62, 0x80, 0xe1,
99 0x22, 0x78, 0xf6, 0x9d, 0x83, 0x18, 0xeb, 0x72,
100 0x45, 0xd7, 0xc8, 0x01, 0x7f, 0xa9, 0xca, 0x8f,
101 0x7d, 0xd6, 0xb8, 0x31, 0x2b, 0x84, 0x7f, 0x62,
102 0xd9, 0xa9, 0x22, 0x17, 0x7d, 0x06, 0x35, 0x6c,
103 0xf3, 0xc1, 0x94, 0x17, 0x85, 0x5a, 0xaf, 0x9c,
104 0x5c, 0x09, 0x3c, 0xcf, 0x2f, 0x44, 0x9d, 0xb6,
105 0x52, 0x68, 0x5f, 0xf9, 0x59, 0xc8, 0x84, 0x2b,
106 0x39, 0x22, 0x8f, 0x02, 0x41, 0x00, 0xb2, 0x04,
107 0xe2, 0x0e, 0x56, 0xca, 0x03, 0x1a, 0xc0, 0xf9,
108 0x12, 0x92, 0xa5, 0x6b, 0x42, 0xb8, 0x1c, 0xda,
109 0x4d, 0x93, 0x9d, 0x5f, 0x6f, 0xfd, 0xc5, 0x58,
110 0xda, 0x55, 0x98, 0x74, 0xfc, 0x28, 0x17, 0x93,
111 0x1b, 0x75, 0x9f, 0x50, 0x03, 0x7f, 0x7e, 0xae,
112 0xc8, 0x95, 0x33, 0x75, 0x2c, 0xd6, 0xa4, 0x35,
113 0xb8, 0x06, 0x03, 0xba, 0x08, 0x59, 0x2b, 0x17,
114 0x02, 0xdc, 0x4c, 0x7a, 0x50, 0x01, 0x02, 0x41,
115 0x00, 0x9d, 0xdb, 0x39, 0x59, 0x09, 0xe4, 0x30,
116 0xa0, 0x24, 0xf5, 0xdb, 0x2f, 0xf0, 0x2f, 0xf1,
117 0x75, 0x74, 0x0d, 0x5e, 0xb5, 0x11, 0x73, 0xb0,
118 0x0a, 0xaa, 0x86, 0x4c, 0x0d, 0xff, 0x7e, 0x1d,
119 0xb4, 0x14, 0xd4, 0x09, 0x91, 0x33, 0x5a, 0xfd,
120 0xa0, 0x58, 0x80, 0x9b, 0xbe, 0x78, 0x2e, 0x69,
121 0x82, 0x15, 0x7c, 0x72, 0xf0, 0x7b, 0x18, 0x39,
122 0xff, 0x6e, 0xeb, 0xc6, 0x86, 0xf5, 0xb4, 0xc7,
123 0x6f, 0x02, 0x41, 0x00, 0x8d, 0x1a, 0x37, 0x0f,
124 0x76, 0xc4, 0x82, 0xfa, 0x5c, 0xc3, 0x79, 0x35,
125 0x3e, 0x70, 0x8a, 0xbf, 0x27, 0x49, 0xb0, 0x99,
126 0x63, 0xcb, 0x77, 0x5f, 0xa8, 0x82, 0x65, 0xf6,
127 0x03, 0x52, 0x51, 0xf1, 0xae, 0x2e, 0x05, 0xb3,
128 0xc6, 0xa4, 0x92, 0xd1, 0xce, 0x6c, 0x72, 0xfb,
129 0x21, 0xb3, 0x02, 0x87, 0xe4, 0xfd, 0x61, 0xca,
130 0x00, 0x42, 0x19, 0xf0, 0xda, 0x5a, 0x53, 0xe3,
131 0xb1, 0xc5, 0x15, 0xf3
132 };
133
134 const uint8 expected_public_key_info[] = {
135 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a,
136 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
137 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81,
138 0x89, 0x02, 0x81, 0x81, 0x00, 0xb8, 0x7f, 0x2b,
139 0x20, 0xdc, 0x7c, 0x9b, 0x0c, 0xdc, 0x51, 0x61,
140 0x99, 0x0d, 0x36, 0x0f, 0xd4, 0x66, 0x88, 0x08,
141 0x55, 0x84, 0xd5, 0x3a, 0xbf, 0x2b, 0xa4, 0x64,
142 0x85, 0x7b, 0x0c, 0x04, 0x13, 0x3f, 0x8d, 0xf4,
143 0xbc, 0x38, 0x0d, 0x49, 0xfe, 0x6b, 0xc4, 0x5a,
144 0xb0, 0x40, 0x53, 0x3a, 0xd7, 0x66, 0x09, 0x0f,
145 0x9e, 0x36, 0x74, 0x30, 0xda, 0x8a, 0x31, 0x4f,
146 0x1f, 0x14, 0x50, 0xd7, 0xc7, 0x20, 0x94, 0x17,
147 0xde, 0x4e, 0xb9, 0x57, 0x5e, 0x7e, 0x0a, 0xe5,
148 0xb2, 0x65, 0x7a, 0x89, 0x4e, 0xb6, 0x47, 0xff,
149 0x1c, 0xbd, 0xb7, 0x38, 0x13, 0xaf, 0x47, 0x85,
150 0x84, 0x32, 0x33, 0xf3, 0x17, 0x49, 0xbf, 0xe9,
151 0x96, 0xd0, 0xd6, 0x14, 0x6f, 0x13, 0x8d, 0xc5,
152 0xfc, 0x2c, 0x72, 0xba, 0xac, 0xea, 0x7e, 0x18,
153 0x53, 0x56, 0xa6, 0x83, 0xa2, 0xce, 0x93, 0x93,
154 0xe7, 0x1f, 0x0f, 0xe6, 0x0f, 0x02, 0x03, 0x01,
155 0x00, 0x01
156 };
157
158 std::vector<uint8> input;
159 input.resize(sizeof(private_key_info));
160 memcpy(&input.front(), private_key_info, sizeof(private_key_info));
161
162 scoped_ptr<base::RSAPrivateKey> key(
163 base::RSAPrivateKey::CreateFromPrivateKeyInfo(input));
164 ASSERT_TRUE(key.get());
165
166 std::vector<uint8> output;
167 ASSERT_TRUE(key->ExportPublicKey(&output));
168
169 ASSERT_TRUE(
170 memcmp(expected_public_key_info, &output.front(), output.size()) == 0);
171 }
172
173 // These two test keys each contain an integer that has 0x00 for its most
174 // significant byte. When encoded as ASN.1, this byte is dropped and there are
175 // two interesting sub-cases. When the sign bit of the integer is set, an extra
176 // null byte is added back to force the encoded value to be positive. When the
177 // sign bit is not set, the encoded integer is just left shorter than usual.
178 // See also: http://code.google.com/p/chromium/issues/detail?id=14877.
179 //
180 // Before we were handling this correctly, we would see one of two failures:
181 // * RSAPrivateKey::CreateFromPrivateKeyInfo would return null because the
182 // underlying windows API failed to import the key.
183 // * The import would succeed, but incorrectly interpret the data. On export,
184 // the key would contain different values.
185 //
186 // This test case verifies these two failures modes don't occur.
187 TEST(RSAPrivateKeyUnitTest, ShortIntegers) {
188 const uint8 short_integer_with_high_bit[] = {
189 0x30, 0x82, 0x02, 0x77, 0x02, 0x01, 0x00, 0x30,
190 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
191 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82,
192 0x02, 0x61, 0x30, 0x82, 0x02, 0x5d, 0x02, 0x01,
193 0x00, 0x02, 0x81, 0x81, 0x00, 0x92, 0x59, 0x32,
194 0x7d, 0x8e, 0xaf, 0x2e, 0xd5, 0xb2, 0x5c, 0x67,
195 0xc8, 0x7d, 0x48, 0xb7, 0x84, 0x12, 0xd0, 0x76,
196 0xda, 0xe1, 0xa3, 0x1e, 0x40, 0x01, 0x14, 0x5c,
197 0xef, 0x26, 0x6e, 0x28, 0xa2, 0xf7, 0xa5, 0xb4,
198 0x02, 0x37, 0xd0, 0x53, 0x10, 0xcb, 0x7c, 0x6a,
199 0xf4, 0x53, 0x9f, 0xb8, 0xe0, 0x83, 0x93, 0xd1,
200 0x19, 0xd8, 0x28, 0xd1, 0xd1, 0xd8, 0x87, 0x8f,
201 0x92, 0xfd, 0x73, 0xc0, 0x4d, 0x3e, 0x07, 0x22,
202 0x1f, 0xc1, 0x20, 0xb0, 0x70, 0xb2, 0x3b, 0xea,
203 0xb1, 0xe5, 0x0a, 0xfd, 0x56, 0x49, 0x5e, 0x39,
204 0x90, 0x91, 0xce, 0x04, 0x83, 0x29, 0xaa, 0xfd,
205 0x12, 0xa4, 0x42, 0x26, 0x6c, 0x6e, 0x79, 0x70,
206 0x77, 0x03, 0xb2, 0x07, 0x01, 0x3d, 0x85, 0x81,
207 0x95, 0x9e, 0xda, 0x5a, 0xa3, 0xf4, 0x2d, 0x38,
208 0x04, 0x58, 0xf5, 0x6b, 0xc9, 0xf1, 0xb5, 0x65,
209 0xfe, 0x66, 0x0d, 0xa2, 0xd5, 0x02, 0x03, 0x01,
210 0x00, 0x01, 0x02, 0x81, 0x80, 0x5e, 0x01, 0x5f,
211 0xb6, 0x59, 0x1d, 0xdc, 0x36, 0xb6, 0x60, 0x36,
212 0xe6, 0x08, 0xdb, 0xd9, 0xcd, 0xc3, 0x8c, 0x16,
213 0x9c, 0x98, 0x8d, 0x7f, 0xd3, 0xdb, 0x1d, 0xaa,
214 0x68, 0x8f, 0xc5, 0xf8, 0xe2, 0x5d, 0xb3, 0x19,
215 0xc2, 0xc6, 0xf9, 0x51, 0x32, 0x1b, 0x93, 0x6a,
216 0xdc, 0x50, 0x8e, 0xeb, 0x61, 0x84, 0x03, 0x42,
217 0x30, 0x98, 0xb1, 0xf7, 0xbd, 0x14, 0x9a, 0x57,
218 0x36, 0x33, 0x09, 0xd4, 0x3e, 0x90, 0xda, 0xef,
219 0x09, 0x6e, 0xef, 0x49, 0xb6, 0x60, 0x68, 0x5e,
220 0x54, 0x17, 0x25, 0x5b, 0x37, 0xe3, 0x35, 0x63,
221 0x5b, 0x60, 0x3c, 0xbd, 0x50, 0xdf, 0x46, 0x43,
222 0x08, 0xa4, 0x71, 0x21, 0xf1, 0x30, 0x71, 0xdc,
223 0xda, 0xd7, 0x6f, 0xd2, 0x18, 0xbd, 0x39, 0xf1,
224 0xe1, 0xbe, 0xa8, 0x8d, 0x62, 0xdf, 0xa2, 0x3e,
225 0xb6, 0x15, 0x26, 0xb6, 0x57, 0xbd, 0x63, 0xdb,
226 0xc1, 0x91, 0xec, 0xb8, 0x01, 0x02, 0x41, 0x00,
227 0xc6, 0x1a, 0x06, 0x48, 0xf2, 0x12, 0x1c, 0x9f,
228 0x74, 0x20, 0x5c, 0x85, 0xa2, 0xda, 0xe5, 0x62,
229 0x96, 0x8d, 0x22, 0x7b, 0x78, 0x73, 0xea, 0xbb,
230 0x9f, 0x59, 0x42, 0x13, 0x15, 0xc8, 0x11, 0x50,
231 0x6c, 0x55, 0xf6, 0xdf, 0x8b, 0xfe, 0xc7, 0xdd,
232 0xa8, 0xca, 0x54, 0x41, 0xe8, 0xce, 0xbe, 0x7d,
233 0xbd, 0xe2, 0x13, 0x4b, 0x5b, 0x61, 0xeb, 0x69,
234 0x6c, 0xb1, 0x9b, 0x28, 0x68, 0x5b, 0xd6, 0x01,
235 0x02, 0x41, 0x00, 0xbd, 0x1e, 0xfe, 0x51, 0x99,
236 0xb6, 0xe3, 0x84, 0xfe, 0xf1, 0x9e, 0xfd, 0x9c,
237 0xe7, 0x86, 0x43, 0x68, 0x7f, 0x2f, 0x6a, 0x2a,
238 0x4c, 0xae, 0xa6, 0x41, 0x1c, 0xf0, 0x10, 0x37,
239 0x54, 0x23, 0xba, 0x05, 0x0d, 0x18, 0x27, 0x8d,
240 0xb8, 0xe4, 0x8f, 0xf2, 0x25, 0x73, 0x8a, 0xd7,
241 0x05, 0x98, 0x6b, 0x3d, 0x55, 0xb7, 0x6f, 0x7c,
242 0xec, 0x77, 0x61, 0x54, 0x7b, 0xb6, 0x6b, 0x31,
243 0xec, 0x94, 0xd5, 0x02, 0x41, 0x00, 0x90, 0xa2,
244 0xa5, 0x9e, 0x12, 0xa7, 0x68, 0xa0, 0x7e, 0xdf,
245 0xb5, 0xcd, 0x98, 0x26, 0xab, 0xbd, 0xbc, 0x5f,
246 0xd5, 0x22, 0x42, 0xc2, 0x97, 0x4a, 0x5f, 0x40,
247 0x82, 0xfe, 0x7e, 0x33, 0xb1, 0x78, 0x7f, 0x70,
248 0x90, 0x2b, 0x8d, 0x01, 0xfb, 0x18, 0xfa, 0x48,
249 0xa7, 0x15, 0xec, 0x0d, 0x2e, 0x85, 0x8d, 0xe2,
250 0x86, 0xe5, 0xc9, 0x15, 0x88, 0x14, 0x53, 0xd8,
251 0xa4, 0x88, 0xef, 0x10, 0xc6, 0x01, 0x02, 0x41,
252 0x00, 0xba, 0xe4, 0xaf, 0x14, 0xfa, 0xdf, 0xf6,
253 0xd5, 0xce, 0x8f, 0xfe, 0xbb, 0xc8, 0x5c, 0x30,
254 0x9d, 0xda, 0xdd, 0x9d, 0x80, 0xc0, 0x0e, 0x89,
255 0xa5, 0xb8, 0xc1, 0x1d, 0x28, 0x19, 0x55, 0x67,
256 0xfd, 0x03, 0xd2, 0xdd, 0xe4, 0xf0, 0xb4, 0x20,
257 0x03, 0x74, 0x9b, 0xb8, 0x24, 0x23, 0xbb, 0xde,
258 0xd5, 0x53, 0x86, 0xaa, 0xc1, 0x5d, 0x65, 0xdd,
259 0xcf, 0xec, 0x8a, 0x59, 0x4a, 0x73, 0xca, 0xc5,
260 0x85, 0x02, 0x40, 0x00, 0xc4, 0x5e, 0x8d, 0xa4,
261 0xea, 0xbb, 0x6a, 0x9b, 0xe6, 0x3a, 0x4d, 0xc1,
262 0xdb, 0xe5, 0x52, 0x38, 0xf9, 0x59, 0x91, 0x2d,
263 0x90, 0x82, 0xe3, 0x31, 0x1b, 0x48, 0xb7, 0x42,
264 0xfa, 0x1d, 0x83, 0xd5, 0x3d, 0x02, 0xc2, 0x12,
265 0x71, 0x10, 0x3a, 0xbd, 0x92, 0x8f, 0x9b, 0xa2,
266 0x6b, 0x2d, 0x21, 0xa4, 0x65, 0xe9, 0xfa, 0x8c,
267 0x30, 0x2a, 0x89, 0xce, 0xd0, 0xa7, 0x67, 0xd8,
268 0x45, 0x84, 0xb0
269 };
270
271 const uint8 short_integer_without_high_bit[] = {
272 0x30, 0x82, 0x02, 0x76, 0x02, 0x01, 0x00, 0x30,
273 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7,
274 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82,
275 0x02, 0x60, 0x30, 0x82, 0x02, 0x5c, 0x02, 0x01,
276 0x00, 0x02, 0x81, 0x81, 0x00, 0xc3, 0x9e, 0x8d,
277 0xc4, 0x6d, 0x38, 0xe8, 0x0e, 0x9f, 0x84, 0x03,
278 0x40, 0x8e, 0x81, 0x2e, 0x56, 0x67, 0x78, 0x11,
279 0x85, 0x27, 0x81, 0x52, 0xf2, 0x1b, 0x3e, 0x5b,
280 0xf8, 0xab, 0xfc, 0xaf, 0xca, 0x5c, 0x26, 0xd5,
281 0xfa, 0xd4, 0x55, 0x50, 0x38, 0xb9, 0x9d, 0x89,
282 0x92, 0x7e, 0x34, 0xcf, 0x37, 0x82, 0x48, 0x2d,
283 0xaa, 0xc4, 0x6a, 0x0e, 0x93, 0xea, 0xad, 0x8a,
284 0x33, 0xf0, 0x42, 0x23, 0xe0, 0x4c, 0x98, 0xbf,
285 0x01, 0x00, 0x1b, 0xfe, 0x06, 0x15, 0xc6, 0xe3,
286 0x80, 0x79, 0x6d, 0xfe, 0x48, 0xcd, 0x40, 0xbb,
287 0xf9, 0x58, 0xe6, 0xbf, 0xd5, 0x4c, 0x29, 0x48,
288 0x53, 0x78, 0x06, 0x03, 0x0d, 0x59, 0xf5, 0x20,
289 0xe0, 0xe6, 0x8c, 0xb2, 0xf5, 0xd8, 0x61, 0x52,
290 0x7e, 0x40, 0x83, 0xd7, 0x69, 0xae, 0xd7, 0x75,
291 0x02, 0x2d, 0x49, 0xd5, 0x15, 0x5b, 0xf1, 0xd9,
292 0x4d, 0x60, 0x7d, 0x62, 0xa5, 0x02, 0x03, 0x01,
293 0x00, 0x01, 0x02, 0x7f, 0x6d, 0x45, 0x23, 0xeb,
294 0x95, 0x17, 0x34, 0x88, 0xf6, 0x91, 0xc7, 0x3f,
295 0x48, 0x5a, 0xe0, 0x87, 0x63, 0x44, 0xae, 0x84,
296 0xb2, 0x8c, 0x8a, 0xc8, 0xb2, 0x6f, 0x22, 0xf0,
297 0xc5, 0x21, 0x61, 0x10, 0xa8, 0x69, 0x09, 0x1e,
298 0x13, 0x7d, 0x94, 0x52, 0x1b, 0x5c, 0xe4, 0x7b,
299 0xf0, 0x03, 0x8f, 0xbc, 0x72, 0x09, 0xdf, 0x78,
300 0x84, 0x3e, 0xb9, 0xe5, 0xe6, 0x31, 0x0a, 0x01,
301 0xf9, 0x32, 0xf8, 0xd6, 0x57, 0xa3, 0x87, 0xe6,
302 0xf5, 0x98, 0xbc, 0x8e, 0x41, 0xb9, 0x50, 0x17,
303 0x7b, 0xd3, 0x97, 0x5a, 0x44, 0x3a, 0xee, 0xff,
304 0x6b, 0xb3, 0x3a, 0x52, 0xe7, 0xa4, 0x96, 0x9a,
305 0xf6, 0x83, 0xc8, 0x97, 0x1c, 0x63, 0xa1, 0xd6,
306 0xb3, 0xa8, 0xb2, 0xc7, 0x73, 0x25, 0x0f, 0x58,
307 0x36, 0xb9, 0x7a, 0x47, 0xa7, 0x4d, 0x30, 0xfe,
308 0x4d, 0x74, 0x56, 0xe8, 0xfb, 0xd6, 0x50, 0xe5,
309 0xe0, 0x28, 0x15, 0x02, 0x41, 0x00, 0xeb, 0x15,
310 0x62, 0xb6, 0x37, 0x41, 0x7c, 0xc5, 0x00, 0x22,
311 0x2c, 0x5a, 0x5e, 0xe4, 0xb2, 0x11, 0x87, 0x89,
312 0xad, 0xf4, 0x57, 0x68, 0x90, 0xb7, 0x9f, 0xe2,
313 0x79, 0x20, 0x6b, 0x98, 0x00, 0x0d, 0x3a, 0x3b,
314 0xc1, 0xcd, 0x36, 0xf9, 0x27, 0xda, 0x40, 0x36,
315 0x1d, 0xb8, 0x5c, 0x96, 0xeb, 0x04, 0x08, 0xe1,
316 0x3f, 0xfa, 0x94, 0x8b, 0x0f, 0xa0, 0xff, 0xc1,
317 0x51, 0xea, 0x90, 0xad, 0x15, 0xc7, 0x02, 0x41,
318 0x00, 0xd5, 0x06, 0x45, 0xd7, 0x55, 0x63, 0x1a,
319 0xf0, 0x89, 0x81, 0xae, 0x87, 0x23, 0xa2, 0x39,
320 0xfe, 0x3d, 0x82, 0xc7, 0xcb, 0x15, 0xb9, 0xe3,
321 0xe2, 0x5b, 0xc6, 0xd2, 0x55, 0xdd, 0xab, 0x55,
322 0x29, 0x7c, 0xda, 0x0e, 0x1c, 0x09, 0xfc, 0x73,
323 0x0d, 0x01, 0xed, 0x6d, 0x2f, 0x05, 0xd0, 0xd5,
324 0x1d, 0xce, 0x18, 0x7f, 0xb0, 0xc8, 0x47, 0x77,
325 0xd2, 0xa9, 0x9e, 0xfc, 0x39, 0x4b, 0x3d, 0x94,
326 0x33, 0x02, 0x41, 0x00, 0x8f, 0x94, 0x09, 0x2d,
327 0x17, 0x44, 0x75, 0x0a, 0xf1, 0x10, 0xee, 0x1b,
328 0xe7, 0xd7, 0x2f, 0xf6, 0xca, 0xdc, 0x49, 0x15,
329 0x72, 0x09, 0x58, 0x51, 0xfe, 0x61, 0xd8, 0xee,
330 0xf7, 0x27, 0xe7, 0xe8, 0x2c, 0x47, 0xf1, 0x0f,
331 0x00, 0x63, 0x5e, 0x76, 0xcb, 0x3f, 0x02, 0x19,
332 0xe6, 0xda, 0xfa, 0x01, 0x05, 0xd7, 0x65, 0x37,
333 0x0b, 0x60, 0x7f, 0x94, 0x2a, 0x80, 0x8d, 0x22,
334 0x81, 0x68, 0x65, 0x63, 0x02, 0x41, 0x00, 0xc2,
335 0xd4, 0x18, 0xde, 0x47, 0x9e, 0xfb, 0x8d, 0x91,
336 0x05, 0xc5, 0x3c, 0x9d, 0xcf, 0x8a, 0x60, 0xc7,
337 0x9b, 0x2b, 0xe5, 0xc6, 0xba, 0x1b, 0xfc, 0xf3,
338 0xd9, 0x54, 0x97, 0xe9, 0xc4, 0x00, 0x80, 0x90,
339 0x4a, 0xd2, 0x6a, 0xbc, 0x8b, 0x62, 0x22, 0x3c,
340 0x68, 0x0c, 0xda, 0xdb, 0xe3, 0xd2, 0x76, 0x8e,
341 0xff, 0x03, 0x12, 0x09, 0x2a, 0xac, 0x21, 0x44,
342 0xb7, 0x3e, 0x91, 0x9c, 0x09, 0xf6, 0xd7, 0x02,
343 0x41, 0x00, 0xc0, 0xa1, 0xbb, 0x70, 0xdc, 0xf8,
344 0xeb, 0x17, 0x61, 0xd4, 0x8c, 0x7c, 0x3b, 0x82,
345 0x91, 0x58, 0xff, 0xf9, 0x19, 0xac, 0x3a, 0x73,
346 0xa7, 0x20, 0xe5, 0x22, 0x02, 0xc4, 0xf6, 0xb9,
347 0xb9, 0x43, 0x53, 0x35, 0x88, 0xe1, 0x05, 0xb6,
348 0x43, 0x9b, 0x39, 0xc8, 0x04, 0x4d, 0x2b, 0x01,
349 0xf7, 0xe6, 0x1b, 0x8d, 0x7e, 0x89, 0xe3, 0x43,
350 0xd4, 0xf3, 0xab, 0x28, 0xd4, 0x5a, 0x1f, 0x20,
351 0xea, 0xbe
352 };
353
354 std::vector<uint8> input1;
355 std::vector<uint8> input2;
356
357 input1.resize(sizeof(short_integer_with_high_bit));
358 input2.resize(sizeof(short_integer_without_high_bit));
359
360 memcpy(&input1.front(), short_integer_with_high_bit,
361 sizeof(short_integer_with_high_bit));
362 memcpy(&input2.front(), short_integer_without_high_bit,
363 sizeof(short_integer_without_high_bit));
364
365 scoped_ptr<base::RSAPrivateKey> keypair1(
366 base::RSAPrivateKey::CreateFromPrivateKeyInfo(input1));
367 scoped_ptr<base::RSAPrivateKey> keypair2(
368 base::RSAPrivateKey::CreateFromPrivateKeyInfo(input2));
369 ASSERT_TRUE(keypair1.get());
370 ASSERT_TRUE(keypair2.get());
371
372 std::vector<uint8> output1;
373 std::vector<uint8> output2;
374 ASSERT_TRUE(keypair1->ExportPrivateKey(&output1));
375 ASSERT_TRUE(keypair2->ExportPrivateKey(&output2));
376
377 ASSERT_EQ(input1.size(), output1.size());
378 ASSERT_EQ(input2.size(), output2.size());
379 ASSERT_TRUE(0 == memcmp(&output1.front(), &input1.front(),
380 input1.size()));
381 ASSERT_TRUE(0 == memcmp(&output2.front(), &input2.front(),
382 input2.size()));
383 }
OLDNEW
« no previous file with comments | « base/crypto/rsa_private_key_openssl.cc ('k') | base/crypto/rsa_private_key_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698