Class: TTTLS13::Message::Certificate
- Inherits:
-
Object
- Object
- TTTLS13::Message::Certificate
- Defined in:
- lib/tttls1.3/message/certificate.rb
Instance Attribute Summary collapse
-
#certificate_list ⇒ Object
readonly
Returns the value of attribute certificate_list.
-
#certificate_request_context ⇒ Object
readonly
Returns the value of attribute certificate_request_context.
-
#msg_type ⇒ Object
readonly
Returns the value of attribute msg_type.
Class Method Summary collapse
Instance Method Summary collapse
- #appearable_extensions? ⇒ Boolean
-
#initialize(certificate_request_context: '', certificate_list: []) ⇒ Certificate
constructor
A new instance of Certificate.
- #serialize ⇒ String (also: #fragment)
Constructor Details
#initialize(certificate_request_context: '', certificate_list: []) ⇒ Certificate
Returns a new instance of Certificate.
21 22 23 24 25 26 |
# File 'lib/tttls1.3/message/certificate.rb', line 21 def initialize(certificate_request_context: '', certificate_list: []) @msg_type = HandshakeType::CERTIFICATE @certificate_request_context = certificate_request_context || '' @certificate_list = certificate_list || [] end |
Instance Attribute Details
#certificate_list ⇒ Object (readonly)
Returns the value of attribute certificate_list.
17 18 19 |
# File 'lib/tttls1.3/message/certificate.rb', line 17 def certificate_list @certificate_list end |
#certificate_request_context ⇒ Object (readonly)
Returns the value of attribute certificate_request_context.
16 17 18 |
# File 'lib/tttls1.3/message/certificate.rb', line 16 def certificate_request_context @certificate_request_context end |
#msg_type ⇒ Object (readonly)
Returns the value of attribute msg_type.
15 16 17 |
# File 'lib/tttls1.3/message/certificate.rb', line 15 def msg_type @msg_type end |
Class Method Details
.deserialize(binary) ⇒ TTTLS13::Message::Certificate
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/tttls1.3/message/certificate.rb', line 44 def self.deserialize(binary) raise Error::ErrorAlerts, :internal_error if binary.nil? raise Error::ErrorAlerts, :decode_error if binary.length < 5 raise Error::ErrorAlerts, :internal_error \ unless binary[0] == HandshakeType::CERTIFICATE msg_len = Convert.bin2i(binary.slice(1, 3)) crc_len = Convert.bin2i(binary.slice(4, 1)) certificate_request_context = binary.slice(5, crc_len) i = 5 + crc_len cl_len = Convert.bin2i(binary.slice(i, 3)) i += 3 cl_bin = binary.slice(i, cl_len) i += cl_len certificate_list = deserialize_certificate_list(cl_bin) raise Error::ErrorAlerts, :decode_error unless i == msg_len + 4 && i == binary.length Certificate.new( certificate_request_context: certificate_request_context, certificate_list: certificate_list ) end |
Instance Method Details
#appearable_extensions? ⇒ Boolean
69 70 71 72 73 74 75 76 77 |
# File 'lib/tttls1.3/message/certificate.rb', line 69 def appearable_extensions? cl_exs = @certificate_list.map do |e| e.instance_variable_get(:@extensions).keys end exs = cl_exs.uniq.flatten - APPEARABLE_CT_EXTENSIONS return true if exs.empty? !(exs - DEFINED_EXTENSIONS).empty? end |
#serialize ⇒ String Also known as: fragment
29 30 31 32 33 34 35 |
# File 'lib/tttls1.3/message/certificate.rb', line 29 def serialize binary = '' binary += @certificate_request_context.prefix_uint8_length binary += @certificate_list.map(&:serialize).join.prefix_uint24_length @msg_type + binary.prefix_uint24_length end |