Sha256: eb846d8604d70e50f1990a142011ebc0591b1af84aaba374117c1e9900f1c758

Contents?: true

Size: 1.69 KB

Versions: 3

Compression:

Stored size: 1.69 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

3 entries across 3 versions & 1 rubygems

Version Path
r509-validity-redis-0.4.1 lib/r509/validity/redis/writer.rb
r509-validity-redis-0.4 lib/r509/validity/redis/writer.rb
r509-validity-redis-0.3 lib/r509/validity/redis/writer.rb