1diff --git a/lib/crypto/crypto_scrypt-ref.c b/lib/crypto/crypto_scrypt-ref.c
2index 79a6f8f..60ef2aa 100644
3--- a/lib/crypto/crypto_scrypt-ref.c
4+++ b/lib/crypto/crypto_scrypt-ref.c
5@@ -34,7 +34,11 @@
6 #include <stdlib.h>
7 #include <string.h>
8
9+#ifdef USE_OPENSSL_PBKDF2
10+#include <openssl/evp.h>
11+#else
12 #include "sha256.h"
13+#endif
14 #include "sysendian.h"
15
16 #include "crypto_scrypt.h"
17@@ -256,7 +260,11 @@ crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
18 		goto err2;
19
20 	/* 1: (B_0 ... B_{p-1}) <-- PBKDF2(P, S, 1, p * MFLen) */
21+#ifdef USE_OPENSSL_PBKDF2
22+	PKCS5_PBKDF2_HMAC((const char *)passwd, passwdlen, salt, saltlen, 1, EVP_sha256(), p * 128 * r, B);
23+#else
24 	PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, 1, B, p * 128 * r);
25+#endif
26
27 	/* 2: for i = 0 to p - 1 do */
28 	for (i = 0; i < p; i++) {
29@@ -265,7 +273,11 @@ crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
30 	}
31
32 	/* 5: DK <-- PBKDF2(P, B, 1, dkLen) */
33+#ifdef USE_OPENSSL_PBKDF2
34+	PKCS5_PBKDF2_HMAC((const char *)passwd, passwdlen, B, p * 128 * r, 1, EVP_sha256(), buflen, buf);
35+#else
36 	PBKDF2_SHA256(passwd, passwdlen, B, p * 128 * r, 1, buf, buflen);
37+#endif
38
39 	/* Free memory. */
40 	free(V);
41diff --git a/lib/crypto/crypto_scrypt-sse.c b/lib/crypto/crypto_scrypt-sse.c
42index 875175e..dd18f29 100644
43--- a/lib/crypto/crypto_scrypt-sse.c
44+++ b/lib/crypto/crypto_scrypt-sse.c
45@@ -37,7 +37,11 @@
46 #include <stdlib.h>
47 #include <string.h>
48
49+#ifdef USE_OPENSSL_PBKDF2
50+#include <openssl/evp.h>
51+#else
52 #include "sha256.h"
53+#endif
54 #include "sysendian.h"
55
56 #include "crypto_scrypt.h"
57@@ -332,7 +336,11 @@ crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
58 #endif
59
60 	/* 1: (B_0 ... B_{p-1}) <-- PBKDF2(P, S, 1, p * MFLen) */
61+#ifdef USE_OPENSSL_PBKDF2
62+	PKCS5_PBKDF2_HMAC((const char *)passwd, passwdlen, salt, saltlen, 1, EVP_sha256(), p * 128 * r, B);
63+#else
64 	PBKDF2_SHA256(passwd, passwdlen, salt, saltlen, 1, B, p * 128 * r);
65+#endif
66
67 	/* 2: for i = 0 to p - 1 do */
68 	for (i = 0; i < p; i++) {
69@@ -341,7 +349,11 @@ crypto_scrypt(const uint8_t * passwd, size_t passwdlen,
70 	}
71
72 	/* 5: DK <-- PBKDF2(P, B, 1, dkLen) */
73+#ifdef USE_OPENSSL_PBKDF2
74+	PKCS5_PBKDF2_HMAC((const char *)passwd, passwdlen, B, p * 128 * r, 1, EVP_sha256(), buflen, buf);
75+#else
76 	PBKDF2_SHA256(passwd, passwdlen, B, p * 128 * r, 1, buf, buflen);
77+#endif
78
79 	/* Free memory. */
80 #ifdef MAP_ANON
81