इस प्रश्न से संबंधित कोड यहाँ है: https://github.com/jchester/lua-polarssl/tree/master/srcलुआ के लिए एक सी पुस्तकालय लपेटना: मैं कार्यों की नेस्टेड टेबल कैसे बना सकता हूं?
वर्तमान में मैं PolarSSL पुस्तकालय (http://polarssl.org) के एक भाग रैप करने के लिए मुझे SHA-512 HMACs तक पहुंच प्रदान करना कोशिश कर रहा हूँ (luacrypto करता है यह प्रदान नहीं करें)।
एपीआई मैं के लिए लक्ष्य कर रहा हूँ फार्म की है:
a_sha512_hash = polarssl.hash.sha512('text')
या अधिक पूरी तरह से
local polarssl = require 'polarssl'
local hash = polarssl.hash
a_sha512_hash = hash.sha512('test')
उपरोक्त लिंक पर polarssl.c को देखें, तो आप मुझे देखेंगे पोलरएसएसएल कोड को लपेटने वाले कार्यों को लिखा गया है। तब मैं कार्य तालिकाओं इस प्रकार बनाने की कोशिश कर रहा हूँ:
LUA_API int luaopen_polarssl(lua_State *L) {
static const struct luaL_Reg core[] = {
{ NULL, NULL }
};
static const struct luaL_Reg hash_functions[] = {
{ "sha512", hash_sha512 },
{ "sha384", hash_sha384 },
{ NULL, NULL }
};
static const struct luaL_Reg hmac_functions[] = {
{ "sha512", hmac_sha512 },
{ "sha384", hmac_sha384 },
{ NULL, NULL }
};
luaL_register(L, CORE_MOD_NAME, core);
luaL_register(L, HASH_MOD_NAME, hash_functions);
luaL_register(L, HMAC_MOD_NAME, hmac_functions);
return 1;
}
कहाँ CORE_MOD_NAME = 'polarssl', HASH_MOD_NAME = 'polarssl.hash', HMAC_MOD_NAME = 'polarssl.hmac'।
जब मैं एक परीक्षण स्क्रिप्ट इस सवाल के शीर्ष पर लुआ कोड के लिए इसी तरह चलाने के लिए, मैं इस मिल:
lua: test.lua:23: attempt to index global 'polarssl' (a nil value)
stack traceback:
test.lua:23: in main chunk
[C]: ?
मैं कैसे इस module.submodule दृष्टिकोण को प्राप्त करने के उदाहरण के लिए देख कोशिश की है (उदाहरण के लिए naim बनाम luasockets), लेकिन हर किसी को इसे प्राप्त करने का एक अलग तरीका लगता है। मैं पूरी तरह से खो गया हूँ।
मैं नैम और लुसाकेट्स से लिंक नहीं कर सकता क्योंकि मैंने लिंक पर <10 बिंदु सीमा को मारा है। –
ऐसा लगता है कि कर्म को स्वादिष्ट लॉली की तरह सौंप दिया गया है, इसलिए लिंक के साथ अद्यतन पोस्ट किया गया है। –