diff --git a/ChangeLog b/ChangeLog
index 3c38a0d2317c9026fe780a5432425f97a9db302b..da8af9aad90d87a3d87bf636dc54a5c41b0b3106 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-11-28  Niels Möller  <nisse@lysator.liu.se>
+
+	From Fredrik Thulin:
+	* testsuite/pbkdf2-test.c (test_main): Add PBKDF2-HMAC-SHA512 test
+	cases.
+
 2012-11-15  Niels Möller  <nisse@lysator.liu.se>
 
 	* sha3-permute.c (sha3_permute): Use ULL suffix on round
diff --git a/testsuite/pbkdf2-test.c b/testsuite/pbkdf2-test.c
index c0d2eaec44cccd87318b295972681899cdf8d743..ffb5580720591a1ddbcc735921c2480458794d5b 100644
--- a/testsuite/pbkdf2-test.c
+++ b/testsuite/pbkdf2-test.c
@@ -20,7 +20,7 @@
     ASSERT(dk[expect->length] == 17);					\
   } while (0)
 
-#define MAX_DKLEN 25
+#define MAX_DKLEN SHA512_DIGEST_SIZE
 
 void
 test_main (void)
@@ -28,6 +28,7 @@ test_main (void)
   uint8_t dk[MAX_DKLEN + 1];
   struct hmac_sha1_ctx sha1ctx;
   struct hmac_sha256_ctx sha256ctx;
+  struct hmac_sha512_ctx sha512ctx;
 
   /* Test vectors for PBKDF2 from RFC 6070. */
 
@@ -78,6 +79,30 @@ test_main (void)
 	       SHA256_DIGEST_SIZE, 80000, LDATA("NaCl"),
 	       SHEX("4ddcd8f60b98be21830cee5ef22701f9"));
 
+  /* PBKDF2-HMAC-SHA-512 test vectors confirmed with another
+     implementation (python-pbkdf2).
+
+     >>> from pbkdf2 import PBKDF2
+     >>> import hmac as HMAC
+     >>> from hashlib import sha512 as SHA512
+     >>> PBKDF2("password", "salt", 50, macmodule=HMAC, digestmodule=SHA512).read(64).encode('hex')
+  */
+
+  hmac_sha512_set_key (&sha512ctx, 8, "password");
+  PBKDF2_TEST (&sha512ctx, hmac_sha512_update, hmac_sha512_digest,
+	       SHA512_DIGEST_SIZE, 1, LDATA("NaCL"),
+	       SHEX("73decfa58aa2e84f94771a75736bb88bd3c7b38270cfb50cb390ed78b305656af8148e52452b2216b2b8098b761fc6336060a09f76415e9f71ea47f9e9064306"));
+
+  hmac_sha512_set_key (&sha512ctx, 9, "pass\0word");
+  PBKDF2_TEST (&sha512ctx, hmac_sha512_update, hmac_sha512_digest,
+	       SHA512_DIGEST_SIZE, 1, LDATA("sa\0lt"),
+	       SHEX("71a0ec842abd5c678bcfd145f09d83522f93361560563c4d0d63b88329871090e76604a49af08fe7c9f57156c8790996b20f06bc535e5ab5440df7e878296fa7"));
+
+  hmac_sha512_set_key (&sha512ctx, 24, "passwordPASSWORDpassword");
+  PBKDF2_TEST (&sha512ctx, hmac_sha512_update, hmac_sha512_digest,
+	       SHA512_DIGEST_SIZE, 50, LDATA("salt\0\0\0"),
+	       SHEX("016871a4c4b75f96857fd2b9f8ca28023b30ee2a39f5adcac8c9375f9bda1ccd1b6f0b2fc3adda505412e79d890056c62e524c7d51154b1a8534575bd02dee39"));
+
   /* Test convenience functions. */
 
   PBKDF2_HMAC_TEST(pbkdf2_hmac_sha1, LDATA("password"), 1, LDATA("salt"),