Class: GPG::Engine
- Inherits:
-
Object
- Object
- GPG::Engine
- Includes:
- PGP::LogCapable
- Defined in:
- lib/pgp/gpg/engine.rb
Instance Attribute Summary collapse
-
#runner ⇒ Object
Returns the value of attribute runner.
Instance Method Summary collapse
- #decrypt(encrypted_data, passphrase = nil) ⇒ Object
- #delete_all_keys ⇒ Object
- #delete_all_private_keys ⇒ Object
- #delete_all_public_keys ⇒ Object
- #encrypt(plaintext_data, recipients) ⇒ Object
- #import_key(key_contents) ⇒ Object
-
#initialize(runner = nil) ⇒ Engine
constructor
A new instance of Engine.
- #read_recipients ⇒ Object
- #sign(plaintext_data, passphrase = nil) ⇒ Object
- #verify_signature(signature_data) ⇒ Object
Methods included from PGP::LogCapable
Constructor Details
#initialize(runner = nil) ⇒ Engine
Returns a new instance of Engine.
7 8 9 |
# File 'lib/pgp/gpg/engine.rb', line 7 def initialize(runner = nil) self.runner = runner || GPG::Runner.new end |
Instance Attribute Details
#runner ⇒ Object
Returns the value of attribute runner.
5 6 7 |
# File 'lib/pgp/gpg/engine.rb', line 5 def runner @runner end |
Instance Method Details
#decrypt(encrypted_data, passphrase = nil) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/pgp/gpg/engine.rb', line 46 def decrypt(encrypted_data, passphrase=nil) log("Decrypt") validate_gpg_version data = '' result = false GPG::TempPathHelper.create do |path1| GPG::TempPathHelper.create do |path2| File.write(path1, encrypted_data) result = runner.decrypt_file(path1, path2, passphrase) data = File.read(path2) if result end end [result, data] end |
#delete_all_keys ⇒ Object
108 109 110 111 |
# File 'lib/pgp/gpg/engine.rb', line 108 def delete_all_keys delete_all_private_keys delete_all_public_keys end |
#delete_all_private_keys ⇒ Object
113 114 115 116 117 118 119 |
# File 'lib/pgp/gpg/engine.rb', line 113 def delete_all_private_keys log('Delete all private keys') validate_gpg_version runner.read_private_key_fingerprints.each do |k| runner.delete_private_key k end end |
#delete_all_public_keys ⇒ Object
121 122 123 124 125 126 127 |
# File 'lib/pgp/gpg/engine.rb', line 121 def delete_all_public_keys log('Delete all public keys') validate_gpg_version runner.read_public_key_fingerprints.each do |k| runner.delete_public_key k end end |
#encrypt(plaintext_data, recipients) ⇒ Object
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/pgp/gpg/engine.rb', line 66 def encrypt(plaintext_data, recipients) log("Encrypt") raise 'Recipients cannot be empty' if recipients.empty? validate_gpg_version data = '' result = false GPG::TempPathHelper.create do |path1| GPG::TempPathHelper.create do |path2| File.write(path1, plaintext_data) result = runner.encrypt_file(path1, path2, recipients) data = File.read(path2) if result end end [result, data] end |
#import_key(key_contents) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/pgp/gpg/engine.rb', line 11 def import_key(key_contents) log("Import Key") validate_gpg_version result = [] GPG::TempPathHelper.create do |path1| File.write(path1, key_contents) result = runner.import_key_from_file(path1) end result end |
#read_recipients ⇒ Object
129 130 131 132 133 134 |
# File 'lib/pgp/gpg/engine.rb', line 129 def read_recipients validate_gpg_version public_recipients = runner.read_public_key_recipients private_recipients = runner.read_private_key_recipients (public_recipients + private_recipients).uniq end |
#sign(plaintext_data, passphrase = nil) ⇒ Object
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/pgp/gpg/engine.rb', line 88 def sign(plaintext_data, passphrase=nil) log("Sign") validate_gpg_version data = '' result = false GPG::TempPathHelper.create do |path1| GPG::TempPathHelper.create do |path2| File.write(path1, plaintext_data) result = runner.sign_file(path1, path2, passphrase) data = File.read(path2) if result end end [result, data] end |
#verify_signature(signature_data) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/pgp/gpg/engine.rb', line 26 def verify_signature(signature_data) log("Verify Signature") validate_gpg_version data = '' result = false GPG::TempPathHelper.create do |path1| GPG::TempPathHelper.create do |path2| File.write(path1, signature_data) result = runner.verify_signature_file(path1, path2) data = File.read(path2) if result end end [result, data] end |