secret_keys 1.0.1 → 1.0.2
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/CHANGE_LOG.md +16 -3
- data/VERSION +1 -1
- data/lib/secret_keys/cli.rb +6 -8
- data/lib/secret_keys/encryptor.rb +3 -4
- data/lib/secret_keys.rb +3 -5
- metadata +8 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 637787c84aaeb9fc38f77ac00f67f38ee4094b0a42ac5fe714a9c10285c65ed7
|
4
|
+
data.tar.gz: c57ed55617d13bee4d988d9c0283fff89534ccddd7980f8fa1afe81b5b7b61a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bfb75203d78bfe74c6c394175cd08a775f3f9415d206f60df941c77ab38c74413cf4e2854a2af3c0208e1e580d0dc3e35f70fd2b59c1d7cd4a7d215a53441efd
|
7
|
+
data.tar.gz: b9b1e6ee2be772b78fe9da0ed4768455ce6249e12ff37b6328b9bc197c4ded8638764810a1a23ffcc1820bcfb696f0ed3723b61cdb6af116723e0030068f988a
|
data/CHANGE_LOG.md
CHANGED
@@ -1,9 +1,22 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
7
|
+
|
8
|
+
## [1.0.2] - 2023-04-04
|
9
|
+
|
10
|
+
- Follow [RFC 4648](https://www.ietf.org/rfc/rfc4648.txt) base 64 encoding, removing line-feeds from the encoded data.
|
11
|
+
|
12
|
+
## [1.0.1] - 2020-06-01
|
13
|
+
|
14
|
+
### Fixed
|
4
15
|
|
5
16
|
- Fix missing documentation links
|
6
17
|
|
7
|
-
##
|
18
|
+
## [1.0.0] 2020-05-31
|
19
|
+
|
20
|
+
### Added
|
8
21
|
|
9
|
-
Initial release
|
22
|
+
- Initial release
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.2
|
data/lib/secret_keys/cli.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
require "optparse"
|
4
4
|
require "io/console"
|
5
5
|
|
6
|
-
require_relative "../secret_keys
|
6
|
+
require_relative "../secret_keys"
|
7
7
|
|
8
8
|
module SecretKeys::CLI
|
9
9
|
class Base
|
@@ -47,7 +47,7 @@ module SecretKeys::CLI
|
|
47
47
|
|
48
48
|
def encrypted_file_contents
|
49
49
|
encrypted = secrets.encrypted_hash
|
50
|
-
string = (format == :yaml ? YAML.dump(encrypted) : JSON.pretty_generate(encrypted))
|
50
|
+
string = ((format == :yaml) ? YAML.dump(encrypted) : JSON.pretty_generate(encrypted))
|
51
51
|
string << $/ unless string.end_with?($/) # ensure file ends with system dependent new line
|
52
52
|
string
|
53
53
|
end
|
@@ -166,8 +166,8 @@ module SecretKeys::CLI
|
|
166
166
|
@secrets = SecretKeys.new({}, secret_key)
|
167
167
|
if input.is_a?(String)
|
168
168
|
if File.exist?(input)
|
169
|
-
|
170
|
-
|
169
|
+
warn "Error: Cannot init preexisting file '#{input}'"
|
170
|
+
warn "You may want to try calling `secret_keys encrypt/edit` instead"
|
171
171
|
exit 1
|
172
172
|
end
|
173
173
|
|
@@ -220,9 +220,7 @@ module SecretKeys::CLI
|
|
220
220
|
raise ArgumentError, "Cannot perform in place editing on streams" unless @input.is_a?(String)
|
221
221
|
# make sure we read the file **before** writing to it.
|
222
222
|
contents = encrypted_file_contents
|
223
|
-
File.
|
224
|
-
file.write(contents)
|
225
|
-
end
|
223
|
+
File.write(@input, contents)
|
226
224
|
else
|
227
225
|
$stdout.write(encrypted_file_contents)
|
228
226
|
$stdout.flush
|
@@ -237,7 +235,7 @@ module SecretKeys::CLI
|
|
237
235
|
|
238
236
|
def run!
|
239
237
|
decrypted = secrets.to_h
|
240
|
-
string = (format == :yaml ? YAML.dump(decrypted) : JSON.pretty_generate(decrypted))
|
238
|
+
string = ((format == :yaml) ? YAML.dump(decrypted) : JSON.pretty_generate(decrypted))
|
241
239
|
string << $/ unless string.end_with?($/) # ensure file ends with system dependent new line
|
242
240
|
$stdout.write(string)
|
243
241
|
$stdout.flush
|
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
require "securerandom"
|
4
4
|
require "openssl"
|
5
|
-
require "base64"
|
6
5
|
|
7
6
|
# Encyption helper for encrypting and decrypting values using AES-256-GCM and returning
|
8
7
|
# as Base64 encoded strings. The encrypted values also include a prefix that can be used
|
@@ -138,13 +137,13 @@ class SecretKeys::Encryptor
|
|
138
137
|
# Receive a cipher object (initialized with key) and data
|
139
138
|
def encode_aes(params)
|
140
139
|
encoded = params.values.pack(ENCODING_FORMAT)
|
141
|
-
# encode base64 and get rid of
|
142
|
-
|
140
|
+
# encode base64 and get rid of unnecessary '=' padding
|
141
|
+
[encoded].pack("m0").tr("=", "")
|
143
142
|
end
|
144
143
|
|
145
144
|
# Passed in an aes encoded string and returns a cipher object
|
146
145
|
def decode_aes(str)
|
147
|
-
unpacked_data =
|
146
|
+
unpacked_data = str.unpack1("m").unpack(ENCODING_FORMAT)
|
148
147
|
# Splat the data array apart
|
149
148
|
# nonce, auth_tag, encrypted_data = unpacked_data
|
150
149
|
CipherParams.new(*unpacked_data)
|
data/lib/secret_keys.rb
CHANGED
@@ -44,7 +44,7 @@ class SecretKeys < DelegateClass(Hash)
|
|
44
44
|
def to_h
|
45
45
|
@values
|
46
46
|
end
|
47
|
-
|
47
|
+
alias_method :to_hash, :to_h
|
48
48
|
|
49
49
|
# Mark the key as being encrypted when the JSON is saved.
|
50
50
|
#
|
@@ -94,11 +94,9 @@ class SecretKeys < DelegateClass(Hash)
|
|
94
94
|
format ||= @format
|
95
95
|
format = format.to_s.downcase
|
96
96
|
|
97
|
-
output = (format == "yaml" ? YAML.dump(encrypted) : JSON.pretty_generate(encrypted))
|
97
|
+
output = ((format == "yaml") ? YAML.dump(encrypted) : JSON.pretty_generate(encrypted))
|
98
98
|
output << $/ unless output.end_with?($/) # ensure file ends with system dependent new line
|
99
|
-
File.
|
100
|
-
file.write(output)
|
101
|
-
end
|
99
|
+
File.write(path, output)
|
102
100
|
nil
|
103
101
|
end
|
104
102
|
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: secret_keys
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brian Durand
|
8
8
|
- Winston Durand
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-04-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '2.0'
|
28
|
-
description:
|
28
|
+
description:
|
29
29
|
email:
|
30
30
|
- bbdurand@gmail.com
|
31
31
|
- me@winstondurand.com
|
@@ -49,9 +49,9 @@ licenses:
|
|
49
49
|
- MIT
|
50
50
|
metadata:
|
51
51
|
homepage_uri: https://github.com/bdurand/secret_keys
|
52
|
-
source_code_uri: https://github.com/bdurand/secret_keys/tree/v1.0.
|
52
|
+
source_code_uri: https://github.com/bdurand/secret_keys/tree/v1.0.2
|
53
53
|
documentation_uri: https://www.rubydoc.info/gems/secret_keys
|
54
|
-
post_install_message:
|
54
|
+
post_install_message:
|
55
55
|
rdoc_options: []
|
56
56
|
require_paths:
|
57
57
|
- lib
|
@@ -66,8 +66,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
66
66
|
- !ruby/object:Gem::Version
|
67
67
|
version: '0'
|
68
68
|
requirements: []
|
69
|
-
rubygems_version: 3.
|
70
|
-
signing_key:
|
69
|
+
rubygems_version: 3.2.22
|
70
|
+
signing_key:
|
71
71
|
specification_version: 4
|
72
72
|
summary: Simple mechanism for loading JSON file with encrypted values.
|
73
73
|
test_files: []
|