sha384 encrypt issue

lhmwzy lhmwzy at gmail.com
Wed Apr 9 23:21:07 PDT 2014


change

local ffi_str = ffi.string
local C = ffi.C
local setmetatable = setmetatable

to

local ffi_str = ffi.string
local C = ffi.load ("libcrypto.so")
local setmetatable = setmetatable

It works well.



2014-04-10 8:00 GMT+08:00 lhmwzy <lhmwzy at gmail.com>:

> 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/c9ab24ad/attachment-0001.htm>


More information about the Users mailing list