forked from wolfSSL/wolfssl
change magic numbers to constants, rename verify parameter of WriteSEQ() and subfunctions
This commit is contained in:
@ -3941,15 +3941,15 @@ static INLINE void GetSEQIncrement(WOLFSSL* ssl, int verify, word32 seq[2])
|
|||||||
|
|
||||||
|
|
||||||
#ifdef WOLFSSL_DTLS
|
#ifdef WOLFSSL_DTLS
|
||||||
static INLINE void DtlsGetSEQ(WOLFSSL* ssl, int verify, word32 seq[2])
|
static INLINE void DtlsGetSEQ(WOLFSSL* ssl, int order, word32 seq[2])
|
||||||
{
|
{
|
||||||
if (verify == -1) {
|
if (order == PREV_ORDER) {
|
||||||
/* Previous epoch case */
|
/* Previous epoch case */
|
||||||
seq[0] = ((ssl->keys.dtls_epoch - 1) << 16) |
|
seq[0] = ((ssl->keys.dtls_epoch - 1) << 16) |
|
||||||
(ssl->keys.dtls_prev_sequence_number_hi & 0xFFFF);
|
(ssl->keys.dtls_prev_sequence_number_hi & 0xFFFF);
|
||||||
seq[1] = ssl->keys.dtls_prev_sequence_number_lo;
|
seq[1] = ssl->keys.dtls_prev_sequence_number_lo;
|
||||||
}
|
}
|
||||||
else if (verify == 1) {
|
else if (order == PEER_ORDER) {
|
||||||
seq[0] = (ssl->keys.curEpoch << 16) |
|
seq[0] = (ssl->keys.curEpoch << 16) |
|
||||||
(ssl->keys.curSeq_hi & 0xFFFF);
|
(ssl->keys.curSeq_hi & 0xFFFF);
|
||||||
seq[1] = ssl->keys.curSeq_lo; /* explicit from peer */
|
seq[1] = ssl->keys.curSeq_lo; /* explicit from peer */
|
||||||
@ -3961,18 +3961,18 @@ static INLINE void DtlsGetSEQ(WOLFSSL* ssl, int verify, word32 seq[2])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static INLINE void DtlsSEQIncrement(WOLFSSL* ssl, int verify)
|
static INLINE void DtlsSEQIncrement(WOLFSSL* ssl, int order)
|
||||||
{
|
{
|
||||||
word32 seq;
|
word32 seq;
|
||||||
|
|
||||||
if (verify == -1) {
|
if (order == PREV_ORDER) {
|
||||||
seq = ssl->keys.dtls_prev_sequence_number_lo++;
|
seq = ssl->keys.dtls_prev_sequence_number_lo++;
|
||||||
if (seq > ssl->keys.dtls_prev_sequence_number_lo) {
|
if (seq > ssl->keys.dtls_prev_sequence_number_lo) {
|
||||||
/* handle rollover */
|
/* handle rollover */
|
||||||
ssl->keys.dtls_prev_sequence_number_hi++;
|
ssl->keys.dtls_prev_sequence_number_hi++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (verify == 1) {
|
else if (order == PEER_ORDER) {
|
||||||
seq = ssl->keys.peer_sequence_number_lo++;
|
seq = ssl->keys.peer_sequence_number_lo++;
|
||||||
if (seq > ssl->keys.peer_sequence_number_lo) {
|
if (seq > ssl->keys.peer_sequence_number_lo) {
|
||||||
/* handle rollover */
|
/* handle rollover */
|
||||||
@ -3990,21 +3990,21 @@ static INLINE void DtlsSEQIncrement(WOLFSSL* ssl, int verify)
|
|||||||
#endif /* WOLFSSL_DTLS */
|
#endif /* WOLFSSL_DTLS */
|
||||||
|
|
||||||
|
|
||||||
static INLINE void WriteSEQ(WOLFSSL* ssl, int verify, byte* out)
|
static INLINE void WriteSEQ(WOLFSSL* ssl, int verifyOrder, byte* out)
|
||||||
{
|
{
|
||||||
word32 seq[2] = {0, 0};
|
word32 seq[2] = {0, 0};
|
||||||
|
|
||||||
if (!ssl->options.dtls) {
|
if (!ssl->options.dtls) {
|
||||||
GetSEQIncrement(ssl, verify, seq);
|
GetSEQIncrement(ssl, verifyOrder, seq);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
#ifdef WOLFSSL_DTLS
|
#ifdef WOLFSSL_DTLS
|
||||||
DtlsGetSEQ(ssl, verify, seq);
|
DtlsGetSEQ(ssl, verifyOrder, seq);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
c32toa(seq[0], out);
|
c32toa(seq[0], out);
|
||||||
c32toa(seq[1], out+4);
|
c32toa(seq[1], out + OPAQUE32_LEN);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -4109,13 +4109,19 @@ int DtlsPoolSend(WOLFSSL* ssl)
|
|||||||
for (i = 0, buf = pool->buf; i < pool->used; i++, buf++) {
|
for (i = 0, buf = pool->buf; i < pool->used; i++, buf++) {
|
||||||
if (pool->epoch[i] == 0) {
|
if (pool->epoch[i] == 0) {
|
||||||
DtlsRecordLayerHeader* dtls;
|
DtlsRecordLayerHeader* dtls;
|
||||||
int epochZero;
|
int epochOrder;
|
||||||
|
|
||||||
dtls = (DtlsRecordLayerHeader*)buf->buffer;
|
dtls = (DtlsRecordLayerHeader*)buf->buffer;
|
||||||
epochZero = (ssl->keys.dtls_epoch == 0) ? 0 : -1;
|
/* If the stored record's epoch is 0, and the currently set
|
||||||
|
* epoch is 0, use the "current order" sequence number.
|
||||||
|
* If the stored record's epoch is 0 and the currently set
|
||||||
|
* epoch is not 0, the stored record is considered a "previous
|
||||||
|
* order" sequence number. */
|
||||||
|
epochOrder = (ssl->keys.dtls_epoch == 0) ?
|
||||||
|
CUR_ORDER : PREV_ORDER;
|
||||||
|
|
||||||
WriteSEQ(ssl, epochZero, dtls->sequence_number);
|
WriteSEQ(ssl, epochOrder, dtls->sequence_number);
|
||||||
DtlsSEQIncrement(ssl, epochZero);
|
DtlsSEQIncrement(ssl, epochOrder);
|
||||||
if ((ret = CheckAvailableSize(ssl, buf->length)) != 0)
|
if ((ret = CheckAvailableSize(ssl, buf->length)) != 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
@ -5172,11 +5178,11 @@ static int GetRecordHeader(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
|
|||||||
XMEMCPY(rh, input + *inOutIdx, ENUM_LEN + VERSION_SZ);
|
XMEMCPY(rh, input + *inOutIdx, ENUM_LEN + VERSION_SZ);
|
||||||
*inOutIdx += ENUM_LEN + VERSION_SZ;
|
*inOutIdx += ENUM_LEN + VERSION_SZ;
|
||||||
ato16(input + *inOutIdx, &ssl->keys.curEpoch);
|
ato16(input + *inOutIdx, &ssl->keys.curEpoch);
|
||||||
*inOutIdx += 2;
|
*inOutIdx += OPAQUE16_LEN;
|
||||||
ato16(input + *inOutIdx, &ssl->keys.curSeq_hi);
|
ato16(input + *inOutIdx, &ssl->keys.curSeq_hi);
|
||||||
*inOutIdx += 2;
|
*inOutIdx += OPAQUE16_LEN;
|
||||||
ato32(input + *inOutIdx, &ssl->keys.curSeq_lo);
|
ato32(input + *inOutIdx, &ssl->keys.curSeq_lo);
|
||||||
*inOutIdx += 4; /* advance past rest of seq */
|
*inOutIdx += OPAQUE32_LEN; /* advance past rest of seq */
|
||||||
ato16(input + *inOutIdx, size);
|
ato16(input + *inOutIdx, size);
|
||||||
*inOutIdx += LENGTH_SZ;
|
*inOutIdx += LENGTH_SZ;
|
||||||
#endif
|
#endif
|
||||||
@ -8085,18 +8091,18 @@ static int ChachaAEADEncrypt(WOLFSSL* ssl, byte* out, const byte* input,
|
|||||||
|
|
||||||
if (ssl->options.oldPoly != 0) {
|
if (ssl->options.oldPoly != 0) {
|
||||||
/* get nonce */
|
/* get nonce */
|
||||||
WriteSEQ(ssl, 0, nonce + CHACHA20_OLD_OFFSET);
|
WriteSEQ(ssl, CUR_ORDER, nonce + CHACHA20_OLD_OFFSET);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* opaque SEQ number stored for AD */
|
/* opaque SEQ number stored for AD */
|
||||||
WriteSEQ(ssl, 0, add);
|
WriteSEQ(ssl, CUR_ORDER, add);
|
||||||
|
|
||||||
/* Store the type, version. Unfortunately, they are in
|
/* Store the type, version. Unfortunately, they are in
|
||||||
* the input buffer ahead of the plaintext. */
|
* the input buffer ahead of the plaintext. */
|
||||||
#ifdef WOLFSSL_DTLS
|
#ifdef WOLFSSL_DTLS
|
||||||
if (ssl->options.dtls) {
|
if (ssl->options.dtls) {
|
||||||
additionalSrc -= DTLS_HANDSHAKE_EXTRA;
|
additionalSrc -= DTLS_HANDSHAKE_EXTRA;
|
||||||
DtlsSEQIncrement(ssl, 0);
|
DtlsSEQIncrement(ssl, CUR_ORDER);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -8229,11 +8235,11 @@ static int ChachaAEADDecrypt(WOLFSSL* ssl, byte* plain, const byte* input,
|
|||||||
|
|
||||||
if (ssl->options.oldPoly != 0) {
|
if (ssl->options.oldPoly != 0) {
|
||||||
/* get nonce */
|
/* get nonce */
|
||||||
WriteSEQ(ssl, 1, nonce + CHACHA20_OLD_OFFSET);
|
WriteSEQ(ssl, PEER_ORDER, nonce + CHACHA20_OLD_OFFSET);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* sequence number field is 64-bits */
|
/* sequence number field is 64-bits */
|
||||||
WriteSEQ(ssl, 1, add);
|
WriteSEQ(ssl, PEER_ORDER, add);
|
||||||
|
|
||||||
/* get AD info */
|
/* get AD info */
|
||||||
/* Store the type, version. */
|
/* Store the type, version. */
|
||||||
@ -8376,7 +8382,7 @@ static INLINE int Encrypt(WOLFSSL* ssl, byte* out, const byte* input, word16 sz)
|
|||||||
XMEMSET(additional, 0, AEAD_AUTH_DATA_SZ);
|
XMEMSET(additional, 0, AEAD_AUTH_DATA_SZ);
|
||||||
|
|
||||||
/* sequence number field is 64-bits */
|
/* sequence number field is 64-bits */
|
||||||
WriteSEQ(ssl, 0, additional);
|
WriteSEQ(ssl, CUR_ORDER, additional);
|
||||||
|
|
||||||
/* Store the type, version. Unfortunately, they are in
|
/* Store the type, version. Unfortunately, they are in
|
||||||
* the input buffer ahead of the plaintext. */
|
* the input buffer ahead of the plaintext. */
|
||||||
@ -8406,7 +8412,7 @@ static INLINE int Encrypt(WOLFSSL* ssl, byte* out, const byte* input, word16 sz)
|
|||||||
ForceZero(nonce, AESGCM_NONCE_SZ);
|
ForceZero(nonce, AESGCM_NONCE_SZ);
|
||||||
#ifdef WOLFSSL_DTLS
|
#ifdef WOLFSSL_DTLS
|
||||||
if (ssl->options.dtls)
|
if (ssl->options.dtls)
|
||||||
DtlsSEQIncrement(ssl, 0);
|
DtlsSEQIncrement(ssl, CUR_ORDER);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -8423,7 +8429,7 @@ static INLINE int Encrypt(WOLFSSL* ssl, byte* out, const byte* input, word16 sz)
|
|||||||
XMEMSET(additional, 0, AEAD_AUTH_DATA_SZ);
|
XMEMSET(additional, 0, AEAD_AUTH_DATA_SZ);
|
||||||
|
|
||||||
/* sequence number field is 64-bits */
|
/* sequence number field is 64-bits */
|
||||||
WriteSEQ(ssl, 0, additional);
|
WriteSEQ(ssl, CUR_ORDER, additional);
|
||||||
|
|
||||||
/* Store the type, version. Unfortunately, they are in
|
/* Store the type, version. Unfortunately, they are in
|
||||||
* the input buffer ahead of the plaintext. */
|
* the input buffer ahead of the plaintext. */
|
||||||
@ -8453,7 +8459,7 @@ static INLINE int Encrypt(WOLFSSL* ssl, byte* out, const byte* input, word16 sz)
|
|||||||
ForceZero(nonce, AESGCM_NONCE_SZ);
|
ForceZero(nonce, AESGCM_NONCE_SZ);
|
||||||
#ifdef WOLFSSL_DTLS
|
#ifdef WOLFSSL_DTLS
|
||||||
if (ssl->options.dtls)
|
if (ssl->options.dtls)
|
||||||
DtlsSEQIncrement(ssl, 0);
|
DtlsSEQIncrement(ssl, CUR_ORDER);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -8549,7 +8555,7 @@ static INLINE int Decrypt(WOLFSSL* ssl, byte* plain, const byte* input,
|
|||||||
XMEMSET(additional, 0, AEAD_AUTH_DATA_SZ);
|
XMEMSET(additional, 0, AEAD_AUTH_DATA_SZ);
|
||||||
|
|
||||||
/* sequence number field is 64-bits */
|
/* sequence number field is 64-bits */
|
||||||
WriteSEQ(ssl, 1, additional);
|
WriteSEQ(ssl, PEER_ORDER, additional);
|
||||||
|
|
||||||
additional[AEAD_TYPE_OFFSET] = ssl->curRL.type;
|
additional[AEAD_TYPE_OFFSET] = ssl->curRL.type;
|
||||||
additional[AEAD_VMAJ_OFFSET] = ssl->curRL.pvMajor;
|
additional[AEAD_VMAJ_OFFSET] = ssl->curRL.pvMajor;
|
||||||
@ -8586,7 +8592,7 @@ static INLINE int Decrypt(WOLFSSL* ssl, byte* plain, const byte* input,
|
|||||||
XMEMSET(additional, 0, AEAD_AUTH_DATA_SZ);
|
XMEMSET(additional, 0, AEAD_AUTH_DATA_SZ);
|
||||||
|
|
||||||
/* sequence number field is 64-bits */
|
/* sequence number field is 64-bits */
|
||||||
WriteSEQ(ssl, 1, additional);
|
WriteSEQ(ssl, PEER_ORDER, additional);
|
||||||
|
|
||||||
additional[AEAD_TYPE_OFFSET] = ssl->curRL.type;
|
additional[AEAD_TYPE_OFFSET] = ssl->curRL.type;
|
||||||
additional[AEAD_VMAJ_OFFSET] = ssl->curRL.pvMajor;
|
additional[AEAD_VMAJ_OFFSET] = ssl->curRL.pvMajor;
|
||||||
@ -10057,7 +10063,7 @@ int BuildMessage(WOLFSSL* ssl, byte* output, int outSz, const byte* input,
|
|||||||
type, 0);
|
type, 0);
|
||||||
#ifdef WOLFSSL_DTLS
|
#ifdef WOLFSSL_DTLS
|
||||||
if (ssl->options.dtls)
|
if (ssl->options.dtls)
|
||||||
DtlsSEQIncrement(ssl, 0);
|
DtlsSEQIncrement(ssl, CUR_ORDER);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
@ -10375,7 +10381,7 @@ int SendCertificate(WOLFSSL* ssl)
|
|||||||
else {
|
else {
|
||||||
#ifdef WOLFSSL_DTLS
|
#ifdef WOLFSSL_DTLS
|
||||||
if (ssl->options.dtls)
|
if (ssl->options.dtls)
|
||||||
DtlsSEQIncrement(ssl, 0);
|
DtlsSEQIncrement(ssl, CUR_ORDER);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -10480,7 +10486,7 @@ int SendCertificateRequest(WOLFSSL* ssl)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
if (ssl->options.dtls)
|
if (ssl->options.dtls)
|
||||||
DtlsSEQIncrement(ssl, 0);
|
DtlsSEQIncrement(ssl, CUR_ORDER);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ret = HashOutput(ssl, output, sendSz, 0);
|
ret = HashOutput(ssl, output, sendSz, 0);
|
||||||
@ -10575,7 +10581,7 @@ static int BuildCertificateStatus(WOLFSSL* ssl, byte type, buffer* status,
|
|||||||
else {
|
else {
|
||||||
#ifdef WOLFSSL_DTLS
|
#ifdef WOLFSSL_DTLS
|
||||||
if (ssl->options.dtls)
|
if (ssl->options.dtls)
|
||||||
DtlsSEQIncrement(ssl, 0);
|
DtlsSEQIncrement(ssl, CUR_ORDER);
|
||||||
#endif
|
#endif
|
||||||
ret = HashOutput(ssl, output, sendSz, 0);
|
ret = HashOutput(ssl, output, sendSz, 0);
|
||||||
}
|
}
|
||||||
@ -13012,7 +13018,7 @@ static void PickHashSigAlgo(WOLFSSL* ssl,
|
|||||||
} else {
|
} else {
|
||||||
#ifdef WOLFSSL_DTLS
|
#ifdef WOLFSSL_DTLS
|
||||||
if (ssl->options.dtls)
|
if (ssl->options.dtls)
|
||||||
DtlsSEQIncrement(ssl, 0);
|
DtlsSEQIncrement(ssl, CUR_ORDER);
|
||||||
#endif
|
#endif
|
||||||
ret = HashOutput(ssl, output, sendSz, 0);
|
ret = HashOutput(ssl, output, sendSz, 0);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
@ -15536,7 +15542,7 @@ int SendClientKeyExchange(WOLFSSL* ssl)
|
|||||||
else {
|
else {
|
||||||
#ifdef WOLFSSL_DTLS
|
#ifdef WOLFSSL_DTLS
|
||||||
if (ssl->options.dtls)
|
if (ssl->options.dtls)
|
||||||
DtlsSEQIncrement(ssl, 0);
|
DtlsSEQIncrement(ssl, CUR_ORDER);
|
||||||
#endif
|
#endif
|
||||||
ret = HashOutput(ssl, output, sendSz, 0);
|
ret = HashOutput(ssl, output, sendSz, 0);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
@ -16020,7 +16026,7 @@ int SendCertificateVerify(WOLFSSL* ssl)
|
|||||||
else {
|
else {
|
||||||
#ifdef WOLFSSL_DTLS
|
#ifdef WOLFSSL_DTLS
|
||||||
if (ssl->options.dtls)
|
if (ssl->options.dtls)
|
||||||
DtlsSEQIncrement(ssl, 0);
|
DtlsSEQIncrement(ssl, CUR_ORDER);
|
||||||
#endif
|
#endif
|
||||||
ret = HashOutput(ssl, output, sendSz, 0);
|
ret = HashOutput(ssl, output, sendSz, 0);
|
||||||
}
|
}
|
||||||
@ -16328,7 +16334,7 @@ int DoSessionTicket(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ssl->options.dtls) {
|
if (ssl->options.dtls) {
|
||||||
DtlsSEQIncrement(ssl, 0);
|
DtlsSEQIncrement(ssl, CUR_ORDER);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -17657,7 +17663,7 @@ int DoSessionTicket(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ssl->options.dtls)
|
if (ssl->options.dtls)
|
||||||
DtlsSEQIncrement(ssl, 0);
|
DtlsSEQIncrement(ssl, CUR_ORDER);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ret = HashOutput(ssl, output, sendSz, 0);
|
ret = HashOutput(ssl, output, sendSz, 0);
|
||||||
@ -18878,7 +18884,7 @@ int DoSessionTicket(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ssl->options.dtls)
|
if (ssl->options.dtls)
|
||||||
DtlsSEQIncrement(ssl, 0);
|
DtlsSEQIncrement(ssl, CUR_ORDER);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ret = HashOutput(ssl, output, sendSz, 0);
|
ret = HashOutput(ssl, output, sendSz, 0);
|
||||||
@ -19098,7 +19104,7 @@ int DoSessionTicket(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
|
|||||||
if ((ret = DtlsPoolSave(ssl, output, sendSz)) != 0)
|
if ((ret = DtlsPoolSave(ssl, output, sendSz)) != 0)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
DtlsSEQIncrement(ssl, 0);
|
DtlsSEQIncrement(ssl, CUR_ORDER);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
14
src/tls.c
14
src/tls.c
@ -664,15 +664,15 @@ static INLINE void GetSEQIncrement(WOLFSSL* ssl, int verify, word32 seq[2])
|
|||||||
|
|
||||||
|
|
||||||
#ifdef WOLFSSL_DTLS
|
#ifdef WOLFSSL_DTLS
|
||||||
static INLINE void DtlsGetSEQ(WOLFSSL* ssl, int verify, word32 seq[2])
|
static INLINE void DtlsGetSEQ(WOLFSSL* ssl, int order, word32 seq[2])
|
||||||
{
|
{
|
||||||
if (verify == -1) {
|
if (order == PREV_ORDER) {
|
||||||
/* Previous epoch case */
|
/* Previous epoch case */
|
||||||
seq[0] = ((ssl->keys.dtls_epoch - 1) << 16) |
|
seq[0] = ((ssl->keys.dtls_epoch - 1) << 16) |
|
||||||
(ssl->keys.dtls_prev_sequence_number_hi & 0xFFFF);
|
(ssl->keys.dtls_prev_sequence_number_hi & 0xFFFF);
|
||||||
seq[1] = ssl->keys.dtls_prev_sequence_number_lo;
|
seq[1] = ssl->keys.dtls_prev_sequence_number_lo;
|
||||||
}
|
}
|
||||||
else if (verify == 1) {
|
else if (order == PEER_ORDER) {
|
||||||
seq[0] = (ssl->keys.curEpoch << 16) |
|
seq[0] = (ssl->keys.curEpoch << 16) |
|
||||||
(ssl->keys.curSeq_hi & 0xFFFF);
|
(ssl->keys.curSeq_hi & 0xFFFF);
|
||||||
seq[1] = ssl->keys.curSeq_lo; /* explicit from peer */
|
seq[1] = ssl->keys.curSeq_lo; /* explicit from peer */
|
||||||
@ -686,21 +686,21 @@ static INLINE void DtlsGetSEQ(WOLFSSL* ssl, int verify, word32 seq[2])
|
|||||||
#endif /* WOLFSSL_DTLS */
|
#endif /* WOLFSSL_DTLS */
|
||||||
|
|
||||||
|
|
||||||
static INLINE void WriteSEQ(WOLFSSL* ssl, int verify, byte* out)
|
static INLINE void WriteSEQ(WOLFSSL* ssl, int verifyOrder, byte* out)
|
||||||
{
|
{
|
||||||
word32 seq[2] = {0, 0};
|
word32 seq[2] = {0, 0};
|
||||||
|
|
||||||
if (!ssl->options.dtls) {
|
if (!ssl->options.dtls) {
|
||||||
GetSEQIncrement(ssl, verify, seq);
|
GetSEQIncrement(ssl, verifyOrder, seq);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
#ifdef WOLFSSL_DTLS
|
#ifdef WOLFSSL_DTLS
|
||||||
DtlsGetSEQ(ssl, verify, seq);
|
DtlsGetSEQ(ssl, verifyOrder, seq);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
c32toa(seq[0], out);
|
c32toa(seq[0], out);
|
||||||
c32toa(seq[1], out+4);
|
c32toa(seq[1], out + OPAQUE32_LEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1062,7 +1062,11 @@ enum Misc {
|
|||||||
HASH_SIG_SIZE = 2, /* default SHA1 RSA */
|
HASH_SIG_SIZE = 2, /* default SHA1 RSA */
|
||||||
|
|
||||||
NO_COPY = 0, /* should we copy static buffer for write */
|
NO_COPY = 0, /* should we copy static buffer for write */
|
||||||
COPY = 1 /* should we copy static buffer for write */
|
COPY = 1, /* should we copy static buffer for write */
|
||||||
|
|
||||||
|
PREV_ORDER = -1, /* Sequence number is in previous epoch. */
|
||||||
|
PEER_ORDER = 1, /* Peer sequence number for verify. */
|
||||||
|
CUR_ORDER = 0 /* Current sequence number. */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user