Class: R509::CRL::SignedList

Inherits:
Object
  • Object
show all
Defined in:
lib/r509/crl/signed_list.rb

Overview

Parses CRLs

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(crl) ⇒ SignedList

Returns a new instance of SignedList

Parameters:

  • crl (String, OpenSSL::X509::CRL)


16
17
18
19
# File 'lib/r509/crl/signed_list.rb', line 16

def initialize(crl)
  @crl = OpenSSL::X509::CRL.new(crl)
  @issuer = R509::Subject.new(@crl.issuer)
end

Instance Attribute Details

#crlObject (readonly)

Returns the value of attribute crl



13
14
15
# File 'lib/r509/crl/signed_list.rb', line 13

def crl
  @crl
end

#issuerObject (readonly)

Returns the value of attribute issuer



13
14
15
# File 'lib/r509/crl/signed_list.rb', line 13

def issuer
  @issuer
end

Class Method Details

.load_from_file(filename) ⇒ R509::CRL::SignedList

Helper method to quickly load a CRL from the filesystem

Parameters:

  • filename (String)

    Path to file you want to load

Returns:



25
26
27
# File 'lib/r509/crl/signed_list.rb', line 25

def self.load_from_file(filename)
  R509::CRL::SignedList.new(IOHelpers.read_data(filename))
end

Instance Method Details

#last_updateTime

Returns the signing time of the CRL

Returns:

  • (Time)

    when the CRL was signed



53
54
55
# File 'lib/r509/crl/signed_list.rb', line 53

def last_update
  @crl.last_update
end

#next_updateTime

Returns the next update time for the CRL

Returns:

  • (Time)

    when it will be updated next



60
61
62
# File 'lib/r509/crl/signed_list.rb', line 60

def next_update
  @crl.next_update
end

#revokedHash

Returns hash of serial => { :time, :reason } hashes

Returns:

  • (Hash)

    hash of serial => { :time, :reason } hashes



99
100
101
102
103
104
105
106
107
# File 'lib/r509/crl/signed_list.rb', line 99

def revoked
  revoked_list = {}
  @crl.revoked.each do |revoked|
    reason = get_reason(revoked)
    revoked_list[revoked.serial.to_i] = { :time => revoked.time, :reason => reason }
  end

  revoked_list
end

#revoked?(serial) ⇒ Boolean

Parameters:

  • serial (Integer)

    number

Returns:

  • (Boolean)


74
75
76
77
78
79
80
# File 'lib/r509/crl/signed_list.rb', line 74

def revoked?(serial)
  if @crl.revoked.find { |revoked| revoked.serial == serial.to_i }
    true
  else
    false
  end
end

#revoked_cert(serial) ⇒ Hash

Returns hash with :time and :reason

Parameters:

  • serial (Integer)

    number

Returns:

  • (Hash)

    hash with :time and :reason



111
112
113
114
115
116
117
118
119
# File 'lib/r509/crl/signed_list.rb', line 111

def revoked_cert(serial)
  revoked = @crl.revoked.find { |r| r.serial == serial }
  if revoked
    reason = get_reason(revoked)
    { :time => revoked.time, :reason => reason }
  else
    nil
  end
end

#signature_algorithmString

Returns:

  • (String)


30
31
32
# File 'lib/r509/crl/signed_list.rb', line 30

def signature_algorithm
  @crl.signature_algorithm
end

#to_derString

Returns the CRL in DER format

Returns:

  • (String)

    the CRL in DER format



94
95
96
# File 'lib/r509/crl/signed_list.rb', line 94

def to_der
  @crl.to_der
end

#to_pemString Also known as: to_s

Returns the CRL in PEM format

Returns:

  • (String)

    the CRL in PEM format



85
86
87
# File 'lib/r509/crl/signed_list.rb', line 85

def to_pem
  @crl.to_pem
end

#verify(public_key) ⇒ Boolean

Pass a public key to verify that the CRL is signed by a specific certificate (call cert.public_key on that object)

Parameters:

  • public_key (OpenSSL::PKey::PKey)

Returns:

  • (Boolean)


68
69
70
# File 'lib/r509/crl/signed_list.rb', line 68

def verify(public_key)
  @crl.verify(public_key)
end

#write_der(filename_or_io) ⇒ Object

Writes the CRL into the PEM format

Parameters:

  • filename_or_io (String, #write)

    Either a string of the path for the file that you'd like to write, or an IO-like object.



46
47
48
# File 'lib/r509/crl/signed_list.rb', line 46

def write_der(filename_or_io)
  write_data(filename_or_io, @crl.to_der)
end

#write_pem(filename_or_io) ⇒ Object

Writes the CRL into the PEM format

Parameters:

  • filename_or_io (String, #write)

    Either a string of the path for the file that you'd like to write, or an IO-like object.



38
39
40
# File 'lib/r509/crl/signed_list.rb', line 38

def write_pem(filename_or_io)
  write_data(filename_or_io, @crl.to_pem)
end