OLD | NEW |
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 10 matching lines...) Expand all Loading... |
21 | 21 |
22 /* local type for directory string--could be printable_string or utf8 */ | 22 /* local type for directory string--could be printable_string or utf8 */ |
23 #define SEC_ASN1_DS SEC_ASN1_HIGH_TAG_NUMBER | 23 #define SEC_ASN1_DS SEC_ASN1_HIGH_TAG_NUMBER |
24 | 24 |
25 /* Add new entries to this table, and maybe to function ParseRFC1485AVA */ | 25 /* Add new entries to this table, and maybe to function ParseRFC1485AVA */ |
26 static const NameToKind name2kinds[] = { | 26 static const NameToKind name2kinds[] = { |
27 /* IANA registered type names | 27 /* IANA registered type names |
28 * (See: http://www.iana.org/assignments/ldap-parameters) | 28 * (See: http://www.iana.org/assignments/ldap-parameters) |
29 */ | 29 */ |
30 /* RFC 3280, 4630 MUST SUPPORT */ | 30 /* RFC 3280, 4630 MUST SUPPORT */ |
31 { "CN", 64, SEC_OID_AVA_COMMON_NAME, SEC_ASN1_DS}, | 31 { "CN", 640, SEC_OID_AVA_COMMON_NAME, SEC_ASN1_DS}, |
32 { "ST", 128, SEC_OID_AVA_STATE_OR_PROVINCE, | 32 { "ST", 128, SEC_OID_AVA_STATE_OR_PROVINCE, |
33 SEC_ASN1_DS}, | 33 SEC_ASN1_DS}, |
34 { "O", 64, SEC_OID_AVA_ORGANIZATION_NAME, | 34 { "O", 128, SEC_OID_AVA_ORGANIZATION_NAME, |
35 SEC_ASN1_DS}, | 35 SEC_ASN1_DS}, |
36 { "OU", 64, SEC_OID_AVA_ORGANIZATIONAL_UNIT_NAME, | 36 { "OU", 128, SEC_OID_AVA_ORGANIZATIONAL_UNIT_NAME, |
37 SEC_ASN1_DS}, | 37 SEC_ASN1_DS}, |
38 { "dnQualifier", 32767, SEC_OID_AVA_DN_QUALIFIER, SEC_ASN1_PRINTABLE_STRING}
, | 38 { "dnQualifier", 32767, SEC_OID_AVA_DN_QUALIFIER, SEC_ASN1_PRINTABLE_STRING}
, |
39 { "C", 2, SEC_OID_AVA_COUNTRY_NAME, SEC_ASN1_PRINTABLE_STRING}
, | 39 { "C", 2, SEC_OID_AVA_COUNTRY_NAME, SEC_ASN1_PRINTABLE_STRING}
, |
40 { "serialNumber", 64, SEC_OID_AVA_SERIAL_NUMBER,SEC_ASN1_PRINTABLE_STRING}
, | 40 { "serialNumber", 64, SEC_OID_AVA_SERIAL_NUMBER,SEC_ASN1_PRINTABLE_STRING}
, |
41 | 41 |
42 /* RFC 3280, 4630 SHOULD SUPPORT */ | 42 /* RFC 3280, 4630 SHOULD SUPPORT */ |
43 { "L", 128, SEC_OID_AVA_LOCALITY, SEC_ASN1_DS}, | 43 { "L", 128, SEC_OID_AVA_LOCALITY, SEC_ASN1_DS}, |
44 { "title", 64, SEC_OID_AVA_TITLE, SEC_ASN1_DS}, | 44 { "title", 64, SEC_OID_AVA_TITLE, SEC_ASN1_DS}, |
45 { "SN", 64, SEC_OID_AVA_SURNAME, SEC_ASN1_DS}, | 45 { "SN", 64, SEC_OID_AVA_SURNAME, SEC_ASN1_DS}, |
46 { "givenName", 64, SEC_OID_AVA_GIVEN_NAME, SEC_ASN1_DS}, | 46 { "givenName", 64, SEC_OID_AVA_GIVEN_NAME, SEC_ASN1_DS}, |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
370 const char *bp; | 370 const char *bp; |
371 int vt = -1; | 371 int vt = -1; |
372 int valLen; | 372 int valLen; |
373 SECOidTag kind = SEC_OID_UNKNOWN; | 373 SECOidTag kind = SEC_OID_UNKNOWN; |
374 SECStatus rv = SECFailure; | 374 SECStatus rv = SECFailure; |
375 SECItem derOid = { 0, NULL, 0 }; | 375 SECItem derOid = { 0, NULL, 0 }; |
376 SECItem derVal = { 0, NULL, 0}; | 376 SECItem derVal = { 0, NULL, 0}; |
377 char sep = 0; | 377 char sep = 0; |
378 | 378 |
379 char tagBuf[32]; | 379 char tagBuf[32]; |
380 char valBuf[384]; | 380 char valBuf[1024]; |
381 | 381 |
382 PORT_Assert(arena); | 382 PORT_Assert(arena); |
383 if (SECSuccess != scanTag(pbp, endptr, tagBuf, sizeof tagBuf) || | 383 if (SECSuccess != scanTag(pbp, endptr, tagBuf, sizeof tagBuf) || |
384 !(valLen = scanVal(pbp, endptr, valBuf, sizeof valBuf))) { | 384 !(valLen = scanVal(pbp, endptr, valBuf, sizeof valBuf))) { |
385 goto loser; | 385 goto loser; |
386 } | 386 } |
387 | 387 |
388 bp = *pbp; | 388 bp = *pbp; |
389 if (bp < endptr) { | 389 if (bp < endptr) { |
390 sep = *bp++; /* skip over separator */ | 390 sep = *bp++; /* skip over separator */ |
(...skipping 491 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
882 * The chief difference between CERT_N2A_STRICT and CERT_N2A_INVERTIBLE | 882 * The chief difference between CERT_N2A_STRICT and CERT_N2A_INVERTIBLE |
883 * is that the latter forces DirectoryStrings to be hex encoded. | 883 * is that the latter forces DirectoryStrings to be hex encoded. |
884 * | 884 * |
885 * As a simplification, we assume the value is correctly encoded for | 885 * As a simplification, we assume the value is correctly encoded for |
886 * its encoding type. That is, we do not test that all the characters | 886 * its encoding type. That is, we do not test that all the characters |
887 * in a string encoded type are allowed by that type. We assume it. | 887 * in a string encoded type are allowed by that type. We assume it. |
888 */ | 888 */ |
889 static SECStatus | 889 static SECStatus |
890 AppendAVA(stringBuf *bufp, CERTAVA *ava, CertStrictnessLevel strict) | 890 AppendAVA(stringBuf *bufp, CERTAVA *ava, CertStrictnessLevel strict) |
891 { | 891 { |
892 #define TMPBUF_LEN 384 | 892 #define TMPBUF_LEN 2048 |
893 const NameToKind *pn2k = name2kinds; | 893 const NameToKind *pn2k = name2kinds; |
894 SECItem *avaValue = NULL; | 894 SECItem *avaValue = NULL; |
895 char *unknownTag = NULL; | 895 char *unknownTag = NULL; |
896 char *encodedAVA = NULL; | 896 char *encodedAVA = NULL; |
897 PRBool useHex = PR_FALSE; /* use =#hexXXXX form */ | 897 PRBool useHex = PR_FALSE; /* use =#hexXXXX form */ |
898 PRBool truncateName = PR_FALSE; | 898 PRBool truncateName = PR_FALSE; |
899 PRBool truncateValue = PR_FALSE; | 899 PRBool truncateValue = PR_FALSE; |
900 SECOidTag endKind; | 900 SECOidTag endKind; |
901 SECStatus rv; | 901 SECStatus rv; |
902 unsigned int len; | 902 unsigned int len; |
(...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1551 { | 1551 { |
1552 return(CERT_GetNameElement(NULL, name, SEC_OID_AVA_DN_QUALIFIER)); | 1552 return(CERT_GetNameElement(NULL, name, SEC_OID_AVA_DN_QUALIFIER)); |
1553 } | 1553 } |
1554 | 1554 |
1555 char * | 1555 char * |
1556 CERT_GetCertUid(const CERTName *name) | 1556 CERT_GetCertUid(const CERTName *name) |
1557 { | 1557 { |
1558 return(CERT_GetNameElement(NULL, name, SEC_OID_RFC1274_UID)); | 1558 return(CERT_GetNameElement(NULL, name, SEC_OID_RFC1274_UID)); |
1559 } | 1559 } |
1560 | 1560 |
OLD | NEW |