libs/hashes.lua

Wed, 27 Jun 2018 19:17:51 +0100

author
Matthew Wild <mwild1@gmail.com>
date
Wed, 27 Jun 2018 19:17:51 +0100
changeset 421
f35cfdff31b6
parent 414
2a5eff919f4a
child 422
ff59e4a1a600
permissions
-rw-r--r--

libs.hashes: Add support for sha1 lib from luarocks


local function not_available()
	error("not available", 2);
end

local _M = {
	md5 = not_available;
	hmac_md5 = not_available;

	sha1 = not_available;
	hmac_sha1 = not_available;
	scram_Hi_sha1 = not_available;

	sha256 = not_available;
	hmac_sha256 = not_available;

	sha512 = not_available;
	hmac_sha512 = not_available;
};

local function with(mod, f)
	local ok, pkg = pcall(require, mod);
	if ok then f(pkg); end
end

with("bgcrypto.md5", function (md5)
	_M.md5 = md5.digest;
	_M.hmac_md5 = md5.hmac.digest;
end);

with("bgcrypto.sha1", function (sha1)
	_M.sha1 = sha1.digest;
	_M.hmac_sha1 = sha1.hmac.digest;
	_M.scram_Hi_sha1 = function (p, s, i) return sha1.pbkdf2(p, s, i, 20); end;
end);

with("bgcrypto.sha256", function (sha256)
	_M.sha256 = sha256.digest;
	_M.hmac_sha256 = sha256.hmac.digest;
end);

with("bgcrypto.sha512", function (sha512)
	_M.sha512 = sha512.digest;
	_M.hmac_sha512 = sha512.hmac.digest;
end);

with("sha1", function (sha1)
	_M.sha1 = function (data, hex)
		if hex then
			return sha1.sha1(data);
		else
			return (sha1.binary(data));
		end
	end;
end);

return _M;

mercurial