xref: /freebsd-src/contrib/netbsd-tests/crypto/opencrypto/t_opencrypto.sh (revision c22165b4f1f5d38b681921797a44b3ba8c13b7e0)
1*640235e2SEnji Cooper#	$NetBSD: t_opencrypto.sh,v 1.6 2015/12/26 07:10:03 pgoyette Exp $
257718be8SEnji Cooper#
357718be8SEnji Cooper# Copyright (c) 2014 The NetBSD Foundation, Inc.
457718be8SEnji Cooper# All rights reserved.
557718be8SEnji Cooper#
657718be8SEnji Cooper# Redistribution and use in source and binary forms, with or without
757718be8SEnji Cooper# modification, are permitted provided that the following conditions
857718be8SEnji Cooper# are met:
957718be8SEnji Cooper# 1. Redistributions of source code must retain the above copyright
1057718be8SEnji Cooper#    notice, this list of conditions and the following disclaimer.
1157718be8SEnji Cooper# 2. Redistributions in binary form must reproduce the above copyright
1257718be8SEnji Cooper#    notice, this list of conditions and the following disclaimer in the
1357718be8SEnji Cooper#    documentation and/or other materials provided with the distribution.
1457718be8SEnji Cooper#
1557718be8SEnji Cooper# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
1657718be8SEnji Cooper# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
1757718be8SEnji Cooper# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1857718be8SEnji Cooper# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
1957718be8SEnji Cooper# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2057718be8SEnji Cooper# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2157718be8SEnji Cooper# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2257718be8SEnji Cooper# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2357718be8SEnji Cooper# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2457718be8SEnji Cooper# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2557718be8SEnji Cooper# POSSIBILITY OF SUCH DAMAGE.
2657718be8SEnji Cooper#
2757718be8SEnji Cooper
2857718be8SEnji Cooper# Start a rumpserver, load required modules, and set requires sysctl vars
2957718be8SEnji Cooper
3057718be8SEnji Cooperstart_rump() {
3157718be8SEnji Cooper	rump_libs="-l rumpvfs -l rumpdev -l rumpdev_opencrypto"
3257718be8SEnji Cooper	rump_libs="${rump_libs} -l rumpkern_z -l rumpkern_crypto"
3357718be8SEnji Cooper
3457718be8SEnji Cooper	rump_server ${rump_libs} ${RUMP_SERVER} || \
3557718be8SEnji Cooper	    return 1
3657718be8SEnji Cooper
3757718be8SEnji Cooper	rump.sysctl -w kern.cryptodevallowsoft=-1 && \
3857718be8SEnji Cooper	    return 0
3957718be8SEnji Cooper
4057718be8SEnji Cooper	rump.halt
4157718be8SEnji Cooper
4257718be8SEnji Cooper	return 1
4357718be8SEnji Cooper}
4457718be8SEnji Cooper
4557718be8SEnji Coopercommon_head() {
4657718be8SEnji Cooper	atf_set	descr		"$1"
4757718be8SEnji Cooper	atf_set	timeout		10
4857718be8SEnji Cooper	atf_set	require.progs	rump_server	rump.sysctl	rump.halt
4957718be8SEnji Cooper}
5057718be8SEnji Cooper
5157718be8SEnji Coopercommon_body() {
5257718be8SEnji Cooper	local status
5357718be8SEnji Cooper
5457718be8SEnji Cooper	start_rump || atf_skip "Cannot set-up rump environment"
5557718be8SEnji Cooper	LD_PRELOAD="/usr/lib/librumphijack.so" ; export LD_PRELOAD
5657718be8SEnji Cooper	RUMPHIJACK="blanket=/dev/crypto" ; export RUMPHIJACK
5757718be8SEnji Cooper	$(atf_get_srcdir)/$1
5857718be8SEnji Cooper	status=$?
5957718be8SEnji Cooper	unset RUMPHIJACK
6057718be8SEnji Cooper	unset LD_PRELOAD
6157718be8SEnji Cooper	if [ $status -ne 0 ] ; then
6257718be8SEnji Cooper		atf_fail "$1 returned non-zero status, check output/error"
6357718be8SEnji Cooper	fi
6457718be8SEnji Cooper}
6557718be8SEnji Cooper
6657718be8SEnji Coopercommon_cleanup() {
6757718be8SEnji Cooper	unset RUMPHIJACK
6857718be8SEnji Cooper	unset LD_PRELOAD
6957718be8SEnji Cooper	rump.halt
7057718be8SEnji Cooper}
7157718be8SEnji Cooper
7257718be8SEnji Cooperatf_test_case arc4 cleanup
7357718be8SEnji Cooperarc4_head() {
7457718be8SEnji Cooper	common_head "Test ARC4 crypto"
7557718be8SEnji Cooper}
7657718be8SEnji Cooper
7757718be8SEnji Cooperarc4_body() {
7857718be8SEnji Cooper	atf_skip "ARC4 not implemented by swcrypto"
7957718be8SEnji Cooper	common_body h_arc4
8057718be8SEnji Cooper}
8157718be8SEnji Cooper
8257718be8SEnji Cooperarc4_cleanup() {
83*640235e2SEnji Cooper	# No cleanup required since test is skipped.  Trying to run rump.halt
84*640235e2SEnji Cooper	# at this point fails, causing the ATF environment to erroneously
85*640235e2SEnji Cooper	# report a failed test!
86*640235e2SEnji Cooper	#
87*640235e2SEnji Cooper	# common_cleanup
8857718be8SEnji Cooper}
8957718be8SEnji Cooper
9057718be8SEnji Cooperatf_test_case camellia cleanup
9157718be8SEnji Coopercamellia_head() {
9257718be8SEnji Cooper	common_head "Test CAMELLIA_CBC crypto"
9357718be8SEnji Cooper}
9457718be8SEnji Cooper
9557718be8SEnji Coopercamellia_body() {
9657718be8SEnji Cooper	common_body h_camellia
9757718be8SEnji Cooper}
9857718be8SEnji Cooper
9957718be8SEnji Coopercamellia_cleanup() {
10057718be8SEnji Cooper	common_cleanup
10157718be8SEnji Cooper}
10257718be8SEnji Cooper
10357718be8SEnji Cooperatf_test_case cbcdes cleanup
10457718be8SEnji Coopercbcdes_head() {
105*640235e2SEnji Cooper	common_head "Test DES_CBC crypto"
10657718be8SEnji Cooper}
10757718be8SEnji Cooper
10857718be8SEnji Coopercbcdes_body() {
10957718be8SEnji Cooper	common_body h_cbcdes
11057718be8SEnji Cooper}
11157718be8SEnji Cooper
11257718be8SEnji Coopercbcdes_cleanup() {
11357718be8SEnji Cooper	common_cleanup
11457718be8SEnji Cooper}
11557718be8SEnji Cooper
11657718be8SEnji Cooperatf_test_case comp cleanup
11757718be8SEnji Coopercomp_head() {
11857718be8SEnji Cooper	common_head "Test GZIP_COMP Compression"
11957718be8SEnji Cooper}
12057718be8SEnji Cooper
12157718be8SEnji Coopercomp_body() {
12257718be8SEnji Cooper	common_body h_comp
12357718be8SEnji Cooper}
12457718be8SEnji Cooper
12557718be8SEnji Coopercomp_cleanup() {
12657718be8SEnji Cooper	common_cleanup
12757718be8SEnji Cooper}
12857718be8SEnji Cooper
12957718be8SEnji Cooperatf_test_case comp_deflate cleanup
13057718be8SEnji Coopercomp_deflate_head() {
13157718be8SEnji Cooper	common_head "Test DEFLATE_COMP Compression"
13257718be8SEnji Cooper}
13357718be8SEnji Cooper
13457718be8SEnji Coopercomp_deflate_body() {
13557718be8SEnji Cooper	common_body h_comp_zlib
13657718be8SEnji Cooper}
13757718be8SEnji Cooper
13857718be8SEnji Coopercomp_deflate_cleanup() {
13957718be8SEnji Cooper	common_cleanup
14057718be8SEnji Cooper}
14157718be8SEnji Cooper
14257718be8SEnji Cooperatf_test_case comp_zlib_rnd cleanup
14357718be8SEnji Coopercomp_zlib_rnd_head() {
14457718be8SEnji Cooper	common_head "Test DEFLATE_COMP Compression with random data"
14557718be8SEnji Cooper}
14657718be8SEnji Cooper
14757718be8SEnji Coopercomp_zlib_rnd_body() {
14857718be8SEnji Cooper	common_body h_comp_zlib_rnd
14957718be8SEnji Cooper}
15057718be8SEnji Cooper
15157718be8SEnji Coopercomp_zlib_rnd_cleanup() {
15257718be8SEnji Cooper	common_cleanup
15357718be8SEnji Cooper}
15457718be8SEnji Cooper
15557718be8SEnji Cooperatf_test_case aesctr1 cleanup
15657718be8SEnji Cooperaesctr1_head() {
15757718be8SEnji Cooper	common_head "Test AES_CTR crypto"
15857718be8SEnji Cooper}
15957718be8SEnji Cooper
16057718be8SEnji Cooperaesctr1_body() {
16157718be8SEnji Cooper	common_body h_aesctr1
16257718be8SEnji Cooper}
16357718be8SEnji Cooper
16457718be8SEnji Cooperaesctr1_cleanup() {
16557718be8SEnji Cooper	common_cleanup
16657718be8SEnji Cooper}
16757718be8SEnji Cooper
16857718be8SEnji Cooperatf_test_case aesctr2 cleanup
16957718be8SEnji Cooperaesctr2_head() {
17057718be8SEnji Cooper	common_head "Test AES_CTR crypto"
17157718be8SEnji Cooper}
17257718be8SEnji Cooper
17357718be8SEnji Cooperaesctr2_body() {
17457718be8SEnji Cooper	common_body h_aesctr2
17557718be8SEnji Cooper}
17657718be8SEnji Cooper
17757718be8SEnji Cooperaesctr2_cleanup() {
17857718be8SEnji Cooper	common_cleanup
17957718be8SEnji Cooper}
18057718be8SEnji Cooper
18157718be8SEnji Cooperatf_test_case gcm cleanup
18257718be8SEnji Coopergcm_head() {
18357718be8SEnji Cooper	common_head "Test AES_GCM_16 crypto"
18457718be8SEnji Cooper}
18557718be8SEnji Cooper
18657718be8SEnji Coopergcm_body() {
18757718be8SEnji Cooper	common_body h_gcm
18857718be8SEnji Cooper}
18957718be8SEnji Cooper
19057718be8SEnji Coopergcm_cleanup() {
19157718be8SEnji Cooper	common_cleanup
19257718be8SEnji Cooper}
19357718be8SEnji Cooper
19457718be8SEnji Cooperatf_test_case md5 cleanup
19557718be8SEnji Coopermd5_head() {
19657718be8SEnji Cooper	common_head "Test MD5 crypto"
19757718be8SEnji Cooper}
19857718be8SEnji Cooper
19957718be8SEnji Coopermd5_body() {
20057718be8SEnji Cooper	common_body h_md5
20157718be8SEnji Cooper}
20257718be8SEnji Cooper
20357718be8SEnji Coopermd5_cleanup() {
20457718be8SEnji Cooper	common_cleanup
20557718be8SEnji Cooper}
20657718be8SEnji Cooper
20757718be8SEnji Cooperatf_test_case md5_hmac cleanup
20857718be8SEnji Coopermd5_hmac_head() {
20957718be8SEnji Cooper	common_head "Test MD5_HMAC crypto"
21057718be8SEnji Cooper}
21157718be8SEnji Cooper
21257718be8SEnji Coopermd5_hmac_body() {
21357718be8SEnji Cooper	common_body h_md5hmac
21457718be8SEnji Cooper}
21557718be8SEnji Cooper
21657718be8SEnji Coopermd5_hmac_cleanup() {
21757718be8SEnji Cooper	common_cleanup
21857718be8SEnji Cooper}
21957718be8SEnji Cooper
22057718be8SEnji Cooperatf_test_case null cleanup
22157718be8SEnji Coopernull_head() {
22257718be8SEnji Cooper	common_head "Test NULL_CBC crypto"
22357718be8SEnji Cooper}
22457718be8SEnji Cooper
22557718be8SEnji Coopernull_body() {
22657718be8SEnji Cooper	common_body h_null
22757718be8SEnji Cooper}
22857718be8SEnji Cooper
22957718be8SEnji Coopernull_cleanup() {
23057718be8SEnji Cooper	common_cleanup
23157718be8SEnji Cooper}
23257718be8SEnji Cooper
23357718be8SEnji Cooperatf_test_case sha1_hmac cleanup
23457718be8SEnji Coopersha1_hmac_head() {
23557718be8SEnji Cooper	common_head "Test SHA1_HMAC crypto"
23657718be8SEnji Cooper}
23757718be8SEnji Cooper
23857718be8SEnji Coopersha1_hmac_body() {
23957718be8SEnji Cooper	common_body h_sha1hmac
24057718be8SEnji Cooper}
24157718be8SEnji Cooper
24257718be8SEnji Coopersha1_hmac_cleanup() {
24357718be8SEnji Cooper	common_cleanup
24457718be8SEnji Cooper}
24557718be8SEnji Cooper
24657718be8SEnji Cooperatf_test_case xcbcmac cleanup
24757718be8SEnji Cooperxcbcmac_head() {
24857718be8SEnji Cooper	common_head "Test XCBC_MAC_96 crypto"
24957718be8SEnji Cooper}
25057718be8SEnji Cooper
25157718be8SEnji Cooperxcbcmac_body() {
25257718be8SEnji Cooper	common_body h_xcbcmac
25357718be8SEnji Cooper}
25457718be8SEnji Cooper
25557718be8SEnji Cooperxcbcmac_cleanup() {
25657718be8SEnji Cooper	common_cleanup
25757718be8SEnji Cooper}
25857718be8SEnji Cooper
25957718be8SEnji Cooperatf_init_test_cases() {
26057718be8SEnji Cooper	RUMP_SERVER="unix://t_opencrypto_socket" ; export RUMP_SERVER
26157718be8SEnji Cooper
26257718be8SEnji Cooper	atf_add_test_case arc4
26357718be8SEnji Cooper	atf_add_test_case camellia
26457718be8SEnji Cooper	atf_add_test_case cbcdes
26557718be8SEnji Cooper	atf_add_test_case comp
26657718be8SEnji Cooper	atf_add_test_case comp_deflate
26757718be8SEnji Cooper	atf_add_test_case comp_zlib_rnd
26857718be8SEnji Cooper	atf_add_test_case aesctr1
26957718be8SEnji Cooper	atf_add_test_case aesctr2
27057718be8SEnji Cooper	atf_add_test_case gcm
27157718be8SEnji Cooper	atf_add_test_case md5
27257718be8SEnji Cooper	atf_add_test_case md5_hmac
27357718be8SEnji Cooper	atf_add_test_case null
27457718be8SEnji Cooper	atf_add_test_case sha1_hmac
27557718be8SEnji Cooper	atf_add_test_case xcbcmac
27657718be8SEnji Cooper}
277