cfsslrb 0.10.5

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: a94f9913b2050adfed2d05eb5d2c7a14eb648089
4
+ data.tar.gz: 1c02c3573096b974f033a8f72f02e47f31a41b11
5
+ SHA512:
6
+ metadata.gz: 360783deaae5703be9cce4743dde28c3e43e0d35901954bce67cf5711f1992531af5f0ca3db17bfee51e236b0b0f6f17004e3c7e1a979defb9a50c40cfaff85d
7
+ data.tar.gz: 6ae90947bc36bbe8a06608e4126ef49c50fbf3f59080d63a3fb0276fd14b93a4fc32e5dd50d96f87bae91ed43e9373e3fd6d2b4e4b9b459e9d50e5047220ed6a
data/.gitignore ADDED
@@ -0,0 +1,12 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ .ruby-version
11
+ .ruby-gemset
12
+ *.gem
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in cfsslrb.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,34 @@
1
+ # Cfsslrb
2
+ I wanted a quick way to churn out certs, ended up with this
3
+
4
+ ## Installation
5
+
6
+ Add this line to your application's Gemfile:
7
+
8
+ ```ruby
9
+ gem 'cfsslrb'
10
+ ```
11
+
12
+ And then execute:
13
+
14
+ $ bundle
15
+
16
+ Or install it yourself as:
17
+
18
+ $ gem install cfsslrb
19
+
20
+ ## Usage
21
+
22
+ ```shell
23
+ cfsslrb --help
24
+ ```
25
+
26
+ ## Development
27
+
28
+ After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
29
+
30
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
31
+
32
+ ## Contributing
33
+
34
+ Bug reports and pull requests are welcome on GitHub at https://github.com/voobscout/cfsslrb.
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+ task :default => :spec
data/bin/cfsslrb ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ # require 'pry'
3
+ require((Pathname.new(__FILE__).expand_path.dirname.parent + 'lib/cfsslrb').to_s)
4
+ Cfsslrb::CLI::MainCommand.run
5
+ # (ARGV)
data/bin/clamp_test.rb ADDED
@@ -0,0 +1,73 @@
1
+ require 'clamp'
2
+ require 'pry'
3
+
4
+ module MyBin
5
+ # class AC
6
+ class AbstractCommand < Clamp::Command
7
+ option ['-v', '--verbose'], :flag, 'be verbose'
8
+
9
+ option '--version', :flag, 'show version' do
10
+ puts 'MyBin v0.0.1'
11
+ exit(0)
12
+ end
13
+
14
+ def say(message)
15
+ message = message.upcase if verbose?
16
+ puts message
17
+ end
18
+ end
19
+ # docu
20
+ class CloneCommand < AbstractCommand
21
+ parameter 'REPOSITORY', 'repository to clone'
22
+ parameter '[DIR]', 'working directory', default: '.'
23
+
24
+ def execute
25
+ say "cloning to #{dir}"
26
+ end
27
+ end
28
+ # docu
29
+ class PullCommand < AbstractCommand
30
+ option '--[no-]commit', :flag, 'Perform the merge and commit the result.'
31
+
32
+ def execute
33
+ say 'pulling'
34
+ end
35
+ end
36
+ # docu
37
+ class SuperStatusCommand < AbstractCommand
38
+ # option ['-s', '--short'], :flag, 'Give the output in the short-format.'
39
+ option ['-n', '--name'], 'NAME', 'option description', multivalued: true
40
+ parameter '[HOST]', 'server address', environment_variable: 'MYAPP_HOST'
41
+ parameter '[SAN] ...', 'Subject Alternative Names', attribute_name: :alt_names
42
+
43
+ def execute
44
+ say(name_list.join(',') + ' | ' + alt_names.join(','))
45
+ say(host)
46
+ end
47
+
48
+ def some
49
+ puts 'yo!'
50
+ end
51
+ end
52
+ # docu
53
+ class StatusCommand < AbstractCommand
54
+ option ['-s', '--short'], :flag, 'Give the output in the short-format.'
55
+
56
+ def execute
57
+ if short?
58
+ say 'good'
59
+ else
60
+ say 'its all good ...'
61
+ end
62
+ end
63
+ subcommand 'superstatus', 'get a superstatus', SuperStatusCommand
64
+ end
65
+ # docu
66
+ class MainCommand < AbstractCommand
67
+ subcommand 'clone', 'Clone a remote repository.', CloneCommand
68
+ subcommand 'pull', 'Fetch and merge updates.', PullCommand
69
+ subcommand 'status', 'Display status of local repository.', StatusCommand
70
+ end
71
+ end
72
+
73
+ MyBin::MainCommand.run
data/bin/console ADDED
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "cfsslrb"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ require "pry"
10
+ Pry.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/cfsslrb.gemspec ADDED
@@ -0,0 +1,44 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'cfsslrb/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "cfsslrb"
8
+ spec.version = Cfsslrb::VERSION
9
+ spec.authors = ["voobscout"]
10
+ spec.email = ["voobscout@archlinux.info"]
11
+
12
+ spec.summary = %q{cfsslrb - yaml instead of json}
13
+ spec.description = spec.summary
14
+ spec.homepage = "https://github.com/voobscout/cfsslrb"
15
+
16
+ # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
17
+ # to allow pushing to a single host or delete this section to allow pushing to any host.
18
+ # if spec.respond_to?(:metadata)
19
+ # spec.metadata['allowed_push_host'] = ''
20
+ # else
21
+ # raise "RubyGems 2.0 or newer is required to protect against " \
22
+ # "public gem pushes."
23
+ # end
24
+
25
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
26
+ f.match(%r{^(test|spec|features)/})
27
+ end
28
+ # spec.bindir = "exe"
29
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
30
+ spec.require_paths = ['lib']
31
+
32
+ spec.add_development_dependency 'bundler'
33
+ spec.add_development_dependency 'rake'
34
+ spec.add_development_dependency 'rubocop'
35
+ spec.add_development_dependency 'pry'
36
+ spec.add_development_dependency 'pry-doc'
37
+ spec.add_development_dependency 'pry-byebug'
38
+ spec.add_development_dependency 'pry-awesome_print'
39
+
40
+ spec.add_dependency 'corefines'
41
+ spec.add_dependency 'cocaine'
42
+ spec.add_dependency 'clamp'
43
+ spec.add_dependency 'activesupport'
44
+ end
@@ -0,0 +1,59 @@
1
+ ssl:
2
+ config:
3
+ signing:
4
+ default:
5
+ expiry: 43800h
6
+ profiles:
7
+ server:
8
+ expiry: 43800h
9
+ usages:
10
+ - signing
11
+ - key encipherment
12
+ - server auth
13
+ client:
14
+ expiry: 43800h
15
+ usages:
16
+ - signing
17
+ - key encipherment
18
+ - client auth
19
+ client-server:
20
+ expiry: 43800h
21
+ usages:
22
+ - signing
23
+ - key encipherment
24
+ - server auth
25
+ - client auth
26
+ ca:
27
+ CN: Infinidim Enterprises Lab
28
+ hosts:
29
+ - www.infinidim.enterprises
30
+ - ctl.infinidim.enterprises
31
+ - n0.infinidim.enterprises
32
+ - n1.infinidim.enterprises
33
+ - n2.infinidim.enterprises
34
+ - n3.infinidim.enterprises
35
+ key:
36
+ algo: rsa
37
+ size: 2048
38
+ names:
39
+ - C: US
40
+ L: Frogstar
41
+ O: Sirius Cybernetics Corporation
42
+ OU: Complaints Department
43
+ ST: World B
44
+ node:
45
+ CN: hostname
46
+ hosts:
47
+ - localhost
48
+ - localhost.local
49
+ - 127.0.0.1
50
+ - hostname
51
+ - hostname.domain.name
52
+ - public_ipv4
53
+ key:
54
+ algo: rsa
55
+ size: 2048
56
+ names:
57
+ - C: US
58
+ L: Frogstar
59
+ ST: World B
@@ -0,0 +1,17 @@
1
+ module Cfsslrb
2
+ module CLI
3
+ #
4
+ class AbstractCommand < Clamp::Command
5
+ include Cfsslrb::Helpers
6
+
7
+ option ['-f', '--force'], :flag, 'Force overwrite', default: false
8
+ option ['-d', '--directory'], 'DIRECTORY', 'Filesystem path to CA folder', default: Pathname.new('.').expand_path.to_s
9
+ option ['-l', '--loglevel'], 'LOGLEVEL', 'debug < info < warn < error < fatal < unknown', default: 'info'
10
+
11
+ def execute
12
+ LOGGER.level = loglevel.to_sym
13
+ LOGGER.progname = self.class.name + '#' + __callee__.to_s
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,8 @@
1
+ module Cfsslrb
2
+ module CLI
3
+ class CaCommand < AbstractCommand
4
+ subcommand "init", 'Manipulate CA', CaInitCommand
5
+ subcommand "create", 'Manipulate CA', CaCreateCommand
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,38 @@
1
+ module Cfsslrb
2
+ module CLI
3
+ class CaCreateCommand < AbstractCommand
4
+ def execute
5
+ super
6
+ (new? || force?) ? mk : LOGGER.error("CA exists, --force not found!")
7
+ end
8
+
9
+ def mk
10
+ # binding.pry
11
+ chdir(directory)
12
+ pn('ca-config.json').write(cfg['ssl']['config'].to_json)
13
+ pn('ca-csr.json').write(cfg['ssl']['ca'].to_json)
14
+ ca_json = sh('cfssl', 'gencert -initca ca-csr.json').run
15
+ pn('ca.json').write(ca_json)
16
+ # create CA
17
+ sh('cfssljson', '-bare -f ca.json').run
18
+ # rename files
19
+ mv('cert-key.pem', 'ca-key.pem')
20
+ mv('cert.pem', 'ca.pem')
21
+ mv('cert.csr', 'ca.csr')
22
+ end
23
+
24
+ private
25
+ def new?
26
+ %w(cfssl_config.yml
27
+ ca.csr
28
+ ca-config.json
29
+ ca-csr.json
30
+ ca.json
31
+ ca-key.pem
32
+ ca.pem).map do |f|
33
+ Pathname.new(directory + '/' + f).exist?
34
+ end.include?(false)
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,25 @@
1
+ module Cfsslrb
2
+ module CLI
3
+ class CaInitCommand < AbstractCommand
4
+ using Corefines::String::Color
5
+
6
+ def execute
7
+ super
8
+ @cfg = directory + '/cfssl_config.yml'
9
+ (new? || force?) ? mk : LOGGER.error("#{@cfg} exists and no --force flag given!")
10
+ end
11
+
12
+ def new?
13
+ !Pathname.new(@cfg).expand_path.exist?
14
+ end
15
+
16
+ def mk
17
+ LOGGER.debug "Overwriting #{@cfg}" if force?
18
+ FileUtils.mkdir_p directory
19
+ FileUtils.cp(TEMPL8, @cfg)
20
+ LOGGER.debug "Created #{@cfg}"
21
+ puts "Success!\nEdit #{@cfg.color(:white)} before proceeding!"
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,7 @@
1
+ module Cfsslrb
2
+ module CLI
3
+ class CertCommand < AbstractCommand
4
+ subcommand "create", 'Create new cert', CertCreateCommand
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,58 @@
1
+ module Cfsslrb
2
+ module CLI
3
+ class CertCreateCommand < AbstractCommand
4
+ option ['-t', '--type'], 'TYPE', 'One of: [client, server, client-server]', required: true do |t|
5
+ [t].grep(/^client$|^server$|^client-server$/).first ? t : signal_usage_error('TYPE must be one of [client, server, client-server]')
6
+ end
7
+ option '--key-algo', '', 'rsa etc..', default: 'rsa'
8
+ option '--key-size', 'INT', 'Key size etc...', default: 2048
9
+ option '--[no-]json-dump', :flag, 'Dump json files together with certs', default: false
10
+
11
+ parameter 'CN', 'Common Name'
12
+ parameter 'SAN ...', 'Subject Alternative Names(s)', attribute_name: :alt_names
13
+
14
+ def execute
15
+ super
16
+ @cert_csr = cn + '-csr.json'
17
+ @cert_pem = cn + '-pem.json'
18
+ @cert_dir = (pn(directory) + 'clients' + cn).to_s
19
+ (new? || force?) ? mk : LOGGER.error("Cert exist, --force not found!")
20
+ end
21
+
22
+ private
23
+ def mk
24
+ chdir(directory)
25
+ @cert_csr_yaml = cfg['ssl']['node'].dup
26
+ @cert_csr_yaml['CN'] = cn
27
+ @cert_csr_yaml['hosts'] = alt_names
28
+ @cert_csr_yaml['key']['algo'] = key_algo if key_algo
29
+ @cert_csr_yaml['key']['size'] = key_size.to_i if key_size
30
+ @cert_pem = sh('echo', "'#{@cert_csr_yaml.to_json}' | cfssl gencert #{params} -").run
31
+ mk_files
32
+ end
33
+
34
+ def mk_files
35
+ mkdir(@cert_dir)
36
+ cert_bundle = sh('echo', "'#{@cert_pem}' | cfssljson -stdout -bare -f -").run.split("\n\n")
37
+ (pn(@cert_dir) + 'cert.pem').write(cert_bundle[0] + "\n")
38
+ (pn(@cert_dir) + 'cert-key.pem').write(cert_bundle[1] + "\n")
39
+ (pn(@cert_dir) + 'cert.csr').write(cert_bundle[2] + "\n")
40
+
41
+ if json_dump?
42
+ (pn(@cert_dir) + (cn + '-csr.json')).write(@cert_csr_yaml.to_json)
43
+ (pn(@cert_dir) + (cn + '-pem.json')).write(@cert_pem)
44
+ end
45
+ end
46
+
47
+ def params
48
+ (%w(-ca=ca.pem
49
+ -ca-key=ca-key.pem
50
+ -config=ca-config.json) << ('-profile=' + type)).join(' ')
51
+ end
52
+
53
+ def new?
54
+ !(pn(@cert_dir) + 'cert-key.pem').exist?
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,13 @@
1
+ module Cfsslrb
2
+ module CLI
3
+ class MainCommand < Clamp::Command
4
+ option '--version', :flag, 'show version' do
5
+ puts 'Cfsslrb v' + Cfsslrb::VERSION
6
+ exit(0)
7
+ end
8
+
9
+ subcommand "ca", 'Manipulate CA', CaCommand
10
+ subcommand 'cert', 'client cert crud', CertCommand
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,21 @@
1
+ module Cfsslrb
2
+ # docu
3
+ module CLI
4
+ %w(abstract
5
+ ca_init
6
+ ca_create
7
+ ca
8
+ cert_create
9
+ cert
10
+ main).each{ |r| require_relative('cli/' + r + '_command') }
11
+ end # CLI
12
+ end # cfssl
13
+
14
+ # def self.load_commands
15
+ # this_file = Pathname.new(__FILE__).expand_path
16
+ # commands_dir = this_file.dirname + this_file.basename.to_s.split('.rb').first
17
+ # commands_dir.children.each do |req|
18
+ # next unless req.basename.to_s =~ /.rb/
19
+ # require req.to_s
20
+ # end
21
+ # end
@@ -0,0 +1,27 @@
1
+ module Cfsslrb
2
+ module Helpers
3
+ def pn(fname)
4
+ Pathname.new(fname)
5
+ end
6
+
7
+ def chdir(dir)
8
+ FileUtils.cd(dir)
9
+ end
10
+
11
+ def mv(src, dst)
12
+ FileUtils.mv(src, dst)
13
+ end
14
+
15
+ def mkdir(dirname)
16
+ FileUtils.mkdir_p(dirname)
17
+ end
18
+
19
+ def sh(bin, opts)
20
+ Cocaine::CommandLine.new(bin, opts)
21
+ end
22
+
23
+ def cfg
24
+ YAML.load_file(directory + '/cfssl_config.yml')
25
+ end
26
+ end # Helpers
27
+ end
@@ -0,0 +1,3 @@
1
+ module Cfsslrb
2
+ VERSION = "0.10.5"
3
+ end
data/lib/cfsslrb.rb ADDED
@@ -0,0 +1,62 @@
1
+ %w(yaml
2
+ json
3
+ fileutils
4
+ pathname
5
+ logger
6
+ corefines
7
+ cocaine
8
+ active_support/core_ext/kernel
9
+ clamp).each(&method(:require))
10
+
11
+ # Silly deprecation warnings with ::Fixnum, ::Bignum used instead of ::Integer
12
+ module Corefines
13
+ module String
14
+ module Color
15
+ private
16
+ def self.color_code(color, offset)
17
+ return color + offset if color.is_a? ::Integer
18
+ COLOR_CODES[color.to_sym] + offset if color && COLOR_CODES[color.to_sym]
19
+ end
20
+ def self.mode_code(mode)
21
+ return mode if mode.is_a? ::Integer
22
+ MODE_CODES[mode.to_sym] if mode
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ # module Cfsslrb
29
+ module Cfsslrb
30
+ class CustomLogFormater < Logger::Formatter
31
+ using Corefines::String::Color
32
+ def self.call(severity, time, progname, msg)
33
+ # :debug < :info < :warn < :error < :fatal < :unknown
34
+ severity = case severity
35
+ when /debug/i then severity.color(:light_magenta)
36
+ when /info/i then severity.color(:cyan)
37
+ when /warn/i then severity.color(:yellow)
38
+ when /error/i then severity.color(:red)
39
+ when /fatal/i then severity.color(text: :red, mode: :bold)
40
+ else
41
+ severity.color(text: :white, mode: :bold)
42
+ end
43
+ time = time.strftime('[' + "%H:%M:" + "%S".color(:white) + ']')
44
+ progname = progname.split('::')
45
+ progname = progname[0..-2].join('::'.color(:white)) + '::'.color(:white) + progname.last.split('#').first.color(fg: :light_magenta, bg: :black) + '#'.color(:white) + progname.last.split('#').last.color(:yellow)
46
+ # progname = '' if (severity.color(mode: :default) =~ /info/i)
47
+ puts "#{time} #{progname} [#{severity.rjust(20)}]: " + msg
48
+ end
49
+ end
50
+
51
+ LOGGER = Logger.new($stdout,
52
+ formatter: Cfsslrb::CustomLogFormater)
53
+ TEMPL8 = (Pathname.new(__FILE__).dirname.expand_path + 'cfssl_template.yml').to_s
54
+
55
+ def self.logger
56
+ LOGGER
57
+ end
58
+ end
59
+
60
+ %w(cfsslrb/version
61
+ cfsslrb/helpers
62
+ cfsslrb/cli).each { |r| require((Pathname.new(__FILE__).expand_path.dirname + r).to_s) }
metadata ADDED
@@ -0,0 +1,222 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cfsslrb
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.10.5
5
+ platform: ruby
6
+ authors:
7
+ - voobscout
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-04-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubocop
43
+ requirement: !ruby/object:Gem::Requirement
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: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-doc
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry-byebug
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: pry-awesome_print
99
+ requirement: !ruby/object:Gem::Requirement
100
+ 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: corefines
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
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: cocaine
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: clamp
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: activesupport
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ description: cfsslrb - yaml instead of json
168
+ email:
169
+ - voobscout@archlinux.info
170
+ executables:
171
+ - cfsslrb
172
+ - clamp_test.rb
173
+ - console
174
+ - setup
175
+ extensions: []
176
+ extra_rdoc_files: []
177
+ files:
178
+ - ".gitignore"
179
+ - Gemfile
180
+ - README.md
181
+ - Rakefile
182
+ - bin/cfsslrb
183
+ - bin/clamp_test.rb
184
+ - bin/console
185
+ - bin/setup
186
+ - cfsslrb.gemspec
187
+ - lib/cfssl_template.yml
188
+ - lib/cfsslrb.rb
189
+ - lib/cfsslrb/cli.rb
190
+ - lib/cfsslrb/cli/abstract_command.rb
191
+ - lib/cfsslrb/cli/ca_command.rb
192
+ - lib/cfsslrb/cli/ca_create_command.rb
193
+ - lib/cfsslrb/cli/ca_init_command.rb
194
+ - lib/cfsslrb/cli/cert_command.rb
195
+ - lib/cfsslrb/cli/cert_create_command.rb
196
+ - lib/cfsslrb/cli/main_command.rb
197
+ - lib/cfsslrb/helpers.rb
198
+ - lib/cfsslrb/version.rb
199
+ homepage: https://github.com/voobscout/cfsslrb
200
+ licenses: []
201
+ metadata: {}
202
+ post_install_message:
203
+ rdoc_options: []
204
+ require_paths:
205
+ - lib
206
+ required_ruby_version: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - ">="
209
+ - !ruby/object:Gem::Version
210
+ version: '0'
211
+ required_rubygems_version: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ requirements: []
217
+ rubyforge_project:
218
+ rubygems_version: 2.6.10
219
+ signing_key:
220
+ specification_version: 4
221
+ summary: cfsslrb - yaml instead of json
222
+ test_files: []