send server hello
| 1069 | |
| 1070 | // send server hello |
| 1071 | void sendServerHello(SSL& ssl, BufferOutput buffer) |
| 1072 | { |
| 1073 | if (ssl.getSecurity().get_resuming()) |
| 1074 | ssl.verifyState(clientKeyExchangeComplete); |
| 1075 | else |
| 1076 | ssl.verifyState(clientHelloComplete); |
| 1077 | if (ssl.GetError()) return; |
| 1078 | |
| 1079 | ServerHello sh(ssl.getSecurity().get_connection().version_, |
| 1080 | ssl.getSecurity().get_connection().compression_); |
| 1081 | RecordLayerHeader rlHeader; |
| 1082 | HandShakeHeader hsHeader; |
| 1083 | mySTL::auto_ptr<output_buffer> out(NEW_YS output_buffer); |
| 1084 | |
| 1085 | buildServerHello(ssl, sh); |
| 1086 | ssl.set_random(sh.get_random(), server_end); |
| 1087 | buildHeaders(ssl, hsHeader, rlHeader, sh); |
| 1088 | buildOutput(*out.get(), rlHeader, hsHeader, sh); |
| 1089 | hashHandShake(ssl, *out.get()); |
| 1090 | |
| 1091 | if (buffer == buffered) |
| 1092 | ssl.addBuffer(out.release()); |
| 1093 | else |
| 1094 | ssl.Send(out->get_buffer(), out->get_size()); |
| 1095 | } |
| 1096 | |
| 1097 | |
| 1098 | // send server hello done |
no test coverage detected