f79ca9
From a9b5785f174cf7fd74891fa64f6b69b9a9b55466 Mon Sep 17 00:00:00 2001
57726f
From: =?UTF-8?q?Petr=20Men=C5=A1=C3=ADk?= <pemensik@redhat.com>
57726f
Date: Tue, 2 Jan 2018 18:13:07 +0100
57726f
Subject: [PATCH] Fix pkcs11 variants atf tests
57726f
57726f
Add dns-pkcs11 tests Makefile to configure
57726f
57726f
Add pkcs11 Kyuafile, fix dh_test to pass in pkcs11 mode
57726f
---
57726f
 configure.ac                     |  1 +
57726f
 lib/Kyuafile                     |  2 ++
57726f
 lib/dns-pkcs11/tests/Makefile.in | 10 +++++-----
57726f
 lib/dns-pkcs11/tests/dh_test.c   |  3 ++-
57726f
 lib/isc-pkcs11/tests/Makefile.in |  6 +++---
57726f
 lib/isc-pkcs11/tests/hash_test.c | 32 +++++++++++++++++++++++++-------
57726f
 6 files changed, 38 insertions(+), 16 deletions(-)
57726f
57726f
diff --git a/configure.ac b/configure.ac
f79ca9
index 62ecf56..0940a7d 100644
57726f
--- a/configure.ac
57726f
+++ b/configure.ac
f79ca9
@@ -5476,6 +5476,7 @@ AC_CONFIG_FILES([
57726f
 	lib/dns-pkcs11/include/Makefile
57726f
 	lib/dns-pkcs11/include/dns/Makefile
57726f
 	lib/dns-pkcs11/include/dst/Makefile
57726f
+	lib/dns-pkcs11/tests/Makefile
57726f
 	lib/irs/Makefile
57726f
 	lib/irs/include/Makefile
57726f
 	lib/irs/include/irs/Makefile
57726f
diff --git a/lib/Kyuafile b/lib/Kyuafile
57726f
index 7c8bab0..eec9564 100644
57726f
--- a/lib/Kyuafile
57726f
+++ b/lib/Kyuafile
57726f
@@ -2,8 +2,10 @@ syntax(2)
57726f
 test_suite('bind9')
57726f
 
57726f
 include('dns/Kyuafile')
57726f
+include('dns-pkcs11/Kyuafile')
57726f
 include('irs/Kyuafile')
57726f
 include('isc/Kyuafile')
57726f
+include('isc-pkcs11/Kyuafile')
57726f
 include('isccc/Kyuafile')
57726f
 include('isccfg/Kyuafile')
57726f
 include('lwres/Kyuafile')
57726f
diff --git a/lib/dns-pkcs11/tests/Makefile.in b/lib/dns-pkcs11/tests/Makefile.in
f79ca9
index 22a06a8..5df5b15 100644
57726f
--- a/lib/dns-pkcs11/tests/Makefile.in
57726f
+++ b/lib/dns-pkcs11/tests/Makefile.in
57726f
@@ -17,12 +17,12 @@ VERSION=@BIND9_VERSION@
57726f
 
57726f
 CINCLUDES =	-I. -Iinclude ${DNS_INCLUDES} ${ISC_INCLUDES} \
f79ca9
 		@DST_OPENSSL_INC@ ${MAXMINDDB_CFLAGS}
57726f
-CDEFINES =	@CRYPTO@ -DTESTS="\"${top_builddir}/lib/dns/tests/\""
57726f
+CDEFINES =	@CRYPTO_PK11@ -DTESTS="\"${top_builddir}/lib/dns-pkcs11/tests/\""
57726f
 
57726f
-ISCLIBS =	../../isc/libisc.@A@
57726f
-ISCDEPLIBS =	../../isc/libisc.@A@
57726f
-DNSLIBS =	../libdns.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
57726f
-DNSDEPLIBS =	../libdns.@A@
57726f
+ISCLIBS =	../../isc-pkcs11/libisc-pkcs11.@A@
57726f
+ISCDEPLIBS =	../../isc-pkcs11/libisc-pkcs11.@A@
57726f
+DNSLIBS =	../libdns-pkcs11.@A@ ${MAXMINDDB_LIBS} @DNS_CRYPTO_LIBS@
57726f
+DNSDEPLIBS =	../libdns-pkcs11.@A@
57726f
 
57726f
 LIBS =		@LIBS@ @CMOCKA_LIBS@
57726f
 CFLAGS =	@CFLAGS@ @CMOCKA_CFLAGS@
57726f
diff --git a/lib/dns-pkcs11/tests/dh_test.c b/lib/dns-pkcs11/tests/dh_test.c
f79ca9
index a5bf46c..9ff2b76 100644
57726f
--- a/lib/dns-pkcs11/tests/dh_test.c
57726f
+++ b/lib/dns-pkcs11/tests/dh_test.c
f79ca9
@@ -88,7 +88,8 @@ dh_computesecret(void **state) {
57726f
 	result = dst_key_computesecret(key, key, &buf;;
57726f
 	assert_int_equal(result, DST_R_NOTPRIVATEKEY);
57726f
 	result = key->func->computesecret(key, key, &buf;;
57726f
-	assert_int_equal(result, DST_R_COMPUTESECRETFAILURE);
57726f
+	/* PKCS11 variant gives different result, accept both */
57726f
+	assert_true(result == DST_R_COMPUTESECRETFAILURE || result == DST_R_INVALIDPRIVATEKEY);
57726f
 
57726f
 	dst_key_free(&key);
57726f
 }
57726f
diff --git a/lib/isc-pkcs11/tests/Makefile.in b/lib/isc-pkcs11/tests/Makefile.in
f79ca9
index 36d2207..00dfbc9 100644
57726f
--- a/lib/isc-pkcs11/tests/Makefile.in
57726f
+++ b/lib/isc-pkcs11/tests/Makefile.in
57726f
@@ -16,10 +16,10 @@ VERSION=@BIND9_VERSION@
57726f
 @BIND9_MAKE_INCLUDES@
57726f
 
57726f
 CINCLUDES =	-I. -Iinclude ${ISC_INCLUDES} @ISC_OPENSSL_INC@
57726f
-CDEFINES =	@CRYPTO@ -DTESTS="\"${top_builddir}/lib/isc/tests/\""
57726f
+CDEFINES =	@CRYPTO_PK11@ -DTESTS="\"${top_builddir}/lib/isc-pkcs11/tests/\""
57726f
 
57726f
-ISCLIBS =	../libisc.@A@ @ISC_OPENSSL_LIBS@
57726f
-ISCDEPLIBS =	../libisc.@A@
57726f
+ISCLIBS =	../libisc-pkcs11.@A@ @ISC_OPENSSL_LIBS@
57726f
+ISCDEPLIBS =	../libisc-pkcs11.@A@
57726f
 
57726f
 LIBS =		@LIBS@ @CMOCKA_LIBS@
57726f
 CFLAGS =	@CFLAGS@ @CMOCKA_CFLAGS@
57726f
diff --git a/lib/isc-pkcs11/tests/hash_test.c b/lib/isc-pkcs11/tests/hash_test.c
f79ca9
index 4fafc38..5eb2be2 100644
57726f
--- a/lib/isc-pkcs11/tests/hash_test.c
57726f
+++ b/lib/isc-pkcs11/tests/hash_test.c
f79ca9
@@ -84,7 +84,7 @@ typedef struct hash_testcase {
57726f
 
57726f
 typedef struct hash_test_key {
57726f
 	const char *key;
57726f
-	const int len;
57726f
+	const unsigned len;
57726f
 } hash_test_key_t;
57726f
 
57726f
 /* non-hmac tests */
f79ca9
@@ -955,8 +955,11 @@ isc_hmacsha1_test(void **state) {
57726f
 	hash_test_key_t *test_key = test_keys;
57726f
 
57726f
 	while (testcase->input != NULL && testcase->result != NULL) {
57726f
+		int len = ISC_MAX(test_key->len, ISC_SHA1_DIGESTLENGTH);
57726f
+
57726f
+		memset(buffer, 0, ISC_SHA1_DIGESTLENGTH);
57726f
 		memmove(buffer, test_key->key, test_key->len);
57726f
-		isc_hmacsha1_init(&hmacsha1, buffer, test_key->len);
57726f
+		isc_hmacsha1_init(&hmacsha1, buffer, len);
57726f
 		isc_hmacsha1_update(&hmacsha1,
57726f
 				    (const uint8_t *) testcase->input,
57726f
 				    testcase->input_len);
f79ca9
@@ -1115,8 +1118,11 @@ isc_hmacsha224_test(void **state) {
57726f
 	hash_test_key_t *test_key = test_keys;
57726f
 
57726f
 	while (testcase->input != NULL && testcase->result != NULL) {
57726f
+		int len = ISC_MAX(test_key->len, ISC_SHA224_DIGESTLENGTH);
57726f
+
57726f
+		memset(buffer, 0, ISC_SHA224_DIGESTLENGTH);
57726f
 		memmove(buffer, test_key->key, test_key->len);
57726f
-		isc_hmacsha224_init(&hmacsha224, buffer, test_key->len);
57726f
+		isc_hmacsha224_init(&hmacsha224, buffer, len);
57726f
 		isc_hmacsha224_update(&hmacsha224,
57726f
 				      (const uint8_t *) testcase->input,
57726f
 				      testcase->input_len);
f79ca9
@@ -1276,8 +1282,11 @@ isc_hmacsha256_test(void **state) {
57726f
 	hash_test_key_t *test_key = test_keys;
57726f
 
57726f
 	while (testcase->input != NULL && testcase->result != NULL) {
57726f
+		int len = ISC_MAX(test_key->len, ISC_SHA256_DIGESTLENGTH);
57726f
+
57726f
+		memset(buffer, 0, ISC_SHA256_DIGESTLENGTH);
57726f
 		memmove(buffer, test_key->key, test_key->len);
57726f
-		isc_hmacsha256_init(&hmacsha256, buffer, test_key->len);
57726f
+		isc_hmacsha256_init(&hmacsha256, buffer, len);
57726f
 		isc_hmacsha256_update(&hmacsha256,
57726f
 				      (const uint8_t *) testcase->input,
57726f
 				      testcase->input_len);
f79ca9
@@ -1443,8 +1452,11 @@ isc_hmacsha384_test(void **state) {
57726f
 	hash_test_key_t *test_key = test_keys;
57726f
 
57726f
 	while (testcase->input != NULL && testcase->result != NULL) {
57726f
+		int len = ISC_MAX(test_key->len, ISC_SHA384_DIGESTLENGTH);
57726f
+
57726f
+		memset(buffer, 0, ISC_SHA384_DIGESTLENGTH);
57726f
 		memmove(buffer, test_key->key, test_key->len);
57726f
-		isc_hmacsha384_init(&hmacsha384, buffer, test_key->len);
57726f
+		isc_hmacsha384_init(&hmacsha384, buffer, len);
57726f
 		isc_hmacsha384_update(&hmacsha384,
57726f
 				      (const uint8_t *) testcase->input,
57726f
 				      testcase->input_len);
f79ca9
@@ -1610,8 +1622,11 @@ isc_hmacsha512_test(void **state) {
57726f
 	hash_test_key_t *test_key = test_keys;
57726f
 
57726f
 	while (testcase->input != NULL && testcase->result != NULL) {
57726f
+		int len = ISC_MAX(test_key->len, ISC_SHA512_DIGESTLENGTH);
57726f
+
57726f
+		memset(buffer, 0, ISC_SHA512_DIGESTLENGTH);
57726f
 		memmove(buffer, test_key->key, test_key->len);
57726f
-		isc_hmacsha512_init(&hmacsha512, buffer, test_key->len);
57726f
+		isc_hmacsha512_init(&hmacsha512, buffer, len);
57726f
 		isc_hmacsha512_update(&hmacsha512,
57726f
 				      (const uint8_t *) testcase->input,
57726f
 				      testcase->input_len);
f79ca9
@@ -1754,8 +1769,11 @@ isc_hmacmd5_test(void **state) {
57726f
 	hash_test_key_t *test_key = test_keys;
57726f
 
57726f
 	while (testcase->input != NULL && testcase->result != NULL) {
57726f
+		int len = ISC_MAX(test_key->len, ISC_MD5_DIGESTLENGTH);
57726f
+
57726f
+		memset(buffer, 0, ISC_MD5_DIGESTLENGTH);
57726f
 		memmove(buffer, test_key->key, test_key->len);
57726f
-		isc_hmacmd5_init(&hmacmd5, buffer, test_key->len);
57726f
+		isc_hmacmd5_init(&hmacmd5, buffer, len);
57726f
 		isc_hmacmd5_update(&hmacmd5,
57726f
 				   (const uint8_t *) testcase->input,
57726f
 				   testcase->input_len);
57726f
-- 
f79ca9
2.21.1
57726f