Class: Rex::Proto::CryptoAsn1::Cms::Certificate

Inherits:
Object
  • Object
show all
Defined in:
lib/rex/proto/crypto_asn1/cms.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Certificate

Returns a new instance of Certificate.



16
17
18
# File 'lib/rex/proto/crypto_asn1/cms.rb', line 16

def initialize(options = {})
  self.options = options
end

Instance Attribute Details

#optionsObject

Rather than specifying the entire structure of a certificate, we pass this off to OpenSSL, effectively providing an interface between RASN and OpenSSL.



14
15
16
# File 'lib/rex/proto/crypto_asn1/cms.rb', line 14

def options
  @options
end

Instance Method Details

#can_build?Boolean

RASN1 Glue method - Say if DER can be built (not default value, not optional without value, has a value)

Returns:

  • (Boolean)

Since:

  • 0.12



27
28
29
# File 'lib/rex/proto/crypto_asn1/cms.rb', line 27

def can_build?
  !to_der.empty?
end

#parse!(str, ber: false) ⇒ Object



41
42
43
44
# File 'lib/rex/proto/crypto_asn1/cms.rb', line 41

def parse!(str, ber: false)
  options[:openssl_certificate] = OpenSSL::X509::Certificate.new(str)
  to_der.length
end

#primitive?Boolean

RASN1 Glue method

Returns:

  • (Boolean)


32
33
34
# File 'lib/rex/proto/crypto_asn1/cms.rb', line 32

def primitive?
  false
end

#to_derObject



20
21
22
# File 'lib/rex/proto/crypto_asn1/cms.rb', line 20

def to_der
  options[:openssl_certificate]&.to_der || ''
end

#valueObject

RASN1 Glue method



37
38
39
# File 'lib/rex/proto/crypto_asn1/cms.rb', line 37

def value
  options[:openssl_certificate]
end