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);
|
||