Class: Cheffish::KeyFormatter
- Inherits:
-
Object
- Object
- Cheffish::KeyFormatter
- Defined in:
- lib/cheffish/key_formatter.rb
Class Method Summary collapse
-
.decode(str, pass_phrase = nil, filename = '') ⇒ Object
Returns nil or key, format.
- .encode(key, key_format) ⇒ Object
Class Method Details
.decode(str, pass_phrase = nil, filename = '') ⇒ Object
Returns nil or key, format
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/cheffish/key_formatter.rb', line 10 def self.decode(str, pass_phrase=nil, filename='') key_format = {} key_format[:format] = format_of(str) case key_format[:format] when :openssh key = decode_openssh_key(str, filename) else begin key = OpenSSL::PKey.read(str) { pass_phrase } rescue return nil end end key_format[:type] = type_of(key) key_format[:size] = size_of(key) key_format[:pass_phrase] = pass_phrase if pass_phrase # TODO cipher, exponent [key, key_format] end |
.encode(key, key_format) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/cheffish/key_formatter.rb', line 33 def self.encode(key, key_format) format = key_format[:format] || :pem case format when :openssh encode_openssh_key(key) when :pem if key_format[:pass_phrase] cipher = key_format[:cipher] || 'DES-EDE3-CBC' key.to_pem(OpenSSL::Cipher.new(cipher), key_format[:pass_phrase]) else key.to_pem end when :der key.to_der when :fingerprint hexes = Digest::MD5.hexdigest(key.to_der) # Put : between every pair of hexes hexes.scan(/../).join(':') else raise "Unrecognized key format #{format}" end end |