module Argon2::KDF

Constants

VERSION

Attributes

ffi_lib[RW]

Public Class Methods

argon2d(pass, salt:, t:, m:, p:, length:) click to toggle source
# File lib/argon2/kdf.rb, line 41
def argon2d(pass, salt:, t:, m:, p:, length:)
  kdf(:argon2d, pass, salt, t, m, p, length)
end
argon2i(pass, salt:, t:, m:, p:, length:) click to toggle source
# File lib/argon2/kdf.rb, line 37
def argon2i(pass, salt:, t:, m:, p:, length:)
  kdf(:argon2i, pass, salt, t, m, p, length)
end
argon2id(pass, salt:, t:, m:, p:, length:) click to toggle source
# File lib/argon2/kdf.rb, line 45
def argon2id(pass, salt:, t:, m:, p:, length:)
  kdf(:argon2id, pass, salt, t, m, p, length)
end

Private Class Methods

check_status(status) click to toggle source
# File lib/argon2/kdf.rb, line 59
def check_status(status)
  if status != 0
    raise Error, FFI.argon2_error_message(status).to_s
  end
end
kdf(variant, pass, salt, t, m, p, length) click to toggle source
# File lib/argon2/kdf.rb, line 51
def kdf(variant, pass, salt, t, m, p, length)
  pwd = Fiddle::Pointer[pass.to_str]
  salt = Fiddle::Pointer[salt.to_str]
  hash = Fiddle::Pointer.malloc(length)
  check_status FFI.send("#{variant}_hash_raw", t, 1 << m, p, pwd, pwd.size, salt, salt.size, hash, hash.size)
  hash[0, hash.size]
end