i2d_of_void *i2d; d2i_of_void *d2i; void *(*create)(void); void (*destroy)(void *); } ASN1_METHOD;
int type; union	{ char *ptr; ASN1_BOOLEAN		boolean; ASN1_STRING *		asn1_string; ASN1_OBJECT *		object; ASN1_INTEGER *		integer; ASN1_ENUMERATED *	enumerated; ASN1_BIT_STRING *	bit_string; ASN1_OCTET_STRING *	octet_string; ASN1_PRINTABLESTRING *	printablestring; ASN1_T61STRING *	t61string; ASN1_IA5STRING *	ia5string; ASN1_GENERALSTRING *	generalstring; ASN1_BMPSTRING *	bmpstring; ASN1_UNIVERSALSTRING *	universalstring; ASN1_UTCTIME *		utctime; ASN1_GENERALIZEDTIME *	generalizedtime; ASN1_VISIBLESTRING *	visiblestring; ASN1_UTF8STRING *	utf8string;  ASN1_STRING *		set; ASN1_STRING *		sequence; } value; } ASN1_TYPE;
DECLARE_STACK_OF(ASN1_TYPE)DECLARE_ASN1_SET_OF(ASN1_TYPE)typedef struct asn1_method_st	{	i2d_of_void *i2d;	d2i_of_void *d2i;	void *(*create)(void);	void (*destroy)(void *);	} ASN1_METHOD;