int vlen;
int vlen = 0;
static int asn1_cb(const char *elem, int len, void *bitstr)	{	tag_exp_arg *arg = bitstr;	int i;	int utype;	int vlen;	const char *p, *vstart = NULL;	int tmp_tag, tmp_class;	for(i = 0, p = elem; i < len; p++, i++)		{		/* Look for the ':' in name value pairs */		if (*p == ':')			{			vstart = p + 1;			vlen = len - (vstart - elem);			len = p - elem;			break;			}		}	utype = asn1_str2tag(elem, len);	if (utype == -1)		{		ASN1err(ASN1_F_ASN1_CB, ASN1_R_UNKNOWN_TAG);		ERR_add_error_data(2, "tag=", elem);		return -1;		}	/* If this is not a modifier mark end of string and exit */	if (!(utype & ASN1_GEN_FLAG))		{		arg->utype = utype;		arg->str = vstart;		/* If no value and not end of string, error */		if (!vstart && elem[len])			{			ASN1err(ASN1_F_ASN1_CB, ASN1_R_MISSING_VALUE);			return -1;			}		return 0;		}	switch(utype)		{		case ASN1_GEN_FLAG_IMP:		/* Check for illegal multiple IMPLICIT tagging */		if (arg->imp_tag != -1)			{			ASN1err(ASN1_F_ASN1_CB, ASN1_R_ILLEGAL_NESTED_TAGGING);			return -1;			}		if (!parse_tagging(vstart, vlen, &arg->imp_tag, &arg->imp_class))			return -1;		break;		case ASN1_GEN_FLAG_EXP:		if (!parse_tagging(vstart, vlen, &tmp_tag, &tmp_class))			return -1;		if (!append_exp(arg, tmp_tag, tmp_class, 1, 0, 0))			return -1;		break;		case ASN1_GEN_FLAG_SEQWRAP:		if (!append_exp(arg, V_ASN1_SEQUENCE, V_ASN1_UNIVERSAL, 1, 0, 1))			return -1;		break;		case ASN1_GEN_FLAG_BITWRAP:		if (!append_exp(arg, V_ASN1_BIT_STRING, V_ASN1_UNIVERSAL, 0, 1, 1))			return -1;		break;		case ASN1_GEN_FLAG_OCTWRAP:		if (!append_exp(arg, V_ASN1_OCTET_STRING, V_ASN1_UNIVERSAL, 0, 0, 1))			return -1;		break;		case ASN1_GEN_FLAG_FORMAT:		if (!strncmp(vstart, "ASCII", 5))			arg->format = ASN1_GEN_FORMAT_ASCII;		else if (!strncmp(vstart, "UTF8", 4))			arg->format = ASN1_GEN_FORMAT_UTF8;		else if (!strncmp(vstart, "HEX", 3))			arg->format = ASN1_GEN_FORMAT_HEX;		else if (!strncmp(vstart, "BITLIST", 3))			arg->format = ASN1_GEN_FORMAT_BITLIST;		else			{			ASN1err(ASN1_F_ASN1_CB, ASN1_R_UNKOWN_FORMAT);			return -1;			}		break;		}	return 1;	}