cx->hashobj->update(cx->hash, cx->opad, sizeof(cx->opad));
cx->hashobj->update(cx->hash, cx->opad, cx->hashobj->blocklength);
HMAC_Finish(HMACContext *cx, unsigned char *result, unsigned int *result_len,	    unsigned int max_result_len){    if (max_result_len < cx->hashobj->length) {	PORT_SetError(SEC_ERROR_INVALID_ARGS);	return SECFailure;    }    cx->hashobj->end(cx->hash, result, result_len, max_result_len);    if (*result_len != cx->hashobj->length)	return SECFailure;    cx->hashobj->begin(cx->hash);    cx->hashobj->update(cx->hash, cx->opad, sizeof(cx->opad));    cx->hashobj->update(cx->hash, result, *result_len);    cx->hashobj->end(cx->hash, result, result_len, max_result_len);    return SECSuccess;}