@@ -49,6 +49,12 @@ TEST(Encrypt, AESCBCEncrypt) {
4949 assertHexEqual (encryptResult, " f58c4c04d6e5f1ba779eabfb5f7bfbd6" );
5050}
5151
52+ TEST (Encrypt, AESCBCEncryptInvalidIv) {
53+ auto iv = parse_hex (" 0001020304050607" );
54+ auto data = parse_hex (" 6bc1bee22e409f96e93d7e117393172a" );
55+ ASSERT_THROW (AESCBCEncrypt (gKey , data, iv), std::invalid_argument);
56+ }
57+
5258TEST (Encrypt, AESCBCEncryptWithPadding) {
5359 const Data key = parse_hex (" bf6cfdd852f79460981062f551f1dc3215b5e26609bc2a275d5b2da21798b489" );
5460 const Data message = TW::data (" secret message" );
@@ -66,13 +72,19 @@ TEST(Encrypt, AESCBCEncryptWithPadding) {
6672}
6773
6874TEST (Encrypt, AESCBCDecrypt) {
69- auto iv = parse_hex (" 000102030405060708090A0B0C0D0E0F" );
75+ auto iv = parse_hex (" 000102030405060708090A0B0C0D0E0F" );
7076 auto cipher = parse_hex (" f58c4c04d6e5f1ba779eabfb5f7bfbd6" );
7177
7278 auto decryptResult = AESCBCDecrypt (gKey , cipher, iv);
7379 assertHexEqual (decryptResult, " 6bc1bee22e409f96e93d7e117393172a" );
7480}
7581
82+ TEST (Encrypt, AESCBCDecryptInvalidIv) {
83+ auto iv = parse_hex (" 000102030405060708090A0B0C0D0E0F000102030405060708090A0B0C0D0E0F" );
84+ auto cipher = parse_hex (" f58c4c04d6e5f1ba779eabfb5f7bfbd6" );
85+ ASSERT_THROW (AESCBCDecrypt (gKey , cipher, iv), std::invalid_argument);
86+ }
87+
7688TEST (Encrypt, AESCBCDecryptWithPadding) {
7789 const Data key = parse_hex (" bf6cfdd852f79460981062f551f1dc3215b5e26609bc2a275d5b2da21798b489" );
7890 {
@@ -101,14 +113,28 @@ TEST(Encrypt, AESCTREncrypt) {
101113 assertHexEqual (encryptResult, " 601ec313775789a5b7a7f504bbf3d228" );
102114}
103115
116+ TEST (Encrypt, AESCTREncryptIvalidIv) {
117+ // iv is too short.
118+ auto iv = parse_hex (" ff" );
119+ auto data = parse_hex (" 6bc1bee22e409f96e93d7e117393172a" );
120+ ASSERT_THROW (AESCTREncrypt (gKey , data, iv), std::invalid_argument);
121+ }
122+
104123TEST (Encrypt, AESCTRDecrypt) {
105- auto iv = parse_hex (" f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff" );
124+ auto iv = parse_hex (" f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff" );
106125 auto cipher = parse_hex (" 601ec313775789a5b7a7f504bbf3d228" );
107126
108127 auto decryptResult = AESCTRDecrypt (gKey , cipher, iv);
109128 assertHexEqual (decryptResult, " 6bc1bee22e409f96e93d7e117393172a" );
110129}
111130
131+ TEST (Encrypt, AESCTRDecryptIvalidIv) {
132+ // iv is too long.
133+ auto iv = parse_hex (" f0f1f2f3f4f5f6f7f8f9fafbfcfdfefff0" );
134+ auto cipher = parse_hex (" 601ec313775789a5b7a7f504bbf3d228" );
135+ ASSERT_THROW (AESCTRDecrypt (gKey , cipher, iv), std::invalid_argument);
136+ }
137+
112138TEST (Encrypt, AESCBCEncryptMultipleBlocks) {
113139 auto key = parse_hex (" e1094a016e6029eabc6f9e3c3cd9afb8" );
114140 auto iv = parse_hex (" 884b972d70acece4ecf9b790ffce177e" );
0 commit comments