From: Yui NARUSE Date: 2011-11-26T23:27:58+09:00 Subject: [ruby-core:41307] [ruby-trunk - Bug #5547] Cleanup engine after a test Issue #5547 has been updated by Yui NARUSE. Martin Bosslet wrote: > Yui NARUSE wrote: > > Yes, the phenomenon, the result of above code will change after OpenSSL::Engine.load on NetBSD current, > > itself should be cryptodev's problem. > > But the test is against a principle that a test shouldn't have side effects. > > It has clearly a side effect: an engine is loaded. > > I agree, and the side effect won't give us reproducible results anyway as your > example with cryptodev has clearly shown. The initial bug that was fixed by > test_engines_free was regardless of the underlying engine being used. > > So I decided to make all tests use the "openssl" engine. It's software-based and > it should behave the same for any of us. If we get differing results from > anyone, we can at least conclude that it must be a bug in either OpenSSL itself > or in ext/openssl. > > This removes side effects from differing "default engines" or at least it should > contain them in a controllable manner. Would you agree? Yeah, I agree. Note that it should do only if possible with reasonable effort. ---------------------------------------- Bug #5547: Cleanup engine after a test http://redmine.ruby-lang.org/issues/5547 Author: Yui NARUSE Status: Third Party's Issue Priority: Normal Assignee: Yui NARUSE Category: Target version: ruby -v: ruby 2.0.0dev (2011-11-01 trunk 33605) [i386-netbsdelf5.99.56] OpenSSL::Engine.load() loads engines and register them, and it may change the behavior of some existing methods. For example on NetBSD 6 with cryptodev, it effects DH as folloing: ./ruby -ropenssl -e'p OpenSSL::PKey::DH.new(256).public_key.private?;p OpenSSL::Engine.load;p OpenSSL::PKey::DH.new(256).public_key.private?' false true true After loads cryptodev and register it (yes, it needs register. current ext/openssl can't register a engine), OpenSSL::PKey::DH#private?'s behavior seems to be changed. Whether it is a bug or not, test/openssl/test_engine.rb should be fixed. Index: test/openssl/test_engine.rb =================================================================== --- test/openssl/test_engine.rb (revision 33605) +++ test/openssl/test_engine.rb (working copy) @@ -8,6 +8,7 @@ OpenSSL::Engine.load OpenSSL::Engine.engines OpenSSL::Engine.engines + OpenSSL::Engine.cleanup end end -- http://redmine.ruby-lang.org