| 48 |
48 |
|
| 49 |
49 |
if options[:public_key]
|
| 50 |
50 |
@public_key = options[:public_key]
|
|
51 |
@public_key = OpenSSL::PKey::RSA.new(Base64::decode64(@public_key))
|
| 51 |
52 |
elsif @private_key != nil
|
| 52 |
53 |
# Init ssh keys using private key. public key is extracted in a
|
| 53 |
|
# format compatible with openssl. The public key does not contain
|
| 54 |
|
# "---- BEGIN/END PUBLIC KEY ----" and is in a single line
|
| 55 |
|
@public_key = @private_key_rsa.public_key.to_pem.split("\n")
|
| 56 |
|
@public_key = @public_key.reject {|l| l.match(/PUBLIC KEY/) }.join('')
|
|
54 |
# format compatible with openssl.
|
|
55 |
@public_key = @private_key.public_key
|
| 57 |
56 |
end
|
| 58 |
|
@public_key_rsa = OpenSSL::PKey::RSA.new(Base64::decode64(@public_key)) unless @public_key.nil?
|
| 59 |
57 |
|
| 60 |
58 |
if @private_key.nil? && @public_key.nil?
|
| 61 |
59 |
raise "You have to define at least one of the keys"
|
| ... | ... | |
| 96 |
94 |
# Returns a valid password string to create a user using this auth driver.
|
| 97 |
95 |
# In this case the ssh public key.
|
| 98 |
96 |
def password
|
| 99 |
|
@public_key
|
|
97 |
# The public key does not contain "---- BEGIN/END PUBLIC KEY ----"
|
|
98 |
# and is in a single line
|
|
99 |
@public_key.to_pem.split("\n").reject {|l| l.match(/PUBLIC KEY/) }.join('')
|
| 100 |
100 |
end
|
| 101 |
101 |
|
| 102 |
102 |
# Checks the proxy created with the login method
|
| ... | ... | |
| 127 |
127 |
# Encrypts data with the private key of the user and returns
|
| 128 |
128 |
# base 64 encoded output in a single line
|
| 129 |
129 |
def encrypt(data)
|
| 130 |
|
Base64::encode64(@private_key_rsa.private_encrypt(data)).gsub!(/\n/, '').strip
|
|
130 |
Base64::encode64(@private_key.private_encrypt(data)).gsub!(/\n/, '').strip
|
| 131 |
131 |
end
|
| 132 |
132 |
|
| 133 |
133 |
# Decrypts base 64 encoded data with pub_key (public key)
|
| 134 |
134 |
def decrypt(data)
|
| 135 |
|
@public_key_rsa.public_decrypt(Base64::decode64(data))
|
|
135 |
@public_key.public_decrypt(Base64::decode64(data))
|
| 136 |
136 |
end
|
| 137 |
137 |
end
|
| 138 |
|
-
|