58 lines
1.3 KiB
Ruby
Raw Normal View History

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
gpg_version = Version.create(gpg_short_version.to_s)
@version = gpg_version
2017-08-28 16:41:46 +01:00
gpg_version >= Version.create("2.0")
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 = gpg || gpg2
2016-08-10 04:50:59 +01:00
def self.available?
File.executable?(GPG_EXECUTABLE.to_s)
2016-08-10 04:50:59 +01:00
end
def self.version
@version if available?
end
2016-08-10 04:50:59 +01:00
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
2017-08-28 16:51:58 +01:00
%no-protection
2016-08-10 04:50:59 +01:00
%commit
EOS
system GPG_EXECUTABLE, "--batch", "--gen-key", "batch.gpg"
end
2017-08-28 16:51:58 +01:00
def self.cleanup_test_processes!
odie "No GPG present to test against!" unless available?
gpgconf = Pathname.new(GPG_EXECUTABLE).parent/"gpgconf"
system gpgconf, "--kill", "gpg-agent"
system gpgconf, "--homedir", "keyrings/live", "--kill",
"gpg-agent"
end
2016-08-10 04:50:59 +01:00
end