puppet-decrypt 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +12 -1
- data/ChangeLog.md +8 -0
- data/Gemfile +12 -1
- data/bundles/puppet_edge.gemfile +5 -0
- data/features/hiera.feature +17 -4
- data/features/step_definitions/puppet_steps.rb +1 -1
- data/lib/puppet-decrypt.rb +4 -0
- data/lib/puppet-decrypt/decryptor.rb +19 -11
- data/lib/puppet-decrypt/key_loader.rb +10 -0
- data/lib/puppet-decrypt/version.rb +1 -1
- data/lib/puppet/face/crypt.rb +11 -1
- data/puppet-decrypt.gemspec +1 -4
- data/spec/faces/crypt_spec.rb +27 -3
- data/spec/puppet-decrypt/fake_key_loader.rb +24 -0
- data/spec/spec_helper.rb +4 -2
- metadata +27 -65
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c098cca8fcd1228c7d2e82d7b8615f7189e77e8
|
4
|
+
data.tar.gz: b2ddb9f7aaa99af9d68812a7d86a95c7d04da32e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b19f454ff00dd36f2f83848c1a4be5df1ec6065b6dcd487364da4c981cce7350c6789862092df40681bcefaa2363e46ee8d4735cb751abec3b6e7400d4a6b0c2
|
7
|
+
data.tar.gz: 45b6964e742c45152804e4d6eac02324702515dcefc49ce87cf7a0eeb0268b744229ae2aec6f99b0a84ac5146de98da15519d6edb31e94c282b4af7c162f4be7
|
data/.travis.yml
CHANGED
@@ -1,10 +1,21 @@
|
|
1
1
|
language: ruby
|
2
|
+
bundler_args: --without debugging
|
2
3
|
rvm:
|
4
|
+
- 1.8.7
|
3
5
|
- 1.9.3
|
4
|
-
- 1.9.2
|
5
6
|
- jruby-19mode
|
6
7
|
- 2.0.0
|
8
|
+
- 2.1.0
|
7
9
|
gemfile:
|
8
10
|
- Gemfile
|
9
11
|
- bundles/puppet_3_0.gemfile
|
10
12
|
- bundles/puppet_2_7.gemfile
|
13
|
+
- bundles/puppet_edge.gemfile
|
14
|
+
matrix:
|
15
|
+
exclude:
|
16
|
+
- rvm: 1.8.7
|
17
|
+
gemfile: bundles/puppet_edge.gemfile
|
18
|
+
- rvm: 2.1.0
|
19
|
+
gemfile: bundles/puppet_3_0.gemfile
|
20
|
+
- rvm: 2.1.0
|
21
|
+
gemfile: bundles/puppet_2_7.gemfile
|
data/ChangeLog.md
CHANGED
data/Gemfile
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in puppet-decrypt.gemspec
|
4
|
-
gem 'puppet'
|
5
4
|
gemspec
|
5
|
+
|
6
|
+
# Not in the gemspec because we're testing multiple versions with appraisal.
|
7
|
+
gem 'puppet'
|
8
|
+
|
9
|
+
# Things we don't want on Travis
|
10
|
+
group :debugging do
|
11
|
+
# just for pushing documentation, requires ruby 1.9+
|
12
|
+
gem 'relish'
|
13
|
+
gem 'pry'
|
14
|
+
gem 'pry-nav'
|
15
|
+
end
|
16
|
+
|
data/features/hiera.feature
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Feature: Puppet works
|
2
2
|
|
3
|
-
Scenario:
|
3
|
+
Scenario: Unsalted (legacy) key
|
4
4
|
Given I have the following hiera data:
|
5
5
|
"""
|
6
6
|
---
|
@@ -13,11 +13,24 @@ Feature: Puppet works
|
|
13
13
|
"""
|
14
14
|
Then the output should include "Decrypted: max"
|
15
15
|
|
16
|
+
Scenario: Default test
|
17
|
+
Given I have the following hiera data:
|
18
|
+
"""
|
19
|
+
---
|
20
|
+
db_password: ENC[HOz0/aHCjJTAUlEbM/pqMQ==:QZy2oTvQNhwFMmOARn+Jlw==:aUY1NjBqamp6RWs1UkYvVjVULzNvdz09]
|
21
|
+
"""
|
22
|
+
When I execute this puppet manifest:
|
23
|
+
"""
|
24
|
+
$password = decrypt(hiera('db_password'))
|
25
|
+
notice("Decrypted: $password")
|
26
|
+
"""
|
27
|
+
Then the output should include "Decrypted: max"
|
28
|
+
|
16
29
|
Scenario: Overriden key (string)
|
17
30
|
Given I have the following hiera data:
|
18
31
|
"""
|
19
32
|
---
|
20
|
-
db_password: ENC:alt_key[
|
33
|
+
db_password: ENC:alt_key[KgLJnDVF9VeTGGU/vG2KjQ==:NiLhgUn4JL07DI9trGSK8g==:YlVhZDhDSEZsSDV6RnBOdm1FMmVtQT09]
|
21
34
|
"""
|
22
35
|
When I execute this puppet manifest:
|
23
36
|
"""
|
@@ -31,7 +44,7 @@ Feature: Puppet works
|
|
31
44
|
"""
|
32
45
|
---
|
33
46
|
db_password:
|
34
|
-
value: 'ENC[
|
47
|
+
value: 'ENC[AVdi08NXUveKStMSAH4kMQ==:EAHeMe3TvK33gjnDDHV5rQ==:cndoVVBhMWdXQW5HVSsxWDN4OUtRZz09]'
|
35
48
|
secretkey: 'features/fixtures/other_secretkeys/secondary_key'
|
36
49
|
"""
|
37
50
|
When I execute this puppet manifest:
|
@@ -40,4 +53,4 @@ Feature: Puppet works
|
|
40
53
|
$password = decrypt(hiera_hash('db_password'))
|
41
54
|
notice("Decrypted: $password")
|
42
55
|
"""
|
43
|
-
Then the output should include "Decrypted: overridden"
|
56
|
+
Then the output should include "Decrypted: overridden"
|
@@ -12,7 +12,7 @@ When /^I execute this puppet manifest:$/ do |manifest|
|
|
12
12
|
begin
|
13
13
|
file.write(manifest)
|
14
14
|
file.close
|
15
|
-
ENV['FACTER_HIERA_FILE'] = File.basename(hierafile, '.yaml')
|
15
|
+
ENV['FACTER_HIERA_FILE'] = File.basename(hierafile.path, '.yaml')
|
16
16
|
ENV['PUPPET_DECRYPT_KEYDIR'] = 'features/fixtures/secretkeys'
|
17
17
|
puppet_version = `bundle exec puppet --version`
|
18
18
|
puppet_command = "bundle exec puppet apply --noop #{file.path}"
|
data/lib/puppet-decrypt.rb
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
require 'puppet-decrypt/version'
|
2
|
+
require 'puppet-decrypt/key_loader'
|
2
3
|
require 'puppet-decrypt/decryptor'
|
3
4
|
require 'encryptor'
|
4
5
|
require 'base64'
|
5
6
|
|
6
7
|
module Puppet
|
7
8
|
module Decrypt
|
9
|
+
def self.key_loader
|
10
|
+
@key_loader ||= Puppet::Decrypt::KeyLoader.new
|
11
|
+
end
|
8
12
|
end
|
9
13
|
end
|
@@ -2,7 +2,7 @@ module Puppet
|
|
2
2
|
module Decrypt
|
3
3
|
|
4
4
|
class Decryptor
|
5
|
-
ENCRYPTED_PATTERN = /^ENC:?(
|
5
|
+
ENCRYPTED_PATTERN = /^ENC:?(\w*)\[(.*)\]$/
|
6
6
|
KEY_DIR = ENV['PUPPET_DECRYPT_KEYDIR'] || '/etc/puppet-decrypt'
|
7
7
|
DEFAULT_KEY = 'encryptor_secret_key'
|
8
8
|
DEFAULT_FILE = File.join(KEY_DIR, DEFAULT_KEY)
|
@@ -24,31 +24,40 @@ module Puppet
|
|
24
24
|
else
|
25
25
|
match = value.match(ENCRYPTED_PATTERN)
|
26
26
|
if match
|
27
|
-
value = match[
|
27
|
+
value = match[2]
|
28
28
|
end
|
29
29
|
end
|
30
30
|
if match
|
31
|
-
value =
|
32
|
-
|
31
|
+
value, iv, salt = value.split(':').map{|s| strict_decode64 s }
|
32
|
+
if iv && salt
|
33
|
+
value = value.decrypt(:key => secret_key_digest, :iv => iv, :salt => salt)
|
34
|
+
else
|
35
|
+
$stderr.puts "Warning: re-encrypt with puppet-crypt to use salted passwords"
|
36
|
+
value = value.decrypt(:key => secret_key_digest)
|
37
|
+
end
|
33
38
|
end
|
34
39
|
value
|
35
40
|
end
|
36
41
|
|
37
|
-
def encrypt(value, secret_key_file
|
42
|
+
def encrypt(value, secret_key_file, salt, iv)
|
38
43
|
secret_key_file ||= secret_key_for value
|
39
44
|
secret_key_digest = digest_from secret_key_file
|
40
|
-
result = value.encrypt(:key => secret_key_digest)
|
41
|
-
encrypted_value = strict_encode64(
|
45
|
+
result = value.encrypt(:key => secret_key_digest, :iv => iv, :salt => salt)
|
46
|
+
encrypted_value = [result, iv, salt].map{|v| strict_encode64(v).strip }.join ':'
|
42
47
|
encrypted_value = "ENC[#{encrypted_value}]" unless @raw
|
43
|
-
raise "Value can't be encrypted properly" unless decrypt(encrypted_value, secret_key_file) == value
|
48
|
+
raise "Value can't be encrypted properly with salt #{salt}" unless decrypt(encrypted_value, secret_key_file) == value
|
44
49
|
encrypted_value
|
45
50
|
end
|
46
51
|
|
47
52
|
private
|
53
|
+
def load_key(secret_key_file)
|
54
|
+
Puppet::Decrypt.key_loader.load_key secret_key_file
|
55
|
+
end
|
56
|
+
|
48
57
|
def secret_key_for(value)
|
49
58
|
match = value.match(ENCRYPTED_PATTERN)
|
50
59
|
if match
|
51
|
-
key = match[
|
60
|
+
key = match[1]
|
52
61
|
key = DEFAULT_KEY if key.empty?
|
53
62
|
end
|
54
63
|
key ||= DEFAULT_KEY
|
@@ -56,8 +65,7 @@ module Puppet
|
|
56
65
|
end
|
57
66
|
|
58
67
|
def digest_from(secret_key_file)
|
59
|
-
|
60
|
-
secret_key = File.open(secret_key_file, &:readline).chomp
|
68
|
+
secret_key = load_key secret_key_file
|
61
69
|
Digest::SHA256.hexdigest(secret_key)
|
62
70
|
end
|
63
71
|
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module Puppet
|
2
|
+
module Decrypt
|
3
|
+
class KeyLoader
|
4
|
+
def load_key(secret_key_file)
|
5
|
+
raise "Secret key file: #{secret_key_file} is not readable!" unless File.readable?(secret_key_file)
|
6
|
+
secret_key = File.open(secret_key_file, &:readline).chomp
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
data/lib/puppet/face/crypt.rb
CHANGED
@@ -23,6 +23,14 @@ Puppet::Face.define(:crypt, Puppet::Decrypt::VERSION) do
|
|
23
23
|
summary "The path to the secret key file (default: #{Puppet::Decrypt::Decryptor::DEFAULT_FILE}"
|
24
24
|
end
|
25
25
|
|
26
|
+
option "--iv IV" do
|
27
|
+
summary "The initialization vector to use during encryption (default is random)"
|
28
|
+
end
|
29
|
+
|
30
|
+
option "--salt SALT" do
|
31
|
+
summary "The salt to use during encryption (default is random)"
|
32
|
+
end
|
33
|
+
|
26
34
|
action :encrypt do
|
27
35
|
summary 'Encrypt a secret value.'
|
28
36
|
arguments "<plaintext_secret>"
|
@@ -30,8 +38,10 @@ Puppet::Face.define(:crypt, Puppet::Decrypt::VERSION) do
|
|
30
38
|
This action encrypts a value using the secret key.
|
31
39
|
EOT
|
32
40
|
when_invoked do |plaintext_secret, options|
|
41
|
+
iv = options.delete(:iv) || OpenSSL::Cipher::Cipher.new('aes-256-cbc').random_iv
|
42
|
+
salt = options.delete(:salt) || SecureRandom.base64
|
33
43
|
secretkey = options[:secretkey]
|
34
|
-
Puppet::Decrypt::Decryptor.new(options).encrypt(plaintext_secret, secretkey)
|
44
|
+
Puppet::Decrypt::Decryptor.new(options).encrypt(plaintext_secret, secretkey, salt, iv)
|
35
45
|
end
|
36
46
|
end
|
37
47
|
|
data/puppet-decrypt.gemspec
CHANGED
@@ -27,13 +27,10 @@ This was done to more easily support multiple keys. If you are upgrading from a
|
|
27
27
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
28
28
|
gem.require_paths = ["lib"]
|
29
29
|
|
30
|
-
gem.add_dependency('encryptor')
|
30
|
+
gem.add_dependency('encryptor', '~> 1.3')
|
31
31
|
gem.add_development_dependency('rake')
|
32
32
|
gem.add_development_dependency('cucumber')
|
33
|
-
gem.add_development_dependency('relish')
|
34
33
|
gem.add_development_dependency('rspec')
|
35
34
|
gem.add_development_dependency('rspec-puppet')
|
36
35
|
gem.add_development_dependency('puppetlabs_spec_helper')
|
37
|
-
gem.add_development_dependency('pry')
|
38
|
-
gem.add_development_dependency('pry-nav')
|
39
36
|
end
|
data/spec/faces/crypt_spec.rb
CHANGED
@@ -2,24 +2,48 @@
|
|
2
2
|
require 'spec_helper'
|
3
3
|
require 'puppet/face'
|
4
4
|
|
5
|
+
MINIMUM_IV_LENGTH = 20
|
5
6
|
describe Puppet::Face[:crypt, :current] do
|
7
|
+
let(:insecure_opts) do
|
8
|
+
{ :salt => '1234567890', :iv => '5'*20 }
|
9
|
+
end
|
10
|
+
# Values above, encoded
|
11
|
+
let(:base64_salt) { 'MTIzNDU2Nzg5MA==' }
|
12
|
+
let(:base64_iv) { 'NTU1NTU1NTU1NTU1NTU1NTU1NTU=' }
|
6
13
|
before :all do
|
7
14
|
mock_secret_key(Puppet::Decrypt::Decryptor::DEFAULT_FILE, 'masterkey')
|
8
15
|
end
|
9
16
|
|
10
17
|
describe 'encrypt' do
|
11
18
|
describe 'should encrypt a value' do
|
19
|
+
it 'is decryptable with minimum args' do
|
20
|
+
encrypted = subject.encrypt('flabberghaster')
|
21
|
+
subject.decrypt(encrypted).should == 'flabberghaster'
|
22
|
+
end
|
23
|
+
it 'is decryptable with minimum args with a salt' do
|
24
|
+
salt = SecureRandom.base64
|
25
|
+
encrypted = subject.encrypt('flabberghaster', {:salt => salt})
|
26
|
+
subject.decrypt(encrypted).should == 'flabberghaster'
|
27
|
+
end
|
28
|
+
it 'is decryptable with problematic salt (regexp chars)' do
|
29
|
+
salt = 'R8STny+9cq03ujQGiKDd9w=='
|
30
|
+
encrypted = subject.encrypt('flabberghaster', {:salt => salt})
|
31
|
+
subject.decrypt(encrypted).should == 'flabberghaster'
|
32
|
+
end
|
12
33
|
it 'with ENC[...]' do
|
13
|
-
|
34
|
+
expected_value = "ENC[7u523Z+PpqSm58+BeiN4qw==:#{base64_iv}:#{base64_salt}]"
|
35
|
+
subject.encrypt('flabberghaster', insecure_opts).should == expected_value
|
14
36
|
end
|
15
37
|
|
16
38
|
it 'with --raw' do
|
17
|
-
|
39
|
+
expected_value = "7u523Z+PpqSm58+BeiN4qw==:#{base64_iv}:#{base64_salt}"
|
40
|
+
subject.encrypt('flabberghaster', {:raw => true}.merge(insecure_opts)).should == expected_value
|
18
41
|
end
|
19
42
|
|
20
43
|
it 'with --secretkey' do
|
21
44
|
mock_secret_key('/etc/another_key', 'anotherkey')
|
22
|
-
|
45
|
+
expected_value = "ENC[81crlXmuzSnld3+4YUkQYg==:#{base64_iv}:#{base64_salt}]"
|
46
|
+
subject.encrypt('flabberghaster', {:secretkey => '/etc/another_key'}.merge(insecure_opts)).should == expected_value
|
23
47
|
end
|
24
48
|
end
|
25
49
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Puppet
|
2
|
+
module Decrypt
|
3
|
+
def self.key_loader=(key_loader)
|
4
|
+
@key_loader = key_loader
|
5
|
+
end
|
6
|
+
|
7
|
+
class FakeKeyLoader
|
8
|
+
def initialize
|
9
|
+
@secrets = {}
|
10
|
+
end
|
11
|
+
|
12
|
+
def add_secret(secret_key_file, secret_key)
|
13
|
+
@secrets[secret_key_file] = secret_key
|
14
|
+
end
|
15
|
+
|
16
|
+
def load_key(secret_key_file)
|
17
|
+
raise "Secret key file: #{secret_key_file} is not readable!" unless @secrets.has_key? secret_key_file
|
18
|
+
secret_key = @secrets[secret_key_file]
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
Puppet::Decrypt.key_loader = Puppet::Decrypt::FakeKeyLoader.new
|
data/spec/spec_helper.rb
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
2
|
require 'rspec-puppet'
|
3
|
+
require 'puppet-decrypt/fake_key_loader'
|
3
4
|
require 'puppet-decrypt'
|
4
5
|
require 'rspec/mocks'
|
5
6
|
|
7
|
+
Puppet::Decrypt.key_loader = Puppet::Decrypt::FakeKeyLoader.new
|
8
|
+
|
6
9
|
module SecretKeyHelper
|
7
10
|
def mock_secret_key(filename, secret)
|
8
|
-
|
9
|
-
File.should_receive(:open).with(filename).and_return(secret)
|
11
|
+
Puppet::Decrypt.key_loader.add_secret(filename, secret)
|
10
12
|
end
|
11
13
|
end
|
12
14
|
|
metadata
CHANGED
@@ -1,139 +1,97 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet-decrypt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- mlincoln
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-03-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: encryptor
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '1.3'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '1.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: cucumber
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - '>='
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: relish
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - '>='
|
45
|
+
- - ">="
|
60
46
|
- !ruby/object:Gem::Version
|
61
47
|
version: '0'
|
62
48
|
type: :development
|
63
49
|
prerelease: false
|
64
50
|
version_requirements: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
|
-
- -
|
52
|
+
- - ">="
|
67
53
|
- !ruby/object:Gem::Version
|
68
54
|
version: '0'
|
69
55
|
- !ruby/object:Gem::Dependency
|
70
56
|
name: rspec
|
71
57
|
requirement: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
|
-
- -
|
59
|
+
- - ">="
|
74
60
|
- !ruby/object:Gem::Version
|
75
61
|
version: '0'
|
76
62
|
type: :development
|
77
63
|
prerelease: false
|
78
64
|
version_requirements: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
|
-
- -
|
66
|
+
- - ">="
|
81
67
|
- !ruby/object:Gem::Version
|
82
68
|
version: '0'
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: rspec-puppet
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
|
-
- -
|
73
|
+
- - ">="
|
88
74
|
- !ruby/object:Gem::Version
|
89
75
|
version: '0'
|
90
76
|
type: :development
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
|
-
- -
|
80
|
+
- - ">="
|
95
81
|
- !ruby/object:Gem::Version
|
96
82
|
version: '0'
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
84
|
name: puppetlabs_spec_helper
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
|
-
- -
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - '>='
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: pry
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - '>='
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - '>='
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: pry-nav
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - '>='
|
87
|
+
- - ">="
|
130
88
|
- !ruby/object:Gem::Version
|
131
89
|
version: '0'
|
132
90
|
type: :development
|
133
91
|
prerelease: false
|
134
92
|
version_requirements: !ruby/object:Gem::Requirement
|
135
93
|
requirements:
|
136
|
-
- -
|
94
|
+
- - ">="
|
137
95
|
- !ruby/object:Gem::Version
|
138
96
|
version: '0'
|
139
97
|
description: A gem for encrypting/decrypting secret values for use with Puppet
|
@@ -143,10 +101,10 @@ executables: []
|
|
143
101
|
extensions: []
|
144
102
|
extra_rdoc_files: []
|
145
103
|
files:
|
146
|
-
- .gitignore
|
147
|
-
- .rspec
|
148
|
-
- .rvmrc
|
149
|
-
- .travis.yml
|
104
|
+
- ".gitignore"
|
105
|
+
- ".rspec"
|
106
|
+
- ".rvmrc"
|
107
|
+
- ".travis.yml"
|
150
108
|
- ChangeLog.md
|
151
109
|
- Gemfile
|
152
110
|
- LICENSE.txt
|
@@ -155,6 +113,7 @@ files:
|
|
155
113
|
- Rakefile
|
156
114
|
- bundles/puppet_2_7.gemfile
|
157
115
|
- bundles/puppet_3_0.gemfile
|
116
|
+
- bundles/puppet_edge.gemfile
|
158
117
|
- features/fixtures/data/overridden_secret_key.yaml
|
159
118
|
- features/fixtures/data/simple.yaml
|
160
119
|
- features/fixtures/hiera.yaml
|
@@ -168,6 +127,7 @@ files:
|
|
168
127
|
- features/support/env.rb
|
169
128
|
- lib/puppet-decrypt.rb
|
170
129
|
- lib/puppet-decrypt/decryptor.rb
|
130
|
+
- lib/puppet-decrypt/key_loader.rb
|
171
131
|
- lib/puppet-decrypt/version.rb
|
172
132
|
- lib/puppet/application/crypt.rb
|
173
133
|
- lib/puppet/face/crypt.rb
|
@@ -175,6 +135,7 @@ files:
|
|
175
135
|
- puppet-decrypt.gemspec
|
176
136
|
- spec/faces/crypt_spec.rb
|
177
137
|
- spec/functions/decrypt_spec.rb
|
138
|
+
- spec/puppet-decrypt/fake_key_loader.rb
|
178
139
|
- spec/spec_helper.rb
|
179
140
|
homepage: https://github.com/maxlinc/puppet-decrypt
|
180
141
|
licenses: []
|
@@ -192,17 +153,17 @@ require_paths:
|
|
192
153
|
- lib
|
193
154
|
required_ruby_version: !ruby/object:Gem::Requirement
|
194
155
|
requirements:
|
195
|
-
- -
|
156
|
+
- - ">="
|
196
157
|
- !ruby/object:Gem::Version
|
197
158
|
version: 1.9.0
|
198
159
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
199
160
|
requirements:
|
200
|
-
- -
|
161
|
+
- - ">="
|
201
162
|
- !ruby/object:Gem::Version
|
202
163
|
version: '0'
|
203
164
|
requirements: []
|
204
165
|
rubyforge_project:
|
205
|
-
rubygems_version: 2.0
|
166
|
+
rubygems_version: 2.2.0
|
206
167
|
signing_key:
|
207
168
|
specification_version: 4
|
208
169
|
summary: A shared secret strategy that works with any data source
|
@@ -220,4 +181,5 @@ test_files:
|
|
220
181
|
- features/support/env.rb
|
221
182
|
- spec/faces/crypt_spec.rb
|
222
183
|
- spec/functions/decrypt_spec.rb
|
184
|
+
- spec/puppet-decrypt/fake_key_loader.rb
|
223
185
|
- spec/spec_helper.rb
|