module Travis::Tools::SSLKey

Public Instance Methods

generate_rsa(size = 2048) click to toggle source
# File lib/travis/tools/ssl_key.rb, line 9
def generate_rsa(size = 2048)
  OpenSSL::PKey::RSA.generate(size)
end
has_passphrase?(key) click to toggle source
# File lib/travis/tools/ssl_key.rb, line 20
def has_passphrase?(key)
  OpenSSL::PKey::RSA.new(key, key)
  false
rescue OpenSSL::PKey::RSAError
  true
end
public_rsa_key(string) click to toggle source
# File lib/travis/tools/ssl_key.rb, line 13
def public_rsa_key(string)
  @to_rsa ||= OpenSSL::PKey::RSA.new(string)
rescue OpenSSL::PKey::RSAError
  public_key = string.gsub('RSA PUBLIC KEY', 'PUBLIC KEY')
  @to_rsa = OpenSSL::PKey::RSA.new(public_key)
end
remove_passphrase(key, passphrase) click to toggle source
# File lib/travis/tools/ssl_key.rb, line 27
def remove_passphrase(key, passphrase)
  OpenSSL::PKey::RSA.new(key, passphrase).to_s
rescue OpenSSL::PKey::RSAError
  false
end
rsa_ssh(key) click to toggle source
# File lib/travis/tools/ssl_key.rb, line 33
def rsa_ssh(key)
  ['ssh-rsa ', "\0\0\0\assh-rsa#{sized_bytes(key.e)}#{sized_bytes(key.n)}"].pack('a*m').gsub("\n", '')
end
sized_bytes(value) click to toggle source
# File lib/travis/tools/ssl_key.rb, line 37
def sized_bytes(value)
  bytes = to_byte_array(value.to_i)
  [bytes.size, *bytes].pack('NC*')
end
to_byte_array(num, *significant) click to toggle source
# File lib/travis/tools/ssl_key.rb, line 42
def to_byte_array(num, *significant)
  return significant if num.between?(-1, 0) and significant[0][7] == num[7]
  to_byte_array(*num.divmod(256)) + significant
end