Skip to content

Commit 1a14440

Browse files
tmaeldanielinux
authored andcommitted
TA100: follow-up changes (squash after 4e64cb5)
1 parent 41b19eb commit 1a14440

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
@@ -3013,45 +3013,127 @@ then
30133013
esac
30143014
done
30153015
fi
3016+
3017+
30163018
# Microchip/Atmel CryptoAuthLib
30173019
ENABLED_CRYPTOAUTHLIB="no"
3018-
trylibatcadir=""
30193020
AC_ARG_WITH([cryptoauthlib],
3020-
[AS_HELP_STRING([--with-cryptoauthlib=PATH],[PATH to CryptoAuthLib install (default /usr)])],
3021-
[
3022-
AC_MSG_CHECKING([for cryptoauthlib])
3023-
LIBS="$LIBS -lcryptoauth -lwolfssl -lpthread -lrt"
3024-
3025-
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <cryptoauthlib.h>]], [[ atcab_init(0); ]])],[ libatca_linked=yes ],[ libatca_linked=no ])
3021+
[AS_HELP_STRING([--with-cryptoauthlib=PATH],
3022+
[PATH to CryptoAuthLib install (default: system paths)])],
3023+
[with_cryptoauthlib=$withval],
3024+
[with_cryptoauthlib=no])
3025+
3026+
AS_IF([test "x$with_cryptoauthlib" != "xno"], [
3027+
AC_MSG_CHECKING([for CryptoAuthLib])
3028+
3029+
libdir=""
3030+
incdir=""
3031+
cryptoauthlib_found="no"
3032+
3033+
saved_LIBS="$LIBS"
3034+
saved_LDFLAGS="$LDFLAGS"
3035+
saved_CPPFLAGS="$CPPFLAGS"
3036+
saved_CFLAGS="$CFLAGS"
3037+
3038+
# Method 1: Try pkg-config first (most reliable)
3039+
PKG_CHECK_MODULES([CRYPTOAUTHLIB], [cryptoauthlib], [
3040+
CPPFLAGS="$CRYPTOAUTHLIB_CFLAGS $CPPFLAGS"
3041+
CFLAGS="$CRYPTOAUTHLIB_CFLAGS $CFLAGS"
3042+
LDFLAGS="$CRYPTOAUTHLIB_LIBS $LDFLAGS"
3043+
LIBS="$CRYPTOAUTHLIB_LIBS $LIBS"
3044+
cryptoauthlib_found="pkg-config"
3045+
], [
3046+
# Method 2: Manual search
3047+
AS_IF([test "x$with_cryptoauthlib" = "xyes"], [
3048+
search_dirs="/usr /usr/local"
3049+
], [
3050+
search_dirs="$with_cryptoauthlib"
3051+
])
30263052
3027-
if test "x$libatca_linked" = "xno" ; then
3028-
if test "x$withval" != "xno" ; then
3029-
trylibatcadir=$withval
3030-
fi
3031-
if test "x$withval" = "xyes" ; then
3032-
trylibatcadir="/usr"
3053+
for trylibatcadir in $search_dirs; do
3054+
for try_libdir in "$trylibatcadir/lib" "$trylibatcadir/lib64"; do
3055+
if test -f "$try_libdir/libcryptoauth.so" || test -f "$try_libdir/libcryptoauth.a"; then
3056+
libdir="$try_libdir"
3057+
break
3058+
fi
3059+
done
3060+
3061+
if test -z "$libdir"; then
3062+
if test -x /usr/bin/dpkg-architecture; then
3063+
DEB_HOST_MULTIARCH=`dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null`
3064+
if test -n "$DEB_HOST_MULTIARCH"; then
3065+
try_libdir="$trylibatcadir/lib/$DEB_HOST_MULTIARCH"
3066+
if test -f "$try_libdir/libcryptoauth.so" || test -f "$try_libdir/libcryptoauth.a"; then
3067+
libdir="$try_libdir"
3068+
fi
3069+
fi
3070+
fi
30333071
fi
30343072
3035-
if test "$host_cpu" = "aarch64" ; then
3036-
LIB_SUFFIX="/aarch64-linux-gnu"
3037-
else
3038-
LIB_SUFFIX=""
3039-
fi
3073+
for try_incdir in "$trylibatcadir/include/cryptoauthlib" "$trylibatcadir/include"; do
3074+
if test -f "$try_incdir/cryptoauthlib.h"; then
3075+
incdir="$try_incdir"
3076+
break
3077+
fi
3078+
done
30403079
3041-
LDFLAGS="$LDFLAGS -L$trylibatcadir/lib$LIB_SUFFIX"
3042-
CPPFLAGS="$CPPFLAGS -I$trylibatcadir/include/cryptoauthlib"
3043-
AM_LDFLAGS="$AM_LDFLAGS -L$trylibatcadir/lib$LIB_SUFFIX"
3044-
AM_CFLAGS="$AM_CFLAGS -I$trylibatcadir/include/cryptoauthlib"
3080+
if test -n "$libdir" && test -n "$incdir"; then
3081+
break
3082+
fi
3083+
libdir=""
3084+
incdir=""
3085+
done
30453086
3046-
AC_MSG_RESULT([yes])
3047-
else
3048-
AC_MSG_RESULT([yes])
3087+
if test -n "$libdir" && test -n "$incdir"; then
3088+
CPPFLAGS="-I$incdir $CPPFLAGS"
3089+
CFLAGS="-I$incdir $CFLAGS"
3090+
LDFLAGS="-L$libdir $LDFLAGS"
3091+
LIBS="-lcryptoauth $LIBS"
3092+
cryptoauthlib_found="$libdir"
30493093
fi
3094+
])
30503095
3051-
ENABLED_CRYPTOAUTHLIB="yes"
3052-
]
3053-
)
3096+
AS_IF([test "x$cryptoauthlib_found" != "xno"], [
3097+
wolfssl_include=""
3098+
AS_IF([test -f "${srcdir}/wolfssl/wolfcrypt/types.h"], [
3099+
wolfssl_include="-I${srcdir}"
3100+
], [test -f "${srcdir}/wolfssl.h"], [
3101+
wolfssl_include="-I${srcdir}"
3102+
])
3103+
3104+
test_CPPFLAGS="$wolfssl_include $CPPFLAGS"
3105+
test_CFLAGS="$wolfssl_include $CFLAGS"
3106+
3107+
saved_test_CPPFLAGS="$CPPFLAGS"
3108+
saved_test_CFLAGS="$CFLAGS"
3109+
CPPFLAGS="$test_CPPFLAGS"
3110+
CFLAGS="$test_CFLAGS"
3111+
3112+
AC_LINK_IFELSE([AC_LANG_PROGRAM(
3113+
[[#include <cryptoauthlib.h>]],
3114+
[[atcab_init(0); return 0;]])],
3115+
[
3116+
ENABLED_CRYPTOAUTHLIB="yes"
3117+
AC_MSG_RESULT([yes ($cryptoauthlib_found)])
3118+
AC_DEFINE([HAVE_CRYPTOAUTHLIB], [1], [CryptoAuthLib support])
3119+
CPPFLAGS="$saved_test_CPPFLAGS"
3120+
CFLAGS="$saved_test_CFLAGS"
3121+
],
3122+
[
3123+
LIBS="$saved_LIBS"
3124+
LDFLAGS="$saved_LDFLAGS"
3125+
CPPFLAGS="$saved_CPPFLAGS"
3126+
CFLAGS="$saved_CFLAGS"
3127+
AC_MSG_RESULT([no - compilation failed])
3128+
AC_MSG_ERROR([CryptoAuthLib found but test compilation failed. Check config.log for details.])
3129+
])
3130+
], [
3131+
AC_MSG_RESULT([no - library not found])
3132+
AC_MSG_ERROR([CryptoAuthLib not found. Install it or specify path with --with-cryptoauthlib=/path])
3133+
])
3134+
])
30543135

3136+
AM_CONDITIONAL([BUILD_CRYPTOAUTHLIB], [test "x$ENABLED_CRYPTOAUTHLIB" = "xyes"])
30553137

30563138
# TropicSquare TROPIC01
30573139
# 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
@@ -428,6 +428,7 @@ int test_wolfSSL_EC_POINT(void)
428428
X, Y, ctx), 0);
429429

430430
#if !defined(WOLFSSL_ATECC508A) && !defined(WOLFSSL_ATECC608A) && \
431+
!defined(WOLFSSL_MICROCHIP_TA100) && \
431432
!defined(HAVE_SELFTEST) && !defined(WOLFSSL_SP_MATH) && \
432433
!defined(WOLF_CRYPTO_CB_ONLY_ECC)
433434
ExpectIntEQ(EC_POINT_add(NULL, NULL, NULL, NULL, ctx), 0);
@@ -514,6 +515,7 @@ int test_wolfSSL_EC_POINT(void)
514515
ExpectIntEQ(EC_POINT_invert(group, new_point, ctx), 1);
515516

516517
#if !defined(WOLFSSL_ATECC508A) && !defined(WOLFSSL_ATECC608A) && \
518+
!defined(WOLFSSL_MICROCHIP_TA100) && \
517519
!defined(HAVE_SELFTEST) && !defined(WOLFSSL_SP_MATH) && \
518520
!defined(WOLF_CRYPTO_CB_ONLY_ECC)
519521
{
@@ -788,6 +790,7 @@ int test_wolfSSL_SPAKE(void)
788790

789791
#if defined(OPENSSL_EXTRA) && defined(HAVE_ECC) && !defined(WOLFSSL_ATECC508A) \
790792
&& !defined(WOLFSSL_ATECC608A) && !defined(HAVE_SELFTEST) && \
793+
!defined(WOLFSSL_MICROCHIP_TA100) && \
791794
!defined(WOLFSSL_SP_MATH) && !defined(WOLF_CRYPTO_CB_ONLY_ECC)
792795
BIGNUM* x = NULL; /* kdc priv */
793796
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>
@@ -10129,7 +10132,7 @@ void bench_rsa(int useDeviceID)
1012910132
/* Note: To benchmark public only define WOLFSSL_PUBLIC_MP */
1013010133
rsaKeySz = 0;
1013110134
#endif
10132-
#if defined(WOLFSSL_MICROCHIP_TA100)
10135+
#if defined(WOLFSSL_KEY_GEN) && defined(WOLFSSL_MICROCHIP_TA100)
1013310136
/* Create new keys since you cannot import a private key to TA100 */
1013410137
ret = wc_MakeRsaKey(rsaKey[i], rsaKeySz, WC_RSA_EXPONENT, &gRng);
1013510138
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))
@@ -8004,11 +8003,9 @@ int wc_ecc_free(ecc_key* key)
80048003
}
80058004

80068005
#if !defined(WOLFSSL_ATECC508A) && !defined(WOLFSSL_ATECC608A) && \
8007-
!defined(WOLFSSL_MICROCHIP_TA100) && \
80088006
!defined(WOLFSSL_CRYPTOCELL) && !defined(WOLFSSL_SP_MATH) && \
80098007
(!defined(WOLF_CRYPTO_CB_ONLY_ECC) || defined(WOLFSSL_QNX_CAAM) || \
80108008
defined(WOLFSSL_IMXRT1170_CAAM))
8011-
80128009
/* Handles add failure cases:
80138010
*
80148011
* 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)