1# $NetBSD: t_opencrypto.sh,v 1.4 2014/01/18 15:15:16 pgoyette Exp $ 2# 3# Copyright (c) 2014 The NetBSD Foundation, Inc. 4# All rights reserved. 5# 6# Redistribution and use in source and binary forms, with or without 7# modification, are permitted provided that the following conditions 8# are met: 9# 1. Redistributions of source code must retain the above copyright 10# notice, this list of conditions and the following disclaimer. 11# 2. Redistributions in binary form must reproduce the above copyright 12# notice, this list of conditions and the following disclaimer in the 13# documentation and/or other materials provided with the distribution. 14# 15# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 16# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 17# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 18# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 19# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 20# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 21# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 22# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 23# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 24# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25# POSSIBILITY OF SUCH DAMAGE. 26# 27 28# Start a rumpserver, load required modules, and set requires sysctl vars 29 30start_rump() { 31 rump_libs="-l rumpvfs -l rumpdev -l rumpdev_opencrypto" 32 rump_libs="${rump_libs} -l rumpkern_z -l rumpkern_crypto" 33 34 rump_server ${rump_libs} ${RUMP_SERVER} || \ 35 return 1 36 37 rump.sysctl -w kern.cryptodevallowsoft=-1 && \ 38 return 0 39 40 rump.halt 41 42 return 1 43} 44 45common_head() { 46 atf_set descr "$1" 47 atf_set timeout 10 48 atf_set require.progs rump_server rump.sysctl rump.halt 49} 50 51common_body() { 52 local status 53 54 start_rump || atf_skip "Cannot set-up rump environment" 55 LD_PRELOAD="/usr/lib/librumphijack.so" ; export LD_PRELOAD 56 RUMPHIJACK="blanket=/dev/crypto" ; export RUMPHIJACK 57 $(atf_get_srcdir)/$1 58 status=$? 59 unset RUMPHIJACK 60 unset LD_PRELOAD 61 if [ $status -ne 0 ] ; then 62 atf_fail "$1 returned non-zero status, check output/error" 63 fi 64} 65 66common_cleanup() { 67 unset RUMPHIJACK 68 unset LD_PRELOAD 69 rump.halt 70} 71 72atf_test_case arc4 cleanup 73arc4_head() { 74 common_head "Test ARC4 crypto" 75} 76 77arc4_body() { 78 atf_skip "ARC4 not implemented by swcrypto" 79 common_body h_arc4 80} 81 82arc4_cleanup() { 83 common_cleanup 84} 85 86atf_test_case camellia cleanup 87camellia_head() { 88 common_head "Test CAMELLIA_CBC crypto" 89} 90 91camellia_body() { 92 common_body h_camellia 93} 94 95camellia_cleanup() { 96 common_cleanup 97} 98 99atf_test_case cbcdes cleanup 100cbcdes_head() { 101 common_head "Test ARC4 crypto" 102} 103 104cbcdes_body() { 105 common_body h_cbcdes 106} 107 108cbcdes_cleanup() { 109 common_cleanup 110} 111 112atf_test_case comp cleanup 113comp_head() { 114 common_head "Test GZIP_COMP Compression" 115} 116 117comp_body() { 118 common_body h_comp 119} 120 121comp_cleanup() { 122 common_cleanup 123} 124 125atf_test_case comp_deflate cleanup 126comp_deflate_head() { 127 common_head "Test DEFLATE_COMP Compression" 128} 129 130comp_deflate_body() { 131 common_body h_comp_zlib 132} 133 134comp_deflate_cleanup() { 135 common_cleanup 136} 137 138atf_test_case comp_zlib_rnd cleanup 139comp_zlib_rnd_head() { 140 common_head "Test DEFLATE_COMP Compression with random data" 141} 142 143comp_zlib_rnd_body() { 144 common_body h_comp_zlib_rnd 145} 146 147comp_zlib_rnd_cleanup() { 148 common_cleanup 149} 150 151atf_test_case aesctr1 cleanup 152aesctr1_head() { 153 common_head "Test AES_CTR crypto" 154} 155 156aesctr1_body() { 157 common_body h_aesctr1 158} 159 160aesctr1_cleanup() { 161 common_cleanup 162} 163 164atf_test_case aesctr2 cleanup 165aesctr2_head() { 166 common_head "Test AES_CTR crypto" 167} 168 169aesctr2_body() { 170 common_body h_aesctr2 171} 172 173aesctr2_cleanup() { 174 common_cleanup 175} 176 177atf_test_case gcm cleanup 178gcm_head() { 179 common_head "Test AES_GCM_16 crypto" 180} 181 182gcm_body() { 183 common_body h_gcm 184} 185 186gcm_cleanup() { 187 common_cleanup 188} 189 190atf_test_case md5 cleanup 191md5_head() { 192 common_head "Test MD5 crypto" 193} 194 195md5_body() { 196 common_body h_md5 197} 198 199md5_cleanup() { 200 common_cleanup 201} 202 203atf_test_case md5_hmac cleanup 204md5_hmac_head() { 205 common_head "Test MD5_HMAC crypto" 206} 207 208md5_hmac_body() { 209 common_body h_md5hmac 210} 211 212md5_hmac_cleanup() { 213 common_cleanup 214} 215 216atf_test_case null cleanup 217null_head() { 218 common_head "Test NULL_CBC crypto" 219} 220 221null_body() { 222 common_body h_null 223} 224 225null_cleanup() { 226 common_cleanup 227} 228 229atf_test_case sha1_hmac cleanup 230sha1_hmac_head() { 231 common_head "Test SHA1_HMAC crypto" 232} 233 234sha1_hmac_body() { 235 common_body h_sha1hmac 236} 237 238sha1_hmac_cleanup() { 239 common_cleanup 240} 241 242atf_test_case xcbcmac cleanup 243xcbcmac_head() { 244 common_head "Test XCBC_MAC_96 crypto" 245} 246 247xcbcmac_body() { 248 common_body h_xcbcmac 249} 250 251xcbcmac_cleanup() { 252 common_cleanup 253} 254 255atf_init_test_cases() { 256 RUMP_SERVER="unix://t_opencrypto_socket" ; export RUMP_SERVER 257 258 atf_add_test_case arc4 259 atf_add_test_case camellia 260 atf_add_test_case cbcdes 261 atf_add_test_case comp 262 atf_add_test_case comp_deflate 263 atf_add_test_case comp_zlib_rnd 264 atf_add_test_case aesctr1 265 atf_add_test_case aesctr2 266 atf_add_test_case gcm 267 atf_add_test_case md5 268 atf_add_test_case md5_hmac 269 atf_add_test_case null 270 atf_add_test_case sha1_hmac 271 atf_add_test_case xcbcmac 272} 273