send finished
| 944 | |
| 945 | // send finished |
| 946 | void sendFinished(SSL& ssl, ConnectionEnd side, BufferOutput buffer) |
| 947 | { |
| 948 | if (ssl.GetError()) return; |
| 949 | |
| 950 | Finished fin; |
| 951 | buildFinished(ssl, fin, side == client_end ? client : server); |
| 952 | mySTL::auto_ptr<output_buffer> out(NEW_YS output_buffer); |
| 953 | cipherFinished(ssl, fin, *out.get()); // hashes handshake |
| 954 | |
| 955 | if (ssl.getSecurity().get_resuming()) { |
| 956 | if (side == server_end) |
| 957 | buildFinished(ssl, ssl.useHashes().use_verify(), client); // client |
| 958 | } |
| 959 | else { |
| 960 | if (!ssl.getSecurity().GetContext()->GetSessionCacheOff()) |
| 961 | GetSessions().add(ssl); // store session |
| 962 | if (side == client_end) |
| 963 | buildFinished(ssl, ssl.useHashes().use_verify(), server); // server |
| 964 | } |
| 965 | ssl.useSecurity().use_connection().CleanMaster(); |
| 966 | |
| 967 | if (buffer == buffered) |
| 968 | ssl.addBuffer(out.release()); |
| 969 | else |
| 970 | ssl.Send(out->get_buffer(), out->get_size()); |
| 971 | } |
| 972 | |
| 973 | |
| 974 | // send data |
no test coverage detected