Issue #5547 has been updated by Yui NARUSE.


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.
----------------------------------------
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