ruby-pgp 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +20 -0
  3. data/.rbenv-version +1 -0
  4. data/.rspec +1 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +14 -0
  7. data/Gemfile +4 -0
  8. data/LICENSE.txt +22 -0
  9. data/README.md +82 -0
  10. data/Rakefile +12 -0
  11. data/bin/jrpgp +12 -0
  12. data/bin/rpgp +12 -0
  13. data/lib/pgp/cli/runner.rb +78 -0
  14. data/lib/pgp/cli.rb +160 -0
  15. data/lib/pgp/decryptor.rb +16 -0
  16. data/lib/pgp/encryptor.rb +33 -0
  17. data/lib/pgp/gpg/engine.rb +141 -0
  18. data/lib/pgp/gpg/runner.rb +189 -0
  19. data/lib/pgp/gpg/temp_path_helper.rb +25 -0
  20. data/lib/pgp/keys_importer.rb +11 -0
  21. data/lib/pgp/log.rb +28 -0
  22. data/lib/pgp/ruby_decryptor.rb +9 -0
  23. data/lib/pgp/signer.rb +16 -0
  24. data/lib/pgp/verifier.rb +14 -0
  25. data/lib/pgp/version.rb +3 -0
  26. data/lib/pgp.rb +20 -0
  27. data/lib/ruby-pgp.rb +1 -0
  28. data/ruby-pgp.gemspec +24 -0
  29. data/run_tests.sh +7 -0
  30. data/spec/helpers/keys_helper.rb +9 -0
  31. data/spec/helpers/process_helper.rb +13 -0
  32. data/spec/helpers/temp_helper.rb +28 -0
  33. data/spec/lib/pgp/cli_spec.rb +41 -0
  34. data/spec/lib/pgp/decryptor_spec.rb +58 -0
  35. data/spec/lib/pgp/encryptor_spec.rb +86 -0
  36. data/spec/lib/pgp/gpg/engine_spec.rb +276 -0
  37. data/spec/lib/pgp/gpg/runner_integration_spec.rb +38 -0
  38. data/spec/lib/pgp/gpg/runner_spec.rb +432 -0
  39. data/spec/lib/pgp/gpg/temp_path_helper_spec.rb +53 -0
  40. data/spec/lib/pgp/signer_spec.rb +48 -0
  41. data/spec/lib/pgp/verifier_spec.rb +40 -0
  42. data/spec/lib/quirks_spec.rb +102 -0
  43. data/spec/spec_helper.rb +27 -0
  44. data/spec/support/fixtures/encrypted_with_passphrase_key.txt +1 -0
  45. data/spec/support/fixtures/encrypted_with_passphrase_key.txt.asc +13 -0
  46. data/spec/support/fixtures/private_key.asc +63 -0
  47. data/spec/support/fixtures/private_key_with_passphrase.asc +59 -0
  48. data/spec/support/fixtures/public_key.asc +36 -0
  49. data/spec/support/fixtures/public_key_with_passphrase.asc +30 -0
  50. data/spec/support/fixtures/signed_file.txt +1 -0
  51. data/spec/support/fixtures/signed_file.txt.asc +14 -0
  52. data/spec/support/fixtures/unencrypted_file.txt +1 -0
  53. data/spec/support/fixtures/unencrypted_file.txt.asc +19 -0
  54. data/spec/support/fixtures/wrong_private_key_for_signature.asc +63 -0
  55. data/spec/support/fixtures/wrong_public_key_for_signature.asc +36 -0
  56. data/spec/verify.sh +124 -0
  57. metadata +155 -0
@@ -0,0 +1,27 @@
1
+ require 'rspec'
2
+ require 'bundler'
3
+ require 'ruby-pgp'
4
+ require 'helpers/keys_helper'
5
+ require 'helpers/process_helper'
6
+ require 'helpers/temp_helper'
7
+
8
+ Fixtures_Path = Bundler.root + 'spec/support/fixtures/'
9
+
10
+ # This file was generated by the `rspec --init` command. Conventionally, all
11
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
12
+ # Require this file using `require "spec_helper"` to ensure that it is only
13
+ # loaded once.
14
+ #
15
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
16
+ RSpec.configure do |config|
17
+ config.include KeysHelper
18
+
19
+ config.run_all_when_everything_filtered = true
20
+ config.filter_run :focus
21
+
22
+ # Run specs in random order to surface order dependencies. If you find an
23
+ # order dependency and want to debug it, you can fix the order by providing
24
+ # the seed, which is printed after each run.
25
+ # --seed 1234
26
+ config.order = 'random'
27
+ end
@@ -0,0 +1 @@
1
+ here is some unencrypted stuff, yo
@@ -0,0 +1,13 @@
1
+ -----BEGIN PGP MESSAGE-----
2
+ Version: BCPG v1.48
3
+
4
+ hQEMA5U54ioziO4kAQf+NdzYMb6XwRHg52pbuknrDmQeW6qJBwdtn0rsG6eUTVtr
5
+ LoR3NEXNmBd+Hk2kPd10cQTQ6nVSvaJvgiu+9pVf6j/GGiNEWDNKqsLPokHN5uwv
6
+ 5VsRxNdfkChs7fYJf97fiSxt3I7OyCTx9r2R2Gy1kEx3+wwGfBZm+ZDUCs8W/TMs
7
+ lmGxliFqJ8MNWr7bbFvlDB5FPpeWFW6U2bYMGYAXx5bzIGM8a+CyglShdz6lLlLv
8
+ 831wGM1kK4eBHtyEKQa0bMqQ2y4p8BAToyMJTef1OFg4kDw4W6MgSlIgJcCCpUhN
9
+ oPLMqNLRv9SKqi+3GN8YmUmDjREBClb8jewAnnz9GMlT1s48T6KESXqwXwAZmF7o
10
+ LHTmCnW3HOKy0aUgZuEDjJPCinEI21gZ7hW35XIKIJQ/hIxar1C9bDbYXboo9uIt
11
+ Jwk/lT3994V3Pw763v6SeaXMcCw=
12
+ =xYIS
13
+ -----END PGP MESSAGE-----
@@ -0,0 +1,63 @@
1
+ -----BEGIN PGP PRIVATE KEY BLOCK-----
2
+ Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
3
+
4
+ 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
62
+ =Xb/x
63
+ -----END PGP PRIVATE KEY BLOCK-----
@@ -0,0 +1,59 @@
1
+ -----BEGIN PGP PRIVATE KEY BLOCK-----
2
+ Version: GnuPG v1.4.12 (Darwin)
3
+
4
+ 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
57
+ ZhNj/9kNlvnmMIxQ334RF3HfP0mNhFrhnoc=
58
+ =KOPk
59
+ -----END PGP PRIVATE KEY BLOCK-----
@@ -0,0 +1,36 @@
1
+ -----BEGIN PGP PUBLIC KEY BLOCK-----
2
+ Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
3
+
4
+ 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
34
+ Jkt3CWvXLoN0LHFHnS56KNOYpHWKPd3Z1HeD6w==
35
+ =vAW+
36
+ -----END PGP PUBLIC KEY BLOCK-----
@@ -0,0 +1,30 @@
1
+ -----BEGIN PGP PUBLIC KEY BLOCK-----
2
+ Version: GnuPG v1.4.12 (Darwin)
3
+
4
+ mQENBFE1G+YBCACbAxhkShGGLEvCcA60zD1ozlgE2Ed0U92/iCVQBkY05Y8F0sxq
5
+ NwaJfi+IbSeGq4PVrqEzOsD7pPGRwAkZ9dkzYJVC6jnflQPEYdF12HePQasQovWX
6
+ GMdHmTGAiEe4MrA/y10smF6jF5ft7U0J/xh6/VobiLyX961FSjOQtaE3io5kmqRT
7
+ juc6E2pxkk9QGF13/6wvxW85SlqHz+4KimqFlWwx3bp2kqgQEu9bH+uKE+BQOcMN
8
+ 1nGgz7cSt8iXQg7fP2xHPoxuUfSlRGPp8/bHPmUKqo2LYInQq1Phpwf9WT+d0hBA
9
+ uehvDUxWfF2vcNS7x+VvTgHT08wDzfPGjNblABEBAAG0KUNocmlzIE5lbHNvbiA8
10
+ c3VwZXJjaHJpc25lbHNvbkBnbWFpbC5jb20+iQE4BBMBAgAiBQJRNRvmAhsDBgsJ
11
+ CAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCVOeIqM4juJCZsB/4+U6EJH0O8nTV4
12
+ +isStuZES2+o4lHGiHUyaZF18ucL6disNK0JmZwyg8tCE6EFAdi9j+K79+MR1aqv
13
+ EHnm2QdhBnee5F7sjEbQdmNx9hSUFE2Zwl6jSp+TWTt8f5IYYtH7Cl7Txl9NKwZU
14
+ /0VFCegeBvOjPfgDECcqb+CiA7y+lLaRXhAQLcqPNTUo2PrzOVesk3T6k8/RMEH0
15
+ R0zzAlb2YeUHZj/8U0YOYhd84O88YD2kjVx/dpAgN78czbVDHhRYYNaX5ey2juVu
16
+ KD4D8SFkvQolAXR3lUrYJOewuWrp5V33U6Eqes+7wiV4FSdfuzv5CAKJfMzQ9XOt
17
+ gLDF8ouKuQENBFE1G+YBCACqkPuusUI9h+g4CRKYDPWBeQsRkexK7v3LNcnSVTmu
18
+ ukFe0tpZoJ1W1mKeS8fUYJq3uBg2IOFJ9XwOn0HqOLJIebI310gzpWiU4zFcNkWQ
19
+ EdNRfMoGG+xplobu8fUGAruaM/a8f8096/GmaeIgFB2ZCzUCURof5f0carL1yXrJ
20
+ bD0avZjQe9CMQMeLWLVC2tSH9si72hKgOeTMka9kTJSpigFsxft2S6NIBv50nHi8
21
+ 3X7qWN6WceR6MZwVM2LpBQTitOBjqT+FFyPQfqSLXP3848P/Ql50yzS+tLCuGylv
22
+ HL+mtAVf5Erbay7tehGxXW/xbEypKj8HGYAUAP+45ya5ABEBAAGJAR8EGAECAAkF
23
+ AlE1G+YCGwwACgkQlTniKjOI7iTL4gf/XHIqADZH1bfmLDvNZJ9V1EevxewZ4tzH
24
+ 49e0woHB4tUwmvCtipP4fidhH6L1oWrKTh49DHsA+gWLVH5dvhIxTlCR6dj80pvP
25
+ U5+okyWvvuYO3KaCOsBBUyS6YY7T0l5uWCkKPNXr3zU0hcHa8D+4T0ftiKktbNyy
26
+ 4hmB1YYWQWYv1fTkv5WcKsikpJ+Z+7QKhMCxjlRsTRm+QWm9whtcmxCE3eS+3BDi
27
+ ifE1SCYMKrFHt/Lniu81tJ4P5smquLe2jWyXc5ITe9kcc2a8U5c4SqYjFocKh7w5
28
+ jrTovElsR6L3q65JU11mE2P/2Q2W+eYwjFDffhEXcd8/SY2EWuGehw==
29
+ =OnFp
30
+ -----END PGP PUBLIC KEY BLOCK-----
@@ -0,0 +1 @@
1
+ Here is some stuff to sign, yo
@@ -0,0 +1,14 @@
1
+ -----BEGIN PGP MESSAGE-----
2
+ Version: BCPG v1.48
3
+
4
+ owJ4nJvAy8zAxDjV8pGWccc7FcbTJkn8xZnpeakp8WmZOal6JRUlgZZ8azxSi1IV
5
+ MosVivNzUxWKS0rT0hRK8hVACnUUKvO5OhndWRgYmRgMWZmAqk9oyThnFAFV+6Xm
6
+ FOfnKdgUlxakFiWDhPLAIg7puYmZOXrJ+bl2DFycAjDLS5LY//sEH7GKr3Pd8+aW
7
+ 0zNBkWiVPxF2z+xketdnJzsebj/NvvLN6pV/9P1+VmjMj7jdrnK51iTz397Y5loF
8
+ BWfLyWed/v8q6J57U/7k+dbXauaCW/7um/RuGr+Iamc895Yr5g23r4jPebDDb3Z6
9
+ 7B6bcIW1KzOOHXXNcdo2jcv8OLPVh5im7CUSNyY3vH5TUdfA2bn9SIqqpEHq6eM7
10
+ BL3EzT86FSf9ivXk32lq3vzGn+1wtsOsKSsMBD9bHbG+VOggefpm0vx/ejcny3xM
11
+ Xlh20G1mnNnPzezvrvueO3HW2UF12op1E9VWBxmofnHbtXbe5nPzeG64tk9W9lq4
12
+ 8sjOm3ZaD1aWBu8R4K2cfrH7hgEAwrOvhQ==
13
+ =nUp1
14
+ -----END PGP MESSAGE-----
@@ -0,0 +1 @@
1
+ Top Secret Stuff
@@ -0,0 +1,19 @@
1
+ -----BEGIN PGP MESSAGE-----
2
+ Version: BCPG v1.47
3
+
4
+ hQEMA0hQjTEd00ExAQgAq2/daWwiAyNXrQVmJeWa7lM9oSFN1gae+yNVz7zysicw
5
+ B7KxUxOtDm4bmNfV72aQxzqOF1+vbn9NFv+beoat9/ZtqfSRSPeMow8AZSSii8Cp
6
+ I31xMfsbmzCKOQHqto3tNHU1bcyD8fF3STVo2bsbohUcAJ0wGQker+dQqqxBfElp
7
+ iLJQTQY+0DXwujV4w3+k+I5IeWPDuviqc7BVqKxq/pISbcre2OmS7wl63FCIimPW
8
+ 2PHW+B9s9aEwTbaJNqr9Dc98xWmrmbQlnWi1U/RCHHpZpV3ME7HwH3bBHB5/HzLe
9
+ Zt4SHZU8TV2iIZTauEnlr24GJ7thbc6mP+KMaN2xNIUBDAMhK4YyQS5dIQEIAI6r
10
+ 2UIYIyl8MY8uGZbm9oIp+HbQvL7Uu7CggHc2+L9fJovGGw1iAvywIGFxyuVQKe/m
11
+ QYcAgPIKwrSV6OAE4mZkV9yqBQkKiQMoYlzS4ZwBgle+6PiUeJBFoh5suTcxHn3I
12
+ wKkeSHZ/zZsfh5skC5jvp1d8K6aplL1NoRsXEXDkOSzAL//CVF6gnvRWmVe4Rt9u
13
+ lfwHiEa7k1HAkS9Gb3GBhLFSTY/ZxoiZMtXWT86P8KI5zwfFLOE2SbpvBGs9OCeD
14
+ DNDH3HA1jG7n9YpAc1pmqok4s/j5X4uJkJDRU0bQo2J3rcfS6tXRMSnWjqWAVTp5
15
+ 24YnhPb/ee2+w20xP6zSUgHH1na+O4vmNgRHDGBjgWCzEcqJCW45OpcQ+rl/1VmT
16
+ nGSYc3FZA3+JPtBU98pAHrbPEeFBLOWoEc9mb0nS0f8OTky8ZJkzp2EQ1SsH+jV4
17
+ ZIk=
18
+ =15jR
19
+ -----END PGP MESSAGE-----
@@ -0,0 +1,63 @@
1
+ -----BEGIN PGP PRIVATE KEY BLOCK-----
2
+ Version: GnuPG/MacGPG2 v2.0.18 (Darwin)
3
+
4
+ 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
62
+ =vjEq
63
+ -----END PGP PRIVATE KEY BLOCK-----
@@ -0,0 +1,36 @@
1
+ -----BEGIN PGP PUBLIC KEY BLOCK-----
2
+ Version: GnuPG/MacGPG2 v2.0.18 (Darwin)
3
+
4
+ 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
35
+ =66YG
36
+ -----END PGP PUBLIC KEY BLOCK-----
data/spec/verify.sh ADDED
@@ -0,0 +1,124 @@
1
+ #!/bin/bash
2
+
3
+ BASE_DIR='.'
4
+
5
+ function cleanup() {
6
+ echo 'Cleanup existing keys'
7
+ rspec ${BASE_DIR}/spec/lib/pgp/gpg/runner_integration_spec.rb > /dev/null
8
+
9
+ listKeys
10
+ }
11
+
12
+ function listKeys() {
13
+ echo 'List existing public keys'
14
+ gpg --quiet --batch --list-keys --fingerprint
15
+
16
+ echo 'List existing private keys'
17
+ gpg --quiet --batch --list-secret-keys --fingerprint
18
+ }
19
+
20
+ function sectionStart() {
21
+ echo ''
22
+ echo $1
23
+ echo '================================================'
24
+ }
25
+
26
+ function sectionEnd() {
27
+ echo '================================================'
28
+ echo ''
29
+ }
30
+
31
+ function printExitCode() {
32
+ echo "=> $?"
33
+ }
34
+
35
+ sectionStart 'Setup'
36
+ gpg --version
37
+ printExitCode
38
+ cleanup
39
+ sectionEnd
40
+
41
+
42
+ sectionStart 'Decrypt key without passphrase'
43
+ gpg --quiet --batch --import ${BASE_DIR}/spec/support/fixtures/private_key.asc
44
+ listKeys
45
+ echo 'Decrypting message'
46
+ rm -f /tmp/msg1.txt
47
+ gpg --quiet --batch --yes --ignore-mdc-error --output /tmp/msg1.txt --decrypt ${BASE_DIR}/spec/support/fixtures/unencrypted_file.txt.asc
48
+ printExitCode
49
+ cat /tmp/msg1.txt
50
+ cleanup
51
+ sectionEnd
52
+
53
+
54
+ sectionStart 'Decrypt key with passphrase'
55
+ gpg --quiet --batch --import ${BASE_DIR}/spec/support/fixtures/private_key_with_passphrase.asc
56
+ listKeys
57
+
58
+ echo 'Decrypting message with gpg > 2.1'
59
+ rm -f /tmp/msg1.txt
60
+ gpg --quiet --batch --pinentry-mode loopback --passphrase "testingpgp" --yes --ignore-mdc-error --output /tmp/msg1.txt --decrypt ${BASE_DIR}/spec/support/fixtures/encrypted_with_passphrase_key.txt.asc
61
+ printExitCode
62
+ cat /tmp/msg1.txt
63
+
64
+ echo 'Decrypting message with gpg 2.0'
65
+ rm -f /tmp/msg1.txt
66
+ gpg --quiet --batch --passphrase "testingpgp" --yes --ignore-mdc-error --output /tmp/msg1.txt --decrypt ${BASE_DIR}/spec/support/fixtures/encrypted_with_passphrase_key.txt.asc
67
+ printExitCode
68
+ cat /tmp/msg1.txt
69
+
70
+ cleanup
71
+ sectionEnd
72
+
73
+
74
+ sectionStart 'Encrypt with public key'
75
+ echo 'Import public key'
76
+ gpg --quiet --batch --import ${BASE_DIR}/spec/support/fixtures/public_key.asc
77
+ printExitCode
78
+
79
+ echo 'Encrypt text'
80
+ rm -f /tmp/encrypted1.txt
81
+ echo "FooBar" > /tmp/plaintext1.txt
82
+ gpg --quiet --batch --yes --output /tmp/encrypted1.txt --recipient foo@bar.com --trust-model always --encrypt /tmp/plaintext1.txt
83
+ printExitCode
84
+ cleanup
85
+
86
+ echo 'Import private key'
87
+ gpg --quiet --batch --import ${BASE_DIR}/spec/support/fixtures/private_key.asc
88
+ printExitCode
89
+
90
+ echo 'Decrypting message with gpg > 2.1'
91
+ rm -f /tmp/msg1.txt
92
+ gpg --quiet --batch --pinentry-mode loopback --passphrase "testingpgp" --yes --ignore-mdc-error --output /tmp/msg1.txt --decrypt /tmp/encrypted1.txt
93
+ printExitCode
94
+ cat /tmp/msg1.txt
95
+
96
+ echo 'Decrypting message with gpg 2.0'
97
+ rm -f /tmp/msg1.txt
98
+ gpg --quiet --batch --passphrase "testingpgp" --yes --ignore-mdc-error --output /tmp/msg1.txt --decrypt /tmp/encrypted1.txt
99
+ printExitCode
100
+ cat /tmp/msg1.txt
101
+
102
+ cleanup
103
+ sectionEnd
104
+
105
+
106
+ sectionStart 'Sign a file with passphrase'
107
+ gpg --quiet --batch --import ${BASE_DIR}/spec/support/fixtures/private_key_with_passphrase.asc
108
+ printExitCode
109
+
110
+ echo 'Sign message with gpg > 2.1'
111
+ rm -f /tmp/msg1.txt
112
+ gpg --quiet --batch --pinentry-mode loopback --passphrase "testingpgp" --yes --ignore-mdc-error --output /tmp/msg1.txt --sign ${BASE_DIR}/spec/support/fixtures/signed_file.txt
113
+ printExitCode
114
+ cat /tmp/msg1.txt
115
+
116
+ echo 'Sign message with gpg 2.0'
117
+ rm -f /tmp/msg1.txt
118
+ gpg --quiet --batch --passphrase "testingpgp" --yes --ignore-mdc-error --output /tmp/msg1.txt --sign ${BASE_DIR}/spec/support/fixtures/signed_file.txt
119
+ printExitCode
120
+ cat /tmp/msg1.txt
121
+
122
+
123
+ cleanup
124
+ sectionEnd
metadata ADDED
@@ -0,0 +1,155 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby-pgp
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Camilo Sanchez
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2020-02-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '13'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '13'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: 3.9.0
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: 3.9.0
41
+ description: PGP for Ruby
42
+ email:
43
+ - gems@tddapps.com
44
+ executables:
45
+ - jrpgp
46
+ - rpgp
47
+ extensions: []
48
+ extra_rdoc_files: []
49
+ files:
50
+ - ".gitignore"
51
+ - ".rbenv-version"
52
+ - ".rspec"
53
+ - ".ruby-version"
54
+ - ".travis.yml"
55
+ - Gemfile
56
+ - LICENSE.txt
57
+ - README.md
58
+ - Rakefile
59
+ - bin/jrpgp
60
+ - bin/rpgp
61
+ - lib/pgp.rb
62
+ - lib/pgp/cli.rb
63
+ - lib/pgp/cli/runner.rb
64
+ - lib/pgp/decryptor.rb
65
+ - lib/pgp/encryptor.rb
66
+ - lib/pgp/gpg/engine.rb
67
+ - lib/pgp/gpg/runner.rb
68
+ - lib/pgp/gpg/temp_path_helper.rb
69
+ - lib/pgp/keys_importer.rb
70
+ - lib/pgp/log.rb
71
+ - lib/pgp/ruby_decryptor.rb
72
+ - lib/pgp/signer.rb
73
+ - lib/pgp/verifier.rb
74
+ - lib/pgp/version.rb
75
+ - lib/ruby-pgp.rb
76
+ - ruby-pgp.gemspec
77
+ - run_tests.sh
78
+ - spec/helpers/keys_helper.rb
79
+ - spec/helpers/process_helper.rb
80
+ - spec/helpers/temp_helper.rb
81
+ - spec/lib/pgp/cli_spec.rb
82
+ - spec/lib/pgp/decryptor_spec.rb
83
+ - spec/lib/pgp/encryptor_spec.rb
84
+ - spec/lib/pgp/gpg/engine_spec.rb
85
+ - spec/lib/pgp/gpg/runner_integration_spec.rb
86
+ - spec/lib/pgp/gpg/runner_spec.rb
87
+ - spec/lib/pgp/gpg/temp_path_helper_spec.rb
88
+ - spec/lib/pgp/signer_spec.rb
89
+ - spec/lib/pgp/verifier_spec.rb
90
+ - spec/lib/quirks_spec.rb
91
+ - spec/spec_helper.rb
92
+ - spec/support/fixtures/encrypted_with_passphrase_key.txt
93
+ - spec/support/fixtures/encrypted_with_passphrase_key.txt.asc
94
+ - spec/support/fixtures/private_key.asc
95
+ - spec/support/fixtures/private_key_with_passphrase.asc
96
+ - spec/support/fixtures/public_key.asc
97
+ - spec/support/fixtures/public_key_with_passphrase.asc
98
+ - spec/support/fixtures/signed_file.txt
99
+ - spec/support/fixtures/signed_file.txt.asc
100
+ - spec/support/fixtures/unencrypted_file.txt
101
+ - spec/support/fixtures/unencrypted_file.txt.asc
102
+ - spec/support/fixtures/wrong_private_key_for_signature.asc
103
+ - spec/support/fixtures/wrong_public_key_for_signature.asc
104
+ - spec/verify.sh
105
+ homepage: https://github.com/cshtdd/ruby-pgp
106
+ licenses:
107
+ - MIT
108
+ metadata: {}
109
+ post_install_message:
110
+ rdoc_options: []
111
+ require_paths:
112
+ - lib
113
+ required_ruby_version: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ required_rubygems_version: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ requirements: []
124
+ rubygems_version: 3.0.6
125
+ signing_key:
126
+ specification_version: 4
127
+ summary: This is a GnuPG2 wrapper modeled after the jruby-pgp api
128
+ test_files:
129
+ - spec/helpers/keys_helper.rb
130
+ - spec/helpers/process_helper.rb
131
+ - spec/helpers/temp_helper.rb
132
+ - spec/lib/pgp/cli_spec.rb
133
+ - spec/lib/pgp/decryptor_spec.rb
134
+ - spec/lib/pgp/encryptor_spec.rb
135
+ - spec/lib/pgp/gpg/engine_spec.rb
136
+ - spec/lib/pgp/gpg/runner_integration_spec.rb
137
+ - spec/lib/pgp/gpg/runner_spec.rb
138
+ - spec/lib/pgp/gpg/temp_path_helper_spec.rb
139
+ - spec/lib/pgp/signer_spec.rb
140
+ - spec/lib/pgp/verifier_spec.rb
141
+ - spec/lib/quirks_spec.rb
142
+ - spec/spec_helper.rb
143
+ - spec/support/fixtures/encrypted_with_passphrase_key.txt
144
+ - spec/support/fixtures/encrypted_with_passphrase_key.txt.asc
145
+ - spec/support/fixtures/private_key.asc
146
+ - spec/support/fixtures/private_key_with_passphrase.asc
147
+ - spec/support/fixtures/public_key.asc
148
+ - spec/support/fixtures/public_key_with_passphrase.asc
149
+ - spec/support/fixtures/signed_file.txt
150
+ - spec/support/fixtures/signed_file.txt.asc
151
+ - spec/support/fixtures/unencrypted_file.txt
152
+ - spec/support/fixtures/unencrypted_file.txt.asc
153
+ - spec/support/fixtures/wrong_private_key_for_signature.asc
154
+ - spec/support/fixtures/wrong_public_key_for_signature.asc
155
+ - spec/verify.sh