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