6 #if OPENSSL_VERSION_NUMBER >= 0x10100000 && !defined(LIBRESSL_VERSION_NUMBER)
7 # include <openssl/kdf.h>
10 static VALUE mKDF, eKDF;
40 VALUE pass, salt, opts, kwargs[4],
str;
41 static ID kwargs_ids[4];
70 #if defined(HAVE_EVP_PBE_SCRYPT)
106 VALUE pass, salt, opts, kwargs[5],
str;
107 static ID kwargs_ids[5];
111 if (!kwargs_ids[0]) {
123 N = NUM2UINT64T(kwargs[1]);
124 r = NUM2UINT64T(kwargs[2]);
125 p = NUM2UINT64T(kwargs[3]);
144 #if OPENSSL_VERSION_NUMBER >= 0x10100000 && !defined(LIBRESSL_VERSION_NUMBER)
170 VALUE ikm, salt, info, opts, kwargs[4],
str;
171 static ID kwargs_ids[4];
172 int saltlen, ikmlen, infolen;
177 if (!kwargs_ids[0]) {
198 pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_HKDF,
NULL);
201 if (EVP_PKEY_derive_init(pctx) <= 0) {
202 EVP_PKEY_CTX_free(pctx);
205 if (EVP_PKEY_CTX_set_hkdf_md(pctx, md) <= 0) {
206 EVP_PKEY_CTX_free(pctx);
209 if (EVP_PKEY_CTX_set1_hkdf_salt(pctx, (
unsigned char *)
RSTRING_PTR(salt),
211 EVP_PKEY_CTX_free(pctx);
212 ossl_raise(eKDF,
"EVP_PKEY_CTX_set_hkdf_salt");
214 if (EVP_PKEY_CTX_set1_hkdf_key(pctx, (
unsigned char *)
RSTRING_PTR(ikm),
216 EVP_PKEY_CTX_free(pctx);
217 ossl_raise(eKDF,
"EVP_PKEY_CTX_set_hkdf_key");
219 if (EVP_PKEY_CTX_add1_hkdf_info(pctx, (
unsigned char *)
RSTRING_PTR(info),
221 EVP_PKEY_CTX_free(pctx);
222 ossl_raise(eKDF,
"EVP_PKEY_CTX_set_hkdf_info");
225 EVP_PKEY_CTX_free(pctx);
229 EVP_PKEY_CTX_free(pctx);
313 #if defined(HAVE_EVP_PBE_SCRYPT)
316 #if OPENSSL_VERSION_NUMBER >= 0x10100000 && !defined(LIBRESSL_VERSION_NUMBER)