Feature #6819

OpenSSL::Digest.new should return an instance of the chosen subclass

Added by Eric Hodel almost 3 years ago. Updated almost 3 years ago.

[ruby-core:46908]
Status:Closed
Priority:Normal
Assignee:Martin Bosslet

Description

=begin
(({OpenSSL::Digest.new})) allows you to create a digest given the digest name:

digester = OpenSSL::Digest.new "SHA1"
digester.update "hello"
# …

The digester returned is of class (({OpenSSL::Digest})) regardless of the input type.

I would like this changed so that it returns the specific subclass of (({OpenSSL::Digest})):

digester = OpenSSL::Digest.new "SHA1"
digester.class #=> OpenSSL::Digest::SHA1

When multiple digests are created this makes it easier to distinguish the type of digest you are working with.

This will also make (({OpenSSL::Digest.new})) behave similarly to (({Digest})):

digester = Digest("SHA1").new
digester.class #=> Digest::SHA1

=end

openssl.digest.module_function.patch Magnifier (1.08 KB) Eric Hodel, 08/02/2012 07:30 AM

Associated revisions

Revision 36592
Added by emboss almost 3 years ago

  • ext/openssl/lib/openssl/digest.rb test/openssl/test_digest.rb: Add Digest module function to OpenSSL module and test it. Patch provided by Eric Hodel. [Feature #6819]

Revision 36592
Added by emboss almost 3 years ago

  • ext/openssl/lib/openssl/digest.rb test/openssl/test_digest.rb: Add Digest module function to OpenSSL module and test it. Patch provided by Eric Hodel. [Feature #6819]

History

#1 Updated by Nobuyoshi Nakada almost 3 years ago

=begin
--- drbrain (Eric Hodel) wrote:
I would like this changed so that it returns the specific subclass of OpenSSL::Digest:

  digester = OpenSSL::Digest.new "SHA1"
  digester.class #=> OpenSSL::Digest::SHA1

It sounds like quite exceptional.
Rather I'd suggest (({OpenSSL.Digest()})) method as well as (({Digest()})), or new similar class method.

--- drbrain (Eric Hodel) wrote:
This will also make OpenSSL::Digest.new behave similarly to Digest:

  digester = Digest("SHA1").new
  digester.class #=> Digest::SHA1

It differs than your proposal.
=end

#2 Updated by Nobuyoshi Nakada almost 3 years ago

  • Description updated (diff)

#3 Updated by Eric Hodel almost 3 years ago

I agree. I have attached a patch to implement your suggestion.

#4 Updated by Anonymous almost 3 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r36592.
Eric, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


  • ext/openssl/lib/openssl/digest.rb test/openssl/test_digest.rb: Add Digest module function to OpenSSL module and test it. Patch provided by Eric Hodel. [Feature #6819]

#5 Updated by Martin Bosslet almost 3 years ago

drbrain (Eric Hodel) wrote:

I agree. I have attached a patch to implement your suggestion.

Thanks to both of you!

Also available in: Atom PDF