| #!/bin/sh | |
| PROG=$1 | |
| if [ -x $PROG ]; then | |
| if expr "x`$PROG version`" : "xOpenSSL" > /dev/null; then | |
| : | |
| else | |
| echo "$PROG is not OpenSSL executable" | |
| exit 1 | |
| fi | |
| else | |
| echo "$PROG is not executable" | |
| exit 1; | |
| fi | |
| if $PROG engine aesni | grep -v no-aesni; then | |
| HASH=`cat $PROG | $PROG dgst -hex` | |
| AES_ALGS=" aes-128-ctr aes-128-ecb aes-128-cbc aes-128-cfb aes-128-ofb \ | |
| aes-192-ctr aes-192-ecb aes-192-cbc aes-192-cfb aes-192-ofb \ | |
| aes-256-ctr aes-256-ecb aes-256-cbc aes-256-cfb aes-256-ofb" | |
| BUFSIZE="16 32 48 64 80 96 128 144 999" | |
| nerr=0 | |
| for alg in $AES_ALGS; do | |
| echo $alg | |
| for bufsize in $BUFSIZE; do | |
| TEST=`( cat $PROG | \ | |
| $PROG enc -e -k "$HASH" -$alg -bufsize $bufsize -engine aesni | \ | |
| $PROG enc -d -k "$HASH" -$alg | \ | |
| $PROG dgst -hex ) 2>/dev/null` | |
| if [ "$TEST" != "$HASH" ]; then | |
| echo "-$alg/$bufsize encrypt test failed" | |
| nerr=`expr $nerr + 1` | |
| fi | |
| done | |
| for bufsize in $BUFSIZE; do | |
| TEST=`( cat $PROG | \ | |
| $PROG enc -e -k "$HASH" -$alg | \ | |
| $PROG enc -d -k "$HASH" -$alg -bufsize $bufsize -engine aesni | \ | |
| $PROG dgst -hex ) 2>/dev/null` | |
| if [ "$TEST" != "$HASH" ]; then | |
| echo "-$alg/$bufsize decrypt test failed" | |
| nerr=`expr $nerr + 1` | |
| fi | |
| done | |
| TEST=`( cat $PROG | \ | |
| $PROG enc -e -k "$HASH" -$alg -engine aesni | \ | |
| $PROG enc -d -k "$HASH" -$alg -engine aesni | \ | |
| $PROG dgst -hex ) 2>/dev/null` | |
| if [ "$TEST" != "$HASH" ]; then | |
| echo "-$alg en/decrypt test failed" | |
| nerr=`expr $nerr + 1` | |
| fi | |
| done | |
| if [ $nerr -gt 0 ]; then | |
| echo "AESNI engine test failed." | |
| exit 1; | |
| fi | |
| else | |
| echo "AESNI engine is not available" | |
| fi | |
| exit 0 |