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

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

Issue 361193003: Eliminate ScopedOpenSSL in favour of scoped_ptr<> specializations. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Android fixes Created 6 years, 5 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) 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 "chrome/common/net/x509_certificate_model.h" 5 #include "chrome/common/net/x509_certificate_model.h"
6 6
7 #include <openssl/bio.h> 7 #include <openssl/bio.h>
8 #include <openssl/obj_mac.h> 8 #include <openssl/obj_mac.h>
9 #include <openssl/sha.h> 9 #include <openssl/sha.h>
10 #include <openssl/x509v3.h> 10 #include <openssl/x509v3.h>
11 11
12 #include "base/i18n/number_formatting.h" 12 #include "base/i18n/number_formatting.h"
13 #include "base/lazy_instance.h" 13 #include "base/lazy_instance.h"
14 #include "base/logging.h" 14 #include "base/logging.h"
15 #include "base/strings/string_number_conversions.h" 15 #include "base/strings/string_number_conversions.h"
16 #include "base/strings/stringprintf.h" 16 #include "base/strings/stringprintf.h"
17 #include "base/strings/utf_string_conversions.h" 17 #include "base/strings/utf_string_conversions.h"
18 #include "crypto/openssl_bio_string.h" 18 #include "crypto/openssl_bio_string.h"
19 #include "crypto/openssl_util.h" 19 #include "crypto/openssl_util.h"
20 #include "crypto/scoped_openssl_types.h"
20 #include "grit/generated_resources.h" 21 #include "grit/generated_resources.h"
21 #include "net/base/net_util.h" 22 #include "net/base/net_util.h"
22 #include "net/cert/x509_util_openssl.h" 23 #include "net/cert/x509_util_openssl.h"
23 #include "ui/base/l10n/l10n_util.h" 24 #include "ui/base/l10n/l10n_util.h"
24 25
25 namespace x509_util = net::x509_util; 26 namespace x509_util = net::x509_util;
26 27
27 namespace x509_certificate_model { 28 namespace x509_certificate_model {
28 29
29 namespace { 30 namespace {
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 static const MaskIdPair usage_string_map[] = { 450 static const MaskIdPair usage_string_map[] = {
450 {NS_SSL_CLIENT, IDS_CERT_USAGE_SSL_CLIENT}, 451 {NS_SSL_CLIENT, IDS_CERT_USAGE_SSL_CLIENT},
451 {NS_SSL_SERVER, IDS_CERT_USAGE_SSL_SERVER}, 452 {NS_SSL_SERVER, IDS_CERT_USAGE_SSL_SERVER},
452 {NS_SMIME, IDS_CERT_EXT_NS_CERT_TYPE_EMAIL}, 453 {NS_SMIME, IDS_CERT_EXT_NS_CERT_TYPE_EMAIL},
453 {NS_OBJSIGN, IDS_CERT_USAGE_OBJECT_SIGNER}, 454 {NS_OBJSIGN, IDS_CERT_USAGE_OBJECT_SIGNER},
454 {NS_SSL_CA, IDS_CERT_USAGE_SSL_CA}, 455 {NS_SSL_CA, IDS_CERT_USAGE_SSL_CA},
455 {NS_SMIME_CA, IDS_CERT_EXT_NS_CERT_TYPE_EMAIL_CA}, 456 {NS_SMIME_CA, IDS_CERT_EXT_NS_CERT_TYPE_EMAIL_CA},
456 {NS_OBJSIGN_CA, IDS_CERT_USAGE_OBJECT_SIGNER}, 457 {NS_OBJSIGN_CA, IDS_CERT_USAGE_OBJECT_SIGNER},
457 }; 458 };
458 459
459 crypto::ScopedOpenSSL<ASN1_BIT_STRING, ASN1_BIT_STRING_free> value( 460 scoped_ptr<ASN1_BIT_STRING,
460 reinterpret_cast<ASN1_BIT_STRING*>(X509V3_EXT_d2i(ex))); 461 crypto::OpenSSLDestroyer<ASN1_BIT_STRING, ASN1_BIT_STRING_free> >
wtc 2014/07/09 15:08:15 I also find the new code less readable because of
462 value(reinterpret_cast<ASN1_BIT_STRING*>(X509V3_EXT_d2i(ex)));
461 if (!value.get()) 463 if (!value.get())
462 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); 464 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR);
463 return ProcessBitField(value.get(), 465 return ProcessBitField(value.get(),
464 usage_string_map, 466 usage_string_map,
465 ARRAYSIZE_UNSAFE(usage_string_map), 467 ARRAYSIZE_UNSAFE(usage_string_map),
466 '\n'); 468 '\n');
467 } 469 }
468 470
469 std::string ProcessKeyUsageExtension(X509_EXTENSION* ex) { 471 std::string ProcessKeyUsageExtension(X509_EXTENSION* ex) {
470 static const MaskIdPair key_usage_string_map[] = { 472 static const MaskIdPair key_usage_string_map[] = {
471 {KU_DIGITAL_SIGNATURE, IDS_CERT_X509_KEY_USAGE_SIGNING}, 473 {KU_DIGITAL_SIGNATURE, IDS_CERT_X509_KEY_USAGE_SIGNING},
472 {KU_NON_REPUDIATION, IDS_CERT_X509_KEY_USAGE_NONREP}, 474 {KU_NON_REPUDIATION, IDS_CERT_X509_KEY_USAGE_NONREP},
473 {KU_KEY_ENCIPHERMENT, IDS_CERT_X509_KEY_USAGE_ENCIPHERMENT}, 475 {KU_KEY_ENCIPHERMENT, IDS_CERT_X509_KEY_USAGE_ENCIPHERMENT},
474 {KU_DATA_ENCIPHERMENT, IDS_CERT_X509_KEY_USAGE_DATA_ENCIPHERMENT}, 476 {KU_DATA_ENCIPHERMENT, IDS_CERT_X509_KEY_USAGE_DATA_ENCIPHERMENT},
475 {KU_KEY_AGREEMENT, IDS_CERT_X509_KEY_USAGE_KEY_AGREEMENT}, 477 {KU_KEY_AGREEMENT, IDS_CERT_X509_KEY_USAGE_KEY_AGREEMENT},
476 {KU_KEY_CERT_SIGN, IDS_CERT_X509_KEY_USAGE_CERT_SIGNER}, 478 {KU_KEY_CERT_SIGN, IDS_CERT_X509_KEY_USAGE_CERT_SIGNER},
477 {KU_CRL_SIGN, IDS_CERT_X509_KEY_USAGE_CRL_SIGNER}, 479 {KU_CRL_SIGN, IDS_CERT_X509_KEY_USAGE_CRL_SIGNER},
478 {KU_ENCIPHER_ONLY, IDS_CERT_X509_KEY_USAGE_ENCIPHER_ONLY}, 480 {KU_ENCIPHER_ONLY, IDS_CERT_X509_KEY_USAGE_ENCIPHER_ONLY},
479 {KU_DECIPHER_ONLY, IDS_CERT_X509_KEY_USAGE_DECIPHER_ONLY}, 481 {KU_DECIPHER_ONLY, IDS_CERT_X509_KEY_USAGE_DECIPHER_ONLY},
480 }; 482 };
481 483
482 crypto::ScopedOpenSSL<ASN1_BIT_STRING, ASN1_BIT_STRING_free> value( 484 scoped_ptr<ASN1_BIT_STRING,
483 reinterpret_cast<ASN1_BIT_STRING*>(X509V3_EXT_d2i(ex))); 485 crypto::OpenSSLDestroyer<ASN1_BIT_STRING, ASN1_BIT_STRING_free> >
486 value(reinterpret_cast<ASN1_BIT_STRING*>(X509V3_EXT_d2i(ex)));
484 if (!value.get()) 487 if (!value.get())
485 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); 488 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR);
486 return ProcessBitField(value.get(), 489 return ProcessBitField(value.get(),
487 key_usage_string_map, 490 key_usage_string_map,
488 ARRAYSIZE_UNSAFE(key_usage_string_map), 491 ARRAYSIZE_UNSAFE(key_usage_string_map),
489 '\n'); 492 '\n');
490 } 493 }
491 494
492 std::string ProcessBasicConstraints(X509_EXTENSION* ex) { 495 std::string ProcessBasicConstraints(X509_EXTENSION* ex) {
493 std::string rv; 496 std::string rv;
494 crypto::ScopedOpenSSL<BASIC_CONSTRAINTS, BASIC_CONSTRAINTS_free> value( 497 scoped_ptr<BASIC_CONSTRAINTS,
495 reinterpret_cast<BASIC_CONSTRAINTS*>(X509V3_EXT_d2i(ex))); 498 crypto::OpenSSLDestroyer<BASIC_CONSTRAINTS,
499 BASIC_CONSTRAINTS_free> >
500 value(reinterpret_cast<BASIC_CONSTRAINTS*>(X509V3_EXT_d2i(ex)));
496 if (!value.get()) 501 if (!value.get())
497 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); 502 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR);
498 if (value.get()->ca) 503 if (value.get()->ca)
499 rv = l10n_util::GetStringUTF8(IDS_CERT_X509_BASIC_CONSTRAINT_IS_CA); 504 rv = l10n_util::GetStringUTF8(IDS_CERT_X509_BASIC_CONSTRAINT_IS_CA);
500 else 505 else
501 rv = l10n_util::GetStringUTF8(IDS_CERT_X509_BASIC_CONSTRAINT_IS_NOT_CA); 506 rv = l10n_util::GetStringUTF8(IDS_CERT_X509_BASIC_CONSTRAINT_IS_NOT_CA);
502 rv += '\n'; 507 rv += '\n';
503 if (value.get()->ca) { 508 if (value.get()->ca) {
504 base::string16 depth; 509 base::string16 depth;
505 if (!value.get()->pathlen) { 510 if (!value.get()->pathlen) {
506 depth = l10n_util::GetStringUTF16( 511 depth = l10n_util::GetStringUTF16(
507 IDS_CERT_X509_BASIC_CONSTRAINT_PATH_LEN_UNLIMITED); 512 IDS_CERT_X509_BASIC_CONSTRAINT_PATH_LEN_UNLIMITED);
508 } else { 513 } else {
509 depth = base::FormatNumber(ASN1_INTEGER_get(value.get()->pathlen)); 514 depth = base::FormatNumber(ASN1_INTEGER_get(value.get()->pathlen));
510 } 515 }
511 rv += l10n_util::GetStringFUTF8(IDS_CERT_X509_BASIC_CONSTRAINT_PATH_LEN, 516 rv += l10n_util::GetStringFUTF8(IDS_CERT_X509_BASIC_CONSTRAINT_PATH_LEN,
512 depth); 517 depth);
513 } 518 }
514 return rv; 519 return rv;
515 } 520 }
516 521
517 std::string ProcessExtKeyUsage(X509_EXTENSION* ex) { 522 std::string ProcessExtKeyUsage(X509_EXTENSION* ex) {
518 std::string rv; 523 std::string rv;
519 crypto::ScopedOpenSSL<EXTENDED_KEY_USAGE, EXTENDED_KEY_USAGE_free> value( 524 scoped_ptr<EXTENDED_KEY_USAGE,
520 reinterpret_cast<EXTENDED_KEY_USAGE*>(X509V3_EXT_d2i(ex))); 525 crypto::OpenSSLDestroyer<EXTENDED_KEY_USAGE,
526 EXTENDED_KEY_USAGE_free> >
527 value(reinterpret_cast<EXTENDED_KEY_USAGE*>(X509V3_EXT_d2i(ex)));
521 if (!value.get()) 528 if (!value.get())
522 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); 529 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR);
523 for (int i = 0; i < sk_ASN1_OBJECT_num(value.get()); i++) { 530 for (int i = 0; i < sk_ASN1_OBJECT_num(value.get()); i++) {
524 ASN1_OBJECT* obj = sk_ASN1_OBJECT_value(value.get(), i); 531 ASN1_OBJECT* obj = sk_ASN1_OBJECT_value(value.get(), i);
525 std::string oid_dump = Asn1ObjectToOIDString(obj); 532 std::string oid_dump = Asn1ObjectToOIDString(obj);
526 std::string oid_text = Asn1ObjectToString(obj); 533 std::string oid_text = Asn1ObjectToString(obj);
527 534
528 // If oid is one we recognize, oid_text will have a text description of the 535 // If oid is one we recognize, oid_text will have a text description of the
529 // OID, which we display along with the oid_dump. If we don't recognize the 536 // OID, which we display along with the oid_dump. If we don't recognize the
530 // OID, they will be the same, so just display the OID alone. 537 // OID, they will be the same, so just display the OID alone.
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
658 std::string ProcessGeneralNames(GENERAL_NAMES* names) { 665 std::string ProcessGeneralNames(GENERAL_NAMES* names) {
659 std::string rv; 666 std::string rv;
660 for (int i = 0; i < sk_GENERAL_NAME_num(names); ++i) { 667 for (int i = 0; i < sk_GENERAL_NAME_num(names); ++i) {
661 GENERAL_NAME* name = sk_GENERAL_NAME_value(names, i); 668 GENERAL_NAME* name = sk_GENERAL_NAME_value(names, i);
662 rv += ProcessGeneralName(name); 669 rv += ProcessGeneralName(name);
663 } 670 }
664 return rv; 671 return rv;
665 } 672 }
666 673
667 std::string ProcessAltName(X509_EXTENSION* ex) { 674 std::string ProcessAltName(X509_EXTENSION* ex) {
668 crypto::ScopedOpenSSL<GENERAL_NAMES, GENERAL_NAMES_free> alt_names( 675 scoped_ptr<GENERAL_NAMES,
669 reinterpret_cast<GENERAL_NAMES*>(X509V3_EXT_d2i(ex))); 676 crypto::OpenSSLDestroyer<GENERAL_NAMES, GENERAL_NAMES_free> >
677 alt_names(reinterpret_cast<GENERAL_NAMES*>(X509V3_EXT_d2i(ex)));
670 if (!alt_names.get()) 678 if (!alt_names.get())
671 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); 679 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR);
672 680
673 return ProcessGeneralNames(alt_names.get()); 681 return ProcessGeneralNames(alt_names.get());
674 } 682 }
675 683
676 std::string ProcessSubjectKeyId(X509_EXTENSION* ex) { 684 std::string ProcessSubjectKeyId(X509_EXTENSION* ex) {
677 crypto::ScopedOpenSSL<ASN1_OCTET_STRING, ASN1_OCTET_STRING_free> value( 685 scoped_ptr<ASN1_OCTET_STRING,
678 reinterpret_cast<ASN1_OCTET_STRING*>(X509V3_EXT_d2i(ex))); 686 crypto::OpenSSLDestroyer<ASN1_OCTET_STRING,
687 ASN1_OCTET_STRING_free> >
688 value(reinterpret_cast<ASN1_OCTET_STRING*>(X509V3_EXT_d2i(ex)));
679 if (!value.get()) 689 if (!value.get())
680 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); 690 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR);
681 691
682 return l10n_util::GetStringFUTF8( 692 return l10n_util::GetStringFUTF8(
683 IDS_CERT_KEYID_FORMAT, 693 IDS_CERT_KEYID_FORMAT,
684 base::ASCIIToUTF16(ProcessRawAsn1String(value.get()))); 694 base::ASCIIToUTF16(ProcessRawAsn1String(value.get())));
685 } 695 }
686 696
687 std::string ProcessAuthKeyId(X509_EXTENSION* ex) { 697 std::string ProcessAuthKeyId(X509_EXTENSION* ex) {
688 std::string rv; 698 std::string rv;
689 crypto::ScopedOpenSSL<AUTHORITY_KEYID, AUTHORITY_KEYID_free> value( 699 scoped_ptr<AUTHORITY_KEYID,
690 reinterpret_cast<AUTHORITY_KEYID*>(X509V3_EXT_d2i(ex))); 700 crypto::OpenSSLDestroyer<AUTHORITY_KEYID, AUTHORITY_KEYID_free> >
701 value(reinterpret_cast<AUTHORITY_KEYID*>(X509V3_EXT_d2i(ex)));
691 if (!value.get()) 702 if (!value.get())
692 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); 703 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR);
693 704
694 if (value.get()->keyid && ASN1_STRING_length(value.get()->keyid) > 0) { 705 if (value.get()->keyid && ASN1_STRING_length(value.get()->keyid) > 0) {
695 rv += l10n_util::GetStringFUTF8( 706 rv += l10n_util::GetStringFUTF8(
696 IDS_CERT_KEYID_FORMAT, 707 IDS_CERT_KEYID_FORMAT,
697 base::ASCIIToUTF16(ProcessRawAsn1String(value.get()->keyid))); 708 base::ASCIIToUTF16(ProcessRawAsn1String(value.get()->keyid)));
698 rv += '\n'; 709 rv += '\n';
699 } 710 }
700 711
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
735 } 746 }
736 if (notice->exptext && notice->exptext->length != 0) { 747 if (notice->exptext && notice->exptext->length != 0) {
737 rv += "\n "; 748 rv += "\n ";
738 rv += Asn1StringToUTF8(notice->exptext); 749 rv += Asn1StringToUTF8(notice->exptext);
739 } 750 }
740 return rv; 751 return rv;
741 } 752 }
742 753
743 std::string ProcessCertificatePolicies(X509_EXTENSION* ex) { 754 std::string ProcessCertificatePolicies(X509_EXTENSION* ex) {
744 std::string rv; 755 std::string rv;
745 crypto::ScopedOpenSSL<CERTIFICATEPOLICIES, CERTIFICATEPOLICIES_free> policies( 756 scoped_ptr<CERTIFICATEPOLICIES,
746 reinterpret_cast<CERTIFICATEPOLICIES*>(X509V3_EXT_d2i(ex))); 757 crypto::OpenSSLDestroyer<CERTIFICATEPOLICIES,
758 CERTIFICATEPOLICIES_free> >
759 policies(reinterpret_cast<CERTIFICATEPOLICIES*>(X509V3_EXT_d2i(ex)));
747 760
748 if (!policies.get()) 761 if (!policies.get())
749 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); 762 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR);
750 763
751 for (int i = 0; i < sk_POLICYINFO_num(policies.get()); ++i) { 764 for (int i = 0; i < sk_POLICYINFO_num(policies.get()); ++i) {
752 POLICYINFO* info = sk_POLICYINFO_value(policies.get(), i); 765 POLICYINFO* info = sk_POLICYINFO_value(policies.get(), i);
753 std::string key = Asn1ObjectToString(info->policyid); 766 std::string key = Asn1ObjectToString(info->policyid);
754 // If we have policy qualifiers, display the oid text 767 // If we have policy qualifiers, display the oid text
755 // with a ':', otherwise just put the oid text and a newline. 768 // with a ':', otherwise just put the oid text and a newline.
756 if (info->qualifiers && sk_POLICYQUALINFO_num(info->qualifiers)) { 769 if (info->qualifiers && sk_POLICYQUALINFO_num(info->qualifiers)) {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
806 {6, IDS_CERT_REVOCATION_REASON_CERTIFICATE_HOLD}, 819 {6, IDS_CERT_REVOCATION_REASON_CERTIFICATE_HOLD},
807 {7, IDS_CERT_REVOCATION_REASON_PRIVILEGE_WITHDRAWN}, 820 {7, IDS_CERT_REVOCATION_REASON_PRIVILEGE_WITHDRAWN},
808 {8, IDS_CERT_REVOCATION_REASON_AA_COMPROMISE}, 821 {8, IDS_CERT_REVOCATION_REASON_AA_COMPROMISE},
809 }; 822 };
810 // OpenSSL doesn't define constants for the DIST_POINT type field. These 823 // OpenSSL doesn't define constants for the DIST_POINT type field. These
811 // values are from reading openssl/crypto/x509v3/v3_crld.c 824 // values are from reading openssl/crypto/x509v3/v3_crld.c
812 const int kDistPointFullName = 0; 825 const int kDistPointFullName = 0;
813 const int kDistPointRelativeName = 1; 826 const int kDistPointRelativeName = 1;
814 827
815 std::string rv; 828 std::string rv;
816 crypto::ScopedOpenSSL<CRL_DIST_POINTS, CRL_DIST_POINTS_free> dist_points( 829 scoped_ptr<CRL_DIST_POINTS,
817 reinterpret_cast<CRL_DIST_POINTS*>(X509V3_EXT_d2i(ex))); 830 crypto::OpenSSLDestroyer<CRL_DIST_POINTS, CRL_DIST_POINTS_free> >
831 dist_points(reinterpret_cast<CRL_DIST_POINTS*>(X509V3_EXT_d2i(ex)));
818 832
819 if (!dist_points.get()) 833 if (!dist_points.get())
820 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); 834 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR);
821 835
822 for (int i = 0; i < sk_DIST_POINT_num(dist_points.get()); ++i) { 836 for (int i = 0; i < sk_DIST_POINT_num(dist_points.get()); ++i) {
823 DIST_POINT* point = sk_DIST_POINT_value(dist_points.get(), i); 837 DIST_POINT* point = sk_DIST_POINT_value(dist_points.get(), i);
824 if (point->distpoint) { 838 if (point->distpoint) {
825 switch (point->distpoint->type) { 839 switch (point->distpoint->type) {
826 case kDistPointFullName: 840 case kDistPointFullName:
827 rv += ProcessGeneralNames(point->distpoint->name.fullname); 841 rv += ProcessGeneralNames(point->distpoint->name.fullname);
(...skipping 19 matching lines...) Expand all
847 IDS_CERT_ISSUER_FORMAT, 861 IDS_CERT_ISSUER_FORMAT,
848 base::UTF8ToUTF16(ProcessGeneralNames(point->CRLissuer))); 862 base::UTF8ToUTF16(ProcessGeneralNames(point->CRLissuer)));
849 } 863 }
850 } 864 }
851 865
852 return rv; 866 return rv;
853 } 867 }
854 868
855 std::string ProcessAuthInfoAccess(X509_EXTENSION* ex) { 869 std::string ProcessAuthInfoAccess(X509_EXTENSION* ex) {
856 std::string rv; 870 std::string rv;
857 crypto::ScopedOpenSSL<AUTHORITY_INFO_ACCESS, AUTHORITY_INFO_ACCESS_free> aia( 871 scoped_ptr<AUTHORITY_INFO_ACCESS,
858 reinterpret_cast<AUTHORITY_INFO_ACCESS*>(X509V3_EXT_d2i(ex))); 872 crypto::OpenSSLDestroyer<AUTHORITY_INFO_ACCESS,
873 AUTHORITY_INFO_ACCESS_free> >
874 aia(reinterpret_cast<AUTHORITY_INFO_ACCESS*>(X509V3_EXT_d2i(ex)));
859 875
860 if (!aia.get()) 876 if (!aia.get())
861 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); 877 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR);
862 878
863 for (int i = 0; i < sk_ACCESS_DESCRIPTION_num(aia.get()); ++i) { 879 for (int i = 0; i < sk_ACCESS_DESCRIPTION_num(aia.get()); ++i) {
864 ACCESS_DESCRIPTION* desc = sk_ACCESS_DESCRIPTION_value(aia.get(), i); 880 ACCESS_DESCRIPTION* desc = sk_ACCESS_DESCRIPTION_value(aia.get(), i);
865 881
866 base::string16 location_str = 882 base::string16 location_str =
867 base::UTF8ToUTF16(ProcessGeneralName(desc->location)); 883 base::UTF8ToUTF16(ProcessGeneralName(desc->location));
868 switch (OBJ_obj2nid(desc->method)) { 884 switch (OBJ_obj2nid(desc->method)) {
(...skipping 11 matching lines...) Expand all
880 base::UTF8ToUTF16(Asn1ObjectToString(desc->method)), 896 base::UTF8ToUTF16(Asn1ObjectToString(desc->method)),
881 location_str); 897 location_str);
882 break; 898 break;
883 } 899 }
884 } 900 }
885 return rv; 901 return rv;
886 } 902 }
887 903
888 std::string ProcessIA5StringData(ASN1_OCTET_STRING* asn1_string) { 904 std::string ProcessIA5StringData(ASN1_OCTET_STRING* asn1_string) {
889 const unsigned char* data = ASN1_STRING_data(asn1_string); 905 const unsigned char* data = ASN1_STRING_data(asn1_string);
890 crypto::ScopedOpenSSL<ASN1_IA5STRING, ASN1_IA5STRING_free> ia5_string( 906 scoped_ptr<ASN1_IA5STRING,
891 d2i_ASN1_IA5STRING(NULL, &data, ASN1_STRING_length(asn1_string))); 907 crypto::OpenSSLDestroyer<ASN1_IA5STRING, ASN1_IA5STRING_free> >
908 ia5_string(
909 d2i_ASN1_IA5STRING(NULL, &data, ASN1_STRING_length(asn1_string)));
892 910
893 if (!ia5_string.get()) 911 if (!ia5_string.get())
894 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); 912 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR);
895 913
896 return std::string( 914 return std::string(
897 reinterpret_cast<char*>(ASN1_STRING_data(ia5_string.get())), 915 reinterpret_cast<char*>(ASN1_STRING_data(ia5_string.get())),
898 ASN1_STRING_length(ia5_string.get())); 916 ASN1_STRING_length(ia5_string.get()));
899 } 917 }
900 918
901 std::string ProcessBMPStringData(ASN1_OCTET_STRING* asn1_string) { 919 std::string ProcessBMPStringData(ASN1_OCTET_STRING* asn1_string) {
902 const unsigned char* data = ASN1_STRING_data(asn1_string); 920 const unsigned char* data = ASN1_STRING_data(asn1_string);
903 crypto::ScopedOpenSSL<ASN1_BMPSTRING, ASN1_BMPSTRING_free> bmp_string( 921 scoped_ptr<ASN1_BMPSTRING,
904 d2i_ASN1_BMPSTRING(NULL, &data, ASN1_STRING_length(asn1_string))); 922 crypto::OpenSSLDestroyer<ASN1_BMPSTRING, ASN1_BMPSTRING_free> >
923 bmp_string(
924 d2i_ASN1_BMPSTRING(NULL, &data, ASN1_STRING_length(asn1_string)));
905 925
906 if (!bmp_string.get()) 926 if (!bmp_string.get())
907 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); 927 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR);
908 928
909 return Asn1StringToUTF8(bmp_string.get()); 929 return Asn1StringToUTF8(bmp_string.get());
910 } 930 }
911 931
912 std::string X509ExtensionValueToString(X509_EXTENSION* ex) { 932 std::string X509ExtensionValueToString(X509_EXTENSION* ex) {
913 g_dynamic_oid_registerer.Get(); 933 g_dynamic_oid_registerer.Get();
914 int nid = OBJ_obj2nid(X509_EXTENSION_get_object(ex)); 934 int nid = OBJ_obj2nid(X509_EXTENSION_get_object(ex));
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
956 } // namespace 976 } // namespace
957 977
958 using net::X509Certificate; 978 using net::X509Certificate;
959 979
960 std::string GetCertNameOrNickname(X509Certificate::OSCertHandle cert_handle) { 980 std::string GetCertNameOrNickname(X509Certificate::OSCertHandle cert_handle) {
961 std::string name = 981 std::string name =
962 ProcessIDN(GetSubjectCommonName(cert_handle, std::string())); 982 ProcessIDN(GetSubjectCommonName(cert_handle, std::string()));
963 if (!name.empty()) 983 if (!name.empty())
964 return name; 984 return name;
965 985
966 crypto::ScopedOpenSSL<BIO, BIO_free_all> bio(crypto::BIO_new_string(&name)); 986 crypto::ScopedBIO bio(crypto::BIO_new_string(&name));
967 if (!bio.get()) 987 if (!bio.get())
968 return name; 988 return name;
969 X509_NAME_print_ex(bio.get(), 989 X509_NAME_print_ex(bio.get(),
970 X509_get_subject_name(cert_handle), 990 X509_get_subject_name(cert_handle),
971 0 /* indent */, 991 0 /* indent */,
972 XN_FLAG_RFC2253 & ~ASN1_STRFLGS_ESC_MSB); 992 XN_FLAG_RFC2253 & ~ASN1_STRFLGS_ESC_MSB);
973 return name; 993 return name;
974 } 994 }
975 995
976 std::string GetTokenName(X509Certificate::OSCertHandle cert_handle) { 996 std::string GetTokenName(X509Certificate::OSCertHandle cert_handle) {
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
1066 1086
1067 std::string GetTitle(net::X509Certificate::OSCertHandle cert_handle) { 1087 std::string GetTitle(net::X509Certificate::OSCertHandle cert_handle) {
1068 // TODO(mattm): merge GetTitle and GetCertNameOrNickname? 1088 // TODO(mattm): merge GetTitle and GetCertNameOrNickname?
1069 // Is there any reason GetCertNameOrNickname calls ProcessIDN and this 1089 // Is there any reason GetCertNameOrNickname calls ProcessIDN and this
1070 // doesn't? 1090 // doesn't?
1071 std::string title = 1091 std::string title =
1072 GetSubjectCommonName(cert_handle, std::string()); 1092 GetSubjectCommonName(cert_handle, std::string());
1073 if (!title.empty()) 1093 if (!title.empty())
1074 return title; 1094 return title;
1075 1095
1076 crypto::ScopedOpenSSL<BIO, BIO_free_all> bio(crypto::BIO_new_string(&title)); 1096 crypto::ScopedBIO bio(crypto::BIO_new_string(&title));
1077 if (!bio.get()) 1097 if (!bio.get())
1078 return title; 1098 return title;
1079 X509_NAME_print_ex(bio.get(), 1099 X509_NAME_print_ex(bio.get(),
1080 X509_get_subject_name(cert_handle), 1100 X509_get_subject_name(cert_handle),
1081 0 /* indent */, 1101 0 /* indent */,
1082 XN_FLAG_RFC2253 & ~ASN1_STRFLGS_ESC_MSB); 1102 XN_FLAG_RFC2253 & ~ASN1_STRFLGS_ESC_MSB);
1083 return title; 1103 return title;
1084 } 1104 }
1085 1105
1086 std::string GetIssuerName(net::X509Certificate::OSCertHandle cert_handle) { 1106 std::string GetIssuerName(net::X509Certificate::OSCertHandle cert_handle) {
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
1170 return ""; 1190 return "";
1171 } 1191 }
1172 1192
1173 std::string ProcessRawBitsSignatureWrap( 1193 std::string ProcessRawBitsSignatureWrap(
1174 net::X509Certificate::OSCertHandle cert_handle) { 1194 net::X509Certificate::OSCertHandle cert_handle) {
1175 // TODO(bulach): implement me. 1195 // TODO(bulach): implement me.
1176 return ""; 1196 return "";
1177 } 1197 }
1178 1198
1179 } // namespace x509_certificate_model 1199 } // namespace x509_certificate_model
OLDNEW
« no previous file with comments | « no previous file | content/child/webcrypto/platform_crypto_openssl.cc » ('j') | crypto/ec_signature_creator_openssl.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698