Skip to content

Commit 1d1d8ff

Browse files
committed
Fix OCSP tests to use Alloc/FreeDer
1 parent e58b0d6 commit 1d1d8ff

3 files changed

Lines changed: 23 additions & 13 deletions

File tree

examples/ocsp_responder/ocsp_responder.c

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -199,23 +199,29 @@ static int ConvertPemToDer(const byte* pem, word32 pemSz,
199199
byte** der, word32* derSz, int type)
200200
{
201201
int ret;
202-
DerBuffer* derBuf = NULL;
203202

204-
ret = wc_PemToDer(pem, pemSz, type, &derBuf, NULL, NULL, NULL);
205-
if (ret != 0 || derBuf == NULL) {
206-
return ret;
207-
}
208-
209-
*der = (byte*)XMALLOC(derBuf->length, NULL, DYNAMIC_TYPE_TMP_BUFFER);
203+
/* Allocate buffer large enough for DER (always smaller than PEM) */
204+
*der = (byte*)XMALLOC(pemSz, NULL, DYNAMIC_TYPE_TMP_BUFFER);
210205
if (*der == NULL) {
211-
wc_FreeDer(&derBuf);
212206
return MEMORY_E;
213207
}
214208

215-
XMEMCPY(*der, derBuf->buffer, derBuf->length);
216-
*derSz = derBuf->length;
217-
wc_FreeDer(&derBuf);
209+
if (type == PRIVATEKEY_TYPE) {
210+
ret = wc_KeyPemToDer(pem, (int)pemSz, *der, (int)pemSz, NULL);
211+
}
212+
else {
213+
ret = wc_CertPemToDer(pem, (int)pemSz, *der, (int)pemSz, type);
214+
}
215+
216+
if (ret <= 0) {
217+
XFREE(*der, NULL, DYNAMIC_TYPE_TMP_BUFFER);
218+
*der = NULL;
219+
if (ret == 0)
220+
ret = BAD_FUNC_ARG;
221+
return ret;
222+
}
218223

224+
*derSz = (word32)ret;
219225
return 0;
220226
}
221227

wolfcrypt/src/asn.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27240,6 +27240,7 @@ void FreeDer(DerBuffer** pDer)
2724027240
}
2724127241
}
2724227242

27243+
#ifndef WOLFSSL_API_PREFIX_MAP
2724327244
int wc_AllocDer(DerBuffer** pDer, word32 length, int type, void* heap)
2724427245
{
2724527246
return AllocDer(pDer, length, type, heap);
@@ -27248,6 +27249,7 @@ void wc_FreeDer(DerBuffer** pDer)
2724827249
{
2724927250
FreeDer(pDer);
2725027251
}
27252+
#endif
2725127253

2725227254

2725327255
#if defined(WOLFSSL_PEM_TO_DER) || defined(WOLFSSL_DER_TO_PEM)

wolfssl/wolfcrypt/asn.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2257,6 +2257,8 @@ typedef enum MimeStatus
22572257
#define FillSigner wc_FillSigner
22582258
#define MakeSigner wc_MakeSigner
22592259
#define FreeSigner wc_FreeSigner
2260+
#define AllocDer wc_AllocDer
2261+
#define FreeDer wc_FreeDer
22602262
#endif /* WOLFSSL_API_PREFIX_MAP */
22612263

22622264
WOLFSSL_LOCAL int HashIdAlg(word32 oidSum);
@@ -2611,11 +2613,11 @@ WOLFSSL_LOCAL int wc_EncryptedInfoParse(EncryptedInfo* info,
26112613
WOLFSSL_LOCAL int PemToDer(const unsigned char* buff, long longSz, int type,
26122614
DerBuffer** pDer, void* heap, EncryptedInfo* info,
26132615
int* keyFormat);
2614-
WOLFSSL_TEST_VIS int AllocDer(DerBuffer** der, word32 length, int type,
2616+
WOLFSSL_API int AllocDer(DerBuffer** der, word32 length, int type,
26152617
void* heap);
26162618
WOLFSSL_LOCAL int AllocCopyDer(DerBuffer** der, const unsigned char* buff,
26172619
word32 length, int type, void* heap);
2618-
WOLFSSL_TEST_VIS void FreeDer(DerBuffer** der);
2620+
WOLFSSL_API void FreeDer(DerBuffer** der);
26192621

26202622
#ifdef WOLFSSL_ASN_PARSE_KEYUSAGE
26212623
WOLFSSL_LOCAL int ParseKeyUsageStr(const char* value, word16* keyUsage,

0 commit comments

Comments
 (0)