forked from pool/libica
fe79785559
Bug fixes for bsc#1175277, bsc#1175356, and bsc#1175357 OBS-URL: https://build.opensuse.org/request/show/834746 OBS-URL: https://build.opensuse.org/package/show/devel:openSUSE:Factory/libica?expand=0&rev=44
45 lines
1.3 KiB
Diff
45 lines
1.3 KiB
Diff
From 54c1a5341c9a5cb5513e52548ab0490f8dafbff6 Mon Sep 17 00:00:00 2001
|
|
From: Joerg Schmidbauer <jschmidb@de.ibm.com>
|
|
Date: Thu, 27 Aug 2020 17:08:29 +0200
|
|
Subject: [PATCH] FIPS: skip SHA3 tests if running on hardware without SHA3
|
|
|
|
Signed-off-by: Joerg Schmidbauer <jschmidb@de.ibm.com>
|
|
---
|
|
src/fips.c | 15 +++++++++++++++
|
|
1 file changed, 15 insertions(+)
|
|
|
|
diff --git a/src/fips.c b/src/fips.c
|
|
index 13a550b..facffee 100644
|
|
--- a/src/fips.c
|
|
+++ b/src/fips.c
|
|
@@ -95,11 +95,26 @@ SHA_KAT(384, 512);
|
|
SHA_KAT(512, 512);
|
|
#undef SHA_KAT
|
|
|
|
+static inline int sha3_available(void)
|
|
+{
|
|
+ sha3_224_context_t sha3_224_context;
|
|
+ unsigned char output_hash[SHA3_224_HASH_LENGTH];
|
|
+ unsigned char test_data[] = { 0x61,0x62,0x63 };
|
|
+ int rc = 0;
|
|
+
|
|
+ rc = ica_sha3_224(SHA_MSG_PART_ONLY, sizeof(test_data), test_data,
|
|
+ &sha3_224_context, output_hash);
|
|
+
|
|
+ return (rc == ENODEV ? 0 : 1);
|
|
+}
|
|
+
|
|
#define SHA3_KAT(_sha_, _ctx_) \
|
|
static int sha3_##_sha_##_kat(void) { \
|
|
sha3_##_ctx_##_context_t ctx; \
|
|
size_t i; \
|
|
unsigned char out[SHA3_##_sha_##_HASH_LENGTH]; \
|
|
+ if (!sha3_available()) \
|
|
+ return 0; \
|
|
for (i = 0; i < SHA3_##_sha_##_TV_LEN; i++) { \
|
|
if (ica_sha3_##_sha_(SHA_MSG_PART_ONLY, \
|
|
SHA3_##_sha_##_TV[i].msg_len, SHA3_##_sha_##_TV[i].msg, \
|
|
--
|
|
2.26.2
|
|
|