sym 3.0.0 → 3.0.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/.envrc +1 -1
- data/.rubocop.yml +18 -2
- data/.rubocop_todo.yml +115 -0
- data/CHANGELOG.md +21 -2
- data/README.adoc +9 -4
- data/README.pdf +29732 -19
- data/exe/keychain +2 -2
- data/exe/sym +3 -3
- data/lib/sym/app.rb +6 -7
- data/lib/sym/app/cli.rb +3 -5
- data/lib/sym/app/cli_slop.rb +9 -10
- data/lib/sym/app/commands/base_command.rb +1 -0
- data/lib/sym/app/commands/bash_completion.rb +1 -1
- data/lib/sym/app/commands/keychain_add_key.rb +1 -1
- data/lib/sym/app/commands/show_examples.rb +5 -5
- data/lib/sym/app/input/handler.rb +2 -2
- data/lib/sym/app/output/base.rb +1 -1
- data/lib/sym/app/password/providers.rb +1 -3
- data/lib/sym/app/private_key/key_source_check.rb +2 -3
- data/lib/sym/application.rb +3 -3
- data/lib/sym/configuration.rb +1 -5
- data/lib/sym/constants.rb +1 -1
- data/lib/sym/data.rb +2 -2
- data/lib/sym/extensions/instance_methods.rb +5 -5
- data/lib/sym/extensions/stdlib.rb +2 -2
- data/lib/sym/version.rb +1 -1
- data/sym.gemspec +4 -2
- metadata +38 -8
data/exe/keychain
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
lib_path = File.expand_path(File.dirname(__FILE__)
|
3
|
+
lib_path = File.expand_path("#{File.dirname(__FILE__)}/../lib")
|
4
4
|
$LOAD_PATH << lib_path if File.exist?(lib_path) && !$LOAD_PATH.include?(lib_path)
|
5
5
|
|
6
6
|
require 'sym'
|
@@ -9,7 +9,7 @@ require 'sym/app/keychain'
|
|
9
9
|
require 'colored2'
|
10
10
|
|
11
11
|
def usage
|
12
|
-
puts
|
12
|
+
puts "Usage: #{'keychain'.bold.blue}#{' name [ add <contents> | find | delete ]'.bold.green}"
|
13
13
|
exit 0
|
14
14
|
end
|
15
15
|
|
data/exe/sym
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
require_relative '../lib/ruby_warnings'
|
5
5
|
|
6
|
-
lib_path = File.expand_path(File.dirname(__FILE__)
|
6
|
+
lib_path = File.expand_path("#{File.dirname(__FILE__)}/../lib")
|
7
7
|
$LOAD_PATH << lib_path if File.exist?(lib_path) && !$LOAD_PATH.include?(lib_path)
|
8
8
|
|
9
9
|
require 'sym'
|
@@ -13,9 +13,9 @@ require 'sym/app'
|
|
13
13
|
begin
|
14
14
|
exit ::Sym::App::CLI.new(ARGV.dup).execute
|
15
15
|
rescue Interrupt => e
|
16
|
-
|
16
|
+
$stderr.flush
|
17
17
|
warn "Interrupt, #{e.message}, exiting."
|
18
|
-
|
18
|
+
$stderr.flush
|
19
19
|
exit 1
|
20
20
|
end
|
21
21
|
|
data/lib/sym/app.rb
CHANGED
@@ -16,15 +16,14 @@ module Sym
|
|
16
16
|
#
|
17
17
|
module App
|
18
18
|
class << self
|
19
|
-
attr_accessor :exit_code
|
20
|
-
attr_accessor :stdin, :stdout, :stderr
|
19
|
+
attr_accessor :exit_code, :stdin, :stdout, :stderr
|
21
20
|
end
|
22
21
|
|
23
22
|
self.exit_code = 0
|
24
23
|
|
25
|
-
self.stdin =
|
26
|
-
self.stdout =
|
27
|
-
self.stderr =
|
24
|
+
self.stdin = $stdin
|
25
|
+
self.stdout = $stdout
|
26
|
+
self.stderr = $stderr
|
28
27
|
|
29
28
|
def self.out
|
30
29
|
self.stderr
|
@@ -44,7 +43,7 @@ module Sym
|
|
44
43
|
|
45
44
|
lines = []
|
46
45
|
|
47
|
-
error_type = "#{
|
46
|
+
error_type = "#{type || exception.class.name}"
|
48
47
|
error_details = (details || exception.message)
|
49
48
|
|
50
49
|
operation = command ? "to #{command.class.short_name.to_s.humanize.downcase}" : ''
|
@@ -55,7 +54,7 @@ module Sym
|
|
55
54
|
lines << exception.backtrace.join("\n").red.bold if config[:trace]
|
56
55
|
lines << "\n"
|
57
56
|
else
|
58
|
-
lines << " ✖ Sym Error #{operation}:".bold.red
|
57
|
+
lines << "#{" ✖ Sym Error #{operation}:".bold.red}#{(reason ? " #{reason} ".red.italic: " #{error_details}")[0..70]}#{' '.normal}\n"
|
59
58
|
lines << "#{comments}" if comments
|
60
59
|
end
|
61
60
|
|
data/lib/sym/app/cli.rb
CHANGED
@@ -58,7 +58,7 @@ module Sym
|
|
58
58
|
|
59
59
|
attr_accessor :opts, :application, :outputs, :stdin, :stdout, :stderr, :kernel, :args
|
60
60
|
|
61
|
-
def initialize(argv, stdin =
|
61
|
+
def initialize(argv, stdin = $stdin, stdout = $stdout, stderr = $stderr, kernel = nil)
|
62
62
|
self.args = argv
|
63
63
|
self.stdin = stdin
|
64
64
|
self.stdout = stdout
|
@@ -79,15 +79,13 @@ module Sym
|
|
79
79
|
end
|
80
80
|
|
81
81
|
# Deal with SYM_ARGS and -A
|
82
|
-
if opts[:sym_args]
|
83
|
-
if non_empty_array?(sym_args)
|
82
|
+
if opts[:sym_args] && non_empty_array?(sym_args)
|
84
83
|
args << sym_args
|
85
84
|
args.flatten!
|
86
85
|
args.compact!
|
87
86
|
args.delete('-A')
|
88
87
|
args.delete('--sym-args')
|
89
88
|
self.opts = parse(args)
|
90
|
-
end
|
91
89
|
end
|
92
90
|
|
93
91
|
# Disable coloring if requested, or if piping STDOUT
|
@@ -99,7 +97,7 @@ module Sym
|
|
99
97
|
rescue StandardError => e
|
100
98
|
log :error, "#{e.message}" if opts
|
101
99
|
error exception: e
|
102
|
-
quit!(127) if stdin ==
|
100
|
+
quit!(127) if stdin == $stdin
|
103
101
|
end
|
104
102
|
|
105
103
|
self.application = ::Sym::Application.new(self.opts, stdin, stdout, stderr, kernel)
|
data/lib/sym/app/cli_slop.rb
CHANGED
@@ -19,7 +19,7 @@ module Sym
|
|
19
19
|
o.separator ' 5) use -i to paste/type the key interactively'.dark
|
20
20
|
o.separator ' 6) default key file (if present) at '.dark + Sym.default_key_file.magenta.bold
|
21
21
|
o.separator ' '
|
22
|
-
o.separator
|
22
|
+
o.separator " #{key_spec}#{' = -k/--key [ key | file | keychain | env variable name ]'.green.bold}"
|
23
23
|
o.separator ' -i/--interactive'.green.bold
|
24
24
|
o.separator ''
|
25
25
|
o.separator ' Encrypt/Decrypt from STDIN/file/args, to STDOUT/file:'.dark
|
@@ -48,7 +48,7 @@ module Sym
|
|
48
48
|
o.separator 'Modes:'.yellow
|
49
49
|
o.bool '-e', '--encrypt', ' encrypt mode'
|
50
50
|
o.bool '-d', '--decrypt', ' decrypt mode'
|
51
|
-
o.string '-t', '--edit', '[file] '.blue
|
51
|
+
o.string '-t', '--edit', "#{'[file] '.blue} edit encrypted file in an $EDITOR", default: nil
|
52
52
|
o.string '-n', '--negate', '[file] '.blue + " encrypts any regular #{'file'.green} into #{'file.enc'.green}" + "\n" +
|
53
53
|
" conversely decrypts #{'file.enc'.green} into #{'file'.green}."
|
54
54
|
o.separator ' '
|
@@ -57,25 +57,25 @@ module Sym
|
|
57
57
|
o.bool '-p', '--password', ' encrypt the key with a password'
|
58
58
|
|
59
59
|
if Sym::App.osx?
|
60
|
-
o.string '-x', '--keychain', '[key-name] '.blue
|
60
|
+
o.string '-x', '--keychain', "#{'[key-name] '.blue}write the key to OS-X Keychain"
|
61
61
|
end
|
62
62
|
|
63
63
|
o.separator ' '
|
64
64
|
o.separator 'Read existing private key from:'.yellow
|
65
|
-
o.string '-k', '--key', '[key-spec]'.blue
|
65
|
+
o.string '-k', '--key', "#{'[key-spec]'.blue} private key, key file, or keychain"
|
66
66
|
o.bool '-i', '--interactive', ' Paste or type the key interactively'
|
67
67
|
|
68
68
|
o.separator ' '
|
69
69
|
o.separator 'Password Cache:'.yellow
|
70
70
|
o.bool '-c', '--cache-passwords', ' enable password cache'
|
71
|
-
o.integer '-z', '--cache-timeout', '[seconds]'.blue
|
71
|
+
o.integer '-z', '--cache-timeout', "#{'[seconds]'.blue} expire passwords after"
|
72
72
|
o.string '-r', '--cache-provider', '[provider]'.blue + ' cache provider, one of ' + "#{Sym::App::Password::Providers.provider_list}"
|
73
73
|
|
74
74
|
o.separator ' '
|
75
75
|
o.separator 'Data to Encrypt/Decrypt:'.yellow
|
76
|
-
o.string '-s', '--string', '[string]'.blue
|
77
|
-
o.string '-f', '--file', '[file] '.blue
|
78
|
-
o.string '-o', '--output', '[file] '.blue
|
76
|
+
o.string '-s', '--string', "#{'[string]'.blue} specify a string to encrypt/decrypt"
|
77
|
+
o.string '-f', '--file', "#{'[file] '.blue} filename to read from"
|
78
|
+
o.string '-o', '--output', "#{'[file] '.blue} filename to write to"
|
79
79
|
|
80
80
|
o.separator ' '
|
81
81
|
o.separator 'Flags:'.yellow
|
@@ -95,8 +95,7 @@ module Sym
|
|
95
95
|
" user home available, you may need to force set user's home to any existing\n" +
|
96
96
|
" directory using the #{'--user-home'.bold.blue} flag.\n"
|
97
97
|
|
98
|
-
o.string '-B', '--bash-support', '[file]'.blue
|
99
|
-
' such as ~/.bash_profile or ~/.bashrc'
|
98
|
+
o.string '-B', '--bash-support', "#{'[file]'.blue} append bash completion & utils to a file\n such as ~/.bash_profile or ~/.bashrc"
|
100
99
|
o.string '-u', '--user-home', '[DIR]'.blue + " Overrides #{'${HOME}'.green} ==> supports AWS Lambda\n"
|
101
100
|
|
102
101
|
o.separator ' '
|
@@ -13,7 +13,7 @@ module Sym
|
|
13
13
|
|
14
14
|
def execute
|
15
15
|
if Sym.default_key? && Sym.default_key == self.key
|
16
|
-
raise
|
16
|
+
raise "Refusing to import key specified in the default key file #{Sym.default_key_file.italic}"
|
17
17
|
end
|
18
18
|
raise Sym::Errors::NoPrivateKeyFound.new("Unable to resolve private key from argument '#{opts[:key]}'") if self.key.nil?
|
19
19
|
add_to_keychain_if_needed(self.key)
|
@@ -16,12 +16,12 @@ module Sym
|
|
16
16
|
result: '75ngenJpB6zL47/8Wo7Ne6JN1pnOsqNEcIqblItpfg4='.green)
|
17
17
|
|
18
18
|
output << example(comment: 'generate a new key with a cached password & save to the default key file',
|
19
|
-
command:
|
20
|
-
echo:
|
21
|
-
result:
|
19
|
+
command: "sym -gcpqo #{Sym.default_key_file}",
|
20
|
+
echo: "New Password : #{'••••••••••'.green}",
|
21
|
+
result: "Confirm Password : #{'••••••••••'.green}")
|
22
22
|
|
23
23
|
output << example(comment: 'encrypt a plain text string with default key file, and immediately decrypt it',
|
24
|
-
command:
|
24
|
+
command: "sym -es #{'"secret string"'.bold.yellow} | sym -d",
|
25
25
|
result: 'secret string'.green)
|
26
26
|
|
27
27
|
output << example(comment: 'encrypt secrets file using key in the environment, and --negate option:',
|
@@ -35,7 +35,7 @@ module Sym
|
|
35
35
|
result: 'secret string'.green)
|
36
36
|
|
37
37
|
output << example(comment: 'encrypt/decrypt sym.yml using the default key file',
|
38
|
-
command:
|
38
|
+
command: "sym -gcq > #{Sym.default_key_file}",
|
39
39
|
echo: 'sym -n secrets.yml',
|
40
40
|
result: 'sym -df secrets.yml.enc',
|
41
41
|
)
|
@@ -6,7 +6,7 @@ module Sym
|
|
6
6
|
class Handler
|
7
7
|
attr_accessor :stdin, :stdout, :stderr, :kernel
|
8
8
|
|
9
|
-
def initialize(stdin =
|
9
|
+
def initialize(stdin = $stdin, stdout = $stdout, stderr = $stderr, kernel = nil)
|
10
10
|
self.stdin = stdin
|
11
11
|
self.stdout = stdout
|
12
12
|
self.stderr = stderr
|
@@ -27,7 +27,7 @@ module Sym
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def prompt(message, color)
|
30
|
-
unless
|
30
|
+
unless $stdin.isatty && $stdin.tty?
|
31
31
|
raise Sym::Errors::CantReadPasswordNoTTY.new('key requires a password, however STDIN is not a TTY')
|
32
32
|
end
|
33
33
|
highline(message, color)
|
data/lib/sym/app/output/base.rb
CHANGED
@@ -6,7 +6,7 @@ module Sym
|
|
6
6
|
|
7
7
|
attr_accessor :opts, :stdin, :stdout, :stderr, :kernel
|
8
8
|
|
9
|
-
def initialize(opts, stdin =
|
9
|
+
def initialize(opts, stdin = $stdin, stdout = $stdout, stderr = $stderr, kernel = nil)
|
10
10
|
self.opts = opts
|
11
11
|
self.stdin = stdin
|
12
12
|
self.stdout = stdout
|
@@ -16,9 +16,8 @@ module Sym
|
|
16
16
|
attr_accessor :name, :reducted, :input, :output
|
17
17
|
|
18
18
|
def initialize(name:,
|
19
|
-
reducted: false,
|
20
|
-
input: ->(detector) { detector.opts[:key] }
|
21
|
-
output:)
|
19
|
+
output:, reducted: false,
|
20
|
+
input: ->(detector) { detector.opts[:key] })
|
22
21
|
|
23
22
|
self.name = name
|
24
23
|
self.reducted = reducted
|
data/lib/sym/application.rb
CHANGED
@@ -31,7 +31,7 @@ module Sym
|
|
31
31
|
:password_cache,
|
32
32
|
:stdin, :stdout, :stderr, :kernel
|
33
33
|
|
34
|
-
def initialize(opts, stdin =
|
34
|
+
def initialize(opts, stdin = $stdin, stdout = $stdout, stderr = $stderr, kernel = nil)
|
35
35
|
self.stdin = stdin
|
36
36
|
self.stdout = stdout
|
37
37
|
self.stderr = stderr
|
@@ -224,9 +224,9 @@ module Sym
|
|
224
224
|
detect_key_source
|
225
225
|
if args.require_key? && !self.key
|
226
226
|
log :error, 'Unable to determine the key, which appears to be required with current args'
|
227
|
-
raise Sym::Errors::NoPrivateKeyFound,
|
227
|
+
raise Sym::Errors::NoPrivateKeyFound, "Private key is required when #{self.action ? "#{self.action.to_s}ypting" : provided_flags.join(', ')}"
|
228
228
|
end
|
229
|
-
log :debug, "initialize_key_source: detected key ends with [...#{(key ? key[-5
|
229
|
+
log :debug, "initialize_key_source: detected key ends with [...#{(key ? key[-5..] : 'nil').bold.magenta}]"
|
230
230
|
log :debug, "opts: #{self.provided_value_options.to_s.green.bold}"
|
231
231
|
log :debug, "flags: #{self.provided_flags.to_s.green.bold}"
|
232
232
|
end
|
data/lib/sym/configuration.rb
CHANGED
@@ -35,10 +35,6 @@ module Sym
|
|
35
35
|
|
36
36
|
# See file +lib/sym.rb+ where these values are defined.
|
37
37
|
|
38
|
-
attr_accessor :data_cipher, :password_cipher, :private_key_cipher
|
39
|
-
attr_accessor :compression_enabled, :compression_level
|
40
|
-
attr_accessor :password_cache_default_provider, :password_cache_timeout
|
41
|
-
attr_accessor :password_cache_arguments
|
42
|
-
attr_accessor :default_key_file, :encrypted_file_extension
|
38
|
+
attr_accessor :data_cipher, :password_cipher, :private_key_cipher, :compression_enabled, :compression_level, :password_cache_default_provider, :password_cache_timeout, :password_cache_arguments, :default_key_file, :encrypted_file_extension
|
43
39
|
end
|
44
40
|
end
|
data/lib/sym/constants.rb
CHANGED
data/lib/sym/data.rb
CHANGED
@@ -11,11 +11,11 @@ module Sym
|
|
11
11
|
# the result of `Marshal.dump(data)` using Zlib, and then doing `#urlsafe_encode64` encoding
|
12
12
|
# to convert it to a string,
|
13
13
|
module Data
|
14
|
-
def encode(data, compress
|
14
|
+
def encode(data, compress: true)
|
15
15
|
Encoder.new(data, compress).data_encoded
|
16
16
|
end
|
17
17
|
|
18
|
-
def decode(data_encoded, compress
|
18
|
+
def decode(data_encoded, compress: nil)
|
19
19
|
Decoder.new(data_encoded, compress).data
|
20
20
|
end
|
21
21
|
end
|
@@ -72,7 +72,7 @@ module Sym
|
|
72
72
|
key_len = cipher.key_len
|
73
73
|
salt ||= OpenSSL::Random.random_bytes 16
|
74
74
|
iter = 20_000
|
75
|
-
digest = OpenSSL::Digest
|
75
|
+
digest = OpenSSL::Digest.new('SHA256')
|
76
76
|
key = OpenSSL::PKCS5.pbkdf2_hmac(password, salt, iter, key_len, digest)
|
77
77
|
return key, salt
|
78
78
|
end
|
@@ -85,15 +85,15 @@ module Sym
|
|
85
85
|
iv: iv)
|
86
86
|
|
87
87
|
block.call(cipher_struct) if block
|
88
|
-
|
88
|
+
|
89
89
|
encrypted_data = update_cipher(cipher_struct.cipher, data)
|
90
90
|
arguments = { encrypted_data: encrypted_data,
|
91
91
|
iv: cipher_struct.iv,
|
92
92
|
cipher_name: cipher_struct.cipher.name,
|
93
93
|
salt: cipher_struct.salt,
|
94
94
|
compress: !compression_enabled }
|
95
|
-
wrapper_struct = WrapperStruct.new(arguments)
|
96
|
-
encode(wrapper_struct, false)
|
95
|
+
wrapper_struct = WrapperStruct.new(**arguments)
|
96
|
+
encode(wrapper_struct, compress: false)
|
97
97
|
end
|
98
98
|
|
99
99
|
# Expects key to be a base64 encoded key data
|
@@ -109,7 +109,7 @@ module Sym
|
|
109
109
|
|
110
110
|
def encode_incoming_data(data)
|
111
111
|
compression_enabled = !data.respond_to?(:size) || (data.size > 100 && encryption_config.compression_enabled)
|
112
|
-
data = encode(data, compression_enabled)
|
112
|
+
data = encode(data, compress: compression_enabled)
|
113
113
|
[data, compression_enabled]
|
114
114
|
end
|
115
115
|
|
data/lib/sym/version.rb
CHANGED
data/sym.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.bindir = 'exe'
|
19
19
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
20
|
spec.require_paths = ['lib']
|
21
|
-
spec.required_ruby_version = '>= 2.
|
21
|
+
spec.required_ruby_version = '>= 2.6'
|
22
22
|
spec.post_install_message = <<~EOF
|
23
23
|
|
24
24
|
Thank you for installing Sym!
|
@@ -60,7 +60,9 @@ Gem::Specification.new do |spec|
|
|
60
60
|
spec.add_development_dependency 'relaxed-rubocop'
|
61
61
|
spec.add_development_dependency 'rspec', '~> 3'
|
62
62
|
spec.add_development_dependency 'rspec-its'
|
63
|
-
spec.add_development_dependency 'rubocop', '0.81.0'
|
63
|
+
spec.add_development_dependency 'rubocop' # , '0.81.0'
|
64
|
+
spec.add_development_dependency 'rubocop-rspec' # , '0.81.0'
|
65
|
+
spec.add_development_dependency 'rubocop-rake' # , '0.81.0'
|
64
66
|
spec.add_development_dependency 'simplecov'
|
65
67
|
spec.add_development_dependency 'codecov'
|
66
68
|
spec.add_development_dependency 'yard'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sym
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Konstantin Gredeskoul
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colored2
|
@@ -196,16 +196,44 @@ dependencies:
|
|
196
196
|
name: rubocop
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
198
198
|
requirements:
|
199
|
-
- -
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: rubocop-rspec
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - ">="
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '0'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ">="
|
200
221
|
- !ruby/object:Gem::Version
|
201
|
-
version: 0
|
222
|
+
version: '0'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: rubocop-rake
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - ">="
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0'
|
202
230
|
type: :development
|
203
231
|
prerelease: false
|
204
232
|
version_requirements: !ruby/object:Gem::Requirement
|
205
233
|
requirements:
|
206
|
-
- -
|
234
|
+
- - ">="
|
207
235
|
- !ruby/object:Gem::Version
|
208
|
-
version: 0
|
236
|
+
version: '0'
|
209
237
|
- !ruby/object:Gem::Dependency
|
210
238
|
name: simplecov
|
211
239
|
requirement: !ruby/object:Gem::Requirement
|
@@ -294,12 +322,14 @@ files:
|
|
294
322
|
- ".gitignore"
|
295
323
|
- ".rspec"
|
296
324
|
- ".rubocop.yml"
|
325
|
+
- ".rubocop_todo.yml"
|
297
326
|
- ".travis.yml"
|
298
327
|
- ".yardopts"
|
299
328
|
- CHANGELOG.md
|
300
329
|
- Gemfile
|
301
330
|
- LICENSE
|
302
331
|
- README.adoc
|
332
|
+
- README.pdf
|
303
333
|
- Rakefile
|
304
334
|
- SYM-CLI.md
|
305
335
|
- bin/changelog
|
@@ -388,14 +418,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
388
418
|
requirements:
|
389
419
|
- - ">="
|
390
420
|
- !ruby/object:Gem::Version
|
391
|
-
version: '2.
|
421
|
+
version: '2.6'
|
392
422
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
393
423
|
requirements:
|
394
424
|
- - ">="
|
395
425
|
- !ruby/object:Gem::Version
|
396
426
|
version: '0'
|
397
427
|
requirements: []
|
398
|
-
rubygems_version: 3.
|
428
|
+
rubygems_version: 3.2.8
|
399
429
|
signing_key:
|
400
430
|
specification_version: 4
|
401
431
|
summary: Dead-simple and easy to use encryption library on top of OpenSSL, offering
|