static int openssl_ssl_ctx_cert_store(lua_State*L) { SSL_CTX* ctx = CHECK_OBJECT(1, SSL_CTX, "openssl.ssl_ctx"); X509_STORE *store = NULL; #if OPENSSL_VERSION_NUMBER > 0x10002000L if (lua_isnoneornil(L, 2)) { store = SSL_CTX_get_cert_store(ctx); CRYPTO_add(&store->references, 1, CRYPTO_LOCK_X509_STORE); PUSH_OBJECT(store, "openssl.x509_store"); return 1; } else { store = CHECK_OBJECT(2, X509_STORE, "openssl.x509_store"); CRYPTO_add(&store->references, 1, CRYPTO_LOCK_X509_STORE); SSL_CTX_set_cert_store(ctx, store); X509_STORE_set_trust(store, 1); return 0; } #else luaL_error(L, "NYI, openssl below 1.0.2 not fully support this feature"); return 0; #endif }
static VALUE ossl_x509store_set_trust(VALUE self, VALUE trust) { #if (OPENSSL_VERSION_NUMBER >= 0x00907000L) X509_STORE *store; long t = NUM2LONG(trust); GetX509Store(self, store); X509_STORE_set_trust(store, t); #else rb_iv_set(self, "@trust", trust); #endif return trust; }