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

Side by Side Diff: net/cert/x509_certificate_openssl.cc

Issue 2731603002: Check TBSCertificate.algorithm and Certificate.signatureAlgorithm for (Closed)
Patch Set: Use rsleevi's background comment Created 3 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
« no previous file with comments | « net/cert/x509_certificate_nss.cc ('k') | net/cert/x509_certificate_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
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 "net/cert/x509_certificate.h" 5 #include "net/cert/x509_certificate.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/memory/singleton.h" 8 #include "base/memory/singleton.h"
9 #include "base/numerics/safe_conversions.h" 9 #include "base/numerics/safe_conversions.h"
10 #include "base/pickle.h" 10 #include "base/pickle.h"
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 *type = kPublicKeyTypeECDSA; 370 *type = kPublicKeyTypeECDSA;
371 *size_bits = EVP_PKEY_bits(key); 371 *size_bits = EVP_PKEY_bits(key);
372 break; 372 break;
373 case EVP_PKEY_DH: 373 case EVP_PKEY_DH:
374 *type = kPublicKeyTypeDH; 374 *type = kPublicKeyTypeDH;
375 *size_bits = EVP_PKEY_size(key) * 8; 375 *size_bits = EVP_PKEY_size(key) * 8;
376 break; 376 break;
377 } 377 }
378 } 378 }
379 379
380 // static
381 X509Certificate::SignatureHashAlgorithm
382 X509Certificate::GetSignatureHashAlgorithm(OSCertHandle cert_handle) {
383 int sig_alg = OBJ_obj2nid(cert_handle->sig_alg->algorithm);
384 if (sig_alg == NID_md2WithRSAEncryption)
385 return kSignatureHashAlgorithmMd2;
386 if (sig_alg == NID_md4WithRSAEncryption)
387 return kSignatureHashAlgorithmMd4;
388 if (sig_alg == NID_md5WithRSAEncryption || sig_alg == NID_md5WithRSA)
389 return kSignatureHashAlgorithmMd5;
390 if (sig_alg == NID_sha1WithRSAEncryption || sig_alg == NID_dsaWithSHA ||
391 sig_alg == NID_dsaWithSHA1 || sig_alg == NID_dsaWithSHA1_2 ||
392 sig_alg == NID_sha1WithRSA || sig_alg == NID_ecdsa_with_SHA1) {
393 return kSignatureHashAlgorithmSha1;
394 }
395 return kSignatureHashAlgorithmOther;
396 }
397
398 bool X509Certificate::IsIssuedByEncoded( 380 bool X509Certificate::IsIssuedByEncoded(
399 const std::vector<std::string>& valid_issuers) { 381 const std::vector<std::string>& valid_issuers) {
400 if (valid_issuers.empty()) 382 if (valid_issuers.empty())
401 return false; 383 return false;
402 384
403 // Convert to a temporary list of X509_NAME objects. 385 // Convert to a temporary list of X509_NAME objects.
404 // It will own the objects it points to. 386 // It will own the objects it points to.
405 bssl::UniquePtr<STACK_OF(X509_NAME)> issuer_names(sk_X509_NAME_new_null()); 387 bssl::UniquePtr<STACK_OF(X509_NAME)> issuer_names(sk_X509_NAME_new_null());
406 if (!issuer_names.get()) 388 if (!issuer_names.get())
407 return false; 389 return false;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 bool X509Certificate::IsSelfSigned(OSCertHandle cert_handle) { 432 bool X509Certificate::IsSelfSigned(OSCertHandle cert_handle) {
451 bssl::UniquePtr<EVP_PKEY> scoped_key(X509_get_pubkey(cert_handle)); 433 bssl::UniquePtr<EVP_PKEY> scoped_key(X509_get_pubkey(cert_handle));
452 if (!scoped_key) 434 if (!scoped_key)
453 return false; 435 return false;
454 if (!X509_verify(cert_handle, scoped_key.get())) 436 if (!X509_verify(cert_handle, scoped_key.get()))
455 return false; 437 return false;
456 return X509_check_issued(cert_handle, cert_handle) == X509_V_OK; 438 return X509_check_issued(cert_handle, cert_handle) == X509_V_OK;
457 } 439 }
458 440
459 } // namespace net 441 } // namespace net
OLDNEW
« no previous file with comments | « net/cert/x509_certificate_nss.cc ('k') | net/cert/x509_certificate_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698