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 |