[ruby-cvs:62448] rhe:r55285 (trunk): openssl: adapt OpenSSL::PKey to OpenSSL 1.1.0 opaque structs

rhe at ruby-lang.org rhe at ruby-lang.org
Mon Jun 6 00:00:48 JST 2016


rhe	2016-06-06 00:00:47 +0900 (Mon, 06 Jun 2016)

  New Revision: 55285

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=55285

  Log:
    openssl: adapt OpenSSL::PKey to OpenSSL 1.1.0 opaque structs
    
    * ext/openssl/openssl_missing.[ch]: Implement EVP_PKEY_get0_*() and
      {RSA,DSA,EC_KEY,DH}_get0_*() functions.
      OpenSSL 1.1.0 makes EVP_PKEY/RSA/DSA/DH opaque. We used to provide
      setter methods for each parameter of each PKey type, for example
      PKey::RSA#e=, but this is no longer possible because the new API
      RSA_set0_key() requires the 'n' at the same time. This commit adds
      deprecation warning to them and adds PKey::*#set_* methods as direct
      wrapper for those new APIs. For example, 'rsa.e = 3' now needs to be
      rewritten as 'rsa.set_key(rsa.n, 3, rsa.d)'.
      [ruby-core:75225] [Feature #12324]
    
    * ext/openssl/ossl_pkey*.[ch]: Use the new accessor functions. Implement
      RSA#set_{key,factors,crt_params}, DSA#set_{key,pqg}, DH#set_{key,pqg}.
      Emit a warning with rb_warning() when old setter methods are used.
    
    * test/drb/ut_array_drbssl.rb, test/drb/ut_drb_drbssl.rb,
      test/rubygems/test_gem_remote_fetcher.rb: Don't set a priv_key for DH
      object that are used in tmp_dh_callback. Generating a new key pair
      every time should be fine - actually the private exponent is ignored
      in OpenSSL >= 1.0.2f/1.0.1r even if we explicitly set.
      https://www.openssl.org/news/secadv/20160128.txt

  Modified files:
    trunk/ChangeLog
    trunk/ext/openssl/extconf.rb
    trunk/ext/openssl/openssl_missing.h
    trunk/ext/openssl/ossl_pkey.c
    trunk/ext/openssl/ossl_pkey.h
    trunk/ext/openssl/ossl_pkey_dh.c
    trunk/ext/openssl/ossl_pkey_dsa.c
    trunk/ext/openssl/ossl_pkey_ec.c
    trunk/ext/openssl/ossl_pkey_rsa.c
    trunk/ext/openssl/ossl_ssl.c
    trunk/test/drb/ut_array_drbssl.rb
    trunk/test/drb/ut_drb_drbssl.rb
    trunk/test/openssl/utils.rb
    trunk/test/rubygems/test_gem_remote_fetcher.rb


More information about the ruby-cvs mailing list