Module Name: src Committed By: riastradh Date: Sat Jul 25 22:53:38 UTC 2020
Modified Files: src/distrib/sets/lists/debug: mi src/distrib/sets/lists/tests: mi src/tests/sys/crypto: Makefile Added Files: src/tests/sys/crypto/chacha: Makefile t_chacha.c Log Message: Add kernel ChaCha test to exercise all available implementations. To generate a diff of this commit: cvs rdiff -u -r1.325 -r1.326 src/distrib/sets/lists/debug/mi cvs rdiff -u -r1.875 -r1.876 src/distrib/sets/lists/tests/mi cvs rdiff -u -r1.1 -r1.2 src/tests/sys/crypto/Makefile cvs rdiff -u -r0 -r1.1 src/tests/sys/crypto/chacha/Makefile \ src/tests/sys/crypto/chacha/t_chacha.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/distrib/sets/lists/debug/mi diff -u src/distrib/sets/lists/debug/mi:1.325 src/distrib/sets/lists/debug/mi:1.326 --- src/distrib/sets/lists/debug/mi:1.325 Fri Jul 17 15:34:17 2020 +++ src/distrib/sets/lists/debug/mi Sat Jul 25 22:53:38 2020 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.325 2020/07/17 15:34:17 kamil Exp $ +# $NetBSD: mi,v 1.326 2020/07/25 22:53:38 riastradh Exp $ ./etc/mtree/set.debug comp-sys-root ./usr/lib comp-sys-usr compatdir ./usr/lib/i18n/libBIG5_g.a comp-c-debuglib debuglib,compatfile @@ -2415,6 +2415,8 @@ ./usr/libdata/debug/usr/tests/sys/crypto tests-sys-debug debug,atf,compattestfile ./usr/libdata/debug/usr/tests/sys/crypto/aes tests-sys-debug debug,atf,compattestfile ./usr/libdata/debug/usr/tests/sys/crypto/aes/t_aes.debug tests-sys-debug debug,atf,compattestfile +./usr/libdata/debug/usr/tests/sys/crypto/chacha tests-sys-debug debug,atf,compattestfile +./usr/libdata/debug/usr/tests/sys/crypto/chacha/t_chacha.debug tests-sys-debug debug,atf,compattestfile ./usr/libdata/debug/usr/tests/sys/net tests-sys-debug debug,atf,compattestfile ./usr/libdata/debug/usr/tests/sys/net/t_print.debug tests-sys-debug debug,atf,compattestfile ./usr/libdata/debug/usr/tests/sys/netatalk tests-sys-debug debug,atf,compattestfile Index: src/distrib/sets/lists/tests/mi diff -u src/distrib/sets/lists/tests/mi:1.875 src/distrib/sets/lists/tests/mi:1.876 --- src/distrib/sets/lists/tests/mi:1.875 Sat Jul 25 21:23:09 2020 +++ src/distrib/sets/lists/tests/mi Sat Jul 25 22:53:38 2020 @@ -1,4 +1,4 @@ -# $NetBSD: mi,v 1.875 2020/07/25 21:23:09 rillig Exp $ +# $NetBSD: mi,v 1.876 2020/07/25 22:53:38 riastradh Exp $ # # Note: don't delete entries from here - mark them as "obsolete" instead. # @@ -4085,6 +4085,10 @@ ./usr/tests/sys/crypto/aes/Atffile tests-sys-tests compattestfile,atf ./usr/tests/sys/crypto/aes/Kyuafile tests-sys-tests compattestfile,atf,kyua ./usr/tests/sys/crypto/aes/t_aes tests-sys-tests compattestfile,atf +./usr/tests/sys/crypto/chacha tests-sys-tests compattestfile,atf +./usr/tests/sys/crypto/chacha/Atffile tests-sys-tests compattestfile,atf +./usr/tests/sys/crypto/chacha/Kyuafile tests-sys-tests compattestfile,atf,kyua +./usr/tests/sys/crypto/chacha/t_chacha tests-sys-tests compattestfile,atf ./usr/tests/sys/net tests-sys-tests compattestfile,atf ./usr/tests/sys/net/Atffile tests-sys-tests compattestfile,atf ./usr/tests/sys/net/Kyuafile tests-sys-tests compattestfile,atf,kyua Index: src/tests/sys/crypto/Makefile diff -u src/tests/sys/crypto/Makefile:1.1 src/tests/sys/crypto/Makefile:1.2 --- src/tests/sys/crypto/Makefile:1.1 Tue Jun 30 20:32:11 2020 +++ src/tests/sys/crypto/Makefile Sat Jul 25 22:53:38 2020 @@ -1,9 +1,10 @@ -# $NetBSD: Makefile,v 1.1 2020/06/30 20:32:11 riastradh Exp $ +# $NetBSD: Makefile,v 1.2 2020/07/25 22:53:38 riastradh Exp $ .include <bsd.own.mk> TESTSDIR= ${TESTSBASE}/sys/crypto TESTS_SUBDIRS+= aes +TESTS_SUBDIRS+= chacha .include <bsd.test.mk> Added files: Index: src/tests/sys/crypto/chacha/Makefile diff -u /dev/null src/tests/sys/crypto/chacha/Makefile:1.1 --- /dev/null Sat Jul 25 22:53:38 2020 +++ src/tests/sys/crypto/chacha/Makefile Sat Jul 25 22:53:38 2020 @@ -0,0 +1,43 @@ +# $NetBSD: Makefile,v 1.1 2020/07/25 22:53:38 riastradh Exp $ + +.include <bsd.own.mk> + +TESTSDIR= ${TESTSBASE}/sys/crypto/chacha + +TESTS_C= t_chacha + +AFLAGS+= -D_LOCORE + +.PATH: ${NETBSDSRCDIR}/sys/crypto/chacha +CPPFLAGS+= -I${NETBSDSRCDIR}/sys + +SRCS.t_chacha+= t_chacha.c + +SRCS.t_chacha+= chacha_ref.c +SRCS.t_chacha+= chacha_selftest.c + +.if !empty(MACHINE_ARCH:Maarch64*) + +.PATH: ${NETBSDSRCDIR}/sys/crypto/chacha/arch/arm +CPPFLAGS+= -I${NETBSDSRCDIR}/sys/crypto/chacha/arch/arm + +SRCS.t_chacha+= chacha_neon.c +SRCS.t_chacha+= chacha_neon_64.S +SRCS.t_chacha+= chacha_neon_impl.c + +.endif # aarch64 + +.if ${MACHINE_ARCH} == "i386" || ${MACHINE_ARCH} == "x86_64" + +.PATH: ${NETBSDSRCDIR}/sys/crypto/chacha/arch/x86 +CPPFLAGS+= -I${NETBSDSRCDIR}/sys/crypto/chacha/arch/x86 + +SRCS.t_chacha+= chacha_sse2.c +SRCS.t_chacha+= chacha_sse2_impl.c +COPTS.chacha_sse2.c+= -msse -msse2 + +.endif # x86 + +WARNS= 5 + +.include <bsd.test.mk> Index: src/tests/sys/crypto/chacha/t_chacha.c diff -u /dev/null src/tests/sys/crypto/chacha/t_chacha.c:1.1 --- /dev/null Sat Jul 25 22:53:38 2020 +++ src/tests/sys/crypto/chacha/t_chacha.c Sat Jul 25 22:53:38 2020 @@ -0,0 +1,108 @@ +/* $NetBSD: t_chacha.c,v 1.1 2020/07/25 22:53:38 riastradh Exp $ */ + +/*- + * Copyright (c) 2020 The NetBSD Foundation, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS + * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include <sys/types.h> + +#include <crypto/chacha/chacha.h> +#include <crypto/chacha/chacha_ref.h> + +#if defined(__i386__) || defined(__x86_64__) +#include <crypto/chacha/arch/x86/chacha_sse2.h> +#endif + +#ifdef __aarch64__ +#include <crypto/chacha/arch/arm/chacha_neon.h> +#endif + +#include <atf-c.h> + +ATF_TC(chacha_ref_selftest); +ATF_TC_HEAD(chacha_ref_selftest, tc) +{ + + atf_tc_set_md_var(tc, "descr", "Portable C chacha_ref tests"); +} + +ATF_TC_BODY(chacha_ref_selftest, tc) +{ + + if (chacha_ref_impl.ci_probe()) { + /* + * chacha_ref is the portable software fallback, so + * probe should never fail. + */ + atf_tc_fail("Portable C chacha_ref probe failed"); + } + + if (chacha_selftest(&chacha_ref_impl)) + atf_tc_fail("Portable C chacha_ref self-test failed"); +} + +#define CHACHA_SELFTEST(name, impl, descr) \ +ATF_TC(name); \ +ATF_TC_HEAD(name, tc) \ +{ \ + \ + atf_tc_set_md_var(tc, "descr", descr); \ +} \ + \ +ATF_TC_BODY(name, tc) \ +{ \ + \ + if ((impl)->ci_probe()) \ + atf_tc_skip("%s not supported on this hardware", \ + (impl)->ci_name); \ + if (chacha_selftest(impl)) \ + atf_tc_fail("%s self-test failed", (impl)->ci_name); \ +} + +#ifdef __aarch64__ +CHACHA_SELFTEST(chacha_neon_selftest, &chacha_neon_impl, + "ARM NEON ChaCha self-test") +#endif + +#if defined(__i386__) || defined(__x86_64__) +CHACHA_SELFTEST(chacha_sse2_selftest, &chacha_sse2_impl, + "x86 SSE2 ChaCha self-test") +#endif + +ATF_TP_ADD_TCS(tp) +{ + + ATF_TP_ADD_TC(tp, chacha_ref_selftest); + +#ifdef __aarch64__ + ATF_TP_ADD_TC(tp, chacha_neon_selftest); +#endif + +#if defined(__i386__) || defined(__x86_64__) + ATF_TP_ADD_TC(tp, chacha_sse2_selftest); +#endif + + return atf_no_error(); +}