module OpenSSL::PKey
Public Class Methods
pkcs8_parse(der_bytes)
click to toggle source
Parse the correct type of OpenSSL::PKey
from a der encoded PKCS8 private key
# File lib/keystores/jks/pkcs8_key.rb, line 142 def self.pkcs8_parse(der_bytes) key_type = extract_key_type(der_bytes) OpenSSL::PKey.const_get(key_type).new(der_bytes) end
Private Class Methods
box(lines)
click to toggle source
# File lib/keystores/jks/pkcs8_key.rb, line 165 def self.box(lines) lines.unshift '-----BEGIN PRIVATE KEY-----' lines.push '-----END PRIVATE KEY-----' lines.join("\n") end
der_to_pem(der)
click to toggle source
# File lib/keystores/jks/pkcs8_key.rb, line 161 def self.der_to_pem(der) box(Base64.strict_encode64(der).scan(/.{1,64}/)) end
extract_key_type(der_bytes)
click to toggle source
# File lib/keystores/jks/pkcs8_key.rb, line 149 def self.extract_key_type(der_bytes) asn1 = OpenSSL::ASN1.decode(der_bytes) algorithm = asn1.value[1].value[0].value.downcase if algorithm.include? 'rsa' 'RSA' elsif algorithm.include? 'ec' 'EC' elsif algorithm.include? 'dsa' 'DSA' end end