LUALIB_API int luaopen_openssl(lua_State*L) { if (atomic_fetch_add(&init, 1) == 0) { #if defined(OPENSSL_THREADS) CRYPTO_thread_setup(); #endif OpenSSL_add_all_ciphers(); OpenSSL_add_all_digests(); SSL_library_init(); ERR_load_ERR_strings(); ERR_load_EVP_strings(); ERR_load_crypto_strings(); ERR_load_SSL_strings(); ENGINE_load_dynamic(); ENGINE_load_openssl(); #ifdef LOAD_ENGINE_CUSTOM LOAD_ENGINE_CUSTOM #endif #ifdef OPENSSL_SYS_WINDOWS #if OPENSSL_VERSION_NUMBER < 0x10100000L RAND_screen(); #endif #endif } lua_newtable(L); lua_newtable(L); lua_pushcfunction(L, luaclose_openssl); lua_setfield(L, -2, "__gc"); lua_setmetatable(L, -2); luaL_setfuncs(L, eay_functions, 0); openssl_register_lhash(L); openssl_register_engine(L); luaopen_bio(L); lua_setfield(L, -2, "bio"); luaopen_asn1(L); lua_setfield(L, -2, "asn1"); luaopen_digest(L); lua_setfield(L, -2, "digest"); luaopen_cipher(L); lua_setfield(L, -2, "cipher"); luaopen_hmac(L); lua_setfield(L, -2, "hmac"); luaopen_pkey(L); lua_setfield(L, -2, "pkey"); #ifdef EVP_PKEY_EC luaopen_ec(L); lua_setfield(L, -2, "ec"); #endif luaopen_x509(L); lua_setfield(L, -2, "x509"); luaopen_pkcs7(L); lua_setfield(L, -2, "pkcs7"); luaopen_pkcs12(L); lua_setfield(L, -2, "pkcs12"); luaopen_ocsp(L); lua_setfield(L, -2, "ocsp"); #ifdef OPENSSL_HAVE_TS /* timestamp handling */ luaopen_ts(L); lua_setfield(L, -2, "ts"); #endif luaopen_cms(L); lua_setfield(L, -2, "cms"); luaopen_ssl(L); lua_setfield(L, -2, "ssl"); /* third part */ luaopen_bn(L); lua_setfield(L, -2, "bn"); luaopen_rsa(L); lua_setfield(L, -2, "rsa"); luaopen_dsa(L); lua_setfield(L, -2, "dsa"); luaopen_dh(L); lua_setfield(L, -2, "dh"); #ifndef OPENSSL_NO_SRP luaopen_srp(L); lua_setfield(L, -2, "srp"); #endif #ifdef ENABLE_OPENSSL_GLOBAL lua_pushvalue(L, -1); lua_setglobal(L, "openssl"); #endif return 1; }
LUALIB_API int luaopen_openssl(lua_State*L) { //CRYPTO_thread_setup(); OpenSSL_add_all_ciphers(); OpenSSL_add_all_digests(); SSL_library_init(); ERR_load_ERR_strings(); ERR_load_EVP_strings(); ERR_load_crypto_strings(); ENGINE_load_dynamic(); ENGINE_load_openssl(); #ifdef LOAD_ENGINE_CUSTOM LOAD_ENGINE_CUSTOM(); #endif #ifdef OPENSSL_SYS_WINDOWS RAND_screen(); #endif lua_newtable(L); luaL_setfuncs(L, eay_functions, 0); openssl_register_lhash(L); openssl_register_engine(L); luaopen_bio(L); lua_setfield(L, -2, "bio"); luaopen_asn1(L); lua_setfield(L, -2, "asn1"); luaopen_digest(L); lua_setfield(L, -2, "digest"); luaopen_cipher(L); lua_setfield(L, -2, "cipher"); luaopen_hmac(L); lua_setfield(L, -2, "hmac"); luaopen_pkey(L); lua_setfield(L, -2, "pkey"); #ifdef EVP_PKEY_EC luaopen_ec(L); lua_setfield(L, -2, "ec"); #endif luaopen_x509(L); lua_setfield(L, -2, "x509"); luaopen_pkcs7(L); lua_setfield(L, -2, "pkcs7"); luaopen_pkcs12(L); lua_setfield(L, -2, "pkcs12"); luaopen_ocsp(L); lua_setfield(L, -2, "ocsp"); #ifdef OPENSSL_HAVE_TS /* timestamp handling */ luaopen_ts(L); lua_setfield(L, -2, "ts"); #endif luaopen_cms(L); lua_setfield(L, -2, "cms"); luaopen_ssl(L); lua_setfield(L, -2, "ssl"); /* third part */ luaopen_bn(L); lua_setfield(L, -2, "bn"); luaopen_rsa(L); luaopen_dsa(L); luaopen_dh(L); #ifdef ENABLE_OPENSSL_GLOBAL lua_pushvalue(L, -1); lua_setglobal(L, "openssl"); #endif return 1; }
LUA_API int luaopen_openssl(lua_State*L) { char * config_filename; #ifdef ENABLE_CRYPTO_THREAD CRYPTO_thread_setup(); CRYPTO_lock(CRYPTO_LOCK,CRYPTO_LOCK_ERR,__FILE__,__LINE__); #endif if(g_init==0) { g_init = 1; OpenSSL_add_all_ciphers(); OpenSSL_add_all_digests(); SSL_library_init(); ERR_load_ERR_strings(); ERR_load_crypto_strings(); ERR_load_EVP_strings(); ERR_load_SSL_strings(); ENGINE_load_dynamic(); ENGINE_load_openssl(); } #ifdef ENABLE_CRYPTO_THREAD CRYPTO_lock(CRYPTO_UNLOCK,CRYPTO_LOCK_ERR,__FILE__,__LINE__); #endif /* Determine default SSL configuration file */ config_filename = getenv("OPENSSL_CONF"); if (config_filename == NULL) { config_filename = getenv("SSLEAY_CONF"); } /* default to 'openssl.cnf' if no environment variable is set */ if (config_filename == NULL) { snprintf(default_ssl_conf_filename, sizeof(default_ssl_conf_filename), "%s/%s", X509_get_default_cert_area(), "openssl.cnf"); } else { strncpy(default_ssl_conf_filename, config_filename, sizeof(default_ssl_conf_filename)); } openssl_register_pkey(L); openssl_register_x509(L); openssl_register_csr(L); openssl_register_digest(L); openssl_register_cipher(L); openssl_register_sk_x509(L); openssl_register_bio(L); openssl_register_crl(L); #ifdef OPENSSL_HAVE_TS openssl_register_ts(L); #endif openssl_register_conf(L); openssl_register_pkcs7(L); openssl_register_misc(L); openssl_register_engine(L); openssl_register_ssl(L); openssl_register_ocsp(L); #if LUA_VERSION_NUM==501 luaL_register(L,"openssl",eay_functions); #elif LUA_VERSION_NUM==502 lua_newtable(L); luaL_setfuncs(L, eay_functions, 0); #endif setNamedIntegers(L, consts); /* third part */ luaopen_bn(L); lua_setfield(L, -2, "bn"); return 1; }