gpgr 0.0.1 → 0.0.2

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.
data/Rakefile CHANGED
@@ -4,7 +4,7 @@ require 'rake/testtask'
4
4
  require "rake/rdoctask"
5
5
  require "rake/gempackagetask"
6
6
 
7
- GPGR_VERSION = "0.0.1"
7
+ GPGR_VERSION = "0.0.2"
8
8
 
9
9
  task :default => [:test]
10
10
 
@@ -22,7 +22,7 @@ Rake::RDocTask.new do |rdoc|
22
22
  "COPYING",
23
23
  "LICENSE",
24
24
  "HACKING", "lib/" )
25
- rdoc.main = "README.markdown"
25
+ rdoc.main = "README"
26
26
  rdoc.rdoc_dir = "doc/html"
27
27
  rdoc.title = "Gpgr Documentation"
28
28
  end
@@ -46,6 +46,8 @@ module Gpgr
46
46
  GpgFileForEncryption.new(path, default_options[:to])
47
47
  end
48
48
 
49
+ class InvalidEmailException < Exception; end
50
+
49
51
  class GpgFileForEncryption
50
52
 
51
53
  attr_accessor :email_addresses, :file, :file_output
@@ -87,10 +89,11 @@ module Gpgr
87
89
  end
88
90
  end
89
91
  if bad_key
90
- raise "One or more of the e-mail addresses you supplied don't have valid keys assigned!"
92
+ raise InvalidEmailException.new("One or more of the e-mail addresses you supplied don't have valid keys assigned!")
93
+ else
94
+ command = Gpgr.command + " -q --no-verbose --yes -a -o #{@file_output} -r " + @email_addresses.join(' -r ') + " -e #{@file}"
95
+ system(command)
91
96
  end
92
- command = Gpgr.command + " --yes -a -o #{@file_output} -r " + @email_addresses.join(' -r ') + " -e #{@file}"
93
- system(command)
94
97
  end
95
98
 
96
99
  end
@@ -108,7 +111,7 @@ module Gpgr
108
111
  # and added to the keyring for the user executing this command.
109
112
  #
110
113
  def self.import(path_to_key)
111
- system "#{Gpgr.command} --yes --import #{File.expand_path(path_to_key)}"
114
+ system "#{Gpgr.command} -q --no-verbose --yes --import #{File.expand_path(path_to_key)}"
112
115
  end
113
116
 
114
117
  # Iterates through all of the files at a specified path and attempts to import
@@ -127,9 +130,21 @@ module Gpgr
127
130
  #
128
131
  def self.installed_public_keys
129
132
  keys = []
130
- `#{Gpgr.command} --list-public-keys --with-colons | grep uid`.split("\n").each do |key|
131
- keys << /\<(.*@.*)\>/.match(key)[1].upcase
133
+ email_regexp = /\<(.*@.*)\>/
134
+
135
+ # Select the output to grep for, which is different depending on the version
136
+ # of GPG installed. This is tested on 1.4 and 2.1.
137
+ #
138
+ if `#{Gpgr.command} --version | grep GnuPG`.include?('1.')
139
+ grep_for = 'pub'
140
+ else
141
+ grep_for = 'uid'
132
142
  end
143
+
144
+ `#{Gpgr.command} --list-public-keys --with-colons | grep #{grep_for}`.split("\n").each do |key|
145
+ keys << email_regexp.match(key)[1].upcase
146
+ end
147
+
133
148
  keys.uniq
134
149
  end
135
150
 
@@ -0,0 +1,39 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestFileEncryptionFunctionality < Test::Unit::TestCase
4
+
5
+ def test_file_method_returns_expected_object
6
+ o = Gpgr::Encrypt.file(__FILE__)
7
+ assert_equal Gpgr::Encrypt::GpgFileForEncryption, o.class
8
+ end
9
+
10
+ def test_default_values_are_corrently_set
11
+ o = Gpgr::Encrypt.file(__FILE__)
12
+ assert_equal File.expand_path(__FILE__), o.file
13
+ assert_equal File.expand_path(__FILE__) + '.pgp', o.file_output
14
+ assert o.email_addresses.empty?
15
+ end
16
+
17
+ def test_can_set_output_file_path
18
+ o = Gpgr::Encrypt.file(__FILE__ , :to => '/tmp/boogaboog.gpg')
19
+ assert_equal File.expand_path(__FILE__), o.file
20
+ assert_equal '/tmp/boogaboog.gpg', o.file_output
21
+ end
22
+
23
+ def test_using_updates_email_addresses
24
+ o = Gpgr::Encrypt.file(__FILE__)
25
+ assert o.email_addresses.empty?
26
+ o.using [ 'test@test.com' ]
27
+ assert !o.email_addresses.empty?
28
+ end
29
+
30
+ def test_encrypt_will_not_work_with_a_bad_email
31
+ o = Gpgr::Encrypt.file(__FILE__)
32
+ o.using [ 'nobody@example.com' ]
33
+ assert_raise Gpgr::Encrypt::InvalidEmailException do
34
+ o.encrypt
35
+ end
36
+ assert !File.exists(o.file_output)
37
+ end
38
+
39
+ end
@@ -29,7 +29,7 @@ Passphrase: abc
29
29
  %secring #{file_path}.sec
30
30
  %commit
31
31
  PGP
32
- `echo '#{params}' | gpg --batch --gen-key -a`
32
+ `echo '#{params}' | gpg -q --no-verbose --batch --gen-key -a`
33
33
  if File.exists?(file_path + '.pub')
34
34
  return file_path + '.pub'
35
35
  else
@@ -38,11 +38,11 @@ Passphrase: abc
38
38
  end
39
39
 
40
40
  def remove_installed_key(email)
41
- system "gpg --delete-key --yes --batch #{email}"
41
+ system "gpg -q --no-verbose --delete-key --yes --batch #{email}"
42
42
  end
43
43
 
44
44
  def cleanup_batch_keys
45
45
  remove_installed_key 'testymctest1@example.com'
46
46
  remove_installed_key 'testymctest2@example.com'
47
47
  remove_installed_key 'testymctest3@example.com'
48
- end
48
+ end
metadata CHANGED
@@ -1,12 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gpgr
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 1
9
- version: 0.0.1
4
+ version: 0.0.2
10
5
  platform: ruby
11
6
  authors:
12
7
  - Ryan Stenhouse
@@ -14,7 +9,7 @@ autorequire:
14
9
  bindir: bin
15
10
  cert_chain: []
16
11
 
17
- date: 2010-03-17 00:00:00 +00:00
12
+ date: 2010-03-18 00:00:00 +00:00
18
13
  default_executable:
19
14
  dependencies: []
20
15
 
@@ -31,16 +26,16 @@ extra_rdoc_files:
31
26
  - COPYING
32
27
  files:
33
28
  - lib/gpgr.rb
34
- - test/generate_keys.rb
35
- - test/test_helper.rb
36
- - test/test_key_management_functionality.rb
29
+ - test/test_keys/testing_1268859031.pub
37
30
  - test/test_keys/testing_1268859016.pub
38
31
  - test/test_keys/testing_1268859023.pub
39
- - test/test_keys/testing_1268859031.pub
32
+ - test/test_key_management_functionality.rb
33
+ - test/test_file_encryption_functionality.rb
40
34
  - test/test_keys_with_non_key_files/test.csv
35
+ - test/test_keys_with_non_key_files/testing_1268859031.pub
41
36
  - test/test_keys_with_non_key_files/testing_1268859016.pub
42
37
  - test/test_keys_with_non_key_files/testing_1268859023.pub
43
- - test/test_keys_with_non_key_files/testing_1268859031.pub
38
+ - test/test_helper.rb
44
39
  - Rakefile
45
40
  - HACKING
46
41
  - README.markdown
@@ -63,20 +58,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
63
58
  requirements:
64
59
  - - ">="
65
60
  - !ruby/object:Gem::Version
66
- segments:
67
- - 0
68
61
  version: "0"
62
+ version:
69
63
  required_rubygems_version: !ruby/object:Gem::Requirement
70
64
  requirements:
71
65
  - - ">="
72
66
  - !ruby/object:Gem::Version
73
- segments:
74
- - 0
75
67
  version: "0"
68
+ version:
76
69
  requirements: []
77
70
 
78
71
  rubyforge_project: gpgr
79
- rubygems_version: 1.3.6
72
+ rubygems_version: 1.3.5
80
73
  signing_key:
81
74
  specification_version: 3
82
75
  summary: A lightweight GPG CLI interface for encyrypting files
@@ -1,31 +0,0 @@
1
- path = File.expand_path(File.dirname(__FILE__) + '/test_keys')
2
-
3
-
4
- def generate_key(name, email, start_path)
5
- file_path = "#{start_path}/testing_#{Time.now.to_i}"
6
- params = <<-PGP
7
- Key-Type: DSA
8
- Key-Length: 1024
9
- Subkey-Type: ELG-E
10
- Subkey-Length: 1024
11
- Name-Real: #{name}
12
- Name-Comment: with stupid passphrase
13
- Name-Email: #{email}
14
- Expire-Date: 0
15
- Passphrase: abc
16
- %pubring #{file_path}.pub
17
- %secring #{file_path}.sec
18
- %commit
19
- PGP
20
- `echo '#{params}' | gpg --batch --gen-key -a`
21
- if File.exists?(file_path + '.pub')
22
- return file_path + '.pub'
23
- else
24
- raise "ARRGH"
25
- end
26
- end
27
-
28
-
29
- generate_key('TestyMcTest1', 'testymctest1@example.com', path)
30
- generate_key('TestyMcTest2', 'testymctest2@example.com', path)
31
- generate_key('TestyMcTest3', 'testymctest3@example.com', path)