module Net::BER::Extensions::Array
Public Instance Methods
Converts an Array to a BER sequence. All values in the Array are expected to be in BER format prior to calling this method.
# File lib/net/ber/core_ext/array.rb, line 7 def to_ber(id = 0) # The universal sequence tag 0x30 is composed of the base tag value # (0x10) and the constructed flag (0x20). to_ber_seq_internal(0x30 + id) end
Converts an Array to an application-specific sequence, assigned a tag value that is meaningful to the particular protocol being used. All values in the Array are expected to be in BER format pr prior to calling this method.
# File lib/net/ber/core_ext/array.rb, line 39 def to_ber_appsequence(id = 0) # The application sequence tag always starts from the application flag # (0x40) and the constructed flag (0x20). to_ber_seq_internal(0x60 + id) end
Converts an Array to a context-specific sequence, assigned a tag value that is meaningful to the particular context of the particular protocol being used. All values in the Array are expected to be in BER format prior to calling this method.
# File lib/net/ber/core_ext/array.rb, line 50 def to_ber_contextspecific(id = 0) # The application sequence tag always starts from the context flag # (0x80) and the constructed flag (0x20). to_ber_seq_internal(0xa0 + id) end
Converts an array into a set of ber control codes The expected format is [[control_oid, criticality, control_value(optional)]]
[['1.2.840.113556.1.4.805',true]]
# File lib/net/ber/core_ext/array.rb, line 87 def to_ber_control #if our array does not contain at least one array then wrap it in an array before going forward ary = self[0].kind_of?(Array) ? self : [self] ary = ary.collect do |control_sequence| control_sequence.collect(&:to_ber).to_ber_sequence.reject_empty_ber_arrays end ary.to_ber_sequence.reject_empty_ber_arrays end
SNMP Object Identifiers (OID) are special arrays
# File lib/net/ber/core_ext/array.rb, line 72 def to_ber_oid ary = self.dup first = ary.shift raise Net::BER::BerError, "Invalid OID" unless [0, 1, 2].include?(first) first = first * 40 + ary.shift ary.unshift first oid = ary.pack("w*") [6, oid.length].pack("CC") + oid end
Converts an Array to a BER set. All values in the Array are expected to be in BER format prior to calling this method.
# File lib/net/ber/core_ext/array.rb, line 17 def to_ber_set(id = 0) # The universal set tag 0x31 is composed of the base tag value (0x11) # and the constructed flag (0x20). to_ber_seq_internal(0x31 + id) end