From: Martin Bosslet Date: 2011-05-12T09:38:22+09:00 Subject: [ruby-core:36122] [Ruby 1.9 - Feature #4424][Assigned] [ext/openssl] Allow public/private key creation from arbitrary data Issue #4424 has been updated by Martin Bosslet. Status changed from Open to Assigned Assignee set to Martin Bosslet Hi all, I applied http://redmine.ruby-lang.org/issues/show/4421, http://redmine.ruby-lang.org/issues/show/4422 and http://redmine.ruby-lang.org/issues/show/4423. When again looking at this I realized that there is no need for separating creation of public and private keys, one method is actually all it takes (cf. attachment). This feature would add OpenSSL::PKey.read( file | string [, pwd] ) that allows to read arbitrary keys (private or public) that are encoded in the generic X.509 format. Two questions: 1) Is it OK if I apply this? 2) Is "read" OK w.r.t naming conventions? Or should I use initialize instead (as it is done for the sub-classes RSA, DSA and EC) or name it differently altogether? Regards, Martin ---------------------------------------- Feature #4424: [ext/openssl] Allow public/private key creation from arbitrary data http://redmine.ruby-lang.org/issues/4424 Author: Martin Bosslet Status: Assigned Priority: Normal Assignee: Martin Bosslet Category: ext Target version: 1.9.3 =begin There is a public funtion in PKey that allowed to read arbitrary private keys from a file regardless of the actual key type, but it was not exposed in Ruby, only in C. In Ruby, the only way to instantiate public/private keys is by calling initialize on the correct PKey subclass, implying that you need to know what kind of key you're actually dealing with. There are situations where the key type is not known in advance, e.g. if a certificate SubjectPublicKeyInfo shall be turned into a public key. In that case you only know that you're dealing with a public key, but not necessarily with what kind of key. In situations like these it would come in handy to have methods that create a PKey instance regardless of the underlying data. The attached patch provides this by adding two module functions to PKey, read_public and read_private. They allow reading generic public/private keys from a String or a File, optionally providing a password in the case of encrypted PEM encodings. RDoc has also been supplemented. Please note that the included tests partly rely on the patches proposed in http://redmine.ruby-lang.org/issues/show/4421, http://redmine.ruby-lang.org/issues/show/4422 and http://redmine.ruby-lang.org/issues/show/4423 If those were applied, the combination with this patch would provide consistent behavior among all three public key systems supported in Ruby. Regards, Martin =end -- http://redmine.ruby-lang.org