Skip to content

Commit d08dea3

Browse files
author
Kevin Paulisse
committed
Minimum password length 4 for ruby 2.4 and SSL key validation
1 parent 2af0a71 commit d08dea3

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

lib/octocatalog-diff/util/httparty.rb

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,20 @@ def self.ssl_options(options)
118118
else
119119
raise ArgumentError, 'SSL client auth enabled but no client keypair specified'
120120
end
121-
if result[:pem]
122-
result[:pem_password] = options[:ssl_client_password] if options[:ssl_client_password]
123-
# Make sure there's not a password required, or that if the password is given, it is correct.
124-
# We do not want to wait on STDIN.
125-
# This will raise OpenSSL::PKey::RSAError if the key needs a password.
126-
OpenSSL::PKey::RSA.new(result[:pem], result[:pem_password] || '')
121+
122+
# Make sure there's not a password required, or that if the password is given, it is correct.
123+
# This will raise OpenSSL::PKey::RSAError if the key needs a password.
124+
if result[:pem] && options[:ssl_client_password]
125+
result[:pem_password] = options[:ssl_client_password]
126+
_trash = OpenSSL::PKey::RSA.new(result[:pem], result[:pem_password])
127+
elsif result[:pem]
128+
# Ruby 2.4 requires a minimum password length of 4. If no password is needed for
129+
# the certificate, the specified password here is effectively ignored.
130+
# We do not want to wait on STDIN, so a password-protected certificate without a
131+
# password will cause this to raise an error. There are two checks here, to exclude
132+
# an edge case where somebody did actually put '1234' as their password.
133+
_trash = OpenSSL::PKey::RSA.new(result[:pem], '1234')
134+
_trash = OpenSSL::PKey::RSA.new(result[:pem], '5678')
127135
end
128136
end
129137

0 commit comments

Comments
 (0)