7 #define GetSSLSession(obj, sess) do { \
8 Data_Get_Struct((obj), SSL_SESSION, (sess)); \
10 ossl_raise(rb_eRuntimeError, "SSL Session wasn't initialized."); \
14 #define SafeGetSSLSession(obj, sess) do { \
15 OSSL_Check_Kind((obj), cSSLSession); \
16 GetSSLSession((obj), (sess)); \
38 SSL_SESSION *ctx =
NULL;
48 if (!ssl || (ctx = SSL_get1_session(ssl)) ==
NULL)
57 ctx = d2i_SSL_SESSION_bio(in,
NULL);
70 RDATA(
self)->data = ctx;
75 #if HAVE_SSL_SESSION_CMP == 0
78 if (a->ssl_version != b->ssl_version ||
79 a->session_id_length != b->session_id_length)
81 return memcmp(a->session_id,b-> session_id, a->session_id_length);
92 SSL_SESSION *ctx1, *ctx2;
117 t = SSL_SESSION_get_time(ctx);
139 t = SSL_SESSION_get_timeout(ctx);
162 SSL_SESSION_set_time(ctx, t);
180 SSL_SESSION_set_timeout(ctx, t);
184 #ifdef HAVE_SSL_SESSION_GET_ID
191 static VALUE ossl_ssl_session_get_id(
VALUE self)
194 const unsigned char *
p =
NULL;
199 p = SSL_SESSION_get_id(ctx, &i);
219 len = i2d_SSL_SESSION(ctx,
NULL);
226 i2d_SSL_SESSION(ctx, &p);
247 if (!(out = BIO_new(BIO_s_mem()))) {
251 if (!(i=PEM_write_bio_SSL_SESSION(out, ctx))) {
256 BIO_get_mem_ptr(out, &buf);
279 if (!(out = BIO_new(BIO_s_mem()))) {
283 if (!SSL_SESSION_print(out, ctx)) {
288 BIO_get_mem_ptr(out, &buf);
315 #ifdef HAVE_SSL_SESSION_GET_ID
static long NUM2LONG(VALUE x)
static VALUE ossl_ssl_session_initialize(VALUE self, VALUE arg1)
static VALUE ossl_ssl_session_to_text(VALUE self)
#define Data_Get_Struct(obj, type, sval)
static VALUE ossl_ssl_session_get_timeout(VALUE self)
#define SafeGetSSLSession(obj, sess)
#define ossl_str_adjust(str, p)
#define GetSSLSession(obj, sess)
#define RSTRING_PTR(string)
static VALUE ossl_ssl_session_set_time(VALUE self, VALUE time_v)
VALUE rb_define_class_under(VALUE outer, const char *name, VALUE super)
Defines a class under the namespace of outer.
void rb_define_alloc_func(VALUE, rb_alloc_func_t)
static VALUE ossl_ssl_session_alloc(VALUE klass)
void rb_undef_method(VALUE klass, const char *name)
void Init_ossl_ssl_session(void)
int SSL_SESSION_cmp(const SSL_SESSION *a, const SSL_SESSION *b)
return Data_Wrap_Struct(CLASS_OF(interp), 0, ip_free, slave)
RUBY_EXTERN VALUE rb_cObject
#define OSSL_BIO_reset(bio)
unsigned char buf[MIME_BUF_SIZE]
static VALUE ossl_ssl_session_get_time(VALUE self)
BIO * ossl_obj2bio(VALUE obj)
register unsigned int len
int memcmp(const void *s1, const void *s2, size_t len)
static VALUE ossl_ssl_session_set_timeout(VALUE self, VALUE time_v)
VALUE rb_define_module_under(VALUE outer, const char *name)
VALUE rb_obj_is_instance_of(VALUE, VALUE)
static VALUE ossl_ssl_session_eq(VALUE val1, VALUE val2)
void ossl_raise(VALUE exc, const char *fmt,...)
return rb_funcall(q->proc, ID_call, 0)
VALUE rb_define_module(const char *name)
RUBY_EXTERN VALUE rb_cTime
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc)
static VALUE ossl_ssl_session_to_pem(VALUE self)
static VALUE ossl_ssl_session_to_der(VALUE self)
VALUE rb_str_new(const char *, long)