diff --git a/testsuite/hmac-test.c b/testsuite/hmac-test.c
index d3068d902a36a44d6371cf1393d1a469652d58a9..0f14934697061cdf367640861e9f7bc41a09d92b 100644
--- a/testsuite/hmac-test.c
+++ b/testsuite/hmac-test.c
@@ -16,6 +16,7 @@ test_main(void)
 {
   struct hmac_md5_ctx md5;
   struct hmac_sha1_ctx sha1;
+  struct hmac_ripemd160_ctx ripemd160;
   struct hmac_sha224_ctx sha224;
   struct hmac_sha256_ctx sha256;
   struct hmac_sha384_ctx sha384;
@@ -127,7 +128,80 @@ test_main(void)
 	    LDATA("monkey monkey monkey monkey"),
 	    LDATA("12345678901234567890123456789012345678901234567890123456789012345678901234567890"),
 	    H("939dd45512ee3a594b6654f6b8de27f7"));
-  
+
+  /* Test vectors for ripemd160, from
+     http://homes.esat.kuleuven.be/~bosselae/ripemd160.html */
+  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
+	    HL("00112233445566778899aabbccddeeff01234567"),
+	    LDATA(""),
+	    H("cf387677bfda8483e63b57e06c3b5ecd8b7fc055"));
+
+  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
+	    HL("00112233445566778899aabbccddeeff01234567"),
+	    LDATA("a"),
+	    H("0d351d71b78e36dbb7391c810a0d2b6240ddbafc"));
+
+  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
+	    HL("00112233445566778899aabbccddeeff01234567"),
+	    LDATA("abc"),
+	    H("f7ef288cb1bbcc6160d76507e0a3bbf712fb67d6"));
+
+  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
+	    HL("00112233445566778899aabbccddeeff01234567"),
+	    LDATA("message digest"),
+	    H("f83662cc8d339c227e600fcd636c57d2571b1c34"));
+
+  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
+	    HL("00112233445566778899aabbccddeeff01234567"),
+	    LDATA("abcdefghijklmnopqrstuvwxyz"),
+	    H("843d1c4eb880ac8ac0c9c95696507957d0155ddb"));
+
+  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
+	    HL("00112233445566778899aabbccddeeff01234567"),
+	    LDATA("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"),
+	    H("60f5ef198a2dd5745545c1f0c47aa3fb5776f881"));
+
+  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
+	    HL("00112233445566778899aabbccddeeff01234567"),
+	    LDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
+	    H("e49c136a9e5627e0681b808a3b97e6a6e661ae79"));
+
+  /* Other key */
+  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
+	    HL("0123456789abcdeffedcba987654321000112233"),
+	    LDATA(""),
+	    H("fe69a66c7423eea9c8fa2eff8d9dafb4f17a62f5"));
+
+  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
+	    HL("0123456789abcdeffedcba987654321000112233"),
+	    LDATA("a"),
+	    H("85743e899bc82dbfa36faaa7a25b7cfd372432cd"));
+
+  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
+	    HL("0123456789abcdeffedcba987654321000112233"),
+	    LDATA("abc"),
+	    H("6e4afd501fa6b4a1823ca3b10bd9aa0ba97ba182"));
+
+  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
+	    HL("0123456789abcdeffedcba987654321000112233"),
+	    LDATA("message digest"),
+	    H("2e066e624badb76a184c8f90fba053330e650e92"));
+
+  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
+	    HL("0123456789abcdeffedcba987654321000112233"),
+	    LDATA("abcdefghijklmnopqrstuvwxyz"),
+	    H("07e942aa4e3cd7c04dedc1d46e2e8cc4c741b3d9"));
+
+  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
+	    HL("0123456789abcdeffedcba987654321000112233"),
+	    LDATA("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"),
+	    H("b6582318ddcfb67a53a67d676b8ad869aded629a"));
+
+  HMAC_TEST(ripemd160, RIPEMD160_DIGEST_SIZE,
+	    HL("0123456789abcdeffedcba987654321000112233"),
+	    LDATA("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"),
+	    H("f1be3ee877703140d34f97ea1ab3a07c141333e2"));
+
   /* Test vectors for sha1, from RFC-2202 */
 
   /* sha1 - 1 */