From 0f93b86b619fcbbb3e52132d68dad43b7d7b60bd Mon Sep 17 00:00:00 2001 From: David Garske Date: Tue, 8 Mar 2016 08:45:30 -0800 Subject: [PATCH] Fixes for PK_CALLBACKS and sniffer after DerBuffer refactor #2. --- src/internal.c | 30 +++++++++++++++--------------- src/sniffer.c | 9 +++++---- src/ssl.c | 8 ++++---- 3 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/internal.c b/src/internal.c index eadc88134..793c9ecd2 100644 --- a/src/internal.c +++ b/src/internal.c @@ -13556,8 +13556,8 @@ static word32 QSH_KeyExchangeWrite(WOLFSSL* ssl, byte isServer) #ifdef HAVE_ECC ret = ssl->ctx->EccSignCb(ssl, digest, digestSz, encodedSig, &localSz, - ssl->buffers.key.buffer, - ssl->buffers.key.length, + ssl->buffers.key->buffer, + ssl->buffers.key->length, ssl->EccSignCtx); #endif /* HAVE_ECC */ #endif /*HAVE_PK_CALLBACKS */ @@ -13651,8 +13651,8 @@ static word32 QSH_KeyExchangeWrite(WOLFSSL* ssl, byte isServer) ret = ssl->ctx->RsaSignCb(ssl, signBuffer, signSz, verify + extraSz + VERIFY_HEADER, &ioLen, - ssl->buffers.key.buffer, - ssl->buffers.key.length, + ssl->buffers.key->buffer, + ssl->buffers.key->length, ssl->RsaSignCtx); #endif /* NO_RSA */ #endif /*HAVE_PK_CALLBACKS */ @@ -14923,8 +14923,8 @@ int DoSessionTicket(WOLFSSL* ssl, word32 ioLen = sigSz; ret = ssl->ctx->RsaSignCb(ssl, signBuffer, signSz, output + idx, &ioLen, - ssl->buffers.key.buffer, - ssl->buffers.key.length, + ssl->buffers.key->buffer, + ssl->buffers.key->length, ssl->RsaSignCtx); #endif /*HAVE_PK_CALLBACKS */ } @@ -15000,8 +15000,8 @@ int DoSessionTicket(WOLFSSL* ssl, ret = ssl->ctx->EccSignCb(ssl, digest, digestSz, output + LENGTH_SZ + idx, &sz, - ssl->buffers.key.buffer, - ssl->buffers.key.length, + ssl->buffers.key->buffer, + ssl->buffers.key->length, ssl->EccSignCtx); #endif } @@ -15581,8 +15581,8 @@ int DoSessionTicket(WOLFSSL* ssl, word32 ioLen = sigSz; ret = ssl->ctx->RsaSignCb(ssl, signBuffer, signSz, output + idx, &ioLen, - ssl->buffers.key.buffer, - ssl->buffers.key.length, + ssl->buffers.key->buffer, + ssl->buffers.key->length, ssl->RsaSignCtx); #endif } else if (ret == 0) { @@ -17021,8 +17021,8 @@ int DoSessionTicket(WOLFSSL* ssl, #ifdef HAVE_PK_CALLBACKS ret = ssl->ctx->RsaDecCb(ssl, input + *inOutIdx, length, &out, - ssl->buffers.key.buffer, - ssl->buffers.key.length, + ssl->buffers.key->buffer, + ssl->buffers.key->length, ssl->RsaDecCtx); #endif } @@ -17168,7 +17168,7 @@ int DoSessionTicket(WOLFSSL* ssl, word16 cipherLen; word16 plainLen = sizeof(ssl->arrays->preMasterSecret); - if (!ssl->buffers.key.buffer) { + if (!ssl->buffers.key || !ssl->buffers.key->buffer) { return NO_PRIVATE_KEY; } @@ -17188,8 +17188,8 @@ int DoSessionTicket(WOLFSSL* ssl, } if (NTRU_OK != ntru_crypto_ntru_decrypt( - (word16) ssl->buffers.key.length, - ssl->buffers.key.buffer, cipherLen, + (word16) ssl->buffers.key->length, + ssl->buffers.key->buffer, cipherLen, input + *inOutIdx, &plainLen, ssl->arrays->preMasterSecret)) { return NTRU_DECRYPT_ERROR; diff --git a/src/sniffer.c b/src/sniffer.c index 30e860c5c..9a680d4a9 100644 --- a/src/sniffer.c +++ b/src/sniffer.c @@ -1341,16 +1341,17 @@ static int ProcessClientKeyExchange(const byte* input, int* sslBytes, RsaKey key; int ret; - if (session->sslServer->buffers.key.buffer == NULL || - session->sslServer->buffers.key.length == 0) { + if (session->sslServer->buffers.key == NULL || + session->sslServer->buffers.key->buffer == NULL || + session->sslServer->buffers.key->length == 0) { SetError(RSA_KEY_MISSING_STR, error, session, FATAL_ERROR_STATE); return -1; } ret = wc_InitRsaKey(&key, 0); if (ret == 0) - ret = wc_RsaPrivateKeyDecode(session->sslServer->buffers.key.buffer, - &idx, &key, session->sslServer->buffers.key.length); + ret = wc_RsaPrivateKeyDecode(session->sslServer->buffers.key->buffer, + &idx, &key, session->sslServer->buffers.key->length); if (ret == 0) { int length = wc_RsaEncryptSize(&key); diff --git a/src/ssl.c b/src/ssl.c index 1f4aaca08..645f4880e 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -11476,10 +11476,10 @@ int wolfSSL_cmp_peer_cert_to_file(WOLFSSL* ssl, const char *fname) (XFREAD(myBuffer, sz, 1, file) > 0) && (PemToDer(myBuffer, sz, CERT_TYPE, &fileDer, ctx->heap, info, &eccKey) == 0) && - (fileDer.length != 0) && - (fileDer.length == peer_cert->derCert.length) && - (XMEMCMP(peer_cert->derCert.buffer, fileDer.buffer, - fileDer.length) == 0)) + (fileDer->length != 0) && + (fileDer->length == peer_cert->derCert->length) && + (XMEMCMP(peer_cert->derCert->buffer, fileDer->buffer, + fileDer->length) == 0)) { ret = 0; }