legion-crypt 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 07b24418ca073e0f27ac8b1971b3dff861e245f9e469a1d78bf14a500e02ded8
4
- data.tar.gz: 73c531446637ff282583e5e74db187077dd0431493919db84b00348d592b262d
3
+ metadata.gz: cd2d51f77fcc6ca9912e92fbc1a7aa633182d17c503d8ae9b0c130de46e9c3d6
4
+ data.tar.gz: f2973995be01490a44a894e52809391c40e0dcfce69b3f6517a2c662f3b30f99
5
5
  SHA512:
6
- metadata.gz: 4bee5884abd1308aad74fd342168f3622bd19aa213be6908e42178c02172a3682a44398bbad7a484533cd70b6c6e3203ae8589b4b79d9455a971cfda9dc61035
7
- data.tar.gz: a4770c968abc0a5f8743a042238f2aa0225ee6189ae49854d1db45e3e6b2b7b442f1b40862d0135e3f901f731a57d4017765d8846c0888b61a014b118eff3849
6
+ metadata.gz: 52d19767ddc8bf1d5919c63176118cb6160179dea6670c7ac513cc6895d0c3fab7d2d7a0588475176fc392e9d7d952668b80449b101768c72b3130a5e5f74e5e
7
+ data.tar.gz: '088e8074518db4634c575e5f409eac8a890c40b84ba6445ab6eb7ff4c0505b5f4abad62a7dd4f2a274426e7df98aec9bae3d0b9d5a66b93535aea311670f3e47'
@@ -5,41 +5,50 @@
5
5
  </component>
6
6
  <component name="NewModuleRootManager">
7
7
  <content url="file://$MODULE_DIR$" />
8
- <orderEntry type="inheritedJdk" />
8
+ <orderEntry type="jdk" jdkName="RVM: ruby-2.7.0" jdkType="RUBY_SDK" />
9
9
  <orderEntry type="sourceFolder" forTests="false" />
10
- <orderEntry type="library" scope="PROVIDED" name="amq-protocol (v2.3.0, RVM: ruby-2.6.3) [gem]" level="application" />
11
- <orderEntry type="library" scope="PROVIDED" name="ast (v2.4.0, RVM: ruby-2.6.3) [gem]" level="application" />
12
- <orderEntry type="library" scope="PROVIDED" name="aws-eventstream (v1.0.3, RVM: ruby-2.6.3) [gem]" level="application" />
13
- <orderEntry type="library" scope="PROVIDED" name="aws-sigv4 (v1.1.1, RVM: ruby-2.6.3) [gem]" level="application" />
14
- <orderEntry type="library" scope="PROVIDED" name="bundler (v2.1.4, RVM: ruby-2.6.3) [gem]" level="application" />
15
- <orderEntry type="library" scope="PROVIDED" name="bunny (v2.14.4, RVM: ruby-2.6.3) [gem]" level="application" />
16
- <orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.3, RVM: ruby-2.6.3) [gem]" level="application" />
17
- <orderEntry type="library" scope="PROVIDED" name="docile (v1.3.2, RVM: ruby-2.6.3) [gem]" level="application" />
18
- <orderEntry type="library" scope="PROVIDED" name="ffi (v1.12.2, RVM: ruby-2.6.3) [gem]" level="application" />
19
- <orderEntry type="library" scope="PROVIDED" name="jaro_winkler (v1.5.4, RVM: ruby-2.6.3) [gem]" level="application" />
20
- <orderEntry type="library" scope="PROVIDED" name="json (v2.3.0, RVM: ruby-2.6.3) [gem]" level="application" />
21
- <orderEntry type="library" scope="PROVIDED" name="legion (v0.1.2, RVM: ruby-2.6.3) [gem]" level="application" />
22
- <orderEntry type="library" scope="PROVIDED" name="legion-json (v0.1.6, RVM: ruby-2.6.3) [gem]" level="application" />
23
- <orderEntry type="library" scope="PROVIDED" name="legion-logging (v1.0.0, RVM: ruby-2.6.3) [gem]" level="application" />
24
- <orderEntry type="library" scope="PROVIDED" name="legion-settings (v1.0.0, RVM: ruby-2.6.3) [gem]" level="application" />
25
- <orderEntry type="library" scope="PROVIDED" name="legion-transport (v0.1.0, RVM: ruby-2.6.3) [gem]" level="application" />
26
- <orderEntry type="library" scope="PROVIDED" name="oj (v3.10.5, RVM: ruby-2.6.3) [gem]" level="application" />
27
- <orderEntry type="library" scope="PROVIDED" name="parallel (v1.19.1, RVM: ruby-2.6.3) [gem]" level="application" />
28
- <orderEntry type="library" scope="PROVIDED" name="parser (v2.7.0.4, RVM: ruby-2.6.3) [gem]" level="application" />
29
- <orderEntry type="library" scope="PROVIDED" name="rainbow (v3.0.0, RVM: ruby-2.6.3) [gem]" level="application" />
30
- <orderEntry type="library" scope="PROVIDED" name="rake (v13.0.1, RVM: ruby-2.6.3) [gem]" level="application" />
31
- <orderEntry type="library" scope="PROVIDED" name="rbnacl (v7.1.1, RVM: ruby-2.6.3) [gem]" level="application" />
32
- <orderEntry type="library" scope="PROVIDED" name="rexml (v3.2.4, RVM: ruby-2.6.3) [gem]" level="application" />
33
- <orderEntry type="library" scope="PROVIDED" name="rspec (v3.9.0, RVM: ruby-2.6.3) [gem]" level="application" />
34
- <orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.9.1, RVM: ruby-2.6.3) [gem]" level="application" />
35
- <orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.9.0, RVM: ruby-2.6.3) [gem]" level="application" />
36
- <orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.9.1, RVM: ruby-2.6.3) [gem]" level="application" />
37
- <orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.9.2, RVM: ruby-2.6.3) [gem]" level="application" />
38
- <orderEntry type="library" scope="PROVIDED" name="rubocop (v0.80.1, RVM: ruby-2.6.3) [gem]" level="application" />
39
- <orderEntry type="library" scope="PROVIDED" name="ruby-progressbar (v1.10.1, RVM: ruby-2.6.3) [gem]" level="application" />
40
- <orderEntry type="library" scope="PROVIDED" name="simplecov (v0.18.5, RVM: ruby-2.6.3) [gem]" level="application" />
41
- <orderEntry type="library" scope="PROVIDED" name="simplecov-html (v0.12.2, RVM: ruby-2.6.3) [gem]" level="application" />
42
- <orderEntry type="library" scope="PROVIDED" name="unicode-display_width (v1.6.1, RVM: ruby-2.6.3) [gem]" level="application" />
43
- <orderEntry type="library" scope="PROVIDED" name="vault (v0.13.0, RVM: ruby-2.6.3) [gem]" level="application" />
10
+ <orderEntry type="library" scope="PROVIDED" name="amq-protocol (v2.3.2, RVM: ruby-2.7.0) [gem]" level="application" />
11
+ <orderEntry type="library" scope="PROVIDED" name="ast (v2.4.1, RVM: ruby-2.7.0) [gem]" level="application" />
12
+ <orderEntry type="library" scope="PROVIDED" name="aws-eventstream (v1.1.0, RVM: ruby-2.7.0) [gem]" level="application" />
13
+ <orderEntry type="library" scope="PROVIDED" name="aws-sigv4 (v1.2.2, RVM: ruby-2.7.0) [gem]" level="application" />
14
+ <orderEntry type="library" scope="PROVIDED" name="bundler (v2.1.4, RVM: ruby-2.7.0) [gem]" level="application" />
15
+ <orderEntry type="library" scope="PROVIDED" name="bunny (v2.16.1, RVM: ruby-2.7.0) [gem]" level="application" />
16
+ <orderEntry type="library" scope="PROVIDED" name="chef (v16.1.0, RVM: ruby-2.7.0) [gem]" level="application" />
17
+ <orderEntry type="library" scope="PROVIDED" name="concurrent-ruby (v1.1.7, RVM: ruby-2.7.0) [gem]" level="application" />
18
+ <orderEntry type="library" scope="PROVIDED" name="concurrent-ruby-ext (v1.1.7, RVM: ruby-2.7.0) [gem]" level="application" />
19
+ <orderEntry type="library" scope="PROVIDED" name="connection_pool (v2.2.3, RVM: ruby-2.7.0) [gem]" level="application" />
20
+ <orderEntry type="library" scope="PROVIDED" name="daemons (v1.3.1, RVM: ruby-2.7.0) [gem]" level="application" />
21
+ <orderEntry type="library" scope="PROVIDED" name="dalli (v2.7.10, RVM: ruby-2.7.0) [gem]" level="application" />
22
+ <orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.4.4, RVM: ruby-2.7.0) [gem]" level="application" />
23
+ <orderEntry type="library" scope="PROVIDED" name="ffi (v1.13.1, RVM: ruby-2.7.0) [gem]" level="application" />
24
+ <orderEntry type="library" scope="PROVIDED" name="hashdiff (v1.0.1, RVM: ruby-2.7.0) [gem]" level="application" />
25
+ <orderEntry type="library" scope="PROVIDED" name="legion-cache (v1.0.0, RVM: ruby-2.7.0) [gem]" level="application" />
26
+ <orderEntry type="library" scope="PROVIDED" name="legion-data (v0.2.0, RVM: ruby-2.7.0) [gem]" level="application" />
27
+ <orderEntry type="library" scope="PROVIDED" name="legion-exceptions (v1.1.0, RVM: ruby-2.7.0) [gem]" level="application" />
28
+ <orderEntry type="library" scope="PROVIDED" name="legion-json (v1.1.0, RVM: ruby-2.7.0) [gem]" level="application" />
29
+ <orderEntry type="library" scope="PROVIDED" name="legion-logging (v1.1.0, RVM: ruby-2.7.0) [gem]" level="application" />
30
+ <orderEntry type="library" scope="PROVIDED" name="legion-settings (v1.1.1, RVM: ruby-2.7.0) [gem]" level="application" />
31
+ <orderEntry type="library" scope="PROVIDED" name="legion-transport (v1.1.0, RVM: ruby-2.7.0) [gem]" level="application" />
32
+ <orderEntry type="library" scope="PROVIDED" name="multi_json (v1.15.0, RVM: ruby-2.7.0) [gem]" level="application" />
33
+ <orderEntry type="library" scope="PROVIDED" name="mysql2 (v0.5.3, RVM: ruby-2.7.0) [gem]" level="application" />
34
+ <orderEntry type="library" scope="PROVIDED" name="parallel (v1.19.2, RVM: ruby-2.7.0) [gem]" level="application" />
35
+ <orderEntry type="library" scope="PROVIDED" name="parser (v2.7.1.4, RVM: ruby-2.7.0) [gem]" level="application" />
36
+ <orderEntry type="library" scope="PROVIDED" name="rainbow (v3.0.0, RVM: ruby-2.7.0) [gem]" level="application" />
37
+ <orderEntry type="library" scope="PROVIDED" name="rake (v13.0.1, RVM: ruby-2.7.0) [gem]" level="application" />
38
+ <orderEntry type="library" scope="PROVIDED" name="rbnacl (v7.1.1, RVM: ruby-2.7.0) [gem]" level="application" />
39
+ <orderEntry type="library" scope="PROVIDED" name="redis (v4.2.1, RVM: ruby-2.7.0) [gem]" level="application" />
40
+ <orderEntry type="library" scope="PROVIDED" name="regexp_parser (v1.7.1, RVM: ruby-2.7.0) [gem]" level="application" />
41
+ <orderEntry type="library" scope="PROVIDED" name="rexml (v3.2.4, RVM: ruby-2.7.0) [gem]" level="application" />
42
+ <orderEntry type="library" scope="PROVIDED" name="rspec (v3.9.0, RVM: ruby-2.7.0) [gem]" level="application" />
43
+ <orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.9.2, RVM: ruby-2.7.0) [gem]" level="application" />
44
+ <orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.9.2, RVM: ruby-2.7.0) [gem]" level="application" />
45
+ <orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.9.1, RVM: ruby-2.7.0) [gem]" level="application" />
46
+ <orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.9.3, RVM: ruby-2.7.0) [gem]" level="application" />
47
+ <orderEntry type="library" scope="PROVIDED" name="rubocop (v0.89.1, RVM: ruby-2.7.0) [gem]" level="application" />
48
+ <orderEntry type="library" scope="PROVIDED" name="rubocop-ast (v0.3.0, RVM: ruby-2.7.0) [gem]" level="application" />
49
+ <orderEntry type="library" scope="PROVIDED" name="ruby-progressbar (v1.10.1, RVM: ruby-2.7.0) [gem]" level="application" />
50
+ <orderEntry type="library" scope="PROVIDED" name="sequel (v5.35.0, RVM: ruby-2.7.0) [gem]" level="application" />
51
+ <orderEntry type="library" scope="PROVIDED" name="unicode-display_width (v1.7.0, RVM: ruby-2.7.0) [gem]" level="application" />
52
+ <orderEntry type="library" scope="PROVIDED" name="vault (v0.15.0, RVM: ruby-2.7.0) [gem]" level="application" />
44
53
  </component>
45
54
  </module>
@@ -6,6 +6,14 @@ Metrics/ClassLength:
6
6
  Max: 1500
7
7
  Metrics/BlockLength:
8
8
  Max: 50
9
+ Metrics/CyclomaticComplexity:
10
+ Max: 15
11
+ Metrics/AbcSize:
12
+ Max: 20
13
+ Metrics/PerceivedComplexity:
14
+ Max: 15
15
+ Naming/MethodParameterName:
16
+ Enabled: false
9
17
  Layout/SpaceAroundEqualsInParameterDefault:
10
18
  EnforcedStyle: space
11
19
  Style/SymbolArray:
@@ -17,6 +25,7 @@ Style/Documentation:
17
25
  Enabled: false
18
26
  AllCops:
19
27
  TargetRubyVersion: 2.5
28
+ NewCops: enable
20
29
  Style/FrozenStringLiteralComment:
21
30
  Enabled: false
22
31
  Naming/FileName:
data/Gemfile CHANGED
@@ -3,3 +3,4 @@
3
3
  source 'https://rubygems.org'
4
4
 
5
5
  gemspec
6
+ gem 'legionio', path: '../legion'
data/README.md CHANGED
@@ -22,7 +22,11 @@ Or install it yourself as:
22
22
 
23
23
  ## Usage
24
24
 
25
- TODO: Write usage instructions here
25
+ Ciper class
26
+ 1) check to see if connected to vault, if so, use that
27
+ 2) check to see if it was set via config
28
+ 3) request it from the cluster
29
+ 4) generate it
26
30
 
27
31
  ## Development
28
32
 
@@ -28,12 +28,12 @@ Gem::Specification.new do |spec|
28
28
  spec.add_dependency 'rbnacl'
29
29
  spec.add_dependency 'vault'
30
30
 
31
- spec.add_development_dependency 'legion'
32
- spec.add_development_dependency 'legion-logging', '>= 1.0.0'
33
- spec.add_development_dependency 'legion-settings', '>= 1.0.0'
34
- spec.add_development_dependency 'legion-transport', '>= 0.1.0'
31
+ spec.add_development_dependency 'legion-logging'
32
+ spec.add_development_dependency 'legion-settings'
33
+ spec.add_development_dependency 'legion-transport'
34
+ # spec.add_development_dependency 'legionio'
35
35
  spec.add_development_dependency 'rake'
36
36
  spec.add_development_dependency 'rspec'
37
37
  spec.add_development_dependency 'rubocop'
38
- spec.add_development_dependency 'simplecov'
38
+ # spec.add_development_dependency 'simplecov', '< 0.18.0'
39
39
  end
@@ -1,30 +1,28 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'openssl'
3
4
  require 'legion/crypt/version'
4
5
  require 'legion/crypt/settings'
5
6
  require 'rbnacl'
6
7
  require 'base64'
7
8
 
8
9
  require 'legion/crypt/box'
10
+ require 'legion/crypt/cipher'
9
11
  require 'legion/crypt/vault'
10
12
 
11
13
  module Legion
12
14
  module Crypt
13
15
  class << self
14
- attr_reader :public_key, :sessions
15
- include Legion::Crypt::Box
16
+ attr_reader :sessions
17
+
18
+ include Legion::Crypt::Cipher
16
19
  include Legion::Crypt::Vault if Legion::Settings[:crypt][:vault][:enabled]
17
20
 
18
21
  def start
19
22
  Legion::Logging.debug 'Legion::Crypt is running start'
20
- if Dir.exist?('./settings') && File.exist?('./settings/private.key') && File.exist?('./settings/public.key')
21
- load_keys
22
- else
23
- delete_keys if Dir.exist? './settings'
24
- create_keys
25
- end
23
+ # load_keys if Dir.exist?('./settings') && File.exist?('./settings/private.key') && File.exist?('./settings/public.key')
26
24
 
27
- connect_vault
25
+ # connect_vault unless Legion::Settings[:crypt][:vault][:token].nil?
28
26
  end
29
27
 
30
28
  def shutdown
@@ -47,7 +47,7 @@ module Legion
47
47
  @box.decrypt(Base64.decode64(message))
48
48
  end
49
49
 
50
- def setup_safe # rubocop:disable Metrics/CyclomaticComplexity,Metrics/AbcSize,Metrics/PerceivedComplexity
50
+ def setup_safe # rubocop:disable Metrics/AbcSize,Metrics/PerceivedComplexity
51
51
  Legion::Logging.debug 'Setting up Legion::Crypt safe'
52
52
  if Legion::Settings[:crypt][:cluster_secret].nil?
53
53
  if Legion::Settings[:crypt][:vault][:connected] && Legion::Crypt.exist?('crypt')
@@ -0,0 +1,90 @@
1
+ require 'securerandom'
2
+
3
+ module Legion
4
+ module Crypt
5
+ module Cipher
6
+ def encrypt(message)
7
+ cipher = OpenSSL::Cipher.new('aes-256-cbc')
8
+ cipher.encrypt
9
+ cipher.key = cs
10
+ iv = cipher.random_iv
11
+ { enciphered_message: Base64.encode64(cipher.update(message) + cipher.final), iv: Base64.encode64(iv) }
12
+ end
13
+
14
+ def decrypt(message, iv)
15
+ until cs.is_a?(String) || Legion::Settings[:client][:shutting_down]
16
+ Legion::Logging.debug('sleeping Legion::Crypt.decrypt due to CS not being set')
17
+ sleep(0.5)
18
+ end
19
+
20
+ decipher = OpenSSL::Cipher.new('aes-256-cbc')
21
+ decipher.decrypt
22
+ decipher.key = cs
23
+ decipher.iv = Base64.decode64(iv)
24
+ message = Base64.decode64(message)
25
+ decipher.update(message) + decipher.final
26
+ end
27
+
28
+ def encrypt_from_keypair(message:, pub_key: public_key)
29
+ rsa_public_key = OpenSSL::PKey::RSA.new(pub_key)
30
+
31
+ Base64.encode64(rsa_public_key.public_encrypt(message))
32
+ end
33
+
34
+ def decrypt_from_keypair(message:, **_opts)
35
+ private_key.private_decrypt(Base64.decode64(message))
36
+ end
37
+
38
+ def public_key
39
+ @public_key ||= private_key.public_key.to_s
40
+ end
41
+
42
+ def private_key
43
+ @private_key ||= OpenSSL::PKey::RSA.new 2048
44
+ end
45
+
46
+ def cs
47
+ @cs ||= Digest::SHA256.digest fetch_cs
48
+ end
49
+
50
+ def fetch_cs # rubocop:disable Metrics/AbcSize
51
+ if Legion::Settings[:crypt][:vault][:read_cluster_secret] && Legion::Settings[:crypt][:vault][:connected] && Legion::Crypt.exist?('crypt') # rubocop:disable Layout/LineLength
52
+ Legion::Crypt.get('crypt')[:cluster_secret]
53
+ elsif Legion::Settings[:crypt][:cluster_secret].is_a? String
54
+ Legion::Settings[:crypt][:cluster_secret]
55
+ elsif Legion::Transport::Queue.new('node.crypt', passive: true).consumer_count.zero?
56
+ Legion::Settings[:crypt][:cluster_secret] = generate_secure_random
57
+ elsif Legion::Transport::Queue.new('node.crypt', passive: true).consumer_count.positive?
58
+ require 'legion/transport/messages/request_cluster_secret'
59
+ Legion::Logging.info 'Requesting cluster secret via public key'
60
+ start = Time.now
61
+ Legion::Transport::Messages::RequestClusterSecret.new.publish
62
+ sleep_time = 0.001
63
+ until !Legion::Settings[:crypt][:cluster_secret].nil? || (Time.now - start) > Legion::Settings[:crypt][:cluster_secret_timeout]
64
+ sleep(sleep_time)
65
+ sleep_time *= 2 unless sleep_time > 0.5
66
+ end
67
+ unless Legion::Settings[:crypt][:cluster_secret].nil?
68
+ Legion::Logging.info "Received cluster secret in #{((Time.new - start) * 1000.0).round}ms"
69
+ end
70
+ Legion::Logging.warn 'Cluster secret is still nil' if Legion::Settings[:crypt][:cluster_secret].nil?
71
+ else
72
+ Legion::Settings[:crypt][:cluster_secret] = generate_secure_random
73
+ end
74
+ Legion::Settings[:crypt][:cs_encrypt_ready] = true
75
+ Legion::Settings[:crypt][:cluster_secret]
76
+ rescue StandardError => e
77
+ Legion::Logging.error(e.message)
78
+ Legion::Logging.error(e.backtrace)
79
+
80
+ Legion::Settings[:crypt][:cluster_secret] = generate_secure_random
81
+ Legion::Settings[:crypt][:cs_encrypt_ready] = true
82
+ Legion::Settings[:crypt][:cluster_secret]
83
+ end
84
+
85
+ def generate_secure_random
86
+ SecureRandom.alphanumeric(32)
87
+ end
88
+ end
89
+ end
90
+ end
@@ -19,8 +19,8 @@ module Legion
19
19
  connected: false,
20
20
  renewer_time: 5,
21
21
  renewer: true,
22
- push_cluster_secret: false,
23
- read_cluster_secret: false
22
+ push_cluster_secret: true,
23
+ read_cluster_secret: true
24
24
  }
25
25
  end
26
26
  end
@@ -4,6 +4,7 @@ module Legion
4
4
  module Crypt
5
5
  module Vault
6
6
  attr_accessor :sessions
7
+
7
8
  def settings
8
9
  Legion::Settings[:crypt][:vault]
9
10
  end
@@ -23,24 +24,28 @@ module Legion
23
24
  @renewer = Legion::Crypt::Vault::Renewer.new
24
25
  end
25
26
 
26
- def read(path, type = 'kv-v2')
27
- lease = ::Vault.logical.read(type + '/' + path)
27
+ def read(path, type = 'legion')
28
+ full_path = type.nil? || type.empty? ? "#{type}/#{path}" : path
29
+ lease = ::Vault.logical.read(full_path)
28
30
  add_session(path: lease.lease_id) if lease.respond_to? :lease_id
29
31
  lease.data
30
32
  end
31
33
 
32
34
  def get(path)
33
- ::Vault.kv('kv-v2').read(path).data
35
+ result = ::Vault.kv('legion').read(path)
36
+ return nil if result.nil?
37
+
38
+ result.data
34
39
  end
35
40
 
36
41
  def write(path, key, value)
37
42
  hash = {}
38
43
  hash[key.to_sym] = value
39
- ::Vault.kv('kv-v2').write(path, **hash)
44
+ ::Vault.kv('legion').write(path, **hash)
40
45
  end
41
46
 
42
47
  def exist?(path)
43
- !::Vault.kv('kv-v2').read_metadata(path).nil?
48
+ !::Vault.kv('legion').read_metadata(path).nil?
44
49
  end
45
50
 
46
51
  def add_session(path:)
@@ -49,6 +54,8 @@ module Legion
49
54
 
50
55
  def close_sessions
51
56
  Legion::Logging.info 'Closing all Legion::Crypt vault sessions'
57
+ return if @sessions.nil?
58
+
52
59
  @sessions.each do |session|
53
60
  close_session(session: session)
54
61
  end
@@ -70,7 +77,7 @@ module Legion
70
77
  ::Vault.sys.renew(session)
71
78
  end
72
79
 
73
- def renew_sessions
80
+ def renew_sessions(**_opts)
74
81
  @sessions.each do |session|
75
82
  renew_session(session: session)
76
83
  end
@@ -8,7 +8,7 @@ module Legion
8
8
  'renew_sessions'
9
9
  end
10
10
 
11
- def klass
11
+ def runner_class
12
12
  Legion::Crypt
13
13
  end
14
14
 
@@ -23,6 +23,10 @@ module Legion
23
23
  def generate_task?
24
24
  false
25
25
  end
26
+
27
+ def use_runner?
28
+ false
29
+ end
26
30
  end
27
31
  end
28
32
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Legion
4
4
  module Crypt
5
- VERSION = '0.1.0'
5
+ VERSION = '0.2.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legion-crypt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-12 00:00:00.000000000 Z
11
+ date: 2020-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rbnacl
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: legion
42
+ name: legion-logging
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -52,48 +52,34 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: legion-logging
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: 1.0.0
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: 1.0.0
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: legion-settings
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
59
  - - ">="
74
60
  - !ruby/object:Gem::Version
75
- version: 1.0.0
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
- version: 1.0.0
68
+ version: '0'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: legion-transport
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - ">="
88
74
  - !ruby/object:Gem::Version
89
- version: 0.1.0
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
- version: 0.1.0
82
+ version: '0'
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: rake
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -136,20 +122,6 @@ dependencies:
136
122
  - - ">="
137
123
  - !ruby/object:Gem::Version
138
124
  version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: simplecov
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
125
  description: Integrates with Hashicorps vault and other encryption type things
154
126
  email:
155
127
  - matthewdiverson@gmail.com
@@ -176,6 +148,7 @@ files:
176
148
  - legion-crypt.gemspec
177
149
  - lib/legion/crypt.rb
178
150
  - lib/legion/crypt/box.rb
151
+ - lib/legion/crypt/cipher.rb
179
152
  - lib/legion/crypt/settings.rb
180
153
  - lib/legion/crypt/vault.rb
181
154
  - lib/legion/crypt/vault_renewer.rb
@@ -187,7 +160,7 @@ metadata:
187
160
  homepage_uri: https://bitbucket.org/legion-io/legion-vault/
188
161
  source_code_uri: https://bitbucket.org/legion-io/legion/
189
162
  changelog_uri: https://bitbucket.org/legion-io/legion/src/master/CHANGELOG.md
190
- post_install_message:
163
+ post_install_message:
191
164
  rdoc_options: []
192
165
  require_paths:
193
166
  - lib
@@ -202,8 +175,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
202
175
  - !ruby/object:Gem::Version
203
176
  version: '0'
204
177
  requirements: []
205
- rubygems_version: 3.0.8
206
- signing_key:
178
+ rubygems_version: 3.1.2
179
+ signing_key:
207
180
  specification_version: 4
208
181
  summary: Legion::Vault is used to keep things safe
209
182
  test_files: []