Project

General

Profile

Feature #12354

Updated by hsbt (Hiroshi SHIBATA) almost 8 years ago

Steps to reproduce: 

 Create EC key: 

 ```ruby 
 key = OpenSSL::PKey::EC.new("prime256v1") 
 key.generate_key 
 ``` 

 Try and output in pem format 

 ```ruby 
 key.to_pem #Outputs private key pem 
 

 key.public_key.to_pem #Error 
 ``` 

 In order to output a public key pem, a new key object must be created with no private key: 

 ```ruby 
 key_pub = OpenSSL::PKey::EC.new(key.group) 
 key_pub.public_key = key.public_key 
 ``` 

 Output pem 

 ```ruby 
 key_pub.to_pem #Success! 
 ``` 

 From viewing the source, http://rxr.whitequark.org/mri/source/ext/openssl/ossl_pkey_ec.c#466 it seems that if the key is private there is no way to output a public key for that key object

Back