Class: OpenSSL::SSL::Session
- Inherits:
-
Object
- Object
- OpenSSL::SSL::Session
- Defined in:
- ossl_ssl_session.c
Defined Under Namespace
Classes: SessionError
Instance Method Summary collapse
- #==(session2) ⇒ Boolean
- #id ⇒ Object
-
#new(SSLSocket|string) ⇒ Object
constructor
Parameters
SSLSocketis an OpenSSL::SSL::SSLSocketstringmust be a DER or PEM encoded Session. - #time ⇒ Time
- #time= ⇒ Object
-
#timeout ⇒ Integer
How long until the session expires in seconds.
- #timeout= ⇒ Object
-
#to_der ⇒ aString
Returns an ASN1 encoded String that contains the Session object.
-
#to_pem ⇒ String
Returns a PEM encoded String that contains the Session object.
-
#to_text ⇒ String
Shows everything in the Session object.
Constructor Details
#new(SSLSocket|string) ⇒ Object
Parameters
SSLSocket is an OpenSSL::SSL::SSLSocket string must be a DER or PEM encoded Session.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'ossl_ssl_session.c', line 36 static VALUE ossl_ssl_session_initialize(VALUE self, VALUE arg1) { SSL_SESSION *ctx = NULL; VALUE obj; unsigned char *p; if (RDATA(self)->data) ossl_raise(eSSLSession, "SSL Session already initialized"); if (rb_obj_is_instance_of(arg1, cSSLSocket)) { SSL *ssl; Data_Get_Struct(arg1, SSL, ssl); if ((ctx = SSL_get1_session(ssl)) == NULL) ossl_raise(eSSLSession, "no session available"); } else { BIO *in = ossl_obj2bio(arg1); ctx = PEM_read_bio_SSL_SESSION(in, NULL, NULL, NULL); if (!ctx) { BIO_reset(in); ctx = d2i_SSL_SESSION_bio(in, NULL); } BIO_free(in); if (!ctx) ossl_raise(rb_eArgError, "unknown type"); } /* should not happen */ if (ctx == NULL) ossl_raise(eSSLSession, "ctx not set - internal error"); RDATA(self)->data = ctx; return self; } |
Instance Method Details
#==(session2) ⇒ Boolean
82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'ossl_ssl_session.c', line 82 static VALUE ossl_ssl_session_eq(VALUE val1, VALUE val2) { SSL_SESSION *ctx1, *ctx2; GetSSLSession(val1, ctx1); SafeGetSSLSession(val2, ctx2); switch (SSL_SESSION_cmp(ctx1, ctx2)) { case 0: return Qtrue; default: return Qfalse; } } |
#id ⇒ Object
#time ⇒ Time
100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'ossl_ssl_session.c', line 100 static VALUE ossl_ssl_session_get_time(VALUE self) { SSL_SESSION *ctx; time_t t; GetSSLSession(self, ctx); t = SSL_SESSION_get_time(ctx); if (t == 0) return Qnil; return rb_funcall(rb_cTime, rb_intern("at"), 1, LONG2NUM(t)); } |
#time= ⇒ Object
#timeout ⇒ Integer
How long until the session expires in seconds.
122 123 124 125 126 127 128 129 130 131 132 |
# File 'ossl_ssl_session.c', line 122 static VALUE ossl_ssl_session_get_timeout(VALUE self) { SSL_SESSION *ctx; time_t t; GetSSLSession(self, ctx); t = SSL_SESSION_get_timeout(ctx); return ULONG2NUM(t); } |
#timeout= ⇒ Object
#to_der ⇒ aString
Returns an ASN1 encoded String that contains the Session object.
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 |
# File 'ossl_ssl_session.c', line 187 static VALUE ossl_ssl_session_to_der(VALUE self) { SSL_SESSION *ctx; unsigned char buf[1024*10], *p; int len; GetSSLSession(self, ctx); p = buf; len = i2d_SSL_SESSION(ctx, &p); if (len <= 0) ossl_raise(eSSLSession, "i2d_SSL_SESSION"); else if (len >= sizeof(buf)) ossl_raise(eSSLSession, "i2d_SSL_SESSION too large"); return rb_str_new((const char *) p, len); } |
#to_pem ⇒ String
Returns a PEM encoded String that contains the Session object.
212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 |
# File 'ossl_ssl_session.c', line 212 static VALUE ossl_ssl_session_to_pem(VALUE self) { SSL_SESSION *ctx; BIO *out; BUF_MEM *buf; VALUE str; int i; GetSSLSession(self, ctx); if (!(out = BIO_new(BIO_s_mem()))) { ossl_raise(eSSLSession, "BIO_s_mem()"); } if (!(i=PEM_write_bio_SSL_SESSION(out, ctx))) { BIO_free(out); ossl_raise(eSSLSession, "SSL_SESSION_print()"); } BIO_get_mem_ptr(out, &buf); str = rb_str_new(buf->data, buf->length); BIO_free(out); return str; } |
#to_text ⇒ String
Shows everything in the Session object.
245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 |
# File 'ossl_ssl_session.c', line 245 static VALUE ossl_ssl_session_to_text(VALUE self) { SSL_SESSION *ctx; BIO *out; BUF_MEM *buf; VALUE str; GetSSLSession(self, ctx); if (!(out = BIO_new(BIO_s_mem()))) { ossl_raise(eSSLSession, "BIO_s_mem()"); } if (!SSL_SESSION_print(out, ctx)) { BIO_free(out); ossl_raise(eSSLSession, "SSL_SESSION_print()"); } BIO_get_mem_ptr(out, &buf); str = rb_str_new(buf->data, buf->length); BIO_free(out); return str; } |