# File lib/net/ssh/key_factory.rb, line 50
50:       def load_data_private_key(data, passphrase=nil, ask_passphrase=true, filename="")
51:         if data.match(/-----BEGIN DSA PRIVATE KEY-----/)
52:           key_type = OpenSSL::PKey::DSA
53:         elsif data.match(/-----BEGIN RSA PRIVATE KEY-----/)
54:           key_type = OpenSSL::PKey::RSA
55:         elsif data.match(/-----BEGIN EC PRIVATE KEY-----/) && defined?(OpenSSL::PKey::EC)
56:           key_type = OpenSSL::PKey::EC
57:         elsif data.match(/-----BEGIN (.*) PRIVATE KEY-----/)
58:           raise OpenSSL::PKey::PKeyError, "not a supported key type '#{$1}'"
59:         else
60:           raise OpenSSL::PKey::PKeyError, "not a private key (#{filename})"
61:         end
62: 
63:         encrypted_key = data.match(/ENCRYPTED/)
64:         tries = 0
65: 
66:         begin
67:           return key_type.new(data, passphrase || 'invalid')
68:         rescue OpenSSL::PKey::RSAError, OpenSSL::PKey::DSAError, OpenSSL::PKey::ECError => e
69:           if encrypted_key && ask_passphrase
70:             tries += 1
71:             if tries <= 3
72:               passphrase = prompt("Enter passphrase for #{filename}:", false)
73:               retry
74:             else
75:               raise
76:             end
77:           else
78:             raise
79:           end
80:         end
81:       end