Skip to content

Commit 36d3bb3

Browse files
committed
add testing
1 parent 52223fa commit 36d3bb3

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
@@ -80,6 +80,9 @@ jobs:
8080
'--enable-cryptocb --enable-keygen --enable-cryptocbutils=setkey',
8181
'--enable-cryptocb --enable-keygen --enable-cryptocbutils CPPFLAGS="-DWOLF_CRYPTO_CB_AES_SETKEY"',
8282
'--enable-cryptocb --enable-keygen --enable-aesgcm --enable-cryptocbutils=setkey,free CPPFLAGS="-DWOLF_CRYPTO_CB_AES_SETKEY"',
83+
'--enable-cryptocb --enable-keygen --enable-cryptocbutils=export',
84+
'--enable-cryptocb --enable-keygen CPPFLAGS="-DWOLF_CRYPTO_CB_EXPORT_KEY"',
85+
'--enable-cryptocb --enable-keygen --enable-aesgcm --enable-cryptocbutils=setkey,free,export CPPFLAGS="-DWOLF_CRYPTO_CB_AES_SETKEY"',
8386
'--disable-examples CPPFLAGS=-DWOLFSSL_NO_MALLOC',
8487
'CPPFLAGS=-DNO_WOLFSSL_CLIENT',
8588
'CPPFLAGS=-DNO_WOLFSSL_SERVER',

configure.ac

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9837,7 +9837,7 @@ fi
98379837
98389838
# Crypto Callbacks Utils (Copy/Free/etc)
98399839
AC_ARG_ENABLE([cryptocbutils],
9840-
[AS_HELP_STRING([--enable-cryptocbutils@<:@=copy,free,setkey,...@:>@],
9840+
[AS_HELP_STRING([--enable-cryptocbutils@<:@=copy,free,setkey,export,...@:>@],
98419841
[Enable crypto callback utilities (default: all)])],
98429842
[ ENABLED_CRYPTOCB_UTILS=$enableval ],
98439843
[ ENABLED_CRYPTOCB_UTILS=no ]
@@ -9850,8 +9850,7 @@ if test "$ENABLED_CRYPTOCB_UTILS" != "no"; then
98509850
98519851
if test "$ENABLED_CRYPTOCB_UTILS" = "yes"; then
98529852
# Enable all utilities
9853-
AM_CFLAGS="$AM_CFLAGS -DWOLF_CRYPTO_CB_COPY -DWOLF_CRYPTO_CB_FREE -DWOLF_CRYPTO_CB_SETKEY"
9854-
# Future utilities go here when added
9853+
AM_CFLAGS="$AM_CFLAGS -DWOLF_CRYPTO_CB_COPY -DWOLF_CRYPTO_CB_FREE -DWOLF_CRYPTO_CB_SETKEY -DWOLF_CRYPTO_CB_EXPORT_KEY"
98559854
else
98569855
# Parse comma-separated list
98579856
OIFS="$IFS"
@@ -9867,8 +9866,11 @@ if test "$ENABLED_CRYPTOCB_UTILS" != "no"; then
98679866
setkey)
98689867
AM_CFLAGS="$AM_CFLAGS -DWOLF_CRYPTO_CB_SETKEY"
98699868
;;
9869+
export)
9870+
AM_CFLAGS="$AM_CFLAGS -DWOLF_CRYPTO_CB_EXPORT_KEY"
9871+
;;
98709872
*)
9871-
AC_MSG_ERROR([Unknown cryptocbutils option: $util. Valid options: copy, free, setkey])
9873+
AC_MSG_ERROR([Unknown cryptocbutils option: $util. Valid options: copy, free, setkey, export])
98729874
;;
98739875
esac
98749876
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)