MCPcopy Create free account
hub / github.com/XTLS/REALITY / processClientKeyExchange

Method processClientKeyExchange

key_agreement.go:259–274  ·  view source on GitHub ↗
(config *Config, cert *Certificate, ckx *clientKeyExchangeMsg, version uint16)

Source from the content-addressed store, hash-verified

257}
258
259func (ka *ecdheKeyAgreement) processClientKeyExchange(config *Config, cert *Certificate, ckx *clientKeyExchangeMsg, version uint16) ([]byte, error) {
260 if len(ckx.ciphertext) == 0 || int(ckx.ciphertext[0]) != len(ckx.ciphertext)-1 {
261 return nil, errClientKeyExchange
262 }
263
264 peerKey, err := ka.key.Curve().NewPublicKey(ckx.ciphertext[1:])
265 if err != nil {
266 return nil, errClientKeyExchange
267 }
268 preMasterSecret, err := ka.key.ECDH(peerKey)
269 if err != nil {
270 return nil, errClientKeyExchange
271 }
272
273 return preMasterSecret, nil
274}
275
276func (ka *ecdheKeyAgreement) processServerKeyExchange(config *Config, clientHello *clientHelloMsg, serverHello *serverHelloMsg, cert *x509.Certificate, skx *serverKeyExchangeMsg) error {
277 if len(skx.key) < 4 {

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected