1# $NetBSD: t_opencrypto.sh,v 1.9 2019/12/03 04:20:45 hikaru 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 cbc3des cleanup 117cbc3des_head() { 118 common_head "Test 3DES_CBC crypto" 119} 120 121cbc3des_body() { 122 common_body h_cbc3des 123} 124 125cbc3des_cleanup() { 126 common_cleanup 127} 128 129atf_test_case comp cleanup 130comp_head() { 131 common_head "Test GZIP_COMP Compression" 132} 133 134comp_body() { 135 common_body h_comp 136} 137 138comp_cleanup() { 139 common_cleanup 140} 141 142atf_test_case comp_deflate cleanup 143comp_deflate_head() { 144 common_head "Test DEFLATE_COMP Compression" 145} 146 147comp_deflate_body() { 148 common_body h_comp_zlib 149} 150 151comp_deflate_cleanup() { 152 common_cleanup 153} 154 155atf_test_case comp_zlib_rnd cleanup 156comp_zlib_rnd_head() { 157 common_head "Test DEFLATE_COMP Compression with random data" 158} 159 160comp_zlib_rnd_body() { 161 common_body h_comp_zlib_rnd 162} 163 164comp_zlib_rnd_cleanup() { 165 common_cleanup 166} 167 168atf_test_case aesctr1 cleanup 169aesctr1_head() { 170 common_head "Test AES_CTR crypto" 171} 172 173aesctr1_body() { 174 common_body h_aesctr1 175} 176 177aesctr1_cleanup() { 178 common_cleanup 179} 180 181atf_test_case aesctr2 cleanup 182aesctr2_head() { 183 common_head "Test AES_CTR crypto" 184} 185 186aesctr2_body() { 187 common_body h_aesctr2 188} 189 190aesctr2_cleanup() { 191 common_cleanup 192} 193 194atf_test_case aescbc cleanup 195aescbc_head() { 196 common_head "Test AES_CBC crypto" 197} 198 199aescbc_body() { 200 common_body h_aescbc 201} 202 203aescbc_cleanup() { 204 common_cleanup 205} 206 207atf_test_case gcm cleanup 208gcm_head() { 209 common_head "Test AES_GCM_16 crypto" 210} 211 212gcm_body() { 213 common_body h_gcm 214} 215 216gcm_cleanup() { 217 common_cleanup 218} 219 220atf_test_case md5 cleanup 221md5_head() { 222 common_head "Test MD5 crypto" 223} 224 225md5_body() { 226 common_body h_md5 227} 228 229md5_cleanup() { 230 common_cleanup 231} 232 233atf_test_case md5_hmac cleanup 234md5_hmac_head() { 235 common_head "Test MD5_HMAC crypto" 236} 237 238md5_hmac_body() { 239 common_body h_md5hmac 240} 241 242md5_hmac_cleanup() { 243 common_cleanup 244} 245 246atf_test_case null cleanup 247null_head() { 248 common_head "Test NULL_CBC crypto" 249} 250 251null_body() { 252 common_body h_null 253} 254 255null_cleanup() { 256 common_cleanup 257} 258 259atf_test_case sha1_hmac cleanup 260sha1_hmac_head() { 261 common_head "Test SHA1_HMAC crypto" 262} 263 264sha1_hmac_body() { 265 common_body h_sha1hmac 266} 267 268sha1_hmac_cleanup() { 269 common_cleanup 270} 271 272atf_test_case sha2_hmac cleanup 273sha2_hmac_head() { 274 common_head "Test SHA2_HMAC crypto" 275} 276 277sha2_hmac_body() { 278 common_body h_sha2hmac 279} 280 281sha2_hmac_cleanup() { 282 common_cleanup 283} 284 285atf_test_case xcbcmac cleanup 286xcbcmac_head() { 287 common_head "Test XCBC_MAC_96 crypto" 288} 289 290xcbcmac_body() { 291 common_body h_xcbcmac 292} 293 294xcbcmac_cleanup() { 295 common_cleanup 296} 297 298atf_test_case ioctl cleanup 299ioctl_head() { 300 common_head "Test ioctl for /dev/crypto" 301} 302 303ioctl_body() { 304 common_body h_ioctl 305} 306 307ioctl_cleanup() { 308 common_cleanup 309} 310 311atf_init_test_cases() { 312 RUMP_SERVER="unix://t_opencrypto_socket" ; export RUMP_SERVER 313 314 atf_add_test_case arc4 315 atf_add_test_case camellia 316 atf_add_test_case cbcdes 317 atf_add_test_case cbc3des 318 atf_add_test_case comp 319 atf_add_test_case comp_deflate 320 atf_add_test_case comp_zlib_rnd 321 atf_add_test_case aesctr1 322 atf_add_test_case aesctr2 323 atf_add_test_case aescbc 324 atf_add_test_case gcm 325 atf_add_test_case md5 326 atf_add_test_case md5_hmac 327 atf_add_test_case null 328 atf_add_test_case sha1_hmac 329 atf_add_test_case sha2_hmac 330 atf_add_test_case xcbcmac 331 atf_add_test_case ioctl 332} 333