@@ -163,12 +163,19 @@ int wc_InitCmac_ex(Cmac* cmac, const byte* key, word32 keySz,
163163 byte l [WC_AES_BLOCK_SIZE ];
164164
165165 XMEMSET (l , 0 , WC_AES_BLOCK_SIZE );
166+ #ifndef HAVE_SELFTEST
166167 ret = wc_AesEncryptDirect (& cmac -> aes , l , l );
167168 if (ret == 0 ) {
168169 ShiftAndXorRb (cmac -> k1 , l );
169170 ShiftAndXorRb (cmac -> k2 , cmac -> k1 );
170171 ForceZero (l , WC_AES_BLOCK_SIZE );
171172 }
173+ #else
174+ wc_AesEncryptDirect (& cmac -> aes , l , l );
175+ ShiftAndXorRb (cmac -> k1 , l );
176+ ShiftAndXorRb (cmac -> k2 , cmac -> k1 );
177+ ForceZero (l , WC_AES_BLOCK_SIZE );
178+ #endif
172179 }
173180 break ;
174181#endif /* !NO_AES && WOLFSSL_AES_DIRECT */
@@ -233,12 +240,19 @@ int wc_CmacUpdate(Cmac* cmac, const byte* in, word32 inSz)
233240 if (cmac -> totalSz != 0 ) {
234241 xorbuf (cmac -> buffer , cmac -> digest , WC_AES_BLOCK_SIZE );
235242 }
243+ #ifndef HAVE_SELFTEST
236244 ret = wc_AesEncryptDirect (& cmac -> aes , cmac -> digest ,
237245 cmac -> buffer );
238246 if (ret == 0 ) {
239247 cmac -> totalSz += WC_AES_BLOCK_SIZE ;
240248 cmac -> bufferSz = 0 ;
241249 }
250+ #else
251+ wc_AesEncryptDirect (& cmac -> aes , cmac -> digest ,
252+ cmac -> buffer );
253+ cmac -> totalSz += WC_AES_BLOCK_SIZE ;
254+ cmac -> bufferSz = 0 ;
255+ #endif
242256 }
243257 }
244258 }; break ;
@@ -332,10 +346,15 @@ int wc_CmacFinalNoFree(Cmac* cmac, byte* out, word32* outSz)
332346 }
333347 xorbuf (cmac -> buffer , cmac -> digest , WC_AES_BLOCK_SIZE );
334348 xorbuf (cmac -> buffer , subKey , WC_AES_BLOCK_SIZE );
349+ #ifndef HAVE_SELFTEST
335350 ret = wc_AesEncryptDirect (& cmac -> aes , cmac -> digest , cmac -> buffer );
336351 if (ret == 0 ) {
337352 XMEMCPY (out , cmac -> digest , * outSz );
338353 }
354+ #else
355+ wc_AesEncryptDirect (& cmac -> aes , cmac -> digest , cmac -> buffer );
356+ XMEMCPY (out , cmac -> digest , * outSz );
357+ #endif
339358 }; break ;
340359 #endif /* !NO_AES && WOLFSSL_AES_DIRECT */
341360 default :
0 commit comments