--- /dev/null
+#! /bin/csh -f
+#
+# Test SSL's hostname compare using subjectAltName extensions.
+#
+# these can be overridden by the 'q' and 'v' cmd line options
+#
+set QUIET = 0
+set VERBOSE = 0
+#
+while ( $#argv > 0 )
+ switch ( "$argv[1]" )
+ case v:
+ set VERBOSE = 1
+ shift
+ breaksw
+ case q:
+ set QUIET = 1
+ shift
+ breaksw
+ default:
+ echo usage: doTest \[q\] \[v\]
+ exit(1)
+ endsw
+end
+
+#
+# hard coded in signerAndSubjSsl
+#
+set ROOT_CERT = ssRootCert.der
+set LEAF_CERT = ssSubjCert.der
+set COMMON_NAME = something.org
+#
+# the common arguments to certcrl
+#
+set STD_CRL_ARGS = "-c $LEAF_CERT -C $ROOT_CERT -a -n -N -q"
+#
+# DNS_NAME goes in the leaf cert's subjectAltName, which is supposed to have precedence
+# over the common name (which is fixed at something.org).
+#
+set DNS_NAME = foo.bar
+set BAD_DNS_NAME = foo.foo.bar
+#
+if($QUIET == 0) then
+ echo === leaf cert with DNS name $DNS_NAME
+endif
+#
+set cmd = "signerAndSubjSsl d=$DNS_NAME q"
+if($VERBOSE == 1) then
+ echo $cmd
+endif
+$cmd || exit(1)
+#
+# Note the app is passing in $HOST_NAME which differs from the leaf cert's common name
+#
+if($QUIET == 0) then
+ echo === ...verify success with hostname $DNS_NAME
+endif
+set cmd = "certcrl $STD_CRL_ARGS -h $DNS_NAME"
+if($VERBOSE == 1) then
+ echo $cmd
+endif
+$cmd || exit(1)
+#
+if($QUIET == 0) then
+ echo === ...verify failure with common name $COMMON_NAME when DNS name present
+endif
+set cmd = "certcrl $STD_CRL_ARGS -h $COMMON_NAME -e=CSSMERR_TP_VERIFY_ACTION_FAILED"
+if($VERBOSE == 1) then
+ echo $cmd
+endif
+$cmd || exit(1)
+#
+if($QUIET == 0) then
+ echo === ...verify failure with host name $BAD_DNS_NAME
+endif
+set cmd = "certcrl $STD_CRL_ARGS -h $BAD_DNS_NAME -e=CSSMERR_TP_VERIFY_ACTION_FAILED"
+if($VERBOSE == 1) then
+ echo $cmd
+endif
+$cmd || exit(1)
+#
+######
+#
+set IP_ADDR = 1.0.5.8
+set IP_ADDR_PAD = 1.0.05.008
+set BAD_IP_ADDR = 2.0.5.8
+#
+if($QUIET == 0) then
+ echo === leaf cert with IP address $IP_ADDR
+endif
+set cmd = "signerAndSubjSsl i=$IP_ADDR q"
+if($VERBOSE == 1) then
+ echo $cmd
+endif
+$cmd || exit(1)
+#
+if($QUIET == 0) then
+ echo === ...verify with hostname $IP_ADDR
+endif
+set cmd = "certcrl $STD_CRL_ARGS -h $IP_ADDR"
+if($VERBOSE == 1) then
+ echo $cmd
+endif
+$cmd || exit(1)
+#
+if($QUIET == 0) then
+ echo === ...verify with hostname $IP_ADDR_PAD
+endif
+set cmd = "certcrl $STD_CRL_ARGS -h $IP_ADDR_PAD"
+if($VERBOSE == 1) then
+ echo $cmd
+endif
+$cmd || exit(1)
+#
+if($QUIET == 0) then
+ echo === ...verify with hostname $COMMON_NAME when no DNS name present
+endif
+set cmd = "certcrl $STD_CRL_ARGS -h $COMMON_NAME"
+if($VERBOSE == 1) then
+ echo $cmd
+endif
+$cmd || exit(1)
+#
+if($QUIET == 0) then
+ echo === ...verify failure with host name $BAD_IP_ADDR
+endif
+set cmd = "certcrl $STD_CRL_ARGS -h $BAD_IP_ADDR -e=CSSMERR_TP_VERIFY_ACTION_FAILED"
+if($VERBOSE == 1) then
+ echo $cmd
+endif
+$cmd || exit(1)
+#
+######
+#
+set DNS_WC_NAME = "*.foo.bar"
+set DNS_GOOD_WC_NAME = bar.foo.bar
+set DNS_BAD_WC_NAME = foo.bar
+#
+if($QUIET == 0) then
+ echo === leaf cert with DNS name "$DNS_WC_NAME"
+endif
+set cmd = "signerAndSubjSsl d=*.foo.bar q"
+if($VERBOSE == 1) then
+ echo "$cmd"
+endif
+signerAndSubjSsl "d=*.foo.bar" q || exit(1)
+#
+if($QUIET == 0) then
+ echo === ...verify with hostname $DNS_GOOD_WC_NAME
+endif
+set cmd = "certcrl $STD_CRL_ARGS -h $DNS_GOOD_WC_NAME"
+if($VERBOSE == 1) then
+ echo $cmd
+endif
+$cmd || exit(1)
+#
+if($QUIET == 0) then
+ echo === ...verify failure with hostname $DNS_BAD_WC_NAME
+endif
+set cmd = "certcrl $STD_CRL_ARGS -h $DNS_BAD_WC_NAME -e=CSSMERR_TP_VERIFY_ACTION_FAILED"
+if($VERBOSE == 1) then
+ echo $cmd
+endif
+$cmd || exit(1)
+#
+######
+#
+set DNS_WC_NAME = "*foo.bar"
+set DNS_GOOD_WC_NAME = barfoo.bar
+set DNS_BAD_WC_NAME = bar.foo.bar
+#
+if($QUIET == 0) then
+ echo === leaf cert with DNS name "$DNS_WC_NAME"
+endif
+set cmd = "signerAndSubjSsl d=*foo.bar q"
+if($VERBOSE == 1) then
+ echo "$cmd"
+endif
+signerAndSubjSsl "d=*foo.bar" q || exit(1)
+#
+if($QUIET == 0) then
+ echo === ...verify with hostname $DNS_GOOD_WC_NAME
+endif
+set cmd = "certcrl $STD_CRL_ARGS -h $DNS_GOOD_WC_NAME"
+if($VERBOSE == 1) then
+ echo $cmd
+endif
+$cmd || exit(1)
+#
+if($QUIET == 0) then
+ echo === ...verify failure with hostname $DNS_BAD_WC_NAME
+endif
+set cmd = "certcrl $STD_CRL_ARGS -h $DNS_BAD_WC_NAME -e=CSSMERR_TP_VERIFY_ACTION_FAILED"
+if($VERBOSE == 1) then
+ echo $cmd
+endif
+$cmd || exit(1)
+#
+######
+#
+if($QUIET == 0) then
+ echo === leaf cert with no DNS name, verify with common name
+endif
+set cmd = "signerAndSubjSsl q"
+if($VERBOSE == 1) then
+ echo $cmd
+endif
+$cmd || exit(1)
+set cmd = "certcrl $STD_CRL_ARGS -h $COMMON_NAME"
+if($VERBOSE == 1) then
+ echo $cmd
+endif
+$cmd || exit(1)
+echo ...signerAndSubjSslTest complete
+