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

Side by Side Diff: crypto/ec_private_key_nss.cc

Issue 1870233002: Convert crypto to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comment Created 4 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
« no previous file with comments | « components/user_prefs/tracked/pref_hash_calculator.cc ('k') | crypto/ec_private_key_openssl.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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/ec_private_key.h" 5 #include "crypto/ec_private_key.h"
6 6
7 extern "C" { 7 extern "C" {
8 // Work around NSS missing SEC_BEGIN_PROTOS in secmodt.h. This must come before 8 // Work around NSS missing SEC_BEGIN_PROTOS in secmodt.h. This must come before
9 // other NSS headers. 9 // other NSS headers.
10 #include <secmodt.h> 10 #include <secmodt.h>
11 } 11 }
12 12
13 #include <cryptohi.h> 13 #include <cryptohi.h>
14 #include <keyhi.h> 14 #include <keyhi.h>
15 #include <pk11pub.h> 15 #include <pk11pub.h>
16 #include <secmod.h> 16 #include <secmod.h>
17 #include <stddef.h> 17 #include <stddef.h>
18 #include <stdint.h> 18 #include <stdint.h>
19 19
20 #include <memory>
21
20 #include "base/logging.h" 22 #include "base/logging.h"
21 #include "base/memory/scoped_ptr.h"
22 #include "crypto/nss_util.h" 23 #include "crypto/nss_util.h"
23 #include "crypto/nss_util_internal.h" 24 #include "crypto/nss_util_internal.h"
24 #include "crypto/scoped_nss_types.h" 25 #include "crypto/scoped_nss_types.h"
25 #include "crypto/third_party/nss/chromium-nss.h" 26 #include "crypto/third_party/nss/chromium-nss.h"
26 27
27 namespace { 28 namespace {
28 29
29 static bool AppendAttribute(SECKEYPrivateKey* key, 30 static bool AppendAttribute(SECKEYPrivateKey* key,
30 CK_ATTRIBUTE_TYPE type, 31 CK_ATTRIBUTE_TYPE type,
31 std::vector<uint8_t>* output) { 32 std::vector<uint8_t>* output) {
(...skipping 22 matching lines...) Expand all
54 } 55 }
55 56
56 // static 57 // static
57 ECPrivateKey* ECPrivateKey::Create() { 58 ECPrivateKey* ECPrivateKey::Create() {
58 EnsureNSSInit(); 59 EnsureNSSInit();
59 60
60 ScopedPK11Slot slot(PK11_GetInternalSlot()); 61 ScopedPK11Slot slot(PK11_GetInternalSlot());
61 if (!slot) 62 if (!slot)
62 return nullptr; 63 return nullptr;
63 64
64 scoped_ptr<ECPrivateKey> result(new ECPrivateKey); 65 std::unique_ptr<ECPrivateKey> result(new ECPrivateKey);
65 66
66 SECOidData* oid_data = SECOID_FindOIDByTag(SEC_OID_SECG_EC_SECP256R1); 67 SECOidData* oid_data = SECOID_FindOIDByTag(SEC_OID_SECG_EC_SECP256R1);
67 if (!oid_data) { 68 if (!oid_data) {
68 DLOG(ERROR) << "SECOID_FindOIDByTag: " << PORT_GetError(); 69 DLOG(ERROR) << "SECOID_FindOIDByTag: " << PORT_GetError();
69 return nullptr; 70 return nullptr;
70 } 71 }
71 72
72 // SECKEYECParams is a SECItem containing the DER encoded ASN.1 ECParameters 73 // SECKEYECParams is a SECItem containing the DER encoded ASN.1 ECParameters
73 // value. For a named curve, that is just the OBJECT IDENTIFIER of the curve. 74 // value. For a named curve, that is just the OBJECT IDENTIFIER of the curve.
74 // In addition to the oid data, the encoding requires one byte for the ASN.1 75 // In addition to the oid data, the encoding requires one byte for the ASN.1
(...skipping 29 matching lines...) Expand all
104 ECPrivateKey* ECPrivateKey::CreateFromEncryptedPrivateKeyInfo( 105 ECPrivateKey* ECPrivateKey::CreateFromEncryptedPrivateKeyInfo(
105 const std::string& password, 106 const std::string& password,
106 const std::vector<uint8_t>& encrypted_private_key_info, 107 const std::vector<uint8_t>& encrypted_private_key_info,
107 const std::vector<uint8_t>& subject_public_key_info) { 108 const std::vector<uint8_t>& subject_public_key_info) {
108 EnsureNSSInit(); 109 EnsureNSSInit();
109 110
110 ScopedPK11Slot slot(PK11_GetInternalSlot()); 111 ScopedPK11Slot slot(PK11_GetInternalSlot());
111 if (!slot) 112 if (!slot)
112 return nullptr; 113 return nullptr;
113 114
114 scoped_ptr<ECPrivateKey> result(new ECPrivateKey); 115 std::unique_ptr<ECPrivateKey> result(new ECPrivateKey);
115 116
116 SECItem encoded_spki = { 117 SECItem encoded_spki = {
117 siBuffer, 118 siBuffer,
118 const_cast<unsigned char*>(&subject_public_key_info[0]), 119 const_cast<unsigned char*>(&subject_public_key_info[0]),
119 static_cast<unsigned>(subject_public_key_info.size()) 120 static_cast<unsigned>(subject_public_key_info.size())
120 }; 121 };
121 CERTSubjectPublicKeyInfo* decoded_spki = SECKEY_DecodeDERSubjectPublicKeyInfo( 122 CERTSubjectPublicKeyInfo* decoded_spki = SECKEY_DecodeDERSubjectPublicKeyInfo(
122 &encoded_spki); 123 &encoded_spki);
123 if (!decoded_spki) { 124 if (!decoded_spki) {
124 DLOG(ERROR) << "SECKEY_DecodeDERSubjectPublicKeyInfo: " << PORT_GetError(); 125 DLOG(ERROR) << "SECKEY_DecodeDERSubjectPublicKeyInfo: " << PORT_GetError();
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 << PORT_GetError(); 218 << PORT_GetError();
218 SECKEY_DestroyPublicKey(*public_key); 219 SECKEY_DestroyPublicKey(*public_key);
219 *public_key = NULL; 220 *public_key = NULL;
220 return false; 221 return false;
221 } 222 }
222 223
223 return true; 224 return true;
224 } 225 }
225 226
226 ECPrivateKey* ECPrivateKey::Copy() const { 227 ECPrivateKey* ECPrivateKey::Copy() const {
227 scoped_ptr<ECPrivateKey> copy(new ECPrivateKey); 228 std::unique_ptr<ECPrivateKey> copy(new ECPrivateKey);
228 if (key_) { 229 if (key_) {
229 copy->key_ = SECKEY_CopyPrivateKey(key_); 230 copy->key_ = SECKEY_CopyPrivateKey(key_);
230 if (!copy->key_) 231 if (!copy->key_)
231 return NULL; 232 return NULL;
232 } 233 }
233 if (public_key_) { 234 if (public_key_) {
234 copy->public_key_ = SECKEY_CopyPublicKey(public_key_); 235 copy->public_key_ = SECKEY_CopyPublicKey(public_key_);
235 if (!copy->public_key_) 236 if (!copy->public_key_)
236 return NULL; 237 return NULL;
237 } 238 }
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 // parameters. 317 // parameters.
317 output->clear(); 318 output->clear();
318 return AppendAttribute(key_, CKA_VALUE, output) && 319 return AppendAttribute(key_, CKA_VALUE, output) &&
319 output->size() == 32 && 320 output->size() == 32 &&
320 AppendAttribute(key_, CKA_EC_PARAMS, output); 321 AppendAttribute(key_, CKA_EC_PARAMS, output);
321 } 322 }
322 323
323 ECPrivateKey::ECPrivateKey() : key_(NULL), public_key_(NULL) {} 324 ECPrivateKey::ECPrivateKey() : key_(NULL), public_key_(NULL) {}
324 325
325 } // namespace crypto 326 } // namespace crypto
OLDNEW
« no previous file with comments | « components/user_prefs/tracked/pref_hash_calculator.cc ('k') | crypto/ec_private_key_openssl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698