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