Class: TTTLS13::Message::Extension::SignatureAlgorithms

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

Direct Known Subclasses

SignatureAlgorithmsCert

Constant Summary collapse

DEFAULT_SIGNATURE_ALGORITHMS =
[
  SignatureScheme::ECDSA_SECP256R1_SHA256,
  SignatureScheme::ECDSA_SECP384R1_SHA384,
  SignatureScheme::ECDSA_SECP521R1_SHA512,
  SignatureScheme::RSA_PSS_PSS_SHA256,
  SignatureScheme::RSA_PSS_PSS_SHA384,
  SignatureScheme::RSA_PSS_PSS_SHA512,
  SignatureScheme::RSA_PSS_RSAE_SHA256,
  SignatureScheme::RSA_PSS_RSAE_SHA384,
  SignatureScheme::RSA_PSS_RSAE_SHA512,
  SignatureScheme::RSA_PKCS1_SHA256,
  SignatureScheme::RSA_PKCS1_SHA384,
  SignatureScheme::RSA_PKCS1_SHA512
].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(supported_signature_algorithms) ⇒ SignatureAlgorithms

Returns a new instance of SignatureAlgorithms.

Parameters:

Raises:



28
29
30
31
32
33
34
# File 'lib/tttls1.3/message/extension/signature_algorithms.rb', line 28

def initialize(supported_signature_algorithms)
  @extension_type = ExtensionType::SIGNATURE_ALGORITHMS
  @supported_signature_algorithms = supported_signature_algorithms || []
  raise Error::ErrorAlerts, :internal_error \
    if @supported_signature_algorithms.empty? ||
       @supported_signature_algorithms.length * 2 > 2**16 - 3
end

Instance Attribute Details

#extension_typeObject

for signature_algorithms_cert getter



24
25
26
# File 'lib/tttls1.3/message/extension/signature_algorithms.rb', line 24

def extension_type
  @extension_type
end

#supported_signature_algorithmsObject (readonly)

Returns the value of attribute supported_signature_algorithms.



25
26
27
# File 'lib/tttls1.3/message/extension/signature_algorithms.rb', line 25

def supported_signature_algorithms
  @supported_signature_algorithms
end

Class Method Details

.deserialize(binary) ⇒ TTTLS13::Message::Extensions::SignatureAlgorithms?

Parameters:

  • binary (String)

Returns:

  • (TTTLS13::Message::Extensions::SignatureAlgorithms, nil)


70
71
72
73
74
75
# File 'lib/tttls1.3/message/extension/signature_algorithms.rb', line 70

def self.deserialize(binary)
  ssa = deserialize_supported_signature_algorithms(binary)
  return nil if ssa.nil?

  SignatureAlgorithms.new(ssa)
end

.deserialize_supported_signature_algorithms(binary) ⇒ Array of SignatureScheme

Parameters:

  • binary (String)

Returns:

Raises:



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/tttls1.3/message/extension/signature_algorithms.rb', line 48

def self.deserialize_supported_signature_algorithms(binary)
  raise Error::ErrorAlerts, :internal_error if binary.nil?

  return nil if binary.length < 2

  ssa_len = Convert.bin2i(binary.slice(0, 2))
  i = 2
  supported_signature_algorithms = []
  while i < ssa_len + 2
    return nil if i + 2 > binary.length

    supported_signature_algorithms << binary.slice(i, 2)
    i += 2
  end
  return nil unless ssa_len + 2 == binary.length

  supported_signature_algorithms
end

Instance Method Details

#serializeString

Returns:

  • (String)


37
38
39
40
41
# File 'lib/tttls1.3/message/extension/signature_algorithms.rb', line 37

def serialize
  binary = @supported_signature_algorithms.join

  @extension_type + binary.prefix_uint16_length.prefix_uint16_length
end