AC_TARGET *d2i_AC_TARGET(AC_TARGET **a, VOMS_MAYBECONST unsigned char **pp, long length) { M_ASN1_D2I_vars(a, AC_TARGET *, AC_TARGET_new); M_ASN1_D2I_Init(); M_ASN1_D2I_start_sequence(); M_ASN1_D2I_get_EXP_opt(ret->name, d2i_GENERAL_NAME, 0); M_ASN1_D2I_get_EXP_opt(ret->group, d2i_GENERAL_NAME, 1); M_ASN1_D2I_get_EXP_opt(ret->cert, d2i_AC_IS, 2); M_ASN1_D2I_Finish(a, AC_TARGET_free, ASN1_F_D2I_AC_TARGET); }
PKCS12_SAFEBAG *d2i_PKCS12_SAFEBAG(PKCS12_SAFEBAG **a, unsigned char **pp, long length) { int bagnid; M_ASN1_D2I_vars(a,PKCS12_SAFEBAG *,PKCS12_SAFEBAG_new); M_ASN1_D2I_Init(); M_ASN1_D2I_start_sequence(); M_ASN1_D2I_get (ret->type, d2i_ASN1_OBJECT); bagnid = OBJ_obj2nid (ret->type); switch (bagnid) { case NID_keyBag: M_ASN1_D2I_get_EXP_opt (ret->value.keybag, d2i_PKCS8_PRIV_KEY_INFO, 0); break; case NID_pkcs8ShroudedKeyBag: M_ASN1_D2I_get_EXP_opt (ret->value.shkeybag, d2i_X509_SIG, 0); break; case NID_safeContentsBag: M_ASN1_D2I_get_EXP_set_opt_type (PKCS12_SAFEBAG, ret->value.safes, d2i_PKCS12_SAFEBAG, PKCS12_SAFEBAG_free, 0, V_ASN1_SEQUENCE); break; case NID_certBag: case NID_crlBag: case NID_secretBag: M_ASN1_D2I_get_EXP_opt (ret->value.bag, d2i_PKCS12_BAGS, 0); break; default: M_ASN1_D2I_get_EXP_opt (ret->value.other, d2i_ASN1_TYPE, 0); break; } M_ASN1_D2I_get_set_opt_type(X509_ATTRIBUTE,ret->attrib, d2i_X509_ATTRIBUTE,X509_ATTRIBUTE_free); M_ASN1_D2I_Finish(a, PKCS12_SAFEBAG_free, ASN1_F_D2I_PKCS12_SAFEBAG); }
GENERAL_NAME *d2i_GENERAL_NAME(GENERAL_NAME **a, unsigned char **pp, long length) { unsigned char _tmp; M_ASN1_D2I_vars(a,GENERAL_NAME *,GENERAL_NAME_new); M_ASN1_D2I_Init(); c.slen = length; _tmp = M_ASN1_next; ret->type = _tmp & ~V_ASN1_CONSTRUCTED; switch(ret->type) { /* Just put these in a "blob" for now */ case GEN_X400: case GEN_EDIPARTY: M_ASN1_D2I_get_imp(ret->d.other, d2i_ASN1_TYPE,V_ASN1_SEQUENCE); break; case GEN_OTHERNAME: M_ASN1_D2I_get_imp(ret->d.otherName, d2i_OTHERNAME,V_ASN1_SEQUENCE); break; case GEN_EMAIL: case GEN_DNS: case GEN_URI: M_ASN1_D2I_get_imp(ret->d.ia5, d2i_ASN1_IA5STRING, V_ASN1_IA5STRING); break; case GEN_DIRNAME: M_ASN1_D2I_get_EXP_opt(ret->d.dirn, d2i_X509_NAME, 4); break; case GEN_IPADD: M_ASN1_D2I_get_imp(ret->d.ip, d2i_ASN1_OCTET_STRING, V_ASN1_OCTET_STRING); break; case GEN_RID: M_ASN1_D2I_get_imp(ret->d.rid, d2i_ASN1_OBJECT,V_ASN1_OBJECT); break; default: c.error = ASN1_R_BAD_TAG; goto err; } c.slen = 0; M_ASN1_D2I_Finish(a, GENERAL_NAME_free, ASN1_F_D2I_GENERAL_NAME); }