Skip to content

Commit 543e5ab

Browse files
committed
TA100: follow-up changes (squash after 4e64cb5)
1 parent 2a703c5 commit 543e5ab

9 files changed

Lines changed: 343 additions & 128 deletions

File tree

configure.ac

Lines changed: 110 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3108,45 +3108,127 @@ then
31083108
esac
31093109
done
31103110
fi
3111+
3112+
31113113
# Microchip/Atmel CryptoAuthLib
31123114
ENABLED_CRYPTOAUTHLIB="no"
3113-
trylibatcadir=""
31143115
AC_ARG_WITH([cryptoauthlib],
3115-
[AS_HELP_STRING([--with-cryptoauthlib=PATH],[PATH to CryptoAuthLib install (default /usr)])],
3116-
[
3117-
AC_MSG_CHECKING([for cryptoauthlib])
3118-
LIBS="$LIBS -lcryptoauth -lwolfssl -lpthread -lrt"
3119-
3120-
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <cryptoauthlib.h>]], [[ atcab_init(0); ]])],[ libatca_linked=yes ],[ libatca_linked=no ])
3116+
[AS_HELP_STRING([--with-cryptoauthlib=PATH],
3117+
[PATH to CryptoAuthLib install (default: system paths)])],
3118+
[with_cryptoauthlib=$withval],
3119+
[with_cryptoauthlib=no])
3120+
3121+
AS_IF([test "x$with_cryptoauthlib" != "xno"], [
3122+
AC_MSG_CHECKING([for CryptoAuthLib])
3123+
3124+
libdir=""
3125+
incdir=""
3126+
cryptoauthlib_found="no"
3127+
3128+
saved_LIBS="$LIBS"
3129+
saved_LDFLAGS="$LDFLAGS"
3130+
saved_CPPFLAGS="$CPPFLAGS"
3131+
saved_CFLAGS="$CFLAGS"
3132+
3133+
# Method 1: Try pkg-config first (most reliable)
3134+
PKG_CHECK_MODULES([CRYPTOAUTHLIB], [cryptoauthlib], [
3135+
CPPFLAGS="$CRYPTOAUTHLIB_CFLAGS $CPPFLAGS"
3136+
CFLAGS="$CRYPTOAUTHLIB_CFLAGS $CFLAGS"
3137+
LDFLAGS="$CRYPTOAUTHLIB_LIBS $LDFLAGS"
3138+
LIBS="$CRYPTOAUTHLIB_LIBS $LIBS"
3139+
cryptoauthlib_found="pkg-config"
3140+
], [
3141+
# Method 2: Manual search
3142+
AS_IF([test "x$with_cryptoauthlib" = "xyes"], [
3143+
search_dirs="/usr /usr/local"
3144+
], [
3145+
search_dirs="$with_cryptoauthlib"
3146+
])
31213147
3122-
if test "x$libatca_linked" = "xno" ; then
3123-
if test "x$withval" != "xno" ; then
3124-
trylibatcadir=$withval
3125-
fi
3126-
if test "x$withval" = "xyes" ; then
3127-
trylibatcadir="/usr"
3148+
for trylibatcadir in $search_dirs; do
3149+
for try_libdir in "$trylibatcadir/lib" "$trylibatcadir/lib64"; do
3150+
if test -f "$try_libdir/libcryptoauth.so" || test -f "$try_libdir/libcryptoauth.a"; then
3151+
libdir="$try_libdir"
3152+
break
3153+
fi
3154+
done
3155+
3156+
if test -z "$libdir"; then
3157+
if test -x /usr/bin/dpkg-architecture; then
3158+
DEB_HOST_MULTIARCH=`dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null`
3159+
if test -n "$DEB_HOST_MULTIARCH"; then
3160+
try_libdir="$trylibatcadir/lib/$DEB_HOST_MULTIARCH"
3161+
if test -f "$try_libdir/libcryptoauth.so" || test -f "$try_libdir/libcryptoauth.a"; then
3162+
libdir="$try_libdir"
3163+
fi
3164+
fi
3165+
fi
31283166
fi
31293167
3130-
if test "$host_cpu" = "aarch64" ; then
3131-
LIB_SUFFIX="/aarch64-linux-gnu"
3132-
else
3133-
LIB_SUFFIX=""
3134-
fi
3168+
for try_incdir in "$trylibatcadir/include/cryptoauthlib" "$trylibatcadir/include"; do
3169+
if test -f "$try_incdir/cryptoauthlib.h"; then
3170+
incdir="$try_incdir"
3171+
break
3172+
fi
3173+
done
31353174
3136-
LDFLAGS="$LDFLAGS -L$trylibatcadir/lib$LIB_SUFFIX"
3137-
CPPFLAGS="$CPPFLAGS -I$trylibatcadir/include/cryptoauthlib"
3138-
AM_LDFLAGS="$AM_LDFLAGS -L$trylibatcadir/lib$LIB_SUFFIX"
3139-
AM_CFLAGS="$AM_CFLAGS -I$trylibatcadir/include/cryptoauthlib"
3175+
if test -n "$libdir" && test -n "$incdir"; then
3176+
break
3177+
fi
3178+
libdir=""
3179+
incdir=""
3180+
done
31403181
3141-
AC_MSG_RESULT([yes])
3142-
else
3143-
AC_MSG_RESULT([yes])
3182+
if test -n "$libdir" && test -n "$incdir"; then
3183+
CPPFLAGS="-I$incdir $CPPFLAGS"
3184+
CFLAGS="-I$incdir $CFLAGS"
3185+
LDFLAGS="-L$libdir $LDFLAGS"
3186+
LIBS="-lcryptoauth $LIBS"
3187+
cryptoauthlib_found="$libdir"
31443188
fi
3189+
])
31453190
3146-
ENABLED_CRYPTOAUTHLIB="yes"
3147-
]
3148-
)
3191+
AS_IF([test "x$cryptoauthlib_found" != "xno"], [
3192+
wolfssl_include=""
3193+
AS_IF([test -f "${srcdir}/wolfssl/wolfcrypt/types.h"], [
3194+
wolfssl_include="-I${srcdir}"
3195+
], [test -f "${srcdir}/wolfssl.h"], [
3196+
wolfssl_include="-I${srcdir}"
3197+
])
3198+
3199+
test_CPPFLAGS="$wolfssl_include $CPPFLAGS"
3200+
test_CFLAGS="$wolfssl_include $CFLAGS"
3201+
3202+
saved_test_CPPFLAGS="$CPPFLAGS"
3203+
saved_test_CFLAGS="$CFLAGS"
3204+
CPPFLAGS="$test_CPPFLAGS"
3205+
CFLAGS="$test_CFLAGS"
3206+
3207+
AC_LINK_IFELSE([AC_LANG_PROGRAM(
3208+
[[#include <cryptoauthlib.h>]],
3209+
[[atcab_init(0); return 0;]])],
3210+
[
3211+
ENABLED_CRYPTOAUTHLIB="yes"
3212+
AC_MSG_RESULT([yes ($cryptoauthlib_found)])
3213+
AC_DEFINE([HAVE_CRYPTOAUTHLIB], [1], [CryptoAuthLib support])
3214+
CPPFLAGS="$saved_test_CPPFLAGS"
3215+
CFLAGS="$saved_test_CFLAGS"
3216+
],
3217+
[
3218+
LIBS="$saved_LIBS"
3219+
LDFLAGS="$saved_LDFLAGS"
3220+
CPPFLAGS="$saved_CPPFLAGS"
3221+
CFLAGS="$saved_CFLAGS"
3222+
AC_MSG_RESULT([no - compilation failed])
3223+
AC_MSG_ERROR([CryptoAuthLib found but test compilation failed. Check config.log for details.])
3224+
])
3225+
], [
3226+
AC_MSG_RESULT([no - library not found])
3227+
AC_MSG_ERROR([CryptoAuthLib not found. Install it or specify path with --with-cryptoauthlib=/path])
3228+
])
3229+
])
31493230

3231+
AM_CONDITIONAL([BUILD_CRYPTOAUTHLIB], [test "x$ENABLED_CRYPTOAUTHLIB" = "xyes"])
31503232

31513233
# TropicSquare TROPIC01
31523234
# Example: "./configure --with-tropic01=/home/pi/libtropic"

tests/api/test_ossl_ec.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,6 +429,7 @@ int test_wolfSSL_EC_POINT(void)
429429
X, Y, ctx), 0);
430430

431431
#if !defined(WOLFSSL_ATECC508A) && !defined(WOLFSSL_ATECC608A) && \
432+
!defined(WOLFSSL_MICROCHIP_TA100) && \
432433
!defined(HAVE_SELFTEST) && !defined(WOLFSSL_SP_MATH) && \
433434
!defined(WOLF_CRYPTO_CB_ONLY_ECC)
434435
ExpectIntEQ(EC_POINT_add(NULL, NULL, NULL, NULL, ctx), 0);
@@ -521,6 +522,7 @@ int test_wolfSSL_EC_POINT(void)
521522
ExpectIntEQ(EC_POINT_invert(group, new_point, ctx), 1);
522523

523524
#if !defined(WOLFSSL_ATECC508A) && !defined(WOLFSSL_ATECC608A) && \
525+
!defined(WOLFSSL_MICROCHIP_TA100) && \
524526
!defined(HAVE_SELFTEST) && !defined(WOLFSSL_SP_MATH) && \
525527
!defined(WOLF_CRYPTO_CB_ONLY_ECC)
526528
{
@@ -802,6 +804,7 @@ int test_wolfSSL_SPAKE(void)
802804

803805
#if defined(OPENSSL_EXTRA) && defined(HAVE_ECC) && !defined(WOLFSSL_ATECC508A) \
804806
&& !defined(WOLFSSL_ATECC608A) && !defined(HAVE_SELFTEST) && \
807+
!defined(WOLFSSL_MICROCHIP_TA100) && \
805808
!defined(WOLFSSL_SP_MATH) && !defined(WOLF_CRYPTO_CB_ONLY_ECC)
806809
BIGNUM* x = NULL; /* kdc priv */
807810
BIGNUM* y = NULL; /* client priv */

wolfcrypt/benchmark/benchmark.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2050,6 +2050,9 @@ static const char* bench_result_words2[][6] = {
20502050
};
20512051
#endif
20522052
#endif
2053+
#if defined(WOLFSSL_MICROCHIP_TA100)
2054+
#include <wolfssl/wolfcrypt/port/atmel/atmel.h>
2055+
#endif
20532056

20542057
#ifdef WOLFSSL_CAAM
20552058
#include <wolfssl/wolfcrypt/port/caam/wolfcaam.h>
@@ -10145,7 +10148,7 @@ void bench_rsa(int useDeviceID)
1014510148
/* Note: To benchmark public only define WOLFSSL_PUBLIC_MP */
1014610149
rsaKeySz = 0;
1014710150
#endif
10148-
#if defined(WOLFSSL_MICROCHIP_TA100)
10151+
#if defined(WOLFSSL_KEY_GEN) && defined(WOLFSSL_MICROCHIP_TA100)
1014910152
/* Create new keys since you cannot import a private key to TA100 */
1015010153
ret = wc_MakeRsaKey(rsaKey[i], rsaKeySz, WC_RSA_EXPONENT, &gRng);
1015110154
if (ret) {

wolfcrypt/src/ecc.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1940,7 +1940,6 @@ static void alt_fp_init(mp_int* a)
19401940

19411941

19421942
#if !defined(WOLFSSL_ATECC508A) && !defined(WOLFSSL_ATECC608A) && \
1943-
!defined(WOLFSSL_MICROCHIP_TA100) && \
19441943
!defined(WOLFSSL_CRYPTOCELL) && \
19451944
(!defined(WOLF_CRYPTO_CB_ONLY_ECC) || defined(WOLFSSL_QNX_CAAM) || \
19461945
defined(WOLFSSL_IMXRT1170_CAAM))
@@ -8011,11 +8010,9 @@ int wc_ecc_free(ecc_key* key)
80118010
}
80128011

80138012
#if !defined(WOLFSSL_ATECC508A) && !defined(WOLFSSL_ATECC608A) && \
8014-
!defined(WOLFSSL_MICROCHIP_TA100) && \
80158013
!defined(WOLFSSL_CRYPTOCELL) && !defined(WOLFSSL_SP_MATH) && \
80168014
(!defined(WOLF_CRYPTO_CB_ONLY_ECC) || defined(WOLFSSL_QNX_CAAM) || \
80178015
defined(WOLFSSL_IMXRT1170_CAAM))
8018-
80198016
/* Handles add failure cases:
80208017
*
80218018
* Before add:

wolfcrypt/src/port/atmel/README.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,21 @@ ATECC508A HW accelerated implementation:
9898

9999
### Microchip Trust Anchor TA100 ECC/RSA
100100

101+
rm -rf build-shared
102+
cmake -S . -B build-shared \
103+
-DCMAKE_BUILD_TYPE=Debug \
104+
-DATCA_BUILD_SHARED_LIBS=ON \
105+
-DATCA_HAL_SPI=ON \
106+
-DATCA_PRINTF=ON \
107+
-DATCA_TA100_SUPPORT=ON \
108+
-DATCA_TA100_AES_AUTH_SUPPORT=ON \
109+
-DATCA_TA100_FCE_SUPPORT=ON \
110+
-DATCA_WOLFSSL=ON \
111+
-DBUILD_TESTS=ON
112+
cmake --build build-shared -j
113+
sudo cmake --install build-shared
114+
sudo ldconfig
115+
101116
`./configure CFLAGS="-DWOLFSSL_CMAC -DHAVE_PK_CALLBACKS -DWOLFSSL_ATECC508A_NOIDLE -DECC_USER_CURVES -DWOLFSSL_ATECC_NO_ECDH_ENC -DWOLFSSL_ATECC_DEBUG" --enable-cmac --enable-microchip=100 --with-cryptoauthlib`
102117

103118
Supported Features:

0 commit comments

Comments
 (0)