8 static VALUE eSSLSession;
 
   11 ossl_ssl_session_free(
void *
ptr)
 
   13     SSL_SESSION_free(
ptr);
 
   17     "OpenSSL/SSL/Session",
 
   19         0, ossl_ssl_session_free,
 
   24 static VALUE ossl_ssl_session_alloc(
VALUE klass)
 
   38 ossl_ssl_session_initialize(
VALUE self, 
VALUE arg1)
 
   43         ossl_raise(eSSLSession, 
"SSL Session already initialized");
 
   50         if ((ctx = SSL_get1_session(ssl)) == 
NULL)
 
   51             ossl_raise(eSSLSession, 
"no session available");
 
   56         ctx = d2i_SSL_SESSION_bio(
in, 
NULL);
 
   72 ossl_ssl_session_initialize_copy(
VALUE self, 
VALUE other)
 
   74     SSL_SESSION *sess, *sess_other, *sess_new;
 
   80     sess_new = ASN1_dup((i2d_of_void *)i2d_SSL_SESSION, (d2i_of_void *)d2i_SSL_SESSION,
 
   86     SSL_SESSION_free(sess);
 
   92 ossl_SSL_SESSION_cmp(
const SSL_SESSION *a, 
const SSL_SESSION *b)
 
   95     const unsigned char *a_sid = SSL_SESSION_get_id(a, &a_len);
 
   97     const unsigned char *b_sid = SSL_SESSION_get_id(b, &b_len);
 
  104     return CRYPTO_memcmp(a_sid, b_sid, a_len);
 
  115         SSL_SESSION *ctx1, *ctx2;
 
  120         switch (ossl_SSL_SESSION_cmp(ctx1, ctx2)) {
 
  121         case 0:         
return Qtrue;
 
  133 ossl_ssl_session_get_time(
VALUE self)
 
  139     t = SSL_SESSION_get_time(ctx);
 
  155 ossl_ssl_session_get_timeout(
VALUE self)
 
  161     t = SSL_SESSION_get_timeout(ctx);
 
  184         SSL_SESSION_set_time(ctx, 
t);
 
  185         return ossl_ssl_session_get_time(
self);
 
  201         SSL_SESSION_set_timeout(ctx, 
t);
 
  202         return ossl_ssl_session_get_timeout(
self);
 
  211 static VALUE ossl_ssl_session_get_id(
VALUE self)
 
  214         const unsigned char *p = 
NULL;
 
  219         p = SSL_SESSION_get_id(ctx, &i);
 
  230 static VALUE ossl_ssl_session_to_der(
VALUE self)
 
  238         len = i2d_SSL_SESSION(ctx, 
NULL);
 
  245         i2d_SSL_SESSION(ctx, &p);
 
  256 static VALUE ossl_ssl_session_to_pem(
VALUE self)
 
  263         if (!(out = BIO_new(BIO_s_mem()))) {
 
  267         if (!PEM_write_bio_SSL_SESSION(out, ctx)) {
 
  269                 ossl_raise(eSSLSession, 
"SSL_SESSION_print()");
 
  283 static VALUE ossl_ssl_session_to_text(
VALUE self)
 
  290         if (!(out = BIO_new(BIO_s_mem()))) {
 
  294         if (!SSL_SESSION_print(out, ctx)) {
 
  296                 ossl_raise(eSSLSession, 
"SSL_SESSION_print()");