static LUA_FUNCTION(openssl_bio_get_ssl) { BIO* bio = CHECK_OBJECT(1, BIO, "openssl.bio"); SSL* ssl = NULL; int ret = BIO_get_ssl(bio, &ssl); if (ret == 1) { openssl_newvalue(L, ssl); PUSH_OBJECT(ssl, "openssl.ssl"); openssl_refrence(L, ssl, +1); return 1; } return 0; }
static int openssl_ssl_ctx(lua_State*L) { SSL* s = CHECK_OBJECT(1, SSL, "openssl.ssl"); if (lua_isnoneornil(L, 2)) { SSL_CTX *ctx = SSL_get_SSL_CTX(s); openssl_refrence(L, ctx, +1); PUSH_OBJECT(ctx, "openssl.ssl_ctx"); } else { SSL_CTX *ctx = CHECK_OBJECT(2, SSL_CTX, "openssl.ssl_ctx"); ctx = SSL_set_SSL_CTX(s, ctx); PUSH_OBJECT(ctx, "openssl.ssl_ctx"); } return 1; }