opensecret 0.0.988 → 0.0.9925

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +56 -159
  3. data/bin/opensecret +2 -2
  4. data/bin/ops +17 -2
  5. data/lib/extension/string.rb +14 -16
  6. data/lib/{interpreter.rb → interprete.rb} +53 -29
  7. data/lib/keytools/binary.map.rb +49 -0
  8. data/lib/keytools/kdf.api.rb +249 -0
  9. data/lib/keytools/kdf.bcrypt.rb +64 -29
  10. data/lib/keytools/kdf.pbkdf2.rb +92 -83
  11. data/lib/keytools/kdf.scrypt.rb +190 -0
  12. data/lib/keytools/key.64.rb +326 -0
  13. data/lib/keytools/key.algo.rb +109 -0
  14. data/lib/keytools/key.api.rb +1281 -0
  15. data/lib/keytools/key.db.rb +265 -0
  16. data/lib/keytools/{key.module.rb → key.docs.rb} +55 -0
  17. data/lib/keytools/key.error.rb +110 -0
  18. data/lib/keytools/key.id.rb +271 -0
  19. data/lib/keytools/key.iv.rb +107 -0
  20. data/lib/keytools/key.local.rb +265 -0
  21. data/lib/keytools/key.mach.rb +248 -0
  22. data/lib/keytools/key.now.rb +402 -0
  23. data/lib/keytools/key.pair.rb +259 -0
  24. data/lib/keytools/key.pass.rb +120 -0
  25. data/lib/keytools/key.rb +428 -298
  26. data/lib/keytools/keydebug.txt +295 -0
  27. data/lib/logging/gem.logging.rb +3 -3
  28. data/lib/modules/cryptology/collect.rb +20 -0
  29. data/lib/session/require.gem.rb +1 -1
  30. data/lib/usecase/cmd.rb +417 -0
  31. data/lib/usecase/id.rb +36 -0
  32. data/lib/usecase/import.rb +174 -0
  33. data/lib/usecase/init.rb +78 -0
  34. data/lib/usecase/login.rb +70 -0
  35. data/lib/usecase/logout.rb +30 -0
  36. data/lib/usecase/open.rb +126 -0
  37. data/lib/{interprete → usecase}/put.rb +100 -47
  38. data/lib/usecase/read.rb +89 -0
  39. data/lib/{interprete → usecase}/safe.rb +0 -0
  40. data/lib/{interprete → usecase}/set.rb +0 -0
  41. data/lib/usecase/token.rb +111 -0
  42. data/lib/{interprete → usecase}/use.rb +0 -0
  43. data/lib/version.rb +1 -1
  44. data/opensecret.gemspec +4 -3
  45. metadata +39 -33
  46. data/lib/exception/cli.error.rb +0 -53
  47. data/lib/exception/errors/cli.errors.rb +0 -31
  48. data/lib/interprete/begin.rb +0 -232
  49. data/lib/interprete/cmd.rb +0 -621
  50. data/lib/interprete/export.rb +0 -163
  51. data/lib/interprete/init.rb +0 -205
  52. data/lib/interprete/key.rb +0 -119
  53. data/lib/interprete/open.rb +0 -148
  54. data/lib/interprete/seal.rb +0 -129
  55. data/lib/keytools/digester.rb +0 -245
  56. data/lib/keytools/key.data.rb +0 -227
  57. data/lib/keytools/key.derivation.rb +0 -341
  58. data/lib/modules/mappers/collateral.rb +0 -282
  59. data/lib/modules/mappers/envelope.rb +0 -127
  60. data/lib/modules/mappers/settings.rb +0 -170
  61. data/lib/notepad/scratch.pad.rb +0 -224
  62. data/lib/store-commands.txt +0 -180
@@ -28,27 +28,10 @@ module OpenSecret
28
28
  # - a secret value is added against the key or updated if it already exists
29
29
  # - a new session id and encryption key is generated and used to re-encrypt
30
30
  #
31
- # == The Encrypted Session Bucket
32
- #
33
- # After the example commands we can visualize the <b><em>encrypted</em></b>
34
- # bucket like this.
35
- #
36
- # [monica]
37
- # surname = lewinsky
38
- # from = April 1989
39
- # to = September 1994
40
- #
41
- # [hilary]
42
- # surname = clinton
43
- # from = Feb 1982
44
- # to = Present Day
45
- #
46
- # == Bill Clinton's Lady Friends
31
+ # == Example | Bill Clinton's Secrets
47
32
  #
48
33
  # In our fictitious example Bill Clinton uses opensecret to lock away the
49
- # names and dates of his lady riends.
50
- #
51
- # @example
34
+ # names and dates of his lady friends.
52
35
  #
53
36
  # $ opensecret init bill.clinton@example.com
54
37
  # $ opensecret open my/friends
@@ -73,8 +56,10 @@ module OpenSecret
73
56
  # - <b>peek</b>
74
57
  class Put < Command
75
58
 
59
+
76
60
  attr_writer :secret_id, :secret_value
77
61
 
62
+
78
63
  # The <b>put use case</b> follows <b>open</b> and it adds secrets into an
79
64
  # <em>(encrypted at rest)</em> envelope. Put can be called many times to
80
65
  # add secrets. Finally the <b>lock use case</b> commits all opened secrets
@@ -100,34 +85,102 @@ module OpenSecret
100
85
  # - a new session id and encryption key is generated and used to re-encrypt
101
86
  def execute
102
87
 
103
- #### is this needed
104
- #### is this needed
105
- #### is this needed
106
- #### is this needed
107
- #### is this needed
108
- #### is this needed
109
- #### is this needed
110
- ######### instantiate_collateral
111
- #### is this needed
112
- #### is this needed
113
- #### is this needed
114
- #### is this needed
115
- #### is this needed
116
- #### is this needed
117
-
118
-
119
- envelope = get_envelope
120
-
121
- secret_ids = @secret_id.split("/")
122
- if ( envelope.has_key? secret_ids.first )
123
- envelope[secret_ids.first][secret_ids.last] = @secret_value
124
- else
125
- envelope[secret_ids.first] = { secret_ids.last => @secret_value }
126
- end
127
-
128
- new_encryption_key = ToolBelt::Engineer.strong_key @c[:open][:open_keylen]
129
- Mapper::Settings.write @c[:open][:open_name], @c[:open][:open_keyname], new_encryption_key
130
- envelope.write new_encryption_key
88
+ ## @todo - rename appdb_content as master_db
89
+ ## @todo - rename appdb_content as master_db
90
+ ## @todo - rename appdb_content as master_db
91
+ ## @todo - rename appdb_content as master_db
92
+ ## @todo - rename appdb_content as master_db
93
+ ## @todo - rename appdb_content as master_db
94
+ ## @todo - rename appdb_content as master_db
95
+ ## @todo - rename appdb_content as master_db
96
+ ## @todo - rename appdb_content as master_db
97
+ ## @todo - rename appdb_content as master_db
98
+ ## @todo - rename appdb_content as master_db
99
+ ## @todo - rename appdb_content as master_db
100
+ ## @todo - rename appdb_content as master_db
101
+ ## @todo - rename appdb_content as master_db
102
+
103
+ return unless ops_key_exists?
104
+ appdb_content = OpenKey::KeyApi.read_app_content()
105
+
106
+ puts "---\n"
107
+ puts "--- The Master Database (Before)\n"
108
+ puts "---\n"
109
+ puts JSON.pretty_generate( appdb_content )
110
+ puts "---\n"
111
+
112
+ return if unopened_envelope?( appdb_content )
113
+
114
+ envelope_id = ENVELOPE_KEY_PREFIX + appdb_content[ ENV_PATH ]
115
+ has_content = OpenKey::KeyApi.content_exists?( appdb_content[ envelope_id ] )
116
+
117
+ # --
118
+ # -- To get hold of the content we must either
119
+ # --
120
+ # -- a) unlock it using the breadcrumbs or
121
+ # -- b) start afresh with a new content db
122
+ # --
123
+ content_box = OpenKey::KeyApi.content_unlock( appdb_content[ envelope_id ] ) if has_content
124
+ content_box = OpenKey::KeyDb.new() unless has_content
125
+ content_hdr = create_header()
126
+
127
+ # --
128
+ # -- If no content envelope exists we need to place
129
+ # -- an empty one inside the appdb content database.
130
+ # --
131
+ appdb_content[ envelope_id ] = {} unless has_content
132
+
133
+ # --
134
+ # -- This is the PUT use case so we append a
135
+ # --
136
+ # -- a) key for the new dictionary entry
137
+ # -- b) value for the new dictionary entry
138
+ # --
139
+ # -- into the current content envelope and write
140
+ # -- the envelope to the content filepath.
141
+ # --
142
+ crumbs_dict = appdb_content[ envelope_id ]
143
+ content_box.create_entry( appdb_content[ KEY_PATH ], @secret_id, @secret_value )
144
+ OpenKey::KeyApi.content_lock( crumbs_dict, content_box.to_json, content_hdr )
145
+
146
+ puts "---\n"
147
+ puts "--- The Master Database (After)\n"
148
+ puts "---\n"
149
+ puts JSON.pretty_generate( appdb_content )
150
+ puts "---\n"
151
+
152
+ # --
153
+ # -- Three envelope crumbs namely the external ID, the
154
+ # -- random iv and the crypt key are written afreshinto
155
+ # -- the master database.
156
+ # --
157
+ OpenKey::KeyApi.write_app_content( content_hdr, appdb_content )
158
+ print_put_success
159
+
160
+ return
161
+
162
+
163
+ # ---> secret_ids = @secret_id.split("/")
164
+ # ---> if ( envelope.has_key? secret_ids.first )
165
+ # ---> envelope[secret_ids.first][secret_ids.last] = @secret_value
166
+ # ---> else
167
+ # ---> envelope[secret_ids.first] = { secret_ids.last => @secret_value }
168
+ # ---> end
169
+
170
+ end
171
+
172
+
173
+ private
174
+
175
+
176
+ def print_put_success
177
+
178
+ puts ""
179
+ puts "Success putting a key/value pair into the open envelope."
180
+ puts "You can put more in and then close the envelope."
181
+ puts ""
182
+ puts " ops close"
183
+ puts ""
131
184
 
132
185
  end
133
186
 
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/ruby
2
+
3
+ module OpenSecret
4
+
5
+
6
+ class Read < Command
7
+
8
+
9
+ def execute
10
+
11
+ return unless ops_key_exists?
12
+ appdb_content = OpenKey::KeyApi.read_app_content()
13
+
14
+ ## @todo - rename appdb_content as master_db
15
+ ## @todo - rename appdb_content as master_db
16
+ ## @todo - rename appdb_content as master_db
17
+ ## @todo - rename appdb_content as master_db
18
+ ## @todo - rename appdb_content as master_db
19
+ ## @todo - rename appdb_content as master_db
20
+ ## @todo - rename appdb_content as master_db
21
+ ## @todo - rename appdb_content as master_db
22
+ ## @todo - rename appdb_content as master_db
23
+ ## @todo - rename appdb_content as master_db
24
+ ## @todo - rename appdb_content as master_db
25
+ ## @todo - rename appdb_content as master_db
26
+ ## @todo - rename appdb_content as master_db
27
+ ## @todo - rename appdb_content as master_db
28
+ ## @todo - rename appdb_content as master_db
29
+
30
+ return if unopened_envelope?( appdb_content )
31
+
32
+ envelope_id = ENVELOPE_KEY_PREFIX + appdb_content[ ENV_PATH ]
33
+ has_content = OpenKey::KeyApi.content_exists?( appdb_content[ envelope_id ] )
34
+
35
+ # --
36
+ # -- To get hold of the content we must either
37
+ # --
38
+ # -- a) unlock it using the breadcrumbs or
39
+ # -- b) start afresh with a new content db
40
+ # --
41
+ content_box = OpenKey::KeyApi.content_unlock( appdb_content[ envelope_id ] ) if has_content
42
+ content_box = content_box.fast_forward( appdb_content[ KEY_PATH ] )
43
+ content_box = OpenKey::KeyDb.new() unless has_content
44
+
45
+ puts ""
46
+ puts "--- ----------------------------------\n"
47
+ puts "--- envelope => #{appdb_content[ ENV_PATH ]}\n"
48
+ puts "--- key path => #{appdb_content[ KEY_PATH ]}\n"
49
+ puts "--- ----------------------------------\n"
50
+ puts JSON.pretty_generate( content_box )
51
+ puts "--- ----------------------------------\n"
52
+ puts ""
53
+
54
+ return
55
+
56
+ end
57
+
58
+
59
+ private
60
+
61
+
62
+ def print_put_success
63
+
64
+ puts ""
65
+ puts "Success putting a key/value pair into the open envelope."
66
+ puts "You can put more in and then close the envelope."
67
+ puts ""
68
+ puts " ops close"
69
+ puts ""
70
+
71
+ end
72
+
73
+
74
+ # Perform pre-conditional validations in preparation to executing the main flow
75
+ # of events for this use case. This method may throw the below exceptions.
76
+ #
77
+ # @raise [SafeDirNotConfigured] if the safe's url has not been configured
78
+ # @raise [EmailAddrNotConfigured] if the email address has not been configured
79
+ # @raise [StoreUrlNotConfigured] if the crypt store url is not configured
80
+ def pre_validation
81
+
82
+
83
+ end
84
+
85
+
86
+ end
87
+
88
+
89
+ end
File without changes
File without changes
@@ -0,0 +1,111 @@
1
+ #!/usr/bin/ruby
2
+
3
+ module OpenSecret
4
+
5
+ # The <tt>token use case</tt> prints out an encrypted session token tied
6
+ # to the workstation and shell environment. It should be called like this
7
+ # and <tt>printenv</tt> can be used to verify that a shell-scoped
8
+ # environment variable tying OPEN_SESSION_TOKEN to a 150 character session
9
+ # token, has been created.
10
+ #
11
+ # export OPEN_SESSION_TOKEN=`ops token`
12
+ # printenv
13
+ #
14
+ # Note the <b>back-ticks</b> surrounding the <tt>ops token</tt> call.
15
+ #
16
+ # When the shell closes OPEN_SESSION_TOKEN disappears forever. However if you want to
17
+ # continue using the same shell you can wipe this away.
18
+ #
19
+ # $ unset OPEN_SESSION_TOKEN # Delete the shell session token
20
+ # $ env | grep OPEN_SESSION_TOKEN # Check OPEN_SESSION_TOKEN is deleted
21
+ #
22
+ # You can also delete every env var created by this shell.
23
+ #
24
+ # $ env -i bash # Rewind to (after) login variables
25
+ #
26
+ # == How to instantiate a Command Line Session
27
+ #
28
+ # Initialize the session by generating a random high entropy shell token
29
+ # and then generating an obfuscator key which we use to lock the shell
30
+ # key and return a triply segmented text token that can be used to decrypt
31
+ # and deliver the shell key as long as the same shell on the same machine
32
+ # is employed to make the call.
33
+ #
34
+ # == The 3 Session Token Segments
35
+ #
36
+ # The session token is divided up into 3 segments with a total of 150
37
+ # characters.
38
+ #
39
+ # | -------- | ------------ | ------------------------------------- |
40
+ # | Segment | Length | Purpose |
41
+ # | -------- | ------------ | ------------------------------------- |
42
+ # | 1 | 16 bytes | AES Encrypt Initialization Vector(IV) |
43
+ # | 2 | 80 bytes | Cipher text from Random Key AES crypt |
44
+ # | 3 | 22 chars | Salt for obfuscator key derivation |
45
+ # | -------- | ------------ | ------------------------------------- |
46
+ # | Total | 150 chars | Session Token in Environment Variable |
47
+ # | -------- | ------------ | ------------------------------------- |
48
+ #
49
+ # Why is the <b>16 byte salt and the 80 byte BCrypt ciphertext</b> represented
50
+ # by <b>128 base64 characters</b>?
51
+ #
52
+ # 16 bytes + 80 bytes = 96 bytes
53
+ # 96 bytes x 8 bits = 768 bits
54
+ # 768 bits / 6 bits = 128 base64 characters
55
+ #
56
+ # == Other ways to instantiate the session token
57
+ #
58
+ # The session token environment variable can be delivered
59
+ #
60
+ # - with the export command
61
+ # - via a docker run ENV parameter
62
+ # - using the dot profile script
63
+ #
64
+ class Token < Command
65
+
66
+
67
+ # The <tt>token use case</tt> prints out an encrypted session token tied
68
+ # to the workstation and shell environment. It should be called like this
69
+ # and <tt>printenv</tt> can be used to verify that a shell-scoped
70
+ # environment variable tying OPEN_SESSION_TOKEN to an (approximately) 48 character
71
+ # session password, has been created.
72
+ #
73
+ # export OPEN_SESSION_TOKEN=`ops token`
74
+ # printenv
75
+ #
76
+ # Note the <b>back-ticks</b> surrounding the <tt>ops token</tt> call.
77
+ #
78
+ # <b>How to instantiate a Command Line Session</b>
79
+ #
80
+ # $ printenv
81
+ # $ export OPEN_SESSION_TOKEN=`ops token`
82
+ # $ printenv
83
+ #
84
+ # The 2nd printenv should reveal a shell specific environment variable.
85
+ #
86
+ # OPEN_SESSION_TOKEN=FvxETEpmoVUetyJ0jJk19aus1pQkzLZ8OVJccatYnC9GxDE4Iy3AyWNZ...
87
+ #
88
+ def execute
89
+
90
+ print OpenKey::KeyLocal.generate_shell_key_and_token()
91
+
92
+ end
93
+
94
+
95
+ # Perform pre-conditional validations in preparation to executing the main flow
96
+ # of events for this use case. This method may throw the below exceptions.
97
+ #
98
+ # @raise [SafeDirNotConfigured] if the safe's url has not been configured
99
+ # @raise [EmailAddrNotConfigured] if the email address has not been configured
100
+ # @raise [StoreUrlNotConfigured] if the crypt store url is not configured
101
+ def pre_validation
102
+
103
+
104
+ end
105
+
106
+
107
+ end
108
+
109
+
110
+ end
111
+
File without changes
@@ -1,3 +1,3 @@
1
1
  module OpenSecret
2
- VERSION = "0.0.988"
2
+ VERSION = "0.0.9925"
3
3
  end
@@ -11,8 +11,8 @@ Gem::Specification.new do |spec|
11
11
  spec.email = ["apolloakora@gmail.com"]
12
12
 
13
13
  spec.summary = %q{opensecret locks and unlocks secrets in a simple, secure and intuitive way.}
14
- spec.description = %q{opensecret stashes uncrackable secrets into your Git, S3, DropBox, Google Drive and filesystems backends. You interface with its intuitive Linux, Windows, iOS front ends and it offers SDKs and plugins for Ruby, Python, Java, Jenkins, CodeShip, Ansible, Terraform, Puppet and Chef.}
15
- spec.homepage = "https://www.eco-platform.co.uk"
14
+ spec.description = %q{opensecret stashes uncrackable secrets as encrypted material in plaintext files. After installing hte opensecret gem, you init, open, put and then look at your credentials, sensitive information and secrets.}
15
+ spec.homepage = "https://www.devops-hub.com/software/opensecret"
16
16
  spec.license = "MIT"
17
17
 
18
18
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
@@ -23,10 +23,11 @@ Gem::Specification.new do |spec|
23
23
  spec.bindir = "bin"
24
24
  spec.executables = ['opensecret', 'ops']
25
25
  spec.require_paths = ["lib"]
26
+ spec.required_ruby_version = '>= 2.5.0'
26
27
 
27
28
  spec.add_dependency 'inifile', '~> 3.0'
28
29
  spec.add_dependency 'thor', '~> 0.2'
29
- spec.add_dependency 'macaddr'
30
+ spec.add_dependency 'uuid'
30
31
  spec.add_dependency 'bcrypt'
31
32
 
32
33
  spec.add_development_dependency "bundler", "~> 1.16"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opensecret
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.988
4
+ version: 0.0.9925
5
5
  platform: ruby
6
6
  authors:
7
7
  - Apollo Akora
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-17 00:00:00.000000000 Z
11
+ date: 2018-07-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: inifile
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0.2'
41
41
  - !ruby/object:Gem::Dependency
42
- name: macaddr
42
+ name: uuid
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -80,10 +80,9 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1.16'
83
- description: opensecret stashes uncrackable secrets into your Git, S3, DropBox, Google
84
- Drive and filesystems backends. You interface with its intuitive Linux, Windows,
85
- iOS front ends and it offers SDKs and plugins for Ruby, Python, Java, Jenkins, CodeShip,
86
- Ansible, Terraform, Puppet and Chef.
83
+ description: opensecret stashes uncrackable secrets as encrypted material in plaintext
84
+ files. After installing hte opensecret gem, you init, open, put and then look at
85
+ your credentials, sensitive information and secrets.
87
86
  email:
88
87
  - apolloakora@gmail.com
89
88
  executables:
@@ -102,39 +101,38 @@ files:
102
101
  - Rakefile
103
102
  - bin/opensecret
104
103
  - bin/ops
105
- - lib/exception/cli.error.rb
106
- - lib/exception/errors/cli.errors.rb
107
104
  - lib/extension/array.rb
108
105
  - lib/extension/dir.rb
109
106
  - lib/extension/file.rb
110
107
  - lib/extension/hash.rb
111
108
  - lib/extension/string.rb
112
109
  - lib/factbase/facts.opensecret.io.ini
113
- - lib/interprete/begin.rb
114
- - lib/interprete/cmd.rb
115
- - lib/interprete/export.rb
116
- - lib/interprete/init.rb
117
- - lib/interprete/key.rb
118
- - lib/interprete/open.rb
119
- - lib/interprete/put.rb
120
- - lib/interprete/safe.rb
121
- - lib/interprete/seal.rb
122
- - lib/interprete/set.rb
123
- - lib/interprete/use.rb
124
- - lib/interpreter.rb
110
+ - lib/interprete.rb
125
111
  - lib/keytools/binary.map.rb
126
- - lib/keytools/digester.rb
127
112
  - lib/keytools/doc.conversion.to.ones.and.zeroes.ruby
128
113
  - lib/keytools/doc.rsa.radix.binary-mapping.ruby
129
114
  - lib/keytools/doc.star.schema.strategy.txt
130
115
  - lib/keytools/doc.using.pbkdf2.kdf.ruby
131
116
  - lib/keytools/doc.using.pbkdf2.pkcs.ruby
117
+ - lib/keytools/kdf.api.rb
132
118
  - lib/keytools/kdf.bcrypt.rb
133
119
  - lib/keytools/kdf.pbkdf2.rb
134
- - lib/keytools/key.data.rb
135
- - lib/keytools/key.derivation.rb
136
- - lib/keytools/key.module.rb
120
+ - lib/keytools/kdf.scrypt.rb
121
+ - lib/keytools/key.64.rb
122
+ - lib/keytools/key.algo.rb
123
+ - lib/keytools/key.api.rb
124
+ - lib/keytools/key.db.rb
125
+ - lib/keytools/key.docs.rb
126
+ - lib/keytools/key.error.rb
127
+ - lib/keytools/key.id.rb
128
+ - lib/keytools/key.iv.rb
129
+ - lib/keytools/key.local.rb
130
+ - lib/keytools/key.mach.rb
131
+ - lib/keytools/key.now.rb
132
+ - lib/keytools/key.pair.rb
133
+ - lib/keytools/key.pass.rb
137
134
  - lib/keytools/key.rb
135
+ - lib/keytools/keydebug.txt
138
136
  - lib/logging/gem.logging.rb
139
137
  - lib/modules/cryptology.md
140
138
  - lib/modules/cryptology/aes-256.rb
@@ -145,21 +143,29 @@ files:
145
143
  - lib/modules/cryptology/crypt.io.rb
146
144
  - lib/modules/cryptology/engineer.rb
147
145
  - lib/modules/cryptology/open.bcrypt.rb
148
- - lib/modules/mappers/collateral.rb
149
146
  - lib/modules/mappers/dictionary.rb
150
- - lib/modules/mappers/envelope.rb
151
- - lib/modules/mappers/settings.rb
152
147
  - lib/modules/storage/coldstore.rb
153
148
  - lib/modules/storage/git.store.rb
154
- - lib/notepad/scratch.pad.rb
155
149
  - lib/session/fact.finder.rb
156
150
  - lib/session/require.gem.rb
157
151
  - lib/session/time.stamp.rb
158
152
  - lib/session/user.home.rb
159
- - lib/store-commands.txt
153
+ - lib/usecase/cmd.rb
154
+ - lib/usecase/id.rb
155
+ - lib/usecase/import.rb
156
+ - lib/usecase/init.rb
157
+ - lib/usecase/login.rb
158
+ - lib/usecase/logout.rb
159
+ - lib/usecase/open.rb
160
+ - lib/usecase/put.rb
161
+ - lib/usecase/read.rb
162
+ - lib/usecase/safe.rb
163
+ - lib/usecase/set.rb
164
+ - lib/usecase/token.rb
165
+ - lib/usecase/use.rb
160
166
  - lib/version.rb
161
167
  - opensecret.gemspec
162
- homepage: https://www.eco-platform.co.uk
168
+ homepage: https://www.devops-hub.com/software/opensecret
163
169
  licenses:
164
170
  - MIT
165
171
  metadata:
@@ -172,7 +178,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
172
178
  requirements:
173
179
  - - ">="
174
180
  - !ruby/object:Gem::Version
175
- version: '0'
181
+ version: 2.5.0
176
182
  required_rubygems_version: !ruby/object:Gem::Requirement
177
183
  requirements:
178
184
  - - ">="
@@ -180,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
180
186
  version: '0'
181
187
  requirements: []
182
188
  rubyforge_project:
183
- rubygems_version: 2.5.2.1
189
+ rubygems_version: 2.7.6
184
190
  signing_key:
185
191
  specification_version: 4
186
192
  summary: opensecret locks and unlocks secrets in a simple, secure and intuitive way.