xref: /freebsd/tests/sys/geom/class/eli/onetime_test.sh (revision d8a0fe102c0cfdfcd5b818f850eff09d8536c9bc)
1#!/bin/sh
2# $FreeBSD$
3
4. $(dirname $0)/conf.sh
5
6base=`basename $0`
7sectors=100
8
9echo "1..200"
10
11do_test() {
12	cipher=$1
13	secsize=$2
14	ealgo=${cipher%%:*}
15	keylen=${cipher##*:}
16
17	rnd=`mktemp $base.XXXXXX` || exit 1
18
19	geli onetime -e $ealgo -l $keylen -s $secsize ${md} 2>/dev/null
20
21	secs=`diskinfo /dev/${md}.eli | awk '{print $4}'`
22
23	dd if=/dev/random of=${rnd} bs=${secsize} count=${secs} >/dev/null 2>&1
24	dd if=${rnd} of=/dev/${md}.eli bs=${secsize} count=${secs} 2>/dev/null
25
26	md_rnd=`dd if=${rnd} bs=${secsize} count=${secs} 2>/dev/null | md5`
27	md_ddev=`dd if=/dev/${md}.eli bs=${secsize} count=${secs} 2>/dev/null | md5`
28	md_edev=`dd if=/dev/${md} bs=${secsize} count=${secs} 2>/dev/null | md5`
29
30	if [ ${md_rnd} = ${md_ddev} ]; then
31		echo "ok $i - ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
32	else
33		echo "not ok $i - ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
34	fi
35	i=$((i+1))
36	if [ ${md_rnd} != ${md_edev} ]; then
37		echo "ok $i - ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
38	else
39		echo "not ok $i - ealgo=${ealgo} keylen=${keylen} sec=${secsize}"
40	fi
41	i=$((i+1))
42
43	rm -f $rnd
44}
45
46i=1
47for_each_geli_config_nointegrity do_test
48