xref: /freebsd/tests/sys/geom/class/eli/conf.sh (revision f397a004deeae195f8efdb4dc22a62204aa2c10d)
109d98641SEnji Cooper#!/bin/sh
209d98641SEnji Cooper# $FreeBSD$
309d98641SEnji Cooper
409d98641SEnji Cooperclass="eli"
5*f397a004SAlan Somersbase=$(atf_get ident)
6*f397a004SAlan Somers[ -z "$base" ] && base=`basename $0` # for TAP compatibility
7*f397a004SAlan SomersTEST_MDS_FILE=md.devs
8*f397a004SAlan Somers
9*f397a004SAlan Somersattach_md()
10*f397a004SAlan Somers{
11*f397a004SAlan Somers	local test_md
12*f397a004SAlan Somers
13*f397a004SAlan Somers	test_md=$(mdconfig -a "$@") || atf_fail "failed to allocate md(4)"
14*f397a004SAlan Somers	echo $test_md >> $TEST_MDS_FILE || exit
15*f397a004SAlan Somers	echo $test_md
16*f397a004SAlan Somers}
1709d98641SEnji Cooper
18f92ce022SAlan Somers# Execute `func` for each combination of cipher, sectorsize, and hmac algo
19f92ce022SAlan Somers# `func` usage should be:
20f92ce022SAlan Somers# func <cipher> <aalgo> <secsize>
21f92ce022SAlan Somersfor_each_geli_config() {
22f92ce022SAlan Somers	func=$1
23f92ce022SAlan Somers
24f92ce022SAlan Somers	for cipher in aes-xts:128 aes-xts:256 \
25f92ce022SAlan Somers	    aes-cbc:128 aes-cbc:192 aes-cbc:256 \
26f92ce022SAlan Somers	    3des-cbc:192 \
27f92ce022SAlan Somers	    blowfish-cbc:128 blowfish-cbc:160 blowfish-cbc:192 \
28f92ce022SAlan Somers	    blowfish-cbc:224 blowfish-cbc:256 blowfish-cbc:288 \
29f92ce022SAlan Somers	    blowfish-cbc:320 blowfish-cbc:352 blowfish-cbc:384 \
30f92ce022SAlan Somers	    blowfish-cbc:416 blowfish-cbc:448 \
31f92ce022SAlan Somers	    camellia-cbc:128 camellia-cbc:192 camellia-cbc:256; do
32f92ce022SAlan Somers		ealgo=${cipher%%:*}
33f92ce022SAlan Somers		keylen=${cipher##*:}
34f92ce022SAlan Somers		for aalgo in hmac/md5 hmac/sha1 hmac/ripemd160 hmac/sha256 \
35f92ce022SAlan Somers		    hmac/sha384 hmac/sha512; do
36f92ce022SAlan Somers			for secsize in 512 1024 2048 4096 8192; do
37*f397a004SAlan Somers				# Double the requested sector size to allow
38*f397a004SAlan Somers				# for the HMACs' storage space.
39*f397a004SAlan Somers				osecsize=$(( $secsize * 2 ))
40*f397a004SAlan Somers				# geli needs 512B for the label.
41*f397a004SAlan Somers				bytes=`expr $osecsize \* $sectors + 512`b
422e23c411SAlan Somers				md=$(attach_md -t malloc -s $bytes)
43f92ce022SAlan Somers				${func} $cipher $aalgo $secsize
442e23c411SAlan Somers				geli detach ${md} 2>/dev/null
452e23c411SAlan Somers				mdconfig -d -u ${md} 2>/dev/null
46f92ce022SAlan Somers			done
47f92ce022SAlan Somers		done
48f92ce022SAlan Somers	done
49f92ce022SAlan Somers}
50f92ce022SAlan Somers
51f92ce022SAlan Somers# Execute `func` for each combination of cipher, and sectorsize, with no hmac
52f92ce022SAlan Somers# `func` usage should be:
53f92ce022SAlan Somers# func <cipher> <secsize>
54f92ce022SAlan Somersfor_each_geli_config_nointegrity() {
55f92ce022SAlan Somers	func=$1
56f92ce022SAlan Somers
57f92ce022SAlan Somers	for cipher in aes-xts:128 aes-xts:256 \
58f92ce022SAlan Somers	    aes-cbc:128 aes-cbc:192 aes-cbc:256 \
59f92ce022SAlan Somers	    3des-cbc:192 \
60f92ce022SAlan Somers	    blowfish-cbc:128 blowfish-cbc:160 blowfish-cbc:192 \
61f92ce022SAlan Somers	    blowfish-cbc:224 blowfish-cbc:256 blowfish-cbc:288 \
62f92ce022SAlan Somers	    blowfish-cbc:320 blowfish-cbc:352 blowfish-cbc:384 \
63f92ce022SAlan Somers	    blowfish-cbc:416 blowfish-cbc:448 \
64f92ce022SAlan Somers	    camellia-cbc:128 camellia-cbc:192 camellia-cbc:256; do
65f92ce022SAlan Somers		ealgo=${cipher%%:*}
66f92ce022SAlan Somers		keylen=${cipher##*:}
67f92ce022SAlan Somers		for secsize in 512 1024 2048 4096 8192; do
68*f397a004SAlan Somers			# geli needs 512B for the label.
692e23c411SAlan Somers			bytes=`expr $secsize \* $sectors + 512`b
702e23c411SAlan Somers			md=$(attach_md -t malloc -s $bytes)
71610b95a1SAlan Somers			${func} $cipher $secsize
722e23c411SAlan Somers			geli detach ${md} 2>/dev/null
732e23c411SAlan Somers			mdconfig -d -u ${md} 2>/dev/null
74f92ce022SAlan Somers		done
75f92ce022SAlan Somers	done
76f92ce022SAlan Somers}
77f92ce022SAlan Somers
78f92ce022SAlan Somers
7909d98641SEnji Coopergeli_test_cleanup()
8009d98641SEnji Cooper{
81041999e3SAlan Somers	if [ -f "$TEST_MDS_FILE" ]; then
82041999e3SAlan Somers		while read md; do
83041999e3SAlan Somers			[ -c /dev/${md}.eli ] && \
84041999e3SAlan Somers				geli detach $md.eli 2>/dev/null
85041999e3SAlan Somers			mdconfig -d -u $md 2>/dev/null
86041999e3SAlan Somers		done < $TEST_MDS_FILE
87041999e3SAlan Somers	fi
88*f397a004SAlan Somers	true
8909d98641SEnji Cooper}
90*f397a004SAlan Somers# TODO: remove the trap statement once all TAP tests are converted
9109d98641SEnji Coopertrap geli_test_cleanup ABRT EXIT INT TERM
9209d98641SEnji Cooper
9309d98641SEnji Cooper. `dirname $0`/../geom_subr.sh
94