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