#!/bin/sh

echo ""
echo "These tests check whether encryption and decryption works in your system, they"
echo "do not check the algorithms' reliability."
echo ""

LD_LIBRARY_PATH=../libmcrypt/lib/.libs
export LD_LIBRARY_PATH


../src/mcrypt -q -k 1234567890 -a blowfish-448 <TEST | ../src/mcrypt -q -d -k 1234567890 >TEST.blowfish448
if (diff TEST TEST.blowfish448 >/dev/null 2>&1) then (echo "BLOWFISH-448 Ok.") else (echo "BLOWFISH-448 Failed.") fi

../src/mcrypt -q -k 1234567890 -a rc2-256 <TEST | ../src/mcrypt -q -d -k 1234567890 >TEST.rc2-256
if (diff TEST TEST.rc2-256 >/dev/null 2>&1) then (echo "RC2-256 Ok.") else (echo "RC2-256 Failed.") fi
../src/mcrypt -q -k 1234567890 -a rc2-128 <TEST | ../src/mcrypt -q -d -k 1234567890 >TEST.rc2-128
if (diff TEST TEST.rc2-128 >/dev/null 2>&1) then (echo "RC2-128 Ok.") else (echo "RC2-128 Failed.") fi
../src/mcrypt -q -k 1234567890 -a rc2-1024 <TEST | ../src/mcrypt -q -d -k 1234567890 >TEST.rc2-1024
if (diff TEST TEST.rc2-1024 >/dev/null 2>&1) then (echo "RC2-1024 Ok.") else (echo "RC2-1024 Failed.") fi

../src/mcrypt -q -k 1234567890 -a rijndael-256 <TEST | ../src/mcrypt -q -d -k 1234567890 >TEST.rijndael-256
if (diff TEST TEST.rijndael-256 >/dev/null 2>&1) then (echo "RIJNDAEL-256 Ok.") else (echo "RIJNDAEL-256 Failed.") fi
../src/mcrypt -q -k 1234567890 -a rijndael-192 <TEST | ../src/mcrypt -q -d -k 1234567890 >TEST.rijndael-192
if (diff TEST TEST.rijndael-192 >/dev/null 2>&1) then (echo "RIJNDAEL-192 Ok.") else (echo "RIJNDAEL-192 Failed.") fi
../src/mcrypt -q -k 1234567890 -a rijndael-128 <TEST | ../src/mcrypt -q -d -k 1234567890 >TEST.rijndael-128
if (diff TEST TEST.rijndael-128 >/dev/null 2>&1) then (echo "RIJNDAEL-128 Ok.") else (echo "RIJNDAEL-128 Failed.") fi

../src/mcrypt -q -k 1234567890 -a serpent-256 <TEST | ../src/mcrypt -q -d -k 1234567890 >TEST.serpent-256
if (diff TEST TEST.serpent-256 >/dev/null 2>&1) then (echo "SERPENT-256 Ok.") else (echo "SERPENT-256 Failed.") fi
../src/mcrypt -q -k 1234567890 -a serpent-192 <TEST | ../src/mcrypt -q -d -k 1234567890 >TEST.serpent-192
if (diff TEST TEST.serpent-192 >/dev/null 2>&1) then (echo "SERPENT-192 Ok.") else (echo "SERPENT-192 Failed.") fi
../src/mcrypt -q -k 1234567890 -a serpent-128 <TEST | ../src/mcrypt -q -d -k 1234567890 >TEST.serpent-128
if (diff TEST TEST.serpent-128 >/dev/null 2>&1) then (echo "SERPENT-128 Ok.") else (echo "SERPENT-128 Failed.") fi

../src/mcrypt -q -k 12345678 -a des <TEST | ../src/mcrypt -q -d -k 12345678 >TEST.des
if (diff TEST TEST.des >/dev/null 2>&1) then (echo "DES Ok.") else (echo "DES Failed.") fi

../src/mcrypt -q -k 1234567890 -a 3way <TEST | ../src/mcrypt -q -d -k 1234567890 >TEST.3way
if (diff TEST TEST.3way >/dev/null 2>&1) then (echo "3-WAY Ok.") else (echo "3-WAY Failed.") fi

../src/mcrypt -q -k 1234567890abcdef -a 3des <TEST | ../src/mcrypt -q -d -k 1234567890abcdef >TEST.3des
if (diff TEST TEST.3des >/dev/null 2>&1) then (echo "3DES Ok.") else (echo "3DES Failed.")  fi

../src/mcrypt -q -k 1234567890 -a gost <TEST | ../src/mcrypt -q -d -k 1234567890 >TEST.gost
if (diff TEST TEST.gost >/dev/null 2>&1) then (echo "GOST Ok.") else (echo "GOST Failed.") fi

../src/mcrypt -q -k 12345678 -a safer-64 <TEST | ../src/mcrypt -q -d -k 12345678 >TEST.safer64
if (diff TEST TEST.safer64 >/dev/null 2>&1) then (echo "SAFER-SK64 Ok.") else (echo "SAFER-SK64 Failed.") fi

../src/mcrypt -q -k 1234567812345678 -a safer-128 <TEST | ../src/mcrypt -q -d -k 1234567812345678 >TEST.safer128
if (diff TEST TEST.safer128 >/dev/null 2>&1) then (echo "SAFER-SK128 Ok.") else (echo "SAFER-SK128 Failed.") fi

../src/mcrypt -q -k 1234567812345678 -a cast-128 <TEST | ../src/mcrypt -q -d -k 1234567812345678 >TEST.cast128
if (diff TEST TEST.cast128 >/dev/null 2>&1) then (echo "CAST-128 Ok.") else (echo "CAST-128 Failed.") fi

../src/mcrypt -q -k 1234567812345678 -a cast-256 <TEST | ../src/mcrypt -q -d -k 1234567812345678 >TEST.cast256
if (diff TEST TEST.cast256 >/dev/null 2>&1) then (echo "CAST-256 Ok.") else (echo "CAST-256 Failed.") fi

../src/mcrypt -q -k 1234567812345678 -a xtea <TEST | ../src/mcrypt -q -d -k 1234567812345678 >TEST.tea
if (diff TEST TEST.tea >/dev/null 2>&1) then (echo "xTEA Ok.") else (echo "xTEA Failed.") fi

../src/mcrypt -q -k 1234567812345678 -a twofish-128 <TEST | ../src/mcrypt -q -d -k 1234567812345678 >TEST.twofish
if (diff TEST TEST.twofish >/dev/null 2>&1) then (echo "TWOFISH-128 Ok.") else (echo "TWOFISH-128 Failed.") fi

../src/mcrypt -q -k 1234567812345678 -a twofish-192 <TEST | ../src/mcrypt -q -d -k 1234567812345678 >TEST.twofish192
if (diff TEST TEST.twofish192 >/dev/null 2>&1) then (echo "TWOFISH-192 Ok.") else (echo "TWOFISH-192 Failed.") fi

../src/mcrypt -q -k 1234567812345678 -a twofish-256 <TEST | ../src/mcrypt -q -d -k 1234567812345678 >TEST.twofish256
if (diff TEST TEST.twofish256 >/dev/null 2>&1) then (echo "TWOFISH-256 Ok.") else (echo "TWOFISH-256 Failed.") fi

../src/mcrypt -q -k 1234567812345678 -a saferplus <TEST | ../src/mcrypt -q -d -k 1234567812345678 >TEST.saferplus
if (diff TEST TEST.saferplus >/dev/null 2>&1) then (echo "SAFER+ Ok.") else (echo "SAFER+ Failed.") fi

../src/mcrypt -q -k 1234567812345678 -a loki97 <TEST | ../src/mcrypt -q -d -k 1234567812345678 >TEST.loki97
if (diff TEST TEST.loki97 >/dev/null 2>&1) then (echo "LOKI97 Ok.") else (echo "LOKI97 Failed.") fi

../src/mcrypt -q -k 12345678 -a crypt <TEST | ../src/mcrypt -q -b -d -k 12345678 -a crypt >TEST.crypt
if (diff TEST TEST.crypt >/dev/null 2>&1) then (echo "UNIX crypt Ok.") else (echo "UNIX crypt Failed.") fi


echo ""
echo "These tests check the algorithms' (ciphertext) compatibility with other"
echo "systems (actually with a little-endian 32bit system)"
echo ""

../src/mcrypt -dq -k 1234567890 -m ecb -a blowfish-448 <test.blowfish448 >test.blowfish448.local
if (diff TEST test.blowfish448.local >/dev/null 2>&1) then (echo "BLOWFISH-448 Ok.") else (echo "BLOWFISH-448 Failed.") fi

../src/mcrypt -dq -k 1234567890 -m ecb -a rc2-128 <test.rc2-128 >test.rc2-128.local
if (diff TEST test.rc2-128.local >/dev/null 2>&1) then (echo "RC2-128 Ok.") else (echo "RC2-128 Failed.") fi
../src/mcrypt -dq -k 1234567890 -m ecb -a rc2-256 <test.rc2-256 >test.rc2-256.local
if (diff TEST test.rc2-256.local >/dev/null 2>&1) then (echo "RC2-256 Ok.") else (echo "RC2-256 Failed.") fi
../src/mcrypt -dq -k 1234567890 -m ecb -a rc2-1024 <test.rc2-1024 >test.rc2-1024.local
if (diff TEST test.rc2-1024.local >/dev/null 2>&1) then (echo "RC2-1024 Ok.") else (echo "RC2-1024 Failed.") fi


../src/mcrypt -dq -k 1234567890 -m ecb -a rijndael-256 <test.rijndael-256 >test.rijndael-256.local
if (diff TEST test.rijndael-256.local >/dev/null 2>&1) then (echo "RIJNDAEL-256 Ok.") else (echo "RIJNDAEL-256 Failed.") fi
../src/mcrypt -dq -k 1234567890 -m ecb -a rijndael-192 <test.rijndael-192 >test.rijndael-192.local
if (diff TEST test.rijndael-192.local >/dev/null 2>&1) then (echo "RIJNDAEL-192 Ok.") else (echo "RIJNDAEL-192 Failed.") fi
../src/mcrypt -dq -k 1234567890 -m ecb -a rijndael-128 <test.rijndael-128 >test.rijndael-128.local
if (diff TEST test.rijndael-128.local >/dev/null 2>&1) then (echo "RIJNDAEL-128 Ok.") else (echo "RIJNDAEL-128 Failed.") fi

../src/mcrypt -dq -k 1234567890 -m ecb -a serpent-256 <test.serpent-256 >test.serpent-256.local
if (diff TEST test.serpent-256.local >/dev/null 2>&1) then (echo "SERPENT-256 Ok.") else (echo "SERPENT-256 Failed.") fi
../src/mcrypt -dq -k 1234567890 -m ecb -a serpent-192 <test.serpent-192 >test.serpent-192.local
if (diff TEST test.serpent-192.local >/dev/null 2>&1) then (echo "SERPENT-192 Ok.") else (echo "SERPENT-192 Failed.") fi
../src/mcrypt -dq -k 1234567890 -m ecb -a serpent-128 <test.serpent-128 >test.serpent-128.local
if (diff TEST test.serpent-128.local >/dev/null 2>&1) then (echo "SERPENT-128 Ok.") else (echo "SERPENT-128 Failed.") fi


../src/mcrypt -dq -k 12345678 -m ecb -a des <test.des >test.des.local
if (diff TEST test.des.local >/dev/null 2>&1) then (echo "DES Ok.") else (echo "DES Failed.") fi

../src/mcrypt -dq -k 1234567890 -m ecb -a 3way <test.3way >test.3way.local
if (diff TEST test.3way.local >/dev/null 2>&1) then (echo "3-WAY Ok.") else (echo "3-WAY Failed.") fi

../src/mcrypt -dq -k 1234567890abcdef -m ecb -a 3des <test.3des >test.3des.local
if (diff TEST test.3des.local >/dev/null 2>&1) then (echo "3DES Ok.") else (echo "3DES Failed.") fi

../src/mcrypt -dq -k 1234567890 -m ecb -a gost <test.gost >test.gost.local
if (diff TEST test.gost.local >/dev/null 2>&1) then (echo "GOST Ok.") else (echo "GOST Failed.") fi

../src/mcrypt -dq -k 12345678 -m ecb -a safer-64 <test.safer64 >test.safer64.local
if (diff TEST test.safer64.local >/dev/null 2>&1) then (echo "SAFER-SK64 Ok.") else (echo "SAFER-SK64 Failed.") fi

../src/mcrypt -dq -k 1234567812345678 -m ecb -a safer-128 <test.safer128 >test.safer128.local
if (diff TEST test.safer128.local >/dev/null 2>&1) then (echo "SAFER-SK128 Ok.") else (echo "SAFER-SK128 Failed.") fi

../src/mcrypt -dq -k 1234567812345678 -m ecb -a cast-128 <test.cast128 >test.cast128.local
if (diff TEST test.cast128.local >/dev/null 2>&1) then (echo "CAST-128 Ok.") else (echo "CAST-128 Failed.") fi

../src/mcrypt -dq -k 1234567812345678 -m ecb -a cast-256 <test.cast256 >test.cast256.local
if (diff TEST test.cast256.local >/dev/null 2>&1) then (echo "CAST-256 Ok.") else (echo "CAST-256 Failed.") fi

../src/mcrypt -dq -k 1234567812345678 -m ecb -a xtea <test.tea >test.tea.local
if (diff TEST test.tea.local >/dev/null 2>&1) then (echo "xTEA Ok.") else (echo "xTEA Failed.") fi

../src/mcrypt -dq -k 1234567812345678 -m ecb -a twofish-128 <test.twofish128 >test.twofish128.local
if (diff TEST test.twofish128.local >/dev/null 2>&1) then (echo "TWOFISH-128 Ok.") else (echo "TWOFISH-128 Failed.") fi

../src/mcrypt -dq -k 1234567812345678 -m ecb -a twofish-192 <test.twofish192 >test.twofish192.local
if (diff TEST test.twofish192.local >/dev/null 2>&1) then (echo "TWOFISH-192 Ok.") else (echo "TWOFISH-192 Failed.") fi

../src/mcrypt -dq -k 1234567812345678 -m ecb -a twofish-256 <test.twofish256 >test.twofish256.local
if (diff TEST test.twofish256.local >/dev/null 2>&1) then (echo "TWOFISH-256 Ok.") else (echo "TWOFISH-256 Failed.") fi

../src/mcrypt -dq -k 1234567812345678 -m ecb -a saferplus <test.saferplus >test.saferplus.local
if (diff TEST test.saferplus.local >/dev/null 2>&1) then (echo "SAFER+ Ok.") else (echo "SAFER+ Failed.") fi

../src/mcrypt -dq -k 1234567812345678 -m ecb -a loki97 <test.loki97 >test.loki97.local
if (diff TEST test.loki97.local >/dev/null 2>&1) then (echo "LOKI97 Ok.") else (echo "LOKI97 Failed.") fi

../src/mcrypt -qd -b -k 12345678 -a crypt <test.crypt >test.crypt.local
if (diff TEST test.crypt.local >/dev/null 2>&1) then (echo "UNIX crypt Ok.") else (echo "UNIX crypt Failed.") fi

echo ""

rm -f TEST.*
rm -f test*.local
