mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2026-07-06 13:30:50 +02:00
cast on return and move location of function declaration
This commit is contained in:
@@ -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
@@ -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);
|
||||
|
||||
|
||||
@@ -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*,
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user