cast on return and move location of function declaration

This commit is contained in:
Jacob Barthelmeh
2019-07-03 15:20:08 -06:00
parent 02871d5ed4
commit ab9d89cb31
4 changed files with 35 additions and 20 deletions
+14 -7
View File
@@ -33113,11 +33113,9 @@ WOLFSSL_DH *wolfSSL_PEM_read_bio_DHparams(WOLFSSL_BIO *bio, WOLFSSL_DH **x,
if (x != NULL)
localDh = *x;
if (localDh == NULL) {
localDh = (WOLFSSL_DH*)XMALLOC(sizeof(WOLFSSL_DH), NULL,
DYNAMIC_TYPE_OPENSSL);
localDh = wolfSSL_DH_new();
if (localDh == NULL)
goto end;
XMEMSET(localDh, 0, sizeof(WOLFSSL_DH));
}
/* Load data in manually */
@@ -33155,6 +33153,14 @@ WOLFSSL_DH *wolfSSL_PEM_read_bio_DHparams(WOLFSSL_BIO *bio, WOLFSSL_DH **x,
localDh = NULL;
}
if (localDh != NULL && localDh->inSet == 0) {
if (SetDhInternal(localDh) != WOLFSSL_SUCCESS) {
WOLFSSL_MSG("Unable to set internal DH structure");
wolfSSL_DH_free(localDh);
localDh = NULL;
}
}
end:
if (memAlloced) XFREE(mem, NULL, DYNAMIC_TYPE_PEM);
if (der != NULL) FreeDer(&der);
@@ -33185,11 +33191,12 @@ int wolfSSL_PEM_write_DHparams(XFILE fp, WOLFSSL_DH* dh)
return WOLFSSL_FAILURE;
}
#if 0
if (dh->inSet != 1) {
ret = SetDhInternal(dh);
if (dh->inSet == 0) {
if (SetDhInternal(dh) != WOLFSSL_SUCCESS) {
WOLFSSL_MSG("Unable to set internal DH structure");
return WOLFSSL_FAILURE;
}
}
#endif
key = (DhKey*)dh->internal;
ret = wc_DhParamsToDer(key, NULL, &derSz);
if (ret != LENGTH_ONLY_E) {
+7 -10
View File
@@ -21912,11 +21912,10 @@ static void test_wolfSSL_PEM_write_DHparams(void)
{
#if defined(OPENSSL_EXTRA) && !defined(NO_DH) && !defined(NO_FILESYSTEM)
DH* dh;
BIO* bio;
XFILE fp;
byte pem[2048];
int pemSz;
DerBuffer *der = NULL;
word32 idx = 0;
const char expected[] =
"-----BEGIN DH PARAMETERS-----\n\
MIIBCAKCAQEAsKEIBpwIE7pZBjy8MNX1AMFPRKfW70rGJScc6NKWUwpckd2iwpSE\n\
@@ -21929,15 +21928,13 @@ tgZl96bcAGdru8OpQYP7x/rI4h5+rwA/kwIBAg==\n\
printf(testingFmt, "wolfSSL_PEM_write_DHparams()");
AssertNotNull(fp = XFOPEN(dhParamFile, "rb"));
AssertIntGT((pemSz = XFREAD(pem, 1, sizeof(pem), fp)), 0);
AssertIntGT((pemSz = (int)XFREAD(pem, 1, sizeof(pem), fp)), 0);
XFCLOSE(fp);
wc_PemToDer(pem, pemSz, DH_PARAM_TYPE, &der, NULL, NULL, NULL);
AssertNotNull(dh = DH_new());
printf("derSz = %d idx = %d\n", der->length, idx);
AssertIntEQ(wc_DhKeyDecode(der->buffer, &idx, (DhKey*)dh->internal,
der->length), 0);
wc_FreeDer(&der);
AssertNotNull(bio = BIO_new(BIO_s_mem()));
AssertIntEQ(BIO_write(bio, pem, pemSz), pemSz);
AssertNotNull(dh = PEM_read_bio_DHparams(bio, NULL, NULL, NULL));
BIO_free(bio);
AssertNotNull(fp = XFOPEN("./test-write-dhparams.pem", "wb"));
AssertIntEQ(PEM_write_DHparams(fp, dh), WOLFSSL_SUCCESS);
@@ -21948,7 +21945,7 @@ tgZl96bcAGdru8OpQYP7x/rI4h5+rwA/kwIBAg==\n\
/* check results */
XMEMSET(pem, 0, sizeof(pem));
AssertNotNull(fp = XFOPEN("./test-write-dhparams.pem", "rb"));
AssertIntGT((pemSz = XFREAD(pem, 1, sizeof(pem), fp)), 0);
AssertIntGT((pemSz = (int)XFREAD(pem, 1, sizeof(pem), fp)), 0);
AssertIntEQ(XMEMCMP(pem, expected, pemSz), 0);
XFCLOSE(fp);
+8
View File
@@ -45,6 +45,10 @@
typedef struct RsaKey RsaKey;
#define WC_RSAKEY_TYPE_DEFINED
#endif
#ifndef WC_DHKEY_TYPE_DEFINED
typedef struct DhKey DhKey;
#define WC_DHKEY_TYPE_DEFINED
#endif
#ifndef WC_RNG_TYPE_DEFINED
typedef struct WC_RNG WC_RNG;
#define WC_RNG_TYPE_DEFINED
@@ -480,6 +484,10 @@ WOLFSSL_API void wc_FreeDer(DerBuffer** pDer);
word32 inLen, int with_AlgCurve);
#endif
#ifndef NO_DH
WOLFSSL_API int wc_DhParamsToDer(DhKey* key, byte* out, word32* outSz);
#endif
#ifdef HAVE_ED25519
/* private key helpers */
WOLFSSL_API int wc_Ed25519PrivateKeyDecode(const byte*, word32*,
+6 -3
View File
@@ -57,13 +57,17 @@ typedef struct DhParams {
} DhParams;
/* Diffie-Hellman Key */
typedef struct DhKey {
struct DhKey {
mp_int p, g, q; /* group parameters */
void* heap;
#ifdef WOLFSSL_ASYNC_CRYPT
WC_ASYNC_DEV asyncDev;
#endif
} DhKey;
};
#ifndef WC_DHKEY_TYPE_DEFINED
typedef struct DhKey DhKey;
#define WC_DHKEY_TYPE_DEFINED
#endif
#ifdef HAVE_FFDHE_2048
@@ -116,7 +120,6 @@ WOLFSSL_API int wc_DhCheckKeyPair(DhKey* key, const byte* pub, word32 pubSz,
WOLFSSL_API int wc_DhGenerateParams(WC_RNG *rng, int modSz, DhKey *dh);
WOLFSSL_API int wc_DhExportParamsRaw(DhKey* dh, byte* p, word32* pSz,
byte* q, word32* qSz, byte* g, word32* gSz);
WOLFSSL_API int wc_DhParamsToDer(DhKey* key, byte* out, word32* outSz);
#ifdef __cplusplus