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
Instance Attribute Details
#runner ⇒ Object
Returns the value of attribute runner.
8 9 10 |
# File 'lib/pgp/gpg/engine.rb', line 8 def runner @runner end |
Instance Method Details
#decrypt(encrypted_data, passphrase = nil) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/pgp/gpg/engine.rb', line 45 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
107 108 109 110 |
# File 'lib/pgp/gpg/engine.rb', line 107 def delete_all_keys delete_all_private_keys delete_all_public_keys end |
#delete_all_private_keys ⇒ Object
112 113 114 115 116 117 118 |
# File 'lib/pgp/gpg/engine.rb', line 112 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
120 121 122 123 124 125 126 |
# File 'lib/pgp/gpg/engine.rb', line 120 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
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/pgp/gpg/engine.rb', line 65 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
14 15 16 17 18 19 20 21 22 23 |
# File 'lib/pgp/gpg/engine.rb', line 14 def import_key(key_contents) log("Import Key") validate_gpg_version Tempfile.open do |f| f.write(key_contents) f.rewind runner.import_key_from_file(f.path) end end |
#read_recipients ⇒ Object
128 129 130 131 132 133 |
# File 'lib/pgp/gpg/engine.rb', line 128 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
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/pgp/gpg/engine.rb', line 87 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
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/pgp/gpg/engine.rb', line 25 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 |