From: Martin Bosslet Date: 2011-02-21T01:45:47+09:00 Subject: [ruby-core:35319] [Ruby 1.9-Feature#4412][Open] [ext/openssl] Create Digest by OID --mimepart_4d6145368b89f_1dc2ae2d38a32047 Content-Type: text/plain Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Feature #4412: [ext/openssl] Create Digest by OID http://redmine.ruby-lang.org/issues/show/4412 Author: Martin Bosslet Status: Open, Priority: Normal Category: ext, Target version: 1.9.3 Currently it is not possible to create a Digest instance by using = the OID instead of the name (sn or ln). oid =3D OpenSSL::ASN1::ObjectId.new('SHA1') digest =3D OpenSSL::ASN1::Digest.new(oid.oid) =3D> Unsupported digest algorithm (1.3.14.3.2.26). This is counter-intuitive, since the only thing that is always available in the case of object identifiers is the numeric oid, sn or ln are not always present. Since sn and ln are also quite error-prone (spelling), I'd like to suggest to have all three possibiliti= es for instantiating a Digest: by sn, by ln and by oid. I included a patch and a test to support this behaviour. Regards, Martin ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4d6145368b89f_1dc2ae2d38a32047 Content-Type: text/x-patch; name=digest_by_oid.diff Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=digest_by_oid.diff SW5kZXg6IHJ1YnkvZXh0L29wZW5zc2wvb3NzbF9kaWdlc3QuYwo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLSBydWJ5L2V4dC9vcGVuc3NsL29zc2xfZGln ZXN0LmMJKFJldmlzaW9uIDMwOTI3KQorKysgcnVieS9leHQvb3BlbnNzbC9v c3NsX2RpZ2VzdC5jCShBcmJlaXRza29waWUpCkBAIC0zNiwxMSArMzYsMTUg QEAKIEdldERpZ2VzdFB0cihWQUxVRSBvYmopCiB7CiAgICAgY29uc3QgRVZQ X01EICptZDsKKyAgICBBU04xX09CSkVDVCAqb2lkID0gTlVMTDsKIAogICAg IGlmIChUWVBFKG9iaikgPT0gVF9TVFJJTkcpIHsKICAgICAJY29uc3QgY2hh ciAqbmFtZSA9IFN0cmluZ1ZhbHVlQ1N0cihvYmopOwogCi0gICAgICAgIG1k ID0gRVZQX2dldF9kaWdlc3RieW5hbWUobmFtZSk7CisgICAgICAgIG9pZCA9 IE9CSl90eHQyb2JqKG5hbWUsIDApOworICAgICAgICBtZCA9IEVWUF9nZXRf ZGlnZXN0YnlvYmoob2lkKTsKKyAgICAgICAgQVNOMV9PQkpFQ1RfZnJlZShv aWQpOworCiAgICAgICAgIGlmICghbWQpCiAgICAgICAgICAgICBvc3NsX3Jh aXNlKHJiX2VSdW50aW1lRXJyb3IsICJVbnN1cHBvcnRlZCBkaWdlc3QgYWxn b3JpdGhtICglcykuIiwgbmFtZSk7CiAgICAgfSBlbHNlIHsKSW5kZXg6IHJ1 YnkvdGVzdC9vcGVuc3NsL3Rlc3RfZGlnZXN0LnJiCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tIHJ1YnkvdGVzdC9vcGVuc3NsL3Rlc3RfZGlnZXN0LnJi CShSZXZpc2lvbiAzMDkyNykKKysrIHJ1YnkvdGVzdC9vcGVuc3NsL3Rlc3Rf ZGlnZXN0LnJiCShBcmJlaXRza29waWUpCkBAIC03Nyw2ICs3NywyNyBAQAog ICAgICAgYXNzZXJ0X2VxdWFsKHNoYTM4NF9hLCBlbmNvZGUxNihPcGVuU1NM OjpEaWdlc3Q6OlNIQTM4NC5kaWdlc3QoImEiKSkpCiAgICAgICBhc3NlcnRf ZXF1YWwoc2hhNTEyX2EsIGVuY29kZTE2KE9wZW5TU0w6OkRpZ2VzdDo6U0hB NTEyLmRpZ2VzdCgiYSIpKSkKICAgICBlbmQKKworICAgIGRlZiB0ZXN0X2J5 X25hbWVfYW5kX29pZAorICAgICAgY2hlY2tfZGlnZXN0KE9wZW5TU0w6OkFT TjE6Ok9iamVjdElkLm5ldygnTUQ1JykpCisgICAgICBjaGVja19kaWdlc3Qo T3BlblNTTDo6QVNOMTo6T2JqZWN0SWQubmV3KCdTSEExJykpCisgICAgICBj aGVja19kaWdlc3QoT3BlblNTTDo6QVNOMTo6T2JqZWN0SWQubmV3KCdTSEEy MjQnKSkKKyAgICAgIGNoZWNrX2RpZ2VzdChPcGVuU1NMOjpBU04xOjpPYmpl Y3RJZC5uZXcoJ1NIQTI1NicpKQorICAgICAgY2hlY2tfZGlnZXN0KE9wZW5T U0w6OkFTTjE6Ok9iamVjdElkLm5ldygnU0hBMzg0JykpCisgICAgICBjaGVj a19kaWdlc3QoT3BlblNTTDo6QVNOMTo6T2JqZWN0SWQubmV3KCdTSEE1MTIn KSkKKyAgICBlbmQKKworICAgIHByaXZhdGUKKworICAgIGRlZiBjaGVja19k aWdlc3Qob2lkKQorICAgICAgZCA9IE9wZW5TU0w6OkRpZ2VzdC5uZXcob2lk LnNuKQorICAgICAgYXNzZXJ0X25vdF9uaWwoZCkKKyAgICAgIGQgPSBPcGVu U1NMOjpEaWdlc3QubmV3KG9pZC5sbikKKyAgICAgIGFzc2VydF9ub3Rfbmls KGQpCisgICAgICBkID0gT3BlblNTTDo6RGlnZXN0Lm5ldyhvaWQub2lkKQor ICAgICAgYXNzZXJ0X25vdF9uaWwoZCkKKyAgICBlbmQKKwogICBlbmQKIGVu ZAogCgo= --mimepart_4d6145368b89f_1dc2ae2d38a32047--