Sha256: 0374f885fa0abc8bf5133a5d3e048d91decdd71b566c545bec5f6d71304e8192

Contents?: true

Size: 1.5 KB

Versions: 1

Compression:

Stored size: 1.5 KB

Contents

require "r509"

module R509::Validity::Redis
  class Writer < R509::Validity::Writer
    def initialize(redis)
      raise ArgumentError.new("Redis must be provided") if redis.nil?
      @redis = redis
    end

    def issue(issuer, serial)
      raise ArgumentError.new("Serial and issuer must be provided") if serial.to_s.empty? or issuer.to_s.empty?
      cert = @redis.hgetall("cert:#{issuer}:#{serial}")
      if cert.nil? or not cert.has_key?("status")
        @redis.hmset("cert:#{issuer}:#{serial}", "status", 0)
      else
        raise R509::R509Error.new("Serial #{serial} for issuer #{issuer} is already present")
      end
    end

    def revoke(issuer, serial, revocation_time=Time.now.to_i, reason=0)
      raise ArgumentError.new("Serial and issuer must be provided") if serial.to_s.empty? or issuer.to_s.empty?
      @redis.hmset("cert:#{issuer}:#{serial}",
        "status", 1,
        "revocation_time", revocation_time || Time.now.to_i,
        "revocation_reason", reason || 0
      )
    end

    def unrevoke(issuer, serial)
      raise ArgumentError.new("Serial and issuer must be provided") if serial.to_s.empty? or issuer.to_s.empty?
      cert = @redis.hgetall("cert:#{issuer}:#{serial}")
      if cert.nil? or not cert.has_key?("status")
        raise R509::R509Error.new("Serial #{serial} for issuer #{issuer} is not present")
      else
        @redis.hmset("cert:#{issuer}:#{serial}", "status", 0)
      end
    end

    def is_available?
      (@redis.ping == "PONG")? true : false
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
r509-validity-redis-0.4.2 lib/r509/validity/redis/writer.rb