| OLD | NEW |
| 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/obj_mac.h> | 7 #include <openssl/obj_mac.h> |
| 8 #include <openssl/sha.h> | 8 #include <openssl/sha.h> |
| 9 #include <openssl/stack.h> | 9 #include <openssl/stack.h> |
| 10 #include <openssl/x509.h> | 10 #include <openssl/x509.h> |
| (...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 458 static const MaskIdPair usage_string_map[] = { | 458 static const MaskIdPair usage_string_map[] = { |
| 459 {NS_SSL_CLIENT, IDS_CERT_USAGE_SSL_CLIENT}, | 459 {NS_SSL_CLIENT, IDS_CERT_USAGE_SSL_CLIENT}, |
| 460 {NS_SSL_SERVER, IDS_CERT_USAGE_SSL_SERVER}, | 460 {NS_SSL_SERVER, IDS_CERT_USAGE_SSL_SERVER}, |
| 461 {NS_SMIME, IDS_CERT_EXT_NS_CERT_TYPE_EMAIL}, | 461 {NS_SMIME, IDS_CERT_EXT_NS_CERT_TYPE_EMAIL}, |
| 462 {NS_OBJSIGN, IDS_CERT_USAGE_OBJECT_SIGNER}, | 462 {NS_OBJSIGN, IDS_CERT_USAGE_OBJECT_SIGNER}, |
| 463 {NS_SSL_CA, IDS_CERT_USAGE_SSL_CA}, | 463 {NS_SSL_CA, IDS_CERT_USAGE_SSL_CA}, |
| 464 {NS_SMIME_CA, IDS_CERT_EXT_NS_CERT_TYPE_EMAIL_CA}, | 464 {NS_SMIME_CA, IDS_CERT_EXT_NS_CERT_TYPE_EMAIL_CA}, |
| 465 {NS_OBJSIGN_CA, IDS_CERT_USAGE_OBJECT_SIGNER}, | 465 {NS_OBJSIGN_CA, IDS_CERT_USAGE_OBJECT_SIGNER}, |
| 466 }; | 466 }; |
| 467 | 467 |
| 468 crypto::ScopedOpenSSL<ASN1_BIT_STRING, ASN1_BIT_STRING_free>::Type value( | 468 crypto::ScopedOpenSSL<ASN1_BIT_STRING, ASN1_BIT_STRING_free> value( |
| 469 reinterpret_cast<ASN1_BIT_STRING*>(X509V3_EXT_d2i(ex))); | 469 reinterpret_cast<ASN1_BIT_STRING*>(X509V3_EXT_d2i(ex))); |
| 470 if (!value.get()) | 470 if (!value.get()) |
| 471 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); | 471 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); |
| 472 return ProcessBitField(value.get(), | 472 return ProcessBitField(value.get(), |
| 473 usage_string_map, | 473 usage_string_map, |
| 474 arraysize(usage_string_map), | 474 arraysize(usage_string_map), |
| 475 '\n'); | 475 '\n'); |
| 476 } | 476 } |
| 477 | 477 |
| 478 std::string ProcessKeyUsageExtension(X509_EXTENSION* ex) { | 478 std::string ProcessKeyUsageExtension(X509_EXTENSION* ex) { |
| 479 static const MaskIdPair key_usage_string_map[] = { | 479 static const MaskIdPair key_usage_string_map[] = { |
| 480 {KU_DIGITAL_SIGNATURE, IDS_CERT_X509_KEY_USAGE_SIGNING}, | 480 {KU_DIGITAL_SIGNATURE, IDS_CERT_X509_KEY_USAGE_SIGNING}, |
| 481 {KU_NON_REPUDIATION, IDS_CERT_X509_KEY_USAGE_NONREP}, | 481 {KU_NON_REPUDIATION, IDS_CERT_X509_KEY_USAGE_NONREP}, |
| 482 {KU_KEY_ENCIPHERMENT, IDS_CERT_X509_KEY_USAGE_ENCIPHERMENT}, | 482 {KU_KEY_ENCIPHERMENT, IDS_CERT_X509_KEY_USAGE_ENCIPHERMENT}, |
| 483 {KU_DATA_ENCIPHERMENT, IDS_CERT_X509_KEY_USAGE_DATA_ENCIPHERMENT}, | 483 {KU_DATA_ENCIPHERMENT, IDS_CERT_X509_KEY_USAGE_DATA_ENCIPHERMENT}, |
| 484 {KU_KEY_AGREEMENT, IDS_CERT_X509_KEY_USAGE_KEY_AGREEMENT}, | 484 {KU_KEY_AGREEMENT, IDS_CERT_X509_KEY_USAGE_KEY_AGREEMENT}, |
| 485 {KU_KEY_CERT_SIGN, IDS_CERT_X509_KEY_USAGE_CERT_SIGNER}, | 485 {KU_KEY_CERT_SIGN, IDS_CERT_X509_KEY_USAGE_CERT_SIGNER}, |
| 486 {KU_CRL_SIGN, IDS_CERT_X509_KEY_USAGE_CRL_SIGNER}, | 486 {KU_CRL_SIGN, IDS_CERT_X509_KEY_USAGE_CRL_SIGNER}, |
| 487 {KU_ENCIPHER_ONLY, IDS_CERT_X509_KEY_USAGE_ENCIPHER_ONLY}, | 487 {KU_ENCIPHER_ONLY, IDS_CERT_X509_KEY_USAGE_ENCIPHER_ONLY}, |
| 488 {KU_DECIPHER_ONLY, IDS_CERT_X509_KEY_USAGE_DECIPHER_ONLY}, | 488 {KU_DECIPHER_ONLY, IDS_CERT_X509_KEY_USAGE_DECIPHER_ONLY}, |
| 489 }; | 489 }; |
| 490 | 490 |
| 491 crypto::ScopedOpenSSL<ASN1_BIT_STRING, ASN1_BIT_STRING_free>::Type value( | 491 crypto::ScopedOpenSSL<ASN1_BIT_STRING, ASN1_BIT_STRING_free> value( |
| 492 reinterpret_cast<ASN1_BIT_STRING*>(X509V3_EXT_d2i(ex))); | 492 reinterpret_cast<ASN1_BIT_STRING*>(X509V3_EXT_d2i(ex))); |
| 493 if (!value.get()) | 493 if (!value.get()) |
| 494 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); | 494 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); |
| 495 return ProcessBitField(value.get(), | 495 return ProcessBitField(value.get(), |
| 496 key_usage_string_map, | 496 key_usage_string_map, |
| 497 arraysize(key_usage_string_map), | 497 arraysize(key_usage_string_map), |
| 498 '\n'); | 498 '\n'); |
| 499 } | 499 } |
| 500 | 500 |
| 501 std::string ProcessBasicConstraints(X509_EXTENSION* ex) { | 501 std::string ProcessBasicConstraints(X509_EXTENSION* ex) { |
| 502 std::string rv; | 502 std::string rv; |
| 503 crypto::ScopedOpenSSL<BASIC_CONSTRAINTS, BASIC_CONSTRAINTS_free>::Type value( | 503 crypto::ScopedOpenSSL<BASIC_CONSTRAINTS, BASIC_CONSTRAINTS_free> value( |
| 504 reinterpret_cast<BASIC_CONSTRAINTS*>(X509V3_EXT_d2i(ex))); | 504 reinterpret_cast<BASIC_CONSTRAINTS*>(X509V3_EXT_d2i(ex))); |
| 505 if (!value.get()) | 505 if (!value.get()) |
| 506 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); | 506 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); |
| 507 if (value.get()->ca) | 507 if (value.get()->ca) |
| 508 rv = l10n_util::GetStringUTF8(IDS_CERT_X509_BASIC_CONSTRAINT_IS_CA); | 508 rv = l10n_util::GetStringUTF8(IDS_CERT_X509_BASIC_CONSTRAINT_IS_CA); |
| 509 else | 509 else |
| 510 rv = l10n_util::GetStringUTF8(IDS_CERT_X509_BASIC_CONSTRAINT_IS_NOT_CA); | 510 rv = l10n_util::GetStringUTF8(IDS_CERT_X509_BASIC_CONSTRAINT_IS_NOT_CA); |
| 511 rv += '\n'; | 511 rv += '\n'; |
| 512 if (value.get()->ca) { | 512 if (value.get()->ca) { |
| 513 base::string16 depth; | 513 base::string16 depth; |
| 514 if (!value.get()->pathlen) { | 514 if (!value.get()->pathlen) { |
| 515 depth = l10n_util::GetStringUTF16( | 515 depth = l10n_util::GetStringUTF16( |
| 516 IDS_CERT_X509_BASIC_CONSTRAINT_PATH_LEN_UNLIMITED); | 516 IDS_CERT_X509_BASIC_CONSTRAINT_PATH_LEN_UNLIMITED); |
| 517 } else { | 517 } else { |
| 518 depth = base::FormatNumber(ASN1_INTEGER_get(value.get()->pathlen)); | 518 depth = base::FormatNumber(ASN1_INTEGER_get(value.get()->pathlen)); |
| 519 } | 519 } |
| 520 rv += l10n_util::GetStringFUTF8(IDS_CERT_X509_BASIC_CONSTRAINT_PATH_LEN, | 520 rv += l10n_util::GetStringFUTF8(IDS_CERT_X509_BASIC_CONSTRAINT_PATH_LEN, |
| 521 depth); | 521 depth); |
| 522 } | 522 } |
| 523 return rv; | 523 return rv; |
| 524 } | 524 } |
| 525 | 525 |
| 526 std::string ProcessExtKeyUsage(X509_EXTENSION* ex) { | 526 std::string ProcessExtKeyUsage(X509_EXTENSION* ex) { |
| 527 std::string rv; | 527 std::string rv; |
| 528 crypto::ScopedOpenSSL<EXTENDED_KEY_USAGE, EXTENDED_KEY_USAGE_free>::Type | 528 crypto::ScopedOpenSSL<EXTENDED_KEY_USAGE, EXTENDED_KEY_USAGE_free> value( |
| 529 value(reinterpret_cast<EXTENDED_KEY_USAGE*>(X509V3_EXT_d2i(ex))); | 529 reinterpret_cast<EXTENDED_KEY_USAGE*>(X509V3_EXT_d2i(ex))); |
| 530 if (!value.get()) | 530 if (!value.get()) |
| 531 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); | 531 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); |
| 532 for (size_t i = 0; i < sk_ASN1_OBJECT_num(value.get()); i++) { | 532 for (size_t i = 0; i < sk_ASN1_OBJECT_num(value.get()); i++) { |
| 533 ASN1_OBJECT* obj = sk_ASN1_OBJECT_value(value.get(), i); | 533 ASN1_OBJECT* obj = sk_ASN1_OBJECT_value(value.get(), i); |
| 534 std::string oid_dump = Asn1ObjectToOIDString(obj); | 534 std::string oid_dump = Asn1ObjectToOIDString(obj); |
| 535 std::string oid_text = Asn1ObjectToString(obj); | 535 std::string oid_text = Asn1ObjectToString(obj); |
| 536 | 536 |
| 537 // If oid is one we recognize, oid_text will have a text description of the | 537 // If oid is one we recognize, oid_text will have a text description of the |
| 538 // OID, which we display along with the oid_dump. If we don't recognize the | 538 // OID, which we display along with the oid_dump. If we don't recognize the |
| 539 // OID, they will be the same, so just display the OID alone. | 539 // OID, they will be the same, so just display the OID alone. |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 667 std::string ProcessGeneralNames(GENERAL_NAMES* names) { | 667 std::string ProcessGeneralNames(GENERAL_NAMES* names) { |
| 668 std::string rv; | 668 std::string rv; |
| 669 for (size_t i = 0; i < sk_GENERAL_NAME_num(names); ++i) { | 669 for (size_t i = 0; i < sk_GENERAL_NAME_num(names); ++i) { |
| 670 GENERAL_NAME* name = sk_GENERAL_NAME_value(names, i); | 670 GENERAL_NAME* name = sk_GENERAL_NAME_value(names, i); |
| 671 rv += ProcessGeneralName(name); | 671 rv += ProcessGeneralName(name); |
| 672 } | 672 } |
| 673 return rv; | 673 return rv; |
| 674 } | 674 } |
| 675 | 675 |
| 676 std::string ProcessAltName(X509_EXTENSION* ex) { | 676 std::string ProcessAltName(X509_EXTENSION* ex) { |
| 677 crypto::ScopedOpenSSL<GENERAL_NAMES, GENERAL_NAMES_free>::Type alt_names( | 677 crypto::ScopedOpenSSL<GENERAL_NAMES, GENERAL_NAMES_free> alt_names( |
| 678 reinterpret_cast<GENERAL_NAMES*>(X509V3_EXT_d2i(ex))); | 678 reinterpret_cast<GENERAL_NAMES*>(X509V3_EXT_d2i(ex))); |
| 679 if (!alt_names.get()) | 679 if (!alt_names.get()) |
| 680 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); | 680 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); |
| 681 | 681 |
| 682 return ProcessGeneralNames(alt_names.get()); | 682 return ProcessGeneralNames(alt_names.get()); |
| 683 } | 683 } |
| 684 | 684 |
| 685 std::string ProcessSubjectKeyId(X509_EXTENSION* ex) { | 685 std::string ProcessSubjectKeyId(X509_EXTENSION* ex) { |
| 686 crypto::ScopedOpenSSL<ASN1_OCTET_STRING, ASN1_OCTET_STRING_free>::Type value( | 686 crypto::ScopedOpenSSL<ASN1_OCTET_STRING, ASN1_OCTET_STRING_free> value( |
| 687 reinterpret_cast<ASN1_OCTET_STRING*>(X509V3_EXT_d2i(ex))); | 687 reinterpret_cast<ASN1_OCTET_STRING*>(X509V3_EXT_d2i(ex))); |
| 688 if (!value.get()) | 688 if (!value.get()) |
| 689 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); | 689 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); |
| 690 | 690 |
| 691 return l10n_util::GetStringFUTF8( | 691 return l10n_util::GetStringFUTF8( |
| 692 IDS_CERT_KEYID_FORMAT, | 692 IDS_CERT_KEYID_FORMAT, |
| 693 base::ASCIIToUTF16(ProcessRawAsn1String(value.get()))); | 693 base::ASCIIToUTF16(ProcessRawAsn1String(value.get()))); |
| 694 } | 694 } |
| 695 | 695 |
| 696 std::string ProcessAuthKeyId(X509_EXTENSION* ex) { | 696 std::string ProcessAuthKeyId(X509_EXTENSION* ex) { |
| 697 std::string rv; | 697 std::string rv; |
| 698 crypto::ScopedOpenSSL<AUTHORITY_KEYID, AUTHORITY_KEYID_free>::Type value( | 698 crypto::ScopedOpenSSL<AUTHORITY_KEYID, AUTHORITY_KEYID_free> value( |
| 699 reinterpret_cast<AUTHORITY_KEYID*>(X509V3_EXT_d2i(ex))); | 699 reinterpret_cast<AUTHORITY_KEYID*>(X509V3_EXT_d2i(ex))); |
| 700 if (!value.get()) | 700 if (!value.get()) |
| 701 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); | 701 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); |
| 702 | 702 |
| 703 if (value.get()->keyid && ASN1_STRING_length(value.get()->keyid) > 0) { | 703 if (value.get()->keyid && ASN1_STRING_length(value.get()->keyid) > 0) { |
| 704 rv += l10n_util::GetStringFUTF8( | 704 rv += l10n_util::GetStringFUTF8( |
| 705 IDS_CERT_KEYID_FORMAT, | 705 IDS_CERT_KEYID_FORMAT, |
| 706 base::ASCIIToUTF16(ProcessRawAsn1String(value.get()->keyid))); | 706 base::ASCIIToUTF16(ProcessRawAsn1String(value.get()->keyid))); |
| 707 rv += '\n'; | 707 rv += '\n'; |
| 708 } | 708 } |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 744 } | 744 } |
| 745 if (notice->exptext && notice->exptext->length != 0) { | 745 if (notice->exptext && notice->exptext->length != 0) { |
| 746 rv += "\n "; | 746 rv += "\n "; |
| 747 rv += Asn1StringToUTF8(notice->exptext); | 747 rv += Asn1StringToUTF8(notice->exptext); |
| 748 } | 748 } |
| 749 return rv; | 749 return rv; |
| 750 } | 750 } |
| 751 | 751 |
| 752 std::string ProcessCertificatePolicies(X509_EXTENSION* ex) { | 752 std::string ProcessCertificatePolicies(X509_EXTENSION* ex) { |
| 753 std::string rv; | 753 std::string rv; |
| 754 crypto::ScopedOpenSSL<CERTIFICATEPOLICIES, CERTIFICATEPOLICIES_free>::Type | 754 crypto::ScopedOpenSSL<CERTIFICATEPOLICIES, CERTIFICATEPOLICIES_free> policies( |
| 755 policies(reinterpret_cast<CERTIFICATEPOLICIES*>(X509V3_EXT_d2i(ex))); | 755 reinterpret_cast<CERTIFICATEPOLICIES*>(X509V3_EXT_d2i(ex))); |
| 756 | 756 |
| 757 if (!policies.get()) | 757 if (!policies.get()) |
| 758 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); | 758 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); |
| 759 | 759 |
| 760 for (size_t i = 0; i < sk_POLICYINFO_num(policies.get()); ++i) { | 760 for (size_t i = 0; i < sk_POLICYINFO_num(policies.get()); ++i) { |
| 761 POLICYINFO* info = sk_POLICYINFO_value(policies.get(), i); | 761 POLICYINFO* info = sk_POLICYINFO_value(policies.get(), i); |
| 762 std::string key = Asn1ObjectToString(info->policyid); | 762 std::string key = Asn1ObjectToString(info->policyid); |
| 763 // If we have policy qualifiers, display the oid text | 763 // If we have policy qualifiers, display the oid text |
| 764 // with a ':', otherwise just put the oid text and a newline. | 764 // with a ':', otherwise just put the oid text and a newline. |
| 765 if (info->qualifiers && sk_POLICYQUALINFO_num(info->qualifiers)) { | 765 if (info->qualifiers && sk_POLICYQUALINFO_num(info->qualifiers)) { |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 815 {6, IDS_CERT_REVOCATION_REASON_CERTIFICATE_HOLD}, | 815 {6, IDS_CERT_REVOCATION_REASON_CERTIFICATE_HOLD}, |
| 816 {7, IDS_CERT_REVOCATION_REASON_PRIVILEGE_WITHDRAWN}, | 816 {7, IDS_CERT_REVOCATION_REASON_PRIVILEGE_WITHDRAWN}, |
| 817 {8, IDS_CERT_REVOCATION_REASON_AA_COMPROMISE}, | 817 {8, IDS_CERT_REVOCATION_REASON_AA_COMPROMISE}, |
| 818 }; | 818 }; |
| 819 // OpenSSL doesn't define constants for the DIST_POINT type field. These | 819 // OpenSSL doesn't define constants for the DIST_POINT type field. These |
| 820 // values are from reading openssl/crypto/x509v3/v3_crld.c | 820 // values are from reading openssl/crypto/x509v3/v3_crld.c |
| 821 const int kDistPointFullName = 0; | 821 const int kDistPointFullName = 0; |
| 822 const int kDistPointRelativeName = 1; | 822 const int kDistPointRelativeName = 1; |
| 823 | 823 |
| 824 std::string rv; | 824 std::string rv; |
| 825 crypto::ScopedOpenSSL<CRL_DIST_POINTS, CRL_DIST_POINTS_free>::Type | 825 crypto::ScopedOpenSSL<CRL_DIST_POINTS, CRL_DIST_POINTS_free> dist_points( |
| 826 dist_points(reinterpret_cast<CRL_DIST_POINTS*>(X509V3_EXT_d2i(ex))); | 826 reinterpret_cast<CRL_DIST_POINTS*>(X509V3_EXT_d2i(ex))); |
| 827 | 827 |
| 828 if (!dist_points.get()) | 828 if (!dist_points.get()) |
| 829 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); | 829 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); |
| 830 | 830 |
| 831 for (size_t i = 0; i < sk_DIST_POINT_num(dist_points.get()); ++i) { | 831 for (size_t i = 0; i < sk_DIST_POINT_num(dist_points.get()); ++i) { |
| 832 DIST_POINT* point = sk_DIST_POINT_value(dist_points.get(), i); | 832 DIST_POINT* point = sk_DIST_POINT_value(dist_points.get(), i); |
| 833 if (point->distpoint) { | 833 if (point->distpoint) { |
| 834 switch (point->distpoint->type) { | 834 switch (point->distpoint->type) { |
| 835 case kDistPointFullName: | 835 case kDistPointFullName: |
| 836 rv += ProcessGeneralNames(point->distpoint->name.fullname); | 836 rv += ProcessGeneralNames(point->distpoint->name.fullname); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 856 IDS_CERT_ISSUER_FORMAT, | 856 IDS_CERT_ISSUER_FORMAT, |
| 857 base::UTF8ToUTF16(ProcessGeneralNames(point->CRLissuer))); | 857 base::UTF8ToUTF16(ProcessGeneralNames(point->CRLissuer))); |
| 858 } | 858 } |
| 859 } | 859 } |
| 860 | 860 |
| 861 return rv; | 861 return rv; |
| 862 } | 862 } |
| 863 | 863 |
| 864 std::string ProcessAuthInfoAccess(X509_EXTENSION* ex) { | 864 std::string ProcessAuthInfoAccess(X509_EXTENSION* ex) { |
| 865 std::string rv; | 865 std::string rv; |
| 866 crypto::ScopedOpenSSL<AUTHORITY_INFO_ACCESS, AUTHORITY_INFO_ACCESS_free>::Type | 866 crypto::ScopedOpenSSL<AUTHORITY_INFO_ACCESS, AUTHORITY_INFO_ACCESS_free> aia( |
| 867 aia(reinterpret_cast<AUTHORITY_INFO_ACCESS*>(X509V3_EXT_d2i(ex))); | 867 reinterpret_cast<AUTHORITY_INFO_ACCESS*>(X509V3_EXT_d2i(ex))); |
| 868 | 868 |
| 869 if (!aia.get()) | 869 if (!aia.get()) |
| 870 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); | 870 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); |
| 871 | 871 |
| 872 for (size_t i = 0; i < sk_ACCESS_DESCRIPTION_num(aia.get()); ++i) { | 872 for (size_t i = 0; i < sk_ACCESS_DESCRIPTION_num(aia.get()); ++i) { |
| 873 ACCESS_DESCRIPTION* desc = sk_ACCESS_DESCRIPTION_value(aia.get(), i); | 873 ACCESS_DESCRIPTION* desc = sk_ACCESS_DESCRIPTION_value(aia.get(), i); |
| 874 | 874 |
| 875 base::string16 location_str = | 875 base::string16 location_str = |
| 876 base::UTF8ToUTF16(ProcessGeneralName(desc->location)); | 876 base::UTF8ToUTF16(ProcessGeneralName(desc->location)); |
| 877 switch (OBJ_obj2nid(desc->method)) { | 877 switch (OBJ_obj2nid(desc->method)) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 889 base::UTF8ToUTF16(Asn1ObjectToString(desc->method)), | 889 base::UTF8ToUTF16(Asn1ObjectToString(desc->method)), |
| 890 location_str); | 890 location_str); |
| 891 break; | 891 break; |
| 892 } | 892 } |
| 893 } | 893 } |
| 894 return rv; | 894 return rv; |
| 895 } | 895 } |
| 896 | 896 |
| 897 std::string ProcessIA5StringData(ASN1_OCTET_STRING* asn1_string) { | 897 std::string ProcessIA5StringData(ASN1_OCTET_STRING* asn1_string) { |
| 898 const unsigned char* data = ASN1_STRING_data(asn1_string); | 898 const unsigned char* data = ASN1_STRING_data(asn1_string); |
| 899 crypto::ScopedOpenSSL<ASN1_IA5STRING, ASN1_IA5STRING_free>::Type ia5_string( | 899 crypto::ScopedOpenSSL<ASN1_IA5STRING, ASN1_IA5STRING_free> ia5_string( |
| 900 d2i_ASN1_IA5STRING(NULL, &data, ASN1_STRING_length(asn1_string))); | 900 d2i_ASN1_IA5STRING(NULL, &data, ASN1_STRING_length(asn1_string))); |
| 901 | 901 |
| 902 if (!ia5_string.get()) | 902 if (!ia5_string.get()) |
| 903 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); | 903 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); |
| 904 | 904 |
| 905 return std::string( | 905 return std::string( |
| 906 reinterpret_cast<char*>(ASN1_STRING_data(ia5_string.get())), | 906 reinterpret_cast<char*>(ASN1_STRING_data(ia5_string.get())), |
| 907 ASN1_STRING_length(ia5_string.get())); | 907 ASN1_STRING_length(ia5_string.get())); |
| 908 } | 908 } |
| 909 | 909 |
| 910 std::string ProcessBMPStringData(ASN1_OCTET_STRING* asn1_string) { | 910 std::string ProcessBMPStringData(ASN1_OCTET_STRING* asn1_string) { |
| 911 const unsigned char* data = ASN1_STRING_data(asn1_string); | 911 const unsigned char* data = ASN1_STRING_data(asn1_string); |
| 912 crypto::ScopedOpenSSL<ASN1_BMPSTRING, ASN1_BMPSTRING_free>::Type bmp_string( | 912 crypto::ScopedOpenSSL<ASN1_BMPSTRING, ASN1_BMPSTRING_free> bmp_string( |
| 913 d2i_ASN1_BMPSTRING(NULL, &data, ASN1_STRING_length(asn1_string))); | 913 d2i_ASN1_BMPSTRING(NULL, &data, ASN1_STRING_length(asn1_string))); |
| 914 | 914 |
| 915 if (!bmp_string.get()) | 915 if (!bmp_string.get()) |
| 916 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); | 916 return l10n_util::GetStringUTF8(IDS_CERT_EXTENSION_DUMP_ERROR); |
| 917 | 917 |
| 918 return Asn1StringToUTF8(bmp_string.get()); | 918 return Asn1StringToUTF8(bmp_string.get()); |
| 919 } | 919 } |
| 920 | 920 |
| 921 std::string X509ExtensionValueToString(X509_EXTENSION* ex) { | 921 std::string X509ExtensionValueToString(X509_EXTENSION* ex) { |
| 922 g_dynamic_oid_registerer.Get(); | 922 g_dynamic_oid_registerer.Get(); |
| (...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1203 return rv; | 1203 return rv; |
| 1204 } | 1204 } |
| 1205 } | 1205 } |
| 1206 | 1206 |
| 1207 std::string ProcessRawBitsSignatureWrap( | 1207 std::string ProcessRawBitsSignatureWrap( |
| 1208 net::X509Certificate::OSCertHandle cert_handle) { | 1208 net::X509Certificate::OSCertHandle cert_handle) { |
| 1209 return ProcessRawAsn1String(cert_handle->signature); | 1209 return ProcessRawAsn1String(cert_handle->signature); |
| 1210 } | 1210 } |
| 1211 | 1211 |
| 1212 } // namespace x509_certificate_model | 1212 } // namespace x509_certificate_model |
| OLD | NEW |