Module: OpenSSL::PKCS5

Defined in:
ossl_pkcs5.c

Defined Under Namespace

Classes: PKCS5Error

Class Method Summary collapse

Class Method Details

.pbkdf2_hmac(pass, salt, iter, keylen, digest) ⇒ String

Parameters

  • pass - string

  • salt - string

  • iter - integer - should be greater than 1000. 2000 is better.

  • keylen - integer

  • digest - a string or OpenSSL::Digest object.

Available in OpenSSL 0.9.9?.

Digests other than SHA1 may not be supported by other cryptography libraries.

Returns:

  • (String)


26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'ossl_pkcs5.c', line 26

static VALUE
ossl_pkcs5_pbkdf2_hmac(VALUE self, VALUE pass, VALUE salt, VALUE iter, VALUE keylen, VALUE digest)
{
    VALUE str;
    const EVP_MD *md;
    int len = NUM2INT(keylen);

    StringValue(pass);
    StringValue(salt);
    md = GetDigestPtr(digest);

    str = rb_str_new(0, len);

    if (PKCS5_PBKDF2_HMAC(RSTRING_PTR(pass), RSTRING_LEN(pass),
			  (unsigned char *)RSTRING_PTR(salt), RSTRING_LEN(salt),
			  NUM2INT(iter), md, len,
			  (unsigned char *)RSTRING_PTR(str)) != 1)
        ossl_raise(ePKCS5, "PKCS5_PBKDF2_HMAC");

    return str;
}

.pbkdf2_hmac_sha1(pass, salt, iter, keylen) ⇒ String

Parameters

  • pass - string

  • salt - string

  • iter - integer - should be greater than 1000. 2000 is better.

  • keylen - integer

This method is available almost any version OpenSSL.

Conforms to rfc2898.

Returns:

  • (String)


67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'ossl_pkcs5.c', line 67

static VALUE
ossl_pkcs5_pbkdf2_hmac_sha1(VALUE self, VALUE pass, VALUE salt, VALUE iter, VALUE keylen)
{
    VALUE str;
    int len = NUM2INT(keylen);

    StringValue(pass);
    StringValue(salt);

    str = rb_str_new(0, len);

    if (PKCS5_PBKDF2_HMAC_SHA1(RSTRING_PTR(pass), RSTRING_LENINT(pass),
			       (const unsigned char *)RSTRING_PTR(salt), RSTRING_LENINT(salt), NUM2INT(iter),
			       len, (unsigned char *)RSTRING_PTR(str)) != 1)
        ossl_raise(ePKCS5, "PKCS5_PBKDF2_HMAC_SHA1");

    return str;
}