1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/security/nss/lib/util/secoid.c Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,2197 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +#include "secoid.h" 1.9 +#include "pkcs11t.h" 1.10 +#include "secitem.h" 1.11 +#include "secerr.h" 1.12 +#include "prenv.h" 1.13 +#include "plhash.h" 1.14 +#include "nssrwlk.h" 1.15 +#include "nssutil.h" 1.16 + 1.17 +/* Library identity and versioning */ 1.18 + 1.19 +#if defined(DEBUG) 1.20 +#define _DEBUG_STRING " (debug)" 1.21 +#else 1.22 +#define _DEBUG_STRING "" 1.23 +#endif 1.24 + 1.25 +/* 1.26 + * Version information for the 'ident' and 'what commands 1.27 + * 1.28 + * NOTE: the first component of the concatenated rcsid string 1.29 + * must not end in a '$' to prevent rcs keyword substitution. 1.30 + */ 1.31 +const char __nss_util_rcsid[] = "$Header: NSS " NSSUTIL_VERSION _DEBUG_STRING 1.32 + " " __DATE__ " " __TIME__ " $"; 1.33 +const char __nss_util_sccsid[] = "@(#)NSS " NSSUTIL_VERSION _DEBUG_STRING 1.34 + " " __DATE__ " " __TIME__; 1.35 + 1.36 +/* MISSI Mosaic Object ID space */ 1.37 +/* USGov algorithm OID space: { 2 16 840 1 101 } */ 1.38 +#define USGOV 0x60, 0x86, 0x48, 0x01, 0x65 1.39 +#define MISSI USGOV, 0x02, 0x01, 0x01 1.40 +#define MISSI_OLD_KEA_DSS MISSI, 0x0c 1.41 +#define MISSI_OLD_DSS MISSI, 0x02 1.42 +#define MISSI_KEA_DSS MISSI, 0x14 1.43 +#define MISSI_DSS MISSI, 0x13 1.44 +#define MISSI_KEA MISSI, 0x0a 1.45 +#define MISSI_ALT_KEA MISSI, 0x16 1.46 + 1.47 +#define NISTALGS USGOV, 3, 4 1.48 +#define AES NISTALGS, 1 1.49 +#define SHAXXX NISTALGS, 2 1.50 +#define DSA2 NISTALGS, 3 1.51 + 1.52 +/** 1.53 + ** The Netscape OID space is allocated by Terry Hayes. If you need 1.54 + ** a piece of the space, contact him at thayes@netscape.com. 1.55 + **/ 1.56 + 1.57 +/* Netscape Communications Corporation Object ID space */ 1.58 +/* { 2 16 840 1 113730 } */ 1.59 +#define NETSCAPE_OID 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42 1.60 +#define NETSCAPE_CERT_EXT NETSCAPE_OID, 0x01 1.61 +#define NETSCAPE_DATA_TYPE NETSCAPE_OID, 0x02 1.62 +/* netscape directory oid - owned by Mark Smith (mcs@netscape.com) */ 1.63 +#define NETSCAPE_DIRECTORY NETSCAPE_OID, 0x03 1.64 +#define NETSCAPE_POLICY NETSCAPE_OID, 0x04 1.65 +#define NETSCAPE_CERT_SERVER NETSCAPE_OID, 0x05 1.66 +#define NETSCAPE_ALGS NETSCAPE_OID, 0x06 /* algorithm OIDs */ 1.67 +#define NETSCAPE_NAME_COMPONENTS NETSCAPE_OID, 0x07 1.68 + 1.69 +#define NETSCAPE_CERT_EXT_AIA NETSCAPE_CERT_EXT, 0x10 1.70 +#define NETSCAPE_CERT_SERVER_CRMF NETSCAPE_CERT_SERVER, 0x01 1.71 + 1.72 +/* these are old and should go away soon */ 1.73 +#define OLD_NETSCAPE 0x60, 0x86, 0x48, 0xd8, 0x6a 1.74 +#define NS_CERT_EXT OLD_NETSCAPE, 0x01 1.75 +#define NS_FILE_TYPE OLD_NETSCAPE, 0x02 1.76 +#define NS_IMAGE_TYPE OLD_NETSCAPE, 0x03 1.77 + 1.78 +/* RSA OID name space */ 1.79 +#define RSADSI 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d 1.80 +#define PKCS RSADSI, 0x01 1.81 +#define DIGEST RSADSI, 0x02 1.82 +#define CIPHER RSADSI, 0x03 1.83 +#define PKCS1 PKCS, 0x01 1.84 +#define PKCS5 PKCS, 0x05 1.85 +#define PKCS7 PKCS, 0x07 1.86 +#define PKCS9 PKCS, 0x09 1.87 +#define PKCS12 PKCS, 0x0c 1.88 + 1.89 +/* Other OID name spaces */ 1.90 +#define ALGORITHM 0x2b, 0x0e, 0x03, 0x02 1.91 +#define X500 0x55 1.92 +#define X520_ATTRIBUTE_TYPE X500, 0x04 1.93 +#define X500_ALG X500, 0x08 1.94 +#define X500_ALG_ENCRYPTION X500_ALG, 0x01 1.95 + 1.96 +/** X.509 v3 Extension OID 1.97 + ** {joint-iso-ccitt (2) ds(5) 29} 1.98 + **/ 1.99 +#define ID_CE_OID X500, 0x1d 1.100 + 1.101 +#define RFC1274_ATTR_TYPE 0x09, 0x92, 0x26, 0x89, 0x93, 0xf2, 0x2c, 0x64, 0x1 1.102 +/* #define RFC2247_ATTR_TYPE 0x09, 0x92, 0x26, 0xf5, 0x98, 0x1e, 0x64, 0x1 this is WRONG! */ 1.103 + 1.104 +/* PKCS #12 name spaces */ 1.105 +#define PKCS12_MODE_IDS PKCS12, 0x01 1.106 +#define PKCS12_ESPVK_IDS PKCS12, 0x02 1.107 +#define PKCS12_BAG_IDS PKCS12, 0x03 1.108 +#define PKCS12_CERT_BAG_IDS PKCS12, 0x04 1.109 +#define PKCS12_OIDS PKCS12, 0x05 1.110 +#define PKCS12_PBE_IDS PKCS12_OIDS, 0x01 1.111 +#define PKCS12_ENVELOPING_IDS PKCS12_OIDS, 0x02 1.112 +#define PKCS12_SIGNATURE_IDS PKCS12_OIDS, 0x03 1.113 +#define PKCS12_V2_PBE_IDS PKCS12, 0x01 1.114 +#define PKCS9_CERT_TYPES PKCS9, 0x16 1.115 +#define PKCS9_CRL_TYPES PKCS9, 0x17 1.116 +#define PKCS9_SMIME_IDS PKCS9, 0x10 1.117 +#define PKCS9_SMIME_ATTRS PKCS9_SMIME_IDS, 2 1.118 +#define PKCS9_SMIME_ALGS PKCS9_SMIME_IDS, 3 1.119 +#define PKCS12_VERSION1 PKCS12, 0x0a 1.120 +#define PKCS12_V1_BAG_IDS PKCS12_VERSION1, 1 1.121 + 1.122 +/* for DSA algorithm */ 1.123 +/* { iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) } */ 1.124 +#define ANSI_X9_ALGORITHM 0x2a, 0x86, 0x48, 0xce, 0x38, 0x4 1.125 + 1.126 +/* for DH algorithm */ 1.127 +/* { iso(1) member-body(2) us(840) x9-57(10046) number-type(2) } */ 1.128 +/* need real OID person to look at this, copied the above line 1.129 + * and added 6 to second to last value (and changed '4' to '2' */ 1.130 +#define ANSI_X942_ALGORITHM 0x2a, 0x86, 0x48, 0xce, 0x3e, 0x2 1.131 + 1.132 +#define VERISIGN 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45 1.133 + 1.134 +#define PKIX 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07 1.135 +#define PKIX_CERT_EXTENSIONS PKIX, 1 1.136 +#define PKIX_POLICY_QUALIFIERS PKIX, 2 1.137 +#define PKIX_KEY_USAGE PKIX, 3 1.138 +#define PKIX_ACCESS_DESCRIPTION PKIX, 0x30 1.139 +#define PKIX_OCSP PKIX_ACCESS_DESCRIPTION, 1 1.140 +#define PKIX_CA_ISSUERS PKIX_ACCESS_DESCRIPTION, 2 1.141 + 1.142 +#define PKIX_ID_PKIP PKIX, 5 1.143 +#define PKIX_ID_REGCTRL PKIX_ID_PKIP, 1 1.144 +#define PKIX_ID_REGINFO PKIX_ID_PKIP, 2 1.145 + 1.146 +/* Microsoft Object ID space */ 1.147 +/* { 1.3.6.1.4.1.311 } */ 1.148 +#define MICROSOFT_OID 0x2b, 0x6, 0x1, 0x4, 0x1, 0x82, 0x37 1.149 +#define EV_NAME_ATTRIBUTE MICROSOFT_OID, 60, 2, 1 1.150 + 1.151 +/* Microsoft Crypto 2.0 ID space */ 1.152 +/* { 1.3.6.1.4.1.311.10 } */ 1.153 +#define MS_CRYPTO_20 MICROSOFT_OID, 10 1.154 +/* Microsoft Crypto 2.0 Extended Key Usage ID space */ 1.155 +/* { 1.3.6.1.4.1.311.10.3 } */ 1.156 +#define MS_CRYPTO_EKU MS_CRYPTO_20, 3 1.157 + 1.158 +#define CERTICOM_OID 0x2b, 0x81, 0x04 1.159 +#define SECG_OID CERTICOM_OID, 0x00 1.160 + 1.161 +#define ANSI_X962_OID 0x2a, 0x86, 0x48, 0xce, 0x3d 1.162 +#define ANSI_X962_CURVE_OID ANSI_X962_OID, 0x03 1.163 +#define ANSI_X962_GF2m_OID ANSI_X962_CURVE_OID, 0x00 1.164 +#define ANSI_X962_GFp_OID ANSI_X962_CURVE_OID, 0x01 1.165 +#define ANSI_X962_SIGNATURE_OID ANSI_X962_OID, 0x04 1.166 +#define ANSI_X962_SPECIFY_OID ANSI_X962_SIGNATURE_OID, 0x03 1.167 + 1.168 +/* for Camellia: iso(1) member-body(2) jisc(392) 1.169 + * mitsubishi(200011) isl(61) security(1) algorithm(1) 1.170 + */ 1.171 +#define MITSUBISHI_ALG 0x2a,0x83,0x08,0x8c,0x9a,0x4b,0x3d,0x01,0x01 1.172 +#define CAMELLIA_ENCRYPT_OID MITSUBISHI_ALG,1 1.173 +#define CAMELLIA_WRAP_OID MITSUBISHI_ALG,3 1.174 + 1.175 +/* for SEED : iso(1) member-body(2) korea(410) 1.176 + * kisa(200004) algorithm(1) 1.177 + */ 1.178 +#define SEED_OID 0x2a,0x83,0x1a,0x8c,0x9a,0x44,0x01 1.179 + 1.180 +#define CONST_OID static const unsigned char 1.181 + 1.182 +CONST_OID md2[] = { DIGEST, 0x02 }; 1.183 +CONST_OID md4[] = { DIGEST, 0x04 }; 1.184 +CONST_OID md5[] = { DIGEST, 0x05 }; 1.185 +CONST_OID hmac_sha1[] = { DIGEST, 7 }; 1.186 +CONST_OID hmac_sha224[] = { DIGEST, 8 }; 1.187 +CONST_OID hmac_sha256[] = { DIGEST, 9 }; 1.188 +CONST_OID hmac_sha384[] = { DIGEST, 10 }; 1.189 +CONST_OID hmac_sha512[] = { DIGEST, 11 }; 1.190 + 1.191 +CONST_OID rc2cbc[] = { CIPHER, 0x02 }; 1.192 +CONST_OID rc4[] = { CIPHER, 0x04 }; 1.193 +CONST_OID desede3cbc[] = { CIPHER, 0x07 }; 1.194 +CONST_OID rc5cbcpad[] = { CIPHER, 0x09 }; 1.195 + 1.196 +CONST_OID desecb[] = { ALGORITHM, 0x06 }; 1.197 +CONST_OID descbc[] = { ALGORITHM, 0x07 }; 1.198 +CONST_OID desofb[] = { ALGORITHM, 0x08 }; 1.199 +CONST_OID descfb[] = { ALGORITHM, 0x09 }; 1.200 +CONST_OID desmac[] = { ALGORITHM, 0x0a }; 1.201 +CONST_OID sdn702DSASignature[] = { ALGORITHM, 0x0c }; 1.202 +CONST_OID isoSHAWithRSASignature[] = { ALGORITHM, 0x0f }; 1.203 +CONST_OID desede[] = { ALGORITHM, 0x11 }; 1.204 +CONST_OID sha1[] = { ALGORITHM, 0x1a }; 1.205 +CONST_OID bogusDSASignaturewithSHA1Digest[] = { ALGORITHM, 0x1b }; 1.206 +CONST_OID isoSHA1WithRSASignature[] = { ALGORITHM, 0x1d }; 1.207 + 1.208 +CONST_OID pkcs1RSAEncryption[] = { PKCS1, 0x01 }; 1.209 +CONST_OID pkcs1MD2WithRSAEncryption[] = { PKCS1, 0x02 }; 1.210 +CONST_OID pkcs1MD4WithRSAEncryption[] = { PKCS1, 0x03 }; 1.211 +CONST_OID pkcs1MD5WithRSAEncryption[] = { PKCS1, 0x04 }; 1.212 +CONST_OID pkcs1SHA1WithRSAEncryption[] = { PKCS1, 0x05 }; 1.213 +CONST_OID pkcs1RSAOAEPEncryption[] = { PKCS1, 0x07 }; 1.214 +CONST_OID pkcs1MGF1[] = { PKCS1, 0x08 }; 1.215 +CONST_OID pkcs1PSpecified[] = { PKCS1, 0x09 }; 1.216 +CONST_OID pkcs1RSAPSSSignature[] = { PKCS1, 10 }; 1.217 +CONST_OID pkcs1SHA256WithRSAEncryption[] = { PKCS1, 11 }; 1.218 +CONST_OID pkcs1SHA384WithRSAEncryption[] = { PKCS1, 12 }; 1.219 +CONST_OID pkcs1SHA512WithRSAEncryption[] = { PKCS1, 13 }; 1.220 +CONST_OID pkcs1SHA224WithRSAEncryption[] = { PKCS1, 14 }; 1.221 + 1.222 +CONST_OID pkcs5PbeWithMD2AndDEScbc[] = { PKCS5, 0x01 }; 1.223 +CONST_OID pkcs5PbeWithMD5AndDEScbc[] = { PKCS5, 0x03 }; 1.224 +CONST_OID pkcs5PbeWithSha1AndDEScbc[] = { PKCS5, 0x0a }; 1.225 +CONST_OID pkcs5Pbkdf2[] = { PKCS5, 12 }; 1.226 +CONST_OID pkcs5Pbes2[] = { PKCS5, 13 }; 1.227 +CONST_OID pkcs5Pbmac1[] = { PKCS5, 14 }; 1.228 + 1.229 +CONST_OID pkcs7[] = { PKCS7 }; 1.230 +CONST_OID pkcs7Data[] = { PKCS7, 0x01 }; 1.231 +CONST_OID pkcs7SignedData[] = { PKCS7, 0x02 }; 1.232 +CONST_OID pkcs7EnvelopedData[] = { PKCS7, 0x03 }; 1.233 +CONST_OID pkcs7SignedEnvelopedData[] = { PKCS7, 0x04 }; 1.234 +CONST_OID pkcs7DigestedData[] = { PKCS7, 0x05 }; 1.235 +CONST_OID pkcs7EncryptedData[] = { PKCS7, 0x06 }; 1.236 + 1.237 +CONST_OID pkcs9EmailAddress[] = { PKCS9, 0x01 }; 1.238 +CONST_OID pkcs9UnstructuredName[] = { PKCS9, 0x02 }; 1.239 +CONST_OID pkcs9ContentType[] = { PKCS9, 0x03 }; 1.240 +CONST_OID pkcs9MessageDigest[] = { PKCS9, 0x04 }; 1.241 +CONST_OID pkcs9SigningTime[] = { PKCS9, 0x05 }; 1.242 +CONST_OID pkcs9CounterSignature[] = { PKCS9, 0x06 }; 1.243 +CONST_OID pkcs9ChallengePassword[] = { PKCS9, 0x07 }; 1.244 +CONST_OID pkcs9UnstructuredAddress[] = { PKCS9, 0x08 }; 1.245 +CONST_OID pkcs9ExtendedCertificateAttributes[] = { PKCS9, 0x09 }; 1.246 +CONST_OID pkcs9ExtensionRequest[] = { PKCS9, 14 }; 1.247 +CONST_OID pkcs9SMIMECapabilities[] = { PKCS9, 15 }; 1.248 +CONST_OID pkcs9FriendlyName[] = { PKCS9, 20 }; 1.249 +CONST_OID pkcs9LocalKeyID[] = { PKCS9, 21 }; 1.250 + 1.251 +CONST_OID pkcs9X509Certificate[] = { PKCS9_CERT_TYPES, 1 }; 1.252 +CONST_OID pkcs9SDSICertificate[] = { PKCS9_CERT_TYPES, 2 }; 1.253 +CONST_OID pkcs9X509CRL[] = { PKCS9_CRL_TYPES, 1 }; 1.254 + 1.255 +/* RFC2630 (CMS) OIDs */ 1.256 +CONST_OID cmsESDH[] = { PKCS9_SMIME_ALGS, 5 }; 1.257 +CONST_OID cms3DESwrap[] = { PKCS9_SMIME_ALGS, 6 }; 1.258 +CONST_OID cmsRC2wrap[] = { PKCS9_SMIME_ALGS, 7 }; 1.259 + 1.260 +/* RFC2633 SMIME message attributes */ 1.261 +CONST_OID smimeEncryptionKeyPreference[] = { PKCS9_SMIME_ATTRS, 11 }; 1.262 +CONST_OID ms_smimeEncryptionKeyPreference[] = { MICROSOFT_OID, 0x10, 0x4 }; 1.263 + 1.264 +CONST_OID x520CommonName[] = { X520_ATTRIBUTE_TYPE, 3 }; 1.265 +CONST_OID x520SurName[] = { X520_ATTRIBUTE_TYPE, 4 }; 1.266 +CONST_OID x520SerialNumber[] = { X520_ATTRIBUTE_TYPE, 5 }; 1.267 +CONST_OID x520CountryName[] = { X520_ATTRIBUTE_TYPE, 6 }; 1.268 +CONST_OID x520LocalityName[] = { X520_ATTRIBUTE_TYPE, 7 }; 1.269 +CONST_OID x520StateOrProvinceName[] = { X520_ATTRIBUTE_TYPE, 8 }; 1.270 +CONST_OID x520StreetAddress[] = { X520_ATTRIBUTE_TYPE, 9 }; 1.271 +CONST_OID x520OrgName[] = { X520_ATTRIBUTE_TYPE, 10 }; 1.272 +CONST_OID x520OrgUnitName[] = { X520_ATTRIBUTE_TYPE, 11 }; 1.273 +CONST_OID x520Title[] = { X520_ATTRIBUTE_TYPE, 12 }; 1.274 +CONST_OID x520BusinessCategory[] = { X520_ATTRIBUTE_TYPE, 15 }; 1.275 +CONST_OID x520PostalAddress[] = { X520_ATTRIBUTE_TYPE, 16 }; 1.276 +CONST_OID x520PostalCode[] = { X520_ATTRIBUTE_TYPE, 17 }; 1.277 +CONST_OID x520PostOfficeBox[] = { X520_ATTRIBUTE_TYPE, 18 }; 1.278 +CONST_OID x520Name[] = { X520_ATTRIBUTE_TYPE, 41 }; 1.279 +CONST_OID x520GivenName[] = { X520_ATTRIBUTE_TYPE, 42 }; 1.280 +CONST_OID x520Initials[] = { X520_ATTRIBUTE_TYPE, 43 }; 1.281 +CONST_OID x520GenerationQualifier[] = { X520_ATTRIBUTE_TYPE, 44 }; 1.282 +CONST_OID x520DnQualifier[] = { X520_ATTRIBUTE_TYPE, 46 }; 1.283 +CONST_OID x520HouseIdentifier[] = { X520_ATTRIBUTE_TYPE, 51 }; 1.284 +CONST_OID x520Pseudonym[] = { X520_ATTRIBUTE_TYPE, 65 }; 1.285 + 1.286 +CONST_OID nsTypeGIF[] = { NETSCAPE_DATA_TYPE, 0x01 }; 1.287 +CONST_OID nsTypeJPEG[] = { NETSCAPE_DATA_TYPE, 0x02 }; 1.288 +CONST_OID nsTypeURL[] = { NETSCAPE_DATA_TYPE, 0x03 }; 1.289 +CONST_OID nsTypeHTML[] = { NETSCAPE_DATA_TYPE, 0x04 }; 1.290 +CONST_OID nsTypeCertSeq[] = { NETSCAPE_DATA_TYPE, 0x05 }; 1.291 + 1.292 +CONST_OID missiCertKEADSSOld[] = { MISSI_OLD_KEA_DSS }; 1.293 +CONST_OID missiCertDSSOld[] = { MISSI_OLD_DSS }; 1.294 +CONST_OID missiCertKEADSS[] = { MISSI_KEA_DSS }; 1.295 +CONST_OID missiCertDSS[] = { MISSI_DSS }; 1.296 +CONST_OID missiCertKEA[] = { MISSI_KEA }; 1.297 +CONST_OID missiCertAltKEA[] = { MISSI_ALT_KEA }; 1.298 +CONST_OID x500RSAEncryption[] = { X500_ALG_ENCRYPTION, 0x01 }; 1.299 + 1.300 +/* added for alg 1485 */ 1.301 +CONST_OID rfc1274Uid[] = { RFC1274_ATTR_TYPE, 1 }; 1.302 +CONST_OID rfc1274Mail[] = { RFC1274_ATTR_TYPE, 3 }; 1.303 +CONST_OID rfc2247DomainComponent[] = { RFC1274_ATTR_TYPE, 25 }; 1.304 + 1.305 +/* Netscape private certificate extensions */ 1.306 +CONST_OID nsCertExtNetscapeOK[] = { NS_CERT_EXT, 1 }; 1.307 +CONST_OID nsCertExtIssuerLogo[] = { NS_CERT_EXT, 2 }; 1.308 +CONST_OID nsCertExtSubjectLogo[] = { NS_CERT_EXT, 3 }; 1.309 +CONST_OID nsExtCertType[] = { NETSCAPE_CERT_EXT, 0x01 }; 1.310 +CONST_OID nsExtBaseURL[] = { NETSCAPE_CERT_EXT, 0x02 }; 1.311 +CONST_OID nsExtRevocationURL[] = { NETSCAPE_CERT_EXT, 0x03 }; 1.312 +CONST_OID nsExtCARevocationURL[] = { NETSCAPE_CERT_EXT, 0x04 }; 1.313 +CONST_OID nsExtCACRLURL[] = { NETSCAPE_CERT_EXT, 0x05 }; 1.314 +CONST_OID nsExtCACertURL[] = { NETSCAPE_CERT_EXT, 0x06 }; 1.315 +CONST_OID nsExtCertRenewalURL[] = { NETSCAPE_CERT_EXT, 0x07 }; 1.316 +CONST_OID nsExtCAPolicyURL[] = { NETSCAPE_CERT_EXT, 0x08 }; 1.317 +CONST_OID nsExtHomepageURL[] = { NETSCAPE_CERT_EXT, 0x09 }; 1.318 +CONST_OID nsExtEntityLogo[] = { NETSCAPE_CERT_EXT, 0x0a }; 1.319 +CONST_OID nsExtUserPicture[] = { NETSCAPE_CERT_EXT, 0x0b }; 1.320 +CONST_OID nsExtSSLServerName[] = { NETSCAPE_CERT_EXT, 0x0c }; 1.321 +CONST_OID nsExtComment[] = { NETSCAPE_CERT_EXT, 0x0d }; 1.322 + 1.323 +/* the following 2 extensions are defined for and used by Cartman(NSM) */ 1.324 +CONST_OID nsExtLostPasswordURL[] = { NETSCAPE_CERT_EXT, 0x0e }; 1.325 +CONST_OID nsExtCertRenewalTime[] = { NETSCAPE_CERT_EXT, 0x0f }; 1.326 + 1.327 +CONST_OID nsExtAIACertRenewal[] = { NETSCAPE_CERT_EXT_AIA, 0x01 }; 1.328 +CONST_OID nsExtCertScopeOfUse[] = { NETSCAPE_CERT_EXT, 0x11 }; 1.329 +/* Reserved Netscape (2 16 840 1 113730 1 18) = { NETSCAPE_CERT_EXT, 0x12 }; */ 1.330 + 1.331 +/* Netscape policy values */ 1.332 +CONST_OID nsKeyUsageGovtApproved[] = { NETSCAPE_POLICY, 0x01 }; 1.333 + 1.334 +/* Netscape other name types */ 1.335 +CONST_OID netscapeNickname[] = { NETSCAPE_NAME_COMPONENTS, 0x01 }; 1.336 +CONST_OID netscapeAOLScreenname[] = { NETSCAPE_NAME_COMPONENTS, 0x02 }; 1.337 + 1.338 +/* OIDs needed for cert server */ 1.339 +CONST_OID netscapeRecoveryRequest[] = { NETSCAPE_CERT_SERVER_CRMF, 0x01 }; 1.340 + 1.341 + 1.342 +/* Standard x.509 v3 Certificate & CRL Extensions */ 1.343 +CONST_OID x509SubjectDirectoryAttr[] = { ID_CE_OID, 9 }; 1.344 +CONST_OID x509SubjectKeyID[] = { ID_CE_OID, 14 }; 1.345 +CONST_OID x509KeyUsage[] = { ID_CE_OID, 15 }; 1.346 +CONST_OID x509PrivateKeyUsagePeriod[] = { ID_CE_OID, 16 }; 1.347 +CONST_OID x509SubjectAltName[] = { ID_CE_OID, 17 }; 1.348 +CONST_OID x509IssuerAltName[] = { ID_CE_OID, 18 }; 1.349 +CONST_OID x509BasicConstraints[] = { ID_CE_OID, 19 }; 1.350 +CONST_OID x509CRLNumber[] = { ID_CE_OID, 20 }; 1.351 +CONST_OID x509ReasonCode[] = { ID_CE_OID, 21 }; 1.352 +CONST_OID x509HoldInstructionCode[] = { ID_CE_OID, 23 }; 1.353 +CONST_OID x509InvalidDate[] = { ID_CE_OID, 24 }; 1.354 +CONST_OID x509DeltaCRLIndicator[] = { ID_CE_OID, 27 }; 1.355 +CONST_OID x509IssuingDistributionPoint[] = { ID_CE_OID, 28 }; 1.356 +CONST_OID x509CertIssuer[] = { ID_CE_OID, 29 }; 1.357 +CONST_OID x509NameConstraints[] = { ID_CE_OID, 30 }; 1.358 +CONST_OID x509CRLDistPoints[] = { ID_CE_OID, 31 }; 1.359 +CONST_OID x509CertificatePolicies[] = { ID_CE_OID, 32 }; 1.360 +CONST_OID x509PolicyMappings[] = { ID_CE_OID, 33 }; 1.361 +CONST_OID x509AuthKeyID[] = { ID_CE_OID, 35 }; 1.362 +CONST_OID x509PolicyConstraints[] = { ID_CE_OID, 36 }; 1.363 +CONST_OID x509ExtKeyUsage[] = { ID_CE_OID, 37 }; 1.364 +CONST_OID x509FreshestCRL[] = { ID_CE_OID, 46 }; 1.365 +CONST_OID x509InhibitAnyPolicy[] = { ID_CE_OID, 54 }; 1.366 + 1.367 +CONST_OID x509CertificatePoliciesAnyPolicy[] = { ID_CE_OID, 32, 0 }; 1.368 + 1.369 +CONST_OID x509AuthInfoAccess[] = { PKIX_CERT_EXTENSIONS, 1 }; 1.370 +CONST_OID x509SubjectInfoAccess[] = { PKIX_CERT_EXTENSIONS, 11 }; 1.371 + 1.372 +CONST_OID x509SIATimeStamping[] = {PKIX_ACCESS_DESCRIPTION, 0x03}; 1.373 +CONST_OID x509SIACaRepository[] = {PKIX_ACCESS_DESCRIPTION, 0x05}; 1.374 + 1.375 +/* pkcs 12 additions */ 1.376 +CONST_OID pkcs12[] = { PKCS12 }; 1.377 +CONST_OID pkcs12ModeIDs[] = { PKCS12_MODE_IDS }; 1.378 +CONST_OID pkcs12ESPVKIDs[] = { PKCS12_ESPVK_IDS }; 1.379 +CONST_OID pkcs12BagIDs[] = { PKCS12_BAG_IDS }; 1.380 +CONST_OID pkcs12CertBagIDs[] = { PKCS12_CERT_BAG_IDS }; 1.381 +CONST_OID pkcs12OIDs[] = { PKCS12_OIDS }; 1.382 +CONST_OID pkcs12PBEIDs[] = { PKCS12_PBE_IDS }; 1.383 +CONST_OID pkcs12EnvelopingIDs[] = { PKCS12_ENVELOPING_IDS }; 1.384 +CONST_OID pkcs12SignatureIDs[] = { PKCS12_SIGNATURE_IDS }; 1.385 +CONST_OID pkcs12PKCS8KeyShrouding[] = { PKCS12_ESPVK_IDS, 0x01 }; 1.386 +CONST_OID pkcs12KeyBagID[] = { PKCS12_BAG_IDS, 0x01 }; 1.387 +CONST_OID pkcs12CertAndCRLBagID[] = { PKCS12_BAG_IDS, 0x02 }; 1.388 +CONST_OID pkcs12SecretBagID[] = { PKCS12_BAG_IDS, 0x03 }; 1.389 +CONST_OID pkcs12X509CertCRLBag[] = { PKCS12_CERT_BAG_IDS, 0x01 }; 1.390 +CONST_OID pkcs12SDSICertBag[] = { PKCS12_CERT_BAG_IDS, 0x02 }; 1.391 +CONST_OID pkcs12PBEWithSha1And128BitRC4[] = { PKCS12_PBE_IDS, 0x01 }; 1.392 +CONST_OID pkcs12PBEWithSha1And40BitRC4[] = { PKCS12_PBE_IDS, 0x02 }; 1.393 +CONST_OID pkcs12PBEWithSha1AndTripleDESCBC[] = { PKCS12_PBE_IDS, 0x03 }; 1.394 +CONST_OID pkcs12PBEWithSha1And128BitRC2CBC[] = { PKCS12_PBE_IDS, 0x04 }; 1.395 +CONST_OID pkcs12PBEWithSha1And40BitRC2CBC[] = { PKCS12_PBE_IDS, 0x05 }; 1.396 +CONST_OID pkcs12RSAEncryptionWith128BitRC4[] = { PKCS12_ENVELOPING_IDS, 0x01 }; 1.397 +CONST_OID pkcs12RSAEncryptionWith40BitRC4[] = { PKCS12_ENVELOPING_IDS, 0x02 }; 1.398 +CONST_OID pkcs12RSAEncryptionWithTripleDES[] = { PKCS12_ENVELOPING_IDS, 0x03 }; 1.399 +CONST_OID pkcs12RSASignatureWithSHA1Digest[] = { PKCS12_SIGNATURE_IDS, 0x01 }; 1.400 + 1.401 +/* pkcs 12 version 1.0 ids */ 1.402 +CONST_OID pkcs12V2PBEWithSha1And128BitRC4[] = { PKCS12_V2_PBE_IDS, 0x01 }; 1.403 +CONST_OID pkcs12V2PBEWithSha1And40BitRC4[] = { PKCS12_V2_PBE_IDS, 0x02 }; 1.404 +CONST_OID pkcs12V2PBEWithSha1And3KeyTripleDEScbc[]= { PKCS12_V2_PBE_IDS, 0x03 }; 1.405 +CONST_OID pkcs12V2PBEWithSha1And2KeyTripleDEScbc[]= { PKCS12_V2_PBE_IDS, 0x04 }; 1.406 +CONST_OID pkcs12V2PBEWithSha1And128BitRC2cbc[] = { PKCS12_V2_PBE_IDS, 0x05 }; 1.407 +CONST_OID pkcs12V2PBEWithSha1And40BitRC2cbc[] = { PKCS12_V2_PBE_IDS, 0x06 }; 1.408 + 1.409 +CONST_OID pkcs12SafeContentsID[] = { PKCS12_BAG_IDS, 0x04 }; 1.410 +CONST_OID pkcs12PKCS8ShroudedKeyBagID[] = { PKCS12_BAG_IDS, 0x05 }; 1.411 + 1.412 +CONST_OID pkcs12V1KeyBag[] = { PKCS12_V1_BAG_IDS, 0x01 }; 1.413 +CONST_OID pkcs12V1PKCS8ShroudedKeyBag[] = { PKCS12_V1_BAG_IDS, 0x02 }; 1.414 +CONST_OID pkcs12V1CertBag[] = { PKCS12_V1_BAG_IDS, 0x03 }; 1.415 +CONST_OID pkcs12V1CRLBag[] = { PKCS12_V1_BAG_IDS, 0x04 }; 1.416 +CONST_OID pkcs12V1SecretBag[] = { PKCS12_V1_BAG_IDS, 0x05 }; 1.417 +CONST_OID pkcs12V1SafeContentsBag[] = { PKCS12_V1_BAG_IDS, 0x06 }; 1.418 + 1.419 +/* The following encoding is INCORRECT, but correcting it would create a 1.420 + * duplicate OID in the table. So, we will leave it alone. 1.421 + */ 1.422 +CONST_OID pkcs12KeyUsageAttr[] = { 2, 5, 29, 15 }; 1.423 + 1.424 +CONST_OID ansix9DSASignature[] = { ANSI_X9_ALGORITHM, 0x01 }; 1.425 +CONST_OID ansix9DSASignaturewithSHA1Digest[] = { ANSI_X9_ALGORITHM, 0x03 }; 1.426 +CONST_OID nistDSASignaturewithSHA224Digest[] = { DSA2, 0x01 }; 1.427 +CONST_OID nistDSASignaturewithSHA256Digest[] = { DSA2, 0x02 }; 1.428 + 1.429 +/* verisign OIDs */ 1.430 +CONST_OID verisignUserNotices[] = { VERISIGN, 1, 7, 1, 1 }; 1.431 + 1.432 +/* pkix OIDs */ 1.433 +CONST_OID pkixCPSPointerQualifier[] = { PKIX_POLICY_QUALIFIERS, 1 }; 1.434 +CONST_OID pkixUserNoticeQualifier[] = { PKIX_POLICY_QUALIFIERS, 2 }; 1.435 + 1.436 +CONST_OID pkixOCSP[] = { PKIX_OCSP }; 1.437 +CONST_OID pkixOCSPBasicResponse[] = { PKIX_OCSP, 1 }; 1.438 +CONST_OID pkixOCSPNonce[] = { PKIX_OCSP, 2 }; 1.439 +CONST_OID pkixOCSPCRL[] = { PKIX_OCSP, 3 }; 1.440 +CONST_OID pkixOCSPResponse[] = { PKIX_OCSP, 4 }; 1.441 +CONST_OID pkixOCSPNoCheck[] = { PKIX_OCSP, 5 }; 1.442 +CONST_OID pkixOCSPArchiveCutoff[] = { PKIX_OCSP, 6 }; 1.443 +CONST_OID pkixOCSPServiceLocator[] = { PKIX_OCSP, 7 }; 1.444 + 1.445 +CONST_OID pkixCAIssuers[] = { PKIX_CA_ISSUERS }; 1.446 + 1.447 +CONST_OID pkixRegCtrlRegToken[] = { PKIX_ID_REGCTRL, 1}; 1.448 +CONST_OID pkixRegCtrlAuthenticator[] = { PKIX_ID_REGCTRL, 2}; 1.449 +CONST_OID pkixRegCtrlPKIPubInfo[] = { PKIX_ID_REGCTRL, 3}; 1.450 +CONST_OID pkixRegCtrlPKIArchOptions[] = { PKIX_ID_REGCTRL, 4}; 1.451 +CONST_OID pkixRegCtrlOldCertID[] = { PKIX_ID_REGCTRL, 5}; 1.452 +CONST_OID pkixRegCtrlProtEncKey[] = { PKIX_ID_REGCTRL, 6}; 1.453 +CONST_OID pkixRegInfoUTF8Pairs[] = { PKIX_ID_REGINFO, 1}; 1.454 +CONST_OID pkixRegInfoCertReq[] = { PKIX_ID_REGINFO, 2}; 1.455 + 1.456 +CONST_OID pkixExtendedKeyUsageServerAuth[] = { PKIX_KEY_USAGE, 1 }; 1.457 +CONST_OID pkixExtendedKeyUsageClientAuth[] = { PKIX_KEY_USAGE, 2 }; 1.458 +CONST_OID pkixExtendedKeyUsageCodeSign[] = { PKIX_KEY_USAGE, 3 }; 1.459 +CONST_OID pkixExtendedKeyUsageEMailProtect[] = { PKIX_KEY_USAGE, 4 }; 1.460 +CONST_OID pkixExtendedKeyUsageTimeStamp[] = { PKIX_KEY_USAGE, 8 }; 1.461 +CONST_OID pkixOCSPResponderExtendedKeyUsage[] = { PKIX_KEY_USAGE, 9 }; 1.462 +CONST_OID msExtendedKeyUsageTrustListSigning[] = { MS_CRYPTO_EKU, 1 }; 1.463 + 1.464 +/* OIDs for Netscape defined algorithms */ 1.465 +CONST_OID netscapeSMimeKEA[] = { NETSCAPE_ALGS, 0x01 }; 1.466 + 1.467 +/* Fortezza algorithm OIDs */ 1.468 +CONST_OID skipjackCBC[] = { MISSI, 0x04 }; 1.469 +CONST_OID dhPublicKey[] = { ANSI_X942_ALGORITHM, 0x1 }; 1.470 + 1.471 +CONST_OID aes128_ECB[] = { AES, 1 }; 1.472 +CONST_OID aes128_CBC[] = { AES, 2 }; 1.473 +#ifdef DEFINE_ALL_AES_CIPHERS 1.474 +CONST_OID aes128_OFB[] = { AES, 3 }; 1.475 +CONST_OID aes128_CFB[] = { AES, 4 }; 1.476 +#endif 1.477 +CONST_OID aes128_KEY_WRAP[] = { AES, 5 }; 1.478 + 1.479 +CONST_OID aes192_ECB[] = { AES, 21 }; 1.480 +CONST_OID aes192_CBC[] = { AES, 22 }; 1.481 +#ifdef DEFINE_ALL_AES_CIPHERS 1.482 +CONST_OID aes192_OFB[] = { AES, 23 }; 1.483 +CONST_OID aes192_CFB[] = { AES, 24 }; 1.484 +#endif 1.485 +CONST_OID aes192_KEY_WRAP[] = { AES, 25 }; 1.486 + 1.487 +CONST_OID aes256_ECB[] = { AES, 41 }; 1.488 +CONST_OID aes256_CBC[] = { AES, 42 }; 1.489 +#ifdef DEFINE_ALL_AES_CIPHERS 1.490 +CONST_OID aes256_OFB[] = { AES, 43 }; 1.491 +CONST_OID aes256_CFB[] = { AES, 44 }; 1.492 +#endif 1.493 +CONST_OID aes256_KEY_WRAP[] = { AES, 45 }; 1.494 + 1.495 +CONST_OID camellia128_CBC[] = { CAMELLIA_ENCRYPT_OID, 2}; 1.496 +CONST_OID camellia192_CBC[] = { CAMELLIA_ENCRYPT_OID, 3}; 1.497 +CONST_OID camellia256_CBC[] = { CAMELLIA_ENCRYPT_OID, 4}; 1.498 +CONST_OID camellia128_KEY_WRAP[] = { CAMELLIA_WRAP_OID, 2}; 1.499 +CONST_OID camellia192_KEY_WRAP[] = { CAMELLIA_WRAP_OID, 3}; 1.500 +CONST_OID camellia256_KEY_WRAP[] = { CAMELLIA_WRAP_OID, 4}; 1.501 + 1.502 +CONST_OID sha256[] = { SHAXXX, 1 }; 1.503 +CONST_OID sha384[] = { SHAXXX, 2 }; 1.504 +CONST_OID sha512[] = { SHAXXX, 3 }; 1.505 +CONST_OID sha224[] = { SHAXXX, 4 }; 1.506 + 1.507 +CONST_OID ansix962ECPublicKey[] = { ANSI_X962_OID, 0x02, 0x01 }; 1.508 +CONST_OID ansix962SignaturewithSHA1Digest[] = { ANSI_X962_SIGNATURE_OID, 0x01 }; 1.509 +CONST_OID ansix962SignatureRecommended[] = { ANSI_X962_SIGNATURE_OID, 0x02 }; 1.510 +CONST_OID ansix962SignatureSpecified[] = { ANSI_X962_SPECIFY_OID }; 1.511 +CONST_OID ansix962SignaturewithSHA224Digest[] = { ANSI_X962_SPECIFY_OID, 0x01 }; 1.512 +CONST_OID ansix962SignaturewithSHA256Digest[] = { ANSI_X962_SPECIFY_OID, 0x02 }; 1.513 +CONST_OID ansix962SignaturewithSHA384Digest[] = { ANSI_X962_SPECIFY_OID, 0x03 }; 1.514 +CONST_OID ansix962SignaturewithSHA512Digest[] = { ANSI_X962_SPECIFY_OID, 0x04 }; 1.515 + 1.516 +/* ANSI X9.62 prime curve OIDs */ 1.517 +/* NOTE: prime192v1 is the same as secp192r1, prime256v1 is the 1.518 + * same as secp256r1 1.519 + */ 1.520 +CONST_OID ansiX962prime192v1[] = { ANSI_X962_GFp_OID, 0x01 }; 1.521 +CONST_OID ansiX962prime192v2[] = { ANSI_X962_GFp_OID, 0x02 }; 1.522 +CONST_OID ansiX962prime192v3[] = { ANSI_X962_GFp_OID, 0x03 }; 1.523 +CONST_OID ansiX962prime239v1[] = { ANSI_X962_GFp_OID, 0x04 }; 1.524 +CONST_OID ansiX962prime239v2[] = { ANSI_X962_GFp_OID, 0x05 }; 1.525 +CONST_OID ansiX962prime239v3[] = { ANSI_X962_GFp_OID, 0x06 }; 1.526 +CONST_OID ansiX962prime256v1[] = { ANSI_X962_GFp_OID, 0x07 }; 1.527 + 1.528 +/* SECG prime curve OIDs */ 1.529 +CONST_OID secgECsecp112r1[] = { SECG_OID, 0x06 }; 1.530 +CONST_OID secgECsecp112r2[] = { SECG_OID, 0x07 }; 1.531 +CONST_OID secgECsecp128r1[] = { SECG_OID, 0x1c }; 1.532 +CONST_OID secgECsecp128r2[] = { SECG_OID, 0x1d }; 1.533 +CONST_OID secgECsecp160k1[] = { SECG_OID, 0x09 }; 1.534 +CONST_OID secgECsecp160r1[] = { SECG_OID, 0x08 }; 1.535 +CONST_OID secgECsecp160r2[] = { SECG_OID, 0x1e }; 1.536 +CONST_OID secgECsecp192k1[] = { SECG_OID, 0x1f }; 1.537 +CONST_OID secgECsecp224k1[] = { SECG_OID, 0x20 }; 1.538 +CONST_OID secgECsecp224r1[] = { SECG_OID, 0x21 }; 1.539 +CONST_OID secgECsecp256k1[] = { SECG_OID, 0x0a }; 1.540 +CONST_OID secgECsecp384r1[] = { SECG_OID, 0x22 }; 1.541 +CONST_OID secgECsecp521r1[] = { SECG_OID, 0x23 }; 1.542 + 1.543 +/* ANSI X9.62 characteristic two curve OIDs */ 1.544 +CONST_OID ansiX962c2pnb163v1[] = { ANSI_X962_GF2m_OID, 0x01 }; 1.545 +CONST_OID ansiX962c2pnb163v2[] = { ANSI_X962_GF2m_OID, 0x02 }; 1.546 +CONST_OID ansiX962c2pnb163v3[] = { ANSI_X962_GF2m_OID, 0x03 }; 1.547 +CONST_OID ansiX962c2pnb176v1[] = { ANSI_X962_GF2m_OID, 0x04 }; 1.548 +CONST_OID ansiX962c2tnb191v1[] = { ANSI_X962_GF2m_OID, 0x05 }; 1.549 +CONST_OID ansiX962c2tnb191v2[] = { ANSI_X962_GF2m_OID, 0x06 }; 1.550 +CONST_OID ansiX962c2tnb191v3[] = { ANSI_X962_GF2m_OID, 0x07 }; 1.551 +CONST_OID ansiX962c2onb191v4[] = { ANSI_X962_GF2m_OID, 0x08 }; 1.552 +CONST_OID ansiX962c2onb191v5[] = { ANSI_X962_GF2m_OID, 0x09 }; 1.553 +CONST_OID ansiX962c2pnb208w1[] = { ANSI_X962_GF2m_OID, 0x0a }; 1.554 +CONST_OID ansiX962c2tnb239v1[] = { ANSI_X962_GF2m_OID, 0x0b }; 1.555 +CONST_OID ansiX962c2tnb239v2[] = { ANSI_X962_GF2m_OID, 0x0c }; 1.556 +CONST_OID ansiX962c2tnb239v3[] = { ANSI_X962_GF2m_OID, 0x0d }; 1.557 +CONST_OID ansiX962c2onb239v4[] = { ANSI_X962_GF2m_OID, 0x0e }; 1.558 +CONST_OID ansiX962c2onb239v5[] = { ANSI_X962_GF2m_OID, 0x0f }; 1.559 +CONST_OID ansiX962c2pnb272w1[] = { ANSI_X962_GF2m_OID, 0x10 }; 1.560 +CONST_OID ansiX962c2pnb304w1[] = { ANSI_X962_GF2m_OID, 0x11 }; 1.561 +CONST_OID ansiX962c2tnb359v1[] = { ANSI_X962_GF2m_OID, 0x12 }; 1.562 +CONST_OID ansiX962c2pnb368w1[] = { ANSI_X962_GF2m_OID, 0x13 }; 1.563 +CONST_OID ansiX962c2tnb431r1[] = { ANSI_X962_GF2m_OID, 0x14 }; 1.564 + 1.565 +/* SECG characterisitic two curve OIDs */ 1.566 +CONST_OID secgECsect113r1[] = {SECG_OID, 0x04 }; 1.567 +CONST_OID secgECsect113r2[] = {SECG_OID, 0x05 }; 1.568 +CONST_OID secgECsect131r1[] = {SECG_OID, 0x16 }; 1.569 +CONST_OID secgECsect131r2[] = {SECG_OID, 0x17 }; 1.570 +CONST_OID secgECsect163k1[] = {SECG_OID, 0x01 }; 1.571 +CONST_OID secgECsect163r1[] = {SECG_OID, 0x02 }; 1.572 +CONST_OID secgECsect163r2[] = {SECG_OID, 0x0f }; 1.573 +CONST_OID secgECsect193r1[] = {SECG_OID, 0x18 }; 1.574 +CONST_OID secgECsect193r2[] = {SECG_OID, 0x19 }; 1.575 +CONST_OID secgECsect233k1[] = {SECG_OID, 0x1a }; 1.576 +CONST_OID secgECsect233r1[] = {SECG_OID, 0x1b }; 1.577 +CONST_OID secgECsect239k1[] = {SECG_OID, 0x03 }; 1.578 +CONST_OID secgECsect283k1[] = {SECG_OID, 0x10 }; 1.579 +CONST_OID secgECsect283r1[] = {SECG_OID, 0x11 }; 1.580 +CONST_OID secgECsect409k1[] = {SECG_OID, 0x24 }; 1.581 +CONST_OID secgECsect409r1[] = {SECG_OID, 0x25 }; 1.582 +CONST_OID secgECsect571k1[] = {SECG_OID, 0x26 }; 1.583 +CONST_OID secgECsect571r1[] = {SECG_OID, 0x27 }; 1.584 + 1.585 +CONST_OID seed_CBC[] = { SEED_OID, 4 }; 1.586 + 1.587 +CONST_OID evIncorporationLocality[] = { EV_NAME_ATTRIBUTE, 1 }; 1.588 +CONST_OID evIncorporationState[] = { EV_NAME_ATTRIBUTE, 2 }; 1.589 +CONST_OID evIncorporationCountry[] = { EV_NAME_ATTRIBUTE, 3 }; 1.590 + 1.591 +#define OI(x) { siDEROID, (unsigned char *)x, sizeof x } 1.592 +#ifndef SECOID_NO_STRINGS 1.593 +#define OD(oid,tag,desc,mech,ext) { OI(oid), tag, desc, mech, ext } 1.594 +#else 1.595 +#define OD(oid,tag,desc,mech,ext) { OI(oid), tag, 0, mech, ext } 1.596 +#endif 1.597 + 1.598 +#if defined(NSS_ALLOW_UNSUPPORTED_CRITICAL) 1.599 +#define FAKE_SUPPORTED_CERT_EXTENSION SUPPORTED_CERT_EXTENSION 1.600 +#else 1.601 +#define FAKE_SUPPORTED_CERT_EXTENSION UNSUPPORTED_CERT_EXTENSION 1.602 +#endif 1.603 + 1.604 +/* 1.605 + * NOTE: the order of these entries must mach the SECOidTag enum in secoidt.h! 1.606 + */ 1.607 +const static SECOidData oids[SEC_OID_TOTAL] = { 1.608 + { { siDEROID, NULL, 0 }, SEC_OID_UNKNOWN, 1.609 + "Unknown OID", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION }, 1.610 + OD( md2, SEC_OID_MD2, "MD2", CKM_MD2, INVALID_CERT_EXTENSION ), 1.611 + OD( md4, SEC_OID_MD4, 1.612 + "MD4", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.613 + OD( md5, SEC_OID_MD5, "MD5", CKM_MD5, INVALID_CERT_EXTENSION ), 1.614 + OD( sha1, SEC_OID_SHA1, "SHA-1", CKM_SHA_1, INVALID_CERT_EXTENSION ), 1.615 + OD( rc2cbc, SEC_OID_RC2_CBC, 1.616 + "RC2-CBC", CKM_RC2_CBC, INVALID_CERT_EXTENSION ), 1.617 + OD( rc4, SEC_OID_RC4, "RC4", CKM_RC4, INVALID_CERT_EXTENSION ), 1.618 + OD( desede3cbc, SEC_OID_DES_EDE3_CBC, 1.619 + "DES-EDE3-CBC", CKM_DES3_CBC, INVALID_CERT_EXTENSION ), 1.620 + OD( rc5cbcpad, SEC_OID_RC5_CBC_PAD, 1.621 + "RC5-CBCPad", CKM_RC5_CBC, INVALID_CERT_EXTENSION ), 1.622 + OD( desecb, SEC_OID_DES_ECB, 1.623 + "DES-ECB", CKM_DES_ECB, INVALID_CERT_EXTENSION ), 1.624 + OD( descbc, SEC_OID_DES_CBC, 1.625 + "DES-CBC", CKM_DES_CBC, INVALID_CERT_EXTENSION ), 1.626 + OD( desofb, SEC_OID_DES_OFB, 1.627 + "DES-OFB", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.628 + OD( descfb, SEC_OID_DES_CFB, 1.629 + "DES-CFB", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.630 + OD( desmac, SEC_OID_DES_MAC, 1.631 + "DES-MAC", CKM_DES_MAC, INVALID_CERT_EXTENSION ), 1.632 + OD( desede, SEC_OID_DES_EDE, 1.633 + "DES-EDE", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.634 + OD( isoSHAWithRSASignature, SEC_OID_ISO_SHA_WITH_RSA_SIGNATURE, 1.635 + "ISO SHA with RSA Signature", 1.636 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.637 + OD( pkcs1RSAEncryption, SEC_OID_PKCS1_RSA_ENCRYPTION, 1.638 + "PKCS #1 RSA Encryption", CKM_RSA_PKCS, INVALID_CERT_EXTENSION ), 1.639 + 1.640 + /* the following Signing mechanisms should get new CKM_ values when 1.641 + * values for CKM_RSA_WITH_MDX and CKM_RSA_WITH_SHA_1 get defined in 1.642 + * PKCS #11. 1.643 + */ 1.644 + OD( pkcs1MD2WithRSAEncryption, SEC_OID_PKCS1_MD2_WITH_RSA_ENCRYPTION, 1.645 + "PKCS #1 MD2 With RSA Encryption", CKM_MD2_RSA_PKCS, 1.646 + INVALID_CERT_EXTENSION ), 1.647 + OD( pkcs1MD4WithRSAEncryption, SEC_OID_PKCS1_MD4_WITH_RSA_ENCRYPTION, 1.648 + "PKCS #1 MD4 With RSA Encryption", 1.649 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.650 + OD( pkcs1MD5WithRSAEncryption, SEC_OID_PKCS1_MD5_WITH_RSA_ENCRYPTION, 1.651 + "PKCS #1 MD5 With RSA Encryption", CKM_MD5_RSA_PKCS, 1.652 + INVALID_CERT_EXTENSION ), 1.653 + OD( pkcs1SHA1WithRSAEncryption, SEC_OID_PKCS1_SHA1_WITH_RSA_ENCRYPTION, 1.654 + "PKCS #1 SHA-1 With RSA Encryption", CKM_SHA1_RSA_PKCS, 1.655 + INVALID_CERT_EXTENSION ), 1.656 + 1.657 + OD( pkcs5PbeWithMD2AndDEScbc, SEC_OID_PKCS5_PBE_WITH_MD2_AND_DES_CBC, 1.658 + "PKCS #5 Password Based Encryption with MD2 and DES-CBC", 1.659 + CKM_PBE_MD2_DES_CBC, INVALID_CERT_EXTENSION ), 1.660 + OD( pkcs5PbeWithMD5AndDEScbc, SEC_OID_PKCS5_PBE_WITH_MD5_AND_DES_CBC, 1.661 + "PKCS #5 Password Based Encryption with MD5 and DES-CBC", 1.662 + CKM_PBE_MD5_DES_CBC, INVALID_CERT_EXTENSION ), 1.663 + OD( pkcs5PbeWithSha1AndDEScbc, SEC_OID_PKCS5_PBE_WITH_SHA1_AND_DES_CBC, 1.664 + "PKCS #5 Password Based Encryption with SHA-1 and DES-CBC", 1.665 + CKM_NETSCAPE_PBE_SHA1_DES_CBC, INVALID_CERT_EXTENSION ), 1.666 + OD( pkcs7, SEC_OID_PKCS7, 1.667 + "PKCS #7", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.668 + OD( pkcs7Data, SEC_OID_PKCS7_DATA, 1.669 + "PKCS #7 Data", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.670 + OD( pkcs7SignedData, SEC_OID_PKCS7_SIGNED_DATA, 1.671 + "PKCS #7 Signed Data", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.672 + OD( pkcs7EnvelopedData, SEC_OID_PKCS7_ENVELOPED_DATA, 1.673 + "PKCS #7 Enveloped Data", 1.674 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.675 + OD( pkcs7SignedEnvelopedData, SEC_OID_PKCS7_SIGNED_ENVELOPED_DATA, 1.676 + "PKCS #7 Signed And Enveloped Data", 1.677 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.678 + OD( pkcs7DigestedData, SEC_OID_PKCS7_DIGESTED_DATA, 1.679 + "PKCS #7 Digested Data", 1.680 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.681 + OD( pkcs7EncryptedData, SEC_OID_PKCS7_ENCRYPTED_DATA, 1.682 + "PKCS #7 Encrypted Data", 1.683 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.684 + OD( pkcs9EmailAddress, SEC_OID_PKCS9_EMAIL_ADDRESS, 1.685 + "PKCS #9 Email Address", 1.686 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.687 + OD( pkcs9UnstructuredName, SEC_OID_PKCS9_UNSTRUCTURED_NAME, 1.688 + "PKCS #9 Unstructured Name", 1.689 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.690 + OD( pkcs9ContentType, SEC_OID_PKCS9_CONTENT_TYPE, 1.691 + "PKCS #9 Content Type", 1.692 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.693 + OD( pkcs9MessageDigest, SEC_OID_PKCS9_MESSAGE_DIGEST, 1.694 + "PKCS #9 Message Digest", 1.695 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.696 + OD( pkcs9SigningTime, SEC_OID_PKCS9_SIGNING_TIME, 1.697 + "PKCS #9 Signing Time", 1.698 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.699 + OD( pkcs9CounterSignature, SEC_OID_PKCS9_COUNTER_SIGNATURE, 1.700 + "PKCS #9 Counter Signature", 1.701 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.702 + OD( pkcs9ChallengePassword, SEC_OID_PKCS9_CHALLENGE_PASSWORD, 1.703 + "PKCS #9 Challenge Password", 1.704 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.705 + OD( pkcs9UnstructuredAddress, SEC_OID_PKCS9_UNSTRUCTURED_ADDRESS, 1.706 + "PKCS #9 Unstructured Address", 1.707 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.708 + OD( pkcs9ExtendedCertificateAttributes, 1.709 + SEC_OID_PKCS9_EXTENDED_CERTIFICATE_ATTRIBUTES, 1.710 + "PKCS #9 Extended Certificate Attributes", 1.711 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.712 + OD( pkcs9SMIMECapabilities, SEC_OID_PKCS9_SMIME_CAPABILITIES, 1.713 + "PKCS #9 S/MIME Capabilities", 1.714 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.715 + OD( x520CommonName, SEC_OID_AVA_COMMON_NAME, 1.716 + "X520 Common Name", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.717 + OD( x520CountryName, SEC_OID_AVA_COUNTRY_NAME, 1.718 + "X520 Country Name", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.719 + OD( x520LocalityName, SEC_OID_AVA_LOCALITY, 1.720 + "X520 Locality Name", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.721 + OD( x520StateOrProvinceName, SEC_OID_AVA_STATE_OR_PROVINCE, 1.722 + "X520 State Or Province Name", 1.723 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.724 + OD( x520OrgName, SEC_OID_AVA_ORGANIZATION_NAME, 1.725 + "X520 Organization Name", 1.726 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.727 + OD( x520OrgUnitName, SEC_OID_AVA_ORGANIZATIONAL_UNIT_NAME, 1.728 + "X520 Organizational Unit Name", 1.729 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.730 + OD( x520DnQualifier, SEC_OID_AVA_DN_QUALIFIER, 1.731 + "X520 DN Qualifier", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.732 + OD( rfc2247DomainComponent, SEC_OID_AVA_DC, 1.733 + "RFC 2247 Domain Component", 1.734 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.735 + 1.736 + OD( nsTypeGIF, SEC_OID_NS_TYPE_GIF, 1.737 + "GIF", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.738 + OD( nsTypeJPEG, SEC_OID_NS_TYPE_JPEG, 1.739 + "JPEG", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.740 + OD( nsTypeURL, SEC_OID_NS_TYPE_URL, 1.741 + "URL", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.742 + OD( nsTypeHTML, SEC_OID_NS_TYPE_HTML, 1.743 + "HTML", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.744 + OD( nsTypeCertSeq, SEC_OID_NS_TYPE_CERT_SEQUENCE, 1.745 + "Certificate Sequence", 1.746 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.747 + OD( missiCertKEADSSOld, SEC_OID_MISSI_KEA_DSS_OLD, 1.748 + "MISSI KEA and DSS Algorithm (Old)", 1.749 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.750 + OD( missiCertDSSOld, SEC_OID_MISSI_DSS_OLD, 1.751 + "MISSI DSS Algorithm (Old)", 1.752 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.753 + OD( missiCertKEADSS, SEC_OID_MISSI_KEA_DSS, 1.754 + "MISSI KEA and DSS Algorithm", 1.755 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.756 + OD( missiCertDSS, SEC_OID_MISSI_DSS, 1.757 + "MISSI DSS Algorithm", 1.758 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.759 + OD( missiCertKEA, SEC_OID_MISSI_KEA, 1.760 + "MISSI KEA Algorithm", 1.761 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.762 + OD( missiCertAltKEA, SEC_OID_MISSI_ALT_KEA, 1.763 + "MISSI Alternate KEA Algorithm", 1.764 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.765 + 1.766 + /* Netscape private extensions */ 1.767 + OD( nsCertExtNetscapeOK, SEC_OID_NS_CERT_EXT_NETSCAPE_OK, 1.768 + "Netscape says this cert is OK", 1.769 + CKM_INVALID_MECHANISM, UNSUPPORTED_CERT_EXTENSION ), 1.770 + OD( nsCertExtIssuerLogo, SEC_OID_NS_CERT_EXT_ISSUER_LOGO, 1.771 + "Certificate Issuer Logo", 1.772 + CKM_INVALID_MECHANISM, UNSUPPORTED_CERT_EXTENSION ), 1.773 + OD( nsCertExtSubjectLogo, SEC_OID_NS_CERT_EXT_SUBJECT_LOGO, 1.774 + "Certificate Subject Logo", 1.775 + CKM_INVALID_MECHANISM, UNSUPPORTED_CERT_EXTENSION ), 1.776 + OD( nsExtCertType, SEC_OID_NS_CERT_EXT_CERT_TYPE, 1.777 + "Certificate Type", 1.778 + CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.779 + OD( nsExtBaseURL, SEC_OID_NS_CERT_EXT_BASE_URL, 1.780 + "Certificate Extension Base URL", 1.781 + CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.782 + OD( nsExtRevocationURL, SEC_OID_NS_CERT_EXT_REVOCATION_URL, 1.783 + "Certificate Revocation URL", 1.784 + CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.785 + OD( nsExtCARevocationURL, SEC_OID_NS_CERT_EXT_CA_REVOCATION_URL, 1.786 + "Certificate Authority Revocation URL", 1.787 + CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.788 + OD( nsExtCACRLURL, SEC_OID_NS_CERT_EXT_CA_CRL_URL, 1.789 + "Certificate Authority CRL Download URL", 1.790 + CKM_INVALID_MECHANISM, UNSUPPORTED_CERT_EXTENSION ), 1.791 + OD( nsExtCACertURL, SEC_OID_NS_CERT_EXT_CA_CERT_URL, 1.792 + "Certificate Authority Certificate Download URL", 1.793 + CKM_INVALID_MECHANISM, UNSUPPORTED_CERT_EXTENSION ), 1.794 + OD( nsExtCertRenewalURL, SEC_OID_NS_CERT_EXT_CERT_RENEWAL_URL, 1.795 + "Certificate Renewal URL", 1.796 + CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.797 + OD( nsExtCAPolicyURL, SEC_OID_NS_CERT_EXT_CA_POLICY_URL, 1.798 + "Certificate Authority Policy URL", 1.799 + CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.800 + OD( nsExtHomepageURL, SEC_OID_NS_CERT_EXT_HOMEPAGE_URL, 1.801 + "Certificate Homepage URL", 1.802 + CKM_INVALID_MECHANISM, UNSUPPORTED_CERT_EXTENSION ), 1.803 + OD( nsExtEntityLogo, SEC_OID_NS_CERT_EXT_ENTITY_LOGO, 1.804 + "Certificate Entity Logo", 1.805 + CKM_INVALID_MECHANISM, UNSUPPORTED_CERT_EXTENSION ), 1.806 + OD( nsExtUserPicture, SEC_OID_NS_CERT_EXT_USER_PICTURE, 1.807 + "Certificate User Picture", 1.808 + CKM_INVALID_MECHANISM, UNSUPPORTED_CERT_EXTENSION ), 1.809 + OD( nsExtSSLServerName, SEC_OID_NS_CERT_EXT_SSL_SERVER_NAME, 1.810 + "Certificate SSL Server Name", 1.811 + CKM_INVALID_MECHANISM, UNSUPPORTED_CERT_EXTENSION ), 1.812 + OD( nsExtComment, SEC_OID_NS_CERT_EXT_COMMENT, 1.813 + "Certificate Comment", 1.814 + CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.815 + OD( nsExtLostPasswordURL, SEC_OID_NS_CERT_EXT_LOST_PASSWORD_URL, 1.816 + "Lost Password URL", 1.817 + CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.818 + OD( nsExtCertRenewalTime, SEC_OID_NS_CERT_EXT_CERT_RENEWAL_TIME, 1.819 + "Certificate Renewal Time", 1.820 + CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.821 + OD( nsKeyUsageGovtApproved, SEC_OID_NS_KEY_USAGE_GOVT_APPROVED, 1.822 + "Strong Crypto Export Approved", 1.823 + CKM_INVALID_MECHANISM, UNSUPPORTED_CERT_EXTENSION ), 1.824 + 1.825 + 1.826 + /* x.509 v3 certificate extensions */ 1.827 + OD( x509SubjectDirectoryAttr, SEC_OID_X509_SUBJECT_DIRECTORY_ATTR, 1.828 + "Certificate Subject Directory Attributes", 1.829 + CKM_INVALID_MECHANISM, UNSUPPORTED_CERT_EXTENSION), 1.830 + OD( x509SubjectKeyID, SEC_OID_X509_SUBJECT_KEY_ID, 1.831 + "Certificate Subject Key ID", 1.832 + CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.833 + OD( x509KeyUsage, SEC_OID_X509_KEY_USAGE, 1.834 + "Certificate Key Usage", 1.835 + CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.836 + OD( x509PrivateKeyUsagePeriod, SEC_OID_X509_PRIVATE_KEY_USAGE_PERIOD, 1.837 + "Certificate Private Key Usage Period", 1.838 + CKM_INVALID_MECHANISM, UNSUPPORTED_CERT_EXTENSION ), 1.839 + OD( x509SubjectAltName, SEC_OID_X509_SUBJECT_ALT_NAME, 1.840 + "Certificate Subject Alt Name", 1.841 + CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.842 + OD( x509IssuerAltName, SEC_OID_X509_ISSUER_ALT_NAME, 1.843 + "Certificate Issuer Alt Name", 1.844 + CKM_INVALID_MECHANISM, FAKE_SUPPORTED_CERT_EXTENSION ), 1.845 + OD( x509BasicConstraints, SEC_OID_X509_BASIC_CONSTRAINTS, 1.846 + "Certificate Basic Constraints", 1.847 + CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.848 + OD( x509NameConstraints, SEC_OID_X509_NAME_CONSTRAINTS, 1.849 + "Certificate Name Constraints", 1.850 + CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.851 + OD( x509CRLDistPoints, SEC_OID_X509_CRL_DIST_POINTS, 1.852 + "CRL Distribution Points", 1.853 + CKM_INVALID_MECHANISM, FAKE_SUPPORTED_CERT_EXTENSION ), 1.854 + OD( x509CertificatePolicies, SEC_OID_X509_CERTIFICATE_POLICIES, 1.855 + "Certificate Policies", 1.856 + CKM_INVALID_MECHANISM, FAKE_SUPPORTED_CERT_EXTENSION ), 1.857 + OD( x509PolicyMappings, SEC_OID_X509_POLICY_MAPPINGS, 1.858 + "Certificate Policy Mappings", 1.859 + CKM_INVALID_MECHANISM, UNSUPPORTED_CERT_EXTENSION ), 1.860 + OD( x509PolicyConstraints, SEC_OID_X509_POLICY_CONSTRAINTS, 1.861 + "Certificate Policy Constraints", 1.862 + CKM_INVALID_MECHANISM, FAKE_SUPPORTED_CERT_EXTENSION ), 1.863 + OD( x509AuthKeyID, SEC_OID_X509_AUTH_KEY_ID, 1.864 + "Certificate Authority Key Identifier", 1.865 + CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.866 + OD( x509ExtKeyUsage, SEC_OID_X509_EXT_KEY_USAGE, 1.867 + "Extended Key Usage", 1.868 + CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.869 + OD( x509AuthInfoAccess, SEC_OID_X509_AUTH_INFO_ACCESS, 1.870 + "Authority Information Access", 1.871 + CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.872 + 1.873 + /* x.509 v3 CRL extensions */ 1.874 + OD( x509CRLNumber, SEC_OID_X509_CRL_NUMBER, 1.875 + "CRL Number", CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.876 + OD( x509ReasonCode, SEC_OID_X509_REASON_CODE, 1.877 + "CRL reason code", CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.878 + OD( x509InvalidDate, SEC_OID_X509_INVALID_DATE, 1.879 + "Invalid Date", CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.880 + 1.881 + OD( x500RSAEncryption, SEC_OID_X500_RSA_ENCRYPTION, 1.882 + "X500 RSA Encryption", CKM_RSA_X_509, INVALID_CERT_EXTENSION ), 1.883 + 1.884 + /* added for alg 1485 */ 1.885 + OD( rfc1274Uid, SEC_OID_RFC1274_UID, 1.886 + "RFC1274 User Id", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.887 + OD( rfc1274Mail, SEC_OID_RFC1274_MAIL, 1.888 + "RFC1274 E-mail Address", 1.889 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.890 + 1.891 + /* pkcs 12 additions */ 1.892 + OD( pkcs12, SEC_OID_PKCS12, 1.893 + "PKCS #12", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.894 + OD( pkcs12ModeIDs, SEC_OID_PKCS12_MODE_IDS, 1.895 + "PKCS #12 Mode IDs", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.896 + OD( pkcs12ESPVKIDs, SEC_OID_PKCS12_ESPVK_IDS, 1.897 + "PKCS #12 ESPVK IDs", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.898 + OD( pkcs12BagIDs, SEC_OID_PKCS12_BAG_IDS, 1.899 + "PKCS #12 Bag IDs", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.900 + OD( pkcs12CertBagIDs, SEC_OID_PKCS12_CERT_BAG_IDS, 1.901 + "PKCS #12 Cert Bag IDs", 1.902 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.903 + OD( pkcs12OIDs, SEC_OID_PKCS12_OIDS, 1.904 + "PKCS #12 OIDs", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.905 + OD( pkcs12PBEIDs, SEC_OID_PKCS12_PBE_IDS, 1.906 + "PKCS #12 PBE IDs", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.907 + OD( pkcs12SignatureIDs, SEC_OID_PKCS12_SIGNATURE_IDS, 1.908 + "PKCS #12 Signature IDs", 1.909 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.910 + OD( pkcs12EnvelopingIDs, SEC_OID_PKCS12_ENVELOPING_IDS, 1.911 + "PKCS #12 Enveloping IDs", 1.912 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.913 + OD( pkcs12PKCS8KeyShrouding, SEC_OID_PKCS12_PKCS8_KEY_SHROUDING, 1.914 + "PKCS #12 Key Shrouding", 1.915 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.916 + OD( pkcs12KeyBagID, SEC_OID_PKCS12_KEY_BAG_ID, 1.917 + "PKCS #12 Key Bag ID", 1.918 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.919 + OD( pkcs12CertAndCRLBagID, SEC_OID_PKCS12_CERT_AND_CRL_BAG_ID, 1.920 + "PKCS #12 Cert And CRL Bag ID", 1.921 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.922 + OD( pkcs12SecretBagID, SEC_OID_PKCS12_SECRET_BAG_ID, 1.923 + "PKCS #12 Secret Bag ID", 1.924 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.925 + OD( pkcs12X509CertCRLBag, SEC_OID_PKCS12_X509_CERT_CRL_BAG, 1.926 + "PKCS #12 X509 Cert CRL Bag", 1.927 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.928 + OD( pkcs12SDSICertBag, SEC_OID_PKCS12_SDSI_CERT_BAG, 1.929 + "PKCS #12 SDSI Cert Bag", 1.930 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.931 + OD( pkcs12PBEWithSha1And128BitRC4, 1.932 + SEC_OID_PKCS12_PBE_WITH_SHA1_AND_128_BIT_RC4, 1.933 + "PKCS #12 PBE With SHA-1 and 128 Bit RC4", 1.934 + CKM_NETSCAPE_PBE_SHA1_128_BIT_RC4, INVALID_CERT_EXTENSION ), 1.935 + OD( pkcs12PBEWithSha1And40BitRC4, 1.936 + SEC_OID_PKCS12_PBE_WITH_SHA1_AND_40_BIT_RC4, 1.937 + "PKCS #12 PBE With SHA-1 and 40 Bit RC4", 1.938 + CKM_NETSCAPE_PBE_SHA1_40_BIT_RC4, INVALID_CERT_EXTENSION ), 1.939 + OD( pkcs12PBEWithSha1AndTripleDESCBC, 1.940 + SEC_OID_PKCS12_PBE_WITH_SHA1_AND_TRIPLE_DES_CBC, 1.941 + "PKCS #12 PBE With SHA-1 and Triple DES-CBC", 1.942 + CKM_NETSCAPE_PBE_SHA1_TRIPLE_DES_CBC, INVALID_CERT_EXTENSION ), 1.943 + OD( pkcs12PBEWithSha1And128BitRC2CBC, 1.944 + SEC_OID_PKCS12_PBE_WITH_SHA1_AND_128_BIT_RC2_CBC, 1.945 + "PKCS #12 PBE With SHA-1 and 128 Bit RC2 CBC", 1.946 + CKM_NETSCAPE_PBE_SHA1_128_BIT_RC2_CBC, INVALID_CERT_EXTENSION ), 1.947 + OD( pkcs12PBEWithSha1And40BitRC2CBC, 1.948 + SEC_OID_PKCS12_PBE_WITH_SHA1_AND_40_BIT_RC2_CBC, 1.949 + "PKCS #12 PBE With SHA-1 and 40 Bit RC2 CBC", 1.950 + CKM_NETSCAPE_PBE_SHA1_40_BIT_RC2_CBC, INVALID_CERT_EXTENSION ), 1.951 + OD( pkcs12RSAEncryptionWith128BitRC4, 1.952 + SEC_OID_PKCS12_RSA_ENCRYPTION_WITH_128_BIT_RC4, 1.953 + "PKCS #12 RSA Encryption with 128 Bit RC4", 1.954 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.955 + OD( pkcs12RSAEncryptionWith40BitRC4, 1.956 + SEC_OID_PKCS12_RSA_ENCRYPTION_WITH_40_BIT_RC4, 1.957 + "PKCS #12 RSA Encryption with 40 Bit RC4", 1.958 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.959 + OD( pkcs12RSAEncryptionWithTripleDES, 1.960 + SEC_OID_PKCS12_RSA_ENCRYPTION_WITH_TRIPLE_DES, 1.961 + "PKCS #12 RSA Encryption with Triple DES", 1.962 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.963 + OD( pkcs12RSASignatureWithSHA1Digest, 1.964 + SEC_OID_PKCS12_RSA_SIGNATURE_WITH_SHA1_DIGEST, 1.965 + "PKCS #12 RSA Encryption with Triple DES", 1.966 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.967 + 1.968 + /* DSA signatures */ 1.969 + OD( ansix9DSASignature, SEC_OID_ANSIX9_DSA_SIGNATURE, 1.970 + "ANSI X9.57 DSA Signature", CKM_DSA, INVALID_CERT_EXTENSION ), 1.971 + OD( ansix9DSASignaturewithSHA1Digest, 1.972 + SEC_OID_ANSIX9_DSA_SIGNATURE_WITH_SHA1_DIGEST, 1.973 + "ANSI X9.57 DSA Signature with SHA-1 Digest", 1.974 + CKM_DSA_SHA1, INVALID_CERT_EXTENSION ), 1.975 + OD( bogusDSASignaturewithSHA1Digest, 1.976 + SEC_OID_BOGUS_DSA_SIGNATURE_WITH_SHA1_DIGEST, 1.977 + "FORTEZZA DSA Signature with SHA-1 Digest", 1.978 + CKM_DSA_SHA1, INVALID_CERT_EXTENSION ), 1.979 + 1.980 + /* verisign oids */ 1.981 + OD( verisignUserNotices, SEC_OID_VERISIGN_USER_NOTICES, 1.982 + "Verisign User Notices", 1.983 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.984 + 1.985 + /* pkix oids */ 1.986 + OD( pkixCPSPointerQualifier, SEC_OID_PKIX_CPS_POINTER_QUALIFIER, 1.987 + "PKIX CPS Pointer Qualifier", 1.988 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.989 + OD( pkixUserNoticeQualifier, SEC_OID_PKIX_USER_NOTICE_QUALIFIER, 1.990 + "PKIX User Notice Qualifier", 1.991 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.992 + 1.993 + OD( pkixOCSP, SEC_OID_PKIX_OCSP, 1.994 + "PKIX Online Certificate Status Protocol", 1.995 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.996 + OD( pkixOCSPBasicResponse, SEC_OID_PKIX_OCSP_BASIC_RESPONSE, 1.997 + "OCSP Basic Response", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.998 + OD( pkixOCSPNonce, SEC_OID_PKIX_OCSP_NONCE, 1.999 + "OCSP Nonce Extension", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1000 + OD( pkixOCSPCRL, SEC_OID_PKIX_OCSP_CRL, 1.1001 + "OCSP CRL Reference Extension", 1.1002 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1003 + OD( pkixOCSPResponse, SEC_OID_PKIX_OCSP_RESPONSE, 1.1004 + "OCSP Response Types Extension", 1.1005 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1006 + OD( pkixOCSPNoCheck, SEC_OID_PKIX_OCSP_NO_CHECK, 1.1007 + "OCSP No Check Extension", 1.1008 + CKM_INVALID_MECHANISM, SUPPORTED_CERT_EXTENSION ), 1.1009 + OD( pkixOCSPArchiveCutoff, SEC_OID_PKIX_OCSP_ARCHIVE_CUTOFF, 1.1010 + "OCSP Archive Cutoff Extension", 1.1011 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1012 + OD( pkixOCSPServiceLocator, SEC_OID_PKIX_OCSP_SERVICE_LOCATOR, 1.1013 + "OCSP Service Locator Extension", 1.1014 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1015 + 1.1016 + OD( pkixRegCtrlRegToken, SEC_OID_PKIX_REGCTRL_REGTOKEN, 1.1017 + "PKIX CRMF Registration Control, Registration Token", 1.1018 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1019 + OD( pkixRegCtrlAuthenticator, SEC_OID_PKIX_REGCTRL_AUTHENTICATOR, 1.1020 + "PKIX CRMF Registration Control, Registration Authenticator", 1.1021 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1022 + OD( pkixRegCtrlPKIPubInfo, SEC_OID_PKIX_REGCTRL_PKIPUBINFO, 1.1023 + "PKIX CRMF Registration Control, PKI Publication Info", 1.1024 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION), 1.1025 + OD( pkixRegCtrlPKIArchOptions, 1.1026 + SEC_OID_PKIX_REGCTRL_PKI_ARCH_OPTIONS, 1.1027 + "PKIX CRMF Registration Control, PKI Archive Options", 1.1028 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION), 1.1029 + OD( pkixRegCtrlOldCertID, SEC_OID_PKIX_REGCTRL_OLD_CERT_ID, 1.1030 + "PKIX CRMF Registration Control, Old Certificate ID", 1.1031 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION), 1.1032 + OD( pkixRegCtrlProtEncKey, SEC_OID_PKIX_REGCTRL_PROTOCOL_ENC_KEY, 1.1033 + "PKIX CRMF Registration Control, Protocol Encryption Key", 1.1034 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION), 1.1035 + OD( pkixRegInfoUTF8Pairs, SEC_OID_PKIX_REGINFO_UTF8_PAIRS, 1.1036 + "PKIX CRMF Registration Info, UTF8 Pairs", 1.1037 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION), 1.1038 + OD( pkixRegInfoCertReq, SEC_OID_PKIX_REGINFO_CERT_REQUEST, 1.1039 + "PKIX CRMF Registration Info, Certificate Request", 1.1040 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION), 1.1041 + OD( pkixExtendedKeyUsageServerAuth, 1.1042 + SEC_OID_EXT_KEY_USAGE_SERVER_AUTH, 1.1043 + "TLS Web Server Authentication Certificate", 1.1044 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION), 1.1045 + OD( pkixExtendedKeyUsageClientAuth, 1.1046 + SEC_OID_EXT_KEY_USAGE_CLIENT_AUTH, 1.1047 + "TLS Web Client Authentication Certificate", 1.1048 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION), 1.1049 + OD( pkixExtendedKeyUsageCodeSign, SEC_OID_EXT_KEY_USAGE_CODE_SIGN, 1.1050 + "Code Signing Certificate", 1.1051 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION), 1.1052 + OD( pkixExtendedKeyUsageEMailProtect, 1.1053 + SEC_OID_EXT_KEY_USAGE_EMAIL_PROTECT, 1.1054 + "E-Mail Protection Certificate", 1.1055 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION), 1.1056 + OD( pkixExtendedKeyUsageTimeStamp, 1.1057 + SEC_OID_EXT_KEY_USAGE_TIME_STAMP, 1.1058 + "Time Stamping Certifcate", 1.1059 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION), 1.1060 + OD( pkixOCSPResponderExtendedKeyUsage, SEC_OID_OCSP_RESPONDER, 1.1061 + "OCSP Responder Certificate", 1.1062 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION), 1.1063 + 1.1064 + /* Netscape Algorithm OIDs */ 1.1065 + 1.1066 + OD( netscapeSMimeKEA, SEC_OID_NETSCAPE_SMIME_KEA, 1.1067 + "Netscape S/MIME KEA", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1068 + 1.1069 + /* Skipjack OID -- ### mwelch temporary */ 1.1070 + OD( skipjackCBC, SEC_OID_FORTEZZA_SKIPJACK, 1.1071 + "Skipjack CBC64", CKM_SKIPJACK_CBC64, INVALID_CERT_EXTENSION ), 1.1072 + 1.1073 + /* pkcs12 v2 oids */ 1.1074 + OD( pkcs12V2PBEWithSha1And128BitRC4, 1.1075 + SEC_OID_PKCS12_V2_PBE_WITH_SHA1_AND_128_BIT_RC4, 1.1076 + "PKCS #12 V2 PBE With SHA-1 And 128 Bit RC4", 1.1077 + CKM_PBE_SHA1_RC4_128, INVALID_CERT_EXTENSION ), 1.1078 + OD( pkcs12V2PBEWithSha1And40BitRC4, 1.1079 + SEC_OID_PKCS12_V2_PBE_WITH_SHA1_AND_40_BIT_RC4, 1.1080 + "PKCS #12 V2 PBE With SHA-1 And 40 Bit RC4", 1.1081 + CKM_PBE_SHA1_RC4_40, INVALID_CERT_EXTENSION ), 1.1082 + OD( pkcs12V2PBEWithSha1And3KeyTripleDEScbc, 1.1083 + SEC_OID_PKCS12_V2_PBE_WITH_SHA1_AND_3KEY_TRIPLE_DES_CBC, 1.1084 + "PKCS #12 V2 PBE With SHA-1 And 3KEY Triple DES-CBC", 1.1085 + CKM_PBE_SHA1_DES3_EDE_CBC, INVALID_CERT_EXTENSION ), 1.1086 + OD( pkcs12V2PBEWithSha1And2KeyTripleDEScbc, 1.1087 + SEC_OID_PKCS12_V2_PBE_WITH_SHA1_AND_2KEY_TRIPLE_DES_CBC, 1.1088 + "PKCS #12 V2 PBE With SHA-1 And 2KEY Triple DES-CBC", 1.1089 + CKM_PBE_SHA1_DES2_EDE_CBC, INVALID_CERT_EXTENSION ), 1.1090 + OD( pkcs12V2PBEWithSha1And128BitRC2cbc, 1.1091 + SEC_OID_PKCS12_V2_PBE_WITH_SHA1_AND_128_BIT_RC2_CBC, 1.1092 + "PKCS #12 V2 PBE With SHA-1 And 128 Bit RC2 CBC", 1.1093 + CKM_PBE_SHA1_RC2_128_CBC, INVALID_CERT_EXTENSION ), 1.1094 + OD( pkcs12V2PBEWithSha1And40BitRC2cbc, 1.1095 + SEC_OID_PKCS12_V2_PBE_WITH_SHA1_AND_40_BIT_RC2_CBC, 1.1096 + "PKCS #12 V2 PBE With SHA-1 And 40 Bit RC2 CBC", 1.1097 + CKM_PBE_SHA1_RC2_40_CBC, INVALID_CERT_EXTENSION ), 1.1098 + OD( pkcs12SafeContentsID, SEC_OID_PKCS12_SAFE_CONTENTS_ID, 1.1099 + "PKCS #12 Safe Contents ID", 1.1100 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1101 + OD( pkcs12PKCS8ShroudedKeyBagID, 1.1102 + SEC_OID_PKCS12_PKCS8_SHROUDED_KEY_BAG_ID, 1.1103 + "PKCS #12 Safe Contents ID", 1.1104 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1105 + OD( pkcs12V1KeyBag, SEC_OID_PKCS12_V1_KEY_BAG_ID, 1.1106 + "PKCS #12 V1 Key Bag", 1.1107 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1108 + OD( pkcs12V1PKCS8ShroudedKeyBag, 1.1109 + SEC_OID_PKCS12_V1_PKCS8_SHROUDED_KEY_BAG_ID, 1.1110 + "PKCS #12 V1 PKCS8 Shrouded Key Bag", 1.1111 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1112 + OD( pkcs12V1CertBag, SEC_OID_PKCS12_V1_CERT_BAG_ID, 1.1113 + "PKCS #12 V1 Cert Bag", 1.1114 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1115 + OD( pkcs12V1CRLBag, SEC_OID_PKCS12_V1_CRL_BAG_ID, 1.1116 + "PKCS #12 V1 CRL Bag", 1.1117 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1118 + OD( pkcs12V1SecretBag, SEC_OID_PKCS12_V1_SECRET_BAG_ID, 1.1119 + "PKCS #12 V1 Secret Bag", 1.1120 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1121 + OD( pkcs12V1SafeContentsBag, SEC_OID_PKCS12_V1_SAFE_CONTENTS_BAG_ID, 1.1122 + "PKCS #12 V1 Safe Contents Bag", 1.1123 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1124 + 1.1125 + OD( pkcs9X509Certificate, SEC_OID_PKCS9_X509_CERT, 1.1126 + "PKCS #9 X509 Certificate", 1.1127 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1128 + OD( pkcs9SDSICertificate, SEC_OID_PKCS9_SDSI_CERT, 1.1129 + "PKCS #9 SDSI Certificate", 1.1130 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1131 + OD( pkcs9X509CRL, SEC_OID_PKCS9_X509_CRL, 1.1132 + "PKCS #9 X509 CRL", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1133 + OD( pkcs9FriendlyName, SEC_OID_PKCS9_FRIENDLY_NAME, 1.1134 + "PKCS #9 Friendly Name", 1.1135 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1136 + OD( pkcs9LocalKeyID, SEC_OID_PKCS9_LOCAL_KEY_ID, 1.1137 + "PKCS #9 Local Key ID", 1.1138 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1139 + OD( pkcs12KeyUsageAttr, SEC_OID_BOGUS_KEY_USAGE, 1.1140 + "Bogus Key Usage", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1141 + OD( dhPublicKey, SEC_OID_X942_DIFFIE_HELMAN_KEY, 1.1142 + "Diffie-Helman Public Key", CKM_DH_PKCS_DERIVE, 1.1143 + INVALID_CERT_EXTENSION ), 1.1144 + OD( netscapeNickname, SEC_OID_NETSCAPE_NICKNAME, 1.1145 + "Netscape Nickname", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1146 + 1.1147 + /* Cert Server specific OIDs */ 1.1148 + OD( netscapeRecoveryRequest, SEC_OID_NETSCAPE_RECOVERY_REQUEST, 1.1149 + "Recovery Request OID", 1.1150 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1151 + 1.1152 + OD( nsExtAIACertRenewal, SEC_OID_CERT_RENEWAL_LOCATOR, 1.1153 + "Certificate Renewal Locator OID", CKM_INVALID_MECHANISM, 1.1154 + INVALID_CERT_EXTENSION ), 1.1155 + 1.1156 + OD( nsExtCertScopeOfUse, SEC_OID_NS_CERT_EXT_SCOPE_OF_USE, 1.1157 + "Certificate Scope-of-Use Extension", CKM_INVALID_MECHANISM, 1.1158 + SUPPORTED_CERT_EXTENSION ), 1.1159 + 1.1160 + /* CMS stuff */ 1.1161 + OD( cmsESDH, SEC_OID_CMS_EPHEMERAL_STATIC_DIFFIE_HELLMAN, 1.1162 + "Ephemeral-Static Diffie-Hellman", CKM_INVALID_MECHANISM /* XXX */, 1.1163 + INVALID_CERT_EXTENSION ), 1.1164 + OD( cms3DESwrap, SEC_OID_CMS_3DES_KEY_WRAP, 1.1165 + "CMS Triple DES Key Wrap", CKM_INVALID_MECHANISM /* XXX */, 1.1166 + INVALID_CERT_EXTENSION ), 1.1167 + OD( cmsRC2wrap, SEC_OID_CMS_RC2_KEY_WRAP, 1.1168 + "CMS RC2 Key Wrap", CKM_INVALID_MECHANISM /* XXX */, 1.1169 + INVALID_CERT_EXTENSION ), 1.1170 + OD( smimeEncryptionKeyPreference, SEC_OID_SMIME_ENCRYPTION_KEY_PREFERENCE, 1.1171 + "S/MIME Encryption Key Preference", 1.1172 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1173 + 1.1174 + /* AES algorithm OIDs */ 1.1175 + OD( aes128_ECB, SEC_OID_AES_128_ECB, 1.1176 + "AES-128-ECB", CKM_AES_ECB, INVALID_CERT_EXTENSION ), 1.1177 + OD( aes128_CBC, SEC_OID_AES_128_CBC, 1.1178 + "AES-128-CBC", CKM_AES_CBC, INVALID_CERT_EXTENSION ), 1.1179 + OD( aes192_ECB, SEC_OID_AES_192_ECB, 1.1180 + "AES-192-ECB", CKM_AES_ECB, INVALID_CERT_EXTENSION ), 1.1181 + OD( aes192_CBC, SEC_OID_AES_192_CBC, 1.1182 + "AES-192-CBC", CKM_AES_CBC, INVALID_CERT_EXTENSION ), 1.1183 + OD( aes256_ECB, SEC_OID_AES_256_ECB, 1.1184 + "AES-256-ECB", CKM_AES_ECB, INVALID_CERT_EXTENSION ), 1.1185 + OD( aes256_CBC, SEC_OID_AES_256_CBC, 1.1186 + "AES-256-CBC", CKM_AES_CBC, INVALID_CERT_EXTENSION ), 1.1187 + 1.1188 + /* More bogus DSA OIDs */ 1.1189 + OD( sdn702DSASignature, SEC_OID_SDN702_DSA_SIGNATURE, 1.1190 + "SDN.702 DSA Signature", CKM_DSA_SHA1, INVALID_CERT_EXTENSION ), 1.1191 + 1.1192 + OD( ms_smimeEncryptionKeyPreference, 1.1193 + SEC_OID_MS_SMIME_ENCRYPTION_KEY_PREFERENCE, 1.1194 + "Microsoft S/MIME Encryption Key Preference", 1.1195 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1196 + 1.1197 + OD( sha256, SEC_OID_SHA256, "SHA-256", CKM_SHA256, INVALID_CERT_EXTENSION), 1.1198 + OD( sha384, SEC_OID_SHA384, "SHA-384", CKM_SHA384, INVALID_CERT_EXTENSION), 1.1199 + OD( sha512, SEC_OID_SHA512, "SHA-512", CKM_SHA512, INVALID_CERT_EXTENSION), 1.1200 + 1.1201 + OD( pkcs1SHA256WithRSAEncryption, SEC_OID_PKCS1_SHA256_WITH_RSA_ENCRYPTION, 1.1202 + "PKCS #1 SHA-256 With RSA Encryption", CKM_SHA256_RSA_PKCS, 1.1203 + INVALID_CERT_EXTENSION ), 1.1204 + OD( pkcs1SHA384WithRSAEncryption, SEC_OID_PKCS1_SHA384_WITH_RSA_ENCRYPTION, 1.1205 + "PKCS #1 SHA-384 With RSA Encryption", CKM_SHA384_RSA_PKCS, 1.1206 + INVALID_CERT_EXTENSION ), 1.1207 + OD( pkcs1SHA512WithRSAEncryption, SEC_OID_PKCS1_SHA512_WITH_RSA_ENCRYPTION, 1.1208 + "PKCS #1 SHA-512 With RSA Encryption", CKM_SHA512_RSA_PKCS, 1.1209 + INVALID_CERT_EXTENSION ), 1.1210 + 1.1211 + OD( aes128_KEY_WRAP, SEC_OID_AES_128_KEY_WRAP, 1.1212 + "AES-128 Key Wrap", CKM_NSS_AES_KEY_WRAP, INVALID_CERT_EXTENSION), 1.1213 + OD( aes192_KEY_WRAP, SEC_OID_AES_192_KEY_WRAP, 1.1214 + "AES-192 Key Wrap", CKM_NSS_AES_KEY_WRAP, INVALID_CERT_EXTENSION), 1.1215 + OD( aes256_KEY_WRAP, SEC_OID_AES_256_KEY_WRAP, 1.1216 + "AES-256 Key Wrap", CKM_NSS_AES_KEY_WRAP, INVALID_CERT_EXTENSION), 1.1217 + 1.1218 + /* Elliptic Curve Cryptography (ECC) OIDs */ 1.1219 + OD( ansix962ECPublicKey, SEC_OID_ANSIX962_EC_PUBLIC_KEY, 1.1220 + "X9.62 elliptic curve public key", CKM_ECDH1_DERIVE, 1.1221 + INVALID_CERT_EXTENSION ), 1.1222 + OD( ansix962SignaturewithSHA1Digest, 1.1223 + SEC_OID_ANSIX962_ECDSA_SHA1_SIGNATURE, 1.1224 + "X9.62 ECDSA signature with SHA-1", CKM_ECDSA_SHA1, 1.1225 + INVALID_CERT_EXTENSION ), 1.1226 + 1.1227 + /* Named curves */ 1.1228 + 1.1229 + /* ANSI X9.62 named elliptic curves (prime field) */ 1.1230 + OD( ansiX962prime192v1, SEC_OID_ANSIX962_EC_PRIME192V1, 1.1231 + "ANSI X9.62 elliptic curve prime192v1 (aka secp192r1, NIST P-192)", 1.1232 + CKM_INVALID_MECHANISM, 1.1233 + INVALID_CERT_EXTENSION ), 1.1234 + OD( ansiX962prime192v2, SEC_OID_ANSIX962_EC_PRIME192V2, 1.1235 + "ANSI X9.62 elliptic curve prime192v2", 1.1236 + CKM_INVALID_MECHANISM, 1.1237 + INVALID_CERT_EXTENSION ), 1.1238 + OD( ansiX962prime192v3, SEC_OID_ANSIX962_EC_PRIME192V3, 1.1239 + "ANSI X9.62 elliptic curve prime192v3", 1.1240 + CKM_INVALID_MECHANISM, 1.1241 + INVALID_CERT_EXTENSION ), 1.1242 + OD( ansiX962prime239v1, SEC_OID_ANSIX962_EC_PRIME239V1, 1.1243 + "ANSI X9.62 elliptic curve prime239v1", 1.1244 + CKM_INVALID_MECHANISM, 1.1245 + INVALID_CERT_EXTENSION ), 1.1246 + OD( ansiX962prime239v2, SEC_OID_ANSIX962_EC_PRIME239V2, 1.1247 + "ANSI X9.62 elliptic curve prime239v2", 1.1248 + CKM_INVALID_MECHANISM, 1.1249 + INVALID_CERT_EXTENSION ), 1.1250 + OD( ansiX962prime239v3, SEC_OID_ANSIX962_EC_PRIME239V3, 1.1251 + "ANSI X9.62 elliptic curve prime239v3", 1.1252 + CKM_INVALID_MECHANISM, 1.1253 + INVALID_CERT_EXTENSION ), 1.1254 + OD( ansiX962prime256v1, SEC_OID_ANSIX962_EC_PRIME256V1, 1.1255 + "ANSI X9.62 elliptic curve prime256v1 (aka secp256r1, NIST P-256)", 1.1256 + CKM_INVALID_MECHANISM, 1.1257 + INVALID_CERT_EXTENSION ), 1.1258 + 1.1259 + /* SECG named elliptic curves (prime field) */ 1.1260 + OD( secgECsecp112r1, SEC_OID_SECG_EC_SECP112R1, 1.1261 + "SECG elliptic curve secp112r1", 1.1262 + CKM_INVALID_MECHANISM, 1.1263 + INVALID_CERT_EXTENSION ), 1.1264 + OD( secgECsecp112r2, SEC_OID_SECG_EC_SECP112R2, 1.1265 + "SECG elliptic curve secp112r2", 1.1266 + CKM_INVALID_MECHANISM, 1.1267 + INVALID_CERT_EXTENSION ), 1.1268 + OD( secgECsecp128r1, SEC_OID_SECG_EC_SECP128R1, 1.1269 + "SECG elliptic curve secp128r1", 1.1270 + CKM_INVALID_MECHANISM, 1.1271 + INVALID_CERT_EXTENSION ), 1.1272 + OD( secgECsecp128r2, SEC_OID_SECG_EC_SECP128R2, 1.1273 + "SECG elliptic curve secp128r2", 1.1274 + CKM_INVALID_MECHANISM, 1.1275 + INVALID_CERT_EXTENSION ), 1.1276 + OD( secgECsecp160k1, SEC_OID_SECG_EC_SECP160K1, 1.1277 + "SECG elliptic curve secp160k1", 1.1278 + CKM_INVALID_MECHANISM, 1.1279 + INVALID_CERT_EXTENSION ), 1.1280 + OD( secgECsecp160r1, SEC_OID_SECG_EC_SECP160R1, 1.1281 + "SECG elliptic curve secp160r1", 1.1282 + CKM_INVALID_MECHANISM, 1.1283 + INVALID_CERT_EXTENSION ), 1.1284 + OD( secgECsecp160r2, SEC_OID_SECG_EC_SECP160R2, 1.1285 + "SECG elliptic curve secp160r2", 1.1286 + CKM_INVALID_MECHANISM, 1.1287 + INVALID_CERT_EXTENSION ), 1.1288 + OD( secgECsecp192k1, SEC_OID_SECG_EC_SECP192K1, 1.1289 + "SECG elliptic curve secp192k1", 1.1290 + CKM_INVALID_MECHANISM, 1.1291 + INVALID_CERT_EXTENSION ), 1.1292 + OD( secgECsecp224k1, SEC_OID_SECG_EC_SECP224K1, 1.1293 + "SECG elliptic curve secp224k1", 1.1294 + CKM_INVALID_MECHANISM, 1.1295 + INVALID_CERT_EXTENSION ), 1.1296 + OD( secgECsecp224r1, SEC_OID_SECG_EC_SECP224R1, 1.1297 + "SECG elliptic curve secp224r1 (aka NIST P-224)", 1.1298 + CKM_INVALID_MECHANISM, 1.1299 + INVALID_CERT_EXTENSION ), 1.1300 + OD( secgECsecp256k1, SEC_OID_SECG_EC_SECP256K1, 1.1301 + "SECG elliptic curve secp256k1", 1.1302 + CKM_INVALID_MECHANISM, 1.1303 + INVALID_CERT_EXTENSION ), 1.1304 + OD( secgECsecp384r1, SEC_OID_SECG_EC_SECP384R1, 1.1305 + "SECG elliptic curve secp384r1 (aka NIST P-384)", 1.1306 + CKM_INVALID_MECHANISM, 1.1307 + INVALID_CERT_EXTENSION ), 1.1308 + OD( secgECsecp521r1, SEC_OID_SECG_EC_SECP521R1, 1.1309 + "SECG elliptic curve secp521r1 (aka NIST P-521)", 1.1310 + CKM_INVALID_MECHANISM, 1.1311 + INVALID_CERT_EXTENSION ), 1.1312 + 1.1313 + /* ANSI X9.62 named elliptic curves (characteristic two field) */ 1.1314 + OD( ansiX962c2pnb163v1, SEC_OID_ANSIX962_EC_C2PNB163V1, 1.1315 + "ANSI X9.62 elliptic curve c2pnb163v1", 1.1316 + CKM_INVALID_MECHANISM, 1.1317 + INVALID_CERT_EXTENSION ), 1.1318 + OD( ansiX962c2pnb163v2, SEC_OID_ANSIX962_EC_C2PNB163V2, 1.1319 + "ANSI X9.62 elliptic curve c2pnb163v2", 1.1320 + CKM_INVALID_MECHANISM, 1.1321 + INVALID_CERT_EXTENSION ), 1.1322 + OD( ansiX962c2pnb163v3, SEC_OID_ANSIX962_EC_C2PNB163V3, 1.1323 + "ANSI X9.62 elliptic curve c2pnb163v3", 1.1324 + CKM_INVALID_MECHANISM, 1.1325 + INVALID_CERT_EXTENSION ), 1.1326 + OD( ansiX962c2pnb176v1, SEC_OID_ANSIX962_EC_C2PNB176V1, 1.1327 + "ANSI X9.62 elliptic curve c2pnb176v1", 1.1328 + CKM_INVALID_MECHANISM, 1.1329 + INVALID_CERT_EXTENSION ), 1.1330 + OD( ansiX962c2tnb191v1, SEC_OID_ANSIX962_EC_C2TNB191V1, 1.1331 + "ANSI X9.62 elliptic curve c2tnb191v1", 1.1332 + CKM_INVALID_MECHANISM, 1.1333 + INVALID_CERT_EXTENSION ), 1.1334 + OD( ansiX962c2tnb191v2, SEC_OID_ANSIX962_EC_C2TNB191V2, 1.1335 + "ANSI X9.62 elliptic curve c2tnb191v2", 1.1336 + CKM_INVALID_MECHANISM, 1.1337 + INVALID_CERT_EXTENSION ), 1.1338 + OD( ansiX962c2tnb191v3, SEC_OID_ANSIX962_EC_C2TNB191V3, 1.1339 + "ANSI X9.62 elliptic curve c2tnb191v3", 1.1340 + CKM_INVALID_MECHANISM, 1.1341 + INVALID_CERT_EXTENSION ), 1.1342 + OD( ansiX962c2onb191v4, SEC_OID_ANSIX962_EC_C2ONB191V4, 1.1343 + "ANSI X9.62 elliptic curve c2onb191v4", 1.1344 + CKM_INVALID_MECHANISM, 1.1345 + INVALID_CERT_EXTENSION ), 1.1346 + OD( ansiX962c2onb191v5, SEC_OID_ANSIX962_EC_C2ONB191V5, 1.1347 + "ANSI X9.62 elliptic curve c2onb191v5", 1.1348 + CKM_INVALID_MECHANISM, 1.1349 + INVALID_CERT_EXTENSION ), 1.1350 + OD( ansiX962c2pnb208w1, SEC_OID_ANSIX962_EC_C2PNB208W1, 1.1351 + "ANSI X9.62 elliptic curve c2pnb208w1", 1.1352 + CKM_INVALID_MECHANISM, 1.1353 + INVALID_CERT_EXTENSION ), 1.1354 + OD( ansiX962c2tnb239v1, SEC_OID_ANSIX962_EC_C2TNB239V1, 1.1355 + "ANSI X9.62 elliptic curve c2tnb239v1", 1.1356 + CKM_INVALID_MECHANISM, 1.1357 + INVALID_CERT_EXTENSION ), 1.1358 + OD( ansiX962c2tnb239v2, SEC_OID_ANSIX962_EC_C2TNB239V2, 1.1359 + "ANSI X9.62 elliptic curve c2tnb239v2", 1.1360 + CKM_INVALID_MECHANISM, 1.1361 + INVALID_CERT_EXTENSION ), 1.1362 + OD( ansiX962c2tnb239v3, SEC_OID_ANSIX962_EC_C2TNB239V3, 1.1363 + "ANSI X9.62 elliptic curve c2tnb239v3", 1.1364 + CKM_INVALID_MECHANISM, 1.1365 + INVALID_CERT_EXTENSION ), 1.1366 + OD( ansiX962c2onb239v4, SEC_OID_ANSIX962_EC_C2ONB239V4, 1.1367 + "ANSI X9.62 elliptic curve c2onb239v4", 1.1368 + CKM_INVALID_MECHANISM, 1.1369 + INVALID_CERT_EXTENSION ), 1.1370 + OD( ansiX962c2onb239v5, SEC_OID_ANSIX962_EC_C2ONB239V5, 1.1371 + "ANSI X9.62 elliptic curve c2onb239v5", 1.1372 + CKM_INVALID_MECHANISM, 1.1373 + INVALID_CERT_EXTENSION ), 1.1374 + OD( ansiX962c2pnb272w1, SEC_OID_ANSIX962_EC_C2PNB272W1, 1.1375 + "ANSI X9.62 elliptic curve c2pnb272w1", 1.1376 + CKM_INVALID_MECHANISM, 1.1377 + INVALID_CERT_EXTENSION ), 1.1378 + OD( ansiX962c2pnb304w1, SEC_OID_ANSIX962_EC_C2PNB304W1, 1.1379 + "ANSI X9.62 elliptic curve c2pnb304w1", 1.1380 + CKM_INVALID_MECHANISM, 1.1381 + INVALID_CERT_EXTENSION ), 1.1382 + OD( ansiX962c2tnb359v1, SEC_OID_ANSIX962_EC_C2TNB359V1, 1.1383 + "ANSI X9.62 elliptic curve c2tnb359v1", 1.1384 + CKM_INVALID_MECHANISM, 1.1385 + INVALID_CERT_EXTENSION ), 1.1386 + OD( ansiX962c2pnb368w1, SEC_OID_ANSIX962_EC_C2PNB368W1, 1.1387 + "ANSI X9.62 elliptic curve c2pnb368w1", 1.1388 + CKM_INVALID_MECHANISM, 1.1389 + INVALID_CERT_EXTENSION ), 1.1390 + OD( ansiX962c2tnb431r1, SEC_OID_ANSIX962_EC_C2TNB431R1, 1.1391 + "ANSI X9.62 elliptic curve c2tnb431r1", 1.1392 + CKM_INVALID_MECHANISM, 1.1393 + INVALID_CERT_EXTENSION ), 1.1394 + 1.1395 + /* SECG named elliptic curves (characterisitic two field) */ 1.1396 + OD( secgECsect113r1, SEC_OID_SECG_EC_SECT113R1, 1.1397 + "SECG elliptic curve sect113r1", 1.1398 + CKM_INVALID_MECHANISM, 1.1399 + INVALID_CERT_EXTENSION ), 1.1400 + OD( secgECsect113r2, SEC_OID_SECG_EC_SECT113R2, 1.1401 + "SECG elliptic curve sect113r2", 1.1402 + CKM_INVALID_MECHANISM, 1.1403 + INVALID_CERT_EXTENSION ), 1.1404 + OD( secgECsect131r1, SEC_OID_SECG_EC_SECT131R1, 1.1405 + "SECG elliptic curve sect131r1", 1.1406 + CKM_INVALID_MECHANISM, 1.1407 + INVALID_CERT_EXTENSION ), 1.1408 + OD( secgECsect131r2, SEC_OID_SECG_EC_SECT131R2, 1.1409 + "SECG elliptic curve sect131r2", 1.1410 + CKM_INVALID_MECHANISM, 1.1411 + INVALID_CERT_EXTENSION ), 1.1412 + OD( secgECsect163k1, SEC_OID_SECG_EC_SECT163K1, 1.1413 + "SECG elliptic curve sect163k1 (aka NIST K-163)", 1.1414 + CKM_INVALID_MECHANISM, 1.1415 + INVALID_CERT_EXTENSION ), 1.1416 + OD( secgECsect163r1, SEC_OID_SECG_EC_SECT163R1, 1.1417 + "SECG elliptic curve sect163r1", 1.1418 + CKM_INVALID_MECHANISM, 1.1419 + INVALID_CERT_EXTENSION ), 1.1420 + OD( secgECsect163r2, SEC_OID_SECG_EC_SECT163R2, 1.1421 + "SECG elliptic curve sect163r2 (aka NIST B-163)", 1.1422 + CKM_INVALID_MECHANISM, 1.1423 + INVALID_CERT_EXTENSION ), 1.1424 + OD( secgECsect193r1, SEC_OID_SECG_EC_SECT193R1, 1.1425 + "SECG elliptic curve sect193r1", 1.1426 + CKM_INVALID_MECHANISM, 1.1427 + INVALID_CERT_EXTENSION ), 1.1428 + OD( secgECsect193r2, SEC_OID_SECG_EC_SECT193R2, 1.1429 + "SECG elliptic curve sect193r2", 1.1430 + CKM_INVALID_MECHANISM, 1.1431 + INVALID_CERT_EXTENSION ), 1.1432 + OD( secgECsect233k1, SEC_OID_SECG_EC_SECT233K1, 1.1433 + "SECG elliptic curve sect233k1 (aka NIST K-233)", 1.1434 + CKM_INVALID_MECHANISM, 1.1435 + INVALID_CERT_EXTENSION ), 1.1436 + OD( secgECsect233r1, SEC_OID_SECG_EC_SECT233R1, 1.1437 + "SECG elliptic curve sect233r1 (aka NIST B-233)", 1.1438 + CKM_INVALID_MECHANISM, 1.1439 + INVALID_CERT_EXTENSION ), 1.1440 + OD( secgECsect239k1, SEC_OID_SECG_EC_SECT239K1, 1.1441 + "SECG elliptic curve sect239k1", 1.1442 + CKM_INVALID_MECHANISM, 1.1443 + INVALID_CERT_EXTENSION ), 1.1444 + OD( secgECsect283k1, SEC_OID_SECG_EC_SECT283K1, 1.1445 + "SECG elliptic curve sect283k1 (aka NIST K-283)", 1.1446 + CKM_INVALID_MECHANISM, 1.1447 + INVALID_CERT_EXTENSION ), 1.1448 + OD( secgECsect283r1, SEC_OID_SECG_EC_SECT283R1, 1.1449 + "SECG elliptic curve sect283r1 (aka NIST B-283)", 1.1450 + CKM_INVALID_MECHANISM, 1.1451 + INVALID_CERT_EXTENSION ), 1.1452 + OD( secgECsect409k1, SEC_OID_SECG_EC_SECT409K1, 1.1453 + "SECG elliptic curve sect409k1 (aka NIST K-409)", 1.1454 + CKM_INVALID_MECHANISM, 1.1455 + INVALID_CERT_EXTENSION ), 1.1456 + OD( secgECsect409r1, SEC_OID_SECG_EC_SECT409R1, 1.1457 + "SECG elliptic curve sect409r1 (aka NIST B-409)", 1.1458 + CKM_INVALID_MECHANISM, 1.1459 + INVALID_CERT_EXTENSION ), 1.1460 + OD( secgECsect571k1, SEC_OID_SECG_EC_SECT571K1, 1.1461 + "SECG elliptic curve sect571k1 (aka NIST K-571)", 1.1462 + CKM_INVALID_MECHANISM, 1.1463 + INVALID_CERT_EXTENSION ), 1.1464 + OD( secgECsect571r1, SEC_OID_SECG_EC_SECT571R1, 1.1465 + "SECG elliptic curve sect571r1 (aka NIST B-571)", 1.1466 + CKM_INVALID_MECHANISM, 1.1467 + INVALID_CERT_EXTENSION ), 1.1468 + 1.1469 + OD( netscapeAOLScreenname, SEC_OID_NETSCAPE_AOLSCREENNAME, 1.1470 + "AOL Screenname", CKM_INVALID_MECHANISM, 1.1471 + INVALID_CERT_EXTENSION ), 1.1472 + 1.1473 + OD( x520SurName, SEC_OID_AVA_SURNAME, 1.1474 + "X520 Title", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1475 + OD( x520SerialNumber, SEC_OID_AVA_SERIAL_NUMBER, 1.1476 + "X520 Serial Number", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1477 + OD( x520StreetAddress, SEC_OID_AVA_STREET_ADDRESS, 1.1478 + "X520 Street Address", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1479 + OD( x520Title, SEC_OID_AVA_TITLE, 1.1480 + "X520 Title", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1481 + OD( x520PostalAddress, SEC_OID_AVA_POSTAL_ADDRESS, 1.1482 + "X520 Postal Address", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1483 + OD( x520PostalCode, SEC_OID_AVA_POSTAL_CODE, 1.1484 + "X520 Postal Code", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1485 + OD( x520PostOfficeBox, SEC_OID_AVA_POST_OFFICE_BOX, 1.1486 + "X520 Post Office Box", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1487 + OD( x520GivenName, SEC_OID_AVA_GIVEN_NAME, 1.1488 + "X520 Given Name", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1489 + OD( x520Initials, SEC_OID_AVA_INITIALS, 1.1490 + "X520 Initials", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1491 + OD( x520GenerationQualifier, SEC_OID_AVA_GENERATION_QUALIFIER, 1.1492 + "X520 Generation Qualifier", 1.1493 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1494 + OD( x520HouseIdentifier, SEC_OID_AVA_HOUSE_IDENTIFIER, 1.1495 + "X520 House Identifier", 1.1496 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1497 + OD( x520Pseudonym, SEC_OID_AVA_PSEUDONYM, 1.1498 + "X520 Pseudonym", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1499 + 1.1500 + /* More OIDs */ 1.1501 + OD( pkixCAIssuers, SEC_OID_PKIX_CA_ISSUERS, 1.1502 + "PKIX CA issuers access method", 1.1503 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1504 + OD( pkcs9ExtensionRequest, SEC_OID_PKCS9_EXTENSION_REQUEST, 1.1505 + "PKCS #9 Extension Request", 1.1506 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1507 + 1.1508 + /* more ECC Signature Oids */ 1.1509 + OD( ansix962SignatureRecommended, 1.1510 + SEC_OID_ANSIX962_ECDSA_SIGNATURE_RECOMMENDED_DIGEST, 1.1511 + "X9.62 ECDSA signature with recommended digest", CKM_INVALID_MECHANISM, 1.1512 + INVALID_CERT_EXTENSION ), 1.1513 + OD( ansix962SignatureSpecified, 1.1514 + SEC_OID_ANSIX962_ECDSA_SIGNATURE_SPECIFIED_DIGEST, 1.1515 + "X9.62 ECDSA signature with specified digest", CKM_ECDSA, 1.1516 + INVALID_CERT_EXTENSION ), 1.1517 + OD( ansix962SignaturewithSHA224Digest, 1.1518 + SEC_OID_ANSIX962_ECDSA_SHA224_SIGNATURE, 1.1519 + "X9.62 ECDSA signature with SHA224", CKM_INVALID_MECHANISM, 1.1520 + INVALID_CERT_EXTENSION ), 1.1521 + OD( ansix962SignaturewithSHA256Digest, 1.1522 + SEC_OID_ANSIX962_ECDSA_SHA256_SIGNATURE, 1.1523 + "X9.62 ECDSA signature with SHA256", CKM_INVALID_MECHANISM, 1.1524 + INVALID_CERT_EXTENSION ), 1.1525 + OD( ansix962SignaturewithSHA384Digest, 1.1526 + SEC_OID_ANSIX962_ECDSA_SHA384_SIGNATURE, 1.1527 + "X9.62 ECDSA signature with SHA384", CKM_INVALID_MECHANISM, 1.1528 + INVALID_CERT_EXTENSION ), 1.1529 + OD( ansix962SignaturewithSHA512Digest, 1.1530 + SEC_OID_ANSIX962_ECDSA_SHA512_SIGNATURE, 1.1531 + "X9.62 ECDSA signature with SHA512", CKM_INVALID_MECHANISM, 1.1532 + INVALID_CERT_EXTENSION ), 1.1533 + 1.1534 + /* More id-ce and id-pe OIDs from RFC 3280 */ 1.1535 + OD( x509HoldInstructionCode, SEC_OID_X509_HOLD_INSTRUCTION_CODE, 1.1536 + "CRL Hold Instruction Code", CKM_INVALID_MECHANISM, 1.1537 + UNSUPPORTED_CERT_EXTENSION ), 1.1538 + OD( x509DeltaCRLIndicator, SEC_OID_X509_DELTA_CRL_INDICATOR, 1.1539 + "Delta CRL Indicator", CKM_INVALID_MECHANISM, 1.1540 + FAKE_SUPPORTED_CERT_EXTENSION ), 1.1541 + OD( x509IssuingDistributionPoint, SEC_OID_X509_ISSUING_DISTRIBUTION_POINT, 1.1542 + "Issuing Distribution Point", CKM_INVALID_MECHANISM, 1.1543 + FAKE_SUPPORTED_CERT_EXTENSION ), 1.1544 + OD( x509CertIssuer, SEC_OID_X509_CERT_ISSUER, 1.1545 + "Certificate Issuer Extension",CKM_INVALID_MECHANISM, 1.1546 + FAKE_SUPPORTED_CERT_EXTENSION ), 1.1547 + OD( x509FreshestCRL, SEC_OID_X509_FRESHEST_CRL, 1.1548 + "Freshest CRL", CKM_INVALID_MECHANISM, 1.1549 + UNSUPPORTED_CERT_EXTENSION ), 1.1550 + OD( x509InhibitAnyPolicy, SEC_OID_X509_INHIBIT_ANY_POLICY, 1.1551 + "Inhibit Any Policy", CKM_INVALID_MECHANISM, 1.1552 + FAKE_SUPPORTED_CERT_EXTENSION ), 1.1553 + OD( x509SubjectInfoAccess, SEC_OID_X509_SUBJECT_INFO_ACCESS, 1.1554 + "Subject Info Access", CKM_INVALID_MECHANISM, 1.1555 + UNSUPPORTED_CERT_EXTENSION ), 1.1556 + 1.1557 + /* Camellia algorithm OIDs */ 1.1558 + OD( camellia128_CBC, SEC_OID_CAMELLIA_128_CBC, 1.1559 + "CAMELLIA-128-CBC", CKM_CAMELLIA_CBC, INVALID_CERT_EXTENSION ), 1.1560 + OD( camellia192_CBC, SEC_OID_CAMELLIA_192_CBC, 1.1561 + "CAMELLIA-192-CBC", CKM_CAMELLIA_CBC, INVALID_CERT_EXTENSION ), 1.1562 + OD( camellia256_CBC, SEC_OID_CAMELLIA_256_CBC, 1.1563 + "CAMELLIA-256-CBC", CKM_CAMELLIA_CBC, INVALID_CERT_EXTENSION ), 1.1564 + 1.1565 + /* PKCS 5 v2 OIDS */ 1.1566 + OD( pkcs5Pbkdf2, SEC_OID_PKCS5_PBKDF2, 1.1567 + "PKCS #5 Password Based Key Dervive Function v2 ", 1.1568 + CKM_PKCS5_PBKD2, INVALID_CERT_EXTENSION ), 1.1569 + OD( pkcs5Pbes2, SEC_OID_PKCS5_PBES2, 1.1570 + "PKCS #5 Password Based Encryption v2 ", 1.1571 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1572 + OD( pkcs5Pbmac1, SEC_OID_PKCS5_PBMAC1, 1.1573 + "PKCS #5 Password Based Authentication v1 ", 1.1574 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1575 + OD( hmac_sha1, SEC_OID_HMAC_SHA1, "HMAC SHA-1", 1.1576 + CKM_SHA_1_HMAC, INVALID_CERT_EXTENSION ), 1.1577 + OD( hmac_sha224, SEC_OID_HMAC_SHA224, "HMAC SHA-224", 1.1578 + CKM_SHA224_HMAC, INVALID_CERT_EXTENSION ), 1.1579 + OD( hmac_sha256, SEC_OID_HMAC_SHA256, "HMAC SHA-256", 1.1580 + CKM_SHA256_HMAC, INVALID_CERT_EXTENSION ), 1.1581 + OD( hmac_sha384, SEC_OID_HMAC_SHA384, "HMAC SHA-384", 1.1582 + CKM_SHA384_HMAC, INVALID_CERT_EXTENSION ), 1.1583 + OD( hmac_sha512, SEC_OID_HMAC_SHA512, "HMAC SHA-512", 1.1584 + CKM_SHA512_HMAC, INVALID_CERT_EXTENSION ), 1.1585 + 1.1586 + /* SIA extension OIDs */ 1.1587 + OD( x509SIATimeStamping, SEC_OID_PKIX_TIMESTAMPING, 1.1588 + "SIA Time Stamping", CKM_INVALID_MECHANISM, 1.1589 + INVALID_CERT_EXTENSION ), 1.1590 + OD( x509SIACaRepository, SEC_OID_PKIX_CA_REPOSITORY, 1.1591 + "SIA CA Repository", CKM_INVALID_MECHANISM, 1.1592 + INVALID_CERT_EXTENSION ), 1.1593 + 1.1594 + OD( isoSHA1WithRSASignature, SEC_OID_ISO_SHA1_WITH_RSA_SIGNATURE, 1.1595 + "ISO SHA-1 with RSA Signature", 1.1596 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1597 + 1.1598 + /* SEED algorithm OIDs */ 1.1599 + OD( seed_CBC, SEC_OID_SEED_CBC, 1.1600 + "SEED-CBC", CKM_SEED_CBC, INVALID_CERT_EXTENSION), 1.1601 + 1.1602 + OD( x509CertificatePoliciesAnyPolicy, SEC_OID_X509_ANY_POLICY, 1.1603 + "Certificate Policies AnyPolicy", 1.1604 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1605 + 1.1606 + OD( pkcs1RSAOAEPEncryption, SEC_OID_PKCS1_RSA_OAEP_ENCRYPTION, 1.1607 + "PKCS #1 RSA-OAEP Encryption", CKM_RSA_PKCS_OAEP, 1.1608 + INVALID_CERT_EXTENSION ), 1.1609 + 1.1610 + OD( pkcs1MGF1, SEC_OID_PKCS1_MGF1, 1.1611 + "PKCS #1 MGF1 Mask Generation Function", CKM_INVALID_MECHANISM, 1.1612 + INVALID_CERT_EXTENSION ), 1.1613 + 1.1614 + OD( pkcs1PSpecified, SEC_OID_PKCS1_PSPECIFIED, 1.1615 + "PKCS #1 RSA-OAEP Explicitly Specified Encoding Parameters", 1.1616 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1617 + 1.1618 + OD( pkcs1RSAPSSSignature, SEC_OID_PKCS1_RSA_PSS_SIGNATURE, 1.1619 + "PKCS #1 RSA-PSS Signature", CKM_RSA_PKCS_PSS, 1.1620 + INVALID_CERT_EXTENSION ), 1.1621 + 1.1622 + OD( pkcs1SHA224WithRSAEncryption, SEC_OID_PKCS1_SHA224_WITH_RSA_ENCRYPTION, 1.1623 + "PKCS #1 SHA-224 With RSA Encryption", CKM_SHA224_RSA_PKCS, 1.1624 + INVALID_CERT_EXTENSION ), 1.1625 + 1.1626 + OD( sha224, SEC_OID_SHA224, "SHA-224", CKM_SHA224, INVALID_CERT_EXTENSION), 1.1627 + 1.1628 + OD( evIncorporationLocality, SEC_OID_EV_INCORPORATION_LOCALITY, 1.1629 + "Jurisdiction of Incorporation Locality Name", 1.1630 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1631 + OD( evIncorporationState, SEC_OID_EV_INCORPORATION_STATE, 1.1632 + "Jurisdiction of Incorporation State Name", 1.1633 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1634 + OD( evIncorporationCountry, SEC_OID_EV_INCORPORATION_COUNTRY, 1.1635 + "Jurisdiction of Incorporation Country Name", 1.1636 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1637 + OD( x520BusinessCategory, SEC_OID_BUSINESS_CATEGORY, 1.1638 + "Business Category", 1.1639 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1640 + 1.1641 + OD( nistDSASignaturewithSHA224Digest, 1.1642 + SEC_OID_NIST_DSA_SIGNATURE_WITH_SHA224_DIGEST, 1.1643 + "DSA with SHA-224 Signature", 1.1644 + CKM_INVALID_MECHANISM /* not yet defined */, INVALID_CERT_EXTENSION), 1.1645 + OD( nistDSASignaturewithSHA256Digest, 1.1646 + SEC_OID_NIST_DSA_SIGNATURE_WITH_SHA256_DIGEST, 1.1647 + "DSA with SHA-256 Signature", 1.1648 + CKM_INVALID_MECHANISM /* not yet defined */, INVALID_CERT_EXTENSION), 1.1649 + OD( msExtendedKeyUsageTrustListSigning, 1.1650 + SEC_OID_MS_EXT_KEY_USAGE_CTL_SIGNING, 1.1651 + "Microsoft Trust List Signing", 1.1652 + CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), 1.1653 + OD( x520Name, SEC_OID_AVA_NAME, 1.1654 + "X520 Name", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ) 1.1655 +}; 1.1656 + 1.1657 +/* PRIVATE EXTENDED SECOID Table 1.1658 + * This table is private. Its structure is opaque to the outside. 1.1659 + * It is indexed by the same SECOidTag as the oids table above. 1.1660 + * Every member of this struct must have accessor functions (set, get) 1.1661 + * and those functions must operate by value, not by reference. 1.1662 + * The addresses of the contents of this table must not be exposed 1.1663 + * by the accessor functions. 1.1664 + */ 1.1665 +typedef struct privXOidStr { 1.1666 + PRUint32 notPolicyFlags; /* ones complement of policy flags */ 1.1667 +} privXOid; 1.1668 + 1.1669 +static privXOid xOids[SEC_OID_TOTAL]; 1.1670 + 1.1671 +/* 1.1672 + * now the dynamic table. The dynamic table gets build at init time. 1.1673 + * and conceivably gets modified if the user loads new crypto modules. 1.1674 + * All this static data, and the allocated data to which it points, 1.1675 + * is protected by a global reader/writer lock. 1.1676 + * The c language guarantees that global and static data that is not 1.1677 + * explicitly initialized will be initialized with zeros. If we 1.1678 + * initialize it with zeros, the data goes into the initialized data 1.1679 + * secment, and increases the size of the library. By leaving it 1.1680 + * uninitialized, it is allocated in BSS, and does NOT increase the 1.1681 + * library size. 1.1682 + */ 1.1683 + 1.1684 +typedef struct dynXOidStr { 1.1685 + SECOidData data; 1.1686 + privXOid priv; 1.1687 +} dynXOid; 1.1688 + 1.1689 +static NSSRWLock * dynOidLock; 1.1690 +static PLArenaPool * dynOidPool; 1.1691 +static PLHashTable * dynOidHash; 1.1692 +static dynXOid ** dynOidTable; /* not in the pool */ 1.1693 +static int dynOidEntriesAllocated; 1.1694 +static int dynOidEntriesUsed; 1.1695 + 1.1696 +/* Creates NSSRWLock and dynOidPool at initialization time. 1.1697 +*/ 1.1698 +static SECStatus 1.1699 +secoid_InitDynOidData(void) 1.1700 +{ 1.1701 + SECStatus rv = SECSuccess; 1.1702 + 1.1703 + dynOidLock = NSSRWLock_New(1, "dynamic OID data"); 1.1704 + if (!dynOidLock) { 1.1705 + return SECFailure; /* Error code should already be set. */ 1.1706 + } 1.1707 + dynOidPool = PORT_NewArena(2048); 1.1708 + if (!dynOidPool) { 1.1709 + rv = SECFailure /* Error code should already be set. */; 1.1710 + } 1.1711 + return rv; 1.1712 +} 1.1713 + 1.1714 +/* Add oidData to hash table. Caller holds write lock dynOidLock. */ 1.1715 +static SECStatus 1.1716 +secoid_HashDynamicOiddata(const SECOidData * oid) 1.1717 +{ 1.1718 + PLHashEntry *entry; 1.1719 + 1.1720 + if (!dynOidHash) { 1.1721 + dynOidHash = PL_NewHashTable(0, SECITEM_Hash, SECITEM_HashCompare, 1.1722 + PL_CompareValues, NULL, NULL); 1.1723 + if ( !dynOidHash ) { 1.1724 + return SECFailure; 1.1725 + } 1.1726 + } 1.1727 + 1.1728 + entry = PL_HashTableAdd( dynOidHash, &oid->oid, (void *)oid ); 1.1729 + return entry ? SECSuccess : SECFailure; 1.1730 +} 1.1731 + 1.1732 + 1.1733 +/* 1.1734 + * Lookup a Dynamic OID. Dynamic OID's still change slowly, so it's 1.1735 + * cheaper to rehash the table when it changes than it is to do the loop 1.1736 + * each time. 1.1737 + */ 1.1738 +static SECOidData * 1.1739 +secoid_FindDynamic(const SECItem *key) 1.1740 +{ 1.1741 + SECOidData *ret = NULL; 1.1742 + 1.1743 + if (dynOidHash) { 1.1744 + NSSRWLock_LockRead(dynOidLock); 1.1745 + if (dynOidHash) { /* must check it again with lock held. */ 1.1746 + ret = (SECOidData *)PL_HashTableLookup(dynOidHash, key); 1.1747 + } 1.1748 + NSSRWLock_UnlockRead(dynOidLock); 1.1749 + } 1.1750 + if (ret == NULL) { 1.1751 + PORT_SetError(SEC_ERROR_UNRECOGNIZED_OID); 1.1752 + } 1.1753 + return ret; 1.1754 +} 1.1755 + 1.1756 +static dynXOid * 1.1757 +secoid_FindDynamicByTag(SECOidTag tagnum) 1.1758 +{ 1.1759 + dynXOid *dxo = NULL; 1.1760 + int tagNumDiff; 1.1761 + 1.1762 + if (tagnum < SEC_OID_TOTAL) { 1.1763 + PORT_SetError(SEC_ERROR_LIBRARY_FAILURE); 1.1764 + return NULL; 1.1765 + } 1.1766 + tagNumDiff = tagnum - SEC_OID_TOTAL; 1.1767 + 1.1768 + if (dynOidTable) { 1.1769 + NSSRWLock_LockRead(dynOidLock); 1.1770 + if (dynOidTable != NULL && /* must check it again with lock held. */ 1.1771 + tagNumDiff < dynOidEntriesUsed) { 1.1772 + dxo = dynOidTable[tagNumDiff]; 1.1773 + } 1.1774 + NSSRWLock_UnlockRead(dynOidLock); 1.1775 + } 1.1776 + if (dxo == NULL) { 1.1777 + PORT_SetError(SEC_ERROR_UNRECOGNIZED_OID); 1.1778 + } 1.1779 + return dxo; 1.1780 +} 1.1781 + 1.1782 +/* 1.1783 + * This routine is thread safe now. 1.1784 + */ 1.1785 +SECOidTag 1.1786 +SECOID_AddEntry(const SECOidData * src) 1.1787 +{ 1.1788 + SECOidData * dst; 1.1789 + dynXOid **table; 1.1790 + SECOidTag ret = SEC_OID_UNKNOWN; 1.1791 + SECStatus rv; 1.1792 + int tableEntries; 1.1793 + int used; 1.1794 + 1.1795 + if (!src || !src->oid.data || !src->oid.len || \ 1.1796 + !src->desc || !strlen(src->desc)) { 1.1797 + PORT_SetError(SEC_ERROR_INVALID_ARGS); 1.1798 + return ret; 1.1799 + } 1.1800 + if (src->supportedExtension != INVALID_CERT_EXTENSION && 1.1801 + src->supportedExtension != UNSUPPORTED_CERT_EXTENSION && 1.1802 + src->supportedExtension != SUPPORTED_CERT_EXTENSION ) { 1.1803 + PORT_SetError(SEC_ERROR_INVALID_ARGS); 1.1804 + return ret; 1.1805 + } 1.1806 + 1.1807 + if (!dynOidPool || !dynOidLock) { 1.1808 + PORT_SetError(SEC_ERROR_NOT_INITIALIZED); 1.1809 + return ret; 1.1810 + } 1.1811 + 1.1812 + NSSRWLock_LockWrite(dynOidLock); 1.1813 + 1.1814 + /* We've just acquired the write lock, and now we call FindOIDTag 1.1815 + ** which will acquire and release the read lock. NSSRWLock has been 1.1816 + ** designed to allow this very case without deadlock. This approach 1.1817 + ** makes the test for the presence of the OID, and the subsequent 1.1818 + ** addition of the OID to the table a single atomic write operation. 1.1819 + */ 1.1820 + ret = SECOID_FindOIDTag(&src->oid); 1.1821 + if (ret != SEC_OID_UNKNOWN) { 1.1822 + /* we could return an error here, but I chose not to do that. 1.1823 + ** This way, if we add an OID to the shared library's built in 1.1824 + ** list of OIDs in some future release, and that OID is the same 1.1825 + ** as some OID that a program has been adding, the program will 1.1826 + ** not suddenly stop working. 1.1827 + */ 1.1828 + goto done; 1.1829 + } 1.1830 + 1.1831 + table = dynOidTable; 1.1832 + tableEntries = dynOidEntriesAllocated; 1.1833 + used = dynOidEntriesUsed; 1.1834 + 1.1835 + if (used + 1 > tableEntries) { 1.1836 + dynXOid ** newTable; 1.1837 + int newTableEntries = tableEntries + 16; 1.1838 + 1.1839 + newTable = (dynXOid **)PORT_Realloc(table, 1.1840 + newTableEntries * sizeof(dynXOid *)); 1.1841 + if (newTable == NULL) { 1.1842 + goto done; 1.1843 + } 1.1844 + dynOidTable = table = newTable; 1.1845 + dynOidEntriesAllocated = tableEntries = newTableEntries; 1.1846 + } 1.1847 + 1.1848 + /* copy oid structure */ 1.1849 + dst = (SECOidData *)PORT_ArenaZNew(dynOidPool, dynXOid); 1.1850 + if (!dst) { 1.1851 + goto done; 1.1852 + } 1.1853 + rv = SECITEM_CopyItem(dynOidPool, &dst->oid, &src->oid); 1.1854 + if (rv != SECSuccess) { 1.1855 + goto done; 1.1856 + } 1.1857 + dst->desc = PORT_ArenaStrdup(dynOidPool, src->desc); 1.1858 + if (!dst->desc) { 1.1859 + goto done; 1.1860 + } 1.1861 + dst->offset = (SECOidTag)(used + SEC_OID_TOTAL); 1.1862 + dst->mechanism = src->mechanism; 1.1863 + dst->supportedExtension = src->supportedExtension; 1.1864 + 1.1865 + rv = secoid_HashDynamicOiddata(dst); 1.1866 + if (rv == SECSuccess) { 1.1867 + table[used++] = (dynXOid *)dst; 1.1868 + dynOidEntriesUsed = used; 1.1869 + ret = dst->offset; 1.1870 + } 1.1871 +done: 1.1872 + NSSRWLock_UnlockWrite(dynOidLock); 1.1873 + return ret; 1.1874 +} 1.1875 + 1.1876 + 1.1877 +/* normal static table processing */ 1.1878 +static PLHashTable *oidhash = NULL; 1.1879 +static PLHashTable *oidmechhash = NULL; 1.1880 + 1.1881 +static PLHashNumber 1.1882 +secoid_HashNumber(const void *key) 1.1883 +{ 1.1884 + return (PLHashNumber) key; 1.1885 +} 1.1886 + 1.1887 +static void 1.1888 +handleHashAlgSupport(char * envVal) 1.1889 +{ 1.1890 + char * myVal = PORT_Strdup(envVal); /* Get a copy we can alter */ 1.1891 + char * arg = myVal; 1.1892 + 1.1893 + while (arg && *arg) { 1.1894 + char * nextArg = PL_strpbrk(arg, ";"); 1.1895 + PRUint32 notEnable; 1.1896 + 1.1897 + if (nextArg) { 1.1898 + while (*nextArg == ';') { 1.1899 + *nextArg++ = '\0'; 1.1900 + } 1.1901 + } 1.1902 + notEnable = (*arg == '-') ? NSS_USE_ALG_IN_CERT_SIGNATURE : 0; 1.1903 + if ((*arg == '+' || *arg == '-') && *++arg) { 1.1904 + int i; 1.1905 + 1.1906 + for (i = 1; i < SEC_OID_TOTAL; i++) { 1.1907 + if (oids[i].desc && strstr(arg, oids[i].desc)) { 1.1908 + xOids[i].notPolicyFlags = notEnable | 1.1909 + (xOids[i].notPolicyFlags & ~NSS_USE_ALG_IN_CERT_SIGNATURE); 1.1910 + } 1.1911 + } 1.1912 + } 1.1913 + arg = nextArg; 1.1914 + } 1.1915 + PORT_Free(myVal); /* can handle NULL argument OK */ 1.1916 +} 1.1917 + 1.1918 +SECStatus 1.1919 +SECOID_Init(void) 1.1920 +{ 1.1921 + PLHashEntry *entry; 1.1922 + const SECOidData *oid; 1.1923 + int i; 1.1924 + char * envVal; 1.1925 + volatile char c; /* force a reference that won't get optimized away */ 1.1926 + 1.1927 + c = __nss_util_rcsid[0] + __nss_util_sccsid[0]; 1.1928 + 1.1929 + if (oidhash) { 1.1930 + return SECSuccess; /* already initialized */ 1.1931 + } 1.1932 + 1.1933 + if (!PR_GetEnv("NSS_ALLOW_WEAK_SIGNATURE_ALG")) { 1.1934 + /* initialize any policy flags that are disabled by default */ 1.1935 + xOids[SEC_OID_MD2 ].notPolicyFlags = ~0; 1.1936 + xOids[SEC_OID_MD4 ].notPolicyFlags = ~0; 1.1937 + xOids[SEC_OID_MD5 ].notPolicyFlags = ~0; 1.1938 + xOids[SEC_OID_PKCS1_MD2_WITH_RSA_ENCRYPTION ].notPolicyFlags = ~0; 1.1939 + xOids[SEC_OID_PKCS1_MD4_WITH_RSA_ENCRYPTION ].notPolicyFlags = ~0; 1.1940 + xOids[SEC_OID_PKCS1_MD5_WITH_RSA_ENCRYPTION ].notPolicyFlags = ~0; 1.1941 + xOids[SEC_OID_PKCS5_PBE_WITH_MD2_AND_DES_CBC].notPolicyFlags = ~0; 1.1942 + xOids[SEC_OID_PKCS5_PBE_WITH_MD5_AND_DES_CBC].notPolicyFlags = ~0; 1.1943 + } 1.1944 + 1.1945 + envVal = PR_GetEnv("NSS_HASH_ALG_SUPPORT"); 1.1946 + if (envVal) 1.1947 + handleHashAlgSupport(envVal); 1.1948 + 1.1949 + if (secoid_InitDynOidData() != SECSuccess) { 1.1950 + PORT_SetError(SEC_ERROR_LIBRARY_FAILURE); 1.1951 + PORT_Assert(0); /* this function should never fail */ 1.1952 + return SECFailure; 1.1953 + } 1.1954 + 1.1955 + oidhash = PL_NewHashTable(0, SECITEM_Hash, SECITEM_HashCompare, 1.1956 + PL_CompareValues, NULL, NULL); 1.1957 + oidmechhash = PL_NewHashTable(0, secoid_HashNumber, PL_CompareValues, 1.1958 + PL_CompareValues, NULL, NULL); 1.1959 + 1.1960 + if ( !oidhash || !oidmechhash) { 1.1961 + PORT_SetError(SEC_ERROR_LIBRARY_FAILURE); 1.1962 + PORT_Assert(0); /*This function should never fail. */ 1.1963 + return(SECFailure); 1.1964 + } 1.1965 + 1.1966 + for ( i = 0; i < SEC_OID_TOTAL; i++ ) { 1.1967 + oid = &oids[i]; 1.1968 + 1.1969 + PORT_Assert ( oid->offset == i ); 1.1970 + 1.1971 + entry = PL_HashTableAdd( oidhash, &oid->oid, (void *)oid ); 1.1972 + if ( entry == NULL ) { 1.1973 + PORT_SetError(SEC_ERROR_LIBRARY_FAILURE); 1.1974 + PORT_Assert(0); /*This function should never fail. */ 1.1975 + return(SECFailure); 1.1976 + } 1.1977 + 1.1978 + if ( oid->mechanism != CKM_INVALID_MECHANISM ) { 1.1979 + entry = PL_HashTableAdd( oidmechhash, 1.1980 + (void *)oid->mechanism, (void *)oid ); 1.1981 + if ( entry == NULL ) { 1.1982 + PORT_SetError(SEC_ERROR_LIBRARY_FAILURE); 1.1983 + PORT_Assert(0); /* This function should never fail. */ 1.1984 + return(SECFailure); 1.1985 + } 1.1986 + } 1.1987 + } 1.1988 + 1.1989 + PORT_Assert (i == SEC_OID_TOTAL); 1.1990 + 1.1991 + return(SECSuccess); 1.1992 +} 1.1993 + 1.1994 +SECOidData * 1.1995 +SECOID_FindOIDByMechanism(unsigned long mechanism) 1.1996 +{ 1.1997 + SECOidData *ret; 1.1998 + 1.1999 + PR_ASSERT(oidhash != NULL); 1.2000 + 1.2001 + ret = PL_HashTableLookupConst ( oidmechhash, (void *)mechanism); 1.2002 + if ( ret == NULL ) { 1.2003 + PORT_SetError(SEC_ERROR_LIBRARY_FAILURE); 1.2004 + } 1.2005 + 1.2006 + return (ret); 1.2007 +} 1.2008 + 1.2009 +SECOidData * 1.2010 +SECOID_FindOID(const SECItem *oid) 1.2011 +{ 1.2012 + SECOidData *ret; 1.2013 + 1.2014 + PR_ASSERT(oidhash != NULL); 1.2015 + 1.2016 + ret = PL_HashTableLookupConst ( oidhash, oid ); 1.2017 + if ( ret == NULL ) { 1.2018 + ret = secoid_FindDynamic(oid); 1.2019 + if (ret == NULL) { 1.2020 + PORT_SetError(SEC_ERROR_UNRECOGNIZED_OID); 1.2021 + } 1.2022 + } 1.2023 + 1.2024 + return(ret); 1.2025 +} 1.2026 + 1.2027 +SECOidTag 1.2028 +SECOID_FindOIDTag(const SECItem *oid) 1.2029 +{ 1.2030 + SECOidData *oiddata; 1.2031 + 1.2032 + oiddata = SECOID_FindOID (oid); 1.2033 + if (oiddata == NULL) 1.2034 + return SEC_OID_UNKNOWN; 1.2035 + 1.2036 + return oiddata->offset; 1.2037 +} 1.2038 + 1.2039 +/* This really should return const. */ 1.2040 +SECOidData * 1.2041 +SECOID_FindOIDByTag(SECOidTag tagnum) 1.2042 +{ 1.2043 + if (tagnum >= SEC_OID_TOTAL) { 1.2044 + return (SECOidData *)secoid_FindDynamicByTag(tagnum); 1.2045 + } 1.2046 + 1.2047 + PORT_Assert((unsigned int)tagnum < SEC_OID_TOTAL); 1.2048 + return (SECOidData *)(&oids[tagnum]); 1.2049 +} 1.2050 + 1.2051 +PRBool SECOID_KnownCertExtenOID (SECItem *extenOid) 1.2052 +{ 1.2053 + SECOidData * oidData; 1.2054 + 1.2055 + oidData = SECOID_FindOID (extenOid); 1.2056 + if (oidData == (SECOidData *)NULL) 1.2057 + return (PR_FALSE); 1.2058 + return ((oidData->supportedExtension == SUPPORTED_CERT_EXTENSION) ? 1.2059 + PR_TRUE : PR_FALSE); 1.2060 +} 1.2061 + 1.2062 + 1.2063 +const char * 1.2064 +SECOID_FindOIDTagDescription(SECOidTag tagnum) 1.2065 +{ 1.2066 + const SECOidData *oidData = SECOID_FindOIDByTag(tagnum); 1.2067 + return oidData ? oidData->desc : 0; 1.2068 +} 1.2069 + 1.2070 +/* --------- opaque extended OID table accessor functions ---------------*/ 1.2071 +/* 1.2072 + * Any of these functions may return SECSuccess or SECFailure with the error 1.2073 + * code set to SEC_ERROR_UNKNOWN_OBJECT_TYPE if the SECOidTag is out of range. 1.2074 + */ 1.2075 + 1.2076 +static privXOid * 1.2077 +secoid_FindXOidByTag(SECOidTag tagnum) 1.2078 +{ 1.2079 + if (tagnum >= SEC_OID_TOTAL) { 1.2080 + dynXOid *dxo = secoid_FindDynamicByTag(tagnum); 1.2081 + return (dxo ? &dxo->priv : NULL); 1.2082 + } 1.2083 + 1.2084 + PORT_Assert((unsigned int)tagnum < SEC_OID_TOTAL); 1.2085 + return &xOids[tagnum]; 1.2086 +} 1.2087 + 1.2088 +/* The Get function outputs the 32-bit value associated with the SECOidTag. 1.2089 + * Flags bits are the NSS_USE_ALG_ #defines in "secoidt.h". 1.2090 + * Default value for any algorithm is 0xffffffff (enabled for all purposes). 1.2091 + * No value is output if function returns SECFailure. 1.2092 + */ 1.2093 +SECStatus 1.2094 +NSS_GetAlgorithmPolicy(SECOidTag tag, PRUint32 *pValue) 1.2095 +{ 1.2096 + privXOid * pxo = secoid_FindXOidByTag(tag); 1.2097 + if (!pxo) 1.2098 + return SECFailure; 1.2099 + if (!pValue) { 1.2100 + PORT_SetError(SEC_ERROR_INVALID_ARGS); 1.2101 + return SECFailure; 1.2102 + } 1.2103 + *pValue = ~(pxo->notPolicyFlags); 1.2104 + return SECSuccess; 1.2105 +} 1.2106 + 1.2107 +/* The Set function modifies the stored value according to the following 1.2108 + * algorithm: 1.2109 + * policy[tag] = (policy[tag] & ~clearBits) | setBits; 1.2110 + */ 1.2111 +SECStatus 1.2112 +NSS_SetAlgorithmPolicy(SECOidTag tag, PRUint32 setBits, PRUint32 clearBits) 1.2113 +{ 1.2114 + privXOid * pxo = secoid_FindXOidByTag(tag); 1.2115 + PRUint32 policyFlags; 1.2116 + if (!pxo) 1.2117 + return SECFailure; 1.2118 + /* The stored policy flags are the ones complement of the flags as 1.2119 + * seen by the user. This is not atomic, but these changes should 1.2120 + * be done rarely, e.g. at initialization time. 1.2121 + */ 1.2122 + policyFlags = ~(pxo->notPolicyFlags); 1.2123 + policyFlags = (policyFlags & ~clearBits) | setBits; 1.2124 + pxo->notPolicyFlags = ~policyFlags; 1.2125 + return SECSuccess; 1.2126 +} 1.2127 + 1.2128 +/* --------- END OF opaque extended OID table accessor functions ---------*/ 1.2129 + 1.2130 +/* for now, this is only used in a single place, so it can remain static */ 1.2131 +static PRBool parentForkedAfterC_Initialize; 1.2132 + 1.2133 +#define SKIP_AFTER_FORK(x) if (!parentForkedAfterC_Initialize) x 1.2134 + 1.2135 +/* 1.2136 + * free up the oid tables. 1.2137 + */ 1.2138 +SECStatus 1.2139 +SECOID_Shutdown(void) 1.2140 +{ 1.2141 + if (oidhash) { 1.2142 + PL_HashTableDestroy(oidhash); 1.2143 + oidhash = NULL; 1.2144 + } 1.2145 + if (oidmechhash) { 1.2146 + PL_HashTableDestroy(oidmechhash); 1.2147 + oidmechhash = NULL; 1.2148 + } 1.2149 + /* Have to handle the case where the lock was created, but 1.2150 + ** the pool wasn't. 1.2151 + ** I'm not going to attempt to create the lock, just to protect 1.2152 + ** the destruction of data that probably isn't initialized anyway. 1.2153 + */ 1.2154 + if (dynOidLock) { 1.2155 + SKIP_AFTER_FORK(NSSRWLock_LockWrite(dynOidLock)); 1.2156 + if (dynOidHash) { 1.2157 + PL_HashTableDestroy(dynOidHash); 1.2158 + dynOidHash = NULL; 1.2159 + } 1.2160 + if (dynOidPool) { 1.2161 + PORT_FreeArena(dynOidPool, PR_FALSE); 1.2162 + dynOidPool = NULL; 1.2163 + } 1.2164 + if (dynOidTable) { 1.2165 + PORT_Free(dynOidTable); 1.2166 + dynOidTable = NULL; 1.2167 + } 1.2168 + dynOidEntriesAllocated = 0; 1.2169 + dynOidEntriesUsed = 0; 1.2170 + 1.2171 + SKIP_AFTER_FORK(NSSRWLock_UnlockWrite(dynOidLock)); 1.2172 + SKIP_AFTER_FORK(NSSRWLock_Destroy(dynOidLock)); 1.2173 + dynOidLock = NULL; 1.2174 + } else { 1.2175 + /* Since dynOidLock doesn't exist, then all the data it protects 1.2176 + ** should be uninitialized. We'll check that (in DEBUG builds), 1.2177 + ** and then make sure it is so, in case NSS is reinitialized. 1.2178 + */ 1.2179 + PORT_Assert(!dynOidHash && !dynOidPool && !dynOidTable && \ 1.2180 + !dynOidEntriesAllocated && !dynOidEntriesUsed); 1.2181 + dynOidHash = NULL; 1.2182 + dynOidPool = NULL; 1.2183 + dynOidTable = NULL; 1.2184 + dynOidEntriesAllocated = 0; 1.2185 + dynOidEntriesUsed = 0; 1.2186 + } 1.2187 + memset(xOids, 0, sizeof xOids); 1.2188 + return SECSuccess; 1.2189 +} 1.2190 + 1.2191 +void UTIL_SetForkState(PRBool forked) 1.2192 +{ 1.2193 + parentForkedAfterC_Initialize = forked; 1.2194 +} 1.2195 + 1.2196 +const char * 1.2197 +NSSUTIL_GetVersion(void) 1.2198 +{ 1.2199 + return NSSUTIL_VERSION; 1.2200 +}