mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-01 11:44:38 +02:00
DTLS Finished send duplication
1. Only add the encrypted Finished message to DTLS retransmit pool. 2. Don't increment the epoch or sequence number when retransmitting.
This commit is contained in:
@@ -1829,14 +1829,6 @@ int DtlsPoolSend(CYASSL* ssl)
|
|||||||
for (i = 0; i < pool->used; i++) {
|
for (i = 0; i < pool->used; i++) {
|
||||||
int sendResult;
|
int sendResult;
|
||||||
buffer* buf = &pool->buf[i];
|
buffer* buf = &pool->buf[i];
|
||||||
DtlsRecordLayerHeader* dtls = (DtlsRecordLayerHeader*)buf->buffer;
|
|
||||||
|
|
||||||
if (dtls->type == change_cipher_spec) {
|
|
||||||
ssl->keys.dtls_epoch++;
|
|
||||||
ssl->keys.dtls_sequence_number = 0;
|
|
||||||
}
|
|
||||||
c16toa(ssl->keys.dtls_epoch, dtls->epoch);
|
|
||||||
c32to48(ssl->keys.dtls_sequence_number++, dtls->sequence_number);
|
|
||||||
|
|
||||||
if ((ret = CheckAvailableSize(ssl, buf->length)) != 0)
|
if ((ret = CheckAvailableSize(ssl, buf->length)) != 0)
|
||||||
return ret;
|
return ret;
|
||||||
@@ -4971,14 +4963,9 @@ static int BuildMessage(CYASSL* ssl, byte* output, const byte* input, int inSz,
|
|||||||
idx += inSz;
|
idx += inSz;
|
||||||
|
|
||||||
if (type == handshake) {
|
if (type == handshake) {
|
||||||
#ifdef CYASSL_DTLS
|
|
||||||
if (ssl->options.dtls) {
|
|
||||||
if ((ret = DtlsPoolSave(ssl, output, headerSz+inSz)) != 0)
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
HashOutput(ssl, output, headerSz + inSz, ivSz);
|
HashOutput(ssl, output, headerSz + inSz, ivSz);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ssl->specs.cipher_type != aead) {
|
if (ssl->specs.cipher_type != aead) {
|
||||||
ssl->hmac(ssl, output+idx, output + headerSz + ivSz, inSz, type, 0);
|
ssl->hmac(ssl, output+idx, output + headerSz + ivSz, inSz, type, 0);
|
||||||
idx += digestSz;
|
idx += digestSz;
|
||||||
|
Reference in New Issue
Block a user