2016-08-10 04:50:59 +01:00
|
|
|
require "utils"
|
|
|
|
|
|
|
|
class Gpg
|
2016-08-10 16:46:58 +01:00
|
|
|
def self.find_gpg(executable)
|
|
|
|
which_all(executable).detect do |gpg|
|
2016-08-10 04:50:59 +01:00
|
|
|
gpg_short_version = Utils.popen_read(gpg, "--version")[/\d\.\d/, 0]
|
|
|
|
next unless gpg_short_version
|
2017-03-14 17:08:36 -04:00
|
|
|
gpg_version = Version.create(gpg_short_version.to_s)
|
|
|
|
gpg_version == Version.create("2.0") ||
|
|
|
|
gpg_version == Version.create("2.1")
|
2016-08-10 04:50:59 +01:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2016-08-10 16:46:58 +01:00
|
|
|
def self.gpg
|
|
|
|
find_gpg("gpg")
|
|
|
|
end
|
|
|
|
|
2016-08-10 04:50:59 +01:00
|
|
|
def self.gpg2
|
2016-08-10 16:46:58 +01:00
|
|
|
find_gpg("gpg2")
|
2016-08-10 04:50:59 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
GPG_EXECUTABLE = gpg2 || gpg
|
|
|
|
|
|
|
|
def self.available?
|
2016-08-10 17:28:24 +01:00
|
|
|
File.executable?(GPG_EXECUTABLE.to_s)
|
2016-08-10 04:50:59 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
def self.create_test_key(path)
|
|
|
|
odie "No GPG present to test against!" unless available?
|
|
|
|
|
|
|
|
(path/"batch.gpg").write <<-EOS.undent
|
|
|
|
Key-Type: RSA
|
|
|
|
Key-Length: 2048
|
|
|
|
Subkey-Type: RSA
|
|
|
|
Subkey-Length: 2048
|
|
|
|
Name-Real: Testing
|
|
|
|
Name-Email: testing@foo.bar
|
|
|
|
Expire-Date: 1d
|
|
|
|
%commit
|
|
|
|
EOS
|
|
|
|
system GPG_EXECUTABLE, "--batch", "--gen-key", "batch.gpg"
|
|
|
|
end
|
|
|
|
end
|