Project

General

Profile

Actions

Feature #5103

closed

[ext/openssl] Object equality for objects based on ASN.1 structures

Added by MartinBosslet (Martin Bosslet) over 12 years ago. Updated over 8 years ago.

Status:
Feedback
Assignee:
-
Target version:
-
[ruby-core:38541]

Description

Equality behaviour is not overridden by any of the classes that base on ASN.1 structures. This leads to
counterintuitive things such as

require 'openssl'
key = OpenSSL::PKey::RSA.new 256

puts [key].include?(key) # => true

key2 = OpenSSL::PKey.read key.to_pem

puts key == key2 # => false
puts [key].include?(key2) # => false

That's why I'd like to suggest to determine equality for these objects on the encoding level, i.e.
two such objects are equal iff obj1.to_der == obj2.to_der.

Updated by drbrain (Eric Hodel) over 12 years ago

Is object equality on ASN.1 structures not useful or hard?

Updated by MartinBosslet (Martin Bosslet) over 12 years ago

Eric Hodel wrote:

Is object equality on ASN.1 structures not useful or hard?

I think it could be quite useful, for example when comparing certificates. Right now an easy way to do this is by comparing cert1.to_der == cert2.to_der.
But still I would prefer the more intuitive cert1 == cert2 and implement it so that it actually compares the binary DER representation internally. This would be quite easy to implement since all ASN.1-based classes feature a to_der method already.

Updated by mame (Yusuke Endoh) over 11 years ago

  • Target version changed from 1.9.4 to 2.6
Actions #4

Updated by zzak (zzak _) over 8 years ago

  • Assignee changed from MartinBosslet (Martin Bosslet) to 7150
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0