#include "x509.h"
/*
- * ASN1err(ASN1_F_D2I_X509_CRL,ASN1_R_LENGTH_MISMATCH);
- * ASN1err(ASN1_F_D2I_X509_CRL_INFO,ASN1_R_EXPECTING_A_SEQUENCE);
- * ASN1err(ASN1_F_D2I_X509_REVOKED,ASN1_R_LENGTH_MISMATCH);
- * ASN1err(ASN1_F_X509_CRL_NEW,ASN1_R_LENGTH_MISMATCH);
- * ASN1err(ASN1_F_X509_CRL_INFO_NEW,ASN1_R_EXPECTING_A_SEQUENCE);
- * ASN1err(ASN1_F_X509_REVOKED_NEW,ASN1_R_LENGTH_MISMATCH);
+ * ASN1err(ASN1_F_D2I_X509_CRL,ERR_R_ASN1_LENGTH_MISMATCH);
+ * ASN1err(ASN1_F_D2I_X509_CRL_INFO,ERR_R_EXPECTING_AN_ASN1_SEQUENCE);
+ * ASN1err(ASN1_F_D2I_X509_REVOKED,ERR_R_ASN1_LENGTH_MISMATCH);
+ * ASN1err(ASN1_F_X509_CRL_NEW,ERR_R_ASN1_LENGTH_MISMATCH);
+ * ASN1err(ASN1_F_X509_CRL_INFO_NEW,ERR_R_EXPECTING_AN_ASN1_SEQUENCE);
+ * ASN1err(ASN1_F_X509_REVOKED_NEW,ERR_R_ASN1_LENGTH_MISMATCH);
*/
#ifndef NOPROTO
M_ASN1_I2D_vars(a);
M_ASN1_I2D_len(a->serialNumber,i2d_ASN1_INTEGER);
- M_ASN1_I2D_len(a->revocationDate,i2d_ASN1_UTCTIME);
- M_ASN1_I2D_len_SEQ_opt(a->extensions,i2d_X509_EXTENSION);
+ M_ASN1_I2D_len(a->revocationDate,i2d_ASN1_TIME);
+ M_ASN1_I2D_len_SEQUENCE_opt(a->extensions,i2d_X509_EXTENSION);
M_ASN1_I2D_seq_total();
M_ASN1_I2D_put(a->serialNumber,i2d_ASN1_INTEGER);
- M_ASN1_I2D_put(a->revocationDate,i2d_ASN1_UTCTIME);
- M_ASN1_I2D_put_SEQ_opt(a->extensions,i2d_X509_EXTENSION);
+ M_ASN1_I2D_put(a->revocationDate,i2d_ASN1_TIME);
+ M_ASN1_I2D_put_SEQUENCE_opt(a->extensions,i2d_X509_EXTENSION);
M_ASN1_I2D_finish();
}
M_ASN1_D2I_Init();
M_ASN1_D2I_start_sequence();
M_ASN1_D2I_get(ret->serialNumber,d2i_ASN1_INTEGER);
- M_ASN1_D2I_get(ret->revocationDate,d2i_ASN1_UTCTIME);
- M_ASN1_D2I_get_seq_opt(ret->extensions,d2i_X509_EXTENSION);
+ M_ASN1_D2I_get(ret->revocationDate,d2i_ASN1_TIME);
+ M_ASN1_D2I_get_seq_opt(ret->extensions,d2i_X509_EXTENSION,
+ X509_EXTENSION_free);
M_ASN1_D2I_Finish(a,X509_REVOKED_free,ASN1_F_D2I_X509_REVOKED);
}
}
M_ASN1_I2D_len(a->sig_alg,i2d_X509_ALGOR);
M_ASN1_I2D_len(a->issuer,i2d_X509_NAME);
- M_ASN1_I2D_len(a->lastUpdate,i2d_ASN1_UTCTIME);
+ M_ASN1_I2D_len(a->lastUpdate,i2d_ASN1_TIME);
if (a->nextUpdate != NULL)
- { M_ASN1_I2D_len(a->nextUpdate,i2d_ASN1_UTCTIME); }
- M_ASN1_I2D_len_SEQ_opt(a->revoked,i2d_X509_REVOKED);
- M_ASN1_I2D_len_EXP_set_opt(a->extensions,i2d_X509_EXTENSION,0,
+ { M_ASN1_I2D_len(a->nextUpdate,i2d_ASN1_TIME); }
+ M_ASN1_I2D_len_SEQUENCE_opt(a->revoked,i2d_X509_REVOKED);
+ M_ASN1_I2D_len_EXP_SEQUENCE_opt(a->extensions,i2d_X509_EXTENSION,0,
V_ASN1_SEQUENCE,v1);
M_ASN1_I2D_seq_total();
M_ASN1_I2D_put(a->lastUpdate,i2d_ASN1_UTCTIME);
if (a->nextUpdate != NULL)
{ M_ASN1_I2D_put(a->nextUpdate,i2d_ASN1_UTCTIME); }
- M_ASN1_I2D_put_SEQ_opt(a->revoked,i2d_X509_REVOKED);
- M_ASN1_I2D_put_EXP_set_opt(a->extensions,i2d_X509_EXTENSION,0,
+ M_ASN1_I2D_put_SEQUENCE_opt(a->revoked,i2d_X509_REVOKED);
+ M_ASN1_I2D_put_EXP_SEQUENCE_opt(a->extensions,i2d_X509_EXTENSION,0,
V_ASN1_SEQUENCE,v1);
M_ASN1_I2D_finish();
}
M_ASN1_D2I_get(ret->sig_alg,d2i_X509_ALGOR);
M_ASN1_D2I_get(ret->issuer,d2i_X509_NAME);
- M_ASN1_D2I_get(ret->lastUpdate,d2i_ASN1_UTCTIME);
- M_ASN1_D2I_get_opt(ret->nextUpdate,d2i_ASN1_UTCTIME,V_ASN1_UTCTIME);
+ M_ASN1_D2I_get(ret->lastUpdate,d2i_ASN1_TIME);
+ /* Manually handle the OPTIONAL ASN1_TIME stuff */
+ if(c.slen != 0
+ && ( (M_ASN1_next & ~V_ASN1_CONSTRUCTED) ==
+ (V_ASN1_UNIVERSAL|V_ASN1_UTCTIME)
+ || (M_ASN1_next & ~V_ASN1_CONSTRUCTED) ==
+ (V_ASN1_UNIVERSAL|V_ASN1_GENERALIZEDTIME) ) ) {
+ M_ASN1_D2I_get(ret->nextUpdate,d2i_ASN1_TIME);
+ }
+ if(!ret->nextUpdate)
+ M_ASN1_D2I_get_opt(ret->nextUpdate,d2i_ASN1_GENERALIZEDTIME,
+ V_ASN1_GENERALIZEDTIME);
if (ret->revoked != NULL)
{
while (sk_num(ret->revoked))
X509_REVOKED_free((X509_REVOKED *)sk_pop(ret->revoked));
}
- M_ASN1_D2I_get_seq_opt(ret->revoked,d2i_X509_REVOKED);
+ M_ASN1_D2I_get_seq_opt(ret->revoked,d2i_X509_REVOKED,X509_REVOKED_free);
if (ret->revoked != NULL)
{
}
M_ASN1_D2I_get_EXP_set_opt(ret->extensions,d2i_X509_EXTENSION,
- 0,V_ASN1_SEQUENCE);
+ X509_EXTENSION_free,0,V_ASN1_SEQUENCE);
}
M_ASN1_D2I_Finish(a,X509_CRL_INFO_free,ASN1_F_D2I_X509_CRL_INFO);
X509_REVOKED *X509_REVOKED_new()
{
X509_REVOKED *ret=NULL;
+ ASN1_CTX c;
M_ASN1_New_Malloc(ret,X509_REVOKED);
M_ASN1_New(ret->serialNumber,ASN1_INTEGER_new);
X509_CRL_INFO *X509_CRL_INFO_new()
{
X509_CRL_INFO *ret=NULL;
+ ASN1_CTX c;
M_ASN1_New_Malloc(ret,X509_CRL_INFO);
ret->version=NULL;
X509_CRL *X509_CRL_new()
{
X509_CRL *ret=NULL;
+ ASN1_CTX c;
M_ASN1_New_Malloc(ret,X509_CRL);
ret->references=1;