1# $NetBSD: t_opencrypto.sh,v 1.6 2015/12/26 07:10:03 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 # No cleanup required since test is skipped. Trying to run rump.halt 84 # at this point fails, causing the ATF environment to erroneously 85 # report a failed test! 86 # 87 # common_cleanup 88} 89 90atf_test_case camellia cleanup 91camellia_head() { 92 common_head "Test CAMELLIA_CBC crypto" 93} 94 95camellia_body() { 96 common_body h_camellia 97} 98 99camellia_cleanup() { 100 common_cleanup 101} 102 103atf_test_case cbcdes cleanup 104cbcdes_head() { 105 common_head "Test DES_CBC crypto" 106} 107 108cbcdes_body() { 109 common_body h_cbcdes 110} 111 112cbcdes_cleanup() { 113 common_cleanup 114} 115 116atf_test_case comp cleanup 117comp_head() { 118 common_head "Test GZIP_COMP Compression" 119} 120 121comp_body() { 122 common_body h_comp 123} 124 125comp_cleanup() { 126 common_cleanup 127} 128 129atf_test_case comp_deflate cleanup 130comp_deflate_head() { 131 common_head "Test DEFLATE_COMP Compression" 132} 133 134comp_deflate_body() { 135 common_body h_comp_zlib 136} 137 138comp_deflate_cleanup() { 139 common_cleanup 140} 141 142atf_test_case comp_zlib_rnd cleanup 143comp_zlib_rnd_head() { 144 common_head "Test DEFLATE_COMP Compression with random data" 145} 146 147comp_zlib_rnd_body() { 148 common_body h_comp_zlib_rnd 149} 150 151comp_zlib_rnd_cleanup() { 152 common_cleanup 153} 154 155atf_test_case aesctr1 cleanup 156aesctr1_head() { 157 common_head "Test AES_CTR crypto" 158} 159 160aesctr1_body() { 161 common_body h_aesctr1 162} 163 164aesctr1_cleanup() { 165 common_cleanup 166} 167 168atf_test_case aesctr2 cleanup 169aesctr2_head() { 170 common_head "Test AES_CTR crypto" 171} 172 173aesctr2_body() { 174 common_body h_aesctr2 175} 176 177aesctr2_cleanup() { 178 common_cleanup 179} 180 181atf_test_case gcm cleanup 182gcm_head() { 183 common_head "Test AES_GCM_16 crypto" 184} 185 186gcm_body() { 187 common_body h_gcm 188} 189 190gcm_cleanup() { 191 common_cleanup 192} 193 194atf_test_case md5 cleanup 195md5_head() { 196 common_head "Test MD5 crypto" 197} 198 199md5_body() { 200 common_body h_md5 201} 202 203md5_cleanup() { 204 common_cleanup 205} 206 207atf_test_case md5_hmac cleanup 208md5_hmac_head() { 209 common_head "Test MD5_HMAC crypto" 210} 211 212md5_hmac_body() { 213 common_body h_md5hmac 214} 215 216md5_hmac_cleanup() { 217 common_cleanup 218} 219 220atf_test_case null cleanup 221null_head() { 222 common_head "Test NULL_CBC crypto" 223} 224 225null_body() { 226 common_body h_null 227} 228 229null_cleanup() { 230 common_cleanup 231} 232 233atf_test_case sha1_hmac cleanup 234sha1_hmac_head() { 235 common_head "Test SHA1_HMAC crypto" 236} 237 238sha1_hmac_body() { 239 common_body h_sha1hmac 240} 241 242sha1_hmac_cleanup() { 243 common_cleanup 244} 245 246atf_test_case xcbcmac cleanup 247xcbcmac_head() { 248 common_head "Test XCBC_MAC_96 crypto" 249} 250 251xcbcmac_body() { 252 common_body h_xcbcmac 253} 254 255xcbcmac_cleanup() { 256 common_cleanup 257} 258 259atf_init_test_cases() { 260 RUMP_SERVER="unix://t_opencrypto_socket" ; export RUMP_SERVER 261 262 atf_add_test_case arc4 263 atf_add_test_case camellia 264 atf_add_test_case cbcdes 265 atf_add_test_case comp 266 atf_add_test_case comp_deflate 267 atf_add_test_case comp_zlib_rnd 268 atf_add_test_case aesctr1 269 atf_add_test_case aesctr2 270 atf_add_test_case gcm 271 atf_add_test_case md5 272 atf_add_test_case md5_hmac 273 atf_add_test_case null 274 atf_add_test_case sha1_hmac 275 atf_add_test_case xcbcmac 276} 277