/* If the key is too long, replace it by its hash digest. */
if(keylen > hashparams->maxkeylen) {
- hashparams->hinit(ctxt->hashctxt1);
+ if(hashparams->hinit(ctxt->hashctxt1))
+ return NULL;
hashparams->hupdate(ctxt->hashctxt1, key, keylen);
hkey = (unsigned char *) ctxt->hashctxt2 + hashparams->ctxtsize;
hashparams->hfinal(hkey, ctxt->hashctxt1);
}
/* Prime the two hash contexts with the modified key. */
- hashparams->hinit(ctxt->hashctxt1);
- hashparams->hinit(ctxt->hashctxt2);
+ if(hashparams->hinit(ctxt->hashctxt1) ||
+ hashparams->hinit(ctxt->hashctxt2))
+ return NULL;
for(i = 0; i < keylen; i++) {
b = (unsigned char)(*key ^ hmac_ipad);