67 lines
1.8 KiB
Ruby
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 |