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

Side by Side Diff: chrome/common/net/x509_certificate_model_nss.cc

Issue 182313004: Remove GetPkcs11Id from x509_certificate_model (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: .. Created 6 years, 9 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
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 "chrome/common/net/x509_certificate_model.h" 5 #include "chrome/common/net/x509_certificate_model.h"
6 6
7 #include <cert.h> 7 #include <cert.h>
8 #include <cms.h> 8 #include <cms.h>
9 #include <hasht.h> 9 #include <hasht.h>
10 #include <keyhi.h> // SECKEY_DestroyPrivateKey 10 #include <keyhi.h> // SECKEY_DestroyPrivateKey
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 DCHECK_EQ(cert_nicknames->numnicknames, 251 DCHECK_EQ(cert_nicknames->numnicknames,
252 static_cast<int>(certs.size())); 252 static_cast<int>(certs.size()));
253 253
254 for (int i = 0; i < cert_nicknames->numnicknames; ++i) 254 for (int i = 0; i < cert_nicknames->numnicknames; ++i)
255 nick_names->push_back(cert_nicknames->nicknames[i]); 255 nick_names->push_back(cert_nicknames->nicknames[i]);
256 256
257 CERT_FreeNicknames(cert_nicknames); 257 CERT_FreeNicknames(cert_nicknames);
258 CERT_DestroyCertList(cert_list); 258 CERT_DestroyCertList(cert_list);
259 } 259 }
260 260
261 // For background see this discussion on dev-tech-crypto.lists.mozilla.org:
262 // http://web.archiveorange.com/archive/v/6JJW7E40sypfZGtbkzxX
263 //
264 // NOTE: This function relies on the convention that the same PKCS#11 ID
265 // is shared between a certificate and its associated private and public
266 // keys. I tried to implement this with PK11_GetLowLevelKeyIDForCert(),
267 // but that always returns NULL on Chrome OS for me.
268 std::string GetPkcs11Id(net::X509Certificate::OSCertHandle cert_handle) {
269 std::string pkcs11_id;
270 SECKEYPrivateKey *priv_key = PK11_FindKeyByAnyCert(cert_handle,
271 NULL /* wincx */);
272 if (priv_key) {
273 // Get the CKA_ID attribute for a key.
274 SECItem* sec_item = PK11_GetLowLevelKeyIDForPrivateKey(priv_key);
275 if (sec_item) {
276 pkcs11_id = base::HexEncode(sec_item->data, sec_item->len);
277 SECITEM_FreeItem(sec_item, PR_TRUE);
278 }
279 SECKEY_DestroyPrivateKey(priv_key);
280 }
281 return pkcs11_id;
282 }
283
284 void GetExtensions( 261 void GetExtensions(
285 const string& critical_label, 262 const string& critical_label,
286 const string& non_critical_label, 263 const string& non_critical_label,
287 X509Certificate::OSCertHandle cert_handle, 264 X509Certificate::OSCertHandle cert_handle,
288 Extensions* extensions) { 265 Extensions* extensions) {
289 if (cert_handle->extensions) { 266 if (cert_handle->extensions) {
290 for (size_t i = 0; cert_handle->extensions[i] != NULL; ++i) { 267 for (size_t i = 0; cert_handle->extensions[i] != NULL; ++i) {
291 Extension extension; 268 Extension extension;
292 extension.name = psm::GetOIDText(&cert_handle->extensions[i]->id); 269 extension.name = psm::GetOIDText(&cert_handle->extensions[i]->id);
293 extension.value = ProcessExtension( 270 extension.value = ProcessExtension(
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 string ProcessRawBitsSignatureWrap(X509Certificate::OSCertHandle cert_handle) { 381 string ProcessRawBitsSignatureWrap(X509Certificate::OSCertHandle cert_handle) {
405 return ProcessRawBits(cert_handle->signatureWrap.signature.data, 382 return ProcessRawBits(cert_handle->signatureWrap.signature.data,
406 cert_handle->signatureWrap.signature.len); 383 cert_handle->signatureWrap.signature.len);
407 } 384 }
408 385
409 void RegisterDynamicOids() { 386 void RegisterDynamicOids() {
410 psm::RegisterDynamicOids(); 387 psm::RegisterDynamicOids();
411 } 388 }
412 389
413 } // namespace x509_certificate_model 390 } // namespace x509_certificate_model
OLDNEW
« no previous file with comments | « chrome/common/net/x509_certificate_model.h ('k') | chrome/common/net/x509_certificate_model_openssl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698