diff --git a/src/crypto/crypto_openssl.c b/src/crypto/crypto_openssl.c index 3703b9360..bf38e11c1 100644 --- a/src/crypto/crypto_openssl.c +++ b/src/crypto/crypto_openssl.c @@ -297,6 +297,8 @@ void aes_decrypt_deinit(void *ctx) } +#ifndef CONFIG_FIPS + int aes_wrap(const u8 *kek, size_t kek_len, int n, const u8 *plain, u8 *cipher) { AES_KEY actx; @@ -323,6 +325,8 @@ int aes_unwrap(const u8 *kek, size_t kek_len, int n, const u8 *cipher, return res <= 0 ? -1 : 0; } +#endif /* CONFIG_FIPS */ + int aes_128_cbc_encrypt(const u8 *key, const u8 *iv, u8 *data, size_t data_len) { diff --git a/wpa_supplicant/Android.mk b/wpa_supplicant/Android.mk index 92b175f6e..5070d1469 100644 --- a/wpa_supplicant/Android.mk +++ b/wpa_supplicant/Android.mk @@ -1136,6 +1136,15 @@ AESOBJS += src/crypto/aes-internal.c src/crypto/aes-internal-dec.c endif ifneq ($(CONFIG_TLS), openssl) +NEED_INTERNAL_AES_WRAP=y +endif +ifdef CONFIG_FIPS +# Have to use internal AES key wrap routines to use OpenSSL EVP since the +# OpenSSL AES_wrap_key()/AES_unwrap_key() API is not available in FIPS mode. +NEED_INTERNAL_AES_WRAP=y +endif + +ifdef NEED_INTERNAL_AES_WRAP AESOBJS += src/crypto/aes-unwrap.c endif ifdef NEED_AES_EAX @@ -1158,7 +1167,7 @@ endif endif ifdef NEED_AES_WRAP NEED_AES_ENC=y -ifneq ($(CONFIG_TLS), openssl) +ifdef NEED_INTERNAL_AES_WRAP AESOBJS += src/crypto/aes-wrap.c endif endif diff --git a/wpa_supplicant/Makefile b/wpa_supplicant/Makefile index a006256f3..8b2d6799f 100644 --- a/wpa_supplicant/Makefile +++ b/wpa_supplicant/Makefile @@ -1148,6 +1148,15 @@ AESOBJS += ../src/crypto/aes-internal.o ../src/crypto/aes-internal-dec.o endif ifneq ($(CONFIG_TLS), openssl) +NEED_INTERNAL_AES_WRAP=y +endif +ifdef CONFIG_FIPS +# Have to use internal AES key wrap routines to use OpenSSL EVP since the +# OpenSSL AES_wrap_key()/AES_unwrap_key() API is not available in FIPS mode. +NEED_INTERNAL_AES_WRAP=y +endif + +ifdef NEED_INTERNAL_AES_WRAP AESOBJS += ../src/crypto/aes-unwrap.o endif ifdef NEED_AES_EAX @@ -1173,7 +1182,7 @@ AESOBJS += ../src/crypto/aes-siv.o endif ifdef NEED_AES_WRAP NEED_AES_ENC=y -ifneq ($(CONFIG_TLS), openssl) +ifdef NEED_INTERNAL_AES_WRAP AESOBJS += ../src/crypto/aes-wrap.o endif endif