Class: EzCrypto::Certificate

Inherits:
Verifier show all
Defined in:
lib/ezsig.rb

Overview

Certificate provides functionality to make it easy to extract information from a Certificate.

This also provides all the same functionality as a Verifier.

Instance Method Summary collapse

Methods inherited from Verifier

decode, #digest, #dsa?, from_file, load_all_from_file, #public_key, #rsa?, #verify

Constructor Details

#initialize(cert) ⇒ Certificate

Intialize with a OpenSSL cert object.



237
238
239
240
# File 'lib/ezsig.rb', line 237

def initialize(cert)
  super(cert.public_key)
  @cert=cert
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method) ⇒ Object

Any methods defined in Name can be used here. This means you can do cert.email rather than cert.subject.email.



323
324
325
# File 'lib/ezsig.rb', line 323

def method_missing(method)
  subject.send method
end

Instance Method Details

#certObject

Returns the OpenSSL Certificate object



282
283
284
# File 'lib/ezsig.rb', line 282

def cert
  @cert
end

#cert?Boolean

Returns true

Returns:

  • (Boolean)


245
246
247
# File 'lib/ezsig.rb', line 245

def cert?
  true
end

#cert_digestObject

Returns the SHA1 hex digest of a the DER encoded certificate. This is useful as a unique identifier.



252
253
254
# File 'lib/ezsig.rb', line 252

def cert_digest
  Digest::SHA1.hexdigest(@cert.to_der)
end

#extensionsObject

Returns the hash of extensions available in the certificate. These are not always present.



312
313
314
315
316
317
318
# File 'lib/ezsig.rb', line 312

def extensions
  unless @extensions
    @extensions={}
    cert.extensions.each {|e| @extensions[e.oid]=e.value} if cert.extensions
  end
  @extensions
end

#issuerObject

Returns a Name object containt the issuer of the certificate.



267
268
269
270
# File 'lib/ezsig.rb', line 267

def issuer
  @issuer=EzCrypto::Name.new(@cert.issuer) unless @issuer
  @issuer
end

#not_afterObject

Returns the certificates valid not after date.



296
297
298
# File 'lib/ezsig.rb', line 296

def not_after
  @cert.not_after
end

#not_beforeObject

Returns the certificates valid not before date.



289
290
291
# File 'lib/ezsig.rb', line 289

def not_before
  @cert.not_before
end

#serialObject

Returns the issuers serial number for this certificate



275
276
277
# File 'lib/ezsig.rb', line 275

def serial
  @cert.serial
end

#subjectObject

Returns a Name object containt the subject of the certificate. The subject in X509 speak is the details of the certificate owner.



259
260
261
262
# File 'lib/ezsig.rb', line 259

def subject
  @subject=EzCrypto::Name.new(@cert.subject) unless @subject
  @subject
end

#valid?(time = Time.now.utc) ⇒ Boolean

Is this certificate valid at this point in time. Note this only checks if it is valid with respect to time.

It is important to realize that it does not check with any CRL or OCSP services to see if the certificate was 
revoked.

Returns:

  • (Boolean)


305
306
307
# File 'lib/ezsig.rb', line 305

def valid?(time=Time.now.utc)
  time.to_i>self.not_before.to_i && time.to_i<self.not_after.to_i
end