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