class TTTLS13::Message::CertificateVerify

Attributes

msg_type[R]
signature[R]
signature_scheme[R]

Public Class Methods

deserialize(binary) click to toggle source

@param binary [String]

@raise [TTTLS13::Error::ErrorAlerts]

@return [TTTLS13::Message::CertificateVerify]

# File lib/tttls1.3/message/certificate_verify.rb, line 40
def self.deserialize(binary)
  raise Error::ErrorAlerts, :internal_error if binary.nil?
  raise Error::ErrorAlerts, :decode_error if binary.length < 8
  raise Error::ErrorAlerts, :internal_error \
    unless binary[0] == HandshakeType::CERTIFICATE_VERIFY

  msg_len = Convert.bin2i(binary.slice(1, 3))
  signature_scheme = binary.slice(4, 2)
  signature_len = Convert.bin2i(binary.slice(6, 2))
  signature = binary.slice(8, signature_len)
  raise Error::ErrorAlerts, :internal_error \
    unless signature_len + 4 == msg_len &&
           signature_len + 8 == binary.length

  CertificateVerify.new(signature_scheme: signature_scheme,
                        signature: signature)
end
new(signature_scheme:, signature:) click to toggle source

@param signature_scheme [TTTLS13::SignatureScheme] @param signature [String]

@raise [TTTLS13::Error::ErrorAlerts]

# File lib/tttls1.3/message/certificate_verify.rb, line 16
def initialize(signature_scheme:, signature:)
  @msg_type = HandshakeType::CERTIFICATE_VERIFY
  @signature_scheme = signature_scheme
  @signature = signature
  raise Error::ErrorAlerts, :internal_error \
    if @signature.length > 2**16 - 1
end

Public Instance Methods

fragment()
Alias for: serialize
serialize() click to toggle source

@return [String]

# File lib/tttls1.3/message/certificate_verify.rb, line 25
def serialize
  binary = ''
  binary += @signature_scheme
  binary += @signature.prefix_uint16_length

  @msg_type + binary.prefix_uint24_length
end
Also aliased as: fragment