Add HMAC support to RIPEMD-160
diff --git a/tests/suites/test_suite_mdx.data b/tests/suites/test_suite_mdx.data
index 72325d4..869ae96 100644
--- a/tests/suites/test_suite_mdx.data
+++ b/tests/suites/test_suite_mdx.data
@@ -142,6 +142,27 @@
HMAC-MD5 Bouncy Castle test #1
md5_hmac:16:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"4869205468657265":"5ccec34ea9656392457fa1ac27f08fbc"
+HMAC-RMD160 Test vector RFC 2286 #1
+rmd160_hmac:20:"0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b":"4869205468657265":"24cb4bd67d20fc1a5d2ed7732dcc39377f0a5668"
+
+HMAC-RMD160 Test vector RFC 2286 #2
+rmd160_hmac:20:"4a656665":"7768617420646f2079612077616e7420666f72206e6f7468696e673f":"dda6c0213a485a9e24f4742064a7f033b43c4069"
+
+HMAC-RMD160 Test vector RFC 2286 #3
+rmd160_hmac:20:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd":"b0b105360de759960ab4f35298e116e295d8e7c1"
+
+HMAC-RMD160 Test vector RFC 2286 #4
+rmd160_hmac:20:"0102030405060708090a0b0c0d0e0f10111213141516171819":"cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd":"d5ca862f4d21d5e610e18b4cf1beb97a4365ecf4"
+
+HMAC-RMD160 Test vector RFC 2286 #5
+rmd160_hmac:20:"0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c":"546573742057697468205472756e636174696f6e":"7619693978f91d90539ae786500ff3d8e0518e39"
+
+HMAC-RMD160 Test vector RFC 2286 #6
+rmd160_hmac:20:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":"54657374205573696e67204c6172676572205468616e20426c6f636b2d53697a65204b6579202d2048617368204b6579204669727374":"6466ca07ac5eac29e1bd523e5ada7605b791fd8b"
+
+HMAC-RMD160 Test vector RFC 2286 #7
+rmd160_hmac:20:"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa":"54657374205573696e67204c6172676572205468616e20426c6f636b2d53697a65204b657920616e64204c6172676572205468616e204f6e6520426c6f636b2d53697a652044617461":"69ea60798d71616cce5fd0871e23754cd75d5a0a"
+
MD2 Hash file #1
md2_file:"data_files/hash_file_1":"b593c098712d2e21628c8986695451a8"
diff --git a/tests/suites/test_suite_mdx.function b/tests/suites/test_suite_mdx.function
index 5c01056..6f43aac 100644
--- a/tests/suites/test_suite_mdx.function
+++ b/tests/suites/test_suite_mdx.function
@@ -160,6 +160,31 @@
}
/* END_CASE */
+/* BEGIN_CASE depends_on:POLARSSL_RMD160_C */
+void rmd160_hmac( int trunc_size, char *hex_key_string, char *hex_src_string,
+ char *hex_hash_string )
+{
+ unsigned char src_str[200];
+ unsigned char key_str[200];
+ unsigned char hash_str[41];
+ unsigned char output[20];
+ int key_len, src_len;
+
+ memset( src_str, 0x00, sizeof src_str );
+ memset( key_str, 0x00, sizeof key_str );
+ memset( hash_str, 0x00, sizeof hash_str );
+ memset( output, 0x00, sizeof output );
+
+ key_len = unhexify( key_str, hex_key_string );
+ src_len = unhexify( src_str, hex_src_string );
+
+ rmd160_hmac( key_str, key_len, src_str, src_len, output );
+ hexify( hash_str, output, sizeof output );
+
+ TEST_ASSERT( strncmp( (char *) hash_str, hex_hash_string, trunc_size * 2 ) == 0 );
+}
+/* END_CASE */
+
/* BEGIN_CASE depends_on:POLARSSL_MD2_C:POLARSSL_FS_IO */
void md2_file( char *filename, char *hex_hash_string )
{