--- /dev/null
+#! /bin/csh -f
+#
+# Run OpenSSH import/export tests.
+#
+# Run this from SecurityTests/clxutils/importExport. This
+# uses the importExportOpensshTool subtool to do most of its work.
+#
+
+echo === Begin OpenSSH test ===
+
+source setupCommon
+
+set SSHSUBTOOL=./importExportOpensshTool
+
+#
+# this is the wrap/unwrap password; it has to match the password in
+# the importExportOpensshTool tool
+#
+set PASSWORD=password
+
+# file names generated by ssh-keygen
+set SSH_KEY_NAME=sshkeygenKey
+set PRIV_KEY=${LOCAL_BUILD_DIR}/$SSH_KEY_NAME
+set PUB_KEY=${LOCAL_BUILD_DIR}/${SSH_KEY_NAME}.pub
+
+set SSH_KEYGEN=/usr/bin/ssh-keygen
+
+# determine whether to attempt ssh1 key generation and import
+# %%%FIXME this is currently disabled since OpenSSH 5.4 does not support it by default
+set TESTSSH1=NO
+
+# determine whether to attempt ssh2 key generation and import
+# %%%FIXME this is currently disabled due to <rdar://problem/8063663>
+set TESTSSH2=NO
+
+# user specified variables
+set QUIET=NO
+set KEYSIZE=1024
+set NOACL=NO
+set SECURE_PHRASE=NO
+set NOCLEAN=NO
+
+while ( $#argv > 0 )
+ switch ( "$argv[1]" )
+ case q:
+ set QUIET=YES
+ shift
+ breaksw
+ case n:
+ set NOACL=YES
+ shift
+ breaksw
+ case s:
+ set SECURE_PHRASE=YES
+ shift
+ breaksw
+ case N:
+ set NOCLEAN=YES
+ shift
+ breaksw
+ default:
+ echo Usage: importExportOpenssh \[q\(uiet\)\] \[n\(oACL\)\] \[s\(ecurePassphrase\)\] \[N\(oClean\)\]
+ exit(1)
+ endsw
+end
+
+# delete existing keys - ssh-keygen is cautious about overwriting
+set cmd="rm -f $PRIV_KEY $PUB_KEY"
+if ($QUIET == NO) then
+ echo $cmd
+endif
+$cmd || exit(1)
+
+if ($TESTSSH1 != NO) then
+ #
+ # RSA, SSH1, wrapped private key
+ #
+ set cmd="$SSH_KEYGEN -b $KEYSIZE -C someOldComment -N $PASSWORD -f $PRIV_KEY -t rsa1 -q"
+ if ($QUIET == NO) then
+ echo $cmd
+ endif
+ $cmd || exit(1)
+ set cmd="$SSHSUBTOOL $PRIV_KEY ssh1Wrap $PUB_KEY ssh1 rsa $QUIET $NOACL $SECURE_PHRASE $NOCLEAN"
+ if ($QUIET == NO) then
+ echo $cmd
+ endif
+ $cmd || exit(1)
+
+ # delete existing keys
+ set cmd="rm -f $PRIV_KEY $PUB_KEY"
+ if ($QUIET == NO) then
+ echo $cmd
+ endif
+ $cmd || exit(1)
+
+ #
+ # RSA, SSH1, cleartext private key
+ #
+ set cmd="$SSH_KEYGEN -b $KEYSIZE -C someOldComment -f $PRIV_KEY -t rsa1 -q -N"
+ if ($QUIET == NO) then
+ echo $cmd
+ endif
+ # note the shell hack we're using to insert an empty argument for the null password
+ $cmd "" || exit(1)
+ set cmd="$SSHSUBTOOL $PRIV_KEY ssh1 $PUB_KEY ssh1 rsa $QUIET $NOACL $SECURE_PHRASE $NOCLEAN"
+ if ($QUIET == NO) then
+ echo $cmd
+ endif
+ $cmd || exit(1)
+
+ # delete existing keys
+ set cmd="rm -f $PRIV_KEY $PUB_KEY"
+ if ($QUIET == NO) then
+ echo $cmd
+ endif
+ $cmd || exit(1)
+
+else
+ echo "WARNING: OpenSSH ssh1 key import tests are DISABLED (<rdar://8063663>)"
+endif
+
+if ($TESTSSH2 != NO) then
+ #
+ # RSA, SSH2, wrapped private key
+ #
+ set cmd="$SSH_KEYGEN -b $KEYSIZE -C someOldComment -N $PASSWORD -f $PRIV_KEY -t rsa -q"
+ if ($QUIET == NO) then
+ echo $cmd
+ endif
+ $cmd || exit(1)
+ set cmd="$SSHSUBTOOL $PRIV_KEY ssh2Wrap $PUB_KEY ssh2 rsa $QUIET $NOACL $SECURE_PHRASE $NOCLEAN"
+ if ($QUIET == NO) then
+ echo $cmd
+ endif
+ $cmd || exit(1)
+
+ # delete existing keys
+ set cmd="rm -f $PRIV_KEY $PUB_KEY"
+ if ($QUIET == NO) then
+ echo $cmd
+ endif
+ $cmd || exit(1)
+
+ #
+ # RSA, SSH2, cleartext private key
+ #
+ set cmd="$SSH_KEYGEN -b $KEYSIZE -C someOldComment -f $PRIV_KEY -t rsa -q -N"
+ if ($QUIET == NO) then
+ echo $cmd
+ endif
+ # note the shell hack we're using to insert an empty argument for the null password
+ $cmd "" || exit(1)
+ set cmd="$SSHSUBTOOL $PRIV_KEY ssh2 $PUB_KEY ssh2 rsa $QUIET $NOACL $SECURE_PHRASE $NOCLEAN"
+ if ($QUIET == NO) then
+ echo $cmd
+ endif
+ $cmd || exit(1)
+
+ # delete existing keys
+ set cmd="rm -f $PRIV_KEY $PUB_KEY"
+ if ($QUIET == NO) then
+ echo $cmd
+ endif
+ $cmd || exit(1)
+
+ #
+ # DSA, SSH2, wrapped private key
+ #
+ set cmd="$SSH_KEYGEN -b $KEYSIZE -C someOldComment -N $PASSWORD -f $PRIV_KEY -t dsa -q"
+ if ($QUIET == NO) then
+ echo $cmd
+ endif
+ $cmd || exit(1)
+ set cmd="$SSHSUBTOOL $PRIV_KEY ssh2Wrap $PUB_KEY ssh2 dsa $QUIET $NOACL $SECURE_PHRASE $NOCLEAN"
+ if ($QUIET == NO) then
+ echo $cmd
+ endif
+ $cmd || exit(1)
+
+ # delete existing keys
+ set cmd="rm -f $PRIV_KEY $PUB_KEY"
+ if ($QUIET == NO) then
+ echo $cmd
+ endif
+ $cmd || exit(1)
+
+ #
+ # DSA, SSH2, cleartext private key
+ #
+ set cmd="$SSH_KEYGEN -b $KEYSIZE -C someOldComment -f $PRIV_KEY -t dsa -q -N"
+ if ($QUIET == NO) then
+ echo $cmd
+ endif
+ # note the shell hack we're using to insert an empty argument for the null password
+ $cmd "" || exit(1)
+ set cmd="$SSHSUBTOOL $PRIV_KEY ssh2 $PUB_KEY ssh2 dsa $QUIET $NOACL $SECURE_PHRASE $NOCLEAN"
+ if ($QUIET == NO) then
+ echo $cmd
+ endif
+ $cmd || exit(1)
+
+else
+ echo "WARNING: OpenSSH ssh2 key import tests are DISABLED (<rdar://8063663>)"
+endif
+
+#
+# cleanup
+#
+if($NOCLEAN == NO) then
+ set cmd="rm -f $PRIV_KEY $PUB_KEY"
+ if ($QUIET == NO) then
+ echo $cmd
+ endif
+ $cmd || exit(1)
+endif
+
+if ($QUIET == NO) then
+ echo === OpenSSH test complete ===
+endif