8 #include <botan/internal/tls_messages.h>
9 #include <botan/prf_tls.h>
21 verification_data = compute_verify(master_secret, hash, side, version);
30 return verification_data;
36 void Finished::deserialize(
const MemoryRegion<byte>& buf)
38 verification_data = buf;
48 if(computed == verification_data)
63 const byte SSL_CLIENT_LABEL[] = { 0x43, 0x4C, 0x4E, 0x54 };
64 const byte SSL_SERVER_LABEL[] = { 0x53, 0x52, 0x56, 0x52 };
66 SecureVector<byte> ssl3_finished;
69 hash.
update(SSL_CLIENT_LABEL,
sizeof(SSL_CLIENT_LABEL));
71 hash.
update(SSL_SERVER_LABEL,
sizeof(SSL_SERVER_LABEL));
77 const byte TLS_CLIENT_LABEL[] = {
78 0x63, 0x6C, 0x69, 0x65, 0x6E, 0x74, 0x20, 0x66, 0x69, 0x6E, 0x69,
79 0x73, 0x68, 0x65, 0x64 };
81 const byte TLS_SERVER_LABEL[] = {
82 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x66, 0x69, 0x6E, 0x69,
83 0x73, 0x68, 0x65, 0x64 };
87 SecureVector<byte> input;
89 input += std::make_pair(TLS_CLIENT_LABEL,
sizeof(TLS_CLIENT_LABEL));
91 input += std::make_pair(TLS_SERVER_LABEL,
sizeof(TLS_SERVER_LABEL));
92 input += hash.
final();
94 return prf.derive_key(12, secret, input);
void send(Record_Writer &, HandshakeHash &) const
std::invalid_argument Invalid_Argument
Finished(Record_Writer &, Version_Code, Connection_Side, const MemoryRegion< byte > &, HandshakeHash &)
void update(const byte in[], size_t length)
SecureVector< byte > final_ssl3(const MemoryRegion< byte > &)
SecureVector< byte > final()
bool verify(const MemoryRegion< byte > &, Version_Code, const HandshakeHash &, Connection_Side)