Class: R509::CRL::SignedList

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

Overview

Parses CRLs

Instance Attribute Summary (collapse)

Class Method Summary (collapse)

Instance Method Summary (collapse)

Methods included from IOHelpers

#read_data, read_data, #write_data, write_data

Constructor Details

- (SignedList) initialize(crl)

A new instance of SignedList

Parameters:

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


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

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

Instance Attribute Details

- (Object) crl (readonly)

Returns the value of attribute crl



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

def crl
  @crl
end

- (Object) issuer (readonly)

Returns the value of attribute issuer



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

def issuer
  @issuer
end

Class Method Details

+ (R509::CRL::SignedList) load_from_file(filename)

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.rb', line 25

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

Instance Method Details

- (Time) last_update

Returns the signing time of the CRL

Returns:

  • (Time)

    when the CRL was signed



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

def last_update
  @crl.last_update
end

- (Time) next_update

Returns the next update time for the CRL

Returns:

  • (Time)

    when it will be updated next



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

def next_update
  @crl.next_update
end

- (Hash) revoked

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.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

- (Boolean) revoked?(serial)

Parameters:

  • serial (Integer)

    number

Returns:

  • (Boolean)


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

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

- (Hash) revoked_cert(serial)

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.rb', line 111

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

- (String) signature_algorithm

Returns:

  • (String)


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

def signature_algorithm
  @crl.signature_algorithm
end

- (String) to_der

Returns the CRL in DER format

Returns:

  • (String)

    the CRL in DER format



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

def to_der
  @crl.to_der
end

- (String) to_pem 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.rb', line 85

def to_pem
  @crl.to_pem
end

- (Boolean) verify(public_key)

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.rb', line 68

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

- (Object) write_der(filename_or_io)

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.rb', line 46

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

- (Object) write_pem(filename_or_io)

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.rb', line 38

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