Class: Puppet::Provider::YumrepoMetadataKey::GpgKeyring
- Inherits:
-
Puppet::Provider::YumrepoMetadataKey
- Object
- Puppet::Provider::YumrepoMetadataKey
- Puppet::Provider::YumrepoMetadataKey::GpgKeyring
- Defined in:
- lib/puppet/provider/yumrepo_metadata_key/gpg_keyring.rb
Overview
Backend parent for providers that keep keys in a per-repo GnuPG homedir (yum and dnf4).
Class Method Summary collapse
- .export_key(home, fingerprint) ⇒ Object
- .fingerprints_in(home) ⇒ Object
-
.remove_key(home, fingerprint) ⇒ Object
–expert bypasses gpg’s pre-delete check for a matching secret key.
- .set_ultimate_trust(home, fingerprint) ⇒ Object
- .store_key(home, fingerprint, text) ⇒ Object
- .trusted?(home, fingerprint) ⇒ Boolean
Class Method Details
.export_key(home, fingerprint) ⇒ Object
17 18 19 20 21 |
# File 'lib/puppet/provider/yumrepo_metadata_key/gpg_keyring.rb', line 17 def export_key(home, fingerprint) return unless home && File.directory?(home) gpg_export_armored(home, fingerprint) end |
.fingerprints_in(home) ⇒ Object
8 9 10 11 12 13 14 15 |
# File 'lib/puppet/provider/yumrepo_metadata_key/gpg_keyring.rb', line 8 def fingerprints_in(home) ret = parse_primary_fprs(gpg_at(home, '--with-colons', '--fingerprint', '--list-keys')).uniq debug("fingerprints_in(#{home.inspect}) -> #{ret.inspect}") ret rescue Puppet::ExecutionFailure => e debug("fingerprints_in(#{home.inspect}) failed: #{e..lines.first.to_s.strip}") [] end |
.remove_key(home, fingerprint) ⇒ Object
–expert bypasses gpg’s pre-delete check for a matching secret key. That check needs gpg-agent, but –no-autostart forbids starting one, so without –expert, –delete-keys fails with “no gpg-agent running”.
35 36 37 |
# File 'lib/puppet/provider/yumrepo_metadata_key/gpg_keyring.rb', line 35 def remove_key(home, fingerprint) gpg_at(home, '--expert', '--yes', '--delete-keys', fingerprint) end |
.set_ultimate_trust(home, fingerprint) ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/puppet/provider/yumrepo_metadata_key/gpg_keyring.rb', line 51 def set_ultimate_trust(home, fingerprint) Tempfile.create(['metakey-ownertrust', '.txt']) do |f| f.write("#{fingerprint}:6:\n") f.flush gpg_at(home, '--import-ownertrust', f.path) end end |
.store_key(home, fingerprint, text) ⇒ Object
23 24 25 26 27 28 29 30 |
# File 'lib/puppet/provider/yumrepo_metadata_key/gpg_keyring.rb', line 23 def store_key(home, fingerprint, text) Tempfile.create(['metakey', '.asc']) do |f| f.write(text) f.flush gpg_at(home, '--import', f.path) set_ultimate_trust(home, fingerprint) end end |
.trusted?(home, fingerprint) ⇒ Boolean
39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/puppet/provider/yumrepo_metadata_key/gpg_keyring.rb', line 39 def trusted?(home, fingerprint) ret = gpg_at(home, '--export-ownertrust').each_line.any? do |line| fields = line.chomp.split(':') fields[0].to_s.upcase == fingerprint.to_s.upcase && fields[1] == '6' end debug("trusted?(#{home.inspect}, #{fingerprint.inspect}) -> #{ret.inspect}") ret rescue Puppet::ExecutionFailure => e debug("trusted?(#{home.inspect}, #{fingerprint.inspect}) failed: #{e..lines.first.to_s.strip}") false end |