#!/bin/bash set -e if [[ $# != 1 ]]; then echo "$0 " exit 1 fi function die() { echo "FAIL: $1" exit 1 } PROG=$1 if [[ ! -r $PROG ]]; then die "$PROG is not readable" fi # Test shift offset for key in a b c d e f g h i j k l m n o p q r s t u v w x y z; do expected=$(echo $key) output=$(echo a | perl $PROG $key) [[ "$expected" == "$output" ]] || die "key=$key" done for key in A B C D E F G H I J K L M N O P Q R S T U V W X Y Z; do expected=$(echo "A") output=$(echo $key | perl $PROG $key) [[ "$expected" == "$output" ]] || die "key=$key" done # Test multi character key expected=$(echo hogeHOGE) output=$(echo aaaaAAAA | perl $PROG hoge) [[ "$expected" == "$output" ]] || die "key=hoge" expected=$(echo AAAAaaaa) output=$(echo HOGEhoge | perl $PROG HOGE) [[ "$expected" == "$output" ]] || die "key=HOGE" # Verify that lack of valid characters in key means no-op expected=$(echo pass_through) output=$(echo pass_through | perl $PROG 0) [[ "$expected" == "$output" ]] || die "key=0" # Test encrypt/decrypt pair for input in "a" "aaAA" "abyz" "1234" "ZYxW" "aaa bb//cccc" \ $(perl -e 'for($i=0;$i<1024;$i++){print rand;}'); do expected=$(echo $input) output=$(echo $input | perl $PROG a) [[ "$expected" == "$output" ]] || die "input=$input, key=a" output=$(echo $input | perl $PROG n | perl $PROG N) [[ "$expected" == "$output" ]] || die "input=$input, keys=[n, N]" output=$(echo $input | perl $PROG N | perl $PROG N) [[ "$expected" == "$output" ]] || die "input=$input, keys=[N, N]" output=$(echo $input | perl $PROG n | perl $PROG Nn) [[ "$expected" == "$output" ]] || die "input=$input, keys=[n, Nn]" output=$(echo $input | perl $PROG N | perl $PROG n) [[ "$expected" == "$output" ]] || die "input=$input, keys=[N, n]" output=$(echo $input | perl $PROG key | perl $PROG KEY) [[ "$expected" == "$output" ]] || die "input=$input, keys=[key, KEY]" output=$(echo $input | perl $PROG "Ke y" | perl $PROG "k EY") [[ "$expected" == "$output" ]] || die "input=$input, keys=[Ke y, k EY]" done # Test binary input for input in $(seq 0 255); do expected=$(perl -e "print chr($input);") output=$(perl -e "print chr($input);" | perl $PROG "a") [[ "$expected" == "$output" ]] || die "input=chr($input)" done # All good echo "$0: OK"