ownTLS updated
This commit is contained in:
parent
198b9a576e
commit
00aee5bb78
@ -327,6 +327,15 @@ namespace eap
|
|||||||
///
|
///
|
||||||
void decrypt_message(_In_ tls_message_type_t type, _Inout_ sanitizing_blob &data);
|
void decrypt_message(_In_ tls_message_type_t type, _Inout_ sanitizing_blob &data);
|
||||||
|
|
||||||
|
///
|
||||||
|
/// Returns maximum netto size of a message for a given TLS message size
|
||||||
|
///
|
||||||
|
/// \param[in] size_message Size of the final TLS message
|
||||||
|
///
|
||||||
|
/// \returns Netto size of message data
|
||||||
|
///
|
||||||
|
size_t get_max_message(_In_ size_t size_message) const;
|
||||||
|
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
/// \name Pseudo-random generation
|
/// \name Pseudo-random generation
|
||||||
|
@ -1618,6 +1618,29 @@ void eap::method_tls::decrypt_message(_In_ tls_message_type_t type, _Inout_ sani
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
size_t eap::method_tls::get_max_message(_In_ size_t size_message) const
|
||||||
|
{
|
||||||
|
if (m_state_client.m_size_enc_block) {
|
||||||
|
// Padding
|
||||||
|
size_message -= size_message % m_state_client.m_size_enc_block;
|
||||||
|
size_message--;
|
||||||
|
|
||||||
|
// HMAC
|
||||||
|
size_message -= m_state_client.m_size_mac_hash;
|
||||||
|
|
||||||
|
if (m_tls_version >= tls_version_1_1) {
|
||||||
|
// IV (TLS 1.1+)
|
||||||
|
size_message -= m_state_client.m_size_enc_iv;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// HMAC
|
||||||
|
size_message -= m_state_client.m_size_mac_hash;
|
||||||
|
}
|
||||||
|
|
||||||
|
return size_message;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
eap::sanitizing_blob eap::method_tls::prf(
|
eap::sanitizing_blob eap::method_tls::prf(
|
||||||
_In_ HCRYPTPROV cp,
|
_In_ HCRYPTPROV cp,
|
||||||
_In_ ALG_ID alg,
|
_In_ ALG_ID alg,
|
||||||
|
@ -227,7 +227,7 @@ void eap::method_ttls::process_application_data(_In_bytecount_(size_msg) const v
|
|||||||
m_packet_res.m_id = m_packet_req.m_id;
|
m_packet_res.m_id = m_packet_req.m_id;
|
||||||
m_packet_res.m_flags = 0;
|
m_packet_res.m_flags = 0;
|
||||||
|
|
||||||
DWORD size_data = m_size_inner_packet_max;
|
DWORD size_data = (DWORD)get_max_message(16384 - sizeof(message_header));
|
||||||
sanitizing_blob data(size_data, 0);
|
sanitizing_blob data(size_data, 0);
|
||||||
unsigned char *ptr_data = data.data();
|
unsigned char *ptr_data = data.data();
|
||||||
#else
|
#else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user