Class: TTTLS13::Message::CertificateVerify

Inherits:
Object
  • Object
show all
Defined in:
lib/tttls1.3/message/certificate_verify.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(signature_scheme:, signature:) ⇒ CertificateVerify

Returns a new instance of CertificateVerify.

Parameters:

Raises:



16
17
18
19
20
21
22
# 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

Instance Attribute Details

#msg_typeObject (readonly)

Returns the value of attribute msg_type.



8
9
10
# File 'lib/tttls1.3/message/certificate_verify.rb', line 8

def msg_type
  @msg_type
end

#signatureObject (readonly)

Returns the value of attribute signature.



10
11
12
# File 'lib/tttls1.3/message/certificate_verify.rb', line 10

def signature
  @signature
end

#signature_schemeObject (readonly)

Returns the value of attribute signature_scheme.



9
10
11
# File 'lib/tttls1.3/message/certificate_verify.rb', line 9

def signature_scheme
  @signature_scheme
end

Class Method Details

.deserialize(binary) ⇒ TTTLS13::Message::CertificateVerify

Parameters:

  • binary (String)

Returns:

Raises:



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# 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

Instance Method Details

#serializeString Also known as: fragment

Returns:

  • (String)


25
26
27
28
29
30
31
# 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