PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, EVP_CIPHER *cipher,
								int flags)
{
	PKCS7 *p7;
	BIO *p7bio = NULL;
	int i;
	X509 *x509;
	if(!(p7 = PKCS7_new())) {
		PKCS7err(PKCS7_F_PKCS7_ENCRYPT,ERR_R_MALLOC_FAILURE);
		return NULL;
	}
	PKCS7_set_type(p7, NID_pkcs7_enveloped);
	if(!PKCS7_set_cipher(p7, cipher)) {
		PKCS7err(PKCS7_F_PKCS7_ENCRYPT,PKCS7_R_ERROR_SETTING_CIPHER);
		goto err;
	}
	for(i = 0; i < sk_X509_num(certs); i++) {
		x509 = sk_X509_value(certs, i);
		if(!PKCS7_add_recipient(p7, x509)) {
			PKCS7err(PKCS7_F_PKCS7_ENCRYPT,
					PKCS7_R_ERROR_ADDING_RECIPIENT);
			goto err;
		}
	}
	if(!(p7bio = PKCS7_dataInit(p7, NULL))) {
		PKCS7err(PKCS7_F_PKCS7_ENCRYPT,ERR_R_MALLOC_FAILURE);
		goto err;
	}
	SMIME_crlf_copy(in, p7bio, flags);
	BIO_flush(p7bio);
        if (!PKCS7_dataFinal(p7,p7bio)) {
		PKCS7err(PKCS7_F_PKCS7_ENCRYPT,PKCS7_R_PKCS7_DATAFINAL_ERROR);
		goto err;
	}
        BIO_free_all(p7bio);
	return p7;
	err:
	BIO_free(p7bio);
	PKCS7_free(p7);
	return NULL;
}
['PKCS7 *PKCS7_encrypt(STACK_OF(X509) *certs, BIO *in, EVP_CIPHER *cipher,\n\t\t\t\t\t\t\t\tint flags)\n{\n\tPKCS7 *p7;\n\tBIO *p7bio = NULL;\n\tint i;\n\tX509 *x509;\n\tif(!(p7 = PKCS7_new())) {\n\t\tPKCS7err(PKCS7_F_PKCS7_ENCRYPT,ERR_R_MALLOC_FAILURE);\n\t\treturn NULL;\n\t}\n\tPKCS7_set_type(p7, NID_pkcs7_enveloped);\n\tif(!PKCS7_set_cipher(p7, cipher)) {\n\t\tPKCS7err(PKCS7_F_PKCS7_ENCRYPT,PKCS7_R_ERROR_SETTING_CIPHER);\n\t\tgoto err;\n\t}\n\tfor(i = 0; i < sk_X509_num(certs); i++) {\n\t\tx509 = sk_X509_value(certs, i);\n\t\tif(!PKCS7_add_recipient(p7, x509)) {\n\t\t\tPKCS7err(PKCS7_F_PKCS7_ENCRYPT,\n\t\t\t\t\tPKCS7_R_ERROR_ADDING_RECIPIENT);\n\t\t\tgoto err;\n\t\t}\n\t}\n\tif(!(p7bio = PKCS7_dataInit(p7, NULL))) {\n\t\tPKCS7err(PKCS7_F_PKCS7_ENCRYPT,ERR_R_MALLOC_FAILURE);\n\t\tgoto err;\n\t}\n\tSMIME_crlf_copy(in, p7bio, flags);\n\tBIO_flush(p7bio);\n        if (!PKCS7_dataFinal(p7,p7bio)) {\n\t\tPKCS7err(PKCS7_F_PKCS7_ENCRYPT,PKCS7_R_PKCS7_DATAFINAL_ERROR);\n\t\tgoto err;\n\t}\n        BIO_free_all(p7bio);\n\treturn p7;\n\terr:\n\tBIO_free(p7bio);\n\tPKCS7_free(p7);\n\treturn NULL;\n}', 'int PKCS7_set_type(PKCS7 *p7, int type)\n\t{\n\tASN1_OBJECT *obj;\n\tPKCS7_content_free(p7);\n\tobj=OBJ_nid2obj(type);\n\tswitch (type)\n\t\t{\n\tcase NID_pkcs7_signed:\n\t\tp7->type=obj;\n\t\tif ((p7->d.sign=PKCS7_SIGNED_new()) == NULL)\n\t\t\tgoto err;\n\t\tASN1_INTEGER_set(p7->d.sign->version,1);\n\t\tbreak;\n\tcase NID_pkcs7_data:\n\t\tp7->type=obj;\n\t\tif ((p7->d.data=M_ASN1_OCTET_STRING_new()) == NULL)\n\t\t\tgoto err;\n\t\tbreak;\n\tcase NID_pkcs7_signedAndEnveloped:\n\t\tp7->type=obj;\n\t\tif ((p7->d.signed_and_enveloped=PKCS7_SIGN_ENVELOPE_new())\n\t\t\t== NULL) goto err;\n\t\tASN1_INTEGER_set(p7->d.signed_and_enveloped->version,1);\n\t\tbreak;\n\tcase NID_pkcs7_enveloped:\n\t\tp7->type=obj;\n\t\tif ((p7->d.enveloped=PKCS7_ENVELOPE_new())\n\t\t\t== NULL) goto err;\n\t\tASN1_INTEGER_set(p7->d.enveloped->version,0);\n\t\tbreak;\n\tcase NID_pkcs7_encrypted:\n\t\tp7->type=obj;\n\t\tif ((p7->d.encrypted=PKCS7_ENCRYPT_new())\n\t\t\t== NULL) goto err;\n\t\tASN1_INTEGER_set(p7->d.encrypted->version,0);\n\t\tbreak;\n\tcase NID_pkcs7_digest:\n\tdefault:\n\t\tPKCS7err(PKCS7_F_PKCS7_SET_TYPE,PKCS7_R_UNSUPPORTED_CONTENT_TYPE);\n\t\tgoto err;\n\t\t}\n\treturn(1);\nerr:\n\treturn(0);\n\t}', 'ASN1_OBJECT *OBJ_nid2obj(int n)\n\t{\n\tADDED_OBJ ad,*adp;\n\tASN1_OBJECT ob;\n\tif ((n >= 0) && (n < NUM_NID))\n\t\t{\n\t\tif ((n != NID_undef) && (nid_objs[n].nid == NID_undef))\n\t\t\t{\n\t\t\tOBJerr(OBJ_F_OBJ_NID2OBJ,OBJ_R_UNKNOWN_NID);\n\t\t\treturn(NULL);\n\t\t\t}\n\t\treturn((ASN1_OBJECT *)&(nid_objs[n]));\n\t\t}\n\telse if (added == NULL)\n\t\treturn(NULL);\n\telse\n\t\t{\n\t\tad.type=ADDED_NID;\n\t\tad.obj= &ob;\n\t\tob.nid=n;\n\t\tadp=(ADDED_OBJ *)lh_retrieve(added,&ad);\n\t\tif (adp != NULL)\n\t\t\treturn(adp->obj);\n\t\telse\n\t\t\t{\n\t\t\tOBJerr(OBJ_F_OBJ_NID2OBJ,OBJ_R_UNKNOWN_NID);\n\t\t\treturn(NULL);\n\t\t\t}\n\t\t}\n\t}', 'void ERR_put_error(int lib, int func, int reason, const char *file,\n\t     int line)\n\t{\n\tERR_STATE *es;\n#ifdef _OSD_POSIX\n\tif (strncmp(file,"*POSIX(", sizeof("*POSIX(")-1) == 0) {\n\t\tchar *end;\n\t\tfile += sizeof("*POSIX(")-1;\n\t\tend = &file[strlen(file)-1];\n\t\tif (*end == \')\')\n\t\t\t*end = \'\\0\';\n\t\tif ((end = strrchr(file, \'/\')) != NULL)\n\t\t\tfile = &end[1];\n\t}\n#endif\n\tes=ERR_get_state();\n\tes->top=(es->top+1)%ERR_NUM_ERRORS;\n\tif (es->top == es->bottom)\n\t\tes->bottom=(es->bottom+1)%ERR_NUM_ERRORS;\n\tes->err_buffer[es->top]=ERR_PACK(lib,func,reason);\n\tes->err_file[es->top]=file;\n\tes->err_line[es->top]=line;\n\terr_clear_data(es,es->top);\n\t}', 'int PKCS7_set_cipher(PKCS7 *p7, const EVP_CIPHER *cipher)\n\t{\n\tint i;\n\tASN1_OBJECT *objtmp;\n\tPKCS7_ENC_CONTENT *ec;\n\ti=OBJ_obj2nid(p7->type);\n\tswitch (i)\n\t\t{\n\tcase NID_pkcs7_signedAndEnveloped:\n\t\tec=p7->d.signed_and_enveloped->enc_data;\n\t\tbreak;\n\tcase NID_pkcs7_enveloped:\n\t\tec=p7->d.enveloped->enc_data;\n\t\tbreak;\n\tdefault:\n\t\tPKCS7err(PKCS7_F_PKCS7_SET_CIPHER,PKCS7_R_WRONG_CONTENT_TYPE);\n\t\treturn(0);\n\t\t}\n\ti = EVP_CIPHER_type(cipher);\n\tif(i == NID_undef) {\n\t\tPKCS7err(PKCS7_F_PKCS7_SET_CIPHER,PKCS7_R_CIPHER_HAS_NO_OBJECT_IDENTIFIER);\n\t\treturn(0);\n\t}\n\tobjtmp = OBJ_nid2obj(i);\n\tec->cipher = cipher;\n\treturn 1;\n\t}', 'int OBJ_obj2nid(ASN1_OBJECT *a)\n\t{\n\tASN1_OBJECT **op;\n\tADDED_OBJ ad,*adp;\n\tif (a == NULL)\n\t\treturn(NID_undef);\n\tif (a->nid != 0)\n\t\treturn(a->nid);\n\tif (added != NULL)\n\t\t{\n\t\tad.type=ADDED_DATA;\n\t\tad.obj=a;\n\t\tadp=(ADDED_OBJ *)lh_retrieve(added,&ad);\n\t\tif (adp != NULL) return (adp->obj->nid);\n\t\t}\n\top=(ASN1_OBJECT **)OBJ_bsearch((char *)&a,(char *)obj_objs,NUM_OBJ,\n\t\tsizeof(ASN1_OBJECT *),obj_cmp);\n\tif (op == NULL)\n\t\treturn(NID_undef);\n\treturn((*op)->nid);\n\t}']