(config *Config, cert *Certificate, ckx *clientKeyExchangeMsg, version uint16)
| 257 | } |
| 258 | |
| 259 | func (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 | |
| 276 | func (ka *ecdheKeyAgreement) processServerKeyExchange(config *Config, clientHello *clientHelloMsg, serverHello *serverHelloMsg, cert *x509.Certificate, skx *serverKeyExchangeMsg) error { |
| 277 | if len(skx.key) < 4 { |
nothing calls this directly
no outgoing calls
no test coverage detected