Chromium Code Reviews| Index: nss/lib/util/secoid.c |
| diff --git a/nss/lib/util/secoid.c b/nss/lib/util/secoid.c |
| index 002099215b5dce70139e89a7620b53ec50db5360..4f16ed386598d8ac292111e2994f25785594105e 100644 |
| --- a/nss/lib/util/secoid.c |
| +++ b/nss/lib/util/secoid.c |
| @@ -163,6 +163,11 @@ const char __nss_util_version[] = "Version: NSS " NSSUTIL_VERSION _DEBUG_STRING; |
| #define CAMELLIA_ENCRYPT_OID MITSUBISHI_ALG,1 |
| #define CAMELLIA_WRAP_OID MITSUBISHI_ALG,3 |
| +/* For IDEA: 1.3.6.1.4.1.188.7.1.1 |
| + */ |
| +#define ASCOM_OID 0x2b,0x6,0x1,0x4,0x1,0xbc |
| +#define ASCOM_IDEA_ALG ASCOM_OID,0x7,0x1,0x1 |
| + |
| /* for SEED : iso(1) member-body(2) korea(410) |
| * kisa(200004) algorithm(1) |
| */ |
| @@ -459,6 +464,10 @@ CONST_OID netscapeSMimeKEA[] = { NETSCAPE_ALGS, 0x01 }; |
| CONST_OID skipjackCBC[] = { MISSI, 0x04 }; |
| CONST_OID dhPublicKey[] = { ANSI_X942_ALGORITHM, 0x1 }; |
| +CONST_OID idea_CBC[] = { ASCOM_IDEA_ALG, 2 }; |
| +CONST_OID aes128_GCM[] = { AES, 0x6 }; |
| +CONST_OID aes192_GCM[] = { AES, 0x1a }; |
| +CONST_OID aes256_GCM[] = { AES, 0x2e }; |
| CONST_OID aes128_ECB[] = { AES, 1 }; |
| CONST_OID aes128_CBC[] = { AES, 2 }; |
| #ifdef DEFINE_ALL_AES_CIPHERS |
| @@ -579,8 +588,10 @@ CONST_OID evIncorporationCountry[] = { EV_NAME_ATTRIBUTE, 3 }; |
| #define OI(x) { siDEROID, (unsigned char *)x, sizeof x } |
| #ifndef SECOID_NO_STRINGS |
| #define OD(oid,tag,desc,mech,ext) { OI(oid), tag, desc, mech, ext } |
| +#define ODE(tag,desc,mech,ext) { { siDEROID, NULL, 0 }, tag, desc, mech, ext } |
| #else |
| #define OD(oid,tag,desc,mech,ext) { OI(oid), tag, 0, mech, ext } |
| +#define ODE(tag,desc,mech,ext) { { siDEROID, NULL, 0 }, tag, 0, mech, ext } |
| #endif |
| #if defined(NSS_ALLOW_UNSUPPORTED_CRITICAL) |
| @@ -1639,7 +1650,68 @@ const static SECOidData oids[SEC_OID_TOTAL] = { |
| "Microsoft Trust List Signing", |
| CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| OD( x520Name, SEC_OID_AVA_NAME, |
| - "X520 Name", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ) |
| + "X520 Name", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + |
| + OD( aes128_GCM, SEC_OID_AES_128_GCM, |
| + "AES-128-GCM", CKM_AES_GCM, INVALID_CERT_EXTENSION ), |
| + OD( aes192_GCM, SEC_OID_AES_192_GCM, |
| + "AES-192-GCM", CKM_AES_GCM, INVALID_CERT_EXTENSION ), |
| + OD( aes256_GCM, SEC_OID_AES_256_GCM, |
| + "AES-256-GCM", CKM_AES_GCM, INVALID_CERT_EXTENSION ), |
| + OD( idea_CBC, SEC_OID_IDEA_CBC, |
| + "IDEA_CBC", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + |
| + ODE( SEC_OID_RC2_40_CBC, |
| + "RC2-40-CBC", CKM_RC2_CBC, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_DES_40_CBC, |
| + "DES-40-CBC", CKM_RC2_CBC, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_RC4_40, |
| + "RC4-40", CKM_RC4, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_RC4_56, |
| + "RC4-56", CKM_RC4, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_NULL_CIPHER, |
| + "NULL cipher", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_HMAC_MD5, |
| + "HMAC-MD5", CKM_MD5_HMAC, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_TLS_RSA, |
| + "TLS RSA key exchange", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_TLS_DHE_RSA, |
| + "TLS DHE-RSA key exchange", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_TLS_DHE_DSS, |
| + "TLS DHE-DSS key exchange", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_TLS_DH_RSA, |
| + "TLS DH-RSA key exchange", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_TLS_DH_DSS, |
| + "TLS DH-DSS key exchange", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_TLS_DH_ANON, |
| + "TLS DH-ANON key exchange", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_TLS_ECDHE_ECDSA, |
| + "TLS ECDHE-ECDSA key exchange", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_TLS_ECDHE_RSA, |
| + "TLS ECDHE-RSA key exchange", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_TLS_ECDH_ECDSA, |
| + "TLS ECDH-ECDSA key exchange", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_TLS_ECDH_RSA, |
| + "TLS ECDH-RSA key exchange", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_TLS_ECDH_ANON, |
| + "TLS ECDH-ANON key exchange", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_TLS_RSA_EXPORT, |
| + "TLS RSA-EXPORT key exchange", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_TLS_DHE_RSA_EXPORT, |
| + "TLS DHE-RSA-EXPORT key exchange", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_TLS_DHE_DSS_EXPORT, |
| + "TLS DHE-DSS-EXPORT key exchange", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_TLS_DH_RSA_EXPORT, |
| + "TLS DH-RSA-EXPORT key exchange", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_TLS_DH_DSS_EXPORT, |
| + "TLS DH-DSS-EXPORT key exchange", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_TLS_DH_ANON_EXPORT, |
| + "TLS DH-ANON-EXPORT key exchange", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_APPLY_SSL_POLICY, |
| + "Apply SSL policy (pseudo-OID)", CKM_INVALID_MECHANISM, INVALID_CERT_EXTENSION ), |
| + ODE( SEC_OID_CHACHA20_POLY1305, |
| + "ChaCha20-Poly1305", CKM_NSS_CHACHA20_POLY1305, INVALID_CERT_EXTENSION ), |
| + |
| }; |
| /* PRIVATE EXTENDED SECOID Table |
| @@ -1872,6 +1944,7 @@ secoid_HashNumber(const void *key) |
| return (PLHashNumber)((char *)key - (char *)NULL); |
| } |
| +#define DEF_FLAGS (NSS_USE_ALG_IN_CERT_SIGNATURE|NSS_USE_ALG_IN_SSL_KX|NSS_USE_ALG_IN_SSL_KX) |
|
svaldez
2016/04/04 15:59:51
nit: dupped
|
| static void |
| handleHashAlgSupport(char * envVal) |
| { |
| @@ -1887,14 +1960,14 @@ handleHashAlgSupport(char * envVal) |
| *nextArg++ = '\0'; |
| } |
| } |
| - notEnable = (*arg == '-') ? (NSS_USE_ALG_IN_CERT_SIGNATURE|NSS_USE_ALG_IN_SSL_KX) : 0; |
| + notEnable = (*arg == '-') ? (DEF_FLAGS) : 0; |
| if ((*arg == '+' || *arg == '-') && *++arg) { |
| int i; |
| for (i = 1; i < SEC_OID_TOTAL; i++) { |
| if (oids[i].desc && strstr(arg, oids[i].desc)) { |
| xOids[i].notPolicyFlags = notEnable | |
| - (xOids[i].notPolicyFlags & ~(NSS_USE_ALG_IN_CERT_SIGNATURE|NSS_USE_ALG_IN_SSL_KX)); |
| + (xOids[i].notPolicyFlags & ~(DEF_FLAGS)); |
| } |
| } |
| } |
| @@ -1918,7 +1991,7 @@ SECOID_Init(void) |
| return SECSuccess; /* already initialized */ |
| } |
| - if (!PR_GetEnv("NSS_ALLOW_WEAK_SIGNATURE_ALG")) { |
| + if (!PR_GetEnvSecure("NSS_ALLOW_WEAK_SIGNATURE_ALG")) { |
| /* initialize any policy flags that are disabled by default */ |
| xOids[SEC_OID_MD2 ].notPolicyFlags = ~0; |
| xOids[SEC_OID_MD4 ].notPolicyFlags = ~0; |
| @@ -1930,7 +2003,10 @@ SECOID_Init(void) |
| xOids[SEC_OID_PKCS5_PBE_WITH_MD5_AND_DES_CBC].notPolicyFlags = ~0; |
| } |
| - envVal = PR_GetEnv("NSS_HASH_ALG_SUPPORT"); |
| + /* turn off NSS_USE_POLICY_IN_SSL by default */ |
| + xOids[SEC_OID_APPLY_SSL_POLICY].notPolicyFlags = NSS_USE_POLICY_IN_SSL; |
| + |
| + envVal = PR_GetEnvSecure("NSS_HASH_ALG_SUPPORT"); |
| if (envVal) |
| handleHashAlgSupport(envVal); |