]> git.saurik.com Git - apple/security.git/blobdiff - SecurityTests/clxutils/importExport/importExportOpenssh
Security-57031.1.35.tar.gz
[apple/security.git] / SecurityTests / clxutils / importExport / importExportOpenssh
diff --git a/SecurityTests/clxutils/importExport/importExportOpenssh b/SecurityTests/clxutils/importExport/importExportOpenssh
new file mode 100755 (executable)
index 0000000..563da64
--- /dev/null
@@ -0,0 +1,219 @@
+#! /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