Skip to content

Commit 7904f94

Browse files
committed
Merge remote-tracking branch 'public/pr/1099' into development-proposed
2 parents 4a865ef + bb4bbbb commit 7904f94

File tree

5 files changed

+261
-8
lines changed

5 files changed

+261
-8
lines changed

ChangeLog

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ Bugfix
3232
padded records in case of CBC ciphersuites using Encrypt-then-MAC.
3333
* Fix memory leak and freeing without initialization in the example
3434
program programs/x509/cert_write. Fixes #1422.
35+
* Ignore iv in mbedtls_cipher_set_iv() when the cipher mode is MBEDTLS_MODE_ECB
36+
Fix for #1091 raised by ezdevelop
3537

3638
Changes
3739
* Removed support for Yotta as a build tool.

library/cipher.c

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -237,10 +237,14 @@ int mbedtls_cipher_set_iv( mbedtls_cipher_context_t *ctx,
237237
const unsigned char *iv, size_t iv_len )
238238
{
239239
size_t actual_iv_size;
240-
241-
if( NULL == ctx || NULL == ctx->cipher_info || NULL == iv )
240+
if( NULL == ctx || NULL == ctx->cipher_info )
241+
return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA );
242+
else if( NULL == iv && iv_len != 0 )
242243
return( MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA );
243244

245+
if( NULL == iv && iv_len == 0 )
246+
ctx->iv_size = 0;
247+
244248
/* avoid buffer overflow in ctx->iv */
245249
if( iv_len > MBEDTLS_MAX_IV_LENGTH )
246250
return( MBEDTLS_ERR_CIPHER_FEATURE_UNAVAILABLE );
@@ -268,8 +272,11 @@ int mbedtls_cipher_set_iv( mbedtls_cipher_context_t *ctx,
268272
}
269273
#endif
270274

271-
memcpy( ctx->iv, iv, actual_iv_size );
272-
ctx->iv_size = actual_iv_size;
275+
if ( actual_iv_size != 0 )
276+
{
277+
memcpy( ctx->iv, iv, actual_iv_size );
278+
ctx->iv_size = actual_iv_size;
279+
}
273280

274281
return( 0 );
275282
}

library/cipher_wrap.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ static const mbedtls_cipher_info_t aes_128_ecb_info = {
258258
MBEDTLS_MODE_ECB,
259259
128,
260260
"AES-128-ECB",
261-
16,
261+
0,
262262
0,
263263
16,
264264
&aes_info
@@ -269,7 +269,7 @@ static const mbedtls_cipher_info_t aes_192_ecb_info = {
269269
MBEDTLS_MODE_ECB,
270270
192,
271271
"AES-192-ECB",
272-
16,
272+
0,
273273
0,
274274
16,
275275
&aes_info
@@ -280,7 +280,7 @@ static const mbedtls_cipher_info_t aes_256_ecb_info = {
280280
MBEDTLS_MODE_ECB,
281281
256,
282282
"AES-256-ECB",
283-
16,
283+
0,
284284
0,
285285
16,
286286
&aes_info

tests/suites/test_suite_cipher.aes.data

Lines changed: 184 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1510,6 +1510,190 @@ AES-256-ECB Decrypt NIST KAT #12
15101510
depends_on:MBEDTLS_AES_C
15111511
test_vec_ecb:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"9b80eefb7ebe2d2b16247aa0efc72f5d":"e0000000000000000000000000000000":0
15121512

1513+
AES-128-ECB crypt Encrypt NIST KAT #1
1514+
depends_on:MBEDTLS_AES_C
1515+
test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"":"f34481ec3cc627bacd5dc3fb08f273e6":"0336763e966d92595a567cc9ce537f5e":0
1516+
1517+
AES-128-ECB crypt Encrypt NIST KAT #2
1518+
depends_on:MBEDTLS_AES_C
1519+
test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"f0000000000000000000000000000000":"":"00000000000000000000000000000000":"970014d634e2b7650777e8e84d03ccd8":0
1520+
1521+
AES-128-ECB crypt Encrypt NIST KAT #3
1522+
depends_on:MBEDTLS_AES_C
1523+
test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"":"ffffffffffffffc00000000000000000":"3a4d354f02bb5a5e47d39666867f246a":0
1524+
1525+
AES-128-ECB crypt Decrypt NIST KAT #1
1526+
depends_on:MBEDTLS_AES_C
1527+
test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"":"db4f1aa530967d6732ce4715eb0ee24b":"ff000000000000000000000000000000":0
1528+
1529+
AES-128-ECB crypt Decrypt NIST KAT #2
1530+
depends_on:MBEDTLS_AES_C
1531+
test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"b69418a85332240dc82492353956ae0c":"":"a303d940ded8f0baff6f75414cac5243":"00000000000000000000000000000000":0
1532+
1533+
AES-128-ECB crypt Decrypt NIST KAT #3
1534+
depends_on:MBEDTLS_AES_C
1535+
test_vec_crypt:MBEDTLS_CIPHER_AES_128_ECB:MBEDTLS_DECRYPT:"ffffffffffffffff8000000000000000":"":"32cd652842926aea4aa6137bb2be2b5e":"00000000000000000000000000000000":0
1536+
1537+
AES-192-ECB crypt Encrypt NIST KAT #1
1538+
depends_on:MBEDTLS_AES_C
1539+
test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"":"fffffffffffffffffffff80000000000":"156f07767a85a4312321f63968338a01":0
1540+
1541+
AES-192-ECB crypt Encrypt NIST KAT #2
1542+
depends_on:MBEDTLS_AES_C
1543+
test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"":"51719783d3185a535bd75adc65071ce1":"4f354592ff7c8847d2d0870ca9481b7c":0
1544+
1545+
AES-192-ECB crypt Encrypt NIST KAT #3
1546+
depends_on:MBEDTLS_AES_C
1547+
test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"d2926527e0aa9f37b45e2ec2ade5853ef807576104c7ace3":"":"00000000000000000000000000000000":"dd619e1cf204446112e0af2b9afa8f8c":0
1548+
1549+
AES-192-ECB crypt Encrypt NIST KAT #4
1550+
depends_on:MBEDTLS_AES_C
1551+
test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_ENCRYPT:"fffffffffffffffffffffffffff800000000000000000000":"":"00000000000000000000000000000000":"8dd274bd0f1b58ae345d9e7233f9b8f3":0
1552+
1553+
AES-192-ECB crypt Decrypt NIST KAT #1
1554+
depends_on:MBEDTLS_AES_C
1555+
test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"fffffffffffffffffffffffffffffffff000000000000000":"":"bb2852c891c5947d2ed44032c421b85f":"00000000000000000000000000000000":0
1556+
1557+
AES-192-ECB crypt Decrypt NIST KAT #2
1558+
depends_on:MBEDTLS_AES_C
1559+
test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"61257134a518a0d57d9d244d45f6498cbc32f2bafc522d79":"":"cfe4d74002696ccf7d87b14a2f9cafc9":"00000000000000000000000000000000":0
1560+
1561+
AES-192-ECB crypt Decrypt NIST KAT #3
1562+
depends_on:MBEDTLS_AES_C
1563+
test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"":"275cfc0413d8ccb70513c3859b1d0f72":"1b077a6af4b7f98229de786d7516b639":0
1564+
1565+
AES-192-ECB crypt Decrypt NIST KAT #4
1566+
depends_on:MBEDTLS_AES_C
1567+
test_vec_crypt:MBEDTLS_CIPHER_AES_192_ECB:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"":"b2099795e88cc158fd75ea133d7e7fbe":"ffffffffffffffffffffc00000000000":0
1568+
1569+
AES-256-ECB crypt Encrypt NIST KAT #1
1570+
depends_on:MBEDTLS_AES_C
1571+
test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"c1cc358b449909a19436cfbb3f852ef8bcb5ed12ac7058325f56e6099aab1a1c":"":"00000000000000000000000000000000":"352065272169abf9856843927d0674fd":0
1572+
1573+
AES-256-ECB crypt Encrypt NIST KAT #2
1574+
depends_on:MBEDTLS_AES_C
1575+
test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"0b24af36193ce4665f2825d7b4749c98":"a9ff75bd7cf6613d3731c77c3b6d0c04":0
1576+
1577+
AES-256-ECB crypt Encrypt NIST KAT #3
1578+
depends_on:MBEDTLS_AES_C
1579+
test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"ffffff80000000000000000000000000":"36aff0ef7bf3280772cf4cac80a0d2b2":0
1580+
1581+
AES-256-ECB crypt Encrypt NIST KAT #4
1582+
depends_on:MBEDTLS_AES_C
1583+
test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_ENCRYPT:"ffffffffffffffffffffffffffffffffffff8000000000000000000000000000":"":"00000000000000000000000000000000":"45d089c36d5c5a4efc689e3b0de10dd5":0
1584+
1585+
AES-256-ECB crypt Decrypt NIST KAT #1
1586+
depends_on:MBEDTLS_AES_C
1587+
test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"fffffffffffffffffffffffffffffffffffffffffffffff00000000000000000":"":"edf61ae362e882ddc0167474a7a77f3a":"00000000000000000000000000000000":0
1588+
1589+
AES-256-ECB crypt Decrypt NIST KAT #2
1590+
depends_on:MBEDTLS_AES_C
1591+
test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"f8be9ba615c5a952cabbca24f68f8593039624d524c816acda2c9183bd917cb9":"":"a3944b95ca0b52043584ef02151926a8":"00000000000000000000000000000000":0
1592+
1593+
AES-256-ECB crypt Decrypt NIST KAT #3
1594+
depends_on:MBEDTLS_AES_C
1595+
test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"623a52fcea5d443e48d9181ab32c7421":"761c1fe41a18acf20d241650611d90f1":0
1596+
1597+
AES-256-ECB crypt Decrypt NIST KAT #4
1598+
depends_on:MBEDTLS_AES_C
1599+
test_vec_crypt:MBEDTLS_CIPHER_AES_256_ECB:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"":"ddc6bf790c15760d8d9aeb6f9a75fd4e":"80000000000000000000000000000000":0
1600+
1601+
AES-128-CBC crypt Encrypt NIST KAT #1
1602+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1603+
test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"80000000000000000000000000000000":"3ad78e726c1ec02b7ebfe92b23d9ec34":0
1604+
1605+
AES-128-CBC crypt Encrypt NIST KAT #2
1606+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1607+
test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"ffffffffffffffffffffffffffffe000":"00000000000000000000000000000000":"00000000000000000000000000000000":"323994cfb9da285a5d9642e1759b224a":0
1608+
1609+
AES-128-CBC crypt Encrypt NIST KAT #3
1610+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1611+
test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"10a58869d74be5a374cf867cfb473859":"00000000000000000000000000000000":"00000000000000000000000000000000":"6d251e6944b051e04eaa6fb4dbf78465":0
1612+
1613+
AES-128-CBC crypt Encrypt NIST KAT #4
1614+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1615+
test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_ENCRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"f34481ec3cc627bacd5dc3fb08f273e6":"0336763e966d92595a567cc9ce537f5e":0
1616+
1617+
AES-128-CBC crypt Decrypt NIST KAT #1
1618+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1619+
test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"3ad78e726c1ec02b7ebfe92b23d9ec34":"80000000000000000000000000000000":0
1620+
1621+
AES-128-CBC crypt Decrypt NIST KAT #2
1622+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1623+
test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"ffffc000000000000000000000000000":"00000000000000000000000000000000":"df556a33438db87bc41b1752c55e5e49":"00000000000000000000000000000000":0
1624+
1625+
AES-128-CBC crypt Decrypt NIST KAT #3
1626+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1627+
test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"10a58869d74be5a374cf867cfb473859":"00000000000000000000000000000000":"6d251e6944b051e04eaa6fb4dbf78465":"00000000000000000000000000000000":0
1628+
1629+
AES-128-CBC crypt Decrypt NIST KAT #4
1630+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1631+
test_vec_crypt:MBEDTLS_CIPHER_AES_128_CBC:MBEDTLS_DECRYPT:"00000000000000000000000000000000":"00000000000000000000000000000000":"0336763e966d92595a567cc9ce537f5e":"f34481ec3cc627bacd5dc3fb08f273e6":0
1632+
1633+
AES-192-CBC crypt Encrypt NIST KAT #1
1634+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1635+
test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"80000000000000000000000000000000":"6cd02513e8d4dc986b4afe087a60bd0c":0
1636+
1637+
AES-192-CBC crypt Encrypt NIST KAT #2
1638+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1639+
test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"ff0000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"00000000000000000000000000000000":"833f71258d53036b02952c76c744f5a1":0
1640+
1641+
AES-192-CBC crypt Encrypt NIST KAT #3
1642+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1643+
test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"e9f065d7c13573587f7875357dfbb16c53489f6a4bd0f7cd":"00000000000000000000000000000000":"00000000000000000000000000000000":"0956259c9cd5cfd0181cca53380cde06":0
1644+
1645+
AES-192-CBC crypt Encrypt NIST KAT #4
1646+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1647+
test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_ENCRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"1b077a6af4b7f98229de786d7516b639":"275cfc0413d8ccb70513c3859b1d0f72":0
1648+
1649+
AES-192-CBC crypt Decrypt NIST KAT #1
1650+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1651+
test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"6cd02513e8d4dc986b4afe087a60bd0c":"80000000000000000000000000000000":0
1652+
1653+
AES-192-CBC crypt Decrypt NIST KAT #2
1654+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1655+
test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"ffe000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"7ababc4b3f516c9aafb35f4140b548f9":"00000000000000000000000000000000":0
1656+
1657+
AES-192-CBC crypt Decrypt NIST KAT #3
1658+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1659+
test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"e9f065d7c13573587f7875357dfbb16c53489f6a4bd0f7cd":"00000000000000000000000000000000":"0956259c9cd5cfd0181cca53380cde06":"00000000000000000000000000000000":0
1660+
1661+
AES-192-CBC crypt Decrypt NIST KAT #4
1662+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1663+
test_vec_crypt:MBEDTLS_CIPHER_AES_192_CBC:MBEDTLS_DECRYPT:"000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"275cfc0413d8ccb70513c3859b1d0f72":"1b077a6af4b7f98229de786d7516b639":0
1664+
1665+
AES-256-CBC crypt Encrypt NIST KAT #1
1666+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1667+
test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"80000000000000000000000000000000":"ddc6bf790c15760d8d9aeb6f9a75fd4e":0
1668+
1669+
AES-256-CBC crypt Encrypt NIST KAT #2
1670+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1671+
test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"ff00000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"00000000000000000000000000000000":"ec52a212f80a09df6317021bc2a9819e":0
1672+
1673+
AES-256-CBC crypt Encrypt NIST KAT #3
1674+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1675+
test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"c47b0294dbbbee0fec4757f22ffeee3587ca4730c3d33b691df38bab076bc558":"00000000000000000000000000000000":"00000000000000000000000000000000":"46f2fb342d6f0ab477476fc501242c5f":0
1676+
1677+
AES-256-CBC crypt Encrypt NIST KAT #4
1678+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1679+
test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_ENCRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"014730f80ac625fe84f026c60bfd547d":"5c9d844ed46f9885085e5d6a4f94c7d7":0
1680+
1681+
AES-256-CBC crypt Decrypt NIST KAT #1
1682+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1683+
test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"ddc6bf790c15760d8d9aeb6f9a75fd4e":"80000000000000000000000000000000":0
1684+
1685+
AES-256-CBC crypt Decrypt NIST KAT #2
1686+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1687+
test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"ffe0000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"d1ccb9b1337002cbac42c520b5d67722":"00000000000000000000000000000000":0
1688+
1689+
AES-256-CBC crypt Decrypt NIST KAT #3
1690+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1691+
test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"c47b0294dbbbee0fec4757f22ffeee3587ca4730c3d33b691df38bab076bc558":"00000000000000000000000000000000":"46f2fb342d6f0ab477476fc501242c5f":"00000000000000000000000000000000":0
1692+
1693+
AES-256-CBC crypt Decrypt NIST KAT #4
1694+
depends_on:MBEDTLS_AES_C:MBEDTLS_CIPHER_MODE_CBC
1695+
test_vec_crypt:MBEDTLS_CIPHER_AES_256_CBC:MBEDTLS_DECRYPT:"0000000000000000000000000000000000000000000000000000000000000000":"00000000000000000000000000000000":"5c9d844ed46f9885085e5d6a4f94c7d7":"014730f80ac625fe84f026c60bfd547d":0
1696+
15131697
Cipher Corner Case behaviours
15141698
depends_on:MBEDTLS_AES_C
15151699
cipher_special_behaviours:

tests/suites/test_suite_cipher.function

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,16 +98,19 @@ void cipher_special_behaviours( )
9898
mbedtls_cipher_context_t ctx;
9999
unsigned char input[32];
100100
unsigned char output[32];
101+
#if defined (MBEDTLS_CIPHER_MODE_CBC)
101102
unsigned char iv[32];
103+
#endif
102104
size_t olen = 0;
103105

104106
mbedtls_cipher_init( &ctx );
105107
memset( input, 0, sizeof( input ) );
106108
memset( output, 0, sizeof( output ) );
109+
#if defined(MBEDTLS_CIPHER_MODE_CBC)
107110
memset( iv, 0, sizeof( iv ) );
108111

109112
/* Check and get info structures */
110-
cipher_info = mbedtls_cipher_info_from_type( MBEDTLS_CIPHER_AES_128_ECB );
113+
cipher_info = mbedtls_cipher_info_from_type( MBEDTLS_CIPHER_AES_128_CBC );
111114
TEST_ASSERT( NULL != cipher_info );
112115

113116
TEST_ASSERT( 0 == mbedtls_cipher_setup( &ctx, cipher_info ) );
@@ -120,6 +123,14 @@ void cipher_special_behaviours( )
120123
TEST_ASSERT( mbedtls_cipher_set_iv( &ctx, iv, 0 )
121124
== MBEDTLS_ERR_CIPHER_BAD_INPUT_DATA );
122125

126+
mbedtls_cipher_free( &ctx );
127+
mbedtls_cipher_init( &ctx );
128+
#endif /* MBEDTLS_CIPHER_MODE_CBC */
129+
cipher_info = mbedtls_cipher_info_from_type( MBEDTLS_CIPHER_AES_128_ECB );
130+
TEST_ASSERT( NULL != cipher_info );
131+
132+
TEST_ASSERT( 0 == mbedtls_cipher_setup( &ctx, cipher_info ) );
133+
123134
/* Update ECB with partial block */
124135
TEST_ASSERT( mbedtls_cipher_update( &ctx, input, 1, output, &olen )
125136
== MBEDTLS_ERR_CIPHER_FULL_BLOCK_EXPECTED );
@@ -635,6 +646,55 @@ exit:
635646
}
636647
/* END_CASE */
637648

649+
/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_WITH_PADDING */
650+
void test_vec_crypt( int cipher_id, int operation, char *hex_key,
651+
char *hex_iv, char *hex_input, char *hex_result,
652+
int finish_result )
653+
{
654+
unsigned char key[50];
655+
unsigned char input[16];
656+
unsigned char result[16];
657+
unsigned char iv[16];
658+
size_t key_len, iv_len, inputlen, resultlen;
659+
mbedtls_cipher_context_t ctx;
660+
unsigned char output[32];
661+
size_t outlen;
662+
663+
mbedtls_cipher_init( &ctx );
664+
665+
memset( key, 0x00, sizeof( key ) );
666+
memset( input, 0x00, sizeof( input ) );
667+
memset( result, 0x00, sizeof( result ) );
668+
memset( output, 0x00, sizeof( output ) );
669+
memset( iv, 0x00, sizeof( iv ) );
670+
671+
/* Prepare context */
672+
TEST_ASSERT( 0 == mbedtls_cipher_setup( &ctx,
673+
mbedtls_cipher_info_from_type( cipher_id ) ) );
674+
675+
key_len = unhexify( key, hex_key );
676+
inputlen = unhexify( input, hex_input );
677+
resultlen = unhexify( result, hex_result );
678+
679+
TEST_ASSERT( 0 == mbedtls_cipher_setkey( &ctx, key, 8 * key_len, operation ) );
680+
if( MBEDTLS_MODE_CBC == ctx.cipher_info->mode )
681+
TEST_ASSERT( 0 == mbedtls_cipher_set_padding_mode( &ctx, MBEDTLS_PADDING_NONE ) );
682+
683+
iv_len = unhexify( iv, hex_iv );
684+
685+
TEST_ASSERT( finish_result == mbedtls_cipher_crypt( &ctx, iv_len ? iv : NULL,
686+
iv_len, input, inputlen,
687+
output, &outlen ) );
688+
TEST_ASSERT( resultlen == outlen );
689+
/* check plaintext only if everything went fine */
690+
if( 0 == finish_result )
691+
TEST_ASSERT( 0 == memcmp( output, result, outlen ) );
692+
693+
exit:
694+
mbedtls_cipher_free( &ctx );
695+
}
696+
/* END_CASE */
697+
638698
/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_WITH_PADDING */
639699
void set_padding( int cipher_id, int pad_mode, int ret )
640700
{

0 commit comments

Comments
 (0)