if (!info->hash) return SECFailure;
md2_multi_test(blapitestInfo *info){	SECStatus rv = SECSuccess;	MD2Context *md2cx;	unsigned int len;	MD2Context *foomd2cx;	unsigned char *foomd2;	int i;	if (info->in.len == 0) {		rv = get_and_write_random_bytes(&info->in, info->bufsize, "tmp.pt");		CHECKERROR(rv, __LINE__);	}	md2cx = MD2_NewContext();	if (!md2cx) {		PR_fprintf(PR_STDERR, 		   "%s:  Failed to create hash context!\n", progName);		return SECFailure;	}	info->out.len = MD2_LENGTH;	info->out.data = (unsigned char *)PORT_ZAlloc(info->out.len);	MD2_Begin(md2cx);	for (i=0; i<info->bufsize/8; i++) {		MD2_Update(md2cx, &info->in.data[i*8], 8);		len = MD2_FlattenSize(md2cx);		foomd2 = PORT_Alloc(len);		MD2_Flatten(md2cx, foomd2);		foomd2cx = MD2_Resurrect(foomd2, NULL);		rv = PORT_Memcmp(foomd2cx, md2cx, len);		if (rv != SECSuccess)			PR_fprintf(PR_STDERR, "%s:  MD2_Resurrect failed!\n", progName);		MD2_DestroyContext(foomd2cx, PR_TRUE);		PORT_Free(foomd2);	}	MD2_End(md2cx, info->out.data, &len, MD2_LENGTH);	if (len != MD2_LENGTH)		PR_fprintf(PR_STDERR, "%s: Bad hash size %d.\n", progName, len);	MD2_DestroyContext(md2cx, PR_TRUE);	return rv;}