@@ -295,36 +295,28 @@ int wolfssl_priv_der_blind(WC_RNG* rng, DerBuffer* key, DerBuffer** mask)
295295
296296void wolfssl_priv_der_blind_toggle(DerBuffer* key, const DerBuffer* mask)
297297{
298- if (key != NULL) {
298+ if (( key != NULL) && (mask != NULL) ) {
299299 xorbuf(key->buffer, mask->buffer, mask->length);
300300 }
301301}
302302
303303DerBuffer *wolfssl_priv_der_unblind(const DerBuffer* key, const DerBuffer* mask)
304304{
305305 DerBuffer *ret;
306- if (key == NULL)
306+ if (( key == NULL) || (mask == NULL) )
307307 return NULL;
308308 if (mask->length > key->length)
309309 return NULL;
310- ret = (DerBuffer *)XMALLOC(sizeof(*key) + key->length, key->heap,
311- DYNAMIC_TYPE_TMP_BUFFER);
312- if (ret == NULL)
310+ if (AllocDer(&ret, key->length, key->type, key->heap) != 0)
313311 return NULL;
314- XMEMCPY(ret, key, sizeof(*key));
315- ret->buffer = (byte *)ret + sizeof(*key);
316312 xorbufout(ret->buffer, key->buffer, mask->buffer, mask->length);
317313 return ret;
318314}
319315
320316void wolfssl_priv_der_unblind_free(DerBuffer* key)
321317{
322- if (key != NULL) {
323- void *heap = key->heap;
324- ForceZero(key->buffer, key->length);
325- ForceZero(key, sizeof(*key));
326- XFREE(key, heap, DYNAMIC_TYPE_TMP_BUFFER);
327- }
318+ if (key != NULL)
319+ FreeDer(&key);
328320}
329321
330322#endif /* !NO_CERT && WOLFSSL_BLIND_PRIVATE_KEY */
0 commit comments