class TTTLS13::Message::Extension::OfferedPsks
NOTE:
opaque PskBinderEntry<32..255>; struct { PskIdentity identities<7..2^16-1>; PskBinderEntry binders<33..2^16-1>; } OfferedPsks;
Attributes
binders[R]
identities[R]
Public Class Methods
deserialize(binary)
click to toggle source
@param binary [String]
@return [TTTLS13::Message::Extensions::OfferedPsks, nil] rubocop: disable Metrics/AbcSize rubocop: disable Metrics/CyclomaticComplexity rubocop: disable Metrics/MethodLength rubocop: disable Metrics/PerceivedComplexity
# File lib/tttls1.3/message/extension/pre_shared_key.rb, line 126 def self.deserialize(binary) raise Error::ErrorAlerts, :internal_error if binary.nil? return nil if binary.length < 2 pskids_len = Convert.bin2i(binary.slice(0, 2)) i = 2 identities = [] # Array of PskIdentity while i < pskids_len + 2 return nil if i + 2 > binary.length id_len = Convert.bin2i(binary.slice(i, 2)) return nil if id_len.zero? i += 2 identity = binary.slice(i, id_len) i += id_len return nil if i + 4 > binary.length obfuscated_ticket_age = Convert.bin2i(binary.slice(i, 4)) i += 4 identities << PskIdentity.new( identity: identity, obfuscated_ticket_age: obfuscated_ticket_age ) end i += 2 binders = [] # Array of String while i < binary.length return nil if i > binary.length pbe_len = Convert.bin2i(binary[i]) return nil if pbe_len < 32 i += 1 binders << binary.slice(i, pbe_len) i += pbe_len end return nil unless i == binary.length OfferedPsks.new(identities: identities, binders: binders) end
new(identities: [], binders: [])
click to toggle source
@param identities [Array of PskIdentity] @param binders [Array of String]
@raise [TTTLS13::Error::ErrorAlerts]
# File lib/tttls1.3/message/extension/pre_shared_key.rb, line 101 def initialize(identities: [], binders: []) @identities = identities || [] @binders = binders || [] raise Error::ErrorAlerts, :internal_error \ if @identities.empty? || @binders.empty? end
Public Instance Methods
serialize()
click to toggle source
@return [String]
# File lib/tttls1.3/message/extension/pre_shared_key.rb, line 109 def serialize binary = @identities.map(&:serialize).join identities_bin = binary.prefix_uint16_length binary = @binders.map(&:prefix_uint8_length).join binders_bin = binary.prefix_uint16_length identities_bin + binders_bin end