prf_cx->cxIsFIPS  = (key->slot->slotID == FIPS_SLOT_ID);
pk11_TLSPRFInit(PK11SessionContext *context, 		  PK11Object *        key, 		  CK_KEY_TYPE         key_type){    PK11Attribute * keyVal;    TLSPRFContext * prf_cx;    CK_RV           crv = CKR_HOST_MEMORY;    PRUint32        keySize;    PRUint32        blockSize;    if (key_type != CKK_GENERIC_SECRET)    	return CKR_KEY_TYPE_INCONSISTENT; /* CKR_KEY_FUNCTION_NOT_PERMITTED */    context->multi = PR_TRUE;    keyVal = pk11_FindAttribute(key, CKA_VALUE);    keySize = (!keyVal) ? 0 : keyVal->attrib.ulValueLen;    blockSize = keySize + sizeof(TLSPRFContext);    prf_cx = (TLSPRFContext *)PORT_Alloc(blockSize);    if (!prf_cx)     	goto done;    prf_cx->cxSize    = blockSize;    prf_cx->cxKeyLen  = keySize;    prf_cx->cxDataLen = 0;    prf_cx->cxRv        = SECSuccess;    if (keySize)	PORT_Memcpy(prf_cx->cxBuf, keyVal->attrib.pValue, keySize);    context->hashInfo    = (void *) prf_cx;    context->cipherInfo  = (void *) prf_cx;    context->hashUpdate  = (PK11Hash)    pk11_TLSPRFHashUpdate;    context->end         = (PK11End)     pk11_TLSPRFEnd;    context->update      = (PK11Cipher)  pk11_TLSPRFUpdate;    context->verify      = (PK11Verify)  pk11_TLSPRFVerify;    context->destroy     = (PK11Destroy) pk11_Null;    context->hashdestroy = (PK11Destroy) pk11_TLSPRFHashDestroy;    crv = CKR_OK;done:    if (keyVal) 	pk11_FreeAttribute(keyVal);    return crv;}