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

Side by Side Diff: crypto/rsa_private_key.cc

Issue 8533028: RSAPrivateKey vector push_back cleanups. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month 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 | « no previous file | crypto/rsa_private_key_nss.cc » ('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 <algorithm> 7 #include <algorithm>
8 #include <list> 8 #include <list>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 74
75 // RSA algorithm OID 75 // RSA algorithm OID
76 for (size_t i = sizeof(kRsaAlgorithmIdentifier); i > 0; --i) 76 for (size_t i = sizeof(kRsaAlgorithmIdentifier); i > 0; --i)
77 content.push_front(kRsaAlgorithmIdentifier[i - 1]); 77 content.push_front(kRsaAlgorithmIdentifier[i - 1]);
78 78
79 PrependInteger(&version, 1, &content); 79 PrependInteger(&version, 1, &content);
80 PrependTypeHeaderAndLength(kSequenceTag, content.size(), &content); 80 PrependTypeHeaderAndLength(kSequenceTag, content.size(), &content);
81 81
82 // Copy everying into the output. 82 // Copy everying into the output.
83 output->reserve(content.size()); 83 output->reserve(content.size());
84 for (std::list<uint8>::iterator i = content.begin(); i != content.end(); ++i) 84 output->assign(content.begin(), content.end());
85 output->push_back(*i);
86 85
87 return true; 86 return true;
88 } 87 }
89 88
90 bool PrivateKeyInfoCodec::ExportPublicKeyInfo(std::vector<uint8>* output) { 89 bool PrivateKeyInfoCodec::ExportPublicKeyInfo(std::vector<uint8>* output) {
91 // Create a sequence with the modulus (n) and public exponent (e). 90 // Create a sequence with the modulus (n) and public exponent (e).
92 std::vector<uint8> bit_string; 91 std::vector<uint8> bit_string;
93 if (!ExportPublicKey(&bit_string)) 92 if (!ExportPublicKey(&bit_string))
94 return false; 93 return false;
95 94
96 // Add the sequence as the contents of a bit string. 95 // Add the sequence as the contents of a bit string.
97 std::list<uint8> content; 96 std::list<uint8> content;
98 PrependBitString(&bit_string[0], static_cast<int>(bit_string.size()), 97 PrependBitString(&bit_string[0], static_cast<int>(bit_string.size()),
99 &content); 98 &content);
100 99
101 // Add the RSA algorithm OID. 100 // Add the RSA algorithm OID.
102 for (size_t i = sizeof(kRsaAlgorithmIdentifier); i > 0; --i) 101 for (size_t i = sizeof(kRsaAlgorithmIdentifier); i > 0; --i)
103 content.push_front(kRsaAlgorithmIdentifier[i - 1]); 102 content.push_front(kRsaAlgorithmIdentifier[i - 1]);
104 103
105 // Finally, wrap everything in a sequence. 104 // Finally, wrap everything in a sequence.
106 PrependTypeHeaderAndLength(kSequenceTag, content.size(), &content); 105 PrependTypeHeaderAndLength(kSequenceTag, content.size(), &content);
107 106
108 // Copy everything into the output. 107 // Copy everything into the output.
109 output->reserve(content.size()); 108 output->reserve(content.size());
110 for (std::list<uint8>::iterator i = content.begin(); i != content.end(); ++i) 109 output->assign(content.begin(), content.end());
111 output->push_back(*i);
112 110
113 return true; 111 return true;
114 } 112 }
115 113
116 bool PrivateKeyInfoCodec::ExportPublicKey(std::vector<uint8>* output) { 114 bool PrivateKeyInfoCodec::ExportPublicKey(std::vector<uint8>* output) {
117 // Create a sequence with the modulus (n) and public exponent (e). 115 // Create a sequence with the modulus (n) and public exponent (e).
118 std::list<uint8> content; 116 std::list<uint8> content;
119 PrependInteger(&public_exponent_[0], 117 PrependInteger(&public_exponent_[0],
120 static_cast<int>(public_exponent_.size()), 118 static_cast<int>(public_exponent_.size()),
121 &content); 119 &content);
122 PrependInteger(&modulus_[0], static_cast<int>(modulus_.size()), &content); 120 PrependInteger(&modulus_[0], static_cast<int>(modulus_.size()), &content);
123 PrependTypeHeaderAndLength(kSequenceTag, content.size(), &content); 121 PrependTypeHeaderAndLength(kSequenceTag, content.size(), &content);
124 122
125 // Copy everything into the output. 123 // Copy everything into the output.
126 output->reserve(content.size()); 124 output->reserve(content.size());
127 for (std::list<uint8>::iterator i = content.begin(); i != content.end(); ++i) 125 output->assign(content.begin(), content.end());
128 output->push_back(*i);
129 126
130 return true; 127 return true;
131 } 128 }
132 129
133 bool PrivateKeyInfoCodec::Import(const std::vector<uint8>& input) { 130 bool PrivateKeyInfoCodec::Import(const std::vector<uint8>& input) {
134 if (input.empty()) { 131 if (input.empty()) {
135 return false; 132 return false;
136 } 133 }
137 134
138 // Parse the private key info up to the public key values, ignoring 135 // Parse the private key info up to the public key values, ignoring
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 int pad = expected_size - temp.size(); 228 int pad = expected_size - temp.size();
232 int index = 0; 229 int index = 0;
233 if (out->size() == expected_size + 1) { 230 if (out->size() == expected_size + 1) {
234 READ_ASSERT(out->front() == 0x00); 231 READ_ASSERT(out->front() == 0x00);
235 pad++; 232 pad++;
236 index++; 233 index++;
237 } else { 234 } else {
238 READ_ASSERT(out->size() <= expected_size); 235 READ_ASSERT(out->size() <= expected_size);
239 } 236 }
240 237
241 while (pad) { 238 out->insert(out->end(), pad, 0x00);
242 out->push_back(0x00);
243 pad--;
244 }
245 out->insert(out->end(), temp.begin(), temp.end()); 239 out->insert(out->end(), temp.begin(), temp.end());
246 240
247 // Reverse output if little-endian. 241 // Reverse output if little-endian.
248 if (!big_endian_) 242 if (!big_endian_)
249 reverse(out->begin(), out->end()); 243 reverse(out->begin(), out->end());
250 return true; 244 return true;
251 } 245 }
252 246
253 bool PrivateKeyInfoCodec::ReadIntegerImpl(uint8** pos, 247 bool PrivateKeyInfoCodec::ReadIntegerImpl(uint8** pos,
254 uint8* end, 248 uint8* end,
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 // The version should be zero. 375 // The version should be zero.
382 for (uint32 i = 0; i < length; ++i) { 376 for (uint32 i = 0; i < length; ++i) {
383 READ_ASSERT(**pos == 0x00); 377 READ_ASSERT(**pos == 0x00);
384 (*pos)++; 378 (*pos)++;
385 } 379 }
386 380
387 return true; 381 return true;
388 } 382 }
389 383
390 } // namespace crypto 384 } // namespace crypto
OLDNEW
« no previous file with comments | « no previous file | crypto/rsa_private_key_nss.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698