Add tests for get_padding() (PKCS#7)
diff --git a/tests/suites/test_suite_cipher.function b/tests/suites/test_suite_cipher.function
index 765ec73..4c436f1 100644
--- a/tests/suites/test_suite_cipher.function
+++ b/tests/suites/test_suite_cipher.function
@@ -219,6 +219,27 @@
END_CASE
BEGIN_CASE
+check_padding:pad_mode:input:ret:dlen:
+ cipher_info_t cipher_info;
+ cipher_context_t ctx;
+ unsigned char input[16];
+ size_t ilen, dlen;
+
+ /* build a fake context just for getting access to get_padding */
+ memset( &ctx, 0, sizeof( ctx ) );
+ cipher_info.mode = POLARSSL_MODE_CBC;
+ ctx.cipher_info = &cipher_info;
+
+ TEST_ASSERT( 0 == cipher_set_padding_mode( &ctx, {pad_mode} ) );
+
+ ilen = unhexify( input, {input} );
+
+ TEST_ASSERT( {ret} == ctx.get_padding( input, ilen, &dlen ) );
+ if( 0 == {ret} )
+ TEST_ASSERT( dlen == {dlen} );
+END_CASE
+
+BEGIN_CASE
cipher_selftest:
{
TEST_ASSERT( cipher_self_test( 0 ) == 0 );
diff --git a/tests/suites/test_suite_cipher.padding.data b/tests/suites/test_suite_cipher.padding.data
index 3ed6ade..1c9fc0d 100644
--- a/tests/suites/test_suite_cipher.padding.data
+++ b/tests/suites/test_suite_cipher.padding.data
@@ -57,3 +57,27 @@
Set non-existent padding with BLOWFISH-CBC
depends_on:POLARSSL_BLOWFISH_C
set_padding:POLARSSL_CIPHER_BLOWFISH_CBC:-1:POLARSSL_ERR_CIPHER_BAD_INPUT_DATA
+
+Check PKCS padding #1 (correct)
+check_padding:POLARSSL_PADDING_PKCS7:"DABBAD0004040404":0:4
+
+Check PKCS padding #2 (correct)
+check_padding:POLARSSL_PADDING_PKCS7:"DABBAD0001":0:4
+
+Check PKCS padding #3 (correct)
+check_padding:POLARSSL_PADDING_PKCS7:"DABBAD000101":0:5
+
+Check PKCS padding #4 (correct)
+check_padding:POLARSSL_PADDING_PKCS7:"030303":0:0
+
+Check PKCS padding #5 (null padding)
+check_padding:POLARSSL_PADDING_PKCS7:"DABBAD0000":POLARSSL_ERR_CIPHER_INVALID_PADDING:0
+
+Check PKCS padding #6 (too few padding bytes)
+check_padding:POLARSSL_PADDING_PKCS7:"DABBAD0002":POLARSSL_ERR_CIPHER_INVALID_PADDING:0
+
+Check PKCS padding #7 (non-uniform padding bytes)
+check_padding:POLARSSL_PADDING_PKCS7:"DABBAD00030203":POLARSSL_ERR_CIPHER_INVALID_PADDING:0
+
+Check PKCS padding #8 (overlong)
+check_padding:POLARSSL_PADDING_PKCS7:"040404":POLARSSL_ERR_CIPHER_INVALID_PADDING:0