rake_gpg 0.8.0 → 0.9.0.pre.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.
- 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:
|