Class: Certmeister::Base
- Inherits:
-
Object
- Object
- Certmeister::Base
- Defined in:
- lib/certmeister/base.rb
Instance Method Summary collapse
- #fetch(request) ⇒ Object
-
#initialize(config) ⇒ Base
constructor
A new instance of Base.
- #remove(request) ⇒ Object
- #sign(request) ⇒ Object
Constructor Details
#initialize(config) ⇒ Base
Returns a new instance of Base.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/certmeister/base.rb', line 8 def initialize(config) if config.valid? @sign_policy = config.sign_policy @fetch_policy = config.fetch_policy @remove_policy = config.remove_policy @ca_cert = config.ca_cert @ca_key = config.ca_key @store = config.store @openssl_digest = config.openssl_digest else reasons = config.errors.map { |kv| kv.join(' ') } raise RuntimeError.new("invalid config: #{reasons.join('; ')}") end end |
Instance Method Details
#fetch(request) ⇒ Object
41 42 43 44 45 46 47 48 49 |
# File 'lib/certmeister/base.rb', line 41 def fetch(request) subject_to_policy(@fetch_policy, request) do |request| if pem = @store.fetch(request[:cn]) Certmeister::Response.hit(pem) else Certmeister::Response.miss end end end |
#remove(request) ⇒ Object
51 52 53 54 55 56 57 58 59 |
# File 'lib/certmeister/base.rb', line 51 def remove(request) subject_to_policy(@remove_policy, request) do |request| if @store.remove(request[:cn]) Certmeister::Response.hit else Certmeister::Response.miss end end end |
#sign(request) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/certmeister/base.rb', line 23 def sign(request) subject_to_policy(@sign_policy, request) do |request| begin csr = OpenSSL::X509::Request.new(request[:csr]) rescue OpenSSL::OpenSSLError => e Certmeister::Response.error("invalid CSR (#{e.})") else if get_cn(csr) == request[:cn] pem = create_signed_certificate(csr).to_pem @store.store(request[:cn], pem) Certmeister::Response.hit(pem) else Certmeister::Response.error("CSR subject (#{get_cn(csr)}) disagrees with request CN (#{request[:cn]})") end end end end |