rake_gpg 0.8.0 → 0.9.0.pre.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/rake_gpg/home.rb +19 -0
- data/lib/rake_gpg/tasks/encryption/decrypt.rb +21 -27
- data/lib/rake_gpg/tasks/encryption/encrypt.rb +27 -33
- data/lib/rake_gpg/tasks/keys/generate.rb +38 -50
- data/lib/rake_gpg/tasks/keys/import.rb +9 -18
- data/lib/rake_gpg/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 74a76d859ca781187c8de5d87c584016e4a0b3e94a68999ef55d28724e861144
|
4
|
+
data.tar.gz: 3f203dcfe0fc905baf32f6077d3cf5e0548b17fcd97f8ee5db1d0e39082b6056
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb74dc620a5465cdb61c0ddac554fa4aa56a5377b9d02ed0520218c064a03af38d2a99c1ad347f9ee0a3685708ef3270e5621ec32a908644d4fcdec72dd5226b
|
7
|
+
data.tar.gz: bb208b669b5fd7e53dbdb249a9f201176820a79a9593862b5e7d4a9e816973e396dde44c13670b2e5feeeba1125d2f6cea812de221c587ef1e9ebdce8596a38f
|
data/Gemfile.lock
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
module RakeGPG
|
2
|
+
class Home
|
3
|
+
def initialize(work_directory, home_directory)
|
4
|
+
@work_directory = work_directory
|
5
|
+
@home_directory = home_directory
|
6
|
+
end
|
7
|
+
|
8
|
+
def with_resolved_directory
|
9
|
+
if @home_directory == :temporary
|
10
|
+
Dir.mktmpdir('home', @work_directory) do |home_directory|
|
11
|
+
yield home_directory
|
12
|
+
end
|
13
|
+
else
|
14
|
+
FileUtils.mkdir_p(@home_directory)
|
15
|
+
yield @home_directory
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'rake_factory'
|
2
2
|
require 'ruby_gpg2'
|
3
3
|
|
4
|
+
require_relative '../../home'
|
5
|
+
|
4
6
|
module RakeGPG
|
5
7
|
module Tasks
|
6
8
|
module Encryption
|
@@ -12,7 +14,7 @@ module RakeGPG
|
|
12
14
|
parameter :input_file_path, required: true
|
13
15
|
parameter :output_file_path, required: true
|
14
16
|
|
15
|
-
parameter :work_directory, default: '
|
17
|
+
parameter :work_directory, default: '/tmp'
|
16
18
|
parameter :home_directory, default: :temporary
|
17
19
|
|
18
20
|
parameter :trust_mode, default: :always
|
@@ -20,34 +22,26 @@ module RakeGPG
|
|
20
22
|
|
21
23
|
action do |t|
|
22
24
|
mkdir_p(t.work_directory)
|
23
|
-
if t.home_directory == :temporary
|
24
|
-
Dir.mktmpdir(
|
25
|
-
'home', t.work_directory) do |home_directory|
|
26
|
-
do_decrypt(t, home_directory)
|
27
|
-
end
|
28
|
-
else
|
29
|
-
mkdir_p(t.home_directory)
|
30
|
-
do_decrypt(t, t.home_directory)
|
31
|
-
end
|
32
|
-
end
|
33
25
|
|
34
|
-
private
|
35
|
-
|
36
|
-
def do_decrypt(t, home_directory)
|
37
26
|
puts "Decrypting #{t.input_file_path} with key #{t.key_file_path}..."
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
27
|
+
Home.new(t.work_directory, t.home_directory)
|
28
|
+
.with_resolved_directory do |home_directory|
|
29
|
+
RubyGPG2.import(
|
30
|
+
key_file_paths: [t.key_file_path],
|
31
|
+
work_directory: t.work_directory,
|
32
|
+
home_directory: home_directory)
|
33
|
+
|
34
|
+
mkdir_p(File.dirname(t.output_file_path))
|
35
|
+
|
36
|
+
RubyGPG2.decrypt(
|
37
|
+
input_file_path: t.input_file_path,
|
38
|
+
output_file_path: t.output_file_path,
|
39
|
+
home_directory: home_directory,
|
40
|
+
trust_mode: t.trust_mode,
|
41
|
+
passphrase: t.passphrase,
|
42
|
+
pinentry_mode: t.passphrase ? :loopback : nil,
|
43
|
+
without_passphrase: !t.passphrase)
|
44
|
+
end
|
51
45
|
puts "Done."
|
52
46
|
end
|
53
47
|
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'rake_factory'
|
2
2
|
require 'ruby_gpg2'
|
3
3
|
|
4
|
+
require_relative '../../home'
|
5
|
+
|
4
6
|
module RakeGPG
|
5
7
|
module Tasks
|
6
8
|
module Encryption
|
@@ -12,7 +14,7 @@ module RakeGPG
|
|
12
14
|
parameter :input_file_path, required: true
|
13
15
|
parameter :output_file_path, required: true
|
14
16
|
|
15
|
-
parameter :work_directory, default: '
|
17
|
+
parameter :work_directory, default: '/tmp'
|
16
18
|
parameter :home_directory, default: :temporary
|
17
19
|
|
18
20
|
parameter :armor, default: true
|
@@ -20,40 +22,32 @@ module RakeGPG
|
|
20
22
|
|
21
23
|
action do |t|
|
22
24
|
mkdir_p(t.work_directory)
|
23
|
-
if t.home_directory == :temporary
|
24
|
-
Dir.mktmpdir(
|
25
|
-
'home', t.work_directory) do |home_directory|
|
26
|
-
do_encrypt(t, home_directory)
|
27
|
-
end
|
28
|
-
else
|
29
|
-
mkdir_p(t.home_directory)
|
30
|
-
do_encrypt(t, t.home_directory)
|
31
|
-
end
|
32
|
-
end
|
33
25
|
|
34
|
-
private
|
35
|
-
|
36
|
-
def do_encrypt(t, home_directory)
|
37
26
|
puts "Encrypting #{t.input_file_path} for key #{t.key_file_path}..."
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
27
|
+
Home.new(t.work_directory, t.home_directory)
|
28
|
+
.with_resolved_directory do |home_directory|
|
29
|
+
result = RubyGPG2.import(
|
30
|
+
key_file_paths: [t.key_file_path],
|
31
|
+
work_directory: t.work_directory,
|
32
|
+
home_directory: home_directory,
|
33
|
+
with_status: true)
|
34
|
+
|
35
|
+
key_fingerprint = result
|
36
|
+
.status
|
37
|
+
.filter_by_type(:import_ok)
|
38
|
+
.first_line
|
39
|
+
.key_fingerprint
|
40
|
+
|
41
|
+
mkdir_p(File.dirname(t.output_file_path))
|
42
|
+
|
43
|
+
RubyGPG2.encrypt(
|
44
|
+
recipient: key_fingerprint,
|
45
|
+
input_file_path: t.input_file_path,
|
46
|
+
output_file_path: t.output_file_path,
|
47
|
+
home_directory: home_directory,
|
48
|
+
armor: t.armor,
|
49
|
+
trust_mode: t.trust_mode)
|
50
|
+
end
|
57
51
|
puts "Done."
|
58
52
|
end
|
59
53
|
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'rake_factory'
|
2
2
|
require 'ruby_gpg2'
|
3
3
|
|
4
|
+
require_relative '../../home'
|
5
|
+
|
4
6
|
module RakeGPG
|
5
7
|
module Tasks
|
6
8
|
module Keys
|
@@ -11,7 +13,7 @@ module RakeGPG
|
|
11
13
|
parameter :name_prefix, default: 'gpg'
|
12
14
|
parameter :armor, default: true
|
13
15
|
|
14
|
-
parameter :work_directory, default: '
|
16
|
+
parameter :work_directory, default: '/tmp'
|
15
17
|
parameter :home_directory, default: :temporary
|
16
18
|
parameter :output_directory
|
17
19
|
|
@@ -29,62 +31,48 @@ module RakeGPG
|
|
29
31
|
|
30
32
|
action do |t|
|
31
33
|
mkdir_p(t.work_directory)
|
32
|
-
if t.home_directory == :temporary
|
33
|
-
Dir.mktmpdir(
|
34
|
-
'home', t.work_directory) do |home_directory|
|
35
|
-
do_generate_key(t, home_directory)
|
36
|
-
end
|
37
|
-
else
|
38
|
-
mkdir_p(t.home_directory)
|
39
|
-
do_generate_key(t, t.home_directory)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
private
|
44
34
|
|
45
|
-
def do_generate_key(t, home_directory)
|
46
35
|
puts "Generating GPG key for #{t.owner_name} <#{t.owner_email}>..."
|
36
|
+
Home.new(t.work_directory, t.home_directory)
|
37
|
+
.with_resolved_directory do |home_directory|
|
38
|
+
mkdir_p t.output_directory if t.output_directory
|
47
39
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
work_directory: t.work_directory,
|
59
|
-
without_passphrase: t.passphrase.nil?,
|
60
|
-
with_status: true)
|
61
|
-
end
|
40
|
+
result = RubyGPG2::ParameterFileContents
|
41
|
+
.new(t.parameter_values)
|
42
|
+
.in_temp_file(t.work_directory) do |f|
|
43
|
+
RubyGPG2.generate_key(
|
44
|
+
parameter_file_path: f.path,
|
45
|
+
home_directory: home_directory,
|
46
|
+
work_directory: t.work_directory,
|
47
|
+
without_passphrase: t.passphrase.nil?,
|
48
|
+
with_status: true)
|
49
|
+
end
|
62
50
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
51
|
+
key_fingerprint = result
|
52
|
+
.status
|
53
|
+
.filter_by_type(:key_created)
|
54
|
+
.first_line
|
55
|
+
.key_fingerprint
|
68
56
|
|
69
|
-
|
57
|
+
puts "Generated GPG key with fingerprint #{key_fingerprint}."
|
70
58
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
59
|
+
if t.output_directory
|
60
|
+
puts 'Export requested. ' +
|
61
|
+
"Exporting GPG key to #{t.output_directory}..."
|
62
|
+
RubyGPG2.export(
|
63
|
+
names: [key_fingerprint],
|
64
|
+
output_file_path:
|
65
|
+
"#{t.output_directory}/#{t.name_prefix}.public",
|
66
|
+
armor: t.armor,
|
67
|
+
home_directory: home_directory)
|
68
|
+
RubyGPG2.export_secret_keys(
|
69
|
+
names: [key_fingerprint],
|
70
|
+
output_file_path:
|
71
|
+
"#{t.output_directory}/#{t.name_prefix}.private",
|
72
|
+
armor: t.armor,
|
73
|
+
home_directory: home_directory)
|
74
|
+
end
|
86
75
|
end
|
87
|
-
|
88
76
|
puts "Done."
|
89
77
|
end
|
90
78
|
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'rake_factory'
|
2
2
|
require 'ruby_gpg2'
|
3
3
|
|
4
|
+
require_relative '../../home'
|
5
|
+
|
4
6
|
module RakeGPG
|
5
7
|
module Tasks
|
6
8
|
module Keys
|
@@ -9,31 +11,20 @@ module RakeGPG
|
|
9
11
|
default_description "Import a GPG key"
|
10
12
|
|
11
13
|
parameter :key_file_path, required: true
|
12
|
-
parameter :work_directory, default: '
|
14
|
+
parameter :work_directory, default: '/tmp'
|
13
15
|
parameter :home_directory, default: :temporary
|
14
16
|
|
15
17
|
action do |t|
|
16
18
|
mkdir_p(t.work_directory)
|
17
|
-
if t.home_directory == :temporary
|
18
|
-
Dir.mktmpdir(
|
19
|
-
'home', t.work_directory) do |home_directory|
|
20
|
-
do_import_key(t, home_directory)
|
21
|
-
end
|
22
|
-
else
|
23
|
-
mkdir_p(t.home_directory)
|
24
|
-
do_import_key(t, t.home_directory)
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
private
|
30
19
|
|
31
|
-
def do_import_key(t, home_directory)
|
32
20
|
puts "Importing GPG key from #{t.key_file_path} " +
|
33
21
|
"into #{home_directory}..."
|
34
|
-
|
35
|
-
|
36
|
-
|
22
|
+
Home.new(t.work_directory, t.home_directory)
|
23
|
+
.with_resolved_directory do |home_directory|
|
24
|
+
RubyGPG2.import(
|
25
|
+
key_file_paths: [t.key_file_path],
|
26
|
+
home_directory: home_directory)
|
27
|
+
end
|
37
28
|
puts "Done."
|
38
29
|
end
|
39
30
|
end
|
data/lib/rake_gpg/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rake_gpg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0.pre.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Toby Clemson
|
@@ -241,6 +241,7 @@ files:
|
|
241
241
|
- config/secrets/rubygems/credentials
|
242
242
|
- go
|
243
243
|
- lib/rake_gpg.rb
|
244
|
+
- lib/rake_gpg/home.rb
|
244
245
|
- lib/rake_gpg/tasks.rb
|
245
246
|
- lib/rake_gpg/tasks/encryption.rb
|
246
247
|
- lib/rake_gpg/tasks/encryption/decrypt.rb
|
@@ -272,9 +273,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
272
273
|
version: 2.6.0
|
273
274
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
274
275
|
requirements:
|
275
|
-
- - "
|
276
|
+
- - ">"
|
276
277
|
- !ruby/object:Gem::Version
|
277
|
-
version:
|
278
|
+
version: 1.3.1
|
278
279
|
requirements: []
|
279
280
|
rubygems_version: 3.0.1
|
280
281
|
signing_key:
|