void feeFEEDExpFree(feeFEEDExp feed)
{
	feedInst *finst = (feedInst *) feed;

	free_key(finst->plus);
	free_key(finst->minus);
	freeGiant(finst->xc);
	clearGiant(finst->xp); freeGiant(finst->xp);
	clearGiant(finst->xq); freeGiant(finst->xq);
	freeGiant(finst->xm);
	clearGiant(finst->xaux); freeGiant(finst->xaux);
	if(finst->gPriv) {
		clearGiant(finst->gPriv);
		freeGiant(finst->gPriv);
	}
	if(finst->rand) {
		feeRandFree(finst->rand);
	}
	if(finst->randData) {
		ffree(finst->randData);
	}
	if(finst->cp) {
		freeCurveParams(finst->cp);
	}
	ffree(finst);
}
void freePointProj(pointProj pt)
{
	clearGiant(pt->x); freeGiant(pt->x);
	clearGiant(pt->y); freeGiant(pt->y);
	clearGiant(pt->z); freeGiant(pt->z);
	ffree(pt);
}
void feeSigFree(feeSig sig)
{
	sigInst *sinst = (sigInst*) sig;

	if(sinst->PmX) {
		clearGiant(sinst->PmX);
		freeGiant(sinst->PmX);
	}
	#if 	CRYPTKIT_ELL_PROJ_ENABLE
	if(sinst->PmY) {
		clearGiant(sinst->PmY);
		freeGiant(sinst->PmY);
	}
	#endif	/* CRYPTKIT_ELL_PROJ_ENABLE */
	if(sinst->u) {
		clearGiant(sinst->u);
		freeGiant(sinst->u);
	}
	if(sinst->randGiant) {
		clearGiant(sinst->randGiant);
		freeGiant(sinst->randGiant);
	}
	ffree(sinst);
}
static void pubKeyInstFree(pubKeyInst *pkinst)
{
	if(pkinst->minus) {
		free_key(pkinst->minus);
	}
	if(pkinst->plus) {
		free_key(pkinst->plus);
	}
	if(pkinst->cp) {
		freeCurveParams(pkinst->cp);
	}
	if(pkinst->privGiant) {
		/*
		 * Zero out the private data...
		 */
		clearGiant(pkinst->privGiant);
		freeGiant(pkinst->privGiant);
	}
	ffree(pkinst);
}