package handshake

import (
	
	
	

	
	
)

const sessionTicketRevision = 5

type sessionTicket struct {
	Parameters *wire.TransportParameters
}

func ( *sessionTicket) () []byte {
	 := make([]byte, 0, 256)
	 = quicvarint.Append(, sessionTicketRevision)
	return .Parameters.MarshalForSessionTicket()
}

func ( *sessionTicket) ( []byte) error {
	, ,  := quicvarint.Parse()
	if  != nil {
		return errors.New("failed to read session ticket revision")
	}
	 = [:]
	if  != sessionTicketRevision {
		return fmt.Errorf("unknown session ticket revision: %d", )
	}
	var  wire.TransportParameters
	if  := .UnmarshalFromSessionTicket();  != nil {
		return fmt.Errorf("unmarshaling transport parameters from session ticket failed: %s", .Error())
	}
	.Parameters = &
	return nil
}

const extraPrefix = "quic-go1"

func addSessionStateExtraPrefix( []byte) []byte {
	return append([]byte(extraPrefix), ...)
}

func findSessionStateExtraData( [][]byte) []byte {
	 := []byte(extraPrefix)
	for ,  := range  {
		if len() < len() || !bytes.Equal(, [:len()]) {
			continue
		}
		return [len():]
	}
	return nil
}