# -*- 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