class SvcbRrPatch::SvcParams::Ech::ECHConfig

Constants

ECHConfigContents

Attributes

echconfigcontents[R]
version[R]

Public Class Methods

decode_vectors(octet) click to toggle source

@return [Array of ECHConfig]

# File lib/svcb_rr_patch/svc_params/ech.rb, line 54
def self.decode_vectors(octet)
  i = 0
  echconfigs = []
  while i < octet.length
    raise ::Resolv::DNS::DecodeError if i + 4 > octet.length

    version = octet.slice(i, 2)
    length = octet.slice(i + 2, 2).unpack1('n')
    i += 4
    raise ::Resolv::DNS::DecodeError if i + length > octet.length

    echconfig_contents = ECHConfigContents.decode(octet.slice(i, length))
    i += length
    echconfigs << new(version, echconfig_contents)
  end
  raise ::Resolv::DNS::DecodeError if i != octet.length

  echconfigs
end
new(version, echconfig_contents) click to toggle source

@param version [String] @param echconfig_contents [ECHConfigContents]

# File lib/svcb_rr_patch/svc_params/ech.rb, line 43
def initialize(version, echconfig_contents)
  @version = version
  @echconfig_contents = echconfig_contents
end

Public Instance Methods

encode() click to toggle source

@return [String]

# File lib/svcb_rr_patch/svc_params/ech.rb, line 49
def encode
  @version + @echconfig_contents.encode.then { |s| [s.length].pack('n') + s }
end