forked from wolfSSL/wolfssl
Merge branch 'master' of github.com:cyassl/cyassl
This commit is contained in:
@@ -5046,14 +5046,17 @@ int SendFinished(CYASSL* ssl)
|
|||||||
int ret;
|
int ret;
|
||||||
int headerSz = HANDSHAKE_HEADER_SZ;
|
int headerSz = HANDSHAKE_HEADER_SZ;
|
||||||
|
|
||||||
|
#ifdef CYASSL_DTLS
|
||||||
|
word32 sequence_number = ssl->keys.dtls_sequence_number;
|
||||||
|
word16 epoch = ssl->keys.dtls_epoch;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* check for available size */
|
/* check for available size */
|
||||||
if ((ret = CheckAvailableSize(ssl, sizeof(input) + MAX_MSG_EXTRA)) != 0)
|
if ((ret = CheckAvailableSize(ssl, sizeof(input) + MAX_MSG_EXTRA)) != 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
#ifdef CYASSL_DTLS
|
#ifdef CYASSL_DTLS
|
||||||
word32 sequence_number = ssl->keys.dtls_sequence_number;
|
|
||||||
word16 epoch = ssl->keys.dtls_epoch;
|
|
||||||
if (ssl->options.dtls) {
|
if (ssl->options.dtls) {
|
||||||
/* Send Finished message with the next epoch, but don't commit that
|
/* Send Finished message with the next epoch, but don't commit that
|
||||||
* change until the other end confirms its reception. */
|
* change until the other end confirms its reception. */
|
||||||
|
42
src/tls.c
42
src/tls.c
@@ -817,13 +817,13 @@ void TLSX_FreeAll(TLSX* list)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define IS_OFF(cemaphor, light) \
|
#define IS_OFF(semaphore, light) \
|
||||||
((cemaphor)[(light) / 8] ^ (0x01 >> ((light) % 8)))
|
((semaphore)[(light) / 8] ^ (byte) (0x01 << ((light) % 8)))
|
||||||
|
|
||||||
#define TURN_ON(cemaphor, light) \
|
#define TURN_ON(semaphore, light) \
|
||||||
((cemaphor)[(light) / 8] |= (0x01 >> ((light) % 8)))
|
((semaphore)[(light) / 8] |= (byte) (0x01 << ((light) % 8)))
|
||||||
|
|
||||||
static word16 TLSX_GetSize(TLSX* list, byte* cemaphor, byte isRequest)
|
static word16 TLSX_GetSize(TLSX* list, byte* semaphore, byte isRequest)
|
||||||
{
|
{
|
||||||
TLSX* extension;
|
TLSX* extension;
|
||||||
word16 length = 0;
|
word16 length = 0;
|
||||||
@@ -834,7 +834,7 @@ static word16 TLSX_GetSize(TLSX* list, byte* cemaphor, byte isRequest)
|
|||||||
if (!isRequest && !extension->resp)
|
if (!isRequest && !extension->resp)
|
||||||
continue; /* skip! */
|
continue; /* skip! */
|
||||||
|
|
||||||
if (IS_OFF(cemaphor, extension->type)) {
|
if (IS_OFF(semaphore, extension->type)) {
|
||||||
/* type + data length */
|
/* type + data length */
|
||||||
length += HELLO_EXT_TYPE_SZ + OPAQUE16_LEN;
|
length += HELLO_EXT_TYPE_SZ + OPAQUE16_LEN;
|
||||||
|
|
||||||
@@ -845,14 +845,14 @@ static word16 TLSX_GetSize(TLSX* list, byte* cemaphor, byte isRequest)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
TURN_ON(cemaphor, extension->type);
|
TURN_ON(semaphore, extension->type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return length;
|
return length;
|
||||||
}
|
}
|
||||||
|
|
||||||
static word16 TLSX_Write(TLSX* list, byte* output, byte* cemaphor,
|
static word16 TLSX_Write(TLSX* list, byte* output, byte* semaphore,
|
||||||
byte isRequest)
|
byte isRequest)
|
||||||
{
|
{
|
||||||
TLSX* extension;
|
TLSX* extension;
|
||||||
@@ -865,7 +865,7 @@ static word16 TLSX_Write(TLSX* list, byte* output, byte* cemaphor,
|
|||||||
if (!isRequest && !extension->resp)
|
if (!isRequest && !extension->resp)
|
||||||
continue; /* skip! */
|
continue; /* skip! */
|
||||||
|
|
||||||
if (IS_OFF(cemaphor, extension->type)) {
|
if (IS_OFF(semaphore, extension->type)) {
|
||||||
/* extension type */
|
/* extension type */
|
||||||
c16toa(extension->type, output + offset);
|
c16toa(extension->type, output + offset);
|
||||||
offset += HELLO_EXT_TYPE_SZ + OPAQUE16_LEN;
|
offset += HELLO_EXT_TYPE_SZ + OPAQUE16_LEN;
|
||||||
@@ -884,7 +884,7 @@ static word16 TLSX_Write(TLSX* list, byte* output, byte* cemaphor,
|
|||||||
c16toa(offset - length_offset,
|
c16toa(offset - length_offset,
|
||||||
output + length_offset - OPAQUE16_LEN);
|
output + length_offset - OPAQUE16_LEN);
|
||||||
|
|
||||||
TURN_ON(cemaphor, extension->type);
|
TURN_ON(semaphore, extension->type);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -898,13 +898,13 @@ word16 TLSX_GetRequestSize(CYASSL* ssl)
|
|||||||
word16 length = 0;
|
word16 length = 0;
|
||||||
|
|
||||||
if (ssl && IsTLS(ssl)) {
|
if (ssl && IsTLS(ssl)) {
|
||||||
byte cemaphor[16] = {0};
|
byte semaphore[16] = {0};
|
||||||
|
|
||||||
if (ssl->extensions)
|
if (ssl->extensions)
|
||||||
length += TLSX_GetSize(ssl->extensions, cemaphor, 1);
|
length += TLSX_GetSize(ssl->extensions, semaphore, 1);
|
||||||
|
|
||||||
if (ssl->ctx && ssl->ctx->extensions)
|
if (ssl->ctx && ssl->ctx->extensions)
|
||||||
length += TLSX_GetSize(ssl->ctx->extensions, cemaphor, 1);
|
length += TLSX_GetSize(ssl->ctx->extensions, semaphore, 1);
|
||||||
|
|
||||||
if (IsAtLeastTLSv1_2(ssl) && ssl->suites->hashSigAlgoSz)
|
if (IsAtLeastTLSv1_2(ssl) && ssl->suites->hashSigAlgoSz)
|
||||||
length += ssl->suites->hashSigAlgoSz + HELLO_EXT_LEN;
|
length += ssl->suites->hashSigAlgoSz + HELLO_EXT_LEN;
|
||||||
@@ -921,17 +921,17 @@ word16 TLSX_WriteRequest(CYASSL* ssl, byte* output)
|
|||||||
word16 offset = 0;
|
word16 offset = 0;
|
||||||
|
|
||||||
if (ssl && IsTLS(ssl) && output) {
|
if (ssl && IsTLS(ssl) && output) {
|
||||||
byte cemaphor[16] = {0};
|
byte semaphore[16] = {0};
|
||||||
|
|
||||||
offset += OPAQUE16_LEN; /* extensions length */
|
offset += OPAQUE16_LEN; /* extensions length */
|
||||||
|
|
||||||
if (ssl->extensions)
|
if (ssl->extensions)
|
||||||
offset += TLSX_Write(ssl->extensions, output + offset,
|
offset += TLSX_Write(ssl->extensions, output + offset,
|
||||||
cemaphor, 1);
|
semaphore, 1);
|
||||||
|
|
||||||
if (ssl->ctx && ssl->ctx->extensions)
|
if (ssl->ctx && ssl->ctx->extensions)
|
||||||
offset += TLSX_Write(ssl->ctx->extensions, output + offset,
|
offset += TLSX_Write(ssl->ctx->extensions, output + offset,
|
||||||
cemaphor, 1);
|
semaphore, 1);
|
||||||
|
|
||||||
if (IsAtLeastTLSv1_2(ssl) && ssl->suites->hashSigAlgoSz)
|
if (IsAtLeastTLSv1_2(ssl) && ssl->suites->hashSigAlgoSz)
|
||||||
{
|
{
|
||||||
@@ -967,10 +967,10 @@ word16 TLSX_WriteRequest(CYASSL* ssl, byte* output)
|
|||||||
word16 TLSX_GetResponseSize(CYASSL* ssl)
|
word16 TLSX_GetResponseSize(CYASSL* ssl)
|
||||||
{
|
{
|
||||||
word16 length = 0;
|
word16 length = 0;
|
||||||
byte cemaphor[16] = {0};
|
byte semaphore[16] = {0};
|
||||||
|
|
||||||
if (ssl && IsTLS(ssl))
|
if (ssl && IsTLS(ssl))
|
||||||
length += TLSX_GetSize(ssl->extensions, cemaphor, 0);
|
length += TLSX_GetSize(ssl->extensions, semaphore, 0);
|
||||||
|
|
||||||
/* All the response data is set at the ssl object only, so no ctx here. */
|
/* All the response data is set at the ssl object only, so no ctx here. */
|
||||||
|
|
||||||
@@ -985,11 +985,11 @@ word16 TLSX_WriteResponse(CYASSL *ssl, byte* output)
|
|||||||
word16 offset = 0;
|
word16 offset = 0;
|
||||||
|
|
||||||
if (ssl && IsTLS(ssl) && output) {
|
if (ssl && IsTLS(ssl) && output) {
|
||||||
byte cemaphor[16] = {0};
|
byte semaphore[16] = {0};
|
||||||
|
|
||||||
offset += OPAQUE16_LEN; /* extensions length */
|
offset += OPAQUE16_LEN; /* extensions length */
|
||||||
|
|
||||||
offset += TLSX_Write(ssl->extensions, output + offset, cemaphor, 0);
|
offset += TLSX_Write(ssl->extensions, output + offset, semaphore, 0);
|
||||||
|
|
||||||
if (offset > OPAQUE16_LEN)
|
if (offset > OPAQUE16_LEN)
|
||||||
c16toa(offset - OPAQUE16_LEN, output); /* extensions length */
|
c16toa(offset - OPAQUE16_LEN, output); /* extensions length */
|
||||||
@@ -1058,7 +1058,7 @@ int TLSX_Parse(CYASSL* ssl, byte* input, word16 length, byte isRequest,
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* undefining cemaphor macros */
|
/* undefining semaphore macros */
|
||||||
#undef IS_OFF
|
#undef IS_OFF
|
||||||
#undef TURN_ON
|
#undef TURN_ON
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user