Include Comparable in OpenSSL::X509::Name, document #<=>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30173 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
drbrain 2010-12-10 21:26:23 +00:00
parent 1bd8a97eb5
commit 62e2f9052b
3 changed files with 32 additions and 0 deletions

View File

@ -1,3 +1,8 @@
Sat Dec 11 06:23:41 2010 Eric Hodel <drbrain@segment7.net>
* ext/openssl/ossl_x509name.c: include Comparable to provide #==.
Document OpenSSL::X509::Name#<=>. [Ruby 1.9-Feature#4116]
Sat Dec 11 05:48:28 2010 Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>
* ext/tk/lib/multi-tk.rb: infinite loop on method_missing at loading.

View File

@ -266,6 +266,14 @@ ossl_x509name_cmp0(VALUE self, VALUE other)
return X509_NAME_cmp(name1, name2);
}
/*
* call-seq:
* name.cmp other => integer
* name.<=> other => integer
*
* Compares this Name with +other+ and returns 0 if they are the same and -1 or
* +1 if they are greater or less than each other respectively.
*/
static VALUE
ossl_x509name_cmp(VALUE self, VALUE other)
{
@ -292,6 +300,9 @@ ossl_x509name_eql(VALUE self, VALUE other)
/*
* call-seq:
* name.hash => integer
*
* The hash value returned is suitable for use as a certificate's filename in
* a CA path.
*/
static VALUE
ossl_x509name_hash(VALUE self)
@ -342,6 +353,8 @@ Init_ossl_x509name()
eX509NameError = rb_define_class_under(mX509, "NameError", eOSSLError);
cX509Name = rb_define_class_under(mX509, "Name", rb_cObject);
rb_include_module(cX509Name, rb_mComparable);
rb_define_alloc_func(cX509Name, ossl_x509name_alloc);
rb_define_method(cX509Name, "initialize", ossl_x509name_initialize, -1);
rb_define_method(cX509Name, "add_entry", ossl_x509name_add_entry, -1);

View File

@ -261,6 +261,20 @@ class OpenSSL::TestX509Name < Test::Unit::TestCase
assert_equal(OpenSSL::ASN1::IA5STRING, ary[3][2])
assert_equal(OpenSSL::ASN1::PRINTABLESTRING, ary[4][2])
end
def test_equals2
n1 = OpenSSL::X509::Name.parse 'CN=a'
n2 = OpenSSL::X509::Name.parse 'CN=a'
assert_equal n1, n2
end
def test_spaceship
n1 = OpenSSL::X509::Name.parse 'CN=a'
n2 = OpenSSL::X509::Name.parse 'CN=b'
assert_equal -1, n1 <=> n2
end
end
end