From: Hiroshi Nakamura Date: 2011-07-25T16:04:52+09:00 Subject: [ruby-core:38473] [Ruby 1.9 - Bug #4961] [ext/openssl] SSLSession#initialize fails with OpenSSL 0.9.7 Issue #4961 has been updated by Hiroshi Nakamura. Martin Bosslet wrote: > OK, I found it. The Base64-encoded session in test_ssl_session.rb contains the field > > tlsext_tick [10] OCTET STRING OPTIONAL > > This was added with TLS and is not recognized by OpenSSL 0.9.7 yet. So this issue can be fixed > by updating test_ssl_session.rb. I'll change the current Base64 session. Then I'll add another > one that is used only when OpenSSL >= 0.9.8, including the tslext_tick field. My bad. It's me who added the test data... Thank you. ---------------------------------------- Bug #4961: [ext/openssl] SSLSession#initialize fails with OpenSSL 0.9.7 http://redmine.ruby-lang.org/issues/4961 Author: Martin Bosslet Status: Closed Priority: Normal Assignee: Martin Bosslet Category: ext Target version: 1.9.3 ruby -v: trunk r32366 With Ruby at r32366 and OpenSSL 0.97m on Fedora 15, running make test-all TESTS="openssl/test_ssl_session.rb" yields this: 1) Error: test_session_time(OpenSSL::TestSSLSession): ArgumentError: unknown type: expecting an asn1 sequence /home/martin/Projekte/Ruby/ruby/test/openssl/test_ssl_session.rb:63:in `initialize' /home/martin/Projekte/Ruby/ruby/test/openssl/test_ssl_session.rb:63:in `new' /home/martin/Projekte/Ruby/ruby/test/openssl/test_ssl_session.rb:63:in `test_session_time' 2) Error: test_session_timeout(OpenSSL::TestSSLSession): ArgumentError: unknown type: expecting an asn1 sequence /home/martin/Projekte/Ruby/ruby/test/openssl/test_ssl_session.rb:76:in `initialize' /home/martin/Projekte/Ruby/ruby/test/openssl/test_ssl_session.rb:76:in `new' /home/martin/Projekte/Ruby/ruby/test/openssl/test_ssl_session.rb:76:in `test_session_timeout' The error occurs in ossl_ssl_session_initialize: ctx = PEM_read_bio_SSL_SESSION(in, NULL, NULL, NULL); if (!ctx) { OSSL_BIO_reset(in); ctx = d2i_SSL_SESSION_bio(in, NULL); } BIO_free(in); if (!ctx) ossl_raise(rb_eArgError, "unknown type"); Since the test tries to create a session from a valid PEM encoding, the first call should already have succeeded but does not. It does succeed with all 0.9.8 versions I tried with and also with 1.0.0d. The error has first been reported by Koichi Sasada in [ruby-core:37724], running on MacOS X and OpenSSL 0.9.7m. -- http://redmine.ruby-lang.org