MCPcopy Index your code
hub / github.com/XTLS/Go / handshake

Method handshake

handshake_server.go:65–128  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

63}
64
65func (hs *serverHandshakeState) handshake() error {
66 c := hs.c
67
68 if err := hs.processClientHello(); err != nil {
69 return err
70 }
71
72 // For an overview of TLS handshaking, see RFC 5246, Section 7.3.
73 c.buffering = true
74 if hs.checkForResumption() {
75 // The client has included a session ticket and so we do an abbreviated handshake.
76 c.didResume = true
77 if err := hs.doResumeHandshake(); err != nil {
78 return err
79 }
80 if err := hs.establishKeys(); err != nil {
81 return err
82 }
83 if err := hs.sendSessionTicket(); err != nil {
84 return err
85 }
86 if err := hs.sendFinished(c.serverFinished[:]); err != nil {
87 return err
88 }
89 if _, err := c.flush(); err != nil {
90 return err
91 }
92 c.clientFinishedIsFirst = false
93 if err := hs.readFinished(nil); err != nil {
94 return err
95 }
96 } else {
97 // The client didn't include a session ticket, or it wasn't
98 // valid so we do a full handshake.
99 if err := hs.pickCipherSuite(); err != nil {
100 return err
101 }
102 if err := hs.doFullHandshake(); err != nil {
103 return err
104 }
105 if err := hs.establishKeys(); err != nil {
106 return err
107 }
108 if err := hs.readFinished(c.clientFinished[:]); err != nil {
109 return err
110 }
111 c.clientFinishedIsFirst = true
112 c.buffering = true
113 if err := hs.sendSessionTicket(); err != nil {
114 return err
115 }
116 if err := hs.sendFinished(nil); err != nil {
117 return err
118 }
119 if _, err := c.flush(); err != nil {
120 return err
121 }
122 }

Callers 1

serverHandshakeMethod · 0.95

Calls 11

processClientHelloMethod · 0.95
checkForResumptionMethod · 0.95
doResumeHandshakeMethod · 0.95
establishKeysMethod · 0.95
sendSessionTicketMethod · 0.95
sendFinishedMethod · 0.95
readFinishedMethod · 0.95
pickCipherSuiteMethod · 0.95
doFullHandshakeMethod · 0.95
ekmFromMasterSecretFunction · 0.85
flushMethod · 0.80

Tested by

no test coverage detected