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