Chromium Code Reviews| Index: net/base/x509_cert_types_mac.cc |
| diff --git a/net/base/x509_cert_types_mac.cc b/net/base/x509_cert_types_mac.cc |
| index 7647d93cd46134b8a396560c51f7d3efcdce1c8c..7f192b1f8727bc3e5f36c9450c7a55e1beaa90dc 100644 |
| --- a/net/base/x509_cert_types_mac.cc |
| +++ b/net/base/x509_cert_types_mac.cc |
| @@ -54,48 +54,38 @@ const CSSM_OID* kOIDs[] = { |
| // These are used to parse the contents of a raw |
| // BER DistinguishedName structure. |
| -struct KeyValuePair { |
|
Ryan Sleevi
2011/12/21 00:10:18
This structure effectively mirrored the existing C
|
| - enum ValueType { |
| - kTypeOther = 0, |
| - kTypePrintableString, |
| - kTypeIA5String, |
| - kTypeT61String, |
| - kTypeUTF8String, |
| - kTypeBMPString, |
| - kTypeUniversalString, |
| - }; |
| - |
| - CSSM_OID key; |
| - ValueType value_type; |
| - CSSM_DATA value; |
| -}; |
| - |
| const SecAsn1Template kStringValueTemplate[] = { |
| - { SEC_ASN1_CHOICE, offsetof(KeyValuePair, value_type), }, |
| + { SEC_ASN1_CHOICE, offsetof(CSSM_X509_TYPE_VALUE_PAIR, valueType), }, |
| { SEC_ASN1_PRINTABLE_STRING, |
| - offsetof(KeyValuePair, value), 0, KeyValuePair::kTypePrintableString }, |
| + offsetof(CSSM_X509_TYPE_VALUE_PAIR, value), 0, |
| + BER_TAG_PRINTABLE_STRING }, |
| { SEC_ASN1_IA5_STRING, |
| - offsetof(KeyValuePair, value), 0, KeyValuePair::kTypeIA5String }, |
| + offsetof(CSSM_X509_TYPE_VALUE_PAIR, value), 0, |
| + BER_TAG_IA5_STRING }, |
| { SEC_ASN1_T61_STRING, |
| - offsetof(KeyValuePair, value), 0, KeyValuePair::kTypeT61String }, |
| + offsetof(CSSM_X509_TYPE_VALUE_PAIR, value), 0, |
| + BER_TAG_T61_STRING }, |
| { SEC_ASN1_UTF8_STRING, |
| - offsetof(KeyValuePair, value), 0, KeyValuePair::kTypeUTF8String }, |
| + offsetof(CSSM_X509_TYPE_VALUE_PAIR, value), 0, |
| + BER_TAG_PKIX_UTF8_STRING }, |
| { SEC_ASN1_BMP_STRING, |
| - offsetof(KeyValuePair, value), 0, KeyValuePair::kTypeBMPString }, |
| + offsetof(CSSM_X509_TYPE_VALUE_PAIR, value), 0, |
| + BER_TAG_PKIX_BMP_STRING }, |
| { SEC_ASN1_UNIVERSAL_STRING, |
| - offsetof(KeyValuePair, value), 0, KeyValuePair::kTypeUniversalString }, |
| + offsetof(CSSM_X509_TYPE_VALUE_PAIR, value), 0, |
| + BER_TAG_PKIX_UNIVERSAL_STRING }, |
| { 0, } |
| }; |
| const SecAsn1Template kKeyValuePairTemplate[] = { |
| - { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(KeyValuePair) }, |
| - { SEC_ASN1_OBJECT_ID, offsetof(KeyValuePair, key), }, |
| + { SEC_ASN1_SEQUENCE, 0, NULL, sizeof(CSSM_X509_TYPE_VALUE_PAIR) }, |
| + { SEC_ASN1_OBJECT_ID, offsetof(CSSM_X509_TYPE_VALUE_PAIR, type), }, |
| { SEC_ASN1_INLINE, 0, &kStringValueTemplate, }, |
| { 0, } |
| }; |
| struct KeyValuePairs { |
| - KeyValuePair* pairs; |
| + CSSM_X509_TYPE_VALUE_PAIR* pairs; |
| }; |
| const SecAsn1Template kKeyValuePairSetTemplate[] = { |
| @@ -233,43 +223,43 @@ bool CertPrincipal::ParseDistinguishedName(const void* ber_name_data, |
| DCHECK(arraysize(kOIDs) == arraysize(values)); |
| for (int rdn = 0; name[rdn].pairs_list; ++rdn) { |
| - KeyValuePair *pair; |
| + CSSM_X509_TYPE_VALUE_PAIR* pair; |
| for (int pair_index = 0; |
| NULL != (pair = name[rdn].pairs_list[0][pair_index].pairs); |
| ++pair_index) { |
| - switch (pair->value_type) { |
| - case KeyValuePair::kTypeIA5String: // ASCII (that means 7-bit!) |
| - case KeyValuePair::kTypePrintableString: // a subset of ASCII |
| - case KeyValuePair::kTypeUTF8String: // UTF-8 |
| - AddTypeValuePair(pair->key, DataToString(pair->value), values); |
| + switch (pair->valueType) { |
| + case BER_TAG_IA5_STRING: // ASCII (that means 7-bit!) |
| + case BER_TAG_PRINTABLE_STRING: // a subset of ASCII |
| + case BER_TAG_PKIX_UTF8_STRING: // UTF-8 |
| + AddTypeValuePair(pair->type, DataToString(pair->value), values); |
| break; |
| - case KeyValuePair::kTypeT61String: // T61, pretend it's Latin-1 |
| - AddTypeValuePair(pair->key, |
| + case BER_TAG_T61_STRING: // T61, pretend it's Latin-1 |
| + AddTypeValuePair(pair->type, |
| Latin1DataToUTF8String(pair->value), |
| values); |
| break; |
| - case KeyValuePair::kTypeBMPString: { // UTF-16, big-endian |
| + case BER_TAG_PKIX_BMP_STRING: { // UTF-16, big-endian |
| std::string value; |
| UTF16BigEndianToUTF8(reinterpret_cast<char16*>(pair->value.Data), |
| pair->value.Length / sizeof(char16), |
| &value); |
| - AddTypeValuePair(pair->key, value, values); |
| + AddTypeValuePair(pair->type, value, values); |
| break; |
| } |
| - case KeyValuePair::kTypeUniversalString: { // UTF-32, big-endian |
| + case BER_TAG_PKIX_UNIVERSAL_STRING: { // UTF-32, big-endian |
| std::string value; |
| UTF32BigEndianToUTF8(reinterpret_cast<char32*>(pair->value.Data), |
| pair->value.Length / sizeof(char32), |
| &value); |
| - AddTypeValuePair(pair->key, value, values); |
| + AddTypeValuePair(pair->type, value, values); |
| break; |
| } |
| default: |
| - DCHECK_EQ(pair->value_type, KeyValuePair::kTypeOther); |
| + DCHECK_EQ(pair->valueType, BER_TAG_UNKNOWN); |
| // We don't know what data type this is, but we'll store it as a blob. |
| // Displaying the string may not work, but at least it can be compared |
| // byte-for-byte by a Matches() call. |
| - AddTypeValuePair(pair->key, DataToString(pair->value), values); |
| + AddTypeValuePair(pair->type, DataToString(pair->value), values); |
| break; |
| } |
| } |
| @@ -285,37 +275,6 @@ bool CertPrincipal::ParseDistinguishedName(const void* ber_name_data, |
| return true; |
| } |
| -void CertPrincipal::Parse(const CSSM_X509_NAME* name) { |
| - std::vector<std::string> common_names, locality_names, state_names, |
| - country_names; |
| - |
| - std::vector<std::string>* values[] = { |
| - &common_names, &locality_names, |
| - &state_names, &country_names, |
| - &(this->street_addresses), |
| - &(this->organization_names), |
| - &(this->organization_unit_names), |
| - &(this->domain_components) |
| - }; |
| - DCHECK(arraysize(kOIDs) == arraysize(values)); |
| - |
| - for (size_t rdn = 0; rdn < name->numberOfRDNs; ++rdn) { |
| - CSSM_X509_RDN rdn_struct = name->RelativeDistinguishedName[rdn]; |
| - for (size_t pair = 0; pair < rdn_struct.numberOfPairs; ++pair) { |
| - CSSM_X509_TYPE_VALUE_PAIR pair_struct = |
| - rdn_struct.AttributeTypeAndValue[pair]; |
| - AddTypeValuePair(pair_struct.type, |
| - DataToString(pair_struct.value), |
| - values); |
| - } |
| - } |
| - |
| - SetSingle(common_names, &this->common_name); |
| - SetSingle(locality_names, &this->locality_name); |
| - SetSingle(state_names, &this->state_or_province_name); |
| - SetSingle(country_names, &this->country_name); |
| -} |
| - |
| bool CertPrincipal::Matches(const CertPrincipal& against) const { |
| return match(common_name, against.common_name) && |
| match(locality_name, against.locality_name) && |