@@ -5218,10 +5218,346 @@ int test_wc_AesEaxDecryptAuth(void)
52185218 return EXPECT_RESULT ();
52195219} /* END test_wc_AesEaxDecryptAuth() */
52205220
5221+ /*
5222+ * Testing AES-EAX streaming (incremental) API:
5223+ * wc_AesEaxInit, wc_AesEaxEncryptUpdate, wc_AesEaxAuthDataUpdate,
5224+ * wc_AesEaxEncryptFinal, wc_AesEaxDecryptUpdate, wc_AesEaxDecryptFinal,
5225+ * wc_AesEaxFree
5226+ */
5227+ int test_wc_AesEaxStream (void )
5228+ {
5229+ EXPECT_DECLS ;
5230+
5231+ #ifdef WOLFSSL_AES_128
5232+ /* Wycheproof AES-EAX 128-bit key vectors */
5233+
5234+ /* Vector 1: empty plaintext - AAD passed via Init */
5235+ const byte key1 [] = {0x23 , 0x39 , 0x52 , 0xde , 0xe4 , 0xd5 , 0xed , 0x5f ,
5236+ 0x9b , 0x9c , 0x6d , 0x6f , 0xf8 , 0x0f , 0xf4 , 0x78 };
5237+ const byte nonce1 [] = {0x62 , 0xec , 0x67 , 0xf9 , 0xc3 , 0xa4 , 0xa4 , 0x07 ,
5238+ 0xfc , 0xb2 , 0xa8 , 0xc4 , 0x90 , 0x31 , 0xa8 , 0xb3 };
5239+ const byte aad1 [] = {0x6b , 0xfb , 0x91 , 0x4f , 0xd0 , 0x7e , 0xae , 0x6b };
5240+ const byte tag1 [] = {0xe0 , 0x37 , 0x83 , 0x0e , 0x83 , 0x89 , 0xf2 , 0x7b ,
5241+ 0x02 , 0x5a , 0x2d , 0x65 , 0x27 , 0xe7 , 0x9d , 0x01 };
5242+
5243+ /* Vector 2: 2-byte plaintext - AAD passed via EncryptUpdate */
5244+ const byte key2 [] = {0x91 , 0x94 , 0x5d , 0x3f , 0x4d , 0xcb , 0xee , 0x0b ,
5245+ 0xf4 , 0x5e , 0xf5 , 0x22 , 0x55 , 0xf0 , 0x95 , 0xa4 };
5246+ const byte nonce2 [] = {0xbe , 0xca , 0xf0 , 0x43 , 0xb0 , 0xa2 , 0x3d , 0x84 ,
5247+ 0x31 , 0x94 , 0xba , 0x97 , 0x2c , 0x66 , 0xde , 0xbd };
5248+ const byte aad2 [] = {0xfa , 0x3b , 0xfd , 0x48 , 0x06 , 0xeb , 0x53 , 0xfa };
5249+ const byte pt2 [] = {0xf7 , 0xfb };
5250+ const byte ct2 [] = {0x19 , 0xdd };
5251+ const byte tag2 [] = {0x5c , 0x4c , 0x93 , 0x31 , 0x04 , 0x9d , 0x0b , 0xda ,
5252+ 0xb0 , 0x27 , 0x74 , 0x08 , 0xf6 , 0x79 , 0x67 , 0xe5 };
5253+
5254+ /* Vector 3: 5-byte plaintext - multi-chunk, AAD via AuthDataUpdate */
5255+ const byte key3 [] = {0x01 , 0xf7 , 0x4a , 0xd6 , 0x40 , 0x77 , 0xf2 , 0xe7 ,
5256+ 0x04 , 0xc0 , 0xf6 , 0x0a , 0xda , 0x3d , 0xd5 , 0x23 };
5257+ const byte nonce3 [] = {0x70 , 0xc3 , 0xdb , 0x4f , 0x0d , 0x26 , 0x36 , 0x84 ,
5258+ 0x00 , 0xa1 , 0x0e , 0xd0 , 0x5d , 0x2b , 0xff , 0x5e };
5259+ const byte aad3 [] = {0x23 , 0x4a , 0x34 , 0x63 , 0xc1 , 0x26 , 0x4a , 0xc6 };
5260+ const byte pt3 [] = {0x1a , 0x47 , 0xcb , 0x49 , 0x33 };
5261+ const byte ct3 [] = {0xd8 , 0x51 , 0xd5 , 0xba , 0xe0 };
5262+ const byte tag3 [] = {0x3a , 0x59 , 0xf2 , 0x38 , 0xa2 , 0x3e , 0x39 , 0x19 ,
5263+ 0x9d , 0xc9 , 0x26 , 0x66 , 0x26 , 0xc4 , 0x0f , 0x80 };
5264+
5265+ AesEax eax ;
5266+ byte out [16 ];
5267+ byte tagBuf [WC_AES_BLOCK_SIZE ];
5268+
5269+ XMEMSET (& eax , 0 , sizeof (eax ));
5270+ XMEMSET (out , 0 , sizeof (out ));
5271+ XMEMSET (tagBuf , 0 , sizeof (tagBuf ));
5272+
5273+ /* --- Test 1: empty plaintext, AAD passed to Init --- */
5274+ ExpectIntEQ (wc_AesEaxInit (& eax , key1 , sizeof (key1 ),
5275+ nonce1 , sizeof (nonce1 ),
5276+ aad1 , sizeof (aad1 )), 0 );
5277+ ExpectIntEQ (wc_AesEaxEncryptFinal (& eax , tagBuf , sizeof (tag1 )), 0 );
5278+ ExpectBufEQ (tagBuf , tag1 , sizeof (tag1 ));
5279+ ExpectIntEQ (wc_AesEaxFree (& eax ), 0 );
5280+
5281+ /* --- Test 1d: empty plaintext decrypt --- */
5282+ ExpectIntEQ (wc_AesEaxInit (& eax , key1 , sizeof (key1 ),
5283+ nonce1 , sizeof (nonce1 ),
5284+ aad1 , sizeof (aad1 )), 0 );
5285+ ExpectIntEQ (wc_AesEaxDecryptFinal (& eax , tag1 , sizeof (tag1 )), 0 );
5286+ ExpectIntEQ (wc_AesEaxFree (& eax ), 0 );
5287+
5288+ /* --- Test 2: 2-byte plaintext, single EncryptUpdate with inline AAD --- */
5289+ ExpectIntEQ (wc_AesEaxInit (& eax , key2 , sizeof (key2 ),
5290+ nonce2 , sizeof (nonce2 ),
5291+ NULL , 0 ), 0 );
5292+ ExpectIntEQ (wc_AesEaxEncryptUpdate (& eax , out , pt2 , sizeof (pt2 ),
5293+ aad2 , sizeof (aad2 )), 0 );
5294+ ExpectBufEQ (out , ct2 , sizeof (ct2 ));
5295+ ExpectIntEQ (wc_AesEaxEncryptFinal (& eax , tagBuf , sizeof (tag2 )), 0 );
5296+ ExpectBufEQ (tagBuf , tag2 , sizeof (tag2 ));
5297+ ExpectIntEQ (wc_AesEaxFree (& eax ), 0 );
5298+
5299+ /* --- Test 2d: 2-byte ciphertext, single DecryptUpdate with inline AAD --- */
5300+ ExpectIntEQ (wc_AesEaxInit (& eax , key2 , sizeof (key2 ),
5301+ nonce2 , sizeof (nonce2 ),
5302+ NULL , 0 ), 0 );
5303+ ExpectIntEQ (wc_AesEaxDecryptUpdate (& eax , out , ct2 , sizeof (ct2 ),
5304+ aad2 , sizeof (aad2 )), 0 );
5305+ ExpectBufEQ (out , pt2 , sizeof (pt2 ));
5306+ ExpectIntEQ (wc_AesEaxDecryptFinal (& eax , tag2 , sizeof (tag2 )), 0 );
5307+ ExpectIntEQ (wc_AesEaxFree (& eax ), 0 );
5308+
5309+ /* --- Test 3: 5-byte plaintext, multi-chunk encrypt with AuthDataUpdate --- */
5310+ ExpectIntEQ (wc_AesEaxInit (& eax , key3 , sizeof (key3 ),
5311+ nonce3 , sizeof (nonce3 ),
5312+ NULL , 0 ), 0 );
5313+ /* Feed AAD via AuthDataUpdate split into two calls */
5314+ ExpectIntEQ (wc_AesEaxAuthDataUpdate (& eax , aad3 , 4 ), 0 );
5315+ ExpectIntEQ (wc_AesEaxAuthDataUpdate (& eax , aad3 + 4 , sizeof (aad3 ) - 4 ), 0 );
5316+ /* Encrypt plaintext in two chunks */
5317+ ExpectIntEQ (wc_AesEaxEncryptUpdate (& eax , out , pt3 , 2 , NULL , 0 ), 0 );
5318+ ExpectBufEQ (out , ct3 , 2 );
5319+ ExpectIntEQ (wc_AesEaxEncryptUpdate (& eax , out + 2 , pt3 + 2 ,
5320+ (word32 )(sizeof (pt3 ) - 2 ), NULL , 0 ), 0 );
5321+ ExpectBufEQ (out + 2 , ct3 + 2 , sizeof (ct3 ) - 2 );
5322+ ExpectIntEQ (wc_AesEaxEncryptFinal (& eax , tagBuf , sizeof (tag3 )), 0 );
5323+ ExpectBufEQ (tagBuf , tag3 , sizeof (tag3 ));
5324+ ExpectIntEQ (wc_AesEaxFree (& eax ), 0 );
5325+
5326+ /* --- Test 3d: 5-byte ciphertext, multi-chunk decrypt with AuthDataUpdate --- */
5327+ ExpectIntEQ (wc_AesEaxInit (& eax , key3 , sizeof (key3 ),
5328+ nonce3 , sizeof (nonce3 ),
5329+ NULL , 0 ), 0 );
5330+ ExpectIntEQ (wc_AesEaxAuthDataUpdate (& eax , aad3 , 4 ), 0 );
5331+ ExpectIntEQ (wc_AesEaxAuthDataUpdate (& eax , aad3 + 4 , sizeof (aad3 ) - 4 ), 0 );
5332+ /* Decrypt ciphertext in two chunks */
5333+ ExpectIntEQ (wc_AesEaxDecryptUpdate (& eax , out , ct3 , 2 , NULL , 0 ), 0 );
5334+ ExpectBufEQ (out , pt3 , 2 );
5335+ ExpectIntEQ (wc_AesEaxDecryptUpdate (& eax , out + 2 , ct3 + 2 ,
5336+ (word32 )(sizeof (ct3 ) - 2 ), NULL , 0 ), 0 );
5337+ ExpectBufEQ (out + 2 , pt3 + 2 , sizeof (pt3 ) - 2 );
5338+ ExpectIntEQ (wc_AesEaxDecryptFinal (& eax , tag3 , sizeof (tag3 )), 0 );
5339+ ExpectIntEQ (wc_AesEaxFree (& eax ), 0 );
5340+
5341+ /* --- Bad args --- */
5342+ /* wc_AesEaxInit */
5343+ ExpectIntEQ (wc_AesEaxInit (NULL , key1 , sizeof (key1 ),
5344+ nonce1 , sizeof (nonce1 ), NULL , 0 ),
5345+ WC_NO_ERR_TRACE (BAD_FUNC_ARG ));
5346+ ExpectIntEQ (wc_AesEaxInit (& eax , NULL , sizeof (key1 ),
5347+ nonce1 , sizeof (nonce1 ), NULL , 0 ),
5348+ WC_NO_ERR_TRACE (BAD_FUNC_ARG ));
5349+ ExpectIntEQ (wc_AesEaxInit (& eax , key1 , sizeof (key1 ),
5350+ NULL , sizeof (nonce1 ), NULL , 0 ),
5351+ WC_NO_ERR_TRACE (BAD_FUNC_ARG ));
5352+
5353+ /* wc_AesEaxAuthDataUpdate */
5354+ ExpectIntEQ (wc_AesEaxAuthDataUpdate (NULL , aad1 , sizeof (aad1 )),
5355+ WC_NO_ERR_TRACE (BAD_FUNC_ARG ));
5356+
5357+ /* wc_AesEaxEncryptFinal */
5358+ ExpectIntEQ (wc_AesEaxEncryptFinal (NULL , tagBuf , WC_AES_BLOCK_SIZE ),
5359+ WC_NO_ERR_TRACE (BAD_FUNC_ARG ));
5360+
5361+ /* wc_AesEaxDecryptFinal NULL eax */
5362+ ExpectIntEQ (wc_AesEaxDecryptFinal (NULL , tag1 , sizeof (tag1 )),
5363+ WC_NO_ERR_TRACE (BAD_FUNC_ARG ));
5364+
5365+ /* wc_AesEaxDecryptFinal authInSz > WC_AES_BLOCK_SIZE */
5366+ ExpectIntEQ (wc_AesEaxInit (& eax , key1 , sizeof (key1 ),
5367+ nonce1 , sizeof (nonce1 ), NULL , 0 ), 0 );
5368+ ExpectIntEQ (wc_AesEaxDecryptFinal (& eax , tag1 , WC_AES_BLOCK_SIZE + 1 ),
5369+ WC_NO_ERR_TRACE (BAD_FUNC_ARG ));
5370+ ExpectIntEQ (wc_AesEaxFree (& eax ), 0 );
5371+
5372+ /* wc_AesEaxFree NULL */
5373+ ExpectIntEQ (wc_AesEaxFree (NULL ), WC_NO_ERR_TRACE (BAD_FUNC_ARG ));
5374+
5375+ #endif /* WOLFSSL_AES_128 */
5376+
5377+ return EXPECT_RESULT ();
5378+ } /* END test_wc_AesEaxStream() */
5379+
52215380#endif /* WOLFSSL_AES_EAX && WOLFSSL_AES_256
52225381 * (!HAVE_FIPS || FIPS_VERSION_GE(5, 3)) && !HAVE_SELFTEST
52235382 */
52245383
5384+ /*----------------------------------------------------------------------------*
5385+ | AES-SIV Test
5386+ *----------------------------------------------------------------------------*/
5387+
5388+ #if defined(WOLFSSL_AES_SIV ) && defined(WOLFSSL_AES_128 )
5389+
5390+ /*
5391+ * Testing wc_AesSivEncrypt, wc_AesSivDecrypt,
5392+ * wc_AesSivEncrypt_ex, wc_AesSivDecrypt_ex.
5393+ * Uses RFC 5297 Example A.1 (single assoc) and A.2 (two assocs).
5394+ */
5395+ int test_wc_AesSivEncryptDecrypt (void )
5396+ {
5397+ EXPECT_DECLS ;
5398+
5399+ /* RFC 5297 Example A.1: single associated data buffer */
5400+ const byte key_a1 [] = {
5401+ 0xff ,0xfe ,0xfd ,0xfc ,0xfb ,0xfa ,0xf9 ,0xf8 ,
5402+ 0xf7 ,0xf6 ,0xf5 ,0xf4 ,0xf3 ,0xf2 ,0xf1 ,0xf0 ,
5403+ 0xf0 ,0xf1 ,0xf2 ,0xf3 ,0xf4 ,0xf5 ,0xf6 ,0xf7 ,
5404+ 0xf8 ,0xf9 ,0xfa ,0xfb ,0xfc ,0xfd ,0xfe ,0xff
5405+ };
5406+ const byte assoc_a1 [] = {
5407+ 0x10 ,0x11 ,0x12 ,0x13 ,0x14 ,0x15 ,0x16 ,0x17 ,
5408+ 0x18 ,0x19 ,0x1a ,0x1b ,0x1c ,0x1d ,0x1e ,0x1f ,
5409+ 0x20 ,0x21 ,0x22 ,0x23 ,0x24 ,0x25 ,0x26 ,0x27
5410+ };
5411+ const byte pt_a1 [] = {
5412+ 0x11 ,0x22 ,0x33 ,0x44 ,0x55 ,0x66 ,0x77 ,0x88 ,
5413+ 0x99 ,0xaa ,0xbb ,0xcc ,0xdd ,0xee
5414+ };
5415+ const byte siv_a1 [] = {
5416+ 0x85 ,0x63 ,0x2d ,0x07 ,0xc6 ,0xe8 ,0xf3 ,0x7f ,
5417+ 0x95 ,0x0a ,0xcd ,0x32 ,0x0a ,0x2e ,0xcc ,0x93
5418+ };
5419+ const byte ct_a1 [] = {
5420+ 0x40 ,0xc0 ,0x2b ,0x96 ,0x90 ,0xc4 ,0xdc ,0x04 ,
5421+ 0xda ,0xef ,0x7f ,0x6a ,0xfe ,0x5c
5422+ };
5423+
5424+ /* RFC 5297 Example A.2: two associated data buffers, no nonce */
5425+ const byte key_a2 [] = {
5426+ 0x7f ,0x7e ,0x7d ,0x7c ,0x7b ,0x7a ,0x79 ,0x78 ,
5427+ 0x77 ,0x76 ,0x75 ,0x74 ,0x73 ,0x72 ,0x71 ,0x70 ,
5428+ 0x40 ,0x41 ,0x42 ,0x43 ,0x44 ,0x45 ,0x46 ,0x47 ,
5429+ 0x48 ,0x49 ,0x4a ,0x4b ,0x4c ,0x4d ,0x4e ,0x4f
5430+ };
5431+ const byte assoc2_1_a2 [] = {
5432+ 0x00 ,0x11 ,0x22 ,0x33 ,0x44 ,0x55 ,0x66 ,0x77 ,
5433+ 0x88 ,0x99 ,0xaa ,0xbb ,0xcc ,0xdd ,0xee ,0xff ,
5434+ 0xde ,0xad ,0xda ,0xda ,0xde ,0xad ,0xda ,0xda ,
5435+ 0xff ,0xee ,0xdd ,0xcc ,0xbb ,0xaa ,0x99 ,0x88 ,
5436+ 0x77 ,0x66 ,0x55 ,0x44 ,0x33 ,0x22 ,0x11 ,0x00
5437+ };
5438+ const byte assoc2_2_a2 [] = {
5439+ 0x10 ,0x20 ,0x30 ,0x40 ,0x50 ,0x60 ,0x70 ,0x80 ,
5440+ 0x90 ,0xa0
5441+ };
5442+ const byte nonce_a2 [] = {
5443+ 0x09 ,0xf9 ,0x11 ,0x02 ,0x9d ,0x74 ,0xe3 ,0x5b ,
5444+ 0xd8 ,0x41 ,0x56 ,0xc5 ,0x63 ,0x56 ,0x88 ,0xc0
5445+ };
5446+ const byte pt_a2 [] = {
5447+ 0x74 ,0x68 ,0x69 ,0x73 ,0x20 ,0x69 ,0x73 ,0x20 ,
5448+ 0x73 ,0x6f ,0x6d ,0x65 ,0x20 ,0x70 ,0x6c ,0x61 ,
5449+ 0x69 ,0x6e ,0x74 ,0x65 ,0x78 ,0x74 ,0x20 ,0x74 ,
5450+ 0x6f ,0x20 ,0x65 ,0x6e ,0x63 ,0x72 ,0x79 ,0x70 ,
5451+ 0x74 ,0x20 ,0x75 ,0x73 ,0x69 ,0x6e ,0x67 ,0x20 ,
5452+ 0x53 ,0x49 ,0x56 ,0x2d ,0x41 ,0x45 ,0x53
5453+ };
5454+ const byte siv_a2 [] = {
5455+ 0x7b ,0xdb ,0x6e ,0x3b ,0x43 ,0x26 ,0x67 ,0xeb ,
5456+ 0x06 ,0xf4 ,0xd1 ,0x4b ,0xff ,0x2f ,0xbd ,0x0f
5457+ };
5458+ const byte ct_a2 [] = {
5459+ 0xcb ,0x90 ,0x0f ,0x2f ,0xdd ,0xbe ,0x40 ,0x43 ,
5460+ 0x26 ,0x60 ,0x19 ,0x65 ,0xc8 ,0x89 ,0xbf ,0x17 ,
5461+ 0xdb ,0xa7 ,0x7c ,0xeb ,0x09 ,0x4f ,0xa6 ,0x63 ,
5462+ 0xb7 ,0xa3 ,0xf7 ,0x48 ,0xba ,0x8a ,0xf8 ,0x29 ,
5463+ 0xea ,0x64 ,0xad ,0x54 ,0x4a ,0x27 ,0x2e ,0x9c ,
5464+ 0x48 ,0x5b ,0x62 ,0xa3 ,0xfd ,0x5c ,0x0d
5465+ };
5466+
5467+ byte siv [WC_AES_BLOCK_SIZE ];
5468+ byte ct [sizeof (pt_a2 )]; /* large enough for both tests */
5469+ byte pt [sizeof (pt_a2 )];
5470+
5471+ /* --- A.1: wc_AesSivEncrypt (single assoc, no nonce) --- */
5472+ XMEMSET (siv , 0 , sizeof (siv ));
5473+ XMEMSET (ct , 0 , sizeof (ct ));
5474+ ExpectIntEQ (wc_AesSivEncrypt (key_a1 , sizeof (key_a1 ),
5475+ assoc_a1 , sizeof (assoc_a1 ),
5476+ NULL , 0 ,
5477+ pt_a1 , sizeof (pt_a1 ),
5478+ siv , ct ), 0 );
5479+ ExpectBufEQ (siv , siv_a1 , sizeof (siv_a1 ));
5480+ ExpectBufEQ (ct , ct_a1 , sizeof (ct_a1 ));
5481+
5482+ /* --- A.1: wc_AesSivDecrypt --- */
5483+ XMEMSET (pt , 0 , sizeof (pt ));
5484+ XMEMCPY (siv , siv_a1 , sizeof (siv_a1 ));
5485+ ExpectIntEQ (wc_AesSivDecrypt (key_a1 , sizeof (key_a1 ),
5486+ assoc_a1 , sizeof (assoc_a1 ),
5487+ NULL , 0 ,
5488+ ct_a1 , sizeof (ct_a1 ),
5489+ siv , pt ), 0 );
5490+ ExpectBufEQ (pt , pt_a1 , sizeof (pt_a1 ));
5491+
5492+ /* Corrupt SIV: decrypt must fail */
5493+ siv [0 ] ^= 0xff ;
5494+ ExpectIntNE (wc_AesSivDecrypt (key_a1 , sizeof (key_a1 ),
5495+ assoc_a1 , sizeof (assoc_a1 ),
5496+ NULL , 0 ,
5497+ ct_a1 , sizeof (ct_a1 ),
5498+ siv , pt ), 0 );
5499+
5500+ /* --- A.2: wc_AesSivEncrypt_ex (two assocs + nonce) --- */
5501+ {
5502+ const AesSivAssoc assocs [2 ] = {
5503+ { assoc2_1_a2 , sizeof (assoc2_1_a2 ) },
5504+ { assoc2_2_a2 , sizeof (assoc2_2_a2 ) }
5505+ };
5506+ XMEMSET (siv , 0 , sizeof (siv ));
5507+ XMEMSET (ct , 0 , sizeof (ct ));
5508+ ExpectIntEQ (wc_AesSivEncrypt_ex (key_a2 , sizeof (key_a2 ),
5509+ assocs , 2 ,
5510+ nonce_a2 , sizeof (nonce_a2 ),
5511+ pt_a2 , sizeof (pt_a2 ),
5512+ siv , ct ), 0 );
5513+ ExpectBufEQ (siv , siv_a2 , sizeof (siv_a2 ));
5514+ ExpectBufEQ (ct , ct_a2 , sizeof (ct_a2 ));
5515+
5516+ /* wc_AesSivDecrypt_ex */
5517+ XMEMSET (pt , 0 , sizeof (pt ));
5518+ XMEMCPY (siv , siv_a2 , sizeof (siv_a2 ));
5519+ ExpectIntEQ (wc_AesSivDecrypt_ex (key_a2 , sizeof (key_a2 ),
5520+ assocs , 2 ,
5521+ nonce_a2 , sizeof (nonce_a2 ),
5522+ ct_a2 , sizeof (ct_a2 ),
5523+ siv , pt ), 0 );
5524+ ExpectBufEQ (pt , pt_a2 , sizeof (pt_a2 ));
5525+ }
5526+
5527+ /* --- Bad args: wc_AesSivEncrypt --- */
5528+ ExpectIntNE (wc_AesSivEncrypt (NULL , sizeof (key_a1 ),
5529+ assoc_a1 , sizeof (assoc_a1 ),
5530+ NULL , 0 , pt_a1 , sizeof (pt_a1 ), siv , ct ), 0 );
5531+ ExpectIntNE (wc_AesSivEncrypt (key_a1 , 0 ,
5532+ assoc_a1 , sizeof (assoc_a1 ),
5533+ NULL , 0 , pt_a1 , sizeof (pt_a1 ), siv , ct ), 0 );
5534+ ExpectIntNE (wc_AesSivEncrypt (key_a1 , sizeof (key_a1 ),
5535+ assoc_a1 , sizeof (assoc_a1 ),
5536+ NULL , 0 , pt_a1 , sizeof (pt_a1 ), NULL , ct ), 0 );
5537+ ExpectIntNE (wc_AesSivEncrypt (key_a1 , sizeof (key_a1 ),
5538+ assoc_a1 , sizeof (assoc_a1 ),
5539+ NULL , 0 , pt_a1 , sizeof (pt_a1 ), siv , NULL ), 0 );
5540+
5541+ /* --- Bad args: wc_AesSivDecrypt --- */
5542+ XMEMCPY (siv , siv_a1 , sizeof (siv_a1 ));
5543+ ExpectIntNE (wc_AesSivDecrypt (NULL , sizeof (key_a1 ),
5544+ assoc_a1 , sizeof (assoc_a1 ),
5545+ NULL , 0 , ct_a1 , sizeof (ct_a1 ), siv , pt ), 0 );
5546+ ExpectIntNE (wc_AesSivDecrypt (key_a1 , 0 ,
5547+ assoc_a1 , sizeof (assoc_a1 ),
5548+ NULL , 0 , ct_a1 , sizeof (ct_a1 ), siv , pt ), 0 );
5549+ ExpectIntNE (wc_AesSivDecrypt (key_a1 , sizeof (key_a1 ),
5550+ assoc_a1 , sizeof (assoc_a1 ),
5551+ NULL , 0 , ct_a1 , sizeof (ct_a1 ), NULL , pt ), 0 );
5552+ ExpectIntNE (wc_AesSivDecrypt (key_a1 , sizeof (key_a1 ),
5553+ assoc_a1 , sizeof (assoc_a1 ),
5554+ NULL , 0 , ct_a1 , sizeof (ct_a1 ), siv , NULL ), 0 );
5555+
5556+ return EXPECT_RESULT ();
5557+ } /* END test_wc_AesSivEncryptDecrypt */
5558+
5559+ #endif /* WOLFSSL_AES_SIV && WOLFSSL_AES_128 */
5560+
52255561/*----------------------------------------------------------------------------*
52265562 | CryptoCB AES SetKey Test
52275563 *----------------------------------------------------------------------------*/
0 commit comments