@@ -4992,6 +4992,125 @@ void bench_rng(void)
49924992#endif /* WC_NO_RNG */
49934993
49944994
4995+ /* ============================================================================
4996+ * Benchmark init helpers -- use id[] when WC_TEST_*_ID is defined and
4997+ * useDeviceID is true, else plain init.
4998+ * ========================================================================= */
4999+
5000+ /* --- AES CBC --- */
5001+ #if !defined(NO_AES) && defined(HAVE_AES_CBC)
5002+ #if defined(WOLF_PRIVATE_KEY_ID) && defined(WC_TEST_AES_CBC_ID)
5003+ static unsigned char benchAesCbcId[] = WC_TEST_AES_CBC_ID;
5004+ static int benchAesCbcIdLen = (int)sizeof(benchAesCbcId);
5005+ #endif
5006+
5007+ static WC_MAYBE_UNUSED int bench_AesCbcInit(Aes* aes, void* heap,
5008+ int declaredDevId)
5009+ {
5010+ #if defined(WOLF_PRIVATE_KEY_ID) && defined(WC_TEST_AES_CBC_ID)
5011+ return wc_AesInit_Id(aes, benchAesCbcId, benchAesCbcIdLen, heap,
5012+ declaredDevId);
5013+ #else
5014+ return wc_AesInit(aes, heap, declaredDevId);
5015+ #endif
5016+ }
5017+ #endif /* !NO_AES && HAVE_AES_CBC */
5018+
5019+ /* --- AES GCM --- */
5020+ #if !defined(NO_AES) && defined(HAVE_AESGCM)
5021+ #if defined(WOLF_PRIVATE_KEY_ID) && defined(WC_TEST_AES_GCM_ID)
5022+ static unsigned char benchAesGcmId[] = WC_TEST_AES_GCM_ID;
5023+ static int benchAesGcmIdLen = (int)sizeof(benchAesGcmId);
5024+ #endif
5025+
5026+ static WC_MAYBE_UNUSED int bench_AesGcmInit(Aes* aes, void* heap,
5027+ int declaredDevId)
5028+ {
5029+ #if defined(WOLF_PRIVATE_KEY_ID) && defined(WC_TEST_AES_GCM_ID)
5030+ return wc_AesInit_Id(aes, benchAesGcmId, benchAesGcmIdLen, heap,
5031+ declaredDevId);
5032+ #else
5033+ return wc_AesInit(aes, heap, declaredDevId);
5034+ #endif
5035+ }
5036+ #endif /* !NO_AES && HAVE_AESGCM */
5037+
5038+ /* --- RSA --- */
5039+ #if !defined(NO_RSA)
5040+ #if defined(WOLF_PRIVATE_KEY_ID) && defined(WC_TEST_RSA_PRIV_ID)
5041+ static unsigned char benchRsaPrivId[] = WC_TEST_RSA_PRIV_ID;
5042+ static int benchRsaPrivIdLen = (int)sizeof(benchRsaPrivId);
5043+ #endif
5044+
5045+ static WC_MAYBE_UNUSED int bench_RsaInit(RsaKey* key, void* heap,
5046+ int declaredDevId)
5047+ {
5048+ #if defined(WOLF_PRIVATE_KEY_ID) && defined(WC_TEST_RSA_PRIV_ID)
5049+ return wc_InitRsaKey_Id(key, benchRsaPrivId, benchRsaPrivIdLen, heap,
5050+ declaredDevId);
5051+ #else
5052+ return wc_InitRsaKey_ex(key, heap, declaredDevId);
5053+ #endif
5054+ }
5055+ #endif /* !NO_RSA */
5056+
5057+ /* --- CMAC --- */
5058+ #ifdef WOLFSSL_CMAC
5059+ #if defined(WOLF_PRIVATE_KEY_ID) && defined(WC_TEST_CMAC_ID)
5060+ static unsigned char benchCmacId[] = WC_TEST_CMAC_ID;
5061+ static int benchCmacIdLen = (int)sizeof(benchCmacId);
5062+ #endif
5063+
5064+ static WC_MAYBE_UNUSED int bench_CmacInit(Cmac* cmac, const byte* key,
5065+ word32 keySz, int type,
5066+ void* unused, void* heap,
5067+ int declaredDevId)
5068+ {
5069+ #if defined(WOLF_PRIVATE_KEY_ID) && defined(WC_TEST_CMAC_ID)
5070+ return wc_InitCmac_Id(cmac, key, keySz, type, unused,
5071+ benchCmacId, benchCmacIdLen, heap, declaredDevId);
5072+ #elif !defined(HAVE_FIPS)
5073+ return wc_InitCmac_ex(cmac, key, keySz, type, unused, heap, declaredDevId);
5074+ #else
5075+ (void)heap;
5076+ (void)declaredDevId;
5077+ return wc_InitCmac(cmac, key, keySz, type, unused);
5078+ #endif
5079+ }
5080+ #endif /* WOLFSSL_CMAC */
5081+
5082+ /* --- ECC --- */
5083+ #ifdef HAVE_ECC
5084+ #if defined(WOLF_PRIVATE_KEY_ID) && defined(WC_TEST_ECC_PAIR_P256_ID)
5085+ static unsigned char benchEccPairP256Id[] = WC_TEST_ECC_PAIR_P256_ID;
5086+ static int benchEccPairP256IdLen = (int)sizeof(benchEccPairP256Id);
5087+ #endif
5088+ #if defined(WOLF_PRIVATE_KEY_ID) && defined(WC_TEST_ECC_PAIR_P521_ID)
5089+ static unsigned char benchEccPairP521Id[] = WC_TEST_ECC_PAIR_P521_ID;
5090+ static int benchEccPairP521IdLen = (int)sizeof(benchEccPairP521Id);
5091+ #endif
5092+
5093+ static WC_MAYBE_UNUSED int bench_EccInit_Pair(ecc_key* key, int keySize,
5094+ void* heap, int declaredDevId)
5095+ {
5096+ #if defined(WOLF_PRIVATE_KEY_ID) && defined(WC_TEST_ECC_PAIR_P256_ID)
5097+ if (keySize == 32) {
5098+ return wc_ecc_init_id(key, benchEccPairP256Id,
5099+ benchEccPairP256IdLen, heap, declaredDevId);
5100+ }
5101+ #endif
5102+ #if defined(WOLF_PRIVATE_KEY_ID) && defined(WC_TEST_ECC_PAIR_P521_ID)
5103+ if (keySize == 66) {
5104+ return wc_ecc_init_id(key, benchEccPairP521Id,
5105+ benchEccPairP521IdLen, heap, declaredDevId);
5106+ }
5107+ #endif
5108+ (void)keySize;
5109+ return wc_ecc_init_ex(key, heap, declaredDevId);
5110+ }
5111+ #endif /* HAVE_ECC */
5112+
5113+
49955114#ifndef NO_AES
49965115
49975116#ifdef HAVE_AES_CBC
@@ -5015,8 +5134,9 @@ static void bench_aescbc_internal(int useDeviceID,
50155134
50165135 /* init keys */
50175136 for (i = 0; i < BENCH_MAX_PENDING; i++) {
5018- if ((ret = wc_AesInit(enc[i], HEAP_HINT,
5019- useDeviceID ? devId: INVALID_DEVID)) != 0) {
5137+ ret = bench_AesCbcInit(enc[i], HEAP_HINT,
5138+ useDeviceID ? devId : INVALID_DEVID);
5139+ if (ret != 0) {
50205140 printf("AesInit failed at L%d, ret = %d\n", __LINE__, ret);
50215141 goto exit;
50225142 }
@@ -5084,8 +5204,8 @@ static void bench_aescbc_internal(int useDeviceID,
50845204
50855205 /* init keys */
50865206 for (i = 0; i < BENCH_MAX_PENDING; i++) {
5087- ret = wc_AesInit (enc[i], HEAP_HINT,
5088- useDeviceID ? devId: INVALID_DEVID);
5207+ ret = bench_AesCbcInit (enc[i], HEAP_HINT,
5208+ useDeviceID ? devId : INVALID_DEVID);
50895209 if (ret != 0) {
50905210 printf("AesInit failed at L%d, ret = %d\n", __LINE__, ret);
50915211 goto exit;
@@ -5206,8 +5326,9 @@ static void bench_aesgcm_internal(int useDeviceID,
52065326
52075327 /* init keys */
52085328 for (i = 0; i < BENCH_MAX_PENDING; i++) {
5209- if ((ret = wc_AesInit(enc[i], HEAP_HINT,
5210- useDeviceID ? devId: INVALID_DEVID)) != 0) {
5329+ ret = bench_AesGcmInit(enc[i], HEAP_HINT,
5330+ useDeviceID ? devId : INVALID_DEVID);
5331+ if (ret != 0) {
52115332 printf("AesInit failed at L%d, ret = %d\n", __LINE__, ret);
52125333 goto exit;
52135334 }
@@ -5291,8 +5412,9 @@ static void bench_aesgcm_internal(int useDeviceID,
52915412
52925413 /* init keys */
52935414 for (i = 0; i < BENCH_MAX_PENDING; i++) {
5294- if ((ret = wc_AesInit(dec[i], HEAP_HINT,
5295- useDeviceID ? devId: INVALID_DEVID)) != 0) {
5415+ ret = bench_AesGcmInit(dec[i], HEAP_HINT,
5416+ useDeviceID ? devId : INVALID_DEVID);
5417+ if (ret != 0) {
52965418 printf("AesInit failed at L%d, ret = %d\n", __LINE__, ret);
52975419 goto exit;
52985420 }
@@ -9099,7 +9221,7 @@ static void bench_cmac_helper(word32 keySz, const char* outMsg, int useDeviceID)
90999221 #ifdef HAVE_FIPS
91009222 ret = wc_InitCmac(&cmac, bench_key, keySz, WC_CMAC_AES, NULL);
91019223 #else
9102- ret = wc_InitCmac_ex (&cmac, bench_key, keySz, WC_CMAC_AES, NULL,
9224+ ret = bench_CmacInit (&cmac, bench_key, keySz, WC_CMAC_AES, NULL,
91039225 HEAP_HINT, useDeviceID ? devId : INVALID_DEVID);
91049226 #endif
91059227 if (ret != 0) {
@@ -10163,7 +10285,7 @@ void bench_rsa(int useDeviceID)
1016310285 /* init keys */
1016410286 for (i = 0; i < BENCH_MAX_PENDING; i++) {
1016510287 /* setup an async context for each key */
10166- ret = wc_InitRsaKey_ex (rsaKey[i], HEAP_HINT,
10288+ ret = bench_RsaInit (rsaKey[i], HEAP_HINT,
1016710289 useDeviceID ? devId : INVALID_DEVID);
1016810290 if (ret < 0) {
1016910291 goto exit;
@@ -12347,7 +12469,8 @@ void bench_ecc(int useDeviceID, int curveId)
1234712469 /* init keys */
1234812470 for (i = 0; i < BENCH_MAX_PENDING; i++) {
1234912471 /* setup an context for each key */
12350- if ((ret = wc_ecc_init_ex(genKey[i], HEAP_HINT, deviceID)) < 0) {
12472+ if ((ret = bench_EccInit_Pair(genKey[i], keySize, HEAP_HINT,
12473+ deviceID)) < 0) {
1235112474 goto exit;
1235212475 }
1235312476 ret = wc_ecc_make_key_ex(&gRng, keySize, genKey[i], curveId);
0 commit comments