MCPcopy Create free account
hub / github.com/secdev/scapy / TLS13NewSessionTicket

Class TLS13NewSessionTicket

scapy/layers/tls/handshake.py:1656–1706  ·  view source on GitHub ↗

Uncomment the TicketField line for parsing a RFC 5077 ticket.

Source from the content-addressed store, hash-verified

1654
1655
1656class TLS13NewSessionTicket(_TLSHandshake):
1657 """
1658 Uncomment the TicketField line for parsing a RFC 5077 ticket.
1659 """
1660 name = "TLS 1.3 Handshake - New Session Ticket"
1661 fields_desc = [ByteEnumField("msgtype", 4, _tls_handshake_type),
1662 ThreeBytesField("msglen", None),
1663 IntField("ticket_lifetime", 0xffffffff),
1664 IntField("ticket_age_add", 0),
1665 FieldLenField("noncelen", None, fmt="B",
1666 length_of="ticket_nonce"),
1667 StrLenField("ticket_nonce", "",
1668 length_from=lambda pkt: pkt.noncelen),
1669 FieldLenField("ticketlen", None, length_of="ticket"),
1670 # TicketField("ticket", "",
1671 StrLenField("ticket", "",
1672 length_from=lambda pkt: pkt.ticketlen),
1673 _ExtensionsLenField("extlen", None, length_of="ext"),
1674 _ExtensionsField("ext", None,
1675 length_from=lambda pkt: (pkt.msglen -
1676 (pkt.ticketlen or 0) - # noqa: E501
1677 pkt.noncelen or 0) - 13)] # noqa: E501
1678
1679 def build(self):
1680 fval = self.getfieldval("ticket")
1681 if fval == b"":
1682 # Here, the ticket is just a random 48-byte label
1683 # The ticket may also be a self-encrypted and self-authenticated
1684 # value
1685 self.ticket = os.urandom(48)
1686
1687 fval = self.getfieldval("ticket_nonce")
1688 if fval == b"":
1689 # Nonce is randomly chosen
1690 self.ticket_nonce = os.urandom(32)
1691
1692 fval = self.getfieldval("ticket_lifetime")
1693 if fval == 0xffffffff:
1694 # ticket_lifetime is set to 12 hours
1695 self.ticket_lifetime = 43200
1696
1697 fval = self.getfieldval("ticket_age_add")
1698 if fval == 0:
1699 # ticket_age_add is a random 32-bit value
1700 self.ticket_age_add = struct.unpack("!I", os.urandom(4))[0]
1701
1702 return _TLSHandshake.build(self)
1703
1704 def post_dissection_tls_session_update(self, msg_str):
1705 if self.tls_session.connection_end == "client":
1706 self.tls_session.client_session_ticket = self.ticket
1707
1708
1709###############################################################################

Callers 1

Calls 7

ByteEnumFieldClass · 0.90
ThreeBytesFieldClass · 0.90
IntFieldClass · 0.90
FieldLenFieldClass · 0.90
StrLenFieldClass · 0.90
_ExtensionsLenFieldClass · 0.90
_ExtensionsFieldClass · 0.90

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…