EVP_MD_CTX_cleanup(&c);
int main(int argc, char *argv[])	{	int i,err=0;	unsigned char **P,**R;	static unsigned char buf[1000];	char *p,*r;	EVP_MD_CTX c;	unsigned char md[SHA_DIGEST_LENGTH];#ifdef CHARSET_EBCDIC	ebcdic2ascii(test[0], test[0], strlen(test[0]));	ebcdic2ascii(test[1], test[1], strlen(test[1]));#endif	EVP_MD_CTX_init(&c);	P=(unsigned char **)test;	R=(unsigned char **)ret;	i=1;	while (*P != NULL)		{		EVP_Digest(*P,(unsigned long)strlen((char *)*P),md,NULL,EVP_sha(), NULL);		p=pt(md);		if (strcmp(p,(char *)*R) != 0)			{			printf("error calculating SHA on '%s'\n",*P);			printf("got %s instead of %s\n",p,*R);			err++;			}		else			printf("test %d ok\n",i);		i++;		R++;		P++;		}	memset(buf,'a',1000);#ifdef CHARSET_EBCDIC	ebcdic2ascii(buf, buf, 1000);#endif /*CHARSET_EBCDIC*/	EVP_DigestInit_ex(&c,EVP_sha(), NULL);	for (i=0; i<1000; i++)		EVP_DigestUpdate(&c,buf,1000);	EVP_DigestFinal_ex(&c,md,NULL);	p=pt(md);	r=bigret;	if (strcmp(p,r) != 0)		{		printf("error calculating SHA on '%s'\n",p);		printf("got %s instead of %s\n",p,r);		err++;		}	else		printf("test 3 ok\n");#ifdef OPENSSL_SYS_NETWARE    if (err) printf("ERROR: %d\n", err);#endif	EXIT(err);	return(0);	}