Skip to content

Commit 2c28f66

Browse files
committed
add testing
1 parent 1c59926 commit 2c28f66

4 files changed

Lines changed: 35 additions & 5 deletions

File tree

.github/workflows/os-check.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,9 @@ jobs:
8181
'--enable-cryptocb --enable-keygen --enable-cryptocbutils=setkey',
8282
'--enable-cryptocb --enable-keygen --enable-cryptocbutils CPPFLAGS="-DWOLF_CRYPTO_CB_AES_SETKEY"',
8383
'--enable-cryptocb --enable-keygen --enable-aesgcm --enable-cryptocbutils=setkey,free CPPFLAGS="-DWOLF_CRYPTO_CB_AES_SETKEY"',
84+
'--enable-cryptocb --enable-keygen --enable-cryptocbutils=export',
85+
'--enable-cryptocb --enable-keygen CPPFLAGS="-DWOLF_CRYPTO_CB_EXPORT_KEY"',
86+
'--enable-cryptocb --enable-keygen --enable-aesgcm --enable-cryptocbutils=setkey,free,export CPPFLAGS="-DWOLF_CRYPTO_CB_AES_SETKEY"',
8487
'--disable-examples CPPFLAGS=-DWOLFSSL_NO_MALLOC',
8588
'CPPFLAGS=-DNO_WOLFSSL_CLIENT',
8689
'CPPFLAGS=-DNO_WOLFSSL_SERVER',

configure.ac

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9834,7 +9834,7 @@ fi
98349834
98359835
# Crypto Callbacks Utils (Copy/Free/etc)
98369836
AC_ARG_ENABLE([cryptocbutils],
9837-
[AS_HELP_STRING([--enable-cryptocbutils@<:@=copy,free,setkey,...@:>@],
9837+
[AS_HELP_STRING([--enable-cryptocbutils@<:@=copy,free,setkey,export,...@:>@],
98389838
[Enable crypto callback utilities (default: all)])],
98399839
[ ENABLED_CRYPTOCB_UTILS=$enableval ],
98409840
[ ENABLED_CRYPTOCB_UTILS=no ]
@@ -9847,8 +9847,7 @@ if test "$ENABLED_CRYPTOCB_UTILS" != "no"; then
98479847
98489848
if test "$ENABLED_CRYPTOCB_UTILS" = "yes"; then
98499849
# Enable all utilities
9850-
AM_CFLAGS="$AM_CFLAGS -DWOLF_CRYPTO_CB_COPY -DWOLF_CRYPTO_CB_FREE -DWOLF_CRYPTO_CB_SETKEY"
9851-
# Future utilities go here when added
9850+
AM_CFLAGS="$AM_CFLAGS -DWOLF_CRYPTO_CB_COPY -DWOLF_CRYPTO_CB_FREE -DWOLF_CRYPTO_CB_SETKEY -DWOLF_CRYPTO_CB_EXPORT_KEY"
98529851
else
98539852
# Parse comma-separated list
98549853
OIFS="$IFS"
@@ -9864,8 +9863,11 @@ if test "$ENABLED_CRYPTOCB_UTILS" != "no"; then
98649863
setkey)
98659864
AM_CFLAGS="$AM_CFLAGS -DWOLF_CRYPTO_CB_SETKEY"
98669865
;;
9866+
export)
9867+
AM_CFLAGS="$AM_CFLAGS -DWOLF_CRYPTO_CB_EXPORT_KEY"
9868+
;;
98679869
*)
9868-
AC_MSG_ERROR([Unknown cryptocbutils option: $util. Valid options: copy, free, setkey])
9870+
AC_MSG_ERROR([Unknown cryptocbutils option: $util. Valid options: copy, free, setkey, export])
98699871
;;
98709872
esac
98719873
done

wolfssl/wolfcrypt/cryptocb.h

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,14 @@ typedef struct wc_CryptoInfo {
230230
word32 pubKeySz;
231231
} ecc_check;
232232
#endif
233+
struct {
234+
const ecc_key* key;
235+
int* keySize;
236+
} ecc_get_size;
237+
struct {
238+
const ecc_key* key;
239+
int* sigSize;
240+
} ecc_get_sig_size;
233241
#endif /* HAVE_ECC */
234242
#ifdef HAVE_CURVE25519
235243
struct {
@@ -515,6 +523,13 @@ typedef struct wc_CryptoInfo {
515523
int flags; /* AES: direction (AES_ENCRYPTION/DECRYPTION) */
516524
} setkey;
517525
#endif /* WOLF_CRYPTO_CB_SETKEY */
526+
#ifdef WOLF_CRYPTO_CB_EXPORT_KEY
527+
struct { /* uses wc_AlgoType=WC_ALGO_TYPE_EXPORT_KEY */
528+
int type; /* enum wc_PkType (WC_PK_TYPE_RSA, etc.) */
529+
void* obj; /* Hardware key (has devCtx/id[]) */
530+
void* out; /* Software key to fill (same type as obj) */
531+
} export_key;
532+
#endif /* WOLF_CRYPTO_CB_EXPORT_KEY */
518533
#if defined(HAVE_HKDF) || defined(HAVE_CMAC_KDF)
519534
struct {
520535
int type; /* enum wc_KdfType */
@@ -615,6 +630,9 @@ WOLFSSL_LOCAL int wc_CryptoCb_EccVerify(const byte* sig, word32 siglen,
615630

616631
WOLFSSL_LOCAL int wc_CryptoCb_EccCheckPrivKey(ecc_key* key, const byte* pubKey,
617632
word32 pubKeySz);
633+
634+
WOLFSSL_LOCAL int wc_CryptoCb_EccGetSize(const ecc_key* key, int* keySize);
635+
WOLFSSL_LOCAL int wc_CryptoCb_EccGetSigSize(const ecc_key* key, int* sigSize);
618636
#endif /* HAVE_ECC */
619637

620638
#ifdef HAVE_CURVE25519
@@ -801,6 +819,10 @@ WOLFSSL_LOCAL int wc_CryptoCb_SetKey(int devId, int type, void* obj,
801819
void* aux, word32 auxSz,
802820
int flags);
803821
#endif /* WOLF_CRYPTO_CB_SETKEY */
822+
#ifdef WOLF_CRYPTO_CB_EXPORT_KEY
823+
WOLFSSL_LOCAL int wc_CryptoCb_ExportKey(int devId, int type,
824+
void* obj, void* out);
825+
#endif /* WOLF_CRYPTO_CB_EXPORT_KEY */
804826

805827
#endif /* WOLF_CRYPTO_CB */
806828

wolfssl/wolfcrypt/types.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1408,7 +1408,8 @@ enum wc_AlgoType {
14081408
WC_ALGO_TYPE_COPY = 10,
14091409
WC_ALGO_TYPE_FREE = 11,
14101410
WC_ALGO_TYPE_SETKEY = 12,
1411-
WC_ALGO_TYPE_MAX = WC_ALGO_TYPE_SETKEY
1411+
WC_ALGO_TYPE_EXPORT_KEY = 13,
1412+
WC_ALGO_TYPE_MAX = WC_ALGO_TYPE_EXPORT_KEY
14121413
};
14131414

14141415
/* KDF types */
@@ -1578,6 +1579,8 @@ enum wc_PkType {
15781579
WC_PK_TYPE_RSA_PKCS = 25,
15791580
WC_PK_TYPE_RSA_PSS = 26,
15801581
WC_PK_TYPE_RSA_OAEP = 27,
1582+
WC_PK_TYPE_EC_GET_SIZE = 28,
1583+
WC_PK_TYPE_EC_GET_SIG_SIZE = 29,
15811584
WC_PK_TYPE_MAX = _WC_PK_TYPE_MAX
15821585
};
15831586

0 commit comments

Comments
 (0)