integrity-hmac.t revision 159328
1169942Sobrien#!/bin/sh
2169942Sobrien# $FreeBSD: head/tools/regression/geom_eli/integrity-hmac.t 159328 2006-06-06 06:46:51Z pjd $
3169942Sobrien
4169942Sobrienbase=`basename $0`
5169942Sobrienno=45
6169942Sobriensectors=100
7169942Sobrienkeyfile=`mktemp /tmp/$base.XXXXXX` || exit 1
8169942Sobriensector=`mktemp /tmp/$base.XXXXXX` || exit 1
9169942Sobrien
10169942Sobrienecho "1..1080"
11169942Sobrien
12169942Sobrieni=1
13169942Sobrienfor cipher in aes:0 aes:128 aes:192 aes:256 \
14169942Sobrien    3des:0 3des:192 \
15169942Sobrien    blowfish:0 blowfish:128 blowfish:160 blowfish:192 blowfish:224 \
16169942Sobrien    blowfish:256 blowfish:288 blowfish:320 blowfish:352 blowfish:384 \
17169942Sobrien    blowfish:416 blowfish:448; do
18169942Sobrien	ealgo=${cipher%%:*}
19169942Sobrien	keylen=${cipher##*:}
20169942Sobrien	for aalgo in hmac/md5 hmac/sha1 hmac/ripemd160 hmac/sha256 hmac/sha384 hmac/sha512; do
21169942Sobrien		for secsize in 512 1024 2048 4096 8192; do
22169942Sobrien			mdconfig -a -t malloc -s `expr $secsize \* 2 + 512`b -u $no || exit 1
23169942Sobrien
24169942Sobrien			dd if=/dev/random of=${keyfile} bs=512 count=16 >/dev/null 2>&1
25169942Sobrien
26169942Sobrien			geli init -a $aalgo -e $ealgo -l $keylen -P -K $keyfile -s $secsize md${no}
27169942Sobrien			geli attach -p -k $keyfile md${no}
28169942Sobrien
29169942Sobrien			dd if=/dev/random of=/dev/md${no}.eli bs=${secsize} count=1 >/dev/null 2>&1
30169942Sobrien
31169942Sobrien			dd if=/dev/md${no}.eli bs=${secsize} count=1 >/dev/null 2>&1
32169942Sobrien			if [ $? -eq 0 ]; then
33				echo "ok $i - aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
34			else
35				echo "not ok $i - aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
36			fi
37			i=$((i+1))
38
39			geli detach md${no}
40			# Corrupt 8 bytes of HMAC.
41			dd if=/dev/md${no} of=${sector} bs=512 count=1 >/dev/null 2>&1
42			dd if=/dev/random of=${sector} bs=1 count=16 conv=notrunc >/dev/null 2>&1
43			dd if=${sector} of=/dev/md${no} bs=512 count=1 >/dev/null 2>&1
44			geli attach -p -k $keyfile md${no}
45
46			dd if=/dev/md${no}.eli bs=${secsize} count=1 >/dev/null 2>&1
47			if [ $? -ne 0 ]; then
48				echo "ok $i - aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
49			else
50				echo "not ok $i - aalgo=${aalgo} ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
51			fi
52			i=$((i+1))
53
54			geli detach md${no}
55			mdconfig -d -u $no
56		done
57	done
58done
59
60rm -f $keyfile $sector
61