On the server side, the first two methods are called in order. In the case that the key agreement protocol doesn't use a ServerKeyExchange message, generateServerKeyExchange can return nil, nil.
(*Config, *Certificate, *clientHelloMsg, *serverHelloMsg)
| 24 | // ServerKeyExchange message, generateServerKeyExchange can return nil, |
| 25 | // nil. |
| 26 | generateServerKeyExchange(*Config, *Certificate, *clientHelloMsg, *serverHelloMsg) (*serverKeyExchangeMsg, error) |
| 27 | processClientKeyExchange(*Config, *Certificate, *clientKeyExchangeMsg, uint16) ([]byte, error) |
| 28 | |
| 29 | // On the client side, the next two methods are called in order. |