MCPcopy
hub / github.com/XTLS/REALITY / marshal

Method marshal

handshake_messages.go:746–869  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

744}
745
746func (m *serverHelloMsg) marshal() ([]byte, error) {
747 var exts cryptobyte.Builder
748 if m.ocspStapling {
749 exts.AddUint16(extensionStatusRequest)
750 exts.AddUint16(0) // empty extension_data
751 }
752 if m.ticketSupported {
753 exts.AddUint16(extensionSessionTicket)
754 exts.AddUint16(0) // empty extension_data
755 }
756 if m.secureRenegotiationSupported {
757 exts.AddUint16(extensionRenegotiationInfo)
758 exts.AddUint16LengthPrefixed(func(exts *cryptobyte.Builder) {
759 exts.AddUint8LengthPrefixed(func(exts *cryptobyte.Builder) {
760 exts.AddBytes(m.secureRenegotiation)
761 })
762 })
763 }
764 if m.extendedMasterSecret {
765 exts.AddUint16(extensionExtendedMasterSecret)
766 exts.AddUint16(0) // empty extension_data
767 }
768 if len(m.alpnProtocol) > 0 {
769 exts.AddUint16(extensionALPN)
770 exts.AddUint16LengthPrefixed(func(exts *cryptobyte.Builder) {
771 exts.AddUint16LengthPrefixed(func(exts *cryptobyte.Builder) {
772 exts.AddUint8LengthPrefixed(func(exts *cryptobyte.Builder) {
773 exts.AddBytes([]byte(m.alpnProtocol))
774 })
775 })
776 })
777 }
778 if len(m.scts) > 0 {
779 exts.AddUint16(extensionSCT)
780 exts.AddUint16LengthPrefixed(func(exts *cryptobyte.Builder) {
781 exts.AddUint16LengthPrefixed(func(exts *cryptobyte.Builder) {
782 for _, sct := range m.scts {
783 exts.AddUint16LengthPrefixed(func(exts *cryptobyte.Builder) {
784 exts.AddBytes(sct)
785 })
786 }
787 })
788 })
789 }
790 if m.supportedVersion != 0 {
791 exts.AddUint16(extensionSupportedVersions)
792 exts.AddUint16LengthPrefixed(func(exts *cryptobyte.Builder) {
793 exts.AddUint16(m.supportedVersion)
794 })
795 }
796 if m.serverShare.group != 0 {
797 exts.AddUint16(extensionKeyShare)
798 exts.AddUint16LengthPrefixed(func(exts *cryptobyte.Builder) {
799 exts.AddUint16(uint16(m.serverShare.group))
800 exts.AddUint16LengthPrefixed(func(exts *cryptobyte.Builder) {
801 exts.AddBytes(m.serverShare.data)
802 })
803 })

Callers

nothing calls this directly

Calls 2

addBytesWithLengthFunction · 0.85
BytesMethod · 0.80

Tested by

no test coverage detected