unsigned char iv[8];
unsigned char iv[EVP_MAX_IV_LENGTH];
void main_decrypt(void){	char buf[512];	char ebuf[512];	unsigned int buflen;        EVP_CIPHER_CTX ectx;        unsigned char iv[8];	unsigned char *encryptKey; 	unsigned int ekeylen; 	EVP_PKEY *privateKey;	memset(iv, '\0', sizeof(iv));	privateKey = ReadPrivateKey(PRIVFILE);	if (!privateKey)	{		fprintf(stderr, "Error: can't load private key");		exit(1);		}     	read(STDIN, &ekeylen, sizeof(ekeylen));	ekeylen = ntohl(ekeylen);	if (ekeylen != EVP_PKEY_size(privateKey))	{        	EVP_PKEY_free(privateKey);		fprintf(stderr, "keylength mismatch");		exit(1);		}	encryptKey = malloc(sizeof(char) * ekeylen);	if (!encryptKey)	{        	EVP_PKEY_free(privateKey);		perror("malloc");		exit(1);	}	read(STDIN, encryptKey, ekeylen);	read(STDIN, iv, sizeof(iv));	EVP_OpenInit(&ectx,		   EVP_des_ede3_cbc(), 		   encryptKey,		   ekeylen,		   iv,		   privateKey); 		while(1)	{		int readlen = read(STDIN, ebuf, sizeof(ebuf));		if (readlen <= 0)		{			if (readlen < 0)				perror("read");			break;		}		EVP_OpenUpdate(&ectx, buf, &buflen, ebuf, readlen);		write(STDOUT, buf, buflen);	}        EVP_OpenFinal(&ectx, buf, &buflen);	write(STDOUT, buf, buflen);        EVP_PKEY_free(privateKey);	free(encryptKey);}