فهرست منبع

wpa_supplicant: Allow building with mbedTLS integration but no hardware MPI

Also disable the relevant function in bignum.h based on config, so fails at
compile not link time.

Closes https://github.com/espressif/esp-idf/issues/5321
Angus Gratton 5 سال پیش
والد
کامیت
50319bb03c
2فایلهای تغییر یافته به همراه7 افزوده شده و 5 حذف شده
  1. 6 4
      components/mbedtls/port/include/mbedtls/bignum.h
  2. 1 1
      components/wpa_supplicant/src/crypto/crypto_mbedtls.c

+ 6 - 4
components/mbedtls/port/include/mbedtls/bignum.h

@@ -1,4 +1,4 @@
-// Copyright 2015-2016 Espressif Systems (Shanghai) PTE LTD
+// Copyright 2015-2020 Espressif Systems (Shanghai) PTE LTD
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
@@ -11,10 +11,10 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-#ifndef __ESP_MBEDTLS_BIGNUM_H__
-#define __ESP_MBEDTLS_BIGNUM_H__
+#pragma once
 
 #include_next "mbedtls/bignum.h"
+#include "sdkconfig.h"
 
 /**
  * This is a wrapper for the main mbedtls/bignum.h. This wrapper
@@ -58,6 +58,8 @@ void esp_mpi_acquire_hardware(void);
  */
 void esp_mpi_release_hardware(void);
 
+#if CONFIG_MBEDTLS_HARDWARE_MPI
+
 /* @brief MPI modular mupltiplication function
  *
  * Calculates Z = (X * Y) mod M using MPI hardware acceleration.
@@ -75,4 +77,4 @@ void esp_mpi_release_hardware(void);
  */
 int esp_mpi_mul_mpi_mod(mbedtls_mpi *Z, const mbedtls_mpi *X, const mbedtls_mpi *Y, const mbedtls_mpi *M);
 
-#endif
+#endif // CONFIG_MBEDTLS_HARDWARE_MPI

+ 1 - 1
components/wpa_supplicant/src/crypto/crypto_mbedtls.c

@@ -160,7 +160,7 @@ int crypto_bignum_mulmod(const struct crypto_bignum *a,
                          struct crypto_bignum *d)
 {
     int res;
-#if ALLOW_EVEN_MOD // Must enable this macro if c is even.
+#if ALLOW_EVEN_MOD || !CONFIG_MBEDTLS_HARDWARE_MPI // Must enable ALLOW_EVEN_MOD if c is even
     mbedtls_mpi temp;
     mbedtls_mpi_init(&temp);