Feature #4481 » ssl_client_ca.diff
ext/openssl/ossl.c | ||
---|---|---|
}
|
||
OSSL_IMPL_SK2ARY(x509, X509)
|
||
OSSL_IMPL_SK2ARY(x509crl, X509_CRL)
|
||
OSSL_IMPL_SK2ARY(x509name, X509_NAME)
|
||
static VALUE
|
||
ossl_str_new(int size)
|
ext/openssl/ossl.h | ||
---|---|---|
STACK_OF(X509) *ossl_protect_x509_ary2sk(VALUE,int*);
|
||
VALUE ossl_x509_sk2ary(STACK_OF(X509) *certs);
|
||
VALUE ossl_x509crl_sk2ary(STACK_OF(X509_CRL) *crl);
|
||
VALUE ossl_x509name_sk2ary(STACK_OF(X509_NAME) *names);
|
||
VALUE ossl_buf2str(char *buf, int len);
|
||
#define ossl_str_adjust(str, p) \
|
||
do{\
|
ext/openssl/ossl_ssl.c | ||
---|---|---|
return INT2FIX(SSL_get_verify_result(ssl));
|
||
}
|
||
/*
|
||
* call-seq:
|
||
* ssl.client_ca => [x509name, ...]
|
||
*
|
||
* Returns the list of client CAs.
|
||
*
|
||
* In server mode, returns the list set by SSLContext#client_ca=.
|
||
* In client mode, returns the list of client CAs sent from the server.
|
||
*/
|
||
static VALUE
|
||
ossl_ssl_get_client_ca_list(VALUE self)
|
||
{
|
||
SSL *ssl;
|
||
STACK_OF(X509_NAME) *ca;
|
||
|
||
Data_Get_Struct(self, SSL, ssl);
|
||
if (!ssl) {
|
||
rb_warning("SSL session is not started yet.");
|
||
return Qnil;
|
||
}
|
||
ca = SSL_get_client_CA_list(ssl);
|
||
return ossl_x509name_sk2ary(ca);
|
||
}
|
||
void
|
||
Init_ossl_ssl()
|
||
{
|
||
... | ... | |
rb_define_method(cSSLSocket, "session_reused?", ossl_ssl_session_reused, 0);
|
||
rb_define_method(cSSLSocket, "session=", ossl_ssl_set_session, 1);
|
||
rb_define_method(cSSLSocket, "verify_result", ossl_ssl_get_verify_result, 0);
|
||
rb_define_method(cSSLSocket, "client_ca", ossl_ssl_get_client_ca_list, 0);
|
||
|
||
#define ossl_ssl_def_const(x) rb_define_const(mSSL, #x, INT2NUM(SSL_##x))
|
||
ossl_ssl_def_const(VERIFY_NONE);
|