sha384 encrypt issue
lhmwzy
lhmwzy at gmail.com
Wed Apr 9 17:00:57 PDT 2014
I use sha384 through luajit ffi .
local ffi = require "ffi"
local ffi_new = ffi.new
local ffi_str = ffi.string
local C = ffi.C
local setmetatable = setmetatable
local error = error
local _M = { _VERSION = '0.09' }
local mt = { __index = _M }
ffi.cdef[[
typedef unsigned long SHA_LONG;
typedef unsigned long long SHA_LONG64;
enum {
SHA_LBLOCK = 16,
SHA512_CBLOCK = SHA_LBLOCK*8
};
typedef struct SHA512state_st
{
SHA_LONG64 h[8];
SHA_LONG64 Nl,Nh;
union {
SHA_LONG64 d[SHA_LBLOCK];
unsigned char p[SHA512_CBLOCK];
} u;
unsigned int num,md_len;
} SHA512_CTX;
int SHA384_Init(SHA512_CTX *c);
int SHA384_Update(SHA512_CTX *c, const void *data, size_t len);
int SHA384_Final(unsigned char *md, SHA512_CTX *c);
]]
local digest_len = 48
local buf = ffi_new("char[?]", digest_len)
local ctx_ptr_type = ffi.typeof("SHA512_CTX[1]")
function _M.new(self)
local ctx = ffi_new(ctx_ptr_type)
if C.SHA384_Init(ctx) == 0 then
return nil
end
return setmetatable({ _ctx = ctx }, mt)
end
function _M.update(self, s)
return C.SHA384_Update(self._ctx, s, #s) == 1
end
function _M.final(self)
if C.SHA384_Final(buf, self._ctx) == 1 then
return ffi_str(buf, digest_len)
end
return nil
end
function _M.reset(self)
return C.SHA384_Init(self._ctx) == 1
end
But luajit reports that
new() function return nil,that means SHA384_Init() is failed.
The same code in FreeBSD is run OK.
Is this a dragonflybsd issue or luajit issue?
#uname -a
DragonFly reli.com 3.6-RELEASE DragonFly v3.6.1.22.gcd2a4-RELEASE #0: Sat
Mar 29 15:40:48 CST 2014 lhm at reli.com:/usr/obj/usr/src/sys/lhmwzy
x86_64
#./luajit-2.1.0-alpha
LuaJIT 2.1.0-alpha -- Copyright (C) 2005-2014 Mike Pall. http://luajit.org/
JIT: ON SSE2 SSE3 SSE4.1 fold cse dce fwd dse narrow loop abc sink fuse
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.dragonflybsd.org/pipermail/users/attachments/20140410/13211789/attachment.html>
More information about the Users
mailing list