diff --git a/mozilla/security/nss/tests/cert/cert.sh b/mozilla/security/nss/tests/cert/cert.sh index 29e40282f95..613cbb5cef5 100755 --- a/mozilla/security/nss/tests/cert/cert.sh +++ b/mozilla/security/nss/tests/cert/cert.sh @@ -333,6 +333,34 @@ cert_add_cert() return $RET fi cert_log "SUCCESS: $CERTNAME's EC Cert Created" + +# Generate EC certificate signed with RSA + CU_ACTION="Generate mixed EC Cert Request for $CERTNAME" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-ecmixed@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + certu -R -k ec -q "${CURVE}" -d "${PROFILEDIR}" -f "${R_PWFILE}" \ + -z "${R_NOISE_FILE}" -o req 2>&1 + if [ "$RET" -ne 0 ]; then + return $RET + fi + + CU_ACTION="Sign ${CERTNAME}'s EC Request with RSA" +# Avoid conflicting serial numbers with TestCA issuer by keeping +# this set far away. A smaller number risks colliding with the +# extended ssl user certificates. + NEWSERIAL=`expr ${CERTSERIAL} + 10000` + certu -C -c "TestCA" -m "$NEWSERIAL" -v 60 -d "${P_R_CADIR}" \ + -i req -o "${CERTNAME}-ecmixed.cert" -f "${R_PWFILE}" "$1" 2>&1 + if [ "$RET" -ne 0 ]; then + return $RET + fi + + CU_ACTION="Import $CERTNAME's mixed EC Cert" + certu -A -n "${CERTNAME}-ecmixed" -t "u,u,u" -d "${PROFILEDIR}" \ + -f "${R_PWFILE}" -i "${CERTNAME}-ecmixed.cert" 2>&1 + if [ "$RET" -ne 0 ]; then + return $RET + fi + cert_log "SUCCESS: $CERTNAME's mixed EC Cert Created" fi return 0 @@ -695,6 +723,27 @@ cert_extended_ssl() # # done with EC certs # +# Repeat again for mixed EC certs +# + EC_CURVE="secp256r1" + CU_ACTION="Generate mixed EC Cert Request for $CERTNAME (ext)" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-ecmixed@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + certu -R -d "${PROFILEDIR}" -k ec -q "${EC_CURVE}" -f "${R_PWFILE}" \ + -z "${R_NOISE_FILE}" -o req 2>&1 + + CU_ACTION="Sign ${CERTNAME}'s mixed EC Request (ext)" + cp ${CERTDIR}/req ${SERVER_CADIR} + certu -C -c "chain-2-serverCA" -m 201 -v 60 -d "${P_SERVER_CADIR}" \ + -i req -o "${CERTNAME}-ecmixed.cert" -f "${R_PWFILE}" 2>&1 + + CU_ACTION="Import $CERTNAME's mixed EC Cert -t u,u,u (ext)" + certu -A -n "${CERTNAME}-ecmixed" -t "u,u,u" -d "${PROFILEDIR}" \ + -f "${R_PWFILE}" -i "${CERTNAME}-ecmixed.cert" 2>&1 + +# CU_ACTION="Import Client mixed EC Root CA -t T,, for $CERTNAME (ext.)" +# certu -A -n "clientCA-ecmixed" -t "T,," -f "${R_PWFILE}" \ +# -d "${PROFILEDIR}" -i "${CLIENT_CADIR}/clientCA-ecmixed.ca.cert" \ +# 2>&1 fi echo "Importing all the server's own CA chain into the servers DB" @@ -757,6 +806,29 @@ cert_extended_ssl() -d "${PROFILEDIR}" -i "${SERVER_CADIR}/serverCA-ec.ca.cert" 2>&1 # # done with EC certs +# +# +# Repeat the above for mixed EC certs +# + CU_ACTION="Generate mixed EC Cert Request for $CERTNAME (ext)" + CU_SUBJECT="CN=$CERTNAME, E=${CERTNAME}-ecmixed@bogus.com, O=BOGUS NSS, L=Mountain View, ST=California, C=US" + certu -R -d "${PROFILEDIR}" -k ec -q "${EC_CURVE}" -f "${R_PWFILE}" \ + -z "${R_NOISE_FILE}" -o req 2>&1 + + CU_ACTION="Sign ${CERTNAME}'s mixed EC Request (ext)" + cp ${CERTDIR}/req ${CLIENT_CADIR} + certu -C -c "chain-2-clientCA" -m 301 -v 60 -d "${P_CLIENT_CADIR}" \ + -i req -o "${CERTNAME}-ecmixed.cert" -f "${R_PWFILE}" 2>&1 + + CU_ACTION="Import $CERTNAME's mixed EC Cert -t u,u,u (ext)" + certu -A -n "${CERTNAME}-ecmixed" -t "u,u,u" -d "${PROFILEDIR}" \ + -f "${R_PWFILE}" -i "${CERTNAME}-ecmixed.cert" 2>&1 + +# CU_ACTION="Import Server EC Root CA -t C,C,C for $CERTNAME (ext.)" +# certu -A -n "serverCA-ec" -t "C,C,C" -f "${R_PWFILE}" \ +# -d "${PROFILEDIR}" -i "${SERVER_CADIR}/serverCA-ec.ca.cert" 2>&1 +# +# done with mixed EC certs # fi diff --git a/mozilla/security/nss/tests/ssl/ssl.sh b/mozilla/security/nss/tests/ssl/ssl.sh index 2f532424c03..500256d8508 100755 --- a/mozilla/security/nss/tests/ssl/ssl.sh +++ b/mozilla/security/nss/tests/ssl/ssl.sh @@ -205,6 +205,9 @@ start_selfserv() else ECC_OPTIONS="" fi + if [ "$1" = "mixed" ]; then + ECC_OPTIONS="-e ${HOSTADDR}-ecmixed" + fi echo "selfserv -D -p ${PORT} -d ${P_R_SERVERDIR} -n ${HOSTADDR} ${SERVER_OPTIONS} \\" echo " ${ECC_OPTIONS} -w nss ${sparam} -i ${R_SERVERPID} $verbose &" echo "selfserv started at `date`" @@ -245,6 +248,8 @@ ssl_cov() else sparam="$CSHORT" fi + + mixed=0 start_selfserv # Launch the server p="" @@ -264,7 +269,34 @@ ssl_cov() TLS_FLAG="" fi - is_selfserv_alive +# These five tests need an EC cert signed with RSA +# This requires a different certificate loaded in selfserv +# due to a (current) NSS limitation of only loaded one cert +# per type so the default selfserv setup will not work. +#:C00B TLS ECDH RSA WITH NULL SHA +#:C00C TLS ECDH RSA WITH RC4 128 SHA +#:C00D TLS ECDH RSA WITH 3DES EDE CBC SHA +#:C00E TLS ECDH RSA WITH AES 128 CBC SHA +#:C00F TLS ECDH RSA WITH AES 256 CBC SHA + + if [ $mixed -eq 0 ]; then + if [ "${param}" = ":C00B" -o "${param}" = ":C00C" -o "${param}" = ":C00D" -o "${param}" = ":C00E" -o "${param}" = ":C00F" ]; then + kill_selfserv + start_selfserv mixed + mixed=1 + else + is_selfserv_alive + fi + else + if [ "${param}" = ":C00B" -o "${param}" = ":C00C" -o "${param}" = ":C00D" -o "${param}" = ":C00E" -o "${param}" = ":C00F" ]; then + is_selfserv_alive + else + kill_selfserv + start_selfserv + mixed=0 + fi + fi + echo "tstclnt -p ${PORT} -h ${HOSTADDR} -c ${param} ${TLS_FLAG} ${CLIENT_OPTIONS} \\" echo " -f -d ${P_R_CLIENTDIR} < ${REQUEST_FILE}" @@ -335,7 +367,15 @@ ssl_stress() echo "$SCRIPTNAME: skipping $testname (ECC only)" elif [ "$ectype" != "#" ]; then cparam=`echo $cparam | sed -e 's;_; ;g'` - start_selfserv + +# This test needs the mixed cert +# Stress TLS ECDH-RSA AES 128 CBC with SHA (no reuse) + if [ "${sparam}" = "-c_:C00E" ]; then + start_selfserv mixed + else + start_selfserv + fi + if [ "`uname -n`" = "sjsu" ] ; then echo "debugging disapering selfserv... ps -ef | grep selfserv" ps -ef | grep selfserv diff --git a/mozilla/security/nss/tests/ssl/sslcov.txt b/mozilla/security/nss/tests/ssl/sslcov.txt index 0d738a3c33e..7399886456f 100644 --- a/mozilla/security/nss/tests/ssl/sslcov.txt +++ b/mozilla/security/nss/tests/ssl/sslcov.txt @@ -59,11 +59,11 @@ ECC noTLS :C008 SSL3 ECDHE ECDSA WITH 3DES EDE CBC SHA ECC noTLS :C009 SSL3 ECDHE ECDSA WITH AES 128 CBC SHA ECC noTLS :C00A SSL3 ECDHE ECDSA WITH AES 256 CBC SHA -# ECC noTLS :C00B SSL3 ECDH RSA WITH NULL SHA -# ECC noTLS :C00C SSL3 ECDH RSA WITH RC4 128 SHA -# ECC noTLS :C00D SSL3 ECDH RSA WITH 3DES EDE CBC SHA -# ECC noTLS :C00E SSL3 ECDH RSA WITH AES 128 CBC SHA -# ECC noTLS :C00F SSL3 ECDH RSA WITH AES 256 CBC SHA + ECC noTLS :C00B SSL3 ECDH RSA WITH NULL SHA + ECC noTLS :C00C SSL3 ECDH RSA WITH RC4 128 SHA + ECC noTLS :C00D SSL3 ECDH RSA WITH 3DES EDE CBC SHA + ECC noTLS :C00E SSL3 ECDH RSA WITH AES 128 CBC SHA + ECC noTLS :C00F SSL3 ECDH RSA WITH AES 256 CBC SHA ECC noTLS :C010 SSL3 ECDHE RSA WITH NULL SHA ECC noTLS :C011 SSL3 ECDHE RSA WITH RC4 128 SHA ECC noTLS :C012 SSL3 ECDHE RSA WITH 3DES EDE CBC SHA @@ -82,11 +82,11 @@ ECC TLS :C008 TLS ECDHE ECDSA WITH 3DES EDE CBC SHA ECC TLS :C009 TLS ECDHE ECDSA WITH AES 128 CBC SHA ECC TLS :C00A TLS ECDHE ECDSA WITH AES 256 CBC SHA -# ECC TLS :C00B TLS ECDH RSA WITH NULL SHA -# ECC TLS :C00C TLS ECDH RSA WITH RC4 128 SHA -# ECC TLS :C00D TLS ECDH RSA WITH 3DES EDE CBC SHA -# ECC TLS :C00E TLS ECDH RSA WITH AES 128 CBC SHA -# ECC TLS :C00F TLS ECDH RSA WITH AES 256 CBC SHA + ECC TLS :C00B TLS ECDH RSA WITH NULL SHA + ECC TLS :C00C TLS ECDH RSA WITH RC4 128 SHA + ECC TLS :C00D TLS ECDH RSA WITH 3DES EDE CBC SHA + ECC TLS :C00E TLS ECDH RSA WITH AES 128 CBC SHA + ECC TLS :C00F TLS ECDH RSA WITH AES 256 CBC SHA ECC TLS :C010 TLS ECDHE RSA WITH NULL SHA ECC TLS :C011 TLS ECDHE RSA WITH RC4 128 SHA ECC TLS :C012 TLS ECDHE RSA WITH 3DES EDE CBC SHA diff --git a/mozilla/security/nss/tests/ssl/sslstress.txt b/mozilla/security/nss/tests/ssl/sslstress.txt index 59e8beba830..62098c9d6d6 100644 --- a/mozilla/security/nss/tests/ssl/sslstress.txt +++ b/mozilla/security/nss/tests/ssl/sslstress.txt @@ -18,7 +18,7 @@ ECC 0 -c_:C009 -c_100_-C_:C009_-N_-T Stress SSL3 ECDHE-ECDSA AES 128 CBC with SHA (no reuse) ECC 0 -c_:C013 -c_1000_-C_:C013_-T Stress SSL3 ECDHE-RSA AES 128 CBC with SHA ECC 0 -c_:C004 -2_-c_100_-C_:C004_-N Stress TLS ECDH-ECDSA AES 128 CBC with SHA (no reuse) -# ECC 0 -c_:C00E -2_-c_100_-C_:C00E_-N Stress TLS ECDH-RSA AES 128 CBC with SHA (no reuse) + ECC 0 -c_:C00E -2_-c_100_-C_:C00E_-N Stress TLS ECDH-RSA AES 128 CBC with SHA (no reuse) ECC 0 -c_:C013 -2_-c_1000_-C_:C013 Stress TLS ECDHE-RSA AES 128 CBC with SHA # # add client auth versions here...