#include "cryptlib.h"
#include "asn1_mac.h"
-/* ASN1err(ASN1_F_ASN1_TYPE_NEW,ASN1_R_ERROR_STACK);
- * ASN1err(ASN1_F_D2I_ASN1_BYTES,ASN1_R_ERROR_STACK);
- * ASN1err(ASN1_F_D2I_ASN1_BYTES,ASN1_R_WRONG_TAG);
+/* ASN1err(ASN1_F_D2I_ASN1_BYTES,ASN1_R_WRONG_TAG);
* ASN1err(ASN1_F_ASN1_COLLATE_PRIMATIVE,ASN1_R_WRONG_TAG);
*/
case V_ASN1_NEG_INTEGER:
r=i2d_ASN1_INTEGER(a->value.integer,pp);
break;
+ case V_ASN1_ENUMERATED:
+ case V_ASN1_NEG_ENUMERATED:
+ r=i2d_ASN1_ENUMERATED(a->value.enumerated,pp);
+ break;
case V_ASN1_BIT_STRING:
r=i2d_ASN1_BIT_STRING(a->value.bit_string,pp);
break;
case V_ASN1_UTCTIME:
r=i2d_ASN1_UTCTIME(a->value.utctime,pp);
break;
+ case V_ASN1_GENERALIZEDTIME:
+ r=i2d_ASN1_GENERALIZEDTIME(a->value.generalizedtime,pp);
+ break;
case V_ASN1_SET:
case V_ASN1_SEQUENCE:
if (a->value.set == NULL)
d2i_ASN1_INTEGER(NULL,&p,max-p)) == NULL)
goto err;
break;
+ case V_ASN1_ENUMERATED:
+ if ((ret->value.enumerated=
+ d2i_ASN1_ENUMERATED(NULL,&p,max-p)) == NULL)
+ goto err;
+ break;
case V_ASN1_BIT_STRING:
if ((ret->value.bit_string=
d2i_ASN1_BIT_STRING(NULL,&p,max-p)) == NULL)
d2i_ASN1_UTCTIME(NULL,&p,max-p)) == NULL)
goto err;
break;
+ case V_ASN1_GENERALIZEDTIME:
+ if ((ret->value.generalizedtime=
+ d2i_ASN1_GENERALIZEDTIME(NULL,&p,max-p)) == NULL)
+ goto err;
+ break;
case V_ASN1_SET:
case V_ASN1_SEQUENCE:
/* Sets and sequences are left complete */
ASN1_TYPE *ASN1_TYPE_new()
{
ASN1_TYPE *ret=NULL;
+ ASN1_CTX c;
M_ASN1_New_Malloc(ret,ASN1_TYPE);
ret->type= -1;
break;
case V_ASN1_INTEGER:
case V_ASN1_NEG_INTEGER:
+ case V_ASN1_ENUMERATED:
+ case V_ASN1_NEG_ENUMERATED:
case V_ASN1_BIT_STRING:
case V_ASN1_OCTET_STRING:
+ case V_ASN1_SEQUENCE:
+ case V_ASN1_SET:
+ case V_ASN1_NUMERICSTRING:
case V_ASN1_PRINTABLESTRING:
case V_ASN1_T61STRING:
+ case V_ASN1_VIDEOTEXSTRING:
case V_ASN1_IA5STRING:
- case V_ASN1_UNIVERSALSTRING:
- case V_ASN1_GENERALSTRING:
case V_ASN1_UTCTIME:
- case V_ASN1_SET:
- case V_ASN1_SEQUENCE:
+ case V_ASN1_GENERALIZEDTIME:
+ case V_ASN1_GRAPHICSTRING:
+ case V_ASN1_VISIBLESTRING:
+ case V_ASN1_GENERALSTRING:
+ case V_ASN1_UNIVERSALSTRING:
+ case V_ASN1_BMPSTRING:
ASN1_STRING_free((ASN1_STRING *)a->value.ptr);
break;
default: