metasploit-framework/lib/rex/proto/kerberos/model/element.rb

67 lines
1.8 KiB
Ruby

# -*- coding: binary -*-
module Rex
module Proto
module Kerberos
module Model
# This class provides a representation of a principal, an asset (e.g., a
# workstation user or a network server) on a network.
class Element
include Rex::Proto::Kerberos::Crypto
include Rex::Proto::Kerberos::Model
def self.attr_accessor(*vars)
@attributes ||= []
@attributes.concat vars
super(*vars)
end
# Retrieves the element class fields
#
# @return [Array]
def self.attributes
@attributes
end
def self.decode(input)
elem = self.new
elem.decode(input)
end
def initialize(options = {})
self.class.attributes.each do |attr|
if options.has_key?(attr)
m = (attr.to_s + '=').to_sym
self.send(m, options[attr])
end
end
end
# Retrieves the element instance fields
#
# @return [Array]
def attributes
self.class.attributes
end
# Decodes the Rex::Proto::Kerberos::Model::Element from the input. This
# method has been designed to be overridden by subclasses.
#
# @raise [NoMethodError]
def decode(input)
raise ::NoMethodError, 'Method designed to be overridden'
end
# Encodes the Rex::Proto::Kerberos::Model::Element into an ASN.1 String. This
# method has been designed to be overridden by subclasses.
#
# @raise [NoMethodError]
def encode
raise ::NoMethodError, 'Method designed to be overridden'
end
end
end
end
end
end