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

Side by Side Diff: nss/lib/certdb/alg1485.c

Issue 13898013: Update NSS to NSS_3_15_BETA2. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/nss/
Patch Set: Update NSS versions and tag in README.chromium Created 7 years, 8 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 /* alg1485.c - implementation of RFCs 1485, 1779 and 2253. 1 /* alg1485.c - implementation of RFCs 1485, 1779 and 2253.
2 * 2 *
3 * This Source Code Form is subject to the terms of the Mozilla Public 3 * This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 6
7 #include "prprf.h" 7 #include "prprf.h"
8 #include "cert.h" 8 #include "cert.h"
9 #include "certi.h" 9 #include "certi.h"
10 #include "xconst.h" 10 #include "xconst.h"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 76
77 /* values defined by the CAB Forum for EV */ 77 /* values defined by the CAB Forum for EV */
78 { "incorporationLocality", 128, SEC_OID_EV_INCORPORATION_LOCALITY, 78 { "incorporationLocality", 128, SEC_OID_EV_INCORPORATION_LOCALITY,
79 SEC_ASN1_DS}, 79 SEC_ASN1_DS},
80 { "incorporationState", 128, SEC_OID_EV_INCORPORATION_STATE, 80 { "incorporationState", 128, SEC_OID_EV_INCORPORATION_STATE,
81 SEC_ASN1_DS}, 81 SEC_ASN1_DS},
82 { "incorporationCountry", 2, SEC_OID_EV_INCORPORATION_COUNTRY, 82 { "incorporationCountry", 2, SEC_OID_EV_INCORPORATION_COUNTRY,
83 SEC_ASN1_PRINTABLE_STRING}, 83 SEC_ASN1_PRINTABLE_STRING},
84 { "businessCategory", 64, SEC_OID_BUSINESS_CATEGORY, SEC_ASN1_DS}, 84 { "businessCategory", 64, SEC_OID_BUSINESS_CATEGORY, SEC_ASN1_DS},
85 85
86 /* values defined in X.520 */
87 { "name", 64, SEC_OID_AVA_NAME, SEC_ASN1_DS},
88
86 { 0, 256, SEC_OID_UNKNOWN, 0}, 89 { 0, 256, SEC_OID_UNKNOWN, 0},
87 }; 90 };
88 91
89 /* Table facilitates conversion of ASCII hex to binary. */ 92 /* Table facilitates conversion of ASCII hex to binary. */
90 static const PRInt16 x2b[256] = { 93 static const PRInt16 x2b[256] = {
91 /* #0x */ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 94 /* #0x */ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
92 /* #1x */ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 95 /* #1x */ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
93 /* #2x */ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 96 /* #2x */ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
94 /* #3x */ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, 97 /* #3x */ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1,
95 /* #4x */ -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, 98 /* #4x */ -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,
(...skipping 1092 matching lines...) Expand 10 before | Expand all | Expand 10 after
1188 } 1191 }
1189 } 1192 }
1190 SECITEM_FreeItem(avaValue, PR_TRUE); 1193 SECITEM_FreeItem(avaValue, PR_TRUE);
1191 return buf; 1194 return buf;
1192 } 1195 }
1193 1196
1194 /* RDNs are sorted from most general to most specific. 1197 /* RDNs are sorted from most general to most specific.
1195 * This code returns the FIRST one found, the most general one found. 1198 * This code returns the FIRST one found, the most general one found.
1196 */ 1199 */
1197 static char * 1200 static char *
1198 CERT_GetNameElement(PRArenaPool *arena, CERTName *name, int wantedTag) 1201 CERT_GetNameElement(PRArenaPool *arena, const CERTName *name, int wantedTag)
1199 { 1202 {
1200 CERTRDN** rdns = name->rdns; 1203 CERTRDN** rdns = name->rdns;
1201 CERTRDN* rdn; 1204 CERTRDN* rdn;
1202 CERTAVA* ava = NULL; 1205 CERTAVA* ava = NULL;
1203 1206
1204 while (rdns && (rdn = *rdns++) != 0) { 1207 while (rdns && (rdn = *rdns++) != 0) {
1205 CERTAVA** avas = rdn->avas; 1208 CERTAVA** avas = rdn->avas;
1206 while (avas && (ava = *avas++) != 0) { 1209 while (avas && (ava = *avas++) != 0) {
1207 int tag = CERT_GetAVATag(ava); 1210 int tag = CERT_GetAVATag(ava);
1208 if ( tag == wantedTag ) { 1211 if ( tag == wantedTag ) {
1209 avas = NULL; 1212 avas = NULL;
1210 rdns = NULL; /* break out of all loops */ 1213 rdns = NULL; /* break out of all loops */
1211 } 1214 }
1212 } 1215 }
1213 } 1216 }
1214 return ava ? avaToString(arena, ava) : NULL; 1217 return ava ? avaToString(arena, ava) : NULL;
1215 } 1218 }
1216 1219
1217 /* RDNs are sorted from most general to most specific. 1220 /* RDNs are sorted from most general to most specific.
1218 * This code returns the LAST one found, the most specific one found. 1221 * This code returns the LAST one found, the most specific one found.
1219 * This is particularly appropriate for Common Name. See RFC 2818. 1222 * This is particularly appropriate for Common Name. See RFC 2818.
1220 */ 1223 */
1221 static char * 1224 static char *
1222 CERT_GetLastNameElement(PRArenaPool *arena, CERTName *name, int wantedTag) 1225 CERT_GetLastNameElement(PRArenaPool *arena, const CERTName *name, int wantedTag)
1223 { 1226 {
1224 CERTRDN** rdns = name->rdns; 1227 CERTRDN** rdns = name->rdns;
1225 CERTRDN* rdn; 1228 CERTRDN* rdn;
1226 CERTAVA* lastAva = NULL; 1229 CERTAVA* lastAva = NULL;
1227 1230
1228 while (rdns && (rdn = *rdns++) != 0) { 1231 while (rdns && (rdn = *rdns++) != 0) {
1229 CERTAVA** avas = rdn->avas; 1232 CERTAVA** avas = rdn->avas;
1230 CERTAVA* ava; 1233 CERTAVA* ava;
1231 while (avas && (ava = *avas++) != 0) { 1234 while (avas && (ava = *avas++) != 0) {
1232 int tag = CERT_GetAVATag(ava); 1235 int tag = CERT_GetAVATag(ava);
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
1474 return prev; 1477 return prev;
1475 } 1478 }
1476 return NULL; 1479 return NULL;
1477 } 1480 }
1478 1481
1479 /* This is seriously bogus, now that certs store their email addresses in 1482 /* This is seriously bogus, now that certs store their email addresses in
1480 ** subject Alternative Name extensions. 1483 ** subject Alternative Name extensions.
1481 ** Returns a string allocated by PORT_StrDup, which the caller must free. 1484 ** Returns a string allocated by PORT_StrDup, which the caller must free.
1482 */ 1485 */
1483 char * 1486 char *
1484 CERT_GetCertEmailAddress(CERTName *name) 1487 CERT_GetCertEmailAddress(const CERTName *name)
1485 { 1488 {
1486 char *rawEmailAddr; 1489 char *rawEmailAddr;
1487 char *emailAddr; 1490 char *emailAddr;
1488 1491
1489 1492
1490 rawEmailAddr = CERT_GetNameElement(NULL, name, SEC_OID_PKCS9_EMAIL_ADDRESS); 1493 rawEmailAddr = CERT_GetNameElement(NULL, name, SEC_OID_PKCS9_EMAIL_ADDRESS);
1491 if ( rawEmailAddr == NULL ) { 1494 if ( rawEmailAddr == NULL ) {
1492 rawEmailAddr = CERT_GetNameElement(NULL, name, SEC_OID_RFC1274_MAIL); 1495 rawEmailAddr = CERT_GetNameElement(NULL, name, SEC_OID_RFC1274_MAIL);
1493 } 1496 }
1494 emailAddr = CERT_FixupEmailAddr(rawEmailAddr); 1497 emailAddr = CERT_FixupEmailAddr(rawEmailAddr);
1495 if ( rawEmailAddr ) { 1498 if ( rawEmailAddr ) {
1496 PORT_Free(rawEmailAddr); 1499 PORT_Free(rawEmailAddr);
1497 } 1500 }
1498 return(emailAddr); 1501 return(emailAddr);
1499 } 1502 }
1500 1503
1501 /* The return value must be freed with PORT_Free. */ 1504 /* The return value must be freed with PORT_Free. */
1502 char * 1505 char *
1503 CERT_GetCommonName(CERTName *name) 1506 CERT_GetCommonName(const CERTName *name)
1504 { 1507 {
1505 return(CERT_GetLastNameElement(NULL, name, SEC_OID_AVA_COMMON_NAME)); 1508 return(CERT_GetLastNameElement(NULL, name, SEC_OID_AVA_COMMON_NAME));
1506 } 1509 }
1507 1510
1508 char * 1511 char *
1509 CERT_GetCountryName(CERTName *name) 1512 CERT_GetCountryName(const CERTName *name)
1510 { 1513 {
1511 return(CERT_GetNameElement(NULL, name, SEC_OID_AVA_COUNTRY_NAME)); 1514 return(CERT_GetNameElement(NULL, name, SEC_OID_AVA_COUNTRY_NAME));
1512 } 1515 }
1513 1516
1514 char * 1517 char *
1515 CERT_GetLocalityName(CERTName *name) 1518 CERT_GetLocalityName(const CERTName *name)
1516 { 1519 {
1517 return(CERT_GetNameElement(NULL, name, SEC_OID_AVA_LOCALITY)); 1520 return(CERT_GetNameElement(NULL, name, SEC_OID_AVA_LOCALITY));
1518 } 1521 }
1519 1522
1520 char * 1523 char *
1521 CERT_GetStateName(CERTName *name) 1524 CERT_GetStateName(const CERTName *name)
1522 { 1525 {
1523 return(CERT_GetNameElement(NULL, name, SEC_OID_AVA_STATE_OR_PROVINCE)); 1526 return(CERT_GetNameElement(NULL, name, SEC_OID_AVA_STATE_OR_PROVINCE));
1524 } 1527 }
1525 1528
1526 char * 1529 char *
1527 CERT_GetOrgName(CERTName *name) 1530 CERT_GetOrgName(const CERTName *name)
1528 { 1531 {
1529 return(CERT_GetNameElement(NULL, name, SEC_OID_AVA_ORGANIZATION_NAME)); 1532 return(CERT_GetNameElement(NULL, name, SEC_OID_AVA_ORGANIZATION_NAME));
1530 } 1533 }
1531 1534
1532 char * 1535 char *
1533 CERT_GetDomainComponentName(CERTName *name) 1536 CERT_GetDomainComponentName(const CERTName *name)
1534 { 1537 {
1535 return(CERT_GetNameElement(NULL, name, SEC_OID_AVA_DC)); 1538 return(CERT_GetNameElement(NULL, name, SEC_OID_AVA_DC));
1536 } 1539 }
1537 1540
1538 char * 1541 char *
1539 CERT_GetOrgUnitName(CERTName *name) 1542 CERT_GetOrgUnitName(const CERTName *name)
1540 { 1543 {
1541 return(CERT_GetNameElement(NULL, name, SEC_OID_AVA_ORGANIZATIONAL_UNIT_NAME) ); 1544 return(CERT_GetNameElement(NULL, name, SEC_OID_AVA_ORGANIZATIONAL_UNIT_NAME) );
1542 } 1545 }
1543 1546
1544 char * 1547 char *
1545 CERT_GetDnQualifier(CERTName *name) 1548 CERT_GetDnQualifier(const CERTName *name)
1546 { 1549 {
1547 return(CERT_GetNameElement(NULL, name, SEC_OID_AVA_DN_QUALIFIER)); 1550 return(CERT_GetNameElement(NULL, name, SEC_OID_AVA_DN_QUALIFIER));
1548 } 1551 }
1549 1552
1550 char * 1553 char *
1551 CERT_GetCertUid(CERTName *name) 1554 CERT_GetCertUid(const CERTName *name)
1552 { 1555 {
1553 return(CERT_GetNameElement(NULL, name, SEC_OID_RFC1274_UID)); 1556 return(CERT_GetNameElement(NULL, name, SEC_OID_RFC1274_UID));
1554 } 1557 }
1555 1558
OLDNEW
« no previous file with comments | « nss.gyp ('k') | nss/lib/certdb/cert.h » ('j') | nss/lib/certdb/genname.c » ('J')

Powered by Google App Engine
This is Rietveld 408576698