simple_ca 0.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 19dc15dcd4112eac0a41c569d0993eac972f5c6b
4
+ data.tar.gz: f40feea3092c39879fce3a53b348178eb1ffbcdd
5
+ SHA512:
6
+ metadata.gz: 5dcb2e61c13ced6063e4850fffb74c554af341f2f9bc007c653be68dcbd1878601d5c33661473d6b045ac620e32d278c79d7f3a47b60434d240e6bd62108b715
7
+ data.tar.gz: 9dc2ec22c117dfb087e8742fabdfe9321fe90fdad39b28d3ec5ef4e1dc88d087f6b17e0338453715dd32ad2109d5118a3f32016b543ad306b1d19a07774887b8
@@ -0,0 +1,2 @@
1
+ coverage
2
+ *.gem
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --require spec_helper
@@ -0,0 +1,21 @@
1
+ Style/StringLiterals:
2
+ EnforcedStyle: double_quotes
3
+ Style/TrailingComma:
4
+ EnforcedStyleForMultiline: comma
5
+ Documentation:
6
+ Enabled: false
7
+ Metrics/LineLength:
8
+ Max: 120
9
+ Style/SpaceInsideBlockBraces:
10
+ SpaceBeforeBlockParameters: false
11
+ Style/MethodDefParentheses:
12
+ EnforcedStyle: require_no_parentheses
13
+ Style/PredicateName:
14
+ NamePrefixBlacklist:
15
+ - is_
16
+ Style/AndOr:
17
+ EnforcedStyle: conditionals
18
+ Style/SpaceInsideHashLiteralBraces:
19
+ EnforcedStyle: no_space
20
+ Style/BlockDelimiters:
21
+ EnforcedStyle: semantic
@@ -0,0 +1 @@
1
+ 2.0.0-p647
@@ -0,0 +1,20 @@
1
+ language: ruby
2
+ branches:
3
+ only:
4
+ - master
5
+ - /^v[0-9]+\.[0-9]+\.[0-9]+/
6
+ rvm:
7
+ - ruby-head
8
+ - jruby-1.7.19
9
+ - 2.0.0
10
+ script:
11
+ - bundle exec rake
12
+ deploy:
13
+ provider: rubygems
14
+ api_key:
15
+ secure: clYHhpfYieW4ZMPlDwhdsxZAaca6Ltg8fSDtmQcNly40+fOhAhBnR+VFX6VODX3jx0Jv0MlIZRqWn4V9LVERaEMvKwSL2qNnk2sdMe9Kbh+lXD4auCjgHhFKXN6dzUfXmJYKzjuUaMtK4m7aBLKnm2JLm3omUa4c0Yrnj3qS/to=
16
+ on:
17
+ tags: true
18
+ all_branches: true
19
+ repo: tpbowden/simple_ca
20
+ rvm: 2.0.0
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
@@ -0,0 +1,59 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ simple_ca (0.0.1)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ ast (2.1.0)
10
+ astrolabe (1.3.1)
11
+ parser (~> 2.2)
12
+ diff-lcs (1.2.5)
13
+ docile (1.1.5)
14
+ json (1.8.3)
15
+ parser (2.2.3.0)
16
+ ast (>= 1.1, < 3.0)
17
+ powerpack (0.1.1)
18
+ rainbow (2.0.0)
19
+ rake (10.4.2)
20
+ rspec (3.4.0)
21
+ rspec-core (~> 3.4.0)
22
+ rspec-expectations (~> 3.4.0)
23
+ rspec-mocks (~> 3.4.0)
24
+ rspec-core (3.4.1)
25
+ rspec-support (~> 3.4.0)
26
+ rspec-expectations (3.4.0)
27
+ diff-lcs (>= 1.2.0, < 2.0)
28
+ rspec-support (~> 3.4.0)
29
+ rspec-mocks (3.4.0)
30
+ diff-lcs (>= 1.2.0, < 2.0)
31
+ rspec-support (~> 3.4.0)
32
+ rspec-support (3.4.1)
33
+ rubocop (0.35.1)
34
+ astrolabe (~> 1.3)
35
+ parser (>= 2.2.3.0, < 3.0)
36
+ powerpack (~> 0.1)
37
+ rainbow (>= 1.99.1, < 3.0)
38
+ ruby-progressbar (~> 1.7)
39
+ tins (<= 1.6.0)
40
+ ruby-progressbar (1.7.5)
41
+ simplecov (0.11.1)
42
+ docile (~> 1.1.0)
43
+ json (~> 1.8)
44
+ simplecov-html (~> 0.10.0)
45
+ simplecov-html (0.10.0)
46
+ tins (1.6.0)
47
+
48
+ PLATFORMS
49
+ ruby
50
+
51
+ DEPENDENCIES
52
+ rake (>= 10.4)
53
+ rspec (>= 3.4)
54
+ rubocop (>= 0.35)
55
+ simple_ca!
56
+ simplecov (>= 0.11)
57
+
58
+ BUNDLED WITH
59
+ 1.11.1
@@ -0,0 +1,26 @@
1
+ # SimpleCA
2
+ Generate and sign SSL Certificate with your very own CA
3
+
4
+ Installation
5
+ ------------
6
+
7
+ gem install simple_ca
8
+
9
+ or if you're using Bundler
10
+
11
+ gem "simple_ca"
12
+
13
+ Usage
14
+ =====
15
+
16
+ First of all you need a root certificate (OpenSSL::X509::Certificate) and a private key (OpenSSL::PKey::RSA)
17
+
18
+ require "simple_ca"
19
+
20
+ ca = SimpleCA::CA.new(root_certificate, private_key)
21
+
22
+ To sign a CSR (OpenSSL::X509::Request):
23
+
24
+ ca.sign_csr(csr) # => OpenSSL::X509::Certificate
25
+
26
+
@@ -0,0 +1 @@
1
+ Dir[File.expand_path("../tasks/**/*.rake", __FILE__)].each {|f| load f }
@@ -0,0 +1 @@
1
+ require "simple_ca/ca"
@@ -0,0 +1,14 @@
1
+ require "simple_ca/sign_csr"
2
+
3
+ module SimpleCA
4
+ class CA
5
+ def initialize root, key
6
+ @root = root
7
+ @key = key
8
+ end
9
+
10
+ def sign_csr csr
11
+ SimpleCA::SignCSR.new(@root, @key).call csr
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,27 @@
1
+ module SimpleCA
2
+ class SignCSR
3
+ THREE_YEARS = 365.25 * 24 * 60 * 60
4
+
5
+ def initialize root, key
6
+ @root = root
7
+ @key = key
8
+ end
9
+
10
+ def call csr
11
+ sign_cert(OpenSSL::X509::Certificate.new, csr)
12
+ end
13
+
14
+ private
15
+
16
+ def sign_cert crt, request
17
+ crt.serial = 0
18
+ crt.version = 2
19
+ crt.not_before = Time.now
20
+ crt.not_after = Time.now + THREE_YEARS
21
+ crt.subject = request.subject
22
+ crt.public_key = request.public_key
23
+ crt.issuer = @root.subject
24
+ crt.sign @key, OpenSSL::Digest::SHA256.new
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,3 @@
1
+ module SimpleCA
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,21 @@
1
+ $LOAD_PATH.unshift File.expand_path("../lib", __FILE__)
2
+ require "simple_ca/version"
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "simple_ca"
6
+ s.version = SimpleCA::VERSION
7
+ s.date = "2015-12-12"
8
+ s.summary = "Simplified certiticate signing"
9
+ s.description = "Sign and generate SSL certificates with ease"
10
+ s.authors = ["Tom Bowden"]
11
+ s.files = `git ls-files`.split($RS)
12
+ s.email = "tom.b1992@gmail.com"
13
+ s.homepage = "http://github.com/tpbowden/simple_ca"
14
+ s.license = "MIT"
15
+ s.required_ruby_version = ">= 2.0.0"
16
+
17
+ s.add_development_dependency "rake", ">= 10.4"
18
+ s.add_development_dependency "rubocop", ">= 0.35"
19
+ s.add_development_dependency "rspec", ">= 3.4"
20
+ s.add_development_dependency "simplecov", ">= 0.11"
21
+ end
@@ -0,0 +1,23 @@
1
+ require "spec_helper"
2
+ require "simple_ca/ca"
3
+
4
+ describe SimpleCA::CA do
5
+ describe "#sign_csr" do
6
+ let(:cert) { double :certificate }
7
+ let(:root) { double :root }
8
+ let(:key) { double :key }
9
+ let(:signer) { double :signer }
10
+ let(:csr) { double :csr }
11
+
12
+ subject { described_class.new(root, key) }
13
+
14
+ before do
15
+ allow(SimpleCA::SignCSR).to receive(:new).with(root, key) { signer }
16
+ allow(signer).to receive(:call).with(csr) { cert }
17
+ end
18
+
19
+ it "generates a certificate from the CSR" do
20
+ expect(subject.sign_csr csr).to eq cert
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,22 @@
1
+ require "spec_helper"
2
+ require "simple_ca/sign_csr"
3
+
4
+ describe SimpleCA::SignCSR do
5
+ describe "#call" do
6
+ let(:key) { OpenSSL::PKey::RSA.new(File.read "spec/support/fixtures/root.key") }
7
+ let(:root) { OpenSSL::X509::Certificate.new(File.read "spec/support/fixtures/root.crt") }
8
+ subject { described_class.new(root, key) }
9
+
10
+ context "when the CSR is valid" do
11
+ let(:csr) { OpenSSL::X509::Request.new(File.read "spec/support/fixtures/test.csr") }
12
+
13
+ it "returns a certificate signed by the key" do
14
+ expect(subject.call csr).to be_a_certificate_signed_by(key)
15
+ end
16
+
17
+ it "sets the issuer to the root certificate" do
18
+ expect(subject.call(csr).issuer).to eq root.subject
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,4 @@
1
+ require "simplecov"
2
+ SimpleCov.start
3
+
4
+ Dir[File.expand_path("../support/**/*.rb", __FILE__)].each {|f| load f }
@@ -0,0 +1,6 @@
1
+ RSpec::Matchers.define :be_a_certificate_signed_by do |key|
2
+ match do |actual|
3
+ return false unless actual.instance_of? OpenSSL::X509::Certificate
4
+ actual.verify(key)
5
+ end
6
+ end
@@ -0,0 +1,23 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIID4DCCAsigAwIBAgIJALq0rtPQ6ut+MA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNV
3
+ BAYTAkFCMRIwEAYDVQQIEwlTb21ld2hlcmUxDTALBgNVBAcTBENJcnQxITAfBgNV
4
+ BAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDAeFw0xNTEyMDYxOTI1MDVaFw0x
5
+ NjEyMDUxOTI1MDVaMFMxCzAJBgNVBAYTAkFCMRIwEAYDVQQIEwlTb21ld2hlcmUx
6
+ DTALBgNVBAcTBENJcnQxITAfBgNVBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0
7
+ ZDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALvJ46a/qKq+nlyCmjYU
8
+ E0R0ZNOMQfRGDSMbbXY0U1MiNo2oEIcCdVHUnt5rJNiTysFvE63DKr+b8OTmZo7N
9
+ RbzGG39P/CbTdRyf3DwG8vTwvTwKUQ/5OLWQ+ELOXwFqb3zYdy/FkSyyYMb11irh
10
+ 24vs1Qml/pEurOKW9/5IZY0UjMeCclyMF3ZJqTqoEYWBzP1v12cGHNUuub8kVgmG
11
+ gpgITtwdO9Wgulgw1p37lUJWYB1LfkPH9M3AsAZBFCl4FhDJHdpE0pyj4o4PXFXo
12
+ dSSA1xW2YQ5/4HqwdTPM+vRH9vMrmIt1ty8F+QlTcEbxlyv8e/f6M+vANC99D/g2
13
+ JhUCAwEAAaOBtjCBszAdBgNVHQ4EFgQUs6LYjWb7gyd17sI/lICZpmgRoiEwgYMG
14
+ A1UdIwR8MHqAFLOi2I1m+4Mnde7CP5SAmaZoEaIhoVekVTBTMQswCQYDVQQGEwJB
15
+ QjESMBAGA1UECBMJU29tZXdoZXJlMQ0wCwYDVQQHEwRDSXJ0MSEwHwYDVQQKExhJ
16
+ bnRlcm5ldCBXaWRnaXRzIFB0eSBMdGSCCQC6tK7T0OrrfjAMBgNVHRMEBTADAQH/
17
+ MA0GCSqGSIb3DQEBBQUAA4IBAQA2BhzhzqvwEld6WQQ51fnduuuAglcUx5xpuyiW
18
+ g7kXmOqYX/65bTKYNYDHZ/3IuzfvBhoSbWsWS9hfI5xqwytRdazJRldGwwr5gc25
19
+ lYvwklVh757oFdBlak7k77gstYqHjMCfwV/vH/UoVDN+sXL9dR2+4/o082eHdek4
20
+ VIbjwPsm6OT/vArjjyP6/Of8PgO4OHxNHHnwxf9dmcU8ASrQWYYi4LdrItWB8uHi
21
+ JuC9Kt18TSmTjmFMzkK/bC10jtfhl931oBR2qv93Qm5jEZG1mFLOCUZPUqQgxAUB
22
+ oYdVZli9THIhGqYjsZ2gU8peNc/HnYd2RRY+UfbJIaG/F7l7
23
+ -----END CERTIFICATE-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEpAIBAAKCAQEAu8njpr+oqr6eXIKaNhQTRHRk04xB9EYNIxttdjRTUyI2jagQ
3
+ hwJ1UdSe3msk2JPKwW8TrcMqv5vw5OZmjs1FvMYbf0/8JtN1HJ/cPAby9PC9PApR
4
+ D/k4tZD4Qs5fAWpvfNh3L8WRLLJgxvXWKuHbi+zVCaX+kS6s4pb3/khljRSMx4Jy
5
+ XIwXdkmpOqgRhYHM/W/XZwYc1S65vyRWCYaCmAhO3B071aC6WDDWnfuVQlZgHUt+
6
+ Q8f0zcCwBkEUKXgWEMkd2kTSnKPijg9cVeh1JIDXFbZhDn/gerB1M8z69Ef28yuY
7
+ i3W3LwX5CVNwRvGXK/x79/oz68A0L30P+DYmFQIDAQABAoIBAH0+N/uVZeuCuGGg
8
+ pTMeDn+gVUKWD8LYGZjpiQbF/TC758Bwb51rsU1DTjWvJeLgJuD9sRU5zj/+xBoV
9
+ 5B6nnzQ4uEwfz18htsDBiYPraoycJsltZAUQRZcqubjspIZwMy0DvfH5hUpXKZ5o
10
+ hU8SVXesG6WUtQSlKZ7x6zIHnNsKzVGXofGAbrSm3UqoayVWx3RGFrtjJN7/4+c8
11
+ K9Yv0Eu9xMLRIb+Jt+YcSynk3boRmzHQkzlpF6jyygAdUDYKg+XyWJmdDd47eo/f
12
+ ce6Bp1VtQyibtXgBFqhDPK98esXh4+JuNSVoHChc1XlAftNcIbjLwVBEdpZbBf9c
13
+ COSooyECgYEA7GtVjyVe5mZJ/QqxUEmx3wipeEM3ZYVJWYhbMlUt+DWzAwA6Ahl0
14
+ wmYSNa8IxTN6WA8DH39tE3OJqWv42wV3oqBcylhkalMEWjsqcZzaG1bmFCbXpUHF
15
+ Kg7hNmt89ftngIQ28QH5h24FwfoxVbpiJfMc2zwnEz2ZjWKbdAhAolkCgYEAy1d3
16
+ d2aOictXMV7fpoKL8ZHOsDzhtWJjP1ahG2Wzg2NAmdQiOB7XK2ZZWra1zy4NLmGI
17
+ xcpPQ/6OssLu4r/AIXCJ8oFbe1glc78TyPtA3J3ufQ+R62+K4xD8qPtRyuSSpiRZ
18
+ h9X4FhkMRQKBga8yyQ2MEQu54RxAaID/tlMVkh0CgYEApGEQsSG7tRiD8yN/G6LR
19
+ wJBmPI8HsleVI2JSflGJT94OZFTBAHqwmwWbPaZAw9RCCX4OntTbgz2/BoRjF+3a
20
+ O8GiIrKIxwCHszEWFr6HS6EFAhfrsiRjsRV9c3gS/3jYgxvqk3HbDFXsPO33ZXLd
21
+ ESPS+X/+bztSS2K3UVr3jakCgYEAgaijP9qAVzL2xT9mwukJTR8ZOV2I2r0C5fda
22
+ QXsHDWdzYONYcoqPz1ey8FoC8jm+I+4DZYOMKaIe4bPU2XdFjs0Q2TZM3Ain0Pdt
23
+ KUG06Tg3Qz1zYTm9yO4i/alLTWGUdSZGhIwWZhjQrwxbAhNyAauGvbPJcdYu57Qh
24
+ 2eN+pK0CgYB+G2nNGlns8/1dMyOzZSPBikfNq6Ay7lPwn/Pz+8KBh8S0BTUCEVPm
25
+ qU1twbuYbEvHCFyAffi4Q1euzuse0wwSK8b8/GUzPgg/AWx/QZsQFprYB0cusLRv
26
+ S9ZfkPDJkk0cNwP3hx0FKb9+ONCXX5j65ckD9u3pW9tUuxeF+hlR4A==
27
+ -----END RSA PRIVATE KEY-----
File without changes
@@ -0,0 +1,17 @@
1
+ -----BEGIN CERTIFICATE REQUEST-----
2
+ MIICvDCCAaQCAQAwdzELMAkGA1UEBhMCVVMxDTALBgNVBAgMBFV0YWgxDzANBgNV
3
+ BAcMBkxpbmRvbjEWMBQGA1UECgwNRGlnaUNlcnQgSW5jLjERMA8GA1UECwwIRGln
4
+ aUNlcnQxHTAbBgNVBAMMFGV4YW1wbGUuZGlnaWNlcnQuY29tMIIBIjANBgkqhkiG
5
+ 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8+To7d+2kPWeBv/orU3LVbJwDrSQbeKamCmo
6
+ wp5bqDxIwV20zqRb7APUOKYoVEFFOEQs6T6gImnIolhbiH6m4zgZ/CPvWBOkZc+c
7
+ 1Po2EmvBz+AD5sBdT5kzGQA6NbWyZGldxRthNLOs1efOhdnWFuhI162qmcflgpiI
8
+ WDuwq4C9f+YkeJhNn9dF5+owm8cOQmDrV8NNdiTqin8q3qYAHHJRW28glJUCZkTZ
9
+ wIaSR6crBQ8TbYNE0dc+Caa3DOIkz1EOsHWzTx+n0zKfqcbgXi4DJx+C1bjptYPR
10
+ BPZL8DAeWuA8ebudVT44yEp82G96/Ggcf7F33xMxe0yc+Xa6owIDAQABoAAwDQYJ
11
+ KoZIhvcNAQEFBQADggEBAB0kcrFccSmFDmxox0Ne01UIqSsDqHgL+XmHTXJwre6D
12
+ hJSZwbvEtOK0G3+dr4Fs11WuUNt5qcLsx5a8uk4G6AKHMzuhLsJ7XZjgmQXGECpY
13
+ Q4mC3yT3ZoCGpIXbw+iP3lmEEXgaQL0Tx5LFl/okKbKYwIqNiyKWOMj7ZR/wxWg/
14
+ ZDGRs55xuoeLDJ/ZRFf9bI+IaCUd1YrfYcHIl3G87Av+r49YVwqRDT0VDV7uLgqn
15
+ 29XI1PpVUNCPQGn9p/eX6Qo7vpDaPybRtA2R7XLKjQaF9oXWeCUqy1hvJac9QFO2
16
+ 97Ob1alpHPoZ7mWiEuJwjBPii6a9M9G30nUo39lBi1w=
17
+ -----END CERTIFICATE REQUEST-----
@@ -0,0 +1,4 @@
1
+ task default: [
2
+ :rubocop,
3
+ :rspec,
4
+ ]
@@ -0,0 +1,3 @@
1
+ require "rspec/core/rake_task"
2
+
3
+ RSpec::Core::RakeTask.new("rspec")
@@ -0,0 +1,3 @@
1
+ require "rubocop/rake_task"
2
+
3
+ RuboCop::RakeTask.new("rubocop")
metadata ADDED
@@ -0,0 +1,124 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: simple_ca
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Tom Bowden
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-12-12 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '10.4'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '10.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rubocop
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0.35'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0.35'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '3.4'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '3.4'
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0.11'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0.11'
69
+ description: Sign and generate SSL certificates with ease
70
+ email: tom.b1992@gmail.com
71
+ executables: []
72
+ extensions: []
73
+ extra_rdoc_files: []
74
+ files:
75
+ - .gitignore
76
+ - .rspec
77
+ - .rubocop.yml
78
+ - .ruby-version
79
+ - .travis.yml
80
+ - Gemfile
81
+ - Gemfile.lock
82
+ - README.md
83
+ - Rakefile
84
+ - lib/simple_ca.rb
85
+ - lib/simple_ca/ca.rb
86
+ - lib/simple_ca/sign_csr.rb
87
+ - lib/simple_ca/version.rb
88
+ - simple_ca.gemspec
89
+ - spec/simple_ca/ca_spec.rb
90
+ - spec/simple_ca/sign_csr_spec.rb
91
+ - spec/spec_helper.rb
92
+ - spec/support/certificate_matchers.rb
93
+ - spec/support/fixtures/root.crt
94
+ - spec/support/fixtures/root.key
95
+ - spec/support/fixtures/test.crt
96
+ - spec/support/fixtures/test.csr
97
+ - tasks/default.rake
98
+ - tasks/rspec.rake
99
+ - tasks/rubocop.rake
100
+ homepage: http://github.com/tpbowden/simple_ca
101
+ licenses:
102
+ - MIT
103
+ metadata: {}
104
+ post_install_message:
105
+ rdoc_options: []
106
+ require_paths:
107
+ - lib
108
+ required_ruby_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - '>='
111
+ - !ruby/object:Gem::Version
112
+ version: 2.0.0
113
+ required_rubygems_version: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ requirements: []
119
+ rubyforge_project:
120
+ rubygems_version: 2.5.1
121
+ signing_key:
122
+ specification_version: 4
123
+ summary: Simplified certiticate signing
124
+ test_files: []