109d98641SEnji Cooper#!/bin/sh 209d98641SEnji Cooper# $FreeBSD$ 309d98641SEnji Cooper 409d98641SEnji Cooperclass="eli" 5f397a004SAlan Somersbase=$(atf_get ident) 65dce212dSAlan SomersMAX_SECSIZE=8192 7f397a004SAlan SomersTEST_MDS_FILE=md.devs 8f397a004SAlan Somers 9f397a004SAlan Somersattach_md() 10f397a004SAlan Somers{ 11f397a004SAlan Somers local test_md 12f397a004SAlan Somers 13f397a004SAlan Somers test_md=$(mdconfig -a "$@") || atf_fail "failed to allocate md(4)" 14f397a004SAlan Somers echo $test_md >> $TEST_MDS_FILE || exit 15f397a004SAlan Somers echo $test_md 16f397a004SAlan 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 23*1d23aa6eSAlan Somers backing_filename=$2 24f92ce022SAlan Somers 255dce212dSAlan Somers # Double the sector size to allow for the HMACs' storage space. 265dce212dSAlan Somers osecsize=$(( $MAX_SECSIZE * 2 )) 275dce212dSAlan Somers # geli needs 512B for the label. 285dce212dSAlan Somers bytes=`expr $osecsize \* $sectors + 512`b 29*1d23aa6eSAlan Somers 30*1d23aa6eSAlan Somers if [ -n "$backing_filename" ]; then 31*1d23aa6eSAlan Somers # Use a file-backed md(4) device, so we can deliberatly corrupt 32*1d23aa6eSAlan Somers # it without detaching the geli device first. 33*1d23aa6eSAlan Somers truncate -s $bytes backing_file 34*1d23aa6eSAlan Somers md=$(attach_md -t vnode -f backing_file) 35*1d23aa6eSAlan Somers else 365dce212dSAlan Somers md=$(attach_md -t malloc -s $bytes) 37*1d23aa6eSAlan Somers fi 38*1d23aa6eSAlan Somers 39f92ce022SAlan Somers for cipher in aes-xts:128 aes-xts:256 \ 40f92ce022SAlan Somers aes-cbc:128 aes-cbc:192 aes-cbc:256 \ 41f92ce022SAlan Somers 3des-cbc:192 \ 42f92ce022SAlan Somers blowfish-cbc:128 blowfish-cbc:160 blowfish-cbc:192 \ 43f92ce022SAlan Somers blowfish-cbc:224 blowfish-cbc:256 blowfish-cbc:288 \ 44f92ce022SAlan Somers blowfish-cbc:320 blowfish-cbc:352 blowfish-cbc:384 \ 45f92ce022SAlan Somers blowfish-cbc:416 blowfish-cbc:448 \ 46f92ce022SAlan Somers camellia-cbc:128 camellia-cbc:192 camellia-cbc:256; do 47f92ce022SAlan Somers ealgo=${cipher%%:*} 48f92ce022SAlan Somers keylen=${cipher##*:} 49f92ce022SAlan Somers for aalgo in hmac/md5 hmac/sha1 hmac/ripemd160 hmac/sha256 \ 50f92ce022SAlan Somers hmac/sha384 hmac/sha512; do 515dce212dSAlan Somers for secsize in 512 1024 2048 4096 $MAX_SECSIZE; do 52f92ce022SAlan Somers ${func} $cipher $aalgo $secsize 532e23c411SAlan Somers geli detach ${md} 2>/dev/null 54f92ce022SAlan Somers done 55f92ce022SAlan Somers done 56f92ce022SAlan Somers done 57f92ce022SAlan Somers} 58f92ce022SAlan Somers 59f92ce022SAlan Somers# Execute `func` for each combination of cipher, and sectorsize, with no hmac 60f92ce022SAlan Somers# `func` usage should be: 61f92ce022SAlan Somers# func <cipher> <secsize> 62f92ce022SAlan Somersfor_each_geli_config_nointegrity() { 63f92ce022SAlan Somers func=$1 64f92ce022SAlan Somers 655dce212dSAlan Somers # geli needs 512B for the label. 665dce212dSAlan Somers bytes=`expr $MAX_SECSIZE \* $sectors + 512`b 675dce212dSAlan Somers md=$(attach_md -t malloc -s $bytes) 68f92ce022SAlan Somers for cipher in aes-xts:128 aes-xts:256 \ 69f92ce022SAlan Somers aes-cbc:128 aes-cbc:192 aes-cbc:256 \ 70f92ce022SAlan Somers 3des-cbc:192 \ 71f92ce022SAlan Somers blowfish-cbc:128 blowfish-cbc:160 blowfish-cbc:192 \ 72f92ce022SAlan Somers blowfish-cbc:224 blowfish-cbc:256 blowfish-cbc:288 \ 73f92ce022SAlan Somers blowfish-cbc:320 blowfish-cbc:352 blowfish-cbc:384 \ 74f92ce022SAlan Somers blowfish-cbc:416 blowfish-cbc:448 \ 75f92ce022SAlan Somers camellia-cbc:128 camellia-cbc:192 camellia-cbc:256; do 76f92ce022SAlan Somers ealgo=${cipher%%:*} 77f92ce022SAlan Somers keylen=${cipher##*:} 785dce212dSAlan Somers for secsize in 512 1024 2048 4096 $MAX_SECSIZE; do 79610b95a1SAlan Somers ${func} $cipher $secsize 802e23c411SAlan Somers geli detach ${md} 2>/dev/null 81f92ce022SAlan Somers done 82f92ce022SAlan Somers done 83f92ce022SAlan Somers} 84f92ce022SAlan Somers 85f92ce022SAlan Somers 8609d98641SEnji Coopergeli_test_cleanup() 8709d98641SEnji Cooper{ 88041999e3SAlan Somers if [ -f "$TEST_MDS_FILE" ]; then 89041999e3SAlan Somers while read md; do 90041999e3SAlan Somers [ -c /dev/${md}.eli ] && \ 91041999e3SAlan Somers geli detach $md.eli 2>/dev/null 92041999e3SAlan Somers mdconfig -d -u $md 2>/dev/null 93041999e3SAlan Somers done < $TEST_MDS_FILE 94041999e3SAlan Somers fi 95f397a004SAlan Somers true 9609d98641SEnji Cooper} 9709d98641SEnji Cooper 9809d98641SEnji Cooper. `dirname $0`/../geom_subr.sh 99