+#define HEIMDAL_UNUSED_ATTRIBUTE AFS_UNUSED
+int ASN1CALL decode_MESSAGE_TYPE(const unsigned char *, size_t,
+ MESSAGE_TYPE *, size_t *);
+int ASN1CALL encode_MESSAGE_TYPE(unsigned char *, size_t,
+ const MESSAGE_TYPE *, size_t *);
+size_t ASN1CALL length_MESSAGE_TYPE(const MESSAGE_TYPE *);
+int ASN1CALL copy_MESSAGE_TYPE(const MESSAGE_TYPE *, MESSAGE_TYPE *);
+void ASN1CALL free_MESSAGE_TYPE(MESSAGE_TYPE *);
+
+
+int ASN1CALL decode_krb5uint32(const unsigned char *, size_t, krb5uint32 *,
+ size_t *);
+int ASN1CALL encode_krb5uint32(unsigned char *, size_t, const krb5uint32 *,
+ size_t *);
+size_t ASN1CALL length_krb5uint32(const krb5uint32 *);
+int ASN1CALL copy_krb5uint32(const krb5uint32 *, krb5uint32 *);
+void ASN1CALL free_krb5uint32(krb5uint32 *);
+
+
+int ASN1CALL decode_krb5int32(const unsigned char *, size_t, krb5int32 *,
+ size_t *);
+int ASN1CALL encode_krb5int32(unsigned char *, size_t, const krb5int32 *,
+ size_t *);
+size_t ASN1CALL length_krb5int32(const krb5int32 *);
+int ASN1CALL copy_krb5int32(const krb5int32 *, krb5int32 *);
+void ASN1CALL free_krb5int32(krb5int32 *);
+
+
+int ASN1CALL decode_APOptions(const unsigned char *, size_t, APOptions *,
+ size_t *);
+int ASN1CALL encode_APOptions(unsigned char *, size_t, const APOptions *,
+ size_t *);
+size_t ASN1CALL length_APOptions(const APOptions *);
+int ASN1CALL copy_APOptions(const APOptions *, APOptions *);
+void ASN1CALL free_APOptions(APOptions *);
+
+
+int ASN1CALL decode_TYPED_DATA(const unsigned char *, size_t, TYPED_DATA *,
+ size_t *);
+int ASN1CALL encode_TYPED_DATA(unsigned char *, size_t, const TYPED_DATA *,
+ size_t *);
+size_t ASN1CALL length_TYPED_DATA(const TYPED_DATA *);
+int ASN1CALL copy_TYPED_DATA(const TYPED_DATA *, TYPED_DATA *);
+void ASN1CALL free_TYPED_DATA(TYPED_DATA *);
+
+
+int ASN1CALL decode_KDC_REQ(const unsigned char *, size_t, KDC_REQ *,
+ size_t *);
+int ASN1CALL encode_KDC_REQ(unsigned char *, size_t, const KDC_REQ *,
+ size_t *);
+size_t ASN1CALL length_KDC_REQ(const KDC_REQ *);
+int ASN1CALL copy_KDC_REQ(const KDC_REQ *, KDC_REQ *);
+void ASN1CALL free_KDC_REQ(KDC_REQ *);
+
+
+int ASN1CALL decode_PROV_SRV_LOCATION(const unsigned char *, size_t,
+ PROV_SRV_LOCATION *, size_t *);
+int ASN1CALL encode_PROV_SRV_LOCATION(unsigned char *, size_t,
+ const PROV_SRV_LOCATION *, size_t *);
+size_t ASN1CALL length_PROV_SRV_LOCATION(const PROV_SRV_LOCATION *);
+int ASN1CALL copy_PROV_SRV_LOCATION(const PROV_SRV_LOCATION *,
+ PROV_SRV_LOCATION *);
+void ASN1CALL free_PROV_SRV_LOCATION(PROV_SRV_LOCATION *);
+
+
+int ASN1CALL decode_AD_MANDATORY_FOR_KDC(const unsigned char *, size_t,
+ AD_MANDATORY_FOR_KDC *, size_t *);
+int ASN1CALL encode_AD_MANDATORY_FOR_KDC(unsigned char *, size_t,
+ const AD_MANDATORY_FOR_KDC *,
+ size_t *);
+size_t ASN1CALL length_AD_MANDATORY_FOR_KDC(const AD_MANDATORY_FOR_KDC *);
+int ASN1CALL copy_AD_MANDATORY_FOR_KDC(const AD_MANDATORY_FOR_KDC *,
+ AD_MANDATORY_FOR_KDC *);
+void ASN1CALL free_AD_MANDATORY_FOR_KDC(AD_MANDATORY_FOR_KDC *);
+
+
+int ASN1CALL decode_PA_SAM_TYPE(const unsigned char *, size_t, PA_SAM_TYPE *,
+ size_t *);
+int ASN1CALL encode_PA_SAM_TYPE(unsigned char *, size_t, const PA_SAM_TYPE *,
+ size_t *);
+size_t ASN1CALL length_PA_SAM_TYPE(const PA_SAM_TYPE *);
+int ASN1CALL copy_PA_SAM_TYPE(const PA_SAM_TYPE *, PA_SAM_TYPE *);
+void ASN1CALL free_PA_SAM_TYPE(PA_SAM_TYPE *);
+
+
+int ASN1CALL decode_PA_SAM_REDIRECT(const unsigned char *, size_t,
+ PA_SAM_REDIRECT *, size_t *);
+int ASN1CALL encode_PA_SAM_REDIRECT(unsigned char *, size_t,
+ const PA_SAM_REDIRECT *, size_t *);
+size_t ASN1CALL length_PA_SAM_REDIRECT(const PA_SAM_REDIRECT *);
+int ASN1CALL copy_PA_SAM_REDIRECT(const PA_SAM_REDIRECT *, PA_SAM_REDIRECT *);
+void ASN1CALL free_PA_SAM_REDIRECT(PA_SAM_REDIRECT *);
+
+
+int ASN1CALL decode_SAMFlags(const unsigned char *, size_t, SAMFlags *,
+ size_t *);
+int ASN1CALL encode_SAMFlags(unsigned char *, size_t, const SAMFlags *,
+ size_t *);
+size_t ASN1CALL length_SAMFlags(const SAMFlags *);
+int ASN1CALL copy_SAMFlags(const SAMFlags *, SAMFlags *);
+void ASN1CALL free_SAMFlags(SAMFlags *);
+
+
+int ASN1CALL decode_PA_SAM_CHALLENGE_2_BODY(const unsigned char *, size_t,
+ PA_SAM_CHALLENGE_2_BODY *,
+ size_t *);
+int ASN1CALL encode_PA_SAM_CHALLENGE_2_BODY(unsigned char *, size_t,
+ const PA_SAM_CHALLENGE_2_BODY *,
+ size_t *);
+size_t ASN1CALL length_PA_SAM_CHALLENGE_2_BODY(const PA_SAM_CHALLENGE_2_BODY
+ *);
+int ASN1CALL copy_PA_SAM_CHALLENGE_2_BODY(const PA_SAM_CHALLENGE_2_BODY *,
+ PA_SAM_CHALLENGE_2_BODY *);
+void ASN1CALL free_PA_SAM_CHALLENGE_2_BODY(PA_SAM_CHALLENGE_2_BODY *);
+
+
+int ASN1CALL decode_PA_SAM_CHALLENGE_2(const unsigned char *, size_t,
+ PA_SAM_CHALLENGE_2 *, size_t *);
+int ASN1CALL encode_PA_SAM_CHALLENGE_2(unsigned char *, size_t,
+ const PA_SAM_CHALLENGE_2 *, size_t *);
+size_t ASN1CALL length_PA_SAM_CHALLENGE_2(const PA_SAM_CHALLENGE_2 *);
+int ASN1CALL copy_PA_SAM_CHALLENGE_2(const PA_SAM_CHALLENGE_2 *,
+ PA_SAM_CHALLENGE_2 *);
+void ASN1CALL free_PA_SAM_CHALLENGE_2(PA_SAM_CHALLENGE_2 *);
+
+
+int ASN1CALL decode_PA_SAM_RESPONSE_2(const unsigned char *, size_t,
+ PA_SAM_RESPONSE_2 *, size_t *);
+int ASN1CALL encode_PA_SAM_RESPONSE_2(unsigned char *, size_t,
+ const PA_SAM_RESPONSE_2 *, size_t *);
+size_t ASN1CALL length_PA_SAM_RESPONSE_2(const PA_SAM_RESPONSE_2 *);
+int ASN1CALL copy_PA_SAM_RESPONSE_2(const PA_SAM_RESPONSE_2 *,
+ PA_SAM_RESPONSE_2 *);
+void ASN1CALL free_PA_SAM_RESPONSE_2(PA_SAM_RESPONSE_2 *);
+
+
+int ASN1CALL decode_PA_ENC_SAM_RESPONSE_ENC(const unsigned char *, size_t,
+ PA_ENC_SAM_RESPONSE_ENC *,
+ size_t *);
+int ASN1CALL encode_PA_ENC_SAM_RESPONSE_ENC(unsigned char *, size_t,
+ const PA_ENC_SAM_RESPONSE_ENC *,
+ size_t *);
+size_t ASN1CALL length_PA_ENC_SAM_RESPONSE_ENC(const PA_ENC_SAM_RESPONSE_ENC
+ *);
+int ASN1CALL copy_PA_ENC_SAM_RESPONSE_ENC(const PA_ENC_SAM_RESPONSE_ENC *,
+ PA_ENC_SAM_RESPONSE_ENC *);
+void ASN1CALL free_PA_ENC_SAM_RESPONSE_ENC(PA_ENC_SAM_RESPONSE_ENC *);
+
+
+int ASN1CALL decode_FastOptions(const unsigned char *, size_t, FastOptions *,
+ size_t *);
+int ASN1CALL encode_FastOptions(unsigned char *, size_t, const FastOptions *,
+ size_t *);
+size_t ASN1CALL length_FastOptions(const FastOptions *);
+int ASN1CALL copy_FastOptions(const FastOptions *, FastOptions *);
+void ASN1CALL free_FastOptions(FastOptions *);
+
+
+int ASN1CALL decode_KrbFastArmoredReq(const unsigned char *, size_t,
+ KrbFastArmoredReq *, size_t *);
+int ASN1CALL encode_KrbFastArmoredReq(unsigned char *, size_t,
+ const KrbFastArmoredReq *, size_t *);
+size_t ASN1CALL length_KrbFastArmoredReq(const KrbFastArmoredReq *);
+int ASN1CALL copy_KrbFastArmoredReq(const KrbFastArmoredReq *,
+ KrbFastArmoredReq *);
+void ASN1CALL free_KrbFastArmoredReq(KrbFastArmoredReq *);
+
+
+int ASN1CALL decode_KrbFastArmoredRep(const unsigned char *, size_t,
+ KrbFastArmoredRep *, size_t *);
+int ASN1CALL encode_KrbFastArmoredRep(unsigned char *, size_t,
+ const KrbFastArmoredRep *, size_t *);
+size_t ASN1CALL length_KrbFastArmoredRep(const KrbFastArmoredRep *);
+int ASN1CALL copy_KrbFastArmoredRep(const KrbFastArmoredRep *,
+ KrbFastArmoredRep *);
+void ASN1CALL free_KrbFastArmoredRep(KrbFastArmoredRep *);
+
+
+int ASN1CALL decode_KDCFastFlags(const unsigned char *, size_t,
+ KDCFastFlags *, size_t *);
+int ASN1CALL encode_KDCFastFlags(unsigned char *, size_t,
+ const KDCFastFlags *, size_t *);
+size_t ASN1CALL length_KDCFastFlags(const KDCFastFlags *);
+int ASN1CALL copy_KDCFastFlags(const KDCFastFlags *, KDCFastFlags *);
+void ASN1CALL free_KDCFastFlags(KDCFastFlags *);
+
+
+int ASN1CALL decode_KERB_TGS_REP_IN(const unsigned char *, size_t,
+ KERB_TGS_REP_IN *, size_t *);
+int ASN1CALL encode_KERB_TGS_REP_IN(unsigned char *, size_t,
+ const KERB_TGS_REP_IN *, size_t *);
+size_t ASN1CALL length_KERB_TGS_REP_IN(const KERB_TGS_REP_IN *);
+int ASN1CALL copy_KERB_TGS_REP_IN(const KERB_TGS_REP_IN *, KERB_TGS_REP_IN *);
+void ASN1CALL free_KERB_TGS_REP_IN(KERB_TGS_REP_IN *);
+
+
+int ASN1CALL decode_KERB_TGS_REP_OUT(const unsigned char *, size_t,
+ KERB_TGS_REP_OUT *, size_t *);
+int ASN1CALL encode_KERB_TGS_REP_OUT(unsigned char *, size_t,
+ const KERB_TGS_REP_OUT *, size_t *);
+size_t ASN1CALL length_KERB_TGS_REP_OUT(const KERB_TGS_REP_OUT *);
+int ASN1CALL copy_KERB_TGS_REP_OUT(const KERB_TGS_REP_OUT *,
+ KERB_TGS_REP_OUT *);
+void ASN1CALL free_KERB_TGS_REP_OUT(KERB_TGS_REP_OUT *);
+
+
/* Generated from ./krb5.asn1 */
/* Do not edit */
+#define ASN1_LIB
+
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <limits.h>
#include <asn1_err.h>
-int
-encode_krb5int32(unsigned char *p, size_t len, const krb5int32 * data, size_t * size)
+
+int ASN1CALL
+encode_NAME_TYPE(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, const NAME_TYPE * data,
+ size_t * size)
{
- size_t ret = 0;
- size_t l;
- int i AFS_UNUSED, e;
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
- i = 0;
- e = der_put_integer(p, len, data, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+ {
+ int enumint = (int) *data;
+ e = der_put_integer(p, len, &enumint, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_Integer, &l);
+ }
+ ;
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_Integer,
+ &l);
if (e)
return e;
p -= l;
return 0;
}
-int
-decode_krb5int32(const unsigned char *p, size_t len, krb5int32 * data, size_t * size)
+int ASN1CALL
+decode_NAME_TYPE(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, NAME_TYPE * data,
+ size_t * size)
{
size_t ret = 0;
- size_t l;
- int e;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
memset(data, 0, sizeof(*data));
{
size_t Top_datalen, Top_oldlen;
Der_type Top_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type, UT_Integer, &Top_datalen, &l);
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Integer, &Top_datalen, &l);
if (e == 0 && Top_type != PRIM) {
e = ASN1_BAD_ID;
}
goto fail;
}
len = Top_datalen;
- e = der_get_integer(p, len, data, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
+ {
+ int enumint;
+ e = der_get_integer(p, len, &enumint, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ *data = enumint;
+ }
len = Top_oldlen - Top_datalen;
}
if (size)
*size = ret;
return 0;
-fail:
- free_krb5int32(data);
+ fail:
+ free_NAME_TYPE(data);
return e;
}
-void
-free_krb5int32(krb5int32 * data)
+void ASN1CALL
+free_NAME_TYPE(NAME_TYPE * data)
{
}
-size_t
-length_krb5int32(const krb5int32 * data)
+size_t ASN1CALL
+length_NAME_TYPE(const NAME_TYPE * data)
{
size_t ret = 0;
- ret += der_length_integer(data);
+ {
+ int enumint = *data;
+ ret += der_length_integer(&enumint);
+ }
ret += 1 + der_length_len(ret);
return ret;
}
-int
-copy_krb5int32(const krb5int32 * from, krb5int32 * to)
+int ASN1CALL
+copy_NAME_TYPE(const NAME_TYPE * from, NAME_TYPE * to)
{
memset(to, 0, sizeof(*to));
*(to) = *(from);
return 0;
}
-
-
-/* Generated from ./krb5.asn1 */
-/* Do not edit */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <string.h>
-#include <errno.h>
-#include <limits.h>
-#include <asn1_err.h>
-
-int
-encode_Ticket(unsigned char *p, size_t len, const Ticket * data, size_t * size)
+int ASN1CALL
+encode_MESSAGE_TYPE(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ const MESSAGE_TYPE * data, size_t * size)
{
- size_t ret = 0;
- size_t l;
- int i AFS_UNUSED, e;
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
- i = 0;
-/* enc-part */
{
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- e = encode_EncryptedData(p, len, &(data)->enc_part, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 3, &l);
+ int enumint = (int) *data;
+ e = der_put_integer(p, len, &enumint, &l);
if (e)
return e;
p -= l;
len -= l;
ret += l;
- ret += Top_tag_tag_oldret;
}
-/* sname */
+ ;
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_Integer,
+ &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ *size = ret;
+ return 0;
+}
+
+int ASN1CALL
+decode_MESSAGE_TYPE(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, MESSAGE_TYPE * data,
+ size_t * size)
+{
+ size_t ret = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
+
+ memset(data, 0, sizeof(*data));
{
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- e = encode_PrincipalName(p, len, &(data)->sname, &l);
+ size_t Top_datalen, Top_oldlen;
+ Der_type Top_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Integer, &Top_datalen, &l);
+ if (e == 0 && Top_type != PRIM) {
+ e = ASN1_BAD_ID;
+ }
if (e)
- return e;
- p -= l;
+ goto fail;
+ p += l;
len -= l;
ret += l;
+ Top_oldlen = len;
+ if (Top_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = Top_datalen;
+ {
+ int enumint;
+ e = der_get_integer(p, len, &enumint, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ *data = enumint;
+ }
+ len = Top_oldlen - Top_datalen;
+ }
+ if (size)
+ *size = ret;
+ return 0;
+ fail:
+ free_MESSAGE_TYPE(data);
+ return e;
+}
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 2, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+void ASN1CALL
+free_MESSAGE_TYPE(MESSAGE_TYPE * data)
+{
+}
- ret += Top_tag_tag_oldret;
- }
-/* realm */
+size_t ASN1CALL
+length_MESSAGE_TYPE(const MESSAGE_TYPE * data)
+{
+ size_t ret = 0;
{
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- e = encode_Realm(p, len, &(data)->realm, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+ int enumint = *data;
+ ret += der_length_integer(&enumint);
+ }
+ ret += 1 + der_length_len(ret);
+ return ret;
+}
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 1, &l);
+int ASN1CALL
+copy_MESSAGE_TYPE(const MESSAGE_TYPE * from, MESSAGE_TYPE * to)
+{
+ memset(to, 0, sizeof(*to));
+ *(to) = *(from);
+ return 0;
+}
+
+int ASN1CALL
+encode_PADATA_TYPE(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ const PADATA_TYPE * data, size_t * size)
+{
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
+
+ {
+ int enumint = (int) *data;
+ e = der_put_integer(p, len, &enumint, &l);
if (e)
return e;
p -= l;
len -= l;
ret += l;
- ret += Top_tag_tag_oldret;
}
-/* tkt-vno */
+ ;
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_Integer,
+ &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ *size = ret;
+ return 0;
+}
+
+int ASN1CALL
+decode_PADATA_TYPE(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, PADATA_TYPE * data,
+ size_t * size)
+{
+ size_t ret = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
+
+ memset(data, 0, sizeof(*data));
{
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- e = encode_krb5int32(p, len, &(data)->tkt_vno, &l);
+ size_t Top_datalen, Top_oldlen;
+ Der_type Top_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Integer, &Top_datalen, &l);
+ if (e == 0 && Top_type != PRIM) {
+ e = ASN1_BAD_ID;
+ }
if (e)
- return e;
- p -= l;
+ goto fail;
+ p += l;
len -= l;
ret += l;
+ Top_oldlen = len;
+ if (Top_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = Top_datalen;
+ {
+ int enumint;
+ e = der_get_integer(p, len, &enumint, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ *data = enumint;
+ }
+ len = Top_oldlen - Top_datalen;
+ }
+ if (size)
+ *size = ret;
+ return 0;
+ fail:
+ free_PADATA_TYPE(data);
+ return e;
+}
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 0, &l);
+void ASN1CALL
+free_PADATA_TYPE(PADATA_TYPE * data)
+{
+}
+
+size_t ASN1CALL
+length_PADATA_TYPE(const PADATA_TYPE * data)
+{
+ size_t ret = 0;
+ {
+ int enumint = *data;
+ ret += der_length_integer(&enumint);
+ }
+ ret += 1 + der_length_len(ret);
+ return ret;
+}
+
+int ASN1CALL
+copy_PADATA_TYPE(const PADATA_TYPE * from, PADATA_TYPE * to)
+{
+ memset(to, 0, sizeof(*to));
+ *(to) = *(from);
+ return 0;
+}
+
+int ASN1CALL
+encode_AUTHDATA_TYPE(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ const AUTHDATA_TYPE * data, size_t * size)
+{
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
+
+ {
+ int enumint = (int) *data;
+ e = der_put_integer(p, len, &enumint, &l);
if (e)
return e;
p -= l;
len -= l;
ret += l;
- ret += Top_tag_tag_oldret;
}
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_APPL, CONS, 1, &l);
+ ;
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_Integer,
+ &l);
if (e)
return e;
p -= l;
return 0;
}
-int
-decode_Ticket(const unsigned char *p, size_t len, Ticket * data, size_t * size)
+int ASN1CALL
+decode_AUTHDATA_TYPE(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ AUTHDATA_TYPE * data, size_t * size)
{
size_t ret = 0;
- size_t l;
- int e;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
memset(data, 0, sizeof(*data));
{
size_t Top_datalen, Top_oldlen;
Der_type Top_type;
- e = der_match_tag_and_length(p, len, ASN1_C_APPL, &Top_type, 1, &Top_datalen, &l);
- if (e == 0 && Top_type != CONS) {
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Integer, &Top_datalen, &l);
+ if (e == 0 && Top_type != PRIM) {
e = ASN1_BAD_ID;
}
if (e)
}
len = Top_datalen;
{
- size_t Top_Tag_datalen, Top_Tag_oldlen;
- Der_type Top_Tag_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_Tag_type, UT_Sequence, &Top_Tag_datalen, &l);
- if (e == 0 && Top_Tag_type != CONS) {
- e = ASN1_BAD_ID;
- }
+ int enumint;
+ e = der_get_integer(p, len, &enumint, &l);
if (e)
goto fail;
p += l;
len -= l;
ret += l;
- Top_Tag_oldlen = len;
- if (Top_Tag_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = Top_Tag_datalen;
- {
- size_t tkt_vno_datalen, tkt_vno_oldlen;
- Der_type tkt_vno_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &tkt_vno_type, 0, &tkt_vno_datalen, &l);
- if (e == 0 && tkt_vno_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- tkt_vno_oldlen = len;
- if (tkt_vno_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = tkt_vno_datalen;
- e = decode_krb5int32(p, len, &(data)->tkt_vno, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = tkt_vno_oldlen - tkt_vno_datalen;
- }
- {
- size_t realm_datalen, realm_oldlen;
- Der_type realm_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &realm_type, 1, &realm_datalen, &l);
- if (e == 0 && realm_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- realm_oldlen = len;
- if (realm_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = realm_datalen;
- e = decode_Realm(p, len, &(data)->realm, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = realm_oldlen - realm_datalen;
- }
- {
- size_t sname_datalen, sname_oldlen;
- Der_type sname_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &sname_type, 2, &sname_datalen, &l);
- if (e == 0 && sname_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- sname_oldlen = len;
- if (sname_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = sname_datalen;
- e = decode_PrincipalName(p, len, &(data)->sname, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = sname_oldlen - sname_datalen;
- }
- {
- size_t enc_part_datalen, enc_part_oldlen;
- Der_type enc_part_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &enc_part_type, 3, &enc_part_datalen, &l);
- if (e == 0 && enc_part_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- enc_part_oldlen = len;
- if (enc_part_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = enc_part_datalen;
- e = decode_EncryptedData(p, len, &(data)->enc_part, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = enc_part_oldlen - enc_part_datalen;
- }
- len = Top_Tag_oldlen - Top_Tag_datalen;
+ *data = enumint;
}
len = Top_oldlen - Top_datalen;
}
if (size)
*size = ret;
return 0;
-fail:
- free_Ticket(data);
+ fail:
+ free_AUTHDATA_TYPE(data);
return e;
}
-void
-free_Ticket(Ticket * data)
+void ASN1CALL
+free_AUTHDATA_TYPE(AUTHDATA_TYPE * data)
{
- free_krb5int32(&(data)->tkt_vno);
- free_Realm(&(data)->realm);
- free_PrincipalName(&(data)->sname);
- free_EncryptedData(&(data)->enc_part);
}
-size_t
-length_Ticket(const Ticket * data)
+size_t ASN1CALL
+length_AUTHDATA_TYPE(const AUTHDATA_TYPE * data)
{
size_t ret = 0;
{
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- ret += length_krb5int32(&(data)->tkt_vno);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_tag_oldret;
- }
- {
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- ret += length_Realm(&(data)->realm);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_tag_oldret;
- }
- {
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- ret += length_PrincipalName(&(data)->sname);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_tag_oldret;
- }
- {
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- ret += length_EncryptedData(&(data)->enc_part);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_tag_oldret;
+ int enumint = *data;
+ ret += der_length_integer(&enumint);
}
ret += 1 + der_length_len(ret);
- ret += 1 + der_length_len(ret);
return ret;
}
-int
-copy_Ticket(const Ticket * from, Ticket * to)
+int ASN1CALL
+copy_AUTHDATA_TYPE(const AUTHDATA_TYPE * from, AUTHDATA_TYPE * to)
{
memset(to, 0, sizeof(*to));
- if (copy_krb5int32(&(from)->tkt_vno, &(to)->tkt_vno))
- goto fail;
- if (copy_Realm(&(from)->realm, &(to)->realm))
- goto fail;
- if (copy_PrincipalName(&(from)->sname, &(to)->sname))
- goto fail;
- if (copy_EncryptedData(&(from)->enc_part, &(to)->enc_part))
- goto fail;
+ *(to) = *(from);
return 0;
-fail:
- free_Ticket(to);
- return ENOMEM;
}
-
-
-/* Generated from ./krb5.asn1 */
-/* Do not edit */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <string.h>
-#include <errno.h>
-#include <limits.h>
-#include <asn1_err.h>
-
-int
-encode_AuthorizationDataElement(unsigned char *p, size_t len, const AuthorizationDataElement * data, size_t * size)
+int ASN1CALL
+encode_CKSUMTYPE(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, const CKSUMTYPE * data,
+ size_t * size)
{
- size_t ret = 0;
- size_t l;
- int i AFS_UNUSED, e;
-
- i = 0;
-/* ad-data */
- {
- size_t Top_tag_oldret = ret;
- ret = 0;
- e = der_put_octet_string(p, len, &(data)->ad_data, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_OctetString, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 1, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
- ret += Top_tag_oldret;
- }
-/* ad-type */
{
- size_t Top_tag_oldret = ret;
- ret = 0;
- e = encode_krb5int32(p, len, &(data)->ad_type, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 0, &l);
+ int enumint = (int) *data;
+ e = der_put_integer(p, len, &enumint, &l);
if (e)
return e;
p -= l;
len -= l;
ret += l;
- ret += Top_tag_oldret;
}
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence, &l);
+ ;
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_Integer,
+ &l);
if (e)
return e;
p -= l;
return 0;
}
-int
-decode_AuthorizationDataElement(const unsigned char *p, size_t len, AuthorizationDataElement * data, size_t * size)
+int ASN1CALL
+decode_CKSUMTYPE(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, CKSUMTYPE * data,
+ size_t * size)
{
size_t ret = 0;
- size_t l;
- int e;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
memset(data, 0, sizeof(*data));
{
size_t Top_datalen, Top_oldlen;
Der_type Top_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type, UT_Sequence, &Top_datalen, &l);
- if (e == 0 && Top_type != CONS) {
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Integer, &Top_datalen, &l);
+ if (e == 0 && Top_type != PRIM) {
e = ASN1_BAD_ID;
}
if (e)
}
len = Top_datalen;
{
- size_t ad_type_datalen, ad_type_oldlen;
- Der_type ad_type_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &ad_type_type, 0, &ad_type_datalen, &l);
- if (e == 0 && ad_type_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- ad_type_oldlen = len;
- if (ad_type_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = ad_type_datalen;
- e = decode_krb5int32(p, len, &(data)->ad_type, &l);
+ int enumint;
+ e = der_get_integer(p, len, &enumint, &l);
if (e)
goto fail;
p += l;
len -= l;
ret += l;
- len = ad_type_oldlen - ad_type_datalen;
- }
- {
- size_t ad_data_datalen, ad_data_oldlen;
- Der_type ad_data_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &ad_data_type, 1, &ad_data_datalen, &l);
- if (e == 0 && ad_data_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- ad_data_oldlen = len;
- if (ad_data_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = ad_data_datalen;
- {
- size_t ad_data_Tag_datalen, ad_data_Tag_oldlen;
- Der_type ad_data_Tag_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &ad_data_Tag_type, UT_OctetString, &ad_data_Tag_datalen, &l);
- if (e == 0 && ad_data_Tag_type != PRIM) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- ad_data_Tag_oldlen = len;
- if (ad_data_Tag_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = ad_data_Tag_datalen;
- e = der_get_octet_string(p, len, &(data)->ad_data, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = ad_data_Tag_oldlen - ad_data_Tag_datalen;
- }
- len = ad_data_oldlen - ad_data_datalen;
+ *data = enumint;
}
len = Top_oldlen - Top_datalen;
}
if (size)
*size = ret;
return 0;
-fail:
- free_AuthorizationDataElement(data);
+ fail:
+ free_CKSUMTYPE(data);
return e;
}
-void
-free_AuthorizationDataElement(AuthorizationDataElement * data)
+void ASN1CALL
+free_CKSUMTYPE(CKSUMTYPE * data)
{
- free_krb5int32(&(data)->ad_type);
- der_free_octet_string(&(data)->ad_data);
}
-size_t
-length_AuthorizationDataElement(const AuthorizationDataElement * data)
+size_t ASN1CALL
+length_CKSUMTYPE(const CKSUMTYPE * data)
{
size_t ret = 0;
{
- size_t Top_tag_oldret = ret;
- ret = 0;
- ret += length_krb5int32(&(data)->ad_type);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_oldret;
- }
- {
- size_t Top_tag_oldret = ret;
- ret = 0;
- ret += der_length_octet_string(&(data)->ad_data);
- ret += 1 + der_length_len(ret);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_oldret;
+ int enumint = *data;
+ ret += der_length_integer(&enumint);
}
ret += 1 + der_length_len(ret);
return ret;
}
-int
-copy_AuthorizationDataElement(const AuthorizationDataElement * from, AuthorizationDataElement * to)
+int ASN1CALL
+copy_CKSUMTYPE(const CKSUMTYPE * from, CKSUMTYPE * to)
{
memset(to, 0, sizeof(*to));
- if (copy_krb5int32(&(from)->ad_type, &(to)->ad_type))
- goto fail;
- if (der_copy_octet_string(&(from)->ad_data, &(to)->ad_data))
- goto fail;
+ *(to) = *(from);
return 0;
-fail:
- free_AuthorizationDataElement(to);
- return ENOMEM;
}
-
-
-/* Generated from ./krb5.asn1 */
-/* Do not edit */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <string.h>
-#include <errno.h>
-#include <limits.h>
-#include <asn1_err.h>
-
-int
-encode_EncryptedData(unsigned char *p, size_t len, const EncryptedData * data, size_t * size)
+int ASN1CALL
+encode_ENCTYPE(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, const ENCTYPE * data,
+ size_t * size)
{
- size_t ret = 0;
- size_t l;
- int i AFS_UNUSED, e;
-
- i = 0;
-/* cipher */
- {
- size_t Top_tag_oldret = ret;
- ret = 0;
- e = der_put_octet_string(p, len, &(data)->cipher, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_OctetString, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 2, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- ret += Top_tag_oldret;
- }
-/* kvno */
- if ((data)->kvno) {
- size_t Top_tag_oldret = ret;
- ret = 0;
- e = encode_krb5int32(p, len, (data)->kvno, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 1, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
- ret += Top_tag_oldret;
- }
-/* etype */
{
- size_t Top_tag_oldret = ret;
- ret = 0;
- e = encode_ENCTYPE(p, len, &(data)->etype, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 0, &l);
+ int enumint = (int) *data;
+ e = der_put_integer(p, len, &enumint, &l);
if (e)
return e;
p -= l;
len -= l;
ret += l;
- ret += Top_tag_oldret;
}
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence, &l);
+ ;
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_Integer,
+ &l);
if (e)
return e;
p -= l;
return 0;
}
-int
-decode_EncryptedData(const unsigned char *p, size_t len, EncryptedData * data, size_t * size)
+int ASN1CALL
+decode_ENCTYPE(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, ENCTYPE * data,
+ size_t * size)
{
size_t ret = 0;
- size_t l;
- int e;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
memset(data, 0, sizeof(*data));
{
size_t Top_datalen, Top_oldlen;
Der_type Top_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type, UT_Sequence, &Top_datalen, &l);
- if (e == 0 && Top_type != CONS) {
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Integer, &Top_datalen, &l);
+ if (e == 0 && Top_type != PRIM) {
e = ASN1_BAD_ID;
}
if (e)
}
len = Top_datalen;
{
- size_t etype_datalen, etype_oldlen;
- Der_type etype_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &etype_type, 0, &etype_datalen, &l);
- if (e == 0 && etype_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- etype_oldlen = len;
- if (etype_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = etype_datalen;
- e = decode_ENCTYPE(p, len, &(data)->etype, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = etype_oldlen - etype_datalen;
- }
- {
- size_t kvno_datalen, kvno_oldlen;
- Der_type kvno_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &kvno_type, 1, &kvno_datalen, &l);
- if (e == 0 && kvno_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e) {
- (data)->kvno = NULL;
- } else {
- (data)->kvno = calloc(1, sizeof(*(data)->kvno));
- if ((data)->kvno == NULL) {
- e = ENOMEM;
- goto fail;
- }
- p += l;
- len -= l;
- ret += l;
- kvno_oldlen = len;
- if (kvno_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = kvno_datalen;
- e = decode_krb5int32(p, len, (data)->kvno, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = kvno_oldlen - kvno_datalen;
- }
- }
- {
- size_t cipher_datalen, cipher_oldlen;
- Der_type cipher_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &cipher_type, 2, &cipher_datalen, &l);
- if (e == 0 && cipher_type != CONS) {
- e = ASN1_BAD_ID;
- }
+ int enumint;
+ e = der_get_integer(p, len, &enumint, &l);
if (e)
goto fail;
p += l;
len -= l;
ret += l;
- cipher_oldlen = len;
- if (cipher_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = cipher_datalen;
- {
- size_t cipher_Tag_datalen, cipher_Tag_oldlen;
- Der_type cipher_Tag_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &cipher_Tag_type, UT_OctetString, &cipher_Tag_datalen, &l);
- if (e == 0 && cipher_Tag_type != PRIM) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- cipher_Tag_oldlen = len;
- if (cipher_Tag_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = cipher_Tag_datalen;
- e = der_get_octet_string(p, len, &(data)->cipher, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = cipher_Tag_oldlen - cipher_Tag_datalen;
- }
- len = cipher_oldlen - cipher_datalen;
+ *data = enumint;
}
len = Top_oldlen - Top_datalen;
}
if (size)
*size = ret;
return 0;
-fail:
- free_EncryptedData(data);
+ fail:
+ free_ENCTYPE(data);
return e;
}
-void
-free_EncryptedData(EncryptedData * data)
+void ASN1CALL
+free_ENCTYPE(ENCTYPE * data)
{
- free_ENCTYPE(&(data)->etype);
- if ((data)->kvno) {
- free_krb5int32((data)->kvno);
- free((data)->kvno);
- (data)->kvno = NULL;
- }
- der_free_octet_string(&(data)->cipher);
}
-size_t
-length_EncryptedData(const EncryptedData * data)
+size_t ASN1CALL
+length_ENCTYPE(const ENCTYPE * data)
{
size_t ret = 0;
{
- size_t Top_tag_oldret = ret;
- ret = 0;
- ret += length_ENCTYPE(&(data)->etype);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_oldret;
- }
- if ((data)->kvno) {
- size_t Top_tag_oldret = ret;
- ret = 0;
- ret += length_krb5int32((data)->kvno);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_oldret;
- } {
- size_t Top_tag_oldret = ret;
- ret = 0;
- ret += der_length_octet_string(&(data)->cipher);
- ret += 1 + der_length_len(ret);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_oldret;
+ int enumint = *data;
+ ret += der_length_integer(&enumint);
}
ret += 1 + der_length_len(ret);
return ret;
}
-int
-copy_EncryptedData(const EncryptedData * from, EncryptedData * to)
+int ASN1CALL
+copy_ENCTYPE(const ENCTYPE * from, ENCTYPE * to)
{
memset(to, 0, sizeof(*to));
- if (copy_ENCTYPE(&(from)->etype, &(to)->etype))
- goto fail;
- if ((from)->kvno) {
- (to)->kvno = malloc(sizeof(*(to)->kvno));
- if ((to)->kvno == NULL)
- goto fail;
- if (copy_krb5int32((from)->kvno, (to)->kvno))
- goto fail;
- } else
- (to)->kvno = NULL;
- if (der_copy_octet_string(&(from)->cipher, &(to)->cipher))
- goto fail;
+ *(to) = *(from);
return 0;
-fail:
- free_EncryptedData(to);
- return ENOMEM;
}
+int ASN1CALL
+encode_krb5uint32(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ const krb5uint32 * data, size_t * size)
+{
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
+ e = der_put_unsigned(p, len, data, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
-/* Generated from ./krb5.asn1 */
-/* Do not edit */
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_Integer,
+ &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <string.h>
-#include <errno.h>
-#include <limits.h>
-#include <asn1_err.h>
+ *size = ret;
+ return 0;
+}
-int
-encode_PrincipalName(unsigned char *p, size_t len, const PrincipalName * data, size_t * size)
+int ASN1CALL
+decode_krb5uint32(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, krb5uint32 * data,
+ size_t * size)
{
size_t ret = 0;
- size_t l;
- int i, e;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
- i = 0;
-/* name-string */
+ memset(data, 0, sizeof(*data));
{
- size_t Top_tag_oldret = ret;
- ret = 0;
- for (i = (&(data)->name_string)->len - 1; i >= 0; --i) {
- size_t name_string_tag_tag_for_oldret = ret;
- ret = 0;
- e = der_put_general_string(p, len, &(&(data)->name_string)->val[i], &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_GeneralString, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- ret += name_string_tag_tag_for_oldret;
+ size_t Top_datalen, Top_oldlen;
+ Der_type Top_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Integer, &Top_datalen, &l);
+ if (e == 0 && Top_type != PRIM) {
+ e = ASN1_BAD_ID;
}
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence, &l);
if (e)
- return e;
- p -= l;
+ goto fail;
+ p += l;
len -= l;
ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 1, &l);
+ Top_oldlen = len;
+ if (Top_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = Top_datalen;
+ e = der_get_unsigned(p, len, data, &l);
if (e)
- return e;
- p -= l;
+ goto fail;
+ p += l;
len -= l;
ret += l;
-
- ret += Top_tag_oldret;
+ len = Top_oldlen - Top_datalen;
}
-/* name-type */
- {
- size_t Top_tag_oldret = ret;
- ret = 0;
- e = encode_NAME_TYPE(p, len, &(data)->name_type, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+ if (size)
+ *size = ret;
+ return 0;
+ fail:
+ free_krb5uint32(data);
+ return e;
+}
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 0, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+void ASN1CALL
+free_krb5uint32(krb5uint32 * data)
+{
+}
- ret += Top_tag_oldret;
- }
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence, &l);
+size_t ASN1CALL
+length_krb5uint32(const krb5uint32 * data)
+{
+ size_t ret = 0;
+ ret += der_length_unsigned(data);
+ ret += 1 + der_length_len(ret);
+ return ret;
+}
+
+int ASN1CALL
+copy_krb5uint32(const krb5uint32 * from, krb5uint32 * to)
+{
+ memset(to, 0, sizeof(*to));
+ *(to) = *(from);
+ return 0;
+}
+
+int ASN1CALL
+encode_krb5int32(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, const krb5int32 * data,
+ size_t * size)
+{
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
+
+ e = der_put_integer(p, len, data, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_Integer,
+ &l);
if (e)
return e;
p -= l;
return 0;
}
-int
-decode_PrincipalName(const unsigned char *p, size_t len, PrincipalName * data, size_t * size)
+int ASN1CALL
+decode_krb5int32(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, krb5int32 * data,
+ size_t * size)
{
size_t ret = 0;
- size_t l;
- int e;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
memset(data, 0, sizeof(*data));
{
size_t Top_datalen, Top_oldlen;
Der_type Top_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type, UT_Sequence, &Top_datalen, &l);
- if (e == 0 && Top_type != CONS) {
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Integer, &Top_datalen, &l);
+ if (e == 0 && Top_type != PRIM) {
e = ASN1_BAD_ID;
}
if (e)
goto fail;
}
len = Top_datalen;
- {
- size_t name_type_datalen, name_type_oldlen;
- Der_type name_type_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &name_type_type, 0, &name_type_datalen, &l);
- if (e == 0 && name_type_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- name_type_oldlen = len;
- if (name_type_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = name_type_datalen;
- e = decode_NAME_TYPE(p, len, &(data)->name_type, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = name_type_oldlen - name_type_datalen;
- }
- {
- size_t name_string_datalen, name_string_oldlen;
- Der_type name_string_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &name_string_type, 1, &name_string_datalen, &l);
- if (e == 0 && name_string_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- name_string_oldlen = len;
- if (name_string_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = name_string_datalen;
- {
- size_t name_string_Tag_datalen, name_string_Tag_oldlen;
- Der_type name_string_Tag_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &name_string_Tag_type, UT_Sequence, &name_string_Tag_datalen, &l);
- if (e == 0 && name_string_Tag_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- name_string_Tag_oldlen = len;
- if (name_string_Tag_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = name_string_Tag_datalen;
- {
- size_t name_string_Tag_Tag_origlen = len;
- size_t name_string_Tag_Tag_oldret = ret;
- size_t name_string_Tag_Tag_olen = 0;
- void *name_string_Tag_Tag_tmp;
- ret = 0;
- (&(data)->name_string)->len = 0;
- (&(data)->name_string)->val = NULL;
- while (ret < name_string_Tag_Tag_origlen) {
- size_t name_string_Tag_Tag_nlen = name_string_Tag_Tag_olen + sizeof(*((&(data)->name_string)->val));
- if (name_string_Tag_Tag_olen > name_string_Tag_Tag_nlen) {
- e = ASN1_OVERFLOW;
- goto fail;
- }
- name_string_Tag_Tag_olen = name_string_Tag_Tag_nlen;
- name_string_Tag_Tag_tmp = realloc((&(data)->name_string)->val, name_string_Tag_Tag_olen);
- if (name_string_Tag_Tag_tmp == NULL) {
- e = ENOMEM;
- goto fail;
- }
- (&(data)->name_string)->val = name_string_Tag_Tag_tmp;
- {
- size_t name_string_Tag_Tag_s_of_datalen, name_string_Tag_Tag_s_of_oldlen;
- Der_type name_string_Tag_Tag_s_of_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &name_string_Tag_Tag_s_of_type, UT_GeneralString, &name_string_Tag_Tag_s_of_datalen, &l);
- if (e == 0 && name_string_Tag_Tag_s_of_type != PRIM) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- name_string_Tag_Tag_s_of_oldlen = len;
- if (name_string_Tag_Tag_s_of_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = name_string_Tag_Tag_s_of_datalen;
- e = der_get_general_string(p, len, &(&(data)->name_string)->val[(&(data)->name_string)->len], &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = name_string_Tag_Tag_s_of_oldlen - name_string_Tag_Tag_s_of_datalen;
- }
- (&(data)->name_string)->len++;
- len = name_string_Tag_Tag_origlen - ret;
- }
- ret += name_string_Tag_Tag_oldret;
- }
- len = name_string_Tag_oldlen - name_string_Tag_datalen;
- }
- len = name_string_oldlen - name_string_datalen;
- }
+ e = der_get_integer(p, len, data, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
len = Top_oldlen - Top_datalen;
}
if (size)
*size = ret;
return 0;
-fail:
- free_PrincipalName(data);
+ fail:
+ free_krb5int32(data);
return e;
}
-void
-free_PrincipalName(PrincipalName * data)
+void ASN1CALL
+free_krb5int32(krb5int32 * data)
{
- free_NAME_TYPE(&(data)->name_type);
- while ((&(data)->name_string)->len) {
- der_free_general_string(&(&(data)->name_string)->val[(&(data)->name_string)->len - 1]);
- (&(data)->name_string)->len--;
- }
- free((&(data)->name_string)->val);
- (&(data)->name_string)->val = NULL;
}
-size_t
-length_PrincipalName(const PrincipalName * data)
+size_t ASN1CALL
+length_krb5int32(const krb5int32 * data)
{
size_t ret = 0;
- {
- size_t Top_tag_oldret = ret;
- ret = 0;
- ret += length_NAME_TYPE(&(data)->name_type);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_oldret;
- }
- {
- size_t Top_tag_oldret = ret;
- ret = 0;
- {
- int name_string_tag_tag_oldret = ret;
- int i;
- ret = 0;
- for (i = (&(data)->name_string)->len - 1; i >= 0; --i) {
- int name_string_tag_tag_for_oldret = ret;
- ret = 0;
- ret += der_length_general_string(&(&(data)->name_string)->val[i]);
- ret += 1 + der_length_len(ret);
- ret += name_string_tag_tag_for_oldret;
- }
- ret += name_string_tag_tag_oldret;
- }
- ret += 1 + der_length_len(ret);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_oldret;
- }
+ ret += der_length_integer(data);
ret += 1 + der_length_len(ret);
return ret;
}
-int
-copy_PrincipalName(const PrincipalName * from, PrincipalName * to)
+int ASN1CALL
+copy_krb5int32(const krb5int32 * from, krb5int32 * to)
{
memset(to, 0, sizeof(*to));
- if (copy_NAME_TYPE(&(from)->name_type, &(to)->name_type))
- goto fail;
- if (((&(to)->name_string)->val = malloc((&(from)->name_string)->len * sizeof(*(&(to)->name_string)->val))) == NULL && (&(from)->name_string)->len != 0)
- goto fail;
- for ((&(to)->name_string)->len = 0; (&(to)->name_string)->len < (&(from)->name_string)->len; (&(to)->name_string)->len++) {
- if (der_copy_general_string(&(&(from)->name_string)->val[(&(to)->name_string)->len], &(&(to)->name_string)->val[(&(to)->name_string)->len]))
- goto fail;
- }
+ *(to) = *(from);
return 0;
-fail:
- free_PrincipalName(to);
- return ENOMEM;
}
+int ASN1CALL
+encode_KerberosString(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ const KerberosString * data, size_t * size)
+{
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
+ e = der_put_general_string(p, len, data, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
-/* Generated from ./krb5.asn1 */
-/* Do not edit */
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM,
+ UT_GeneralString, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <string.h>
-#include <errno.h>
-#include <limits.h>
-#include <asn1_err.h>
+ *size = ret;
+ return 0;
+}
-int
-encode_HostAddresses(unsigned char *p, size_t len, const HostAddresses * data, size_t * size)
+int ASN1CALL
+decode_KerberosString(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ KerberosString * data, size_t * size)
{
size_t ret = 0;
- size_t l;
- int i, e;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
- i = 0;
- for (i = (data)->len - 1; i >= 0; --i) {
- size_t Top_tag_for_oldret = ret;
- ret = 0;
- e = encode_HostAddress(p, len, &(data)->val[i], &l);
+ memset(data, 0, sizeof(*data));
+ {
+ size_t Top_datalen, Top_oldlen;
+ Der_type Top_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_GeneralString, &Top_datalen, &l);
+ if (e == 0 && Top_type != PRIM) {
+ e = ASN1_BAD_ID;
+ }
if (e)
- return e;
- p -= l;
+ goto fail;
+ p += l;
len -= l;
ret += l;
-
- ret += Top_tag_for_oldret;
+ Top_oldlen = len;
+ if (Top_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = Top_datalen;
+ e = der_get_general_string(p, len, data, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = Top_oldlen - Top_datalen;
}
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence, &l);
+ if (size)
+ *size = ret;
+ return 0;
+ fail:
+ free_KerberosString(data);
+ return e;
+}
+
+void ASN1CALL
+free_KerberosString(KerberosString * data)
+{
+ der_free_general_string(data);
+}
+
+size_t ASN1CALL
+length_KerberosString(const KerberosString * data)
+{
+ size_t ret = 0;
+ ret += der_length_general_string(data);
+ ret += 1 + der_length_len(ret);
+ return ret;
+}
+
+int ASN1CALL
+copy_KerberosString(const KerberosString * from, KerberosString * to)
+{
+ memset(to, 0, sizeof(*to));
+ if (der_copy_general_string(from, to))
+ goto fail;
+ return 0;
+ fail:
+ free_KerberosString(to);
+ return ENOMEM;
+}
+
+int ASN1CALL
+encode_Realm(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, const Realm * data,
+ size_t * size)
+{
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
+
+ e = der_put_general_string(p, len, data, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM,
+ UT_GeneralString, &l);
if (e)
return e;
p -= l;
return 0;
}
-int
-decode_HostAddresses(const unsigned char *p, size_t len, HostAddresses * data, size_t * size)
+int ASN1CALL
+decode_Realm(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, Realm * data, size_t * size)
{
size_t ret = 0;
- size_t l;
- int e;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
memset(data, 0, sizeof(*data));
{
size_t Top_datalen, Top_oldlen;
Der_type Top_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type, UT_Sequence, &Top_datalen, &l);
- if (e == 0 && Top_type != CONS) {
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_GeneralString, &Top_datalen, &l);
+ if (e == 0 && Top_type != PRIM) {
e = ASN1_BAD_ID;
}
if (e)
goto fail;
}
len = Top_datalen;
- {
- size_t Top_Tag_origlen = len;
- size_t Top_Tag_oldret = ret;
- size_t Top_Tag_olen = 0;
- void *Top_Tag_tmp;
- ret = 0;
- (data)->len = 0;
- (data)->val = NULL;
- while (ret < Top_Tag_origlen) {
- size_t Top_Tag_nlen = Top_Tag_olen + sizeof(*((data)->val));
- if (Top_Tag_olen > Top_Tag_nlen) {
- e = ASN1_OVERFLOW;
- goto fail;
- }
- Top_Tag_olen = Top_Tag_nlen;
- Top_Tag_tmp = realloc((data)->val, Top_Tag_olen);
- if (Top_Tag_tmp == NULL) {
- e = ENOMEM;
- goto fail;
- }
- (data)->val = Top_Tag_tmp;
- e = decode_HostAddress(p, len, &(data)->val[(data)->len], &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- (data)->len++;
- len = Top_Tag_origlen - ret;
- }
- ret += Top_Tag_oldret;
- }
+ e = der_get_general_string(p, len, data, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
len = Top_oldlen - Top_datalen;
}
if (size)
*size = ret;
return 0;
-fail:
- free_HostAddresses(data);
+ fail:
+ free_Realm(data);
return e;
}
-void
-free_HostAddresses(HostAddresses * data)
+void ASN1CALL
+free_Realm(Realm * data)
{
- while ((data)->len) {
- free_HostAddress(&(data)->val[(data)->len - 1]);
- (data)->len--;
- }
- free((data)->val);
- (data)->val = NULL;
+ der_free_general_string(data);
}
-size_t
-length_HostAddresses(const HostAddresses * data)
+size_t ASN1CALL
+length_Realm(const Realm * data)
{
size_t ret = 0;
- {
- int Top_tag_oldret = ret;
- int i;
- ret = 0;
- for (i = (data)->len - 1; i >= 0; --i) {
- int Top_tag_for_oldret = ret;
- ret = 0;
- ret += length_HostAddress(&(data)->val[i]);
- ret += Top_tag_for_oldret;
- }
- ret += Top_tag_oldret;
- }
+ ret += der_length_general_string(data);
ret += 1 + der_length_len(ret);
return ret;
}
-int
-copy_HostAddresses(const HostAddresses * from, HostAddresses * to)
+int ASN1CALL
+copy_Realm(const Realm * from, Realm * to)
{
memset(to, 0, sizeof(*to));
- if (((to)->val = malloc((from)->len * sizeof(*(to)->val))) == NULL && (from)->len != 0)
+ if (der_copy_general_string(from, to))
goto fail;
- for ((to)->len = 0; (to)->len < (from)->len; (to)->len++) {
- if (copy_HostAddress(&(from)->val[(to)->len], &(to)->val[(to)->len]))
- goto fail;
- }
return 0;
-fail:
- free_HostAddresses(to);
+ fail:
+ free_Realm(to);
return ENOMEM;
}
-
-
-/* Generated from ./krb5.asn1 */
-/* Do not edit */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <string.h>
-#include <errno.h>
-#include <limits.h>
-#include <asn1_err.h>
-
-int
-encode_HostAddress(unsigned char *p, size_t len, const HostAddress * data, size_t * size)
+int ASN1CALL
+encode_PrincipalName(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ const PrincipalName * data, size_t * size)
{
- size_t ret = 0;
- size_t l;
- int i AFS_UNUSED, e;
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
- i = 0;
-/* address */
+/* name-string */
{
- size_t Top_tag_oldret = ret;
+ size_t Top_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
ret = 0;
- e = der_put_octet_string(p, len, &(data)->address, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+ for (i = (int) (&(data)->name_string)->len - 1; i >= 0; --i) {
+ size_t name_string_tag_tag_for_oldret = ret;
+ ret = 0;
+ e = der_put_general_string(p, len,
+ &(&(data)->name_string)->val[i], &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM,
+ UT_GeneralString, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_OctetString, &l);
+ ret += name_string_tag_tag_for_oldret;
+ }
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS,
+ UT_Sequence, &l);
if (e)
return e;
p -= l;
ret += Top_tag_oldret;
}
-/* addr-type */
+/* name-type */
{
- size_t Top_tag_oldret = ret;
+ size_t Top_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
ret = 0;
- e = encode_krb5int32(p, len, &(data)->addr_type, &l);
+ e = encode_NAME_TYPE(p, len, &(data)->name_type, &l);
if (e)
return e;
p -= l;
ret += Top_tag_oldret;
}
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence, &l);
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence,
+ &l);
if (e)
return e;
p -= l;
return 0;
}
-int
-decode_HostAddress(const unsigned char *p, size_t len, HostAddress * data, size_t * size)
+int ASN1CALL
+decode_PrincipalName(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ PrincipalName * data, size_t * size)
{
size_t ret = 0;
- size_t l;
- int e;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
memset(data, 0, sizeof(*data));
{
size_t Top_datalen, Top_oldlen;
Der_type Top_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type, UT_Sequence, &Top_datalen, &l);
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Sequence, &Top_datalen, &l);
if (e == 0 && Top_type != CONS) {
e = ASN1_BAD_ID;
}
}
len = Top_datalen;
{
- size_t addr_type_datalen, addr_type_oldlen;
- Der_type addr_type_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &addr_type_type, 0, &addr_type_datalen, &l);
- if (e == 0 && addr_type_type != CONS) {
+ size_t name_type_datalen, name_type_oldlen;
+ Der_type name_type_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &name_type_type, 0,
+ &name_type_datalen, &l);
+ if (e == 0 && name_type_type != CONS) {
e = ASN1_BAD_ID;
}
if (e)
p += l;
len -= l;
ret += l;
- addr_type_oldlen = len;
- if (addr_type_datalen > len) {
+ name_type_oldlen = len;
+ if (name_type_datalen > len) {
e = ASN1_OVERRUN;
goto fail;
}
- len = addr_type_datalen;
- e = decode_krb5int32(p, len, &(data)->addr_type, &l);
+ len = name_type_datalen;
+ e = decode_NAME_TYPE(p, len, &(data)->name_type, &l);
if (e)
goto fail;
p += l;
len -= l;
ret += l;
- len = addr_type_oldlen - addr_type_datalen;
+ len = name_type_oldlen - name_type_datalen;
}
{
- size_t address_datalen, address_oldlen;
- Der_type address_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &address_type, 1, &address_datalen, &l);
- if (e == 0 && address_type != CONS) {
+ size_t name_string_datalen, name_string_oldlen;
+ Der_type name_string_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &name_string_type, 1,
+ &name_string_datalen, &l);
+ if (e == 0 && name_string_type != CONS) {
e = ASN1_BAD_ID;
}
if (e)
p += l;
len -= l;
ret += l;
- address_oldlen = len;
- if (address_datalen > len) {
+ name_string_oldlen = len;
+ if (name_string_datalen > len) {
e = ASN1_OVERRUN;
goto fail;
}
- len = address_datalen;
+ len = name_string_datalen;
{
- size_t address_Tag_datalen, address_Tag_oldlen;
- Der_type address_Tag_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &address_Tag_type, UT_OctetString, &address_Tag_datalen, &l);
- if (e == 0 && address_Tag_type != PRIM) {
+ size_t name_string_Tag_datalen, name_string_Tag_oldlen;
+ Der_type name_string_Tag_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV,
+ &name_string_Tag_type,
+ UT_Sequence,
+ &name_string_Tag_datalen, &l);
+ if (e == 0 && name_string_Tag_type != CONS) {
e = ASN1_BAD_ID;
}
if (e)
p += l;
len -= l;
ret += l;
- address_Tag_oldlen = len;
- if (address_Tag_datalen > len) {
+ name_string_Tag_oldlen = len;
+ if (name_string_Tag_datalen > len) {
e = ASN1_OVERRUN;
goto fail;
}
- len = address_Tag_datalen;
- e = der_get_octet_string(p, len, &(data)->address, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = address_Tag_oldlen - address_Tag_datalen;
+ len = name_string_Tag_datalen;
+ {
+ size_t name_string_Tag_Tag_origlen = len;
+ size_t name_string_Tag_Tag_oldret = ret;
+ size_t name_string_Tag_Tag_olen = 0;
+ void *name_string_Tag_Tag_tmp;
+ ret = 0;
+ (&(data)->name_string)->len = 0;
+ (&(data)->name_string)->val = NULL;
+ while (ret < name_string_Tag_Tag_origlen) {
+ size_t name_string_Tag_Tag_nlen =
+ name_string_Tag_Tag_olen +
+ sizeof(*((&(data)->name_string)->val));
+ if (name_string_Tag_Tag_olen >
+ name_string_Tag_Tag_nlen) {
+ e = ASN1_OVERFLOW;
+ goto fail;
+ }
+ name_string_Tag_Tag_olen = name_string_Tag_Tag_nlen;
+ name_string_Tag_Tag_tmp =
+ realloc((&(data)->name_string)->val,
+ name_string_Tag_Tag_olen);
+ if (name_string_Tag_Tag_tmp == NULL) {
+ e = ENOMEM;
+ goto fail;
+ }
+ (&(data)->name_string)->val = name_string_Tag_Tag_tmp;
+ {
+ size_t name_string_Tag_Tag_s_of_datalen,
+ name_string_Tag_Tag_s_of_oldlen;
+ Der_type name_string_Tag_Tag_s_of_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV,
+ &name_string_Tag_Tag_s_of_type,
+ UT_GeneralString,
+ &name_string_Tag_Tag_s_of_datalen,
+ &l);
+ if (e == 0
+ && name_string_Tag_Tag_s_of_type != PRIM) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ name_string_Tag_Tag_s_of_oldlen = len;
+ if (name_string_Tag_Tag_s_of_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = name_string_Tag_Tag_s_of_datalen;
+ e = der_get_general_string(p, len,
+ &(&(data)->
+ name_string)->
+ val[(&(data)->
+ name_string)->
+ len], &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len =
+ name_string_Tag_Tag_s_of_oldlen -
+ name_string_Tag_Tag_s_of_datalen;
+ }
+ (&(data)->name_string)->len++;
+ len = name_string_Tag_Tag_origlen - ret;
+ }
+ ret += name_string_Tag_Tag_oldret;
+ }
+ len = name_string_Tag_oldlen - name_string_Tag_datalen;
}
- len = address_oldlen - address_datalen;
+ len = name_string_oldlen - name_string_datalen;
}
len = Top_oldlen - Top_datalen;
}
if (size)
*size = ret;
return 0;
-fail:
- free_HostAddress(data);
+ fail:
+ free_PrincipalName(data);
return e;
}
-void
-free_HostAddress(HostAddress * data)
+void ASN1CALL
+free_PrincipalName(PrincipalName * data)
{
- free_krb5int32(&(data)->addr_type);
- der_free_octet_string(&(data)->address);
+ free_NAME_TYPE(&(data)->name_type);
+ while ((&(data)->name_string)->len) {
+ der_free_general_string(&(&(data)->name_string)->
+ val[(&(data)->name_string)->len - 1]);
+ (&(data)->name_string)->len--;
+ }
+ free((&(data)->name_string)->val);
+ (&(data)->name_string)->val = NULL;
}
-size_t
-length_HostAddress(const HostAddress * data)
+size_t ASN1CALL
+length_PrincipalName(const PrincipalName * data)
{
size_t ret = 0;
{
size_t Top_tag_oldret = ret;
ret = 0;
- ret += length_krb5int32(&(data)->addr_type);
+ ret += length_NAME_TYPE(&(data)->name_type);
ret += 1 + der_length_len(ret);
ret += Top_tag_oldret;
}
{
size_t Top_tag_oldret = ret;
ret = 0;
- ret += der_length_octet_string(&(data)->address);
+ {
+ size_t name_string_tag_tag_oldret = ret;
+ unsigned int n_name_string_tag_tag;
+ ret = 0;
+ for (n_name_string_tag_tag = (&(data)->name_string)->len;
+ n_name_string_tag_tag > 0; --n_name_string_tag_tag) {
+ size_t name_string_tag_tag_for_oldret = ret;
+ ret = 0;
+ ret +=
+ der_length_general_string(&(&(data)->name_string)->
+ val[n_name_string_tag_tag - 1]);
+ ret += 1 + der_length_len(ret);
+ ret += name_string_tag_tag_for_oldret;
+ }
+ ret += name_string_tag_tag_oldret;
+ }
ret += 1 + der_length_len(ret);
ret += 1 + der_length_len(ret);
ret += Top_tag_oldret;
return ret;
}
-int
-copy_HostAddress(const HostAddress * from, HostAddress * to)
+int ASN1CALL
+copy_PrincipalName(const PrincipalName * from, PrincipalName * to)
{
memset(to, 0, sizeof(*to));
- if (copy_krb5int32(&(from)->addr_type, &(to)->addr_type))
+ if (copy_NAME_TYPE(&(from)->name_type, &(to)->name_type))
goto fail;
- if (der_copy_octet_string(&(from)->address, &(to)->address))
+ if (((&(to)->name_string)->val =
+ malloc((&(from)->name_string)->len *
+ sizeof(*(&(to)->name_string)->val))) == NULL
+ && (&(from)->name_string)->len != 0)
goto fail;
+ for ((&(to)->name_string)->len = 0;
+ (&(to)->name_string)->len < (&(from)->name_string)->len;
+ (&(to)->name_string)->len++) {
+ if (der_copy_general_string
+ (&(&(from)->name_string)->val[(&(to)->name_string)->len],
+ &(&(to)->name_string)->val[(&(to)->name_string)->len]))
+ goto fail;
+ }
return 0;
-fail:
- free_HostAddress(to);
+ fail:
+ free_PrincipalName(to);
return ENOMEM;
}
+int ASN1CALL
+encode_Principal(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, const Principal * data,
+ size_t * size)
+{
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
+/* realm */
+ {
+ size_t Top_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_Realm(p, len, &(data)->realm, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
-/* Generated from ./krb5.asn1 */
-/* Do not edit */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <string.h>
-#include <errno.h>
-#include <limits.h>
-#include <asn1_err.h>
-
-int
-encode_AuthorizationData(unsigned char *p, size_t len, const AuthorizationData * data, size_t * size)
-{
- size_t ret = 0;
- size_t l;
- int i, e;
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 1, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
- i = 0;
- for (i = (data)->len - 1; i >= 0; --i) {
- size_t Top_tag_for_oldret = ret;
+ ret += Top_tag_oldret;
+ }
+/* name */
+ {
+ size_t Top_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
ret = 0;
- e = encode_AuthorizationDataElement(p, len, &(data)->val[i], &l);
+ e = encode_PrincipalName(p, len, &(data)->name, &l);
if (e)
return e;
p -= l;
len -= l;
ret += l;
- ret += Top_tag_for_oldret;
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 0, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_oldret;
}
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence, &l);
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence,
+ &l);
if (e)
return e;
p -= l;
return 0;
}
-int
-decode_AuthorizationData(const unsigned char *p, size_t len, AuthorizationData * data, size_t * size)
+int ASN1CALL
+decode_Principal(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, Principal * data,
+ size_t * size)
{
size_t ret = 0;
- size_t l;
- int e;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
memset(data, 0, sizeof(*data));
{
size_t Top_datalen, Top_oldlen;
Der_type Top_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type, UT_Sequence, &Top_datalen, &l);
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Sequence, &Top_datalen, &l);
if (e == 0 && Top_type != CONS) {
e = ASN1_BAD_ID;
}
}
len = Top_datalen;
{
- size_t Top_Tag_origlen = len;
- size_t Top_Tag_oldret = ret;
- size_t Top_Tag_olen = 0;
- void *Top_Tag_tmp;
- ret = 0;
- (data)->len = 0;
- (data)->val = NULL;
- while (ret < Top_Tag_origlen) {
- size_t Top_Tag_nlen = Top_Tag_olen + sizeof(*((data)->val));
- if (Top_Tag_olen > Top_Tag_nlen) {
- e = ASN1_OVERFLOW;
- goto fail;
- }
- Top_Tag_olen = Top_Tag_nlen;
- Top_Tag_tmp = realloc((data)->val, Top_Tag_olen);
- if (Top_Tag_tmp == NULL) {
- e = ENOMEM;
- goto fail;
- }
- (data)->val = Top_Tag_tmp;
- e = decode_AuthorizationDataElement(p, len, &(data)->val[(data)->len], &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- (data)->len++;
- len = Top_Tag_origlen - ret;
+ size_t name_datalen, name_oldlen;
+ Der_type name_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &name_type,
+ 0, &name_datalen, &l);
+ if (e == 0 && name_type != CONS) {
+ e = ASN1_BAD_ID;
}
- ret += Top_Tag_oldret;
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ name_oldlen = len;
+ if (name_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = name_datalen;
+ e = decode_PrincipalName(p, len, &(data)->name, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = name_oldlen - name_datalen;
+ }
+ {
+ size_t realm_datalen, realm_oldlen;
+ Der_type realm_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &realm_type,
+ 1, &realm_datalen, &l);
+ if (e == 0 && realm_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ realm_oldlen = len;
+ if (realm_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = realm_datalen;
+ e = decode_Realm(p, len, &(data)->realm, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = realm_oldlen - realm_datalen;
}
len = Top_oldlen - Top_datalen;
}
if (size)
*size = ret;
return 0;
-fail:
- free_AuthorizationData(data);
+ fail:
+ free_Principal(data);
return e;
}
-void
-free_AuthorizationData(AuthorizationData * data)
+void ASN1CALL
+free_Principal(Principal * data)
{
- while ((data)->len) {
- free_AuthorizationDataElement(&(data)->val[(data)->len - 1]);
- (data)->len--;
- }
- free((data)->val);
- (data)->val = NULL;
+ free_PrincipalName(&(data)->name);
+ free_Realm(&(data)->realm);
}
-size_t
-length_AuthorizationData(const AuthorizationData * data)
+size_t ASN1CALL
+length_Principal(const Principal * data)
{
size_t ret = 0;
{
- int Top_tag_oldret = ret;
- int i;
+ size_t Top_tag_oldret = ret;
+ ret = 0;
+ ret += length_PrincipalName(&(data)->name);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_oldret;
+ }
+ {
+ size_t Top_tag_oldret = ret;
ret = 0;
- for (i = (data)->len - 1; i >= 0; --i) {
- int Top_tag_for_oldret = ret;
- ret = 0;
- ret += length_AuthorizationDataElement(&(data)->val[i]);
- ret += Top_tag_for_oldret;
- }
+ ret += length_Realm(&(data)->realm);
+ ret += 1 + der_length_len(ret);
ret += Top_tag_oldret;
}
ret += 1 + der_length_len(ret);
return ret;
}
-int
-copy_AuthorizationData(const AuthorizationData * from, AuthorizationData * to)
+int ASN1CALL
+copy_Principal(const Principal * from, Principal * to)
{
memset(to, 0, sizeof(*to));
- if (((to)->val = malloc((from)->len * sizeof(*(to)->val))) == NULL && (from)->len != 0)
+ if (copy_PrincipalName(&(from)->name, &(to)->name))
+ goto fail;
+ if (copy_Realm(&(from)->realm, &(to)->realm))
goto fail;
- for ((to)->len = 0; (to)->len < (from)->len; (to)->len++) {
- if (copy_AuthorizationDataElement(&(from)->val[(to)->len], &(to)->val[(to)->len]))
- goto fail;
- }
return 0;
-fail:
- free_AuthorizationData(to);
+ fail:
+ free_Principal(to);
return ENOMEM;
}
-int
-add_AuthorizationData(AuthorizationData * data, const AuthorizationDataElement * element)
+int ASN1CALL
+encode_Principals(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ const Principals * data, size_t * size)
{
- int ret;
- void *ptr;
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
- ptr = realloc(data->val,
- (data->len + 1) * sizeof(data->val[0]));
- if (ptr == NULL)
- return ENOMEM;
- data->val = ptr;
+ for (i = (int) (data)->len - 1; i >= 0; --i) {
+ size_t Top_tag_for_oldret = ret;
+ ret = 0;
+ e = encode_Principal(p, len, &(data)->val[i], &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
- ret = copy_AuthorizationDataElement(element, &data->val[data->len]);
- if (ret)
+ ret += Top_tag_for_oldret;
+ }
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence,
+ &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ *size = ret;
+ return 0;
+}
+
+int ASN1CALL
+decode_Principals(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, Principals * data,
+ size_t * size)
+{
+ size_t ret = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
+
+ memset(data, 0, sizeof(*data));
+ {
+ size_t Top_datalen, Top_oldlen;
+ Der_type Top_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Sequence, &Top_datalen, &l);
+ if (e == 0 && Top_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ Top_oldlen = len;
+ if (Top_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = Top_datalen;
+ {
+ size_t Top_Tag_origlen = len;
+ size_t Top_Tag_oldret = ret;
+ size_t Top_Tag_olen = 0;
+ void *Top_Tag_tmp;
+ ret = 0;
+ (data)->len = 0;
+ (data)->val = NULL;
+ while (ret < Top_Tag_origlen) {
+ size_t Top_Tag_nlen = Top_Tag_olen + sizeof(*((data)->val));
+ if (Top_Tag_olen > Top_Tag_nlen) {
+ e = ASN1_OVERFLOW;
+ goto fail;
+ }
+ Top_Tag_olen = Top_Tag_nlen;
+ Top_Tag_tmp = realloc((data)->val, Top_Tag_olen);
+ if (Top_Tag_tmp == NULL) {
+ e = ENOMEM;
+ goto fail;
+ }
+ (data)->val = Top_Tag_tmp;
+ e = decode_Principal(p, len, &(data)->val[(data)->len], &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ (data)->len++;
+ len = Top_Tag_origlen - ret;
+ }
+ ret += Top_Tag_oldret;
+ }
+ len = Top_oldlen - Top_datalen;
+ }
+ if (size)
+ *size = ret;
+ return 0;
+ fail:
+ free_Principals(data);
+ return e;
+}
+
+void ASN1CALL
+free_Principals(Principals * data)
+{
+ while ((data)->len) {
+ free_Principal(&(data)->val[(data)->len - 1]);
+ (data)->len--;
+ }
+ free((data)->val);
+ (data)->val = NULL;
+}
+
+size_t ASN1CALL
+length_Principals(const Principals * data)
+{
+ size_t ret = 0;
+ {
+ size_t Top_tag_oldret = ret;
+ unsigned int n_Top_tag;
+ ret = 0;
+ for (n_Top_tag = (data)->len; n_Top_tag > 0; --n_Top_tag) {
+ size_t Top_tag_for_oldret = ret;
+ ret = 0;
+ ret += length_Principal(&(data)->val[n_Top_tag - 1]);
+ ret += Top_tag_for_oldret;
+ }
+ ret += Top_tag_oldret;
+ }
+ ret += 1 + der_length_len(ret);
+ return ret;
+}
+
+int ASN1CALL
+copy_Principals(const Principals * from, Principals * to)
+{
+ memset(to, 0, sizeof(*to));
+ if (((to)->val = malloc((from)->len * sizeof(*(to)->val))) == NULL
+ && (from)->len != 0)
+ goto fail;
+ for ((to)->len = 0; (to)->len < (from)->len; (to)->len++) {
+ if (copy_Principal(&(from)->val[(to)->len], &(to)->val[(to)->len]))
+ goto fail;
+ }
+ return 0;
+ fail:
+ free_Principals(to);
+ return ENOMEM;
+}
+
+int ASN1CALL
+add_Principals(Principals * data, const Principal * element)
+{
+ int ret;
+ void *ptr;
+
+ ptr = realloc(data->val, (data->len + 1) * sizeof(data->val[0]));
+ if (ptr == NULL)
+ return ENOMEM;
+ data->val = ptr;
+
+ ret = copy_Principal(element, &data->val[data->len]);
+ if (ret)
return ret;
data->len++;
return 0;
}
-int
-remove_AuthorizationData(AuthorizationData * data, unsigned int element)
+int ASN1CALL
+remove_Principals(Principals * data, unsigned int element)
{
void *ptr;
if (data->len == 0 || element >= data->len)
return ASN1_OVERRUN;
- free_AuthorizationDataElement(&data->val[element]);
+ free_Principal(&data->val[element]);
data->len--;
if (element < data->len)
memmove(&data->val[element], &data->val[element + 1],
- sizeof(data->val[0]) * data->len);
+ sizeof(data->val[0]) * (data->len - element));
ptr = realloc(data->val, data->len * sizeof(data->val[0]));
if (ptr != NULL || data->len == 0)
data->val = ptr;
return 0;
}
-
-
-/* Generated from ./krb5.asn1 */
-/* Do not edit */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <string.h>
-#include <errno.h>
-#include <limits.h>
-#include <asn1_err.h>
-
-int
-encode_EncTicketPart(unsigned char *p, size_t len, const EncTicketPart * data, size_t * size)
+int ASN1CALL
+encode_HostAddress(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ const HostAddress * data, size_t * size)
{
- size_t ret = 0;
- size_t l;
- int i AFS_UNUSED, e;
-
- i = 0;
-/* authorization-data */
- if ((data)->authorization_data) {
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- e = encode_AuthorizationData(p, len, (data)->authorization_data, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 10, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
- ret += Top_tag_tag_oldret;
- }
-/* caddr */
- if ((data)->caddr) {
- size_t Top_tag_tag_oldret = ret;
+/* address */
+ {
+ size_t Top_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
ret = 0;
- e = encode_HostAddresses(p, len, (data)->caddr, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 9, &l);
+ e = der_put_octet_string(p, len, &(data)->address, &l);
if (e)
return e;
p -= l;
len -= l;
ret += l;
- ret += Top_tag_tag_oldret;
- }
-/* renew-till */
- if ((data)->renew_till) {
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- e = encode_KerberosTime(p, len, (data)->renew_till, &l);
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM,
+ UT_OctetString, &l);
if (e)
return e;
p -= l;
len -= l;
ret += l;
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 8, &l);
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 1, &l);
if (e)
return e;
p -= l;
len -= l;
ret += l;
- ret += Top_tag_tag_oldret;
+ ret += Top_tag_oldret;
}
-/* endtime */
+/* addr-type */
{
- size_t Top_tag_tag_oldret = ret;
+ size_t Top_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
ret = 0;
- e = encode_KerberosTime(p, len, &(data)->endtime, &l);
+ e = encode_krb5int32(p, len, &(data)->addr_type, &l);
if (e)
return e;
p -= l;
len -= l;
ret += l;
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 7, &l);
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 0, &l);
if (e)
return e;
p -= l;
len -= l;
ret += l;
- ret += Top_tag_tag_oldret;
+ ret += Top_tag_oldret;
}
-/* starttime */
- if ((data)->starttime) {
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- e = encode_KerberosTime(p, len, (data)->starttime, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 6, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence,
+ &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
- ret += Top_tag_tag_oldret;
- }
-/* authtime */
- {
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- e = encode_KerberosTime(p, len, &(data)->authtime, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+ *size = ret;
+ return 0;
+}
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 5, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+int ASN1CALL
+decode_HostAddress(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, HostAddress * data,
+ size_t * size)
+{
+ size_t ret = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
- ret += Top_tag_tag_oldret;
- }
-/* transited */
+ memset(data, 0, sizeof(*data));
{
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- e = encode_TransitedEncoding(p, len, &(data)->transited, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 4, &l);
+ size_t Top_datalen, Top_oldlen;
+ Der_type Top_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Sequence, &Top_datalen, &l);
+ if (e == 0 && Top_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- ret += Top_tag_tag_oldret;
- }
-/* cname */
- {
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- e = encode_PrincipalName(p, len, &(data)->cname, &l);
- if (e)
- return e;
- p -= l;
+ goto fail;
+ p += l;
len -= l;
ret += l;
+ Top_oldlen = len;
+ if (Top_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = Top_datalen;
+ {
+ size_t addr_type_datalen, addr_type_oldlen;
+ Der_type addr_type_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &addr_type_type, 0,
+ &addr_type_datalen, &l);
+ if (e == 0 && addr_type_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ addr_type_oldlen = len;
+ if (addr_type_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = addr_type_datalen;
+ e = decode_krb5int32(p, len, &(data)->addr_type, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = addr_type_oldlen - addr_type_datalen;
+ }
+ {
+ size_t address_datalen, address_oldlen;
+ Der_type address_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &address_type, 1, &address_datalen,
+ &l);
+ if (e == 0 && address_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ address_oldlen = len;
+ if (address_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = address_datalen;
+ {
+ size_t address_Tag_datalen, address_Tag_oldlen;
+ Der_type address_Tag_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV,
+ &address_Tag_type,
+ UT_OctetString,
+ &address_Tag_datalen, &l);
+ if (e == 0 && address_Tag_type != PRIM) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ address_Tag_oldlen = len;
+ if (address_Tag_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = address_Tag_datalen;
+ e = der_get_octet_string(p, len, &(data)->address, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = address_Tag_oldlen - address_Tag_datalen;
+ }
+ len = address_oldlen - address_datalen;
+ }
+ len = Top_oldlen - Top_datalen;
+ }
+ if (size)
+ *size = ret;
+ return 0;
+ fail:
+ free_HostAddress(data);
+ return e;
+}
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 3, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+void ASN1CALL
+free_HostAddress(HostAddress * data)
+{
+ free_krb5int32(&(data)->addr_type);
+ der_free_octet_string(&(data)->address);
+}
- ret += Top_tag_tag_oldret;
- }
-/* crealm */
+size_t ASN1CALL
+length_HostAddress(const HostAddress * data)
+{
+ size_t ret = 0;
{
- size_t Top_tag_tag_oldret = ret;
+ size_t Top_tag_oldret = ret;
ret = 0;
- e = encode_Realm(p, len, &(data)->crealm, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 2, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- ret += Top_tag_tag_oldret;
+ ret += length_krb5int32(&(data)->addr_type);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_oldret;
}
-/* key */
{
- size_t Top_tag_tag_oldret = ret;
+ size_t Top_tag_oldret = ret;
ret = 0;
- e = encode_EncryptionKey(p, len, &(data)->key, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+ ret += der_length_octet_string(&(data)->address);
+ ret += 1 + der_length_len(ret);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_oldret;
+ }
+ ret += 1 + der_length_len(ret);
+ return ret;
+}
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 1, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+int ASN1CALL
+copy_HostAddress(const HostAddress * from, HostAddress * to)
+{
+ memset(to, 0, sizeof(*to));
+ if (copy_krb5int32(&(from)->addr_type, &(to)->addr_type))
+ goto fail;
+ if (der_copy_octet_string(&(from)->address, &(to)->address))
+ goto fail;
+ return 0;
+ fail:
+ free_HostAddress(to);
+ return ENOMEM;
+}
- ret += Top_tag_tag_oldret;
- }
-/* flags */
- {
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- e = encode_TicketFlags(p, len, &(data)->flags, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+int ASN1CALL
+encode_HostAddresses(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ const HostAddresses * data, size_t * size)
+{
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 0, &l);
+ for (i = (int) (data)->len - 1; i >= 0; --i) {
+ size_t Top_tag_for_oldret = ret;
+ ret = 0;
+ e = encode_HostAddress(p, len, &(data)->val[i], &l);
if (e)
return e;
p -= l;
len -= l;
ret += l;
- ret += Top_tag_tag_oldret;
+ ret += Top_tag_for_oldret;
}
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_APPL, CONS, 3, &l);
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence,
+ &l);
if (e)
return e;
p -= l;
return 0;
}
-int
-decode_EncTicketPart(const unsigned char *p, size_t len, EncTicketPart * data, size_t * size)
+int ASN1CALL
+decode_HostAddresses(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ HostAddresses * data, size_t * size)
{
size_t ret = 0;
- size_t l;
- int e;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
memset(data, 0, sizeof(*data));
{
size_t Top_datalen, Top_oldlen;
Der_type Top_type;
- e = der_match_tag_and_length(p, len, ASN1_C_APPL, &Top_type, 3, &Top_datalen, &l);
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Sequence, &Top_datalen, &l);
if (e == 0 && Top_type != CONS) {
e = ASN1_BAD_ID;
}
}
len = Top_datalen;
{
- size_t Top_Tag_datalen, Top_Tag_oldlen;
- Der_type Top_Tag_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_Tag_type, UT_Sequence, &Top_Tag_datalen, &l);
- if (e == 0 && Top_Tag_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- Top_Tag_oldlen = len;
- if (Top_Tag_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = Top_Tag_datalen;
- {
- size_t flags_datalen, flags_oldlen;
- Der_type flags_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &flags_type, 0, &flags_datalen, &l);
- if (e == 0 && flags_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- flags_oldlen = len;
- if (flags_datalen > len) {
- e = ASN1_OVERRUN;
+ size_t Top_Tag_origlen = len;
+ size_t Top_Tag_oldret = ret;
+ size_t Top_Tag_olen = 0;
+ void *Top_Tag_tmp;
+ ret = 0;
+ (data)->len = 0;
+ (data)->val = NULL;
+ while (ret < Top_Tag_origlen) {
+ size_t Top_Tag_nlen = Top_Tag_olen + sizeof(*((data)->val));
+ if (Top_Tag_olen > Top_Tag_nlen) {
+ e = ASN1_OVERFLOW;
goto fail;
}
- len = flags_datalen;
- e = decode_TicketFlags(p, len, &(data)->flags, &l);
- if (e)
+ Top_Tag_olen = Top_Tag_nlen;
+ Top_Tag_tmp = realloc((data)->val, Top_Tag_olen);
+ if (Top_Tag_tmp == NULL) {
+ e = ENOMEM;
goto fail;
- p += l;
- len -= l;
- ret += l;
- len = flags_oldlen - flags_datalen;
- }
- {
- size_t key_datalen, key_oldlen;
- Der_type key_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &key_type, 1, &key_datalen, &l);
- if (e == 0 && key_type != CONS) {
- e = ASN1_BAD_ID;
}
+ (data)->val = Top_Tag_tmp;
+ e = decode_HostAddress(p, len, &(data)->val[(data)->len], &l);
if (e)
goto fail;
p += l;
len -= l;
ret += l;
- key_oldlen = len;
- if (key_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = key_datalen;
- e = decode_EncryptionKey(p, len, &(data)->key, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = key_oldlen - key_datalen;
+ (data)->len++;
+ len = Top_Tag_origlen - ret;
+ }
+ ret += Top_Tag_oldret;
+ }
+ len = Top_oldlen - Top_datalen;
+ }
+ if (size)
+ *size = ret;
+ return 0;
+ fail:
+ free_HostAddresses(data);
+ return e;
+}
+
+void ASN1CALL
+free_HostAddresses(HostAddresses * data)
+{
+ while ((data)->len) {
+ free_HostAddress(&(data)->val[(data)->len - 1]);
+ (data)->len--;
+ }
+ free((data)->val);
+ (data)->val = NULL;
+}
+
+size_t ASN1CALL
+length_HostAddresses(const HostAddresses * data)
+{
+ size_t ret = 0;
+ {
+ size_t Top_tag_oldret = ret;
+ unsigned int n_Top_tag;
+ ret = 0;
+ for (n_Top_tag = (data)->len; n_Top_tag > 0; --n_Top_tag) {
+ size_t Top_tag_for_oldret = ret;
+ ret = 0;
+ ret += length_HostAddress(&(data)->val[n_Top_tag - 1]);
+ ret += Top_tag_for_oldret;
+ }
+ ret += Top_tag_oldret;
+ }
+ ret += 1 + der_length_len(ret);
+ return ret;
+}
+
+int ASN1CALL
+copy_HostAddresses(const HostAddresses * from, HostAddresses * to)
+{
+ memset(to, 0, sizeof(*to));
+ if (((to)->val = malloc((from)->len * sizeof(*(to)->val))) == NULL
+ && (from)->len != 0)
+ goto fail;
+ for ((to)->len = 0; (to)->len < (from)->len; (to)->len++) {
+ if (copy_HostAddress(&(from)->val[(to)->len], &(to)->val[(to)->len]))
+ goto fail;
+ }
+ return 0;
+ fail:
+ free_HostAddresses(to);
+ return ENOMEM;
+}
+
+int ASN1CALL
+encode_KerberosTime(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ const KerberosTime * data, size_t * size)
+{
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
+
+ e = der_put_generalized_time(p, len, data, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM,
+ UT_GeneralizedTime, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ *size = ret;
+ return 0;
+}
+
+int ASN1CALL
+decode_KerberosTime(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, KerberosTime * data,
+ size_t * size)
+{
+ size_t ret = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
+
+ memset(data, 0, sizeof(*data));
+ {
+ size_t Top_datalen, Top_oldlen;
+ Der_type Top_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_GeneralizedTime, &Top_datalen, &l);
+ if (e == 0 && Top_type != PRIM) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ Top_oldlen = len;
+ if (Top_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = Top_datalen;
+ e = der_get_generalized_time(p, len, data, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = Top_oldlen - Top_datalen;
+ }
+ if (size)
+ *size = ret;
+ return 0;
+ fail:
+ free_KerberosTime(data);
+ return e;
+}
+
+void ASN1CALL
+free_KerberosTime(KerberosTime * data)
+{
+}
+
+size_t ASN1CALL
+length_KerberosTime(const KerberosTime * data)
+{
+ size_t ret = 0;
+ ret += der_length_generalized_time(data);
+ ret += 1 + der_length_len(ret);
+ return ret;
+}
+
+int ASN1CALL
+copy_KerberosTime(const KerberosTime * from, KerberosTime * to)
+{
+ memset(to, 0, sizeof(*to));
+ *(to) = *(from);
+ return 0;
+}
+
+int ASN1CALL
+encode_AuthorizationDataElement(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ const AuthorizationDataElement * data,
+ size_t * size)
+{
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
+
+/* ad-data */
+ {
+ size_t Top_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = der_put_octet_string(p, len, &(data)->ad_data, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM,
+ UT_OctetString, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 1, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_oldret;
+ }
+/* ad-type */
+ {
+ size_t Top_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_krb5int32(p, len, &(data)->ad_type, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 0, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_oldret;
+ }
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence,
+ &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ *size = ret;
+ return 0;
+}
+
+int ASN1CALL
+decode_AuthorizationDataElement(const unsigned char *p
+ HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ AuthorizationDataElement * data,
+ size_t * size)
+{
+ size_t ret = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
+
+ memset(data, 0, sizeof(*data));
+ {
+ size_t Top_datalen, Top_oldlen;
+ Der_type Top_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Sequence, &Top_datalen, &l);
+ if (e == 0 && Top_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ Top_oldlen = len;
+ if (Top_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = Top_datalen;
+ {
+ size_t ad_type_datalen, ad_type_oldlen;
+ Der_type ad_type_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &ad_type_type, 0, &ad_type_datalen,
+ &l);
+ if (e == 0 && ad_type_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ ad_type_oldlen = len;
+ if (ad_type_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = ad_type_datalen;
+ e = decode_krb5int32(p, len, &(data)->ad_type, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = ad_type_oldlen - ad_type_datalen;
+ }
+ {
+ size_t ad_data_datalen, ad_data_oldlen;
+ Der_type ad_data_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &ad_data_type, 1, &ad_data_datalen,
+ &l);
+ if (e == 0 && ad_data_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ ad_data_oldlen = len;
+ if (ad_data_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
}
+ len = ad_data_datalen;
{
- size_t crealm_datalen, crealm_oldlen;
- Der_type crealm_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &crealm_type, 2, &crealm_datalen, &l);
- if (e == 0 && crealm_type != CONS) {
+ size_t ad_data_Tag_datalen, ad_data_Tag_oldlen;
+ Der_type ad_data_Tag_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV,
+ &ad_data_Tag_type,
+ UT_OctetString,
+ &ad_data_Tag_datalen, &l);
+ if (e == 0 && ad_data_Tag_type != PRIM) {
e = ASN1_BAD_ID;
}
if (e)
p += l;
len -= l;
ret += l;
- crealm_oldlen = len;
- if (crealm_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = crealm_datalen;
- e = decode_Realm(p, len, &(data)->crealm, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = crealm_oldlen - crealm_datalen;
- }
- {
- size_t cname_datalen, cname_oldlen;
- Der_type cname_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &cname_type, 3, &cname_datalen, &l);
- if (e == 0 && cname_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- cname_oldlen = len;
- if (cname_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = cname_datalen;
- e = decode_PrincipalName(p, len, &(data)->cname, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = cname_oldlen - cname_datalen;
- }
- {
- size_t transited_datalen, transited_oldlen;
- Der_type transited_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &transited_type, 4, &transited_datalen, &l);
- if (e == 0 && transited_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- transited_oldlen = len;
- if (transited_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = transited_datalen;
- e = decode_TransitedEncoding(p, len, &(data)->transited, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = transited_oldlen - transited_datalen;
- }
- {
- size_t authtime_datalen, authtime_oldlen;
- Der_type authtime_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &authtime_type, 5, &authtime_datalen, &l);
- if (e == 0 && authtime_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- authtime_oldlen = len;
- if (authtime_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = authtime_datalen;
- e = decode_KerberosTime(p, len, &(data)->authtime, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = authtime_oldlen - authtime_datalen;
- }
- {
- size_t starttime_datalen, starttime_oldlen;
- Der_type starttime_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &starttime_type, 6, &starttime_datalen, &l);
- if (e == 0 && starttime_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e) {
- (data)->starttime = NULL;
- } else {
- (data)->starttime = calloc(1, sizeof(*(data)->starttime));
- if ((data)->starttime == NULL) {
- e = ENOMEM;
- goto fail;
- }
- p += l;
- len -= l;
- ret += l;
- starttime_oldlen = len;
- if (starttime_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = starttime_datalen;
- e = decode_KerberosTime(p, len, (data)->starttime, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = starttime_oldlen - starttime_datalen;
- }
- }
- {
- size_t endtime_datalen, endtime_oldlen;
- Der_type endtime_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &endtime_type, 7, &endtime_datalen, &l);
- if (e == 0 && endtime_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- endtime_oldlen = len;
- if (endtime_datalen > len) {
+ ad_data_Tag_oldlen = len;
+ if (ad_data_Tag_datalen > len) {
e = ASN1_OVERRUN;
goto fail;
}
- len = endtime_datalen;
- e = decode_KerberosTime(p, len, &(data)->endtime, &l);
+ len = ad_data_Tag_datalen;
+ e = der_get_octet_string(p, len, &(data)->ad_data, &l);
if (e)
goto fail;
p += l;
len -= l;
ret += l;
- len = endtime_oldlen - endtime_datalen;
- }
- {
- size_t renew_till_datalen, renew_till_oldlen;
- Der_type renew_till_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &renew_till_type, 8, &renew_till_datalen, &l);
- if (e == 0 && renew_till_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e) {
- (data)->renew_till = NULL;
- } else {
- (data)->renew_till = calloc(1, sizeof(*(data)->renew_till));
- if ((data)->renew_till == NULL) {
- e = ENOMEM;
- goto fail;
- }
- p += l;
- len -= l;
- ret += l;
- renew_till_oldlen = len;
- if (renew_till_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = renew_till_datalen;
- e = decode_KerberosTime(p, len, (data)->renew_till, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = renew_till_oldlen - renew_till_datalen;
- }
- }
- {
- size_t caddr_datalen, caddr_oldlen;
- Der_type caddr_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &caddr_type, 9, &caddr_datalen, &l);
- if (e == 0 && caddr_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e) {
- (data)->caddr = NULL;
- } else {
- (data)->caddr = calloc(1, sizeof(*(data)->caddr));
- if ((data)->caddr == NULL) {
- e = ENOMEM;
- goto fail;
- }
- p += l;
- len -= l;
- ret += l;
- caddr_oldlen = len;
- if (caddr_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = caddr_datalen;
- e = decode_HostAddresses(p, len, (data)->caddr, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = caddr_oldlen - caddr_datalen;
- }
- }
- {
- size_t authorization_data_datalen, authorization_data_oldlen;
- Der_type authorization_data_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &authorization_data_type, 10, &authorization_data_datalen, &l);
- if (e == 0 && authorization_data_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e) {
- (data)->authorization_data = NULL;
- } else {
- (data)->authorization_data = calloc(1, sizeof(*(data)->authorization_data));
- if ((data)->authorization_data == NULL) {
- e = ENOMEM;
- goto fail;
- }
- p += l;
- len -= l;
- ret += l;
- authorization_data_oldlen = len;
- if (authorization_data_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = authorization_data_datalen;
- e = decode_AuthorizationData(p, len, (data)->authorization_data, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = authorization_data_oldlen - authorization_data_datalen;
- }
+ len = ad_data_Tag_oldlen - ad_data_Tag_datalen;
}
- len = Top_Tag_oldlen - Top_Tag_datalen;
+ len = ad_data_oldlen - ad_data_datalen;
}
len = Top_oldlen - Top_datalen;
}
if (size)
*size = ret;
return 0;
-fail:
- free_EncTicketPart(data);
+ fail:
+ free_AuthorizationDataElement(data);
return e;
}
-void
-free_EncTicketPart(EncTicketPart * data)
+void ASN1CALL
+free_AuthorizationDataElement(AuthorizationDataElement * data)
{
- free_TicketFlags(&(data)->flags);
- free_EncryptionKey(&(data)->key);
- free_Realm(&(data)->crealm);
- free_PrincipalName(&(data)->cname);
- free_TransitedEncoding(&(data)->transited);
- free_KerberosTime(&(data)->authtime);
- if ((data)->starttime) {
- free_KerberosTime((data)->starttime);
- free((data)->starttime);
- (data)->starttime = NULL;
- }
- free_KerberosTime(&(data)->endtime);
- if ((data)->renew_till) {
- free_KerberosTime((data)->renew_till);
- free((data)->renew_till);
- (data)->renew_till = NULL;
- }
- if ((data)->caddr) {
- free_HostAddresses((data)->caddr);
- free((data)->caddr);
- (data)->caddr = NULL;
- }
- if ((data)->authorization_data) {
- free_AuthorizationData((data)->authorization_data);
- free((data)->authorization_data);
- (data)->authorization_data = NULL;
- }
+ free_krb5int32(&(data)->ad_type);
+ der_free_octet_string(&(data)->ad_data);
}
-size_t
-length_EncTicketPart(const EncTicketPart * data)
+size_t ASN1CALL
+length_AuthorizationDataElement(const AuthorizationDataElement * data)
{
size_t ret = 0;
{
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- ret += length_TicketFlags(&(data)->flags);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_tag_oldret;
- }
- {
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- ret += length_EncryptionKey(&(data)->key);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_tag_oldret;
- }
- {
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- ret += length_Realm(&(data)->crealm);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_tag_oldret;
- }
- {
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- ret += length_PrincipalName(&(data)->cname);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_tag_oldret;
- }
- {
- size_t Top_tag_tag_oldret = ret;
+ size_t Top_tag_oldret = ret;
ret = 0;
- ret += length_TransitedEncoding(&(data)->transited);
+ ret += length_krb5int32(&(data)->ad_type);
ret += 1 + der_length_len(ret);
- ret += Top_tag_tag_oldret;
+ ret += Top_tag_oldret;
}
{
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- ret += length_KerberosTime(&(data)->authtime);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_tag_oldret;
- }
- if ((data)->starttime) {
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- ret += length_KerberosTime((data)->starttime);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_tag_oldret;
- } {
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- ret += length_KerberosTime(&(data)->endtime);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_tag_oldret;
- }
- if ((data)->renew_till) {
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- ret += length_KerberosTime((data)->renew_till);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_tag_oldret;
- }
- if ((data)->caddr) {
- size_t Top_tag_tag_oldret = ret;
+ size_t Top_tag_oldret = ret;
ret = 0;
- ret += length_HostAddresses((data)->caddr);
+ ret += der_length_octet_string(&(data)->ad_data);
ret += 1 + der_length_len(ret);
- ret += Top_tag_tag_oldret;
- }
- if ((data)->authorization_data) {
- size_t Top_tag_tag_oldret = ret;
- ret = 0;
- ret += length_AuthorizationData((data)->authorization_data);
ret += 1 + der_length_len(ret);
- ret += Top_tag_tag_oldret;
+ ret += Top_tag_oldret;
}
ret += 1 + der_length_len(ret);
- ret += 1 + der_length_len(ret);
return ret;
}
-int
-copy_EncTicketPart(const EncTicketPart * from, EncTicketPart * to)
+int ASN1CALL
+copy_AuthorizationDataElement(const AuthorizationDataElement * from,
+ AuthorizationDataElement * to)
{
memset(to, 0, sizeof(*to));
- if (copy_TicketFlags(&(from)->flags, &(to)->flags))
- goto fail;
- if (copy_EncryptionKey(&(from)->key, &(to)->key))
- goto fail;
- if (copy_Realm(&(from)->crealm, &(to)->crealm))
- goto fail;
- if (copy_PrincipalName(&(from)->cname, &(to)->cname))
- goto fail;
- if (copy_TransitedEncoding(&(from)->transited, &(to)->transited))
- goto fail;
- if (copy_KerberosTime(&(from)->authtime, &(to)->authtime))
+ if (copy_krb5int32(&(from)->ad_type, &(to)->ad_type))
goto fail;
- if ((from)->starttime) {
- (to)->starttime = malloc(sizeof(*(to)->starttime));
- if ((to)->starttime == NULL)
- goto fail;
- if (copy_KerberosTime((from)->starttime, (to)->starttime))
- goto fail;
- } else
- (to)->starttime = NULL;
- if (copy_KerberosTime(&(from)->endtime, &(to)->endtime))
+ if (der_copy_octet_string(&(from)->ad_data, &(to)->ad_data))
goto fail;
- if ((from)->renew_till) {
- (to)->renew_till = malloc(sizeof(*(to)->renew_till));
- if ((to)->renew_till == NULL)
- goto fail;
- if (copy_KerberosTime((from)->renew_till, (to)->renew_till))
- goto fail;
- } else
- (to)->renew_till = NULL;
- if ((from)->caddr) {
- (to)->caddr = malloc(sizeof(*(to)->caddr));
- if ((to)->caddr == NULL)
- goto fail;
- if (copy_HostAddresses((from)->caddr, (to)->caddr))
- goto fail;
- } else
- (to)->caddr = NULL;
- if ((from)->authorization_data) {
- (to)->authorization_data = malloc(sizeof(*(to)->authorization_data));
- if ((to)->authorization_data == NULL)
- goto fail;
- if (copy_AuthorizationData((from)->authorization_data, (to)->authorization_data))
- goto fail;
- } else
- (to)->authorization_data = NULL;
return 0;
-fail:
- free_EncTicketPart(to);
+ fail:
+ free_AuthorizationDataElement(to);
return ENOMEM;
}
-
-
-/* Generated from ./krb5.asn1 */
-/* Do not edit */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <string.h>
-#include <errno.h>
-#include <limits.h>
-#include <asn1_err.h>
-
-int
-encode_KerberosTime(unsigned char *p, size_t len, const KerberosTime * data, size_t * size)
+int ASN1CALL
+encode_AuthorizationData(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ const AuthorizationData * data, size_t * size)
{
- size_t ret = 0;
- size_t l;
- int i AFS_UNUSED, e;
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
- i = 0;
- e = der_put_generalized_time(p, len, data, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+ for (i = (int) (data)->len - 1; i >= 0; --i) {
+ size_t Top_tag_for_oldret = ret;
+ ret = 0;
+ e = encode_AuthorizationDataElement(p, len, &(data)->val[i], &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_GeneralizedTime, &l);
+ ret += Top_tag_for_oldret;
+ }
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence,
+ &l);
if (e)
return e;
p -= l;
return 0;
}
-int
-decode_KerberosTime(const unsigned char *p, size_t len, KerberosTime * data, size_t * size)
+int ASN1CALL
+decode_AuthorizationData(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ AuthorizationData * data, size_t * size)
{
size_t ret = 0;
- size_t l;
- int e;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
memset(data, 0, sizeof(*data));
{
size_t Top_datalen, Top_oldlen;
Der_type Top_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type, UT_GeneralizedTime, &Top_datalen, &l);
- if (e == 0 && Top_type != PRIM) {
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Sequence, &Top_datalen, &l);
+ if (e == 0 && Top_type != CONS) {
e = ASN1_BAD_ID;
}
if (e)
goto fail;
}
len = Top_datalen;
- e = der_get_generalized_time(p, len, data, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
+ {
+ size_t Top_Tag_origlen = len;
+ size_t Top_Tag_oldret = ret;
+ size_t Top_Tag_olen = 0;
+ void *Top_Tag_tmp;
+ ret = 0;
+ (data)->len = 0;
+ (data)->val = NULL;
+ while (ret < Top_Tag_origlen) {
+ size_t Top_Tag_nlen = Top_Tag_olen + sizeof(*((data)->val));
+ if (Top_Tag_olen > Top_Tag_nlen) {
+ e = ASN1_OVERFLOW;
+ goto fail;
+ }
+ Top_Tag_olen = Top_Tag_nlen;
+ Top_Tag_tmp = realloc((data)->val, Top_Tag_olen);
+ if (Top_Tag_tmp == NULL) {
+ e = ENOMEM;
+ goto fail;
+ }
+ (data)->val = Top_Tag_tmp;
+ e = decode_AuthorizationDataElement(p, len,
+ &(data)->val[(data)->len],
+ &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ (data)->len++;
+ len = Top_Tag_origlen - ret;
+ }
+ ret += Top_Tag_oldret;
+ }
len = Top_oldlen - Top_datalen;
}
if (size)
*size = ret;
return 0;
-fail:
- free_KerberosTime(data);
+ fail:
+ free_AuthorizationData(data);
return e;
}
-void
-free_KerberosTime(KerberosTime * data)
+void ASN1CALL
+free_AuthorizationData(AuthorizationData * data)
{
+ while ((data)->len) {
+ free_AuthorizationDataElement(&(data)->val[(data)->len - 1]);
+ (data)->len--;
+ }
+ free((data)->val);
+ (data)->val = NULL;
}
-size_t
-length_KerberosTime(const KerberosTime * data)
+size_t ASN1CALL
+length_AuthorizationData(const AuthorizationData * data)
{
size_t ret = 0;
- ret += der_length_generalized_time(data);
+ {
+ size_t Top_tag_oldret = ret;
+ unsigned int n_Top_tag;
+ ret = 0;
+ for (n_Top_tag = (data)->len; n_Top_tag > 0; --n_Top_tag) {
+ size_t Top_tag_for_oldret = ret;
+ ret = 0;
+ ret +=
+ length_AuthorizationDataElement(&(data)->val[n_Top_tag - 1]);
+ ret += Top_tag_for_oldret;
+ }
+ ret += Top_tag_oldret;
+ }
ret += 1 + der_length_len(ret);
return ret;
}
-int
-copy_KerberosTime(const KerberosTime * from, KerberosTime * to)
+int ASN1CALL
+copy_AuthorizationData(const AuthorizationData * from, AuthorizationData * to)
{
memset(to, 0, sizeof(*to));
- *(to) = *(from);
+ if (((to)->val = malloc((from)->len * sizeof(*(to)->val))) == NULL
+ && (from)->len != 0)
+ goto fail;
+ for ((to)->len = 0; (to)->len < (from)->len; (to)->len++) {
+ if (copy_AuthorizationDataElement
+ (&(from)->val[(to)->len], &(to)->val[(to)->len]))
+ goto fail;
+ }
return 0;
+ fail:
+ free_AuthorizationData(to);
+ return ENOMEM;
}
+int ASN1CALL
+add_AuthorizationData(AuthorizationData * data,
+ const AuthorizationDataElement * element)
+{
+ int ret;
+ void *ptr;
+ ptr = realloc(data->val, (data->len + 1) * sizeof(data->val[0]));
+ if (ptr == NULL)
+ return ENOMEM;
+ data->val = ptr;
-/* Generated from ./krb5.asn1 */
-/* Do not edit */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <string.h>
-#include <errno.h>
-#include <limits.h>
-#include <asn1_err.h>
+ ret = copy_AuthorizationDataElement(element, &data->val[data->len]);
+ if (ret)
+ return ret;
+ data->len++;
+ return 0;
+}
-int
-encode_TransitedEncoding(unsigned char *p, size_t len, const TransitedEncoding * data, size_t * size)
+int ASN1CALL
+remove_AuthorizationData(AuthorizationData * data, unsigned int element)
{
- size_t ret = 0;
- size_t l;
- int i AFS_UNUSED, e;
-
- i = 0;
-/* contents */
- {
- size_t Top_tag_oldret = ret;
- ret = 0;
- e = der_put_octet_string(p, len, &(data)->contents, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+ void *ptr;
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_OctetString, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+ if (data->len == 0 || element >= data->len)
+ return ASN1_OVERRUN;
+ free_AuthorizationDataElement(&data->val[element]);
+ data->len--;
+ if (element < data->len)
+ memmove(&data->val[element], &data->val[element + 1],
+ sizeof(data->val[0]) * (data->len - element));
+ ptr = realloc(data->val, data->len * sizeof(data->val[0]));
+ if (ptr != NULL || data->len == 0)
+ data->val = ptr;
+ return 0;
+}
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 1, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+int ASN1CALL
+encode_APOptions(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, const APOptions * data,
+ size_t * size)
+{
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
- ret += Top_tag_oldret;
- }
-/* tr-type */
{
- size_t Top_tag_oldret = ret;
- ret = 0;
- e = encode_krb5int32(p, len, &(data)->tr_type, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 0, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- ret += Top_tag_oldret;
+ unsigned char c = 0;
+ if (len < 1)
+ return ASN1_OVERFLOW;
+ *p-- = c;
+ len--;
+ ret++;
+ c = 0;
+ if (len < 1)
+ return ASN1_OVERFLOW;
+ *p-- = c;
+ len--;
+ ret++;
+ c = 0;
+ if (len < 1)
+ return ASN1_OVERFLOW;
+ *p-- = c;
+ len--;
+ ret++;
+ c = 0;
+ if ((data)->mutual_required) {
+ c |= 1 << 5;
+ }
+ if ((data)->use_session_key) {
+ c |= 1 << 6;
+ }
+ if ((data)->reserved) {
+ c |= 1 << 7;
+ }
+ if (len < 1)
+ return ASN1_OVERFLOW;
+ *p-- = c;
+ len--;
+ ret++;
+ if (len < 1)
+ return ASN1_OVERFLOW;
+ *p-- = 0;
+ len -= 1;
+ ret += 1;
}
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence, &l);
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_BitString,
+ &l);
if (e)
return e;
p -= l;
return 0;
}
-int
-decode_TransitedEncoding(const unsigned char *p, size_t len, TransitedEncoding * data, size_t * size)
+int ASN1CALL
+decode_APOptions(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, APOptions * data,
+ size_t * size)
{
size_t ret = 0;
- size_t l;
- int e;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
memset(data, 0, sizeof(*data));
{
size_t Top_datalen, Top_oldlen;
Der_type Top_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type, UT_Sequence, &Top_datalen, &l);
- if (e == 0 && Top_type != CONS) {
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_BitString, &Top_datalen, &l);
+ if (e == 0 && Top_type != PRIM) {
e = ASN1_BAD_ID;
}
if (e)
goto fail;
}
len = Top_datalen;
- {
- size_t tr_type_datalen, tr_type_oldlen;
- Der_type tr_type_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &tr_type_type, 0, &tr_type_datalen, &l);
- if (e == 0 && tr_type_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- tr_type_oldlen = len;
- if (tr_type_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = tr_type_datalen;
- e = decode_krb5int32(p, len, &(data)->tr_type, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = tr_type_oldlen - tr_type_datalen;
- }
- {
- size_t contents_datalen, contents_oldlen;
- Der_type contents_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &contents_type, 1, &contents_datalen, &l);
- if (e == 0 && contents_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- contents_oldlen = len;
- if (contents_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = contents_datalen;
- {
- size_t contents_Tag_datalen, contents_Tag_oldlen;
- Der_type contents_Tag_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &contents_Tag_type, UT_OctetString, &contents_Tag_datalen, &l);
- if (e == 0 && contents_Tag_type != PRIM) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- contents_Tag_oldlen = len;
- if (contents_Tag_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = contents_Tag_datalen;
- e = der_get_octet_string(p, len, &(data)->contents, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = contents_Tag_oldlen - contents_Tag_datalen;
- }
- len = contents_oldlen - contents_datalen;
- }
+ if (len < 1)
+ return ASN1_OVERRUN;
+ p++;
+ len--;
+ ret++;
+ do {
+ if (len < 1)
+ break;
+ (data)->reserved = (*p >> 7) & 1;
+ (data)->use_session_key = (*p >> 6) & 1;
+ (data)->mutual_required = (*p >> 5) & 1;
+ } while (0);
+ p += len;
+ ret += len;
len = Top_oldlen - Top_datalen;
}
if (size)
*size = ret;
return 0;
-fail:
- free_TransitedEncoding(data);
+ fail:
+ free_APOptions(data);
return e;
}
-void
-free_TransitedEncoding(TransitedEncoding * data)
+void ASN1CALL
+free_APOptions(APOptions * data)
{
- free_krb5int32(&(data)->tr_type);
- der_free_octet_string(&(data)->contents);
}
-size_t
-length_TransitedEncoding(const TransitedEncoding * data)
+size_t ASN1CALL
+length_APOptions(const APOptions * data)
{
size_t ret = 0;
- {
- size_t Top_tag_oldret = ret;
- ret = 0;
- ret += length_krb5int32(&(data)->tr_type);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_oldret;
- }
- {
- size_t Top_tag_oldret = ret;
- ret = 0;
- ret += der_length_octet_string(&(data)->contents);
- ret += 1 + der_length_len(ret);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_oldret;
- }
+ ret += 5;
ret += 1 + der_length_len(ret);
return ret;
}
-int
-copy_TransitedEncoding(const TransitedEncoding * from, TransitedEncoding * to)
+int ASN1CALL
+copy_APOptions(const APOptions * from, APOptions * to)
{
memset(to, 0, sizeof(*to));
- if (copy_krb5int32(&(from)->tr_type, &(to)->tr_type))
- goto fail;
- if (der_copy_octet_string(&(from)->contents, &(to)->contents))
- goto fail;
+ *(to) = *(from);
return 0;
-fail:
- free_TransitedEncoding(to);
- return ENOMEM;
}
+unsigned
+APOptions2int(APOptions f)
+{
+ unsigned r = 0;
+ if (f.reserved)
+ r |= (1U << 0);
+ if (f.use_session_key)
+ r |= (1U << 1);
+ if (f.mutual_required)
+ r |= (1U << 2);
+ return r;
+}
+APOptions
+int2APOptions(unsigned n)
+{
+ APOptions flags;
-/* Generated from ./krb5.asn1 */
-/* Do not edit */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <string.h>
-#include <errno.h>
-#include <limits.h>
-#include <asn1_err.h>
+ memset(&flags, 0, sizeof(flags));
-int
-encode_EncryptionKey(unsigned char *p, size_t len, const EncryptionKey * data, size_t * size)
-{
- size_t ret = 0;
- size_t l;
- int i AFS_UNUSED, e;
+ flags.reserved = (n >> 0) & 1;
+ flags.use_session_key = (n >> 1) & 1;
+ flags.mutual_required = (n >> 2) & 1;
+ return flags;
+}
- i = 0;
-/* keyvalue */
- {
- size_t Top_tag_oldret = ret;
- ret = 0;
- e = der_put_octet_string(p, len, &(data)->keyvalue, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_OctetString, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 1, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
+int ASN1CALL
+encode_TicketFlags(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ const TicketFlags * data, size_t * size)
+{
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
- ret += Top_tag_oldret;
- }
-/* keytype */
- {
- size_t Top_tag_oldret = ret;
- ret = 0;
- e = encode_krb5int32(p, len, &(data)->keytype, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 0, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- ret += Top_tag_oldret;
- }
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- *size = ret;
- return 0;
-}
-
-int
-decode_EncryptionKey(const unsigned char *p, size_t len, EncryptionKey * data, size_t * size)
-{
- size_t ret = 0;
- size_t l;
- int e;
-
- memset(data, 0, sizeof(*data));
- {
- size_t Top_datalen, Top_oldlen;
- Der_type Top_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type, UT_Sequence, &Top_datalen, &l);
- if (e == 0 && Top_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- Top_oldlen = len;
- if (Top_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = Top_datalen;
- {
- size_t keytype_datalen, keytype_oldlen;
- Der_type keytype_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &keytype_type, 0, &keytype_datalen, &l);
- if (e == 0 && keytype_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- keytype_oldlen = len;
- if (keytype_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = keytype_datalen;
- e = decode_krb5int32(p, len, &(data)->keytype, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = keytype_oldlen - keytype_datalen;
- }
- {
- size_t keyvalue_datalen, keyvalue_oldlen;
- Der_type keyvalue_type;
- e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &keyvalue_type, 1, &keyvalue_datalen, &l);
- if (e == 0 && keyvalue_type != CONS) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- keyvalue_oldlen = len;
- if (keyvalue_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = keyvalue_datalen;
- {
- size_t keyvalue_Tag_datalen, keyvalue_Tag_oldlen;
- Der_type keyvalue_Tag_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &keyvalue_Tag_type, UT_OctetString, &keyvalue_Tag_datalen, &l);
- if (e == 0 && keyvalue_Tag_type != PRIM) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- keyvalue_Tag_oldlen = len;
- if (keyvalue_Tag_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = keyvalue_Tag_datalen;
- e = der_get_octet_string(p, len, &(data)->keyvalue, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = keyvalue_Tag_oldlen - keyvalue_Tag_datalen;
- }
- len = keyvalue_oldlen - keyvalue_datalen;
- }
- len = Top_oldlen - Top_datalen;
- }
- if (size)
- *size = ret;
- return 0;
-fail:
- free_EncryptionKey(data);
- return e;
-}
-
-void
-free_EncryptionKey(EncryptionKey * data)
-{
- free_krb5int32(&(data)->keytype);
- der_free_octet_string(&(data)->keyvalue);
-}
-
-size_t
-length_EncryptionKey(const EncryptionKey * data)
-{
- size_t ret = 0;
- {
- size_t Top_tag_oldret = ret;
- ret = 0;
- ret += length_krb5int32(&(data)->keytype);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_oldret;
- }
- {
- size_t Top_tag_oldret = ret;
- ret = 0;
- ret += der_length_octet_string(&(data)->keyvalue);
- ret += 1 + der_length_len(ret);
- ret += 1 + der_length_len(ret);
- ret += Top_tag_oldret;
- }
- ret += 1 + der_length_len(ret);
- return ret;
-}
-
-int
-copy_EncryptionKey(const EncryptionKey * from, EncryptionKey * to)
-{
- memset(to, 0, sizeof(*to));
- if (copy_krb5int32(&(from)->keytype, &(to)->keytype))
- goto fail;
- if (der_copy_octet_string(&(from)->keyvalue, &(to)->keyvalue))
- goto fail;
- return 0;
-fail:
- free_EncryptionKey(to);
- return ENOMEM;
-}
-
-
-
-/* Generated from ./krb5.asn1 */
-/* Do not edit */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <string.h>
-#include <errno.h>
-#include <limits.h>
-#include <asn1_err.h>
-
-int
-encode_TicketFlags(unsigned char *p, size_t len, const TicketFlags * data, size_t * size)
-{
- size_t ret = 0;
- size_t l;
- int i AFS_UNUSED, e;
-
- i = 0;
{
unsigned char c = 0;
if (len < 1)
len--;
ret++;
c = 0;
+ if ((data)->anonymous) {
+ c |= 1 << 7;
+ }
if (len < 1)
return ASN1_OVERFLOW;
*p-- = c;
len--;
ret++;
c = 0;
- if ((data)->anonymous) {
- c |= 1 << 1;
+ if ((data)->enc_pa_rep) {
+ c |= 1 << 0;
}
if ((data)->ok_as_delegate) {
c |= 1 << 2;
ret += 1;
}
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_BitString, &l);
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_BitString,
+ &l);
if (e)
return e;
p -= l;
return 0;
}
-int
-decode_TicketFlags(const unsigned char *p, size_t len, TicketFlags * data, size_t * size)
+int ASN1CALL
+decode_TicketFlags(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, TicketFlags * data,
+ size_t * size)
{
size_t ret = 0;
- size_t l;
- int e;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
memset(data, 0, sizeof(*data));
{
size_t Top_datalen, Top_oldlen;
Der_type Top_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type, UT_BitString, &Top_datalen, &l);
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_BitString, &Top_datalen, &l);
if (e == 0 && Top_type != PRIM) {
e = ASN1_BAD_ID;
}
(data)->hw_authent = (*p >> 4) & 1;
(data)->transited_policy_checked = (*p >> 3) & 1;
(data)->ok_as_delegate = (*p >> 2) & 1;
- (data)->anonymous = (*p >> 1) & 1;
+ (data)->enc_pa_rep = (*p >> 0) & 1;
+ p++;
+ len--;
+ ret++;
+ if (len < 1)
+ break;
+ (data)->anonymous = (*p >> 7) & 1;
} while (0);
p += len;
ret += len;
if (size)
*size = ret;
return 0;
-fail:
+ fail:
free_TicketFlags(data);
return e;
}
-void
+void ASN1CALL
free_TicketFlags(TicketFlags * data)
{
}
-size_t
+size_t ASN1CALL
length_TicketFlags(const TicketFlags * data)
{
size_t ret = 0;
return ret;
}
-int
+int ASN1CALL
copy_TicketFlags(const TicketFlags * from, TicketFlags * to)
{
memset(to, 0, sizeof(*to));
r |= (1U << 12);
if (f.ok_as_delegate)
r |= (1U << 13);
+ if (f.enc_pa_rep)
+ r |= (1U << 15);
if (f.anonymous)
- r |= (1U << 14);
+ r |= (1U << 16);
return r;
}
flags.hw_authent = (n >> 11) & 1;
flags.transited_policy_checked = (n >> 12) & 1;
flags.ok_as_delegate = (n >> 13) & 1;
- flags.anonymous = (n >> 14) & 1;
+ flags.enc_pa_rep = (n >> 15) & 1;
+ flags.anonymous = (n >> 16) & 1;
return flags;
}
-
-
-/* Generated from ./krb5.asn1 */
-/* Do not edit */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <string.h>
-#include <errno.h>
-#include <limits.h>
-#include <asn1_err.h>
-
-int
-encode_Realm(unsigned char *p, size_t len, const Realm * data, size_t * size)
-{
- size_t ret = 0;
- size_t l;
- int i AFS_UNUSED, e;
-
- i = 0;
- e = der_put_general_string(p, len, data, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_GeneralString, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- *size = ret;
- return 0;
-}
-
-int
-decode_Realm(const unsigned char *p, size_t len, Realm * data, size_t * size)
+int ASN1CALL
+encode_KDCOptions(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ const KDCOptions * data, size_t * size)
{
- size_t ret = 0;
- size_t l;
- int e;
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
- memset(data, 0, sizeof(*data));
{
- size_t Top_datalen, Top_oldlen;
- Der_type Top_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type, UT_GeneralString, &Top_datalen, &l);
- if (e == 0 && Top_type != PRIM) {
- e = ASN1_BAD_ID;
+ unsigned char c = 0;
+ if ((data)->validate) {
+ c |= 1 << 0;
}
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- Top_oldlen = len;
- if (Top_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
+ if ((data)->renew) {
+ c |= 1 << 1;
}
- len = Top_datalen;
- e = der_get_general_string(p, len, data, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- len = Top_oldlen - Top_datalen;
+ if ((data)->enc_tkt_in_skey) {
+ c |= 1 << 3;
+ }
+ if ((data)->renewable_ok) {
+ c |= 1 << 4;
+ }
+ if ((data)->disable_transited_check) {
+ c |= 1 << 5;
+ }
+ if (len < 1)
+ return ASN1_OVERFLOW;
+ *p-- = c;
+ len--;
+ ret++;
+ c = 0;
+ if ((data)->request_anonymous) {
+ c |= 1 << 7;
+ }
+ if (len < 1)
+ return ASN1_OVERFLOW;
+ *p-- = c;
+ len--;
+ ret++;
+ c = 0;
+ if ((data)->canonicalize) {
+ c |= 1 << 0;
+ }
+ if ((data)->cname_in_addl_tkt) {
+ c |= 1 << 1;
+ }
+ if ((data)->renewable) {
+ c |= 1 << 7;
+ }
+ if (len < 1)
+ return ASN1_OVERFLOW;
+ *p-- = c;
+ len--;
+ ret++;
+ c = 0;
+ if ((data)->postdated) {
+ c |= 1 << 1;
+ }
+ if ((data)->allow_postdate) {
+ c |= 1 << 2;
+ }
+ if ((data)->proxy) {
+ c |= 1 << 3;
+ }
+ if ((data)->proxiable) {
+ c |= 1 << 4;
+ }
+ if ((data)->forwarded) {
+ c |= 1 << 5;
+ }
+ if ((data)->forwardable) {
+ c |= 1 << 6;
+ }
+ if ((data)->reserved) {
+ c |= 1 << 7;
+ }
+ if (len < 1)
+ return ASN1_OVERFLOW;
+ *p-- = c;
+ len--;
+ ret++;
+ if (len < 1)
+ return ASN1_OVERFLOW;
+ *p-- = 0;
+ len -= 1;
+ ret += 1;
+ }
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_BitString,
+ &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ *size = ret;
+ return 0;
+}
+
+int ASN1CALL
+decode_KDCOptions(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, KDCOptions * data,
+ size_t * size)
+{
+ size_t ret = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
+
+ memset(data, 0, sizeof(*data));
+ {
+ size_t Top_datalen, Top_oldlen;
+ Der_type Top_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_BitString, &Top_datalen, &l);
+ if (e == 0 && Top_type != PRIM) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ Top_oldlen = len;
+ if (Top_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = Top_datalen;
+ if (len < 1)
+ return ASN1_OVERRUN;
+ p++;
+ len--;
+ ret++;
+ do {
+ if (len < 1)
+ break;
+ (data)->reserved = (*p >> 7) & 1;
+ (data)->forwardable = (*p >> 6) & 1;
+ (data)->forwarded = (*p >> 5) & 1;
+ (data)->proxiable = (*p >> 4) & 1;
+ (data)->proxy = (*p >> 3) & 1;
+ (data)->allow_postdate = (*p >> 2) & 1;
+ (data)->postdated = (*p >> 1) & 1;
+ p++;
+ len--;
+ ret++;
+ if (len < 1)
+ break;
+ (data)->renewable = (*p >> 7) & 1;
+ (data)->cname_in_addl_tkt = (*p >> 1) & 1;
+ (data)->canonicalize = (*p >> 0) & 1;
+ p++;
+ len--;
+ ret++;
+ if (len < 1)
+ break;
+ (data)->request_anonymous = (*p >> 7) & 1;
+ p++;
+ len--;
+ ret++;
+ if (len < 1)
+ break;
+ (data)->disable_transited_check = (*p >> 5) & 1;
+ (data)->renewable_ok = (*p >> 4) & 1;
+ (data)->enc_tkt_in_skey = (*p >> 3) & 1;
+ (data)->renew = (*p >> 1) & 1;
+ (data)->validate = (*p >> 0) & 1;
+ } while (0);
+ p += len;
+ ret += len;
+ len = Top_oldlen - Top_datalen;
}
if (size)
*size = ret;
return 0;
-fail:
- free_Realm(data);
+ fail:
+ free_KDCOptions(data);
return e;
}
-void
-free_Realm(Realm * data)
+void ASN1CALL
+free_KDCOptions(KDCOptions * data)
{
- der_free_general_string(data);
}
-size_t
-length_Realm(const Realm * data)
+size_t ASN1CALL
+length_KDCOptions(const KDCOptions * data)
{
size_t ret = 0;
- ret += der_length_general_string(data);
+ ret += 5;
ret += 1 + der_length_len(ret);
return ret;
}
-int
-copy_Realm(const Realm * from, Realm * to)
+int ASN1CALL
+copy_KDCOptions(const KDCOptions * from, KDCOptions * to)
{
memset(to, 0, sizeof(*to));
- if (der_copy_general_string(from, to))
- goto fail;
+ *(to) = *(from);
return 0;
-fail:
- free_Realm(to);
- return ENOMEM;
}
+unsigned
+KDCOptions2int(KDCOptions f)
+{
+ unsigned r = 0;
+ if (f.reserved)
+ r |= (1U << 0);
+ if (f.forwardable)
+ r |= (1U << 1);
+ if (f.forwarded)
+ r |= (1U << 2);
+ if (f.proxiable)
+ r |= (1U << 3);
+ if (f.proxy)
+ r |= (1U << 4);
+ if (f.allow_postdate)
+ r |= (1U << 5);
+ if (f.postdated)
+ r |= (1U << 6);
+ if (f.renewable)
+ r |= (1U << 8);
+ if (f.cname_in_addl_tkt)
+ r |= (1U << 14);
+ if (f.canonicalize)
+ r |= (1U << 15);
+ if (f.request_anonymous)
+ r |= (1U << 16);
+ if (f.disable_transited_check)
+ r |= (1U << 26);
+ if (f.renewable_ok)
+ r |= (1U << 27);
+ if (f.enc_tkt_in_skey)
+ r |= (1U << 28);
+ if (f.renew)
+ r |= (1U << 30);
+ if (f.validate)
+ r |= (1U << 31);
+ return r;
+}
+
+KDCOptions
+int2KDCOptions(unsigned n)
+{
+ KDCOptions flags;
+ memset(&flags, 0, sizeof(flags));
-/* Generated from ./krb5.asn1 */
-/* Do not edit */
+ flags.reserved = (n >> 0) & 1;
+ flags.forwardable = (n >> 1) & 1;
+ flags.forwarded = (n >> 2) & 1;
+ flags.proxiable = (n >> 3) & 1;
+ flags.proxy = (n >> 4) & 1;
+ flags.allow_postdate = (n >> 5) & 1;
+ flags.postdated = (n >> 6) & 1;
+ flags.renewable = (n >> 8) & 1;
+ flags.cname_in_addl_tkt = (n >> 14) & 1;
+ flags.canonicalize = (n >> 15) & 1;
+ flags.request_anonymous = (n >> 16) & 1;
+ flags.disable_transited_check = (n >> 26) & 1;
+ flags.renewable_ok = (n >> 27) & 1;
+ flags.enc_tkt_in_skey = (n >> 28) & 1;
+ flags.renew = (n >> 30) & 1;
+ flags.validate = (n >> 31) & 1;
+ return flags;
+}
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <string.h>
-#include <errno.h>
-#include <limits.h>
-#include <asn1_err.h>
-int
-encode_ENCTYPE(unsigned char *p, size_t len, const ENCTYPE * data, size_t * size)
+
+int ASN1CALL
+encode_LR_TYPE(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, const LR_TYPE * data,
+ size_t * size)
{
- size_t ret = 0;
- size_t l;
- int i AFS_UNUSED, e;
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
- i = 0;
{
int enumint = (int) *data;
e = der_put_integer(p, len, &enumint, &l);
}
;
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_Integer, &l);
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_Integer,
+ &l);
if (e)
return e;
p -= l;
return 0;
}
-int
-decode_ENCTYPE(const unsigned char *p, size_t len, ENCTYPE * data, size_t * size)
+int ASN1CALL
+decode_LR_TYPE(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, LR_TYPE * data,
+ size_t * size)
{
size_t ret = 0;
- size_t l;
- int e;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
memset(data, 0, sizeof(*data));
{
size_t Top_datalen, Top_oldlen;
Der_type Top_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type, UT_Integer, &Top_datalen, &l);
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Integer, &Top_datalen, &l);
if (e == 0 && Top_type != PRIM) {
e = ASN1_BAD_ID;
}
if (size)
*size = ret;
return 0;
-fail:
- free_ENCTYPE(data);
+ fail:
+ free_LR_TYPE(data);
+ return e;
+}
+
+void ASN1CALL
+free_LR_TYPE(LR_TYPE * data)
+{
+}
+
+size_t ASN1CALL
+length_LR_TYPE(const LR_TYPE * data)
+{
+ size_t ret = 0;
+ {
+ int enumint = *data;
+ ret += der_length_integer(&enumint);
+ }
+ ret += 1 + der_length_len(ret);
+ return ret;
+}
+
+int ASN1CALL
+copy_LR_TYPE(const LR_TYPE * from, LR_TYPE * to)
+{
+ memset(to, 0, sizeof(*to));
+ *(to) = *(from);
+ return 0;
+}
+
+int ASN1CALL
+encode_LastReq(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, const LastReq * data,
+ size_t * size)
+{
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
+
+ for (i = (int) (data)->len - 1; i >= 0; --i) {
+ size_t Top_tag_for_oldret = ret;
+ ret = 0;
+/* lr-value */
+ {
+ size_t Top_tag_S_Of_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_KerberosTime(p, len, &(&(data)->val[i])->lr_value, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 1,
+ &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_S_Of_tag_oldret;
+ }
+/* lr-type */
+ {
+ size_t Top_tag_S_Of_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_LR_TYPE(p, len, &(&(data)->val[i])->lr_type, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 0,
+ &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_S_Of_tag_oldret;
+ }
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS,
+ UT_Sequence, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_for_oldret;
+ }
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence,
+ &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ *size = ret;
+ return 0;
+}
+
+int ASN1CALL
+decode_LastReq(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, LastReq * data,
+ size_t * size)
+{
+ size_t ret = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
+
+ memset(data, 0, sizeof(*data));
+ {
+ size_t Top_datalen, Top_oldlen;
+ Der_type Top_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Sequence, &Top_datalen, &l);
+ if (e == 0 && Top_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ Top_oldlen = len;
+ if (Top_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = Top_datalen;
+ {
+ size_t Top_Tag_origlen = len;
+ size_t Top_Tag_oldret = ret;
+ size_t Top_Tag_olen = 0;
+ void *Top_Tag_tmp;
+ ret = 0;
+ (data)->len = 0;
+ (data)->val = NULL;
+ while (ret < Top_Tag_origlen) {
+ size_t Top_Tag_nlen = Top_Tag_olen + sizeof(*((data)->val));
+ if (Top_Tag_olen > Top_Tag_nlen) {
+ e = ASN1_OVERFLOW;
+ goto fail;
+ }
+ Top_Tag_olen = Top_Tag_nlen;
+ Top_Tag_tmp = realloc((data)->val, Top_Tag_olen);
+ if (Top_Tag_tmp == NULL) {
+ e = ENOMEM;
+ goto fail;
+ }
+ (data)->val = Top_Tag_tmp;
+ {
+ size_t Top_Tag_s_of_datalen, Top_Tag_s_of_oldlen;
+ Der_type Top_Tag_s_of_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV,
+ &Top_Tag_s_of_type,
+ UT_Sequence,
+ &Top_Tag_s_of_datalen, &l);
+ if (e == 0 && Top_Tag_s_of_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ Top_Tag_s_of_oldlen = len;
+ if (Top_Tag_s_of_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = Top_Tag_s_of_datalen;
+ {
+ size_t lr_type_datalen, lr_type_oldlen;
+ Der_type lr_type_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &lr_type_type, 0,
+ &lr_type_datalen, &l);
+ if (e == 0 && lr_type_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ lr_type_oldlen = len;
+ if (lr_type_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = lr_type_datalen;
+ e = decode_LR_TYPE(p, len,
+ &(&(data)->val[(data)->len])->
+ lr_type, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = lr_type_oldlen - lr_type_datalen;
+ }
+ {
+ size_t lr_value_datalen, lr_value_oldlen;
+ Der_type lr_value_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &lr_value_type, 1,
+ &lr_value_datalen, &l);
+ if (e == 0 && lr_value_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ lr_value_oldlen = len;
+ if (lr_value_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = lr_value_datalen;
+ e = decode_KerberosTime(p, len,
+ &(&(data)->val[(data)->len])->
+ lr_value, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = lr_value_oldlen - lr_value_datalen;
+ }
+ len = Top_Tag_s_of_oldlen - Top_Tag_s_of_datalen;
+ }
+ (data)->len++;
+ len = Top_Tag_origlen - ret;
+ }
+ ret += Top_Tag_oldret;
+ }
+ len = Top_oldlen - Top_datalen;
+ }
+ if (size)
+ *size = ret;
+ return 0;
+ fail:
+ free_LastReq(data);
+ return e;
+}
+
+void ASN1CALL
+free_LastReq(LastReq * data)
+{
+ while ((data)->len) {
+ free_LR_TYPE(&(&(data)->val[(data)->len - 1])->lr_type);
+ free_KerberosTime(&(&(data)->val[(data)->len - 1])->lr_value);
+ (data)->len--;
+ }
+ free((data)->val);
+ (data)->val = NULL;
+}
+
+size_t ASN1CALL
+length_LastReq(const LastReq * data)
+{
+ size_t ret = 0;
+ {
+ size_t Top_tag_oldret = ret;
+ unsigned int n_Top_tag;
+ ret = 0;
+ for (n_Top_tag = (data)->len; n_Top_tag > 0; --n_Top_tag) {
+ size_t Top_tag_for_oldret = ret;
+ ret = 0;
+ {
+ size_t Top_tag_S_Of_tag_oldret = ret;
+ ret = 0;
+ ret +=
+ length_LR_TYPE(&(&(data)->val[n_Top_tag - 1])->lr_type);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_S_Of_tag_oldret;
+ }
+ {
+ size_t Top_tag_S_Of_tag_oldret = ret;
+ ret = 0;
+ ret +=
+ length_KerberosTime(&(&(data)->val[n_Top_tag - 1])->
+ lr_value);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_S_Of_tag_oldret;
+ }
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_for_oldret;
+ }
+ ret += Top_tag_oldret;
+ }
+ ret += 1 + der_length_len(ret);
+ return ret;
+}
+
+int ASN1CALL
+copy_LastReq(const LastReq * from, LastReq * to)
+{
+ memset(to, 0, sizeof(*to));
+ if (((to)->val = malloc((from)->len * sizeof(*(to)->val))) == NULL
+ && (from)->len != 0)
+ goto fail;
+ for ((to)->len = 0; (to)->len < (from)->len; (to)->len++) {
+ if (copy_LR_TYPE
+ (&(&(from)->val[(to)->len])->lr_type,
+ &(&(to)->val[(to)->len])->lr_type))
+ goto fail;
+ if (copy_KerberosTime
+ (&(&(from)->val[(to)->len])->lr_value,
+ &(&(to)->val[(to)->len])->lr_value))
+ goto fail;
+ }
+ return 0;
+ fail:
+ free_LastReq(to);
+ return ENOMEM;
+}
+
+int ASN1CALL
+encode_EncryptedData(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ const EncryptedData * data, size_t * size)
+{
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
+
+/* cipher */
+ {
+ size_t Top_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = der_put_octet_string(p, len, &(data)->cipher, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM,
+ UT_OctetString, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 2, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_oldret;
+ }
+/* kvno */
+ if ((data)->kvno) {
+ size_t Top_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_krb5int32(p, len, (data)->kvno, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 1, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_oldret;
+ }
+/* etype */
+ {
+ size_t Top_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_ENCTYPE(p, len, &(data)->etype, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 0, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_oldret;
+ }
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence,
+ &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ *size = ret;
+ return 0;
+}
+
+int ASN1CALL
+decode_EncryptedData(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ EncryptedData * data, size_t * size)
+{
+ size_t ret = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
+
+ memset(data, 0, sizeof(*data));
+ {
+ size_t Top_datalen, Top_oldlen;
+ Der_type Top_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Sequence, &Top_datalen, &l);
+ if (e == 0 && Top_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ Top_oldlen = len;
+ if (Top_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = Top_datalen;
+ {
+ size_t etype_datalen, etype_oldlen;
+ Der_type etype_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &etype_type,
+ 0, &etype_datalen, &l);
+ if (e == 0 && etype_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ etype_oldlen = len;
+ if (etype_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = etype_datalen;
+ e = decode_ENCTYPE(p, len, &(data)->etype, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = etype_oldlen - etype_datalen;
+ }
+ {
+ size_t kvno_datalen, kvno_oldlen;
+ Der_type kvno_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &kvno_type,
+ 1, &kvno_datalen, &l);
+ if (e == 0 && kvno_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e) {
+ (data)->kvno = NULL;
+ } else {
+ (data)->kvno = calloc(1, sizeof(*(data)->kvno));
+ if ((data)->kvno == NULL) {
+ e = ENOMEM;
+ goto fail;
+ }
+ p += l;
+ len -= l;
+ ret += l;
+ kvno_oldlen = len;
+ if (kvno_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = kvno_datalen;
+ e = decode_krb5int32(p, len, (data)->kvno, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = kvno_oldlen - kvno_datalen;
+ }
+ }
+ {
+ size_t cipher_datalen, cipher_oldlen;
+ Der_type cipher_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT, &cipher_type,
+ 2, &cipher_datalen, &l);
+ if (e == 0 && cipher_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ cipher_oldlen = len;
+ if (cipher_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = cipher_datalen;
+ {
+ size_t cipher_Tag_datalen, cipher_Tag_oldlen;
+ Der_type cipher_Tag_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV,
+ &cipher_Tag_type, UT_OctetString,
+ &cipher_Tag_datalen, &l);
+ if (e == 0 && cipher_Tag_type != PRIM) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ cipher_Tag_oldlen = len;
+ if (cipher_Tag_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = cipher_Tag_datalen;
+ e = der_get_octet_string(p, len, &(data)->cipher, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = cipher_Tag_oldlen - cipher_Tag_datalen;
+ }
+ len = cipher_oldlen - cipher_datalen;
+ }
+ len = Top_oldlen - Top_datalen;
+ }
+ if (size)
+ *size = ret;
+ return 0;
+ fail:
+ free_EncryptedData(data);
+ return e;
+}
+
+void ASN1CALL
+free_EncryptedData(EncryptedData * data)
+{
+ free_ENCTYPE(&(data)->etype);
+ if ((data)->kvno) {
+ free_krb5int32((data)->kvno);
+ free((data)->kvno);
+ (data)->kvno = NULL;
+ }
+ der_free_octet_string(&(data)->cipher);
+}
+
+size_t ASN1CALL
+length_EncryptedData(const EncryptedData * data)
+{
+ size_t ret = 0;
+ {
+ size_t Top_tag_oldret = ret;
+ ret = 0;
+ ret += length_ENCTYPE(&(data)->etype);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_oldret;
+ }
+ if ((data)->kvno) {
+ size_t Top_tag_oldret = ret;
+ ret = 0;
+ ret += length_krb5int32((data)->kvno);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_oldret;
+ }
+ {
+ size_t Top_tag_oldret = ret;
+ ret = 0;
+ ret += der_length_octet_string(&(data)->cipher);
+ ret += 1 + der_length_len(ret);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_oldret;
+ }
+ ret += 1 + der_length_len(ret);
+ return ret;
+}
+
+int ASN1CALL
+copy_EncryptedData(const EncryptedData * from, EncryptedData * to)
+{
+ memset(to, 0, sizeof(*to));
+ if (copy_ENCTYPE(&(from)->etype, &(to)->etype))
+ goto fail;
+ if ((from)->kvno) {
+ (to)->kvno = malloc(sizeof(*(to)->kvno));
+ if ((to)->kvno == NULL)
+ goto fail;
+ if (copy_krb5int32((from)->kvno, (to)->kvno))
+ goto fail;
+ } else
+ (to)->kvno = NULL;
+ if (der_copy_octet_string(&(from)->cipher, &(to)->cipher))
+ goto fail;
+ return 0;
+ fail:
+ free_EncryptedData(to);
+ return ENOMEM;
+}
+
+int ASN1CALL
+encode_EncryptionKey(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ const EncryptionKey * data, size_t * size)
+{
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
+
+/* keyvalue */
+ {
+ size_t Top_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = der_put_octet_string(p, len, &(data)->keyvalue, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM,
+ UT_OctetString, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 1, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_oldret;
+ }
+/* keytype */
+ {
+ size_t Top_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_krb5int32(p, len, &(data)->keytype, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 0, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_oldret;
+ }
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence,
+ &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ *size = ret;
+ return 0;
+}
+
+int ASN1CALL
+decode_EncryptionKey(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ EncryptionKey * data, size_t * size)
+{
+ size_t ret = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
+
+ memset(data, 0, sizeof(*data));
+ {
+ size_t Top_datalen, Top_oldlen;
+ Der_type Top_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Sequence, &Top_datalen, &l);
+ if (e == 0 && Top_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ Top_oldlen = len;
+ if (Top_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = Top_datalen;
+ {
+ size_t keytype_datalen, keytype_oldlen;
+ Der_type keytype_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &keytype_type, 0, &keytype_datalen,
+ &l);
+ if (e == 0 && keytype_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ keytype_oldlen = len;
+ if (keytype_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = keytype_datalen;
+ e = decode_krb5int32(p, len, &(data)->keytype, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = keytype_oldlen - keytype_datalen;
+ }
+ {
+ size_t keyvalue_datalen, keyvalue_oldlen;
+ Der_type keyvalue_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &keyvalue_type, 1, &keyvalue_datalen,
+ &l);
+ if (e == 0 && keyvalue_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ keyvalue_oldlen = len;
+ if (keyvalue_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = keyvalue_datalen;
+ {
+ size_t keyvalue_Tag_datalen, keyvalue_Tag_oldlen;
+ Der_type keyvalue_Tag_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV,
+ &keyvalue_Tag_type,
+ UT_OctetString,
+ &keyvalue_Tag_datalen, &l);
+ if (e == 0 && keyvalue_Tag_type != PRIM) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ keyvalue_Tag_oldlen = len;
+ if (keyvalue_Tag_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = keyvalue_Tag_datalen;
+ e = der_get_octet_string(p, len, &(data)->keyvalue, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = keyvalue_Tag_oldlen - keyvalue_Tag_datalen;
+ }
+ len = keyvalue_oldlen - keyvalue_datalen;
+ }
+ len = Top_oldlen - Top_datalen;
+ }
+ if (size)
+ *size = ret;
+ return 0;
+ fail:
+ free_EncryptionKey(data);
+ return e;
+}
+
+void ASN1CALL
+free_EncryptionKey(EncryptionKey * data)
+{
+ free_krb5int32(&(data)->keytype);
+ der_free_octet_string(&(data)->keyvalue);
+}
+
+size_t ASN1CALL
+length_EncryptionKey(const EncryptionKey * data)
+{
+ size_t ret = 0;
+ {
+ size_t Top_tag_oldret = ret;
+ ret = 0;
+ ret += length_krb5int32(&(data)->keytype);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_oldret;
+ }
+ {
+ size_t Top_tag_oldret = ret;
+ ret = 0;
+ ret += der_length_octet_string(&(data)->keyvalue);
+ ret += 1 + der_length_len(ret);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_oldret;
+ }
+ ret += 1 + der_length_len(ret);
+ return ret;
+}
+
+int ASN1CALL
+copy_EncryptionKey(const EncryptionKey * from, EncryptionKey * to)
+{
+ memset(to, 0, sizeof(*to));
+ if (copy_krb5int32(&(from)->keytype, &(to)->keytype))
+ goto fail;
+ if (der_copy_octet_string(&(from)->keyvalue, &(to)->keyvalue))
+ goto fail;
+ return 0;
+ fail:
+ free_EncryptionKey(to);
+ return ENOMEM;
+}
+
+int ASN1CALL
+encode_TransitedEncoding(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ const TransitedEncoding * data, size_t * size)
+{
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
+
+/* contents */
+ {
+ size_t Top_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = der_put_octet_string(p, len, &(data)->contents, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM,
+ UT_OctetString, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 1, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_oldret;
+ }
+/* tr-type */
+ {
+ size_t Top_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_krb5int32(p, len, &(data)->tr_type, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 0, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_oldret;
+ }
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence,
+ &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ *size = ret;
+ return 0;
+}
+
+int ASN1CALL
+decode_TransitedEncoding(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ TransitedEncoding * data, size_t * size)
+{
+ size_t ret = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
+
+ memset(data, 0, sizeof(*data));
+ {
+ size_t Top_datalen, Top_oldlen;
+ Der_type Top_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type,
+ UT_Sequence, &Top_datalen, &l);
+ if (e == 0 && Top_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ Top_oldlen = len;
+ if (Top_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = Top_datalen;
+ {
+ size_t tr_type_datalen, tr_type_oldlen;
+ Der_type tr_type_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &tr_type_type, 0, &tr_type_datalen,
+ &l);
+ if (e == 0 && tr_type_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ tr_type_oldlen = len;
+ if (tr_type_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = tr_type_datalen;
+ e = decode_krb5int32(p, len, &(data)->tr_type, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = tr_type_oldlen - tr_type_datalen;
+ }
+ {
+ size_t contents_datalen, contents_oldlen;
+ Der_type contents_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &contents_type, 1, &contents_datalen,
+ &l);
+ if (e == 0 && contents_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ contents_oldlen = len;
+ if (contents_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = contents_datalen;
+ {
+ size_t contents_Tag_datalen, contents_Tag_oldlen;
+ Der_type contents_Tag_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV,
+ &contents_Tag_type,
+ UT_OctetString,
+ &contents_Tag_datalen, &l);
+ if (e == 0 && contents_Tag_type != PRIM) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ contents_Tag_oldlen = len;
+ if (contents_Tag_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = contents_Tag_datalen;
+ e = der_get_octet_string(p, len, &(data)->contents, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = contents_Tag_oldlen - contents_Tag_datalen;
+ }
+ len = contents_oldlen - contents_datalen;
+ }
+ len = Top_oldlen - Top_datalen;
+ }
+ if (size)
+ *size = ret;
+ return 0;
+ fail:
+ free_TransitedEncoding(data);
+ return e;
+}
+
+void ASN1CALL
+free_TransitedEncoding(TransitedEncoding * data)
+{
+ free_krb5int32(&(data)->tr_type);
+ der_free_octet_string(&(data)->contents);
+}
+
+size_t ASN1CALL
+length_TransitedEncoding(const TransitedEncoding * data)
+{
+ size_t ret = 0;
+ {
+ size_t Top_tag_oldret = ret;
+ ret = 0;
+ ret += length_krb5int32(&(data)->tr_type);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_oldret;
+ }
+ {
+ size_t Top_tag_oldret = ret;
+ ret = 0;
+ ret += der_length_octet_string(&(data)->contents);
+ ret += 1 + der_length_len(ret);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_oldret;
+ }
+ ret += 1 + der_length_len(ret);
+ return ret;
+}
+
+int ASN1CALL
+copy_TransitedEncoding(const TransitedEncoding * from, TransitedEncoding * to)
+{
+ memset(to, 0, sizeof(*to));
+ if (copy_krb5int32(&(from)->tr_type, &(to)->tr_type))
+ goto fail;
+ if (der_copy_octet_string(&(from)->contents, &(to)->contents))
+ goto fail;
+ return 0;
+ fail:
+ free_TransitedEncoding(to);
+ return ENOMEM;
+}
+
+int ASN1CALL
+encode_Ticket(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, const Ticket * data,
+ size_t * size)
+{
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
+
+/* enc-part */
+ {
+ size_t Top_tag_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_EncryptedData(p, len, &(data)->enc_part, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 3, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_tag_oldret;
+ }
+/* sname */
+ {
+ size_t Top_tag_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_PrincipalName(p, len, &(data)->sname, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 2, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_tag_oldret;
+ }
+/* realm */
+ {
+ size_t Top_tag_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_Realm(p, len, &(data)->realm, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 1, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_tag_oldret;
+ }
+/* tkt-vno */
+ {
+ size_t Top_tag_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_krb5int32(p, len, &(data)->tkt_vno, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 0, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_tag_oldret;
+ }
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence,
+ &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_APPL, CONS, 1, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ *size = ret;
+ return 0;
+}
+
+int ASN1CALL
+decode_Ticket(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE, Ticket * data,
+ size_t * size)
+{
+ size_t ret = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
+
+ memset(data, 0, sizeof(*data));
+ {
+ size_t Top_datalen, Top_oldlen;
+ Der_type Top_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_APPL, &Top_type, 1,
+ &Top_datalen, &l);
+ if (e == 0 && Top_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ Top_oldlen = len;
+ if (Top_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = Top_datalen;
+ {
+ size_t Top_Tag_datalen, Top_Tag_oldlen;
+ Der_type Top_Tag_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_Tag_type,
+ UT_Sequence, &Top_Tag_datalen, &l);
+ if (e == 0 && Top_Tag_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ Top_Tag_oldlen = len;
+ if (Top_Tag_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = Top_Tag_datalen;
+ {
+ size_t tkt_vno_datalen, tkt_vno_oldlen;
+ Der_type tkt_vno_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &tkt_vno_type, 0,
+ &tkt_vno_datalen, &l);
+ if (e == 0 && tkt_vno_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ tkt_vno_oldlen = len;
+ if (tkt_vno_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = tkt_vno_datalen;
+ e = decode_krb5int32(p, len, &(data)->tkt_vno, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = tkt_vno_oldlen - tkt_vno_datalen;
+ }
+ {
+ size_t realm_datalen, realm_oldlen;
+ Der_type realm_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &realm_type, 1, &realm_datalen,
+ &l);
+ if (e == 0 && realm_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ realm_oldlen = len;
+ if (realm_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = realm_datalen;
+ e = decode_Realm(p, len, &(data)->realm, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = realm_oldlen - realm_datalen;
+ }
+ {
+ size_t sname_datalen, sname_oldlen;
+ Der_type sname_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &sname_type, 2, &sname_datalen,
+ &l);
+ if (e == 0 && sname_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ sname_oldlen = len;
+ if (sname_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = sname_datalen;
+ e = decode_PrincipalName(p, len, &(data)->sname, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = sname_oldlen - sname_datalen;
+ }
+ {
+ size_t enc_part_datalen, enc_part_oldlen;
+ Der_type enc_part_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &enc_part_type, 3,
+ &enc_part_datalen, &l);
+ if (e == 0 && enc_part_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ enc_part_oldlen = len;
+ if (enc_part_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = enc_part_datalen;
+ e = decode_EncryptedData(p, len, &(data)->enc_part, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = enc_part_oldlen - enc_part_datalen;
+ }
+ len = Top_Tag_oldlen - Top_Tag_datalen;
+ }
+ len = Top_oldlen - Top_datalen;
+ }
+ if (size)
+ *size = ret;
+ return 0;
+ fail:
+ free_Ticket(data);
+ return e;
+}
+
+void ASN1CALL
+free_Ticket(Ticket * data)
+{
+ free_krb5int32(&(data)->tkt_vno);
+ free_Realm(&(data)->realm);
+ free_PrincipalName(&(data)->sname);
+ free_EncryptedData(&(data)->enc_part);
+}
+
+size_t ASN1CALL
+length_Ticket(const Ticket * data)
+{
+ size_t ret = 0;
+ {
+ size_t Top_tag_tag_oldret = ret;
+ ret = 0;
+ ret += length_krb5int32(&(data)->tkt_vno);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_tag_oldret;
+ }
+ {
+ size_t Top_tag_tag_oldret = ret;
+ ret = 0;
+ ret += length_Realm(&(data)->realm);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_tag_oldret;
+ }
+ {
+ size_t Top_tag_tag_oldret = ret;
+ ret = 0;
+ ret += length_PrincipalName(&(data)->sname);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_tag_oldret;
+ }
+ {
+ size_t Top_tag_tag_oldret = ret;
+ ret = 0;
+ ret += length_EncryptedData(&(data)->enc_part);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_tag_oldret;
+ }
+ ret += 1 + der_length_len(ret);
+ ret += 1 + der_length_len(ret);
+ return ret;
+}
+
+int ASN1CALL
+copy_Ticket(const Ticket * from, Ticket * to)
+{
+ memset(to, 0, sizeof(*to));
+ if (copy_krb5int32(&(from)->tkt_vno, &(to)->tkt_vno))
+ goto fail;
+ if (copy_Realm(&(from)->realm, &(to)->realm))
+ goto fail;
+ if (copy_PrincipalName(&(from)->sname, &(to)->sname))
+ goto fail;
+ if (copy_EncryptedData(&(from)->enc_part, &(to)->enc_part))
+ goto fail;
+ return 0;
+ fail:
+ free_Ticket(to);
+ return ENOMEM;
+}
+
+int ASN1CALL
+encode_EncTicketPart(unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ const EncTicketPart * data, size_t * size)
+{
+ size_t ret HEIMDAL_UNUSED_ATTRIBUTE = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int i HEIMDAL_UNUSED_ATTRIBUTE, e HEIMDAL_UNUSED_ATTRIBUTE;
+
+/* authorization-data */
+ if ((data)->authorization_data) {
+ size_t Top_tag_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_AuthorizationData(p, len, (data)->authorization_data, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 10, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_tag_oldret;
+ }
+/* caddr */
+ if ((data)->caddr) {
+ size_t Top_tag_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_HostAddresses(p, len, (data)->caddr, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 9, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_tag_oldret;
+ }
+/* renew-till */
+ if ((data)->renew_till) {
+ size_t Top_tag_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_KerberosTime(p, len, (data)->renew_till, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 8, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_tag_oldret;
+ }
+/* endtime */
+ {
+ size_t Top_tag_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_KerberosTime(p, len, &(data)->endtime, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 7, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_tag_oldret;
+ }
+/* starttime */
+ if ((data)->starttime) {
+ size_t Top_tag_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_KerberosTime(p, len, (data)->starttime, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 6, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_tag_oldret;
+ }
+/* authtime */
+ {
+ size_t Top_tag_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_KerberosTime(p, len, &(data)->authtime, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 5, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_tag_oldret;
+ }
+/* transited */
+ {
+ size_t Top_tag_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_TransitedEncoding(p, len, &(data)->transited, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 4, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_tag_oldret;
+ }
+/* cname */
+ {
+ size_t Top_tag_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_PrincipalName(p, len, &(data)->cname, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 3, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_tag_oldret;
+ }
+/* crealm */
+ {
+ size_t Top_tag_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_Realm(p, len, &(data)->crealm, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 2, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_tag_oldret;
+ }
+/* key */
+ {
+ size_t Top_tag_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_EncryptionKey(p, len, &(data)->key, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 1, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_tag_oldret;
+ }
+/* flags */
+ {
+ size_t Top_tag_tag_oldret HEIMDAL_UNUSED_ATTRIBUTE = ret;
+ ret = 0;
+ e = encode_TicketFlags(p, len, &(data)->flags, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_CONTEXT, CONS, 0, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ ret += Top_tag_tag_oldret;
+ }
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence,
+ &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ e = der_put_length_and_tag(p, len, ret, ASN1_C_APPL, CONS, 3, &l);
+ if (e)
+ return e;
+ p -= l;
+ len -= l;
+ ret += l;
+
+ *size = ret;
+ return 0;
+}
+
+int ASN1CALL
+decode_EncTicketPart(const unsigned char *p HEIMDAL_UNUSED_ATTRIBUTE,
+ size_t len HEIMDAL_UNUSED_ATTRIBUTE,
+ EncTicketPart * data, size_t * size)
+{
+ size_t ret = 0;
+ size_t l HEIMDAL_UNUSED_ATTRIBUTE;
+ int e HEIMDAL_UNUSED_ATTRIBUTE;
+
+ memset(data, 0, sizeof(*data));
+ {
+ size_t Top_datalen, Top_oldlen;
+ Der_type Top_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_APPL, &Top_type, 3,
+ &Top_datalen, &l);
+ if (e == 0 && Top_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ Top_oldlen = len;
+ if (Top_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = Top_datalen;
+ {
+ size_t Top_Tag_datalen, Top_Tag_oldlen;
+ Der_type Top_Tag_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_Tag_type,
+ UT_Sequence, &Top_Tag_datalen, &l);
+ if (e == 0 && Top_Tag_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ Top_Tag_oldlen = len;
+ if (Top_Tag_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = Top_Tag_datalen;
+ {
+ size_t flags_datalen, flags_oldlen;
+ Der_type flags_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &flags_type, 0, &flags_datalen,
+ &l);
+ if (e == 0 && flags_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ flags_oldlen = len;
+ if (flags_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = flags_datalen;
+ e = decode_TicketFlags(p, len, &(data)->flags, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = flags_oldlen - flags_datalen;
+ }
+ {
+ size_t key_datalen, key_oldlen;
+ Der_type key_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &key_type, 1, &key_datalen, &l);
+ if (e == 0 && key_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ key_oldlen = len;
+ if (key_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = key_datalen;
+ e = decode_EncryptionKey(p, len, &(data)->key, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = key_oldlen - key_datalen;
+ }
+ {
+ size_t crealm_datalen, crealm_oldlen;
+ Der_type crealm_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &crealm_type, 2, &crealm_datalen,
+ &l);
+ if (e == 0 && crealm_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ crealm_oldlen = len;
+ if (crealm_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = crealm_datalen;
+ e = decode_Realm(p, len, &(data)->crealm, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = crealm_oldlen - crealm_datalen;
+ }
+ {
+ size_t cname_datalen, cname_oldlen;
+ Der_type cname_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &cname_type, 3, &cname_datalen,
+ &l);
+ if (e == 0 && cname_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ cname_oldlen = len;
+ if (cname_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = cname_datalen;
+ e = decode_PrincipalName(p, len, &(data)->cname, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = cname_oldlen - cname_datalen;
+ }
+ {
+ size_t transited_datalen, transited_oldlen;
+ Der_type transited_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &transited_type, 4,
+ &transited_datalen, &l);
+ if (e == 0 && transited_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ transited_oldlen = len;
+ if (transited_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = transited_datalen;
+ e = decode_TransitedEncoding(p, len, &(data)->transited, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = transited_oldlen - transited_datalen;
+ }
+ {
+ size_t authtime_datalen, authtime_oldlen;
+ Der_type authtime_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &authtime_type, 5,
+ &authtime_datalen, &l);
+ if (e == 0 && authtime_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ authtime_oldlen = len;
+ if (authtime_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = authtime_datalen;
+ e = decode_KerberosTime(p, len, &(data)->authtime, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = authtime_oldlen - authtime_datalen;
+ }
+ {
+ size_t starttime_datalen, starttime_oldlen;
+ Der_type starttime_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &starttime_type, 6,
+ &starttime_datalen, &l);
+ if (e == 0 && starttime_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e) {
+ (data)->starttime = NULL;
+ } else {
+ (data)->starttime = calloc(1, sizeof(*(data)->starttime));
+ if ((data)->starttime == NULL) {
+ e = ENOMEM;
+ goto fail;
+ }
+ p += l;
+ len -= l;
+ ret += l;
+ starttime_oldlen = len;
+ if (starttime_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = starttime_datalen;
+ e = decode_KerberosTime(p, len, (data)->starttime, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = starttime_oldlen - starttime_datalen;
+ }
+ }
+ {
+ size_t endtime_datalen, endtime_oldlen;
+ Der_type endtime_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &endtime_type, 7,
+ &endtime_datalen, &l);
+ if (e == 0 && endtime_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ endtime_oldlen = len;
+ if (endtime_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = endtime_datalen;
+ e = decode_KerberosTime(p, len, &(data)->endtime, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = endtime_oldlen - endtime_datalen;
+ }
+ {
+ size_t renew_till_datalen, renew_till_oldlen;
+ Der_type renew_till_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &renew_till_type, 8,
+ &renew_till_datalen, &l);
+ if (e == 0 && renew_till_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e) {
+ (data)->renew_till = NULL;
+ } else {
+ (data)->renew_till =
+ calloc(1, sizeof(*(data)->renew_till));
+ if ((data)->renew_till == NULL) {
+ e = ENOMEM;
+ goto fail;
+ }
+ p += l;
+ len -= l;
+ ret += l;
+ renew_till_oldlen = len;
+ if (renew_till_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = renew_till_datalen;
+ e = decode_KerberosTime(p, len, (data)->renew_till, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = renew_till_oldlen - renew_till_datalen;
+ }
+ }
+ {
+ size_t caddr_datalen, caddr_oldlen;
+ Der_type caddr_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &caddr_type, 9, &caddr_datalen,
+ &l);
+ if (e == 0 && caddr_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e) {
+ (data)->caddr = NULL;
+ } else {
+ (data)->caddr = calloc(1, sizeof(*(data)->caddr));
+ if ((data)->caddr == NULL) {
+ e = ENOMEM;
+ goto fail;
+ }
+ p += l;
+ len -= l;
+ ret += l;
+ caddr_oldlen = len;
+ if (caddr_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = caddr_datalen;
+ e = decode_HostAddresses(p, len, (data)->caddr, &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len = caddr_oldlen - caddr_datalen;
+ }
+ }
+ {
+ size_t authorization_data_datalen, authorization_data_oldlen;
+ Der_type authorization_data_type;
+ e = der_match_tag_and_length(p, len, ASN1_C_CONTEXT,
+ &authorization_data_type, 10,
+ &authorization_data_datalen, &l);
+ if (e == 0 && authorization_data_type != CONS) {
+ e = ASN1_BAD_ID;
+ }
+ if (e) {
+ (data)->authorization_data = NULL;
+ } else {
+ (data)->authorization_data =
+ calloc(1, sizeof(*(data)->authorization_data));
+ if ((data)->authorization_data == NULL) {
+ e = ENOMEM;
+ goto fail;
+ }
+ p += l;
+ len -= l;
+ ret += l;
+ authorization_data_oldlen = len;
+ if (authorization_data_datalen > len) {
+ e = ASN1_OVERRUN;
+ goto fail;
+ }
+ len = authorization_data_datalen;
+ e = decode_AuthorizationData(p, len,
+ (data)->authorization_data,
+ &l);
+ if (e)
+ goto fail;
+ p += l;
+ len -= l;
+ ret += l;
+ len =
+ authorization_data_oldlen -
+ authorization_data_datalen;
+ }
+ }
+ len = Top_Tag_oldlen - Top_Tag_datalen;
+ }
+ len = Top_oldlen - Top_datalen;
+ }
+ if (size)
+ *size = ret;
+ return 0;
+ fail:
+ free_EncTicketPart(data);
return e;
}
-void
-free_ENCTYPE(ENCTYPE * data)
+void ASN1CALL
+free_EncTicketPart(EncTicketPart * data)
{
+ free_TicketFlags(&(data)->flags);
+ free_EncryptionKey(&(data)->key);
+ free_Realm(&(data)->crealm);
+ free_PrincipalName(&(data)->cname);
+ free_TransitedEncoding(&(data)->transited);
+ free_KerberosTime(&(data)->authtime);
+ if ((data)->starttime) {
+ free_KerberosTime((data)->starttime);
+ free((data)->starttime);
+ (data)->starttime = NULL;
+ }
+ free_KerberosTime(&(data)->endtime);
+ if ((data)->renew_till) {
+ free_KerberosTime((data)->renew_till);
+ free((data)->renew_till);
+ (data)->renew_till = NULL;
+ }
+ if ((data)->caddr) {
+ free_HostAddresses((data)->caddr);
+ free((data)->caddr);
+ (data)->caddr = NULL;
+ }
+ if ((data)->authorization_data) {
+ free_AuthorizationData((data)->authorization_data);
+ free((data)->authorization_data);
+ (data)->authorization_data = NULL;
+ }
}
-size_t
-length_ENCTYPE(const ENCTYPE * data)
+size_t ASN1CALL
+length_EncTicketPart(const EncTicketPart * data)
{
size_t ret = 0;
{
- int enumint = *data;
- ret += der_length_integer(&enumint);
+ size_t Top_tag_tag_oldret = ret;
+ ret = 0;
+ ret += length_TicketFlags(&(data)->flags);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_tag_oldret;
}
- ret += 1 + der_length_len(ret);
- return ret;
-}
-
-int
-copy_ENCTYPE(const ENCTYPE * from, ENCTYPE * to)
-{
- memset(to, 0, sizeof(*to));
- *(to) = *(from);
- return 0;
-}
-
-
-
-/* Generated from ./krb5.asn1 */
-/* Do not edit */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include <string.h>
-#include <errno.h>
-#include <limits.h>
-#include <asn1_err.h>
-
-int
-encode_NAME_TYPE(unsigned char *p, size_t len, const NAME_TYPE * data, size_t * size)
-{
- size_t ret = 0;
- size_t l;
- int i AFS_UNUSED, e;
-
- i = 0;
{
- int enumint = (int) *data;
- e = der_put_integer(p, len, &enumint, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
+ size_t Top_tag_tag_oldret = ret;
+ ret = 0;
+ ret += length_EncryptionKey(&(data)->key);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_tag_oldret;
}
- ;
- e = der_put_length_and_tag(p, len, ret, ASN1_C_UNIV, PRIM, UT_Integer, &l);
- if (e)
- return e;
- p -= l;
- len -= l;
- ret += l;
-
- *size = ret;
- return 0;
-}
-
-int
-decode_NAME_TYPE(const unsigned char *p, size_t len, NAME_TYPE * data, size_t * size)
-{
- size_t ret = 0;
- size_t l;
- int e;
-
- memset(data, 0, sizeof(*data));
{
- size_t Top_datalen, Top_oldlen;
- Der_type Top_type;
- e = der_match_tag_and_length(p, len, ASN1_C_UNIV, &Top_type, UT_Integer, &Top_datalen, &l);
- if (e == 0 && Top_type != PRIM) {
- e = ASN1_BAD_ID;
- }
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- Top_oldlen = len;
- if (Top_datalen > len) {
- e = ASN1_OVERRUN;
- goto fail;
- }
- len = Top_datalen;
- {
- int enumint;
- e = der_get_integer(p, len, &enumint, &l);
- if (e)
- goto fail;
- p += l;
- len -= l;
- ret += l;
- *data = enumint;
- }
- len = Top_oldlen - Top_datalen;
+ size_t Top_tag_tag_oldret = ret;
+ ret = 0;
+ ret += length_Realm(&(data)->crealm);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_tag_oldret;
}
- if (size)
- *size = ret;
- return 0;
-fail:
- free_NAME_TYPE(data);
- return e;
-}
-
-void
-free_NAME_TYPE(NAME_TYPE * data)
-{
-}
-
-size_t
-length_NAME_TYPE(const NAME_TYPE * data)
-{
- size_t ret = 0;
{
- int enumint = *data;
- ret += der_length_integer(&enumint);
+ size_t Top_tag_tag_oldret = ret;
+ ret = 0;
+ ret += length_PrincipalName(&(data)->cname);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_tag_oldret;
+ }
+ {
+ size_t Top_tag_tag_oldret = ret;
+ ret = 0;
+ ret += length_TransitedEncoding(&(data)->transited);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_tag_oldret;
+ }
+ {
+ size_t Top_tag_tag_oldret = ret;
+ ret = 0;
+ ret += length_KerberosTime(&(data)->authtime);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_tag_oldret;
+ }
+ if ((data)->starttime) {
+ size_t Top_tag_tag_oldret = ret;
+ ret = 0;
+ ret += length_KerberosTime((data)->starttime);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_tag_oldret;
+ }
+ {
+ size_t Top_tag_tag_oldret = ret;
+ ret = 0;
+ ret += length_KerberosTime(&(data)->endtime);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_tag_oldret;
+ }
+ if ((data)->renew_till) {
+ size_t Top_tag_tag_oldret = ret;
+ ret = 0;
+ ret += length_KerberosTime((data)->renew_till);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_tag_oldret;
+ }
+ if ((data)->caddr) {
+ size_t Top_tag_tag_oldret = ret;
+ ret = 0;
+ ret += length_HostAddresses((data)->caddr);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_tag_oldret;
+ }
+ if ((data)->authorization_data) {
+ size_t Top_tag_tag_oldret = ret;
+ ret = 0;
+ ret += length_AuthorizationData((data)->authorization_data);
+ ret += 1 + der_length_len(ret);
+ ret += Top_tag_tag_oldret;
}
ret += 1 + der_length_len(ret);
+ ret += 1 + der_length_len(ret);
return ret;
}
-int
-copy_NAME_TYPE(const NAME_TYPE * from, NAME_TYPE * to)
+int ASN1CALL
+copy_EncTicketPart(const EncTicketPart * from, EncTicketPart * to)
{
memset(to, 0, sizeof(*to));
- *(to) = *(from);
+ if (copy_TicketFlags(&(from)->flags, &(to)->flags))
+ goto fail;
+ if (copy_EncryptionKey(&(from)->key, &(to)->key))
+ goto fail;
+ if (copy_Realm(&(from)->crealm, &(to)->crealm))
+ goto fail;
+ if (copy_PrincipalName(&(from)->cname, &(to)->cname))
+ goto fail;
+ if (copy_TransitedEncoding(&(from)->transited, &(to)->transited))
+ goto fail;
+ if (copy_KerberosTime(&(from)->authtime, &(to)->authtime))
+ goto fail;
+ if ((from)->starttime) {
+ (to)->starttime = malloc(sizeof(*(to)->starttime));
+ if ((to)->starttime == NULL)
+ goto fail;
+ if (copy_KerberosTime((from)->starttime, (to)->starttime))
+ goto fail;
+ } else
+ (to)->starttime = NULL;
+ if (copy_KerberosTime(&(from)->endtime, &(to)->endtime))
+ goto fail;
+ if ((from)->renew_till) {
+ (to)->renew_till = malloc(sizeof(*(to)->renew_till));
+ if ((to)->renew_till == NULL)
+ goto fail;
+ if (copy_KerberosTime((from)->renew_till, (to)->renew_till))
+ goto fail;
+ } else
+ (to)->renew_till = NULL;
+ if ((from)->caddr) {
+ (to)->caddr = malloc(sizeof(*(to)->caddr));
+ if ((to)->caddr == NULL)
+ goto fail;
+ if (copy_HostAddresses((from)->caddr, (to)->caddr))
+ goto fail;
+ } else
+ (to)->caddr = NULL;
+ if ((from)->authorization_data) {
+ (to)->authorization_data = malloc(sizeof(*(to)->authorization_data));
+ if ((to)->authorization_data == NULL)
+ goto fail;
+ if (copy_AuthorizationData
+ ((from)->authorization_data, (to)->authorization_data))
+ goto fail;
+ } else
+ (to)->authorization_data = NULL;
return 0;
+ fail:
+ free_EncTicketPart(to);
+ return ENOMEM;
}
#ifndef __asn1_common_definitions__
#define __asn1_common_definitions__
+#ifndef __HEIM_BASE_DATA__
+#define __HEIM_BASE_DATA__ 1
+struct heim_base_data {
+ size_t length;
+ void *data;
+};
+typedef struct heim_base_data heim_octet_string;
+#endif
+
typedef struct heim_integer {
size_t length;
void *data;
int negative;
} heim_integer;
-typedef struct heim_octet_string {
- size_t length;
- void *data;
-} heim_octet_string;
-
typedef char *heim_general_string;
typedef char *heim_utf8_string;
-typedef char *heim_printable_string;
+typedef struct heim_base_data heim_printable_string;
-typedef char *heim_ia5_string;
+typedef struct heim_base_data heim_ia5_string;
typedef struct heim_bmp_string {
size_t length;
void *data;
} heim_bit_string;
-typedef struct heim_octet_string heim_any;
-typedef struct heim_octet_string heim_any_set;
+typedef struct heim_base_data heim_any;
+typedef struct heim_base_data heim_any_set;
#define ASN1_MALLOC_ENCODE(T, B, BL, S, L, R) \
do { \
} \
} while (0)
+#ifdef _WIN32
+#ifndef ASN1_LIB
+#define ASN1EXP __declspec(dllimport)
+#else
+#define ASN1EXP
+#endif
+#define ASN1CALL __stdcall
+#else
+#define ASN1EXP
+#define ASN1CALL
+#endif
#endif
KRB5_NT_SMTP_NAME(7),
KRB5_NT_ENTERPRISE_PRINCIPAL(10),
KRB5_NT_WELLKNOWN(11),
+ KRB5_NT_SRV_HST_DOMAIN(12),
KRB5_NT_ENT_PRINCIPAL_AND_ID(-130),
KRB5_NT_MS_PRINCIPAL(-128),
KRB5_NT_MS_PRINCIPAL_AND_ID(-129),
- KRB5_NT_NTLM(-1200)
+ KRB5_NT_NTLM(-1200),
+ KRB5_NT_X509_GENERAL_NAME(-1201),
+ KRB5_NT_GSS_HOSTBASED_SERVICE(-1202),
+ KRB5_NT_CACHE_UUID(-1203),
+ KRB5_NT_SRV_HST_NEEDS_CANON(-195894762)
}
*/
KRB5_NT_SMTP_NAME = 7,
KRB5_NT_ENTERPRISE_PRINCIPAL = 10,
KRB5_NT_WELLKNOWN = 11,
+ KRB5_NT_SRV_HST_DOMAIN = 12,
KRB5_NT_ENT_PRINCIPAL_AND_ID = -130,
KRB5_NT_MS_PRINCIPAL = -128,
KRB5_NT_MS_PRINCIPAL_AND_ID = -129,
- KRB5_NT_NTLM = -1200
+ KRB5_NT_NTLM = -1200,
+ KRB5_NT_X509_GENERAL_NAME = -1201,
+ KRB5_NT_GSS_HOSTBASED_SERVICE = -1202,
+ KRB5_NT_CACHE_UUID = -1203,
+ KRB5_NT_SRV_HST_NEEDS_CANON = -195894762
} NAME_TYPE;
-int decode_NAME_TYPE(const unsigned char *, size_t, NAME_TYPE *, size_t *);
-int encode_NAME_TYPE(unsigned char *, size_t, const NAME_TYPE *, size_t *);
-size_t length_NAME_TYPE(const NAME_TYPE *);
-int copy_NAME_TYPE (const NAME_TYPE *, NAME_TYPE *);
-void free_NAME_TYPE (NAME_TYPE *);
+ASN1EXP int ASN1CALL decode_NAME_TYPE(const unsigned char *, size_t, NAME_TYPE *, size_t *);
+ASN1EXP int ASN1CALL encode_NAME_TYPE(unsigned char *, size_t, const NAME_TYPE *, size_t *);
+ASN1EXP size_t ASN1CALL length_NAME_TYPE(const NAME_TYPE *);
+ASN1EXP int ASN1CALL copy_NAME_TYPE (const NAME_TYPE *, NAME_TYPE *);
+ASN1EXP void ASN1CALL free_NAME_TYPE (NAME_TYPE *);
/*
krb_error = 30
} MESSAGE_TYPE;
-int decode_MESSAGE_TYPE(const unsigned char *, size_t, MESSAGE_TYPE *, size_t *);
-int encode_MESSAGE_TYPE(unsigned char *, size_t, const MESSAGE_TYPE *, size_t *);
-size_t length_MESSAGE_TYPE(const MESSAGE_TYPE *);
-int copy_MESSAGE_TYPE (const MESSAGE_TYPE *, MESSAGE_TYPE *);
-void free_MESSAGE_TYPE (MESSAGE_TYPE *);
-
-
/*
PADATA-TYPE ::= INTEGER {
KRB5_PADATA_NONE(0),
KRB5_PADATA_SAM_CHALLENGE2(30),
KRB5_PADATA_SAM_RESPONSE2(31),
KRB5_PA_EXTRA_TGT(41),
+ KRB5_PADATA_FX_FAST_ARMOR(71),
KRB5_PADATA_TD_KRB_PRINCIPAL(102),
KRB5_PADATA_PK_TD_TRUSTED_CERTIFIERS(104),
KRB5_PADATA_PK_TD_CERTIFICATE_INDEX(105),
KRB5_PADATA_FOR_CHECK_DUPS(131),
KRB5_PADATA_AS_CHECKSUM(132),
KRB5_PADATA_PK_AS_09_BINDING(132),
- KRB5_PADATA_CLIENT_CANONICALIZED(133),
KRB5_PADATA_FX_COOKIE(133),
KRB5_PADATA_AUTHENTICATION_SET(134),
KRB5_PADATA_AUTH_SET_SELECTED(135),
KRB5_PADATA_EPAK_AS_REP(146),
KRB5_PADATA_PKINIT_KX(147),
KRB5_PADATA_PKU2U_NAME(148),
+ KRB5_PADATA_REQ_ENC_PA_REP(149),
KRB5_PADATA_SUPPORTED_ETYPES(165)
}
*/
KRB5_PADATA_SAM_CHALLENGE2 = 30,
KRB5_PADATA_SAM_RESPONSE2 = 31,
KRB5_PA_EXTRA_TGT = 41,
+ KRB5_PADATA_FX_FAST_ARMOR = 71,
KRB5_PADATA_TD_KRB_PRINCIPAL = 102,
KRB5_PADATA_PK_TD_TRUSTED_CERTIFIERS = 104,
KRB5_PADATA_PK_TD_CERTIFICATE_INDEX = 105,
KRB5_PADATA_FOR_CHECK_DUPS = 131,
KRB5_PADATA_AS_CHECKSUM = 132,
KRB5_PADATA_PK_AS_09_BINDING = 132,
- KRB5_PADATA_CLIENT_CANONICALIZED = 133,
KRB5_PADATA_FX_COOKIE = 133,
KRB5_PADATA_AUTHENTICATION_SET = 134,
KRB5_PADATA_AUTH_SET_SELECTED = 135,
KRB5_PADATA_EPAK_AS_REP = 146,
KRB5_PADATA_PKINIT_KX = 147,
KRB5_PADATA_PKU2U_NAME = 148,
+ KRB5_PADATA_REQ_ENC_PA_REP = 149,
KRB5_PADATA_SUPPORTED_ETYPES = 165
} PADATA_TYPE;
-int decode_PADATA_TYPE(const unsigned char *, size_t, PADATA_TYPE *, size_t *);
-int encode_PADATA_TYPE(unsigned char *, size_t, const PADATA_TYPE *, size_t *);
-size_t length_PADATA_TYPE(const PADATA_TYPE *);
-int copy_PADATA_TYPE (const PADATA_TYPE *, PADATA_TYPE *);
-void free_PADATA_TYPE (PADATA_TYPE *);
+ASN1EXP int ASN1CALL decode_PADATA_TYPE(const unsigned char *, size_t, PADATA_TYPE *, size_t *);
+ASN1EXP int ASN1CALL encode_PADATA_TYPE(unsigned char *, size_t, const PADATA_TYPE *, size_t *);
+ASN1EXP size_t ASN1CALL length_PADATA_TYPE(const PADATA_TYPE *);
+ASN1EXP int ASN1CALL copy_PADATA_TYPE (const PADATA_TYPE *, PADATA_TYPE *);
+ASN1EXP void ASN1CALL free_PADATA_TYPE (PADATA_TYPE *);
/*
KRB5_AUTHDATA_SIGNTICKET = 512
} AUTHDATA_TYPE;
-int decode_AUTHDATA_TYPE(const unsigned char *, size_t, AUTHDATA_TYPE *, size_t *);
-int encode_AUTHDATA_TYPE(unsigned char *, size_t, const AUTHDATA_TYPE *, size_t *);
-size_t length_AUTHDATA_TYPE(const AUTHDATA_TYPE *);
-int copy_AUTHDATA_TYPE (const AUTHDATA_TYPE *, AUTHDATA_TYPE *);
-void free_AUTHDATA_TYPE (AUTHDATA_TYPE *);
+ASN1EXP int ASN1CALL decode_AUTHDATA_TYPE(const unsigned char *, size_t, AUTHDATA_TYPE *, size_t *);
+ASN1EXP int ASN1CALL encode_AUTHDATA_TYPE(unsigned char *, size_t, const AUTHDATA_TYPE *, size_t *);
+ASN1EXP size_t ASN1CALL length_AUTHDATA_TYPE(const AUTHDATA_TYPE *);
+ASN1EXP int ASN1CALL copy_AUTHDATA_TYPE (const AUTHDATA_TYPE *, AUTHDATA_TYPE *);
+ASN1EXP void ASN1CALL free_AUTHDATA_TYPE (AUTHDATA_TYPE *);
/*
CKSUMTYPE_SHA1(14),
CKSUMTYPE_HMAC_SHA1_96_AES_128(15),
CKSUMTYPE_HMAC_SHA1_96_AES_256(16),
+ CKSUMTYPE_HMAC_SHA256_128_AES128(19),
+ CKSUMTYPE_HMAC_SHA384_192_AES256(20),
CKSUMTYPE_GSSAPI(32771),
CKSUMTYPE_HMAC_MD5(-138),
CKSUMTYPE_HMAC_MD5_ENC(-1138)
CKSUMTYPE_SHA1 = 14,
CKSUMTYPE_HMAC_SHA1_96_AES_128 = 15,
CKSUMTYPE_HMAC_SHA1_96_AES_256 = 16,
+ CKSUMTYPE_HMAC_SHA256_128_AES128 = 19,
+ CKSUMTYPE_HMAC_SHA384_192_AES256 = 20,
CKSUMTYPE_GSSAPI = 32771,
CKSUMTYPE_HMAC_MD5 = -138,
CKSUMTYPE_HMAC_MD5_ENC = -1138
} CKSUMTYPE;
-int decode_CKSUMTYPE(const unsigned char *, size_t, CKSUMTYPE *, size_t *);
-int encode_CKSUMTYPE(unsigned char *, size_t, const CKSUMTYPE *, size_t *);
-size_t length_CKSUMTYPE(const CKSUMTYPE *);
-int copy_CKSUMTYPE (const CKSUMTYPE *, CKSUMTYPE *);
-void free_CKSUMTYPE (CKSUMTYPE *);
+ASN1EXP int ASN1CALL decode_CKSUMTYPE(const unsigned char *, size_t, CKSUMTYPE *, size_t *);
+ASN1EXP int ASN1CALL encode_CKSUMTYPE(unsigned char *, size_t, const CKSUMTYPE *, size_t *);
+ASN1EXP size_t ASN1CALL length_CKSUMTYPE(const CKSUMTYPE *);
+ASN1EXP int ASN1CALL copy_CKSUMTYPE (const CKSUMTYPE *, CKSUMTYPE *);
+ASN1EXP void ASN1CALL free_CKSUMTYPE (CKSUMTYPE *);
/*
ENCTYPE ::= INTEGER {
- ETYPE_NULL(0),
- ETYPE_DES_CBC_CRC(1),
- ETYPE_DES_CBC_MD4(2),
- ETYPE_DES_CBC_MD5(3),
- ETYPE_DES3_CBC_MD5(5),
- ETYPE_OLD_DES3_CBC_SHA1(7),
- ETYPE_SIGN_DSA_GENERATE(8),
- ETYPE_ENCRYPT_RSA_PRIV(9),
- ETYPE_ENCRYPT_RSA_PUB(10),
- ETYPE_DES3_CBC_SHA1(16),
- ETYPE_AES128_CTS_HMAC_SHA1_96(17),
- ETYPE_AES256_CTS_HMAC_SHA1_96(18),
- ETYPE_ARCFOUR_HMAC_MD5(23),
- ETYPE_ARCFOUR_HMAC_MD5_56(24),
- ETYPE_ENCTYPE_PK_CROSS(48),
- ETYPE_ARCFOUR_MD4(-128),
- ETYPE_ARCFOUR_HMAC_OLD(-133),
- ETYPE_ARCFOUR_HMAC_OLD_EXP(-135),
- ETYPE_DES_CBC_NONE(-4096),
- ETYPE_DES3_CBC_NONE(-4097),
- ETYPE_DES_CFB64_NONE(-4098),
- ETYPE_DES_PCBC_NONE(-4099),
- ETYPE_DIGEST_MD5_NONE(-4100),
- ETYPE_CRAM_MD5_NONE(-4101)
+ KRB5_ENCTYPE_NULL(0),
+ KRB5_ENCTYPE_DES_CBC_CRC(1),
+ KRB5_ENCTYPE_DES_CBC_MD4(2),
+ KRB5_ENCTYPE_DES_CBC_MD5(3),
+ KRB5_ENCTYPE_DES3_CBC_MD5(5),
+ KRB5_ENCTYPE_OLD_DES3_CBC_SHA1(7),
+ KRB5_ENCTYPE_SIGN_DSA_GENERATE(8),
+ KRB5_ENCTYPE_ENCRYPT_RSA_PRIV(9),
+ KRB5_ENCTYPE_ENCRYPT_RSA_PUB(10),
+ KRB5_ENCTYPE_DES3_CBC_SHA1(16),
+ KRB5_ENCTYPE_AES128_CTS_HMAC_SHA1_96(17),
+ KRB5_ENCTYPE_AES256_CTS_HMAC_SHA1_96(18),
+ KRB5_ENCTYPE_AES128_CTS_HMAC_SHA256_128(19),
+ KRB5_ENCTYPE_AES256_CTS_HMAC_SHA384_192(20),
+ KRB5_ENCTYPE_ARCFOUR_HMAC_MD5(23),
+ KRB5_ENCTYPE_ARCFOUR_HMAC_MD5_56(24),
+ KRB5_ENCTYPE_ENCTYPE_PK_CROSS(48),
+ KRB5_ENCTYPE_ARCFOUR_MD4(-128),
+ KRB5_ENCTYPE_ARCFOUR_HMAC_OLD(-133),
+ KRB5_ENCTYPE_ARCFOUR_HMAC_OLD_EXP(-135),
+ KRB5_ENCTYPE_DES_CBC_NONE(-4096),
+ KRB5_ENCTYPE_DES3_CBC_NONE(-4097),
+ KRB5_ENCTYPE_DES_CFB64_NONE(-4098),
+ KRB5_ENCTYPE_DES_PCBC_NONE(-4099),
+ KRB5_ENCTYPE_DIGEST_MD5_NONE(-4100),
+ KRB5_ENCTYPE_CRAM_MD5_NONE(-4101)
}
*/
typedef enum ENCTYPE {
- ETYPE_NULL = 0,
- ETYPE_DES_CBC_CRC = 1,
- ETYPE_DES_CBC_MD4 = 2,
- ETYPE_DES_CBC_MD5 = 3,
- ETYPE_DES3_CBC_MD5 = 5,
- ETYPE_OLD_DES3_CBC_SHA1 = 7,
- ETYPE_SIGN_DSA_GENERATE = 8,
- ETYPE_ENCRYPT_RSA_PRIV = 9,
- ETYPE_ENCRYPT_RSA_PUB = 10,
- ETYPE_DES3_CBC_SHA1 = 16,
- ETYPE_AES128_CTS_HMAC_SHA1_96 = 17,
- ETYPE_AES256_CTS_HMAC_SHA1_96 = 18,
- ETYPE_ARCFOUR_HMAC_MD5 = 23,
- ETYPE_ARCFOUR_HMAC_MD5_56 = 24,
- ETYPE_ENCTYPE_PK_CROSS = 48,
- ETYPE_ARCFOUR_MD4 = -128,
- ETYPE_ARCFOUR_HMAC_OLD = -133,
- ETYPE_ARCFOUR_HMAC_OLD_EXP = -135,
- ETYPE_DES_CBC_NONE = -4096,
- ETYPE_DES3_CBC_NONE = -4097,
- ETYPE_DES_CFB64_NONE = -4098,
- ETYPE_DES_PCBC_NONE = -4099,
- ETYPE_DIGEST_MD5_NONE = -4100,
- ETYPE_CRAM_MD5_NONE = -4101
+ KRB5_ENCTYPE_NULL = 0,
+ KRB5_ENCTYPE_DES_CBC_CRC = 1,
+ KRB5_ENCTYPE_DES_CBC_MD4 = 2,
+ KRB5_ENCTYPE_DES_CBC_MD5 = 3,
+ KRB5_ENCTYPE_DES3_CBC_MD5 = 5,
+ KRB5_ENCTYPE_OLD_DES3_CBC_SHA1 = 7,
+ KRB5_ENCTYPE_SIGN_DSA_GENERATE = 8,
+ KRB5_ENCTYPE_ENCRYPT_RSA_PRIV = 9,
+ KRB5_ENCTYPE_ENCRYPT_RSA_PUB = 10,
+ KRB5_ENCTYPE_DES3_CBC_SHA1 = 16,
+ KRB5_ENCTYPE_AES128_CTS_HMAC_SHA1_96 = 17,
+ KRB5_ENCTYPE_AES256_CTS_HMAC_SHA1_96 = 18,
+ KRB5_ENCTYPE_AES128_CTS_HMAC_SHA256_128 = 19,
+ KRB5_ENCTYPE_AES256_CTS_HMAC_SHA384_192 = 20,
+ KRB5_ENCTYPE_ARCFOUR_HMAC_MD5 = 23,
+ KRB5_ENCTYPE_ARCFOUR_HMAC_MD5_56 = 24,
+ KRB5_ENCTYPE_ENCTYPE_PK_CROSS = 48,
+ KRB5_ENCTYPE_ARCFOUR_MD4 = -128,
+ KRB5_ENCTYPE_ARCFOUR_HMAC_OLD = -133,
+ KRB5_ENCTYPE_ARCFOUR_HMAC_OLD_EXP = -135,
+ KRB5_ENCTYPE_DES_CBC_NONE = -4096,
+ KRB5_ENCTYPE_DES3_CBC_NONE = -4097,
+ KRB5_ENCTYPE_DES_CFB64_NONE = -4098,
+ KRB5_ENCTYPE_DES_PCBC_NONE = -4099,
+ KRB5_ENCTYPE_DIGEST_MD5_NONE = -4100,
+ KRB5_ENCTYPE_CRAM_MD5_NONE = -4101
} ENCTYPE;
-int decode_ENCTYPE(const unsigned char *, size_t, ENCTYPE *, size_t *);
-int encode_ENCTYPE(unsigned char *, size_t, const ENCTYPE *, size_t *);
-size_t length_ENCTYPE(const ENCTYPE *);
-int copy_ENCTYPE (const ENCTYPE *, ENCTYPE *);
-void free_ENCTYPE (ENCTYPE *);
+ASN1EXP int ASN1CALL decode_ENCTYPE(const unsigned char *, size_t, ENCTYPE *, size_t *);
+ASN1EXP int ASN1CALL encode_ENCTYPE(unsigned char *, size_t, const ENCTYPE *, size_t *);
+ASN1EXP size_t ASN1CALL length_ENCTYPE(const ENCTYPE *);
+ASN1EXP int ASN1CALL copy_ENCTYPE (const ENCTYPE *, ENCTYPE *);
+ASN1EXP void ASN1CALL free_ENCTYPE (ENCTYPE *);
/*
-krb5uint32 ::= INTEGER (0..-1)
+krb5uint32 ::= INTEGER (0..4294967295)
*/
typedef unsigned int krb5uint32;
-int decode_krb5uint32(const unsigned char *, size_t, krb5uint32 *, size_t *);
-int encode_krb5uint32(unsigned char *, size_t, const krb5uint32 *, size_t *);
-size_t length_krb5uint32(const krb5uint32 *);
-int copy_krb5uint32 (const krb5uint32 *, krb5uint32 *);
-void free_krb5uint32 (krb5uint32 *);
-
-
/*
krb5int32 ::= INTEGER (-2147483648..2147483647)
*/
typedef int krb5int32;
-int decode_krb5int32(const unsigned char *, size_t, krb5int32 *, size_t *);
-int encode_krb5int32(unsigned char *, size_t, const krb5int32 *, size_t *);
-size_t length_krb5int32(const krb5int32 *);
-int copy_krb5int32 (const krb5int32 *, krb5int32 *);
-void free_krb5int32 (krb5int32 *);
-
-
/*
KerberosString ::= GeneralString
*/
typedef heim_general_string KerberosString;
-int decode_KerberosString(const unsigned char *, size_t, KerberosString *, size_t *);
-int encode_KerberosString(unsigned char *, size_t, const KerberosString *, size_t *);
-size_t length_KerberosString(const KerberosString *);
-int copy_KerberosString (const KerberosString *, KerberosString *);
-void free_KerberosString (KerberosString *);
+ASN1EXP int ASN1CALL decode_KerberosString(const unsigned char *, size_t, KerberosString *, size_t *);
+ASN1EXP int ASN1CALL encode_KerberosString(unsigned char *, size_t, const KerberosString *, size_t *);
+ASN1EXP size_t ASN1CALL length_KerberosString(const KerberosString *);
+ASN1EXP int ASN1CALL copy_KerberosString (const KerberosString *, KerberosString *);
+ASN1EXP void ASN1CALL free_KerberosString (KerberosString *);
/*
typedef heim_general_string Realm;
-int decode_Realm(const unsigned char *, size_t, Realm *, size_t *);
-int encode_Realm(unsigned char *, size_t, const Realm *, size_t *);
-size_t length_Realm(const Realm *);
-int copy_Realm (const Realm *, Realm *);
-void free_Realm (Realm *);
+ASN1EXP int ASN1CALL decode_Realm(const unsigned char *, size_t, Realm *, size_t *);
+ASN1EXP int ASN1CALL encode_Realm(unsigned char *, size_t, const Realm *, size_t *);
+ASN1EXP size_t ASN1CALL length_Realm(const Realm *);
+ASN1EXP int ASN1CALL copy_Realm (const Realm *, Realm *);
+ASN1EXP void ASN1CALL free_Realm (Realm *);
/*
} name_string;
} PrincipalName;
-int decode_PrincipalName(const unsigned char *, size_t, PrincipalName *, size_t *);
-int encode_PrincipalName(unsigned char *, size_t, const PrincipalName *, size_t *);
-size_t length_PrincipalName(const PrincipalName *);
-int copy_PrincipalName (const PrincipalName *, PrincipalName *);
-void free_PrincipalName (PrincipalName *);
+ASN1EXP int ASN1CALL decode_PrincipalName(const unsigned char *, size_t, PrincipalName *, size_t *);
+ASN1EXP int ASN1CALL encode_PrincipalName(unsigned char *, size_t, const PrincipalName *, size_t *);
+ASN1EXP size_t ASN1CALL length_PrincipalName(const PrincipalName *);
+ASN1EXP int ASN1CALL copy_PrincipalName (const PrincipalName *, PrincipalName *);
+ASN1EXP void ASN1CALL free_PrincipalName (PrincipalName *);
/*
Realm realm;
} Principal;
-int decode_Principal(const unsigned char *, size_t, Principal *, size_t *);
-int encode_Principal(unsigned char *, size_t, const Principal *, size_t *);
-size_t length_Principal(const Principal *);
-int copy_Principal (const Principal *, Principal *);
-void free_Principal (Principal *);
+ASN1EXP int ASN1CALL decode_Principal(const unsigned char *, size_t, Principal *, size_t *);
+ASN1EXP int ASN1CALL encode_Principal(unsigned char *, size_t, const Principal *, size_t *);
+ASN1EXP size_t ASN1CALL length_Principal(const Principal *);
+ASN1EXP int ASN1CALL copy_Principal (const Principal *, Principal *);
+ASN1EXP void ASN1CALL free_Principal (Principal *);
/*
Principal *val;
} Principals;
-int add_Principals (Principals *, const Principal *);
-int remove_Principals (Principals *, unsigned int);
-int decode_Principals(const unsigned char *, size_t, Principals *, size_t *);
-int encode_Principals(unsigned char *, size_t, const Principals *, size_t *);
-size_t length_Principals(const Principals *);
-int copy_Principals (const Principals *, Principals *);
-void free_Principals (Principals *);
+ASN1EXP int ASN1CALL add_Principals (Principals *, const Principal *);
+ASN1EXP int ASN1CALL remove_Principals (Principals *, unsigned int);
+ASN1EXP int ASN1CALL decode_Principals(const unsigned char *, size_t, Principals *, size_t *);
+ASN1EXP int ASN1CALL encode_Principals(unsigned char *, size_t, const Principals *, size_t *);
+ASN1EXP size_t ASN1CALL length_Principals(const Principals *);
+ASN1EXP int ASN1CALL copy_Principals (const Principals *, Principals *);
+ASN1EXP void ASN1CALL free_Principals (Principals *);
/*
heim_octet_string address;
} HostAddress;
-int decode_HostAddress(const unsigned char *, size_t, HostAddress *, size_t *);
-int encode_HostAddress(unsigned char *, size_t, const HostAddress *, size_t *);
-size_t length_HostAddress(const HostAddress *);
-int copy_HostAddress (const HostAddress *, HostAddress *);
-void free_HostAddress (HostAddress *);
+ASN1EXP int ASN1CALL decode_HostAddress(const unsigned char *, size_t, HostAddress *, size_t *);
+ASN1EXP int ASN1CALL encode_HostAddress(unsigned char *, size_t, const HostAddress *, size_t *);
+ASN1EXP size_t ASN1CALL length_HostAddress(const HostAddress *);
+ASN1EXP int ASN1CALL copy_HostAddress (const HostAddress *, HostAddress *);
+ASN1EXP void ASN1CALL free_HostAddress (HostAddress *);
/*
HostAddress *val;
} HostAddresses;
-int decode_HostAddresses(const unsigned char *, size_t, HostAddresses *, size_t *);
-int encode_HostAddresses(unsigned char *, size_t, const HostAddresses *, size_t *);
-size_t length_HostAddresses(const HostAddresses *);
-int copy_HostAddresses (const HostAddresses *, HostAddresses *);
-void free_HostAddresses (HostAddresses *);
+ASN1EXP int ASN1CALL decode_HostAddresses(const unsigned char *, size_t, HostAddresses *, size_t *);
+ASN1EXP int ASN1CALL encode_HostAddresses(unsigned char *, size_t, const HostAddresses *, size_t *);
+ASN1EXP size_t ASN1CALL length_HostAddresses(const HostAddresses *);
+ASN1EXP int ASN1CALL copy_HostAddresses (const HostAddresses *, HostAddresses *);
+ASN1EXP void ASN1CALL free_HostAddresses (HostAddresses *);
/*
typedef time_t KerberosTime;
-int decode_KerberosTime(const unsigned char *, size_t, KerberosTime *, size_t *);
-int encode_KerberosTime(unsigned char *, size_t, const KerberosTime *, size_t *);
-size_t length_KerberosTime(const KerberosTime *);
-int copy_KerberosTime (const KerberosTime *, KerberosTime *);
-void free_KerberosTime (KerberosTime *);
+ASN1EXP int ASN1CALL decode_KerberosTime(const unsigned char *, size_t, KerberosTime *, size_t *);
+ASN1EXP int ASN1CALL encode_KerberosTime(unsigned char *, size_t, const KerberosTime *, size_t *);
+ASN1EXP size_t ASN1CALL length_KerberosTime(const KerberosTime *);
+ASN1EXP int ASN1CALL copy_KerberosTime (const KerberosTime *, KerberosTime *);
+ASN1EXP void ASN1CALL free_KerberosTime (KerberosTime *);
/*
heim_octet_string ad_data;
} AuthorizationDataElement;
-int decode_AuthorizationDataElement(const unsigned char *, size_t, AuthorizationDataElement *, size_t *);
-int encode_AuthorizationDataElement(unsigned char *, size_t, const AuthorizationDataElement *, size_t *);
-size_t length_AuthorizationDataElement(const AuthorizationDataElement *);
-int copy_AuthorizationDataElement (const AuthorizationDataElement *, AuthorizationDataElement *);
-void free_AuthorizationDataElement (AuthorizationDataElement *);
+ASN1EXP int ASN1CALL decode_AuthorizationDataElement(const unsigned char *, size_t, AuthorizationDataElement *, size_t *);
+ASN1EXP int ASN1CALL encode_AuthorizationDataElement(unsigned char *, size_t, const AuthorizationDataElement *, size_t *);
+ASN1EXP size_t ASN1CALL length_AuthorizationDataElement(const AuthorizationDataElement *);
+ASN1EXP int ASN1CALL copy_AuthorizationDataElement (const AuthorizationDataElement *, AuthorizationDataElement *);
+ASN1EXP void ASN1CALL free_AuthorizationDataElement (AuthorizationDataElement *);
/*
AuthorizationDataElement *val;
} AuthorizationData;
-int add_AuthorizationData (AuthorizationData *, const AuthorizationDataElement *);
-int remove_AuthorizationData (AuthorizationData *, unsigned int);
-int decode_AuthorizationData(const unsigned char *, size_t, AuthorizationData *, size_t *);
-int encode_AuthorizationData(unsigned char *, size_t, const AuthorizationData *, size_t *);
-size_t length_AuthorizationData(const AuthorizationData *);
-int copy_AuthorizationData (const AuthorizationData *, AuthorizationData *);
-void free_AuthorizationData (AuthorizationData *);
+ASN1EXP int ASN1CALL add_AuthorizationData (AuthorizationData *, const AuthorizationDataElement *);
+ASN1EXP int ASN1CALL remove_AuthorizationData (AuthorizationData *, unsigned int);
+ASN1EXP int ASN1CALL decode_AuthorizationData(const unsigned char *, size_t, AuthorizationData *, size_t *);
+ASN1EXP int ASN1CALL encode_AuthorizationData(unsigned char *, size_t, const AuthorizationData *, size_t *);
+ASN1EXP size_t ASN1CALL length_AuthorizationData(const AuthorizationData *);
+ASN1EXP int ASN1CALL copy_AuthorizationData (const AuthorizationData *, AuthorizationData *);
+ASN1EXP void ASN1CALL free_AuthorizationData (AuthorizationData *);
/*
unsigned APOptions2int(APOptions);
APOptions int2APOptions(unsigned);
-int decode_APOptions(const unsigned char *, size_t, APOptions *, size_t *);
-int encode_APOptions(unsigned char *, size_t, const APOptions *, size_t *);
-size_t length_APOptions(const APOptions *);
-int copy_APOptions (const APOptions *, APOptions *);
-void free_APOptions (APOptions *);
-
-
/*
TicketFlags ::= BIT STRING {
reserved(0),
hw-authent(11),
transited-policy-checked(12),
ok-as-delegate(13),
- anonymous(14)
+ enc-pa-rep(15),
+ anonymous(16)
}
*/
unsigned int hw_authent:1;
unsigned int transited_policy_checked:1;
unsigned int ok_as_delegate:1;
+ unsigned int _unused14:1;
+ unsigned int enc_pa_rep:1;
unsigned int anonymous:1;
- unsigned int _unused15:1;
- unsigned int _unused16:1;
unsigned int _unused17:1;
unsigned int _unused18:1;
unsigned int _unused19:1;
unsigned TicketFlags2int(TicketFlags);
TicketFlags int2TicketFlags(unsigned);
-int decode_TicketFlags(const unsigned char *, size_t, TicketFlags *, size_t *);
-int encode_TicketFlags(unsigned char *, size_t, const TicketFlags *, size_t *);
-size_t length_TicketFlags(const TicketFlags *);
-int copy_TicketFlags (const TicketFlags *, TicketFlags *);
-void free_TicketFlags (TicketFlags *);
+ASN1EXP int ASN1CALL decode_TicketFlags(const unsigned char *, size_t, TicketFlags *, size_t *);
+ASN1EXP int ASN1CALL encode_TicketFlags(unsigned char *, size_t, const TicketFlags *, size_t *);
+ASN1EXP size_t ASN1CALL length_TicketFlags(const TicketFlags *);
+ASN1EXP int ASN1CALL copy_TicketFlags (const TicketFlags *, TicketFlags *);
+ASN1EXP void ASN1CALL free_TicketFlags (TicketFlags *);
/*
allow-postdate(5),
postdated(6),
renewable(8),
- request-anonymous(14),
+ cname-in-addl-tkt(14),
canonicalize(15),
- constrained-delegation(16),
+ request-anonymous(16),
disable-transited-check(26),
renewable-ok(27),
enc-tkt-in-skey(28),
unsigned int _unused11:1;
unsigned int _unused12:1;
unsigned int _unused13:1;
- unsigned int request_anonymous:1;
+ unsigned int cname_in_addl_tkt:1;
unsigned int canonicalize:1;
- unsigned int constrained_delegation:1;
+ unsigned int request_anonymous:1;
unsigned int _unused17:1;
unsigned int _unused18:1;
unsigned int _unused19:1;
unsigned KDCOptions2int(KDCOptions);
KDCOptions int2KDCOptions(unsigned);
-int decode_KDCOptions(const unsigned char *, size_t, KDCOptions *, size_t *);
-int encode_KDCOptions(unsigned char *, size_t, const KDCOptions *, size_t *);
-size_t length_KDCOptions(const KDCOptions *);
-int copy_KDCOptions (const KDCOptions *, KDCOptions *);
-void free_KDCOptions (KDCOptions *);
+ASN1EXP int ASN1CALL decode_KDCOptions(const unsigned char *, size_t, KDCOptions *, size_t *);
+ASN1EXP int ASN1CALL encode_KDCOptions(unsigned char *, size_t, const KDCOptions *, size_t *);
+ASN1EXP size_t ASN1CALL length_KDCOptions(const KDCOptions *);
+ASN1EXP int ASN1CALL copy_KDCOptions (const KDCOptions *, KDCOptions *);
+ASN1EXP void ASN1CALL free_KDCOptions (KDCOptions *);
/*
LR_ACCT_EXPTIME = 7
} LR_TYPE;
-int decode_LR_TYPE(const unsigned char *, size_t, LR_TYPE *, size_t *);
-int encode_LR_TYPE(unsigned char *, size_t, const LR_TYPE *, size_t *);
-size_t length_LR_TYPE(const LR_TYPE *);
-int copy_LR_TYPE (const LR_TYPE *, LR_TYPE *);
-void free_LR_TYPE (LR_TYPE *);
+ASN1EXP int ASN1CALL decode_LR_TYPE(const unsigned char *, size_t, LR_TYPE *, size_t *);
+ASN1EXP int ASN1CALL encode_LR_TYPE(unsigned char *, size_t, const LR_TYPE *, size_t *);
+ASN1EXP size_t ASN1CALL length_LR_TYPE(const LR_TYPE *);
+ASN1EXP int ASN1CALL copy_LR_TYPE (const LR_TYPE *, LR_TYPE *);
+ASN1EXP void ASN1CALL free_LR_TYPE (LR_TYPE *);
/*
} *val;
} LastReq;
-int decode_LastReq(const unsigned char *, size_t, LastReq *, size_t *);
-int encode_LastReq(unsigned char *, size_t, const LastReq *, size_t *);
-size_t length_LastReq(const LastReq *);
-int copy_LastReq (const LastReq *, LastReq *);
-void free_LastReq (LastReq *);
+ASN1EXP int ASN1CALL decode_LastReq(const unsigned char *, size_t, LastReq *, size_t *);
+ASN1EXP int ASN1CALL encode_LastReq(unsigned char *, size_t, const LastReq *, size_t *);
+ASN1EXP size_t ASN1CALL length_LastReq(const LastReq *);
+ASN1EXP int ASN1CALL copy_LastReq (const LastReq *, LastReq *);
+ASN1EXP void ASN1CALL free_LastReq (LastReq *);
/*
heim_octet_string cipher;
} EncryptedData;
-int decode_EncryptedData(const unsigned char *, size_t, EncryptedData *, size_t *);
-int encode_EncryptedData(unsigned char *, size_t, const EncryptedData *, size_t *);
-size_t length_EncryptedData(const EncryptedData *);
-int copy_EncryptedData (const EncryptedData *, EncryptedData *);
-void free_EncryptedData (EncryptedData *);
+ASN1EXP int ASN1CALL decode_EncryptedData(const unsigned char *, size_t, EncryptedData *, size_t *);
+ASN1EXP int ASN1CALL encode_EncryptedData(unsigned char *, size_t, const EncryptedData *, size_t *);
+ASN1EXP size_t ASN1CALL length_EncryptedData(const EncryptedData *);
+ASN1EXP int ASN1CALL copy_EncryptedData (const EncryptedData *, EncryptedData *);
+ASN1EXP void ASN1CALL free_EncryptedData (EncryptedData *);
/*
heim_octet_string keyvalue;
} EncryptionKey;
-int decode_EncryptionKey(const unsigned char *, size_t, EncryptionKey *, size_t *);
-int encode_EncryptionKey(unsigned char *, size_t, const EncryptionKey *, size_t *);
-size_t length_EncryptionKey(const EncryptionKey *);
-int copy_EncryptionKey (const EncryptionKey *, EncryptionKey *);
-void free_EncryptionKey (EncryptionKey *);
+ASN1EXP int ASN1CALL decode_EncryptionKey(const unsigned char *, size_t, EncryptionKey *, size_t *);
+ASN1EXP int ASN1CALL encode_EncryptionKey(unsigned char *, size_t, const EncryptionKey *, size_t *);
+ASN1EXP size_t ASN1CALL length_EncryptionKey(const EncryptionKey *);
+ASN1EXP int ASN1CALL copy_EncryptionKey (const EncryptionKey *, EncryptionKey *);
+ASN1EXP void ASN1CALL free_EncryptionKey (EncryptionKey *);
/*
heim_octet_string contents;
} TransitedEncoding;
-int decode_TransitedEncoding(const unsigned char *, size_t, TransitedEncoding *, size_t *);
-int encode_TransitedEncoding(unsigned char *, size_t, const TransitedEncoding *, size_t *);
-size_t length_TransitedEncoding(const TransitedEncoding *);
-int copy_TransitedEncoding (const TransitedEncoding *, TransitedEncoding *);
-void free_TransitedEncoding (TransitedEncoding *);
+ASN1EXP int ASN1CALL decode_TransitedEncoding(const unsigned char *, size_t, TransitedEncoding *, size_t *);
+ASN1EXP int ASN1CALL encode_TransitedEncoding(unsigned char *, size_t, const TransitedEncoding *, size_t *);
+ASN1EXP size_t ASN1CALL length_TransitedEncoding(const TransitedEncoding *);
+ASN1EXP int ASN1CALL copy_TransitedEncoding (const TransitedEncoding *, TransitedEncoding *);
+ASN1EXP void ASN1CALL free_TransitedEncoding (TransitedEncoding *);
/*
EncryptedData enc_part;
} Ticket;
-int decode_Ticket(const unsigned char *, size_t, Ticket *, size_t *);
-int encode_Ticket(unsigned char *, size_t, const Ticket *, size_t *);
-size_t length_Ticket(const Ticket *);
-int copy_Ticket (const Ticket *, Ticket *);
-void free_Ticket (Ticket *);
+ASN1EXP int ASN1CALL decode_Ticket(const unsigned char *, size_t, Ticket *, size_t *);
+ASN1EXP int ASN1CALL encode_Ticket(unsigned char *, size_t, const Ticket *, size_t *);
+ASN1EXP size_t ASN1CALL length_Ticket(const Ticket *);
+ASN1EXP int ASN1CALL copy_Ticket (const Ticket *, Ticket *);
+ASN1EXP void ASN1CALL free_Ticket (Ticket *);
/*
AuthorizationData *authorization_data;
} EncTicketPart;
-int decode_EncTicketPart(const unsigned char *, size_t, EncTicketPart *, size_t *);
-int encode_EncTicketPart(unsigned char *, size_t, const EncTicketPart *, size_t *);
-size_t length_EncTicketPart(const EncTicketPart *);
-int copy_EncTicketPart (const EncTicketPart *, EncTicketPart *);
-void free_EncTicketPart (EncTicketPart *);
+ASN1EXP int ASN1CALL decode_EncTicketPart(const unsigned char *, size_t, EncTicketPart *, size_t *);
+ASN1EXP int ASN1CALL encode_EncTicketPart(unsigned char *, size_t, const EncTicketPart *, size_t *);
+ASN1EXP size_t ASN1CALL length_EncTicketPart(const EncTicketPart *);
+ASN1EXP int ASN1CALL copy_EncTicketPart (const EncTicketPart *, EncTicketPart *);
+ASN1EXP void ASN1CALL free_EncTicketPart (EncTicketPart *);
/*
heim_octet_string checksum;
} Checksum;
-int decode_Checksum(const unsigned char *, size_t, Checksum *, size_t *);
-int encode_Checksum(unsigned char *, size_t, const Checksum *, size_t *);
-size_t length_Checksum(const Checksum *);
-int copy_Checksum (const Checksum *, Checksum *);
-void free_Checksum (Checksum *);
+ASN1EXP int ASN1CALL decode_Checksum(const unsigned char *, size_t, Checksum *, size_t *);
+ASN1EXP int ASN1CALL encode_Checksum(unsigned char *, size_t, const Checksum *, size_t *);
+ASN1EXP size_t ASN1CALL length_Checksum(const Checksum *);
+ASN1EXP int ASN1CALL copy_Checksum (const Checksum *, Checksum *);
+ASN1EXP void ASN1CALL free_Checksum (Checksum *);
/*
AuthorizationData *authorization_data;
} Authenticator;
-int decode_Authenticator(const unsigned char *, size_t, Authenticator *, size_t *);
-int encode_Authenticator(unsigned char *, size_t, const Authenticator *, size_t *);
-size_t length_Authenticator(const Authenticator *);
-int copy_Authenticator (const Authenticator *, Authenticator *);
-void free_Authenticator (Authenticator *);
+ASN1EXP int ASN1CALL decode_Authenticator(const unsigned char *, size_t, Authenticator *, size_t *);
+ASN1EXP int ASN1CALL encode_Authenticator(unsigned char *, size_t, const Authenticator *, size_t *);
+ASN1EXP size_t ASN1CALL length_Authenticator(const Authenticator *);
+ASN1EXP int ASN1CALL copy_Authenticator (const Authenticator *, Authenticator *);
+ASN1EXP void ASN1CALL free_Authenticator (Authenticator *);
/*
heim_octet_string padata_value;
} PA_DATA;
-int decode_PA_DATA(const unsigned char *, size_t, PA_DATA *, size_t *);
-int encode_PA_DATA(unsigned char *, size_t, const PA_DATA *, size_t *);
-size_t length_PA_DATA(const PA_DATA *);
-int copy_PA_DATA (const PA_DATA *, PA_DATA *);
-void free_PA_DATA (PA_DATA *);
+ASN1EXP int ASN1CALL decode_PA_DATA(const unsigned char *, size_t, PA_DATA *, size_t *);
+ASN1EXP int ASN1CALL encode_PA_DATA(unsigned char *, size_t, const PA_DATA *, size_t *);
+ASN1EXP size_t ASN1CALL length_PA_DATA(const PA_DATA *);
+ASN1EXP int ASN1CALL copy_PA_DATA (const PA_DATA *, PA_DATA *);
+ASN1EXP void ASN1CALL free_PA_DATA (PA_DATA *);
/*
krb5int32 *salttype;
} ETYPE_INFO_ENTRY;
-int decode_ETYPE_INFO_ENTRY(const unsigned char *, size_t, ETYPE_INFO_ENTRY *, size_t *);
-int encode_ETYPE_INFO_ENTRY(unsigned char *, size_t, const ETYPE_INFO_ENTRY *, size_t *);
-size_t length_ETYPE_INFO_ENTRY(const ETYPE_INFO_ENTRY *);
-int copy_ETYPE_INFO_ENTRY (const ETYPE_INFO_ENTRY *, ETYPE_INFO_ENTRY *);
-void free_ETYPE_INFO_ENTRY (ETYPE_INFO_ENTRY *);
+ASN1EXP int ASN1CALL decode_ETYPE_INFO_ENTRY(const unsigned char *, size_t, ETYPE_INFO_ENTRY *, size_t *);
+ASN1EXP int ASN1CALL encode_ETYPE_INFO_ENTRY(unsigned char *, size_t, const ETYPE_INFO_ENTRY *, size_t *);
+ASN1EXP size_t ASN1CALL length_ETYPE_INFO_ENTRY(const ETYPE_INFO_ENTRY *);
+ASN1EXP int ASN1CALL copy_ETYPE_INFO_ENTRY (const ETYPE_INFO_ENTRY *, ETYPE_INFO_ENTRY *);
+ASN1EXP void ASN1CALL free_ETYPE_INFO_ENTRY (ETYPE_INFO_ENTRY *);
/*
ETYPE_INFO_ENTRY *val;
} ETYPE_INFO;
-int add_ETYPE_INFO (ETYPE_INFO *, const ETYPE_INFO_ENTRY *);
-int remove_ETYPE_INFO (ETYPE_INFO *, unsigned int);
-int decode_ETYPE_INFO(const unsigned char *, size_t, ETYPE_INFO *, size_t *);
-int encode_ETYPE_INFO(unsigned char *, size_t, const ETYPE_INFO *, size_t *);
-size_t length_ETYPE_INFO(const ETYPE_INFO *);
-int copy_ETYPE_INFO (const ETYPE_INFO *, ETYPE_INFO *);
-void free_ETYPE_INFO (ETYPE_INFO *);
+ASN1EXP int ASN1CALL add_ETYPE_INFO (ETYPE_INFO *, const ETYPE_INFO_ENTRY *);
+ASN1EXP int ASN1CALL remove_ETYPE_INFO (ETYPE_INFO *, unsigned int);
+ASN1EXP int ASN1CALL decode_ETYPE_INFO(const unsigned char *, size_t, ETYPE_INFO *, size_t *);
+ASN1EXP int ASN1CALL encode_ETYPE_INFO(unsigned char *, size_t, const ETYPE_INFO *, size_t *);
+ASN1EXP size_t ASN1CALL length_ETYPE_INFO(const ETYPE_INFO *);
+ASN1EXP int ASN1CALL copy_ETYPE_INFO (const ETYPE_INFO *, ETYPE_INFO *);
+ASN1EXP void ASN1CALL free_ETYPE_INFO (ETYPE_INFO *);
/*
heim_octet_string *s2kparams;
} ETYPE_INFO2_ENTRY;
-int decode_ETYPE_INFO2_ENTRY(const unsigned char *, size_t, ETYPE_INFO2_ENTRY *, size_t *);
-int encode_ETYPE_INFO2_ENTRY(unsigned char *, size_t, const ETYPE_INFO2_ENTRY *, size_t *);
-size_t length_ETYPE_INFO2_ENTRY(const ETYPE_INFO2_ENTRY *);
-int copy_ETYPE_INFO2_ENTRY (const ETYPE_INFO2_ENTRY *, ETYPE_INFO2_ENTRY *);
-void free_ETYPE_INFO2_ENTRY (ETYPE_INFO2_ENTRY *);
+ASN1EXP int ASN1CALL decode_ETYPE_INFO2_ENTRY(const unsigned char *, size_t, ETYPE_INFO2_ENTRY *, size_t *);
+ASN1EXP int ASN1CALL encode_ETYPE_INFO2_ENTRY(unsigned char *, size_t, const ETYPE_INFO2_ENTRY *, size_t *);
+ASN1EXP size_t ASN1CALL length_ETYPE_INFO2_ENTRY(const ETYPE_INFO2_ENTRY *);
+ASN1EXP int ASN1CALL copy_ETYPE_INFO2_ENTRY (const ETYPE_INFO2_ENTRY *, ETYPE_INFO2_ENTRY *);
+ASN1EXP void ASN1CALL free_ETYPE_INFO2_ENTRY (ETYPE_INFO2_ENTRY *);
/*
ETYPE_INFO2_ENTRY *val;
} ETYPE_INFO2;
-int add_ETYPE_INFO2 (ETYPE_INFO2 *, const ETYPE_INFO2_ENTRY *);
-int remove_ETYPE_INFO2 (ETYPE_INFO2 *, unsigned int);
-int decode_ETYPE_INFO2(const unsigned char *, size_t, ETYPE_INFO2 *, size_t *);
-int encode_ETYPE_INFO2(unsigned char *, size_t, const ETYPE_INFO2 *, size_t *);
-size_t length_ETYPE_INFO2(const ETYPE_INFO2 *);
-int copy_ETYPE_INFO2 (const ETYPE_INFO2 *, ETYPE_INFO2 *);
-void free_ETYPE_INFO2 (ETYPE_INFO2 *);
+ASN1EXP int ASN1CALL add_ETYPE_INFO2 (ETYPE_INFO2 *, const ETYPE_INFO2_ENTRY *);
+ASN1EXP int ASN1CALL remove_ETYPE_INFO2 (ETYPE_INFO2 *, unsigned int);
+ASN1EXP int ASN1CALL decode_ETYPE_INFO2(const unsigned char *, size_t, ETYPE_INFO2 *, size_t *);
+ASN1EXP int ASN1CALL encode_ETYPE_INFO2(unsigned char *, size_t, const ETYPE_INFO2 *, size_t *);
+ASN1EXP size_t ASN1CALL length_ETYPE_INFO2(const ETYPE_INFO2 *);
+ASN1EXP int ASN1CALL copy_ETYPE_INFO2 (const ETYPE_INFO2 *, ETYPE_INFO2 *);
+ASN1EXP void ASN1CALL free_ETYPE_INFO2 (ETYPE_INFO2 *);
/*
PA_DATA *val;
} METHOD_DATA;
-int add_METHOD_DATA (METHOD_DATA *, const PA_DATA *);
-int remove_METHOD_DATA (METHOD_DATA *, unsigned int);
-int decode_METHOD_DATA(const unsigned char *, size_t, METHOD_DATA *, size_t *);
-int encode_METHOD_DATA(unsigned char *, size_t, const METHOD_DATA *, size_t *);
-size_t length_METHOD_DATA(const METHOD_DATA *);
-int copy_METHOD_DATA (const METHOD_DATA *, METHOD_DATA *);
-void free_METHOD_DATA (METHOD_DATA *);
+ASN1EXP int ASN1CALL add_METHOD_DATA (METHOD_DATA *, const PA_DATA *);
+ASN1EXP int ASN1CALL remove_METHOD_DATA (METHOD_DATA *, unsigned int);
+ASN1EXP int ASN1CALL decode_METHOD_DATA(const unsigned char *, size_t, METHOD_DATA *, size_t *);
+ASN1EXP int ASN1CALL encode_METHOD_DATA(unsigned char *, size_t, const METHOD_DATA *, size_t *);
+ASN1EXP size_t ASN1CALL length_METHOD_DATA(const METHOD_DATA *);
+ASN1EXP int ASN1CALL copy_METHOD_DATA (const METHOD_DATA *, METHOD_DATA *);
+ASN1EXP void ASN1CALL free_METHOD_DATA (METHOD_DATA *);
/*
heim_octet_string *data_value;
} TypedData;
-int decode_TypedData(const unsigned char *, size_t, TypedData *, size_t *);
-int encode_TypedData(unsigned char *, size_t, const TypedData *, size_t *);
-size_t length_TypedData(const TypedData *);
-int copy_TypedData (const TypedData *, TypedData *);
-void free_TypedData (TypedData *);
+ASN1EXP int ASN1CALL decode_TypedData(const unsigned char *, size_t, TypedData *, size_t *);
+ASN1EXP int ASN1CALL encode_TypedData(unsigned char *, size_t, const TypedData *, size_t *);
+ASN1EXP size_t ASN1CALL length_TypedData(const TypedData *);
+ASN1EXP int ASN1CALL copy_TypedData (const TypedData *, TypedData *);
+ASN1EXP void ASN1CALL free_TypedData (TypedData *);
/*
TypedData *val;
} TYPED_DATA;
-int decode_TYPED_DATA(const unsigned char *, size_t, TYPED_DATA *, size_t *);
-int encode_TYPED_DATA(unsigned char *, size_t, const TYPED_DATA *, size_t *);
-size_t length_TYPED_DATA(const TYPED_DATA *);
-int copy_TYPED_DATA (const TYPED_DATA *, TYPED_DATA *);
-void free_TYPED_DATA (TYPED_DATA *);
-
-
/*
KDC-REQ-BODY ::= SEQUENCE {
kdc-options [0] KDCOptions,
} *additional_tickets;
} KDC_REQ_BODY;
-int decode_KDC_REQ_BODY(const unsigned char *, size_t, KDC_REQ_BODY *, size_t *);
-int encode_KDC_REQ_BODY(unsigned char *, size_t, const KDC_REQ_BODY *, size_t *);
-size_t length_KDC_REQ_BODY(const KDC_REQ_BODY *);
-int copy_KDC_REQ_BODY (const KDC_REQ_BODY *, KDC_REQ_BODY *);
-void free_KDC_REQ_BODY (KDC_REQ_BODY *);
+ASN1EXP int ASN1CALL decode_KDC_REQ_BODY(const unsigned char *, size_t, KDC_REQ_BODY *, size_t *);
+ASN1EXP int ASN1CALL encode_KDC_REQ_BODY(unsigned char *, size_t, const KDC_REQ_BODY *, size_t *);
+ASN1EXP size_t ASN1CALL length_KDC_REQ_BODY(const KDC_REQ_BODY *);
+ASN1EXP int ASN1CALL copy_KDC_REQ_BODY (const KDC_REQ_BODY *, KDC_REQ_BODY *);
+ASN1EXP void ASN1CALL free_KDC_REQ_BODY (KDC_REQ_BODY *);
/*
KDC_REQ_BODY req_body;
} KDC_REQ;
-int decode_KDC_REQ(const unsigned char *, size_t, KDC_REQ *, size_t *);
-int encode_KDC_REQ(unsigned char *, size_t, const KDC_REQ *, size_t *);
-size_t length_KDC_REQ(const KDC_REQ *);
-int copy_KDC_REQ (const KDC_REQ *, KDC_REQ *);
-void free_KDC_REQ (KDC_REQ *);
-
-
/*
AS-REQ ::= [APPLICATION 10] KDC-REQ
*/
typedef KDC_REQ AS_REQ;
-int decode_AS_REQ(const unsigned char *, size_t, AS_REQ *, size_t *);
-int encode_AS_REQ(unsigned char *, size_t, const AS_REQ *, size_t *);
-size_t length_AS_REQ(const AS_REQ *);
-int copy_AS_REQ (const AS_REQ *, AS_REQ *);
-void free_AS_REQ (AS_REQ *);
+ASN1EXP int ASN1CALL decode_AS_REQ(const unsigned char *, size_t, AS_REQ *, size_t *);
+ASN1EXP int ASN1CALL encode_AS_REQ(unsigned char *, size_t, const AS_REQ *, size_t *);
+ASN1EXP size_t ASN1CALL length_AS_REQ(const AS_REQ *);
+ASN1EXP int ASN1CALL copy_AS_REQ (const AS_REQ *, AS_REQ *);
+ASN1EXP void ASN1CALL free_AS_REQ (AS_REQ *);
/*
typedef KDC_REQ TGS_REQ;
-int decode_TGS_REQ(const unsigned char *, size_t, TGS_REQ *, size_t *);
-int encode_TGS_REQ(unsigned char *, size_t, const TGS_REQ *, size_t *);
-size_t length_TGS_REQ(const TGS_REQ *);
-int copy_TGS_REQ (const TGS_REQ *, TGS_REQ *);
-void free_TGS_REQ (TGS_REQ *);
+ASN1EXP int ASN1CALL decode_TGS_REQ(const unsigned char *, size_t, TGS_REQ *, size_t *);
+ASN1EXP int ASN1CALL encode_TGS_REQ(unsigned char *, size_t, const TGS_REQ *, size_t *);
+ASN1EXP size_t ASN1CALL length_TGS_REQ(const TGS_REQ *);
+ASN1EXP int ASN1CALL copy_TGS_REQ (const TGS_REQ *, TGS_REQ *);
+ASN1EXP void ASN1CALL free_TGS_REQ (TGS_REQ *);
/*
krb5int32 *pausec;
} PA_ENC_TS_ENC;
-int decode_PA_ENC_TS_ENC(const unsigned char *, size_t, PA_ENC_TS_ENC *, size_t *);
-int encode_PA_ENC_TS_ENC(unsigned char *, size_t, const PA_ENC_TS_ENC *, size_t *);
-size_t length_PA_ENC_TS_ENC(const PA_ENC_TS_ENC *);
-int copy_PA_ENC_TS_ENC (const PA_ENC_TS_ENC *, PA_ENC_TS_ENC *);
-void free_PA_ENC_TS_ENC (PA_ENC_TS_ENC *);
+ASN1EXP int ASN1CALL decode_PA_ENC_TS_ENC(const unsigned char *, size_t, PA_ENC_TS_ENC *, size_t *);
+ASN1EXP int ASN1CALL encode_PA_ENC_TS_ENC(unsigned char *, size_t, const PA_ENC_TS_ENC *, size_t *);
+ASN1EXP size_t ASN1CALL length_PA_ENC_TS_ENC(const PA_ENC_TS_ENC *);
+ASN1EXP int ASN1CALL copy_PA_ENC_TS_ENC (const PA_ENC_TS_ENC *, PA_ENC_TS_ENC *);
+ASN1EXP void ASN1CALL free_PA_ENC_TS_ENC (PA_ENC_TS_ENC *);
/*
int include_pac;
} PA_PAC_REQUEST;
-int decode_PA_PAC_REQUEST(const unsigned char *, size_t, PA_PAC_REQUEST *, size_t *);
-int encode_PA_PAC_REQUEST(unsigned char *, size_t, const PA_PAC_REQUEST *, size_t *);
-size_t length_PA_PAC_REQUEST(const PA_PAC_REQUEST *);
-int copy_PA_PAC_REQUEST (const PA_PAC_REQUEST *, PA_PAC_REQUEST *);
-void free_PA_PAC_REQUEST (PA_PAC_REQUEST *);
+ASN1EXP int ASN1CALL decode_PA_PAC_REQUEST(const unsigned char *, size_t, PA_PAC_REQUEST *, size_t *);
+ASN1EXP int ASN1CALL encode_PA_PAC_REQUEST(unsigned char *, size_t, const PA_PAC_REQUEST *, size_t *);
+ASN1EXP size_t ASN1CALL length_PA_PAC_REQUEST(const PA_PAC_REQUEST *);
+ASN1EXP int ASN1CALL copy_PA_PAC_REQUEST (const PA_PAC_REQUEST *, PA_PAC_REQUEST *);
+ASN1EXP void ASN1CALL free_PA_PAC_REQUEST (PA_PAC_REQUEST *);
/*
typedef heim_general_string PROV_SRV_LOCATION;
-int decode_PROV_SRV_LOCATION(const unsigned char *, size_t, PROV_SRV_LOCATION *, size_t *);
-int encode_PROV_SRV_LOCATION(unsigned char *, size_t, const PROV_SRV_LOCATION *, size_t *);
-size_t length_PROV_SRV_LOCATION(const PROV_SRV_LOCATION *);
-int copy_PROV_SRV_LOCATION (const PROV_SRV_LOCATION *, PROV_SRV_LOCATION *);
-void free_PROV_SRV_LOCATION (PROV_SRV_LOCATION *);
-
-
/*
KDC-REP ::= SEQUENCE {
pvno [0] krb5int32,
EncryptedData enc_part;
} KDC_REP;
-int decode_KDC_REP(const unsigned char *, size_t, KDC_REP *, size_t *);
-int encode_KDC_REP(unsigned char *, size_t, const KDC_REP *, size_t *);
-size_t length_KDC_REP(const KDC_REP *);
-int copy_KDC_REP (const KDC_REP *, KDC_REP *);
-void free_KDC_REP (KDC_REP *);
+ASN1EXP int ASN1CALL decode_KDC_REP(const unsigned char *, size_t, KDC_REP *, size_t *);
+ASN1EXP int ASN1CALL encode_KDC_REP(unsigned char *, size_t, const KDC_REP *, size_t *);
+ASN1EXP size_t ASN1CALL length_KDC_REP(const KDC_REP *);
+ASN1EXP int ASN1CALL copy_KDC_REP (const KDC_REP *, KDC_REP *);
+ASN1EXP void ASN1CALL free_KDC_REP (KDC_REP *);
/*
typedef KDC_REP AS_REP;
-int decode_AS_REP(const unsigned char *, size_t, AS_REP *, size_t *);
-int encode_AS_REP(unsigned char *, size_t, const AS_REP *, size_t *);
-size_t length_AS_REP(const AS_REP *);
-int copy_AS_REP (const AS_REP *, AS_REP *);
-void free_AS_REP (AS_REP *);
+ASN1EXP int ASN1CALL decode_AS_REP(const unsigned char *, size_t, AS_REP *, size_t *);
+ASN1EXP int ASN1CALL encode_AS_REP(unsigned char *, size_t, const AS_REP *, size_t *);
+ASN1EXP size_t ASN1CALL length_AS_REP(const AS_REP *);
+ASN1EXP int ASN1CALL copy_AS_REP (const AS_REP *, AS_REP *);
+ASN1EXP void ASN1CALL free_AS_REP (AS_REP *);
/*
typedef KDC_REP TGS_REP;
-int decode_TGS_REP(const unsigned char *, size_t, TGS_REP *, size_t *);
-int encode_TGS_REP(unsigned char *, size_t, const TGS_REP *, size_t *);
-size_t length_TGS_REP(const TGS_REP *);
-int copy_TGS_REP (const TGS_REP *, TGS_REP *);
-void free_TGS_REP (TGS_REP *);
+ASN1EXP int ASN1CALL decode_TGS_REP(const unsigned char *, size_t, TGS_REP *, size_t *);
+ASN1EXP int ASN1CALL encode_TGS_REP(unsigned char *, size_t, const TGS_REP *, size_t *);
+ASN1EXP size_t ASN1CALL length_TGS_REP(const TGS_REP *);
+ASN1EXP int ASN1CALL copy_TGS_REP (const TGS_REP *, TGS_REP *);
+ASN1EXP void ASN1CALL free_TGS_REP (TGS_REP *);
/*
METHOD_DATA *encrypted_pa_data;
} EncKDCRepPart;
-int decode_EncKDCRepPart(const unsigned char *, size_t, EncKDCRepPart *, size_t *);
-int encode_EncKDCRepPart(unsigned char *, size_t, const EncKDCRepPart *, size_t *);
-size_t length_EncKDCRepPart(const EncKDCRepPart *);
-int copy_EncKDCRepPart (const EncKDCRepPart *, EncKDCRepPart *);
-void free_EncKDCRepPart (EncKDCRepPart *);
+ASN1EXP int ASN1CALL decode_EncKDCRepPart(const unsigned char *, size_t, EncKDCRepPart *, size_t *);
+ASN1EXP int ASN1CALL encode_EncKDCRepPart(unsigned char *, size_t, const EncKDCRepPart *, size_t *);
+ASN1EXP size_t ASN1CALL length_EncKDCRepPart(const EncKDCRepPart *);
+ASN1EXP int ASN1CALL copy_EncKDCRepPart (const EncKDCRepPart *, EncKDCRepPart *);
+ASN1EXP void ASN1CALL free_EncKDCRepPart (EncKDCRepPart *);
/*
typedef EncKDCRepPart EncASRepPart;
-int decode_EncASRepPart(const unsigned char *, size_t, EncASRepPart *, size_t *);
-int encode_EncASRepPart(unsigned char *, size_t, const EncASRepPart *, size_t *);
-size_t length_EncASRepPart(const EncASRepPart *);
-int copy_EncASRepPart (const EncASRepPart *, EncASRepPart *);
-void free_EncASRepPart (EncASRepPart *);
+ASN1EXP int ASN1CALL decode_EncASRepPart(const unsigned char *, size_t, EncASRepPart *, size_t *);
+ASN1EXP int ASN1CALL encode_EncASRepPart(unsigned char *, size_t, const EncASRepPart *, size_t *);
+ASN1EXP size_t ASN1CALL length_EncASRepPart(const EncASRepPart *);
+ASN1EXP int ASN1CALL copy_EncASRepPart (const EncASRepPart *, EncASRepPart *);
+ASN1EXP void ASN1CALL free_EncASRepPart (EncASRepPart *);
/*
typedef EncKDCRepPart EncTGSRepPart;
-int decode_EncTGSRepPart(const unsigned char *, size_t, EncTGSRepPart *, size_t *);
-int encode_EncTGSRepPart(unsigned char *, size_t, const EncTGSRepPart *, size_t *);
-size_t length_EncTGSRepPart(const EncTGSRepPart *);
-int copy_EncTGSRepPart (const EncTGSRepPart *, EncTGSRepPart *);
-void free_EncTGSRepPart (EncTGSRepPart *);
+ASN1EXP int ASN1CALL decode_EncTGSRepPart(const unsigned char *, size_t, EncTGSRepPart *, size_t *);
+ASN1EXP int ASN1CALL encode_EncTGSRepPart(unsigned char *, size_t, const EncTGSRepPart *, size_t *);
+ASN1EXP size_t ASN1CALL length_EncTGSRepPart(const EncTGSRepPart *);
+ASN1EXP int ASN1CALL copy_EncTGSRepPart (const EncTGSRepPart *, EncTGSRepPart *);
+ASN1EXP void ASN1CALL free_EncTGSRepPart (EncTGSRepPart *);
/*
EncryptedData authenticator;
} AP_REQ;
-int decode_AP_REQ(const unsigned char *, size_t, AP_REQ *, size_t *);
-int encode_AP_REQ(unsigned char *, size_t, const AP_REQ *, size_t *);
-size_t length_AP_REQ(const AP_REQ *);
-int copy_AP_REQ (const AP_REQ *, AP_REQ *);
-void free_AP_REQ (AP_REQ *);
+ASN1EXP int ASN1CALL decode_AP_REQ(const unsigned char *, size_t, AP_REQ *, size_t *);
+ASN1EXP int ASN1CALL encode_AP_REQ(unsigned char *, size_t, const AP_REQ *, size_t *);
+ASN1EXP size_t ASN1CALL length_AP_REQ(const AP_REQ *);
+ASN1EXP int ASN1CALL copy_AP_REQ (const AP_REQ *, AP_REQ *);
+ASN1EXP void ASN1CALL free_AP_REQ (AP_REQ *);
/*
EncryptedData enc_part;
} AP_REP;
-int decode_AP_REP(const unsigned char *, size_t, AP_REP *, size_t *);
-int encode_AP_REP(unsigned char *, size_t, const AP_REP *, size_t *);
-size_t length_AP_REP(const AP_REP *);
-int copy_AP_REP (const AP_REP *, AP_REP *);
-void free_AP_REP (AP_REP *);
+ASN1EXP int ASN1CALL decode_AP_REP(const unsigned char *, size_t, AP_REP *, size_t *);
+ASN1EXP int ASN1CALL encode_AP_REP(unsigned char *, size_t, const AP_REP *, size_t *);
+ASN1EXP size_t ASN1CALL length_AP_REP(const AP_REP *);
+ASN1EXP int ASN1CALL copy_AP_REP (const AP_REP *, AP_REP *);
+ASN1EXP void ASN1CALL free_AP_REP (AP_REP *);
/*
krb5uint32 *seq_number;
} EncAPRepPart;
-int decode_EncAPRepPart(const unsigned char *, size_t, EncAPRepPart *, size_t *);
-int encode_EncAPRepPart(unsigned char *, size_t, const EncAPRepPart *, size_t *);
-size_t length_EncAPRepPart(const EncAPRepPart *);
-int copy_EncAPRepPart (const EncAPRepPart *, EncAPRepPart *);
-void free_EncAPRepPart (EncAPRepPart *);
+ASN1EXP int ASN1CALL decode_EncAPRepPart(const unsigned char *, size_t, EncAPRepPart *, size_t *);
+ASN1EXP int ASN1CALL encode_EncAPRepPart(unsigned char *, size_t, const EncAPRepPart *, size_t *);
+ASN1EXP size_t ASN1CALL length_EncAPRepPart(const EncAPRepPart *);
+ASN1EXP int ASN1CALL copy_EncAPRepPart (const EncAPRepPart *, EncAPRepPart *);
+ASN1EXP void ASN1CALL free_EncAPRepPart (EncAPRepPart *);
/*
HostAddress *r_address;
} KRB_SAFE_BODY;
-int decode_KRB_SAFE_BODY(const unsigned char *, size_t, KRB_SAFE_BODY *, size_t *);
-int encode_KRB_SAFE_BODY(unsigned char *, size_t, const KRB_SAFE_BODY *, size_t *);
-size_t length_KRB_SAFE_BODY(const KRB_SAFE_BODY *);
-int copy_KRB_SAFE_BODY (const KRB_SAFE_BODY *, KRB_SAFE_BODY *);
-void free_KRB_SAFE_BODY (KRB_SAFE_BODY *);
+ASN1EXP int ASN1CALL decode_KRB_SAFE_BODY(const unsigned char *, size_t, KRB_SAFE_BODY *, size_t *);
+ASN1EXP int ASN1CALL encode_KRB_SAFE_BODY(unsigned char *, size_t, const KRB_SAFE_BODY *, size_t *);
+ASN1EXP size_t ASN1CALL length_KRB_SAFE_BODY(const KRB_SAFE_BODY *);
+ASN1EXP int ASN1CALL copy_KRB_SAFE_BODY (const KRB_SAFE_BODY *, KRB_SAFE_BODY *);
+ASN1EXP void ASN1CALL free_KRB_SAFE_BODY (KRB_SAFE_BODY *);
/*
Checksum cksum;
} KRB_SAFE;
-int decode_KRB_SAFE(const unsigned char *, size_t, KRB_SAFE *, size_t *);
-int encode_KRB_SAFE(unsigned char *, size_t, const KRB_SAFE *, size_t *);
-size_t length_KRB_SAFE(const KRB_SAFE *);
-int copy_KRB_SAFE (const KRB_SAFE *, KRB_SAFE *);
-void free_KRB_SAFE (KRB_SAFE *);
+ASN1EXP int ASN1CALL decode_KRB_SAFE(const unsigned char *, size_t, KRB_SAFE *, size_t *);
+ASN1EXP int ASN1CALL encode_KRB_SAFE(unsigned char *, size_t, const KRB_SAFE *, size_t *);
+ASN1EXP size_t ASN1CALL length_KRB_SAFE(const KRB_SAFE *);
+ASN1EXP int ASN1CALL copy_KRB_SAFE (const KRB_SAFE *, KRB_SAFE *);
+ASN1EXP void ASN1CALL free_KRB_SAFE (KRB_SAFE *);
/*
EncryptedData enc_part;
} KRB_PRIV;
-int decode_KRB_PRIV(const unsigned char *, size_t, KRB_PRIV *, size_t *);
-int encode_KRB_PRIV(unsigned char *, size_t, const KRB_PRIV *, size_t *);
-size_t length_KRB_PRIV(const KRB_PRIV *);
-int copy_KRB_PRIV (const KRB_PRIV *, KRB_PRIV *);
-void free_KRB_PRIV (KRB_PRIV *);
+ASN1EXP int ASN1CALL decode_KRB_PRIV(const unsigned char *, size_t, KRB_PRIV *, size_t *);
+ASN1EXP int ASN1CALL encode_KRB_PRIV(unsigned char *, size_t, const KRB_PRIV *, size_t *);
+ASN1EXP size_t ASN1CALL length_KRB_PRIV(const KRB_PRIV *);
+ASN1EXP int ASN1CALL copy_KRB_PRIV (const KRB_PRIV *, KRB_PRIV *);
+ASN1EXP void ASN1CALL free_KRB_PRIV (KRB_PRIV *);
/*
HostAddress *r_address;
} EncKrbPrivPart;
-int decode_EncKrbPrivPart(const unsigned char *, size_t, EncKrbPrivPart *, size_t *);
-int encode_EncKrbPrivPart(unsigned char *, size_t, const EncKrbPrivPart *, size_t *);
-size_t length_EncKrbPrivPart(const EncKrbPrivPart *);
-int copy_EncKrbPrivPart (const EncKrbPrivPart *, EncKrbPrivPart *);
-void free_EncKrbPrivPart (EncKrbPrivPart *);
+ASN1EXP int ASN1CALL decode_EncKrbPrivPart(const unsigned char *, size_t, EncKrbPrivPart *, size_t *);
+ASN1EXP int ASN1CALL encode_EncKrbPrivPart(unsigned char *, size_t, const EncKrbPrivPart *, size_t *);
+ASN1EXP size_t ASN1CALL length_EncKrbPrivPart(const EncKrbPrivPart *);
+ASN1EXP int ASN1CALL copy_EncKrbPrivPart (const EncKrbPrivPart *, EncKrbPrivPart *);
+ASN1EXP void ASN1CALL free_EncKrbPrivPart (EncKrbPrivPart *);
/*
EncryptedData enc_part;
} KRB_CRED;
-int decode_KRB_CRED(const unsigned char *, size_t, KRB_CRED *, size_t *);
-int encode_KRB_CRED(unsigned char *, size_t, const KRB_CRED *, size_t *);
-size_t length_KRB_CRED(const KRB_CRED *);
-int copy_KRB_CRED (const KRB_CRED *, KRB_CRED *);
-void free_KRB_CRED (KRB_CRED *);
+ASN1EXP int ASN1CALL decode_KRB_CRED(const unsigned char *, size_t, KRB_CRED *, size_t *);
+ASN1EXP int ASN1CALL encode_KRB_CRED(unsigned char *, size_t, const KRB_CRED *, size_t *);
+ASN1EXP size_t ASN1CALL length_KRB_CRED(const KRB_CRED *);
+ASN1EXP int ASN1CALL copy_KRB_CRED (const KRB_CRED *, KRB_CRED *);
+ASN1EXP void ASN1CALL free_KRB_CRED (KRB_CRED *);
/*
HostAddresses *caddr;
} KrbCredInfo;
-int decode_KrbCredInfo(const unsigned char *, size_t, KrbCredInfo *, size_t *);
-int encode_KrbCredInfo(unsigned char *, size_t, const KrbCredInfo *, size_t *);
-size_t length_KrbCredInfo(const KrbCredInfo *);
-int copy_KrbCredInfo (const KrbCredInfo *, KrbCredInfo *);
-void free_KrbCredInfo (KrbCredInfo *);
+ASN1EXP int ASN1CALL decode_KrbCredInfo(const unsigned char *, size_t, KrbCredInfo *, size_t *);
+ASN1EXP int ASN1CALL encode_KrbCredInfo(unsigned char *, size_t, const KrbCredInfo *, size_t *);
+ASN1EXP size_t ASN1CALL length_KrbCredInfo(const KrbCredInfo *);
+ASN1EXP int ASN1CALL copy_KrbCredInfo (const KrbCredInfo *, KrbCredInfo *);
+ASN1EXP void ASN1CALL free_KrbCredInfo (KrbCredInfo *);
/*
HostAddress *r_address;
} EncKrbCredPart;
-int decode_EncKrbCredPart(const unsigned char *, size_t, EncKrbCredPart *, size_t *);
-int encode_EncKrbCredPart(unsigned char *, size_t, const EncKrbCredPart *, size_t *);
-size_t length_EncKrbCredPart(const EncKrbCredPart *);
-int copy_EncKrbCredPart (const EncKrbCredPart *, EncKrbCredPart *);
-void free_EncKrbCredPart (EncKrbCredPart *);
+ASN1EXP int ASN1CALL decode_EncKrbCredPart(const unsigned char *, size_t, EncKrbCredPart *, size_t *);
+ASN1EXP int ASN1CALL encode_EncKrbCredPart(unsigned char *, size_t, const EncKrbCredPart *, size_t *);
+ASN1EXP size_t ASN1CALL length_EncKrbCredPart(const EncKrbCredPart *);
+ASN1EXP int ASN1CALL copy_EncKrbCredPart (const EncKrbCredPart *, EncKrbCredPart *);
+ASN1EXP void ASN1CALL free_EncKrbCredPart (EncKrbCredPart *);
/*
heim_octet_string *e_data;
} KRB_ERROR;
-int decode_KRB_ERROR(const unsigned char *, size_t, KRB_ERROR *, size_t *);
-int encode_KRB_ERROR(unsigned char *, size_t, const KRB_ERROR *, size_t *);
-size_t length_KRB_ERROR(const KRB_ERROR *);
-int copy_KRB_ERROR (const KRB_ERROR *, KRB_ERROR *);
-void free_KRB_ERROR (KRB_ERROR *);
+ASN1EXP int ASN1CALL decode_KRB_ERROR(const unsigned char *, size_t, KRB_ERROR *, size_t *);
+ASN1EXP int ASN1CALL encode_KRB_ERROR(unsigned char *, size_t, const KRB_ERROR *, size_t *);
+ASN1EXP size_t ASN1CALL length_KRB_ERROR(const KRB_ERROR *);
+ASN1EXP int ASN1CALL copy_KRB_ERROR (const KRB_ERROR *, KRB_ERROR *);
+ASN1EXP void ASN1CALL free_KRB_ERROR (KRB_ERROR *);
/*
Realm *targrealm;
} ChangePasswdDataMS;
-int decode_ChangePasswdDataMS(const unsigned char *, size_t, ChangePasswdDataMS *, size_t *);
-int encode_ChangePasswdDataMS(unsigned char *, size_t, const ChangePasswdDataMS *, size_t *);
-size_t length_ChangePasswdDataMS(const ChangePasswdDataMS *);
-int copy_ChangePasswdDataMS (const ChangePasswdDataMS *, ChangePasswdDataMS *);
-void free_ChangePasswdDataMS (ChangePasswdDataMS *);
+ASN1EXP int ASN1CALL decode_ChangePasswdDataMS(const unsigned char *, size_t, ChangePasswdDataMS *, size_t *);
+ASN1EXP int ASN1CALL encode_ChangePasswdDataMS(unsigned char *, size_t, const ChangePasswdDataMS *, size_t *);
+ASN1EXP size_t ASN1CALL length_ChangePasswdDataMS(const ChangePasswdDataMS *);
+ASN1EXP int ASN1CALL copy_ChangePasswdDataMS (const ChangePasswdDataMS *, ChangePasswdDataMS *);
+ASN1EXP void ASN1CALL free_ChangePasswdDataMS (ChangePasswdDataMS *);
/*
-EtypeList ::= SEQUENCE OF krb5int32
+EtypeList ::= SEQUENCE OF ENCTYPE
*/
typedef struct EtypeList {
unsigned int len;
- krb5int32 *val;
+ ENCTYPE *val;
} EtypeList;
-int decode_EtypeList(const unsigned char *, size_t, EtypeList *, size_t *);
-int encode_EtypeList(unsigned char *, size_t, const EtypeList *, size_t *);
-size_t length_EtypeList(const EtypeList *);
-int copy_EtypeList (const EtypeList *, EtypeList *);
-void free_EtypeList (EtypeList *);
+ASN1EXP int ASN1CALL decode_EtypeList(const unsigned char *, size_t, EtypeList *, size_t *);
+ASN1EXP int ASN1CALL encode_EtypeList(unsigned char *, size_t, const EtypeList *, size_t *);
+ASN1EXP size_t ASN1CALL length_EtypeList(const EtypeList *);
+ASN1EXP int ASN1CALL copy_EtypeList (const EtypeList *, EtypeList *);
+ASN1EXP void ASN1CALL free_EtypeList (EtypeList *);
enum { krb5_pvno = 5 };
typedef AuthorizationData AD_IF_RELEVANT;
-int decode_AD_IF_RELEVANT(const unsigned char *, size_t, AD_IF_RELEVANT *, size_t *);
-int encode_AD_IF_RELEVANT(unsigned char *, size_t, const AD_IF_RELEVANT *, size_t *);
-size_t length_AD_IF_RELEVANT(const AD_IF_RELEVANT *);
-int copy_AD_IF_RELEVANT (const AD_IF_RELEVANT *, AD_IF_RELEVANT *);
-void free_AD_IF_RELEVANT (AD_IF_RELEVANT *);
+ASN1EXP int ASN1CALL decode_AD_IF_RELEVANT(const unsigned char *, size_t, AD_IF_RELEVANT *, size_t *);
+ASN1EXP int ASN1CALL encode_AD_IF_RELEVANT(unsigned char *, size_t, const AD_IF_RELEVANT *, size_t *);
+ASN1EXP size_t ASN1CALL length_AD_IF_RELEVANT(const AD_IF_RELEVANT *);
+ASN1EXP int ASN1CALL copy_AD_IF_RELEVANT (const AD_IF_RELEVANT *, AD_IF_RELEVANT *);
+ASN1EXP void ASN1CALL free_AD_IF_RELEVANT (AD_IF_RELEVANT *);
/*
AuthorizationData elements;
} AD_KDCIssued;
-int decode_AD_KDCIssued(const unsigned char *, size_t, AD_KDCIssued *, size_t *);
-int encode_AD_KDCIssued(unsigned char *, size_t, const AD_KDCIssued *, size_t *);
-size_t length_AD_KDCIssued(const AD_KDCIssued *);
-int copy_AD_KDCIssued (const AD_KDCIssued *, AD_KDCIssued *);
-void free_AD_KDCIssued (AD_KDCIssued *);
+ASN1EXP int ASN1CALL decode_AD_KDCIssued(const unsigned char *, size_t, AD_KDCIssued *, size_t *);
+ASN1EXP int ASN1CALL encode_AD_KDCIssued(unsigned char *, size_t, const AD_KDCIssued *, size_t *);
+ASN1EXP size_t ASN1CALL length_AD_KDCIssued(const AD_KDCIssued *);
+ASN1EXP int ASN1CALL copy_AD_KDCIssued (const AD_KDCIssued *, AD_KDCIssued *);
+ASN1EXP void ASN1CALL free_AD_KDCIssued (AD_KDCIssued *);
/*
AuthorizationData elements;
} AD_AND_OR;
-int decode_AD_AND_OR(const unsigned char *, size_t, AD_AND_OR *, size_t *);
-int encode_AD_AND_OR(unsigned char *, size_t, const AD_AND_OR *, size_t *);
-size_t length_AD_AND_OR(const AD_AND_OR *);
-int copy_AD_AND_OR (const AD_AND_OR *, AD_AND_OR *);
-void free_AD_AND_OR (AD_AND_OR *);
+ASN1EXP int ASN1CALL decode_AD_AND_OR(const unsigned char *, size_t, AD_AND_OR *, size_t *);
+ASN1EXP int ASN1CALL encode_AD_AND_OR(unsigned char *, size_t, const AD_AND_OR *, size_t *);
+ASN1EXP size_t ASN1CALL length_AD_AND_OR(const AD_AND_OR *);
+ASN1EXP int ASN1CALL copy_AD_AND_OR (const AD_AND_OR *, AD_AND_OR *);
+ASN1EXP void ASN1CALL free_AD_AND_OR (AD_AND_OR *);
/*
typedef AuthorizationData AD_MANDATORY_FOR_KDC;
-int decode_AD_MANDATORY_FOR_KDC(const unsigned char *, size_t, AD_MANDATORY_FOR_KDC *, size_t *);
-int encode_AD_MANDATORY_FOR_KDC(unsigned char *, size_t, const AD_MANDATORY_FOR_KDC *, size_t *);
-size_t length_AD_MANDATORY_FOR_KDC(const AD_MANDATORY_FOR_KDC *);
-int copy_AD_MANDATORY_FOR_KDC (const AD_MANDATORY_FOR_KDC *, AD_MANDATORY_FOR_KDC *);
-void free_AD_MANDATORY_FOR_KDC (AD_MANDATORY_FOR_KDC *);
-
-
/*
PA-SAM-TYPE ::= INTEGER {
PA_SAM_TYPE_ENIGMA(1),
PA_SAM_TYPE_CRYPTOCARD = 6
} PA_SAM_TYPE;
-int decode_PA_SAM_TYPE(const unsigned char *, size_t, PA_SAM_TYPE *, size_t *);
-int encode_PA_SAM_TYPE(unsigned char *, size_t, const PA_SAM_TYPE *, size_t *);
-size_t length_PA_SAM_TYPE(const PA_SAM_TYPE *);
-int copy_PA_SAM_TYPE (const PA_SAM_TYPE *, PA_SAM_TYPE *);
-void free_PA_SAM_TYPE (PA_SAM_TYPE *);
-
-
/*
PA-SAM-REDIRECT ::= HostAddresses
*/
typedef HostAddresses PA_SAM_REDIRECT;
-int decode_PA_SAM_REDIRECT(const unsigned char *, size_t, PA_SAM_REDIRECT *, size_t *);
-int encode_PA_SAM_REDIRECT(unsigned char *, size_t, const PA_SAM_REDIRECT *, size_t *);
-size_t length_PA_SAM_REDIRECT(const PA_SAM_REDIRECT *);
-int copy_PA_SAM_REDIRECT (const PA_SAM_REDIRECT *, PA_SAM_REDIRECT *);
-void free_PA_SAM_REDIRECT (PA_SAM_REDIRECT *);
-
-
/*
SAMFlags ::= BIT STRING {
use-sad-as-key(0),
unsigned SAMFlags2int(SAMFlags);
SAMFlags int2SAMFlags(unsigned);
-int decode_SAMFlags(const unsigned char *, size_t, SAMFlags *, size_t *);
-int encode_SAMFlags(unsigned char *, size_t, const SAMFlags *, size_t *);
-size_t length_SAMFlags(const SAMFlags *);
-int copy_SAMFlags (const SAMFlags *, SAMFlags *);
-void free_SAMFlags (SAMFlags *);
-
-
/*
PA-SAM-CHALLENGE-2-BODY ::= SEQUENCE {
sam-type [0] krb5int32,
krb5int32 sam_etype;
} PA_SAM_CHALLENGE_2_BODY;
-int decode_PA_SAM_CHALLENGE_2_BODY(const unsigned char *, size_t, PA_SAM_CHALLENGE_2_BODY *, size_t *);
-int encode_PA_SAM_CHALLENGE_2_BODY(unsigned char *, size_t, const PA_SAM_CHALLENGE_2_BODY *, size_t *);
-size_t length_PA_SAM_CHALLENGE_2_BODY(const PA_SAM_CHALLENGE_2_BODY *);
-int copy_PA_SAM_CHALLENGE_2_BODY (const PA_SAM_CHALLENGE_2_BODY *, PA_SAM_CHALLENGE_2_BODY *);
-void free_PA_SAM_CHALLENGE_2_BODY (PA_SAM_CHALLENGE_2_BODY *);
-
-
/*
PA-SAM-CHALLENGE-2 ::= SEQUENCE {
sam-body [0] PA-SAM-CHALLENGE-2-BODY,
} sam_cksum;
} PA_SAM_CHALLENGE_2;
-int decode_PA_SAM_CHALLENGE_2(const unsigned char *, size_t, PA_SAM_CHALLENGE_2 *, size_t *);
-int encode_PA_SAM_CHALLENGE_2(unsigned char *, size_t, const PA_SAM_CHALLENGE_2 *, size_t *);
-size_t length_PA_SAM_CHALLENGE_2(const PA_SAM_CHALLENGE_2 *);
-int copy_PA_SAM_CHALLENGE_2 (const PA_SAM_CHALLENGE_2 *, PA_SAM_CHALLENGE_2 *);
-void free_PA_SAM_CHALLENGE_2 (PA_SAM_CHALLENGE_2 *);
-
-
/*
PA-SAM-RESPONSE-2 ::= SEQUENCE {
sam-type [0] krb5int32,
krb5int32 sam_nonce;
} PA_SAM_RESPONSE_2;
-int decode_PA_SAM_RESPONSE_2(const unsigned char *, size_t, PA_SAM_RESPONSE_2 *, size_t *);
-int encode_PA_SAM_RESPONSE_2(unsigned char *, size_t, const PA_SAM_RESPONSE_2 *, size_t *);
-size_t length_PA_SAM_RESPONSE_2(const PA_SAM_RESPONSE_2 *);
-int copy_PA_SAM_RESPONSE_2 (const PA_SAM_RESPONSE_2 *, PA_SAM_RESPONSE_2 *);
-void free_PA_SAM_RESPONSE_2 (PA_SAM_RESPONSE_2 *);
-
-
/*
PA-ENC-SAM-RESPONSE-ENC ::= SEQUENCE {
sam-nonce [0] krb5int32,
heim_general_string *sam_sad;
} PA_ENC_SAM_RESPONSE_ENC;
-int decode_PA_ENC_SAM_RESPONSE_ENC(const unsigned char *, size_t, PA_ENC_SAM_RESPONSE_ENC *, size_t *);
-int encode_PA_ENC_SAM_RESPONSE_ENC(unsigned char *, size_t, const PA_ENC_SAM_RESPONSE_ENC *, size_t *);
-size_t length_PA_ENC_SAM_RESPONSE_ENC(const PA_ENC_SAM_RESPONSE_ENC *);
-int copy_PA_ENC_SAM_RESPONSE_ENC (const PA_ENC_SAM_RESPONSE_ENC *, PA_ENC_SAM_RESPONSE_ENC *);
-void free_PA_ENC_SAM_RESPONSE_ENC (PA_ENC_SAM_RESPONSE_ENC *);
-
-
/*
PA-S4U2Self ::= SEQUENCE {
name [0] PrincipalName,
heim_general_string auth;
} PA_S4U2Self;
-int decode_PA_S4U2Self(const unsigned char *, size_t, PA_S4U2Self *, size_t *);
-int encode_PA_S4U2Self(unsigned char *, size_t, const PA_S4U2Self *, size_t *);
-size_t length_PA_S4U2Self(const PA_S4U2Self *);
-int copy_PA_S4U2Self (const PA_S4U2Self *, PA_S4U2Self *);
-void free_PA_S4U2Self (PA_S4U2Self *);
+ASN1EXP int ASN1CALL decode_PA_S4U2Self(const unsigned char *, size_t, PA_S4U2Self *, size_t *);
+ASN1EXP int ASN1CALL encode_PA_S4U2Self(unsigned char *, size_t, const PA_S4U2Self *, size_t *);
+ASN1EXP size_t ASN1CALL length_PA_S4U2Self(const PA_S4U2Self *);
+ASN1EXP int ASN1CALL copy_PA_S4U2Self (const PA_S4U2Self *, PA_S4U2Self *);
+ASN1EXP void ASN1CALL free_PA_S4U2Self (PA_S4U2Self *);
/*
METHOD_DATA *method_data;
} KRB5SignedPathData;
-int decode_KRB5SignedPathData(const unsigned char *, size_t, KRB5SignedPathData *, size_t *);
-int encode_KRB5SignedPathData(unsigned char *, size_t, const KRB5SignedPathData *, size_t *);
-size_t length_KRB5SignedPathData(const KRB5SignedPathData *);
-int copy_KRB5SignedPathData (const KRB5SignedPathData *, KRB5SignedPathData *);
-void free_KRB5SignedPathData (KRB5SignedPathData *);
+ASN1EXP int ASN1CALL decode_KRB5SignedPathData(const unsigned char *, size_t, KRB5SignedPathData *, size_t *);
+ASN1EXP int ASN1CALL encode_KRB5SignedPathData(unsigned char *, size_t, const KRB5SignedPathData *, size_t *);
+ASN1EXP size_t ASN1CALL length_KRB5SignedPathData(const KRB5SignedPathData *);
+ASN1EXP int ASN1CALL copy_KRB5SignedPathData (const KRB5SignedPathData *, KRB5SignedPathData *);
+ASN1EXP void ASN1CALL free_KRB5SignedPathData (KRB5SignedPathData *);
/*
METHOD_DATA *method_data;
} KRB5SignedPath;
-int decode_KRB5SignedPath(const unsigned char *, size_t, KRB5SignedPath *, size_t *);
-int encode_KRB5SignedPath(unsigned char *, size_t, const KRB5SignedPath *, size_t *);
-size_t length_KRB5SignedPath(const KRB5SignedPath *);
-int copy_KRB5SignedPath (const KRB5SignedPath *, KRB5SignedPath *);
-void free_KRB5SignedPath (KRB5SignedPath *);
-
-
-/*
-PA-ClientCanonicalizedNames ::= SEQUENCE {
- requested-name [0] PrincipalName,
- mapped-name [1] PrincipalName,
-}
-*/
-
-typedef struct PA_ClientCanonicalizedNames {
- PrincipalName requested_name;
- PrincipalName mapped_name;
-} PA_ClientCanonicalizedNames;
-
-int decode_PA_ClientCanonicalizedNames(const unsigned char *, size_t, PA_ClientCanonicalizedNames *, size_t *);
-int encode_PA_ClientCanonicalizedNames(unsigned char *, size_t, const PA_ClientCanonicalizedNames *, size_t *);
-size_t length_PA_ClientCanonicalizedNames(const PA_ClientCanonicalizedNames *);
-int copy_PA_ClientCanonicalizedNames (const PA_ClientCanonicalizedNames *, PA_ClientCanonicalizedNames *);
-void free_PA_ClientCanonicalizedNames (PA_ClientCanonicalizedNames *);
-
-
-/*
-PA-ClientCanonicalized ::= SEQUENCE {
- names [0] PA-ClientCanonicalizedNames,
- canon-checksum [1] Checksum,
-}
-*/
-
-typedef struct PA_ClientCanonicalized {
- PA_ClientCanonicalizedNames names;
- Checksum canon_checksum;
-} PA_ClientCanonicalized;
-
-int decode_PA_ClientCanonicalized(const unsigned char *, size_t, PA_ClientCanonicalized *, size_t *);
-int encode_PA_ClientCanonicalized(unsigned char *, size_t, const PA_ClientCanonicalized *, size_t *);
-size_t length_PA_ClientCanonicalized(const PA_ClientCanonicalized *);
-int copy_PA_ClientCanonicalized (const PA_ClientCanonicalized *, PA_ClientCanonicalized *);
-void free_PA_ClientCanonicalized (PA_ClientCanonicalized *);
+ASN1EXP int ASN1CALL decode_KRB5SignedPath(const unsigned char *, size_t, KRB5SignedPath *, size_t *);
+ASN1EXP int ASN1CALL encode_KRB5SignedPath(unsigned char *, size_t, const KRB5SignedPath *, size_t *);
+ASN1EXP size_t ASN1CALL length_KRB5SignedPath(const KRB5SignedPath *);
+ASN1EXP int ASN1CALL copy_KRB5SignedPath (const KRB5SignedPath *, KRB5SignedPath *);
+ASN1EXP void ASN1CALL free_KRB5SignedPath (KRB5SignedPath *);
/*
Checksum checksum;
} AD_LoginAlias;
-int decode_AD_LoginAlias(const unsigned char *, size_t, AD_LoginAlias *, size_t *);
-int encode_AD_LoginAlias(unsigned char *, size_t, const AD_LoginAlias *, size_t *);
-size_t length_AD_LoginAlias(const AD_LoginAlias *);
-int copy_AD_LoginAlias (const AD_LoginAlias *, AD_LoginAlias *);
-void free_AD_LoginAlias (AD_LoginAlias *);
+ASN1EXP int ASN1CALL decode_AD_LoginAlias(const unsigned char *, size_t, AD_LoginAlias *, size_t *);
+ASN1EXP int ASN1CALL encode_AD_LoginAlias(unsigned char *, size_t, const AD_LoginAlias *, size_t *);
+ASN1EXP size_t ASN1CALL length_AD_LoginAlias(const AD_LoginAlias *);
+ASN1EXP int ASN1CALL copy_AD_LoginAlias (const AD_LoginAlias *, AD_LoginAlias *);
+ASN1EXP void ASN1CALL free_AD_LoginAlias (AD_LoginAlias *);
/*
Realm referred_realm;
} PA_SvrReferralData;
-int decode_PA_SvrReferralData(const unsigned char *, size_t, PA_SvrReferralData *, size_t *);
-int encode_PA_SvrReferralData(unsigned char *, size_t, const PA_SvrReferralData *, size_t *);
-size_t length_PA_SvrReferralData(const PA_SvrReferralData *);
-int copy_PA_SvrReferralData (const PA_SvrReferralData *, PA_SvrReferralData *);
-void free_PA_SvrReferralData (PA_SvrReferralData *);
+ASN1EXP int ASN1CALL decode_PA_SvrReferralData(const unsigned char *, size_t, PA_SvrReferralData *, size_t *);
+ASN1EXP int ASN1CALL encode_PA_SvrReferralData(unsigned char *, size_t, const PA_SvrReferralData *, size_t *);
+ASN1EXP size_t ASN1CALL length_PA_SvrReferralData(const PA_SvrReferralData *);
+ASN1EXP int ASN1CALL copy_PA_SvrReferralData (const PA_SvrReferralData *, PA_SvrReferralData *);
+ASN1EXP void ASN1CALL free_PA_SvrReferralData (PA_SvrReferralData *);
/*
typedef EncryptedData PA_SERVER_REFERRAL_DATA;
-int decode_PA_SERVER_REFERRAL_DATA(const unsigned char *, size_t, PA_SERVER_REFERRAL_DATA *, size_t *);
-int encode_PA_SERVER_REFERRAL_DATA(unsigned char *, size_t, const PA_SERVER_REFERRAL_DATA *, size_t *);
-size_t length_PA_SERVER_REFERRAL_DATA(const PA_SERVER_REFERRAL_DATA *);
-int copy_PA_SERVER_REFERRAL_DATA (const PA_SERVER_REFERRAL_DATA *, PA_SERVER_REFERRAL_DATA *);
-void free_PA_SERVER_REFERRAL_DATA (PA_SERVER_REFERRAL_DATA *);
+ASN1EXP int ASN1CALL decode_PA_SERVER_REFERRAL_DATA(const unsigned char *, size_t, PA_SERVER_REFERRAL_DATA *, size_t *);
+ASN1EXP int ASN1CALL encode_PA_SERVER_REFERRAL_DATA(unsigned char *, size_t, const PA_SERVER_REFERRAL_DATA *, size_t *);
+ASN1EXP size_t ASN1CALL length_PA_SERVER_REFERRAL_DATA(const PA_SERVER_REFERRAL_DATA *);
+ASN1EXP int ASN1CALL copy_PA_SERVER_REFERRAL_DATA (const PA_SERVER_REFERRAL_DATA *, PA_SERVER_REFERRAL_DATA *);
+ASN1EXP void ASN1CALL free_PA_SERVER_REFERRAL_DATA (PA_SERVER_REFERRAL_DATA *);
/*
KerberosTime *referral_valid_until;
} PA_ServerReferralData;
-int decode_PA_ServerReferralData(const unsigned char *, size_t, PA_ServerReferralData *, size_t *);
-int encode_PA_ServerReferralData(unsigned char *, size_t, const PA_ServerReferralData *, size_t *);
-size_t length_PA_ServerReferralData(const PA_ServerReferralData *);
-int copy_PA_ServerReferralData (const PA_ServerReferralData *, PA_ServerReferralData *);
-void free_PA_ServerReferralData (PA_ServerReferralData *);
+ASN1EXP int ASN1CALL decode_PA_ServerReferralData(const unsigned char *, size_t, PA_ServerReferralData *, size_t *);
+ASN1EXP int ASN1CALL encode_PA_ServerReferralData(unsigned char *, size_t, const PA_ServerReferralData *, size_t *);
+ASN1EXP size_t ASN1CALL length_PA_ServerReferralData(const PA_ServerReferralData *);
+ASN1EXP int ASN1CALL copy_PA_ServerReferralData (const PA_ServerReferralData *, PA_ServerReferralData *);
+ASN1EXP void ASN1CALL free_PA_ServerReferralData (PA_ServerReferralData *);
/*
FastOptions ::= BIT STRING {
reserved(0),
hide-client-names(1),
- kdc-follow--referrals(16)
+ kdc-follow-referrals(16)
}
*/
unsigned int _unused13:1;
unsigned int _unused14:1;
unsigned int _unused15:1;
- unsigned int kdc_follow__referrals:1;
+ unsigned int kdc_follow_referrals:1;
unsigned int _unused17:1;
unsigned int _unused18:1;
unsigned int _unused19:1;
unsigned FastOptions2int(FastOptions);
FastOptions int2FastOptions(unsigned);
-int decode_FastOptions(const unsigned char *, size_t, FastOptions *, size_t *);
-int encode_FastOptions(unsigned char *, size_t, const FastOptions *, size_t *);
-size_t length_FastOptions(const FastOptions *);
-int copy_FastOptions (const FastOptions *, FastOptions *);
-void free_FastOptions (FastOptions *);
-
-
/*
KrbFastReq ::= SEQUENCE {
fast-options [0] FastOptions,
- padata [1] SEQUENCE OF PA-DATA,
+ padata [1] METHOD-DATA,
req-body [2] KDC-REQ-BODY,
...,
}
typedef struct KrbFastReq {
FastOptions fast_options;
- struct KrbFastReq_padata {
- unsigned int len;
- PA_DATA *val;
- } padata;
+ METHOD_DATA padata;
KDC_REQ_BODY req_body;
} KrbFastReq;
-int decode_KrbFastReq(const unsigned char *, size_t, KrbFastReq *, size_t *);
-int encode_KrbFastReq(unsigned char *, size_t, const KrbFastReq *, size_t *);
-size_t length_KrbFastReq(const KrbFastReq *);
-int copy_KrbFastReq (const KrbFastReq *, KrbFastReq *);
-void free_KrbFastReq (KrbFastReq *);
+ASN1EXP int ASN1CALL decode_KrbFastReq(const unsigned char *, size_t, KrbFastReq *, size_t *);
+ASN1EXP int ASN1CALL encode_KrbFastReq(unsigned char *, size_t, const KrbFastReq *, size_t *);
+ASN1EXP size_t ASN1CALL length_KrbFastReq(const KrbFastReq *);
+ASN1EXP int ASN1CALL copy_KrbFastReq (const KrbFastReq *, KrbFastReq *);
+ASN1EXP void ASN1CALL free_KrbFastReq (KrbFastReq *);
/*
heim_octet_string armor_value;
} KrbFastArmor;
-int decode_KrbFastArmor(const unsigned char *, size_t, KrbFastArmor *, size_t *);
-int encode_KrbFastArmor(unsigned char *, size_t, const KrbFastArmor *, size_t *);
-size_t length_KrbFastArmor(const KrbFastArmor *);
-int copy_KrbFastArmor (const KrbFastArmor *, KrbFastArmor *);
-void free_KrbFastArmor (KrbFastArmor *);
+ASN1EXP int ASN1CALL decode_KrbFastArmor(const unsigned char *, size_t, KrbFastArmor *, size_t *);
+ASN1EXP int ASN1CALL encode_KrbFastArmor(unsigned char *, size_t, const KrbFastArmor *, size_t *);
+ASN1EXP size_t ASN1CALL length_KrbFastArmor(const KrbFastArmor *);
+ASN1EXP int ASN1CALL copy_KrbFastArmor (const KrbFastArmor *, KrbFastArmor *);
+ASN1EXP void ASN1CALL free_KrbFastArmor (KrbFastArmor *);
/*
EncryptedData enc_fast_req;
} KrbFastArmoredReq;
-int decode_KrbFastArmoredReq(const unsigned char *, size_t, KrbFastArmoredReq *, size_t *);
-int encode_KrbFastArmoredReq(unsigned char *, size_t, const KrbFastArmoredReq *, size_t *);
-size_t length_KrbFastArmoredReq(const KrbFastArmoredReq *);
-int copy_KrbFastArmoredReq (const KrbFastArmoredReq *, KrbFastArmoredReq *);
-void free_KrbFastArmoredReq (KrbFastArmoredReq *);
-
-
/*
PA-FX-FAST-REQUEST ::= CHOICE {
armored-data [0] KrbFastArmoredReq,
*/
typedef struct PA_FX_FAST_REQUEST {
- enum {
+ enum PA_FX_FAST_REQUEST_enum {
choice_PA_FX_FAST_REQUEST_asn1_ellipsis = 0,
choice_PA_FX_FAST_REQUEST_armored_data
/* ... */
} u;
} PA_FX_FAST_REQUEST;
-int decode_PA_FX_FAST_REQUEST(const unsigned char *, size_t, PA_FX_FAST_REQUEST *, size_t *);
-int encode_PA_FX_FAST_REQUEST(unsigned char *, size_t, const PA_FX_FAST_REQUEST *, size_t *);
-size_t length_PA_FX_FAST_REQUEST(const PA_FX_FAST_REQUEST *);
-int copy_PA_FX_FAST_REQUEST (const PA_FX_FAST_REQUEST *, PA_FX_FAST_REQUEST *);
-void free_PA_FX_FAST_REQUEST (PA_FX_FAST_REQUEST *);
+ASN1EXP int ASN1CALL decode_PA_FX_FAST_REQUEST(const unsigned char *, size_t, PA_FX_FAST_REQUEST *, size_t *);
+ASN1EXP int ASN1CALL encode_PA_FX_FAST_REQUEST(unsigned char *, size_t, const PA_FX_FAST_REQUEST *, size_t *);
+ASN1EXP size_t ASN1CALL length_PA_FX_FAST_REQUEST(const PA_FX_FAST_REQUEST *);
+ASN1EXP int ASN1CALL copy_PA_FX_FAST_REQUEST (const PA_FX_FAST_REQUEST *, PA_FX_FAST_REQUEST *);
+ASN1EXP void ASN1CALL free_PA_FX_FAST_REQUEST (PA_FX_FAST_REQUEST *);
/*
usec [1] krb5int32,
crealm [2] Realm,
cname [3] PrincipalName,
- checksum [4] Checksum,
- ticket-checksum [5] Checksum,
+ ticket-checksum [4] Checksum,
...,
}
*/
krb5int32 usec;
Realm crealm;
PrincipalName cname;
- Checksum checksum;
Checksum ticket_checksum;
} KrbFastFinished;
-int decode_KrbFastFinished(const unsigned char *, size_t, KrbFastFinished *, size_t *);
-int encode_KrbFastFinished(unsigned char *, size_t, const KrbFastFinished *, size_t *);
-size_t length_KrbFastFinished(const KrbFastFinished *);
-int copy_KrbFastFinished (const KrbFastFinished *, KrbFastFinished *);
-void free_KrbFastFinished (KrbFastFinished *);
+ASN1EXP int ASN1CALL decode_KrbFastFinished(const unsigned char *, size_t, KrbFastFinished *, size_t *);
+ASN1EXP int ASN1CALL encode_KrbFastFinished(unsigned char *, size_t, const KrbFastFinished *, size_t *);
+ASN1EXP size_t ASN1CALL length_KrbFastFinished(const KrbFastFinished *);
+ASN1EXP int ASN1CALL copy_KrbFastFinished (const KrbFastFinished *, KrbFastFinished *);
+ASN1EXP void ASN1CALL free_KrbFastFinished (KrbFastFinished *);
/*
KrbFastResponse ::= SEQUENCE {
- padata [0] SEQUENCE OF PA-DATA,
- rep-key [1] EncryptionKey OPTIONAL,
- finished [2] KrbFastFinished OPTIONAL,
+ padata [0] METHOD-DATA,
+ strengthen-key [1] EncryptionKey OPTIONAL,
+ finished [2] KrbFastFinished OPTIONAL,
+ nonce [3] krb5uint32,
...,
}
*/
typedef struct KrbFastResponse {
- struct KrbFastResponse_padata {
- unsigned int len;
- PA_DATA *val;
- } padata;
- EncryptionKey *rep_key;
+ METHOD_DATA padata;
+ EncryptionKey *strengthen_key;
KrbFastFinished *finished;
+ krb5uint32 nonce;
} KrbFastResponse;
-int decode_KrbFastResponse(const unsigned char *, size_t, KrbFastResponse *, size_t *);
-int encode_KrbFastResponse(unsigned char *, size_t, const KrbFastResponse *, size_t *);
-size_t length_KrbFastResponse(const KrbFastResponse *);
-int copy_KrbFastResponse (const KrbFastResponse *, KrbFastResponse *);
-void free_KrbFastResponse (KrbFastResponse *);
+ASN1EXP int ASN1CALL decode_KrbFastResponse(const unsigned char *, size_t, KrbFastResponse *, size_t *);
+ASN1EXP int ASN1CALL encode_KrbFastResponse(unsigned char *, size_t, const KrbFastResponse *, size_t *);
+ASN1EXP size_t ASN1CALL length_KrbFastResponse(const KrbFastResponse *);
+ASN1EXP int ASN1CALL copy_KrbFastResponse (const KrbFastResponse *, KrbFastResponse *);
+ASN1EXP void ASN1CALL free_KrbFastResponse (KrbFastResponse *);
/*
EncryptedData enc_fast_rep;
} KrbFastArmoredRep;
-int decode_KrbFastArmoredRep(const unsigned char *, size_t, KrbFastArmoredRep *, size_t *);
-int encode_KrbFastArmoredRep(unsigned char *, size_t, const KrbFastArmoredRep *, size_t *);
-size_t length_KrbFastArmoredRep(const KrbFastArmoredRep *);
-int copy_KrbFastArmoredRep (const KrbFastArmoredRep *, KrbFastArmoredRep *);
-void free_KrbFastArmoredRep (KrbFastArmoredRep *);
-
-
/*
PA-FX-FAST-REPLY ::= CHOICE {
armored-data [0] KrbFastArmoredRep,
*/
typedef struct PA_FX_FAST_REPLY {
- enum {
+ enum PA_FX_FAST_REPLY_enum {
choice_PA_FX_FAST_REPLY_asn1_ellipsis = 0,
choice_PA_FX_FAST_REPLY_armored_data
/* ... */
} u;
} PA_FX_FAST_REPLY;
-int decode_PA_FX_FAST_REPLY(const unsigned char *, size_t, PA_FX_FAST_REPLY *, size_t *);
-int encode_PA_FX_FAST_REPLY(unsigned char *, size_t, const PA_FX_FAST_REPLY *, size_t *);
-size_t length_PA_FX_FAST_REPLY(const PA_FX_FAST_REPLY *);
-int copy_PA_FX_FAST_REPLY (const PA_FX_FAST_REPLY *, PA_FX_FAST_REPLY *);
-void free_PA_FX_FAST_REPLY (PA_FX_FAST_REPLY *);
+ASN1EXP int ASN1CALL decode_PA_FX_FAST_REPLY(const unsigned char *, size_t, PA_FX_FAST_REPLY *, size_t *);
+ASN1EXP int ASN1CALL encode_PA_FX_FAST_REPLY(unsigned char *, size_t, const PA_FX_FAST_REPLY *, size_t *);
+ASN1EXP size_t ASN1CALL length_PA_FX_FAST_REPLY(const PA_FX_FAST_REPLY *);
+ASN1EXP int ASN1CALL copy_PA_FX_FAST_REPLY (const PA_FX_FAST_REPLY *, PA_FX_FAST_REPLY *);
+ASN1EXP void ASN1CALL free_PA_FX_FAST_REPLY (PA_FX_FAST_REPLY *);
+
+
+/*
+KDCFastFlags ::= BIT STRING {
+ use_reply_key(0),
+ reply_key_used(1),
+ reply_key_replaced(2),
+ kdc_verfied(3)
+}
+*/
+
+typedef struct KDCFastFlags {
+ unsigned int use_reply_key:1;
+ unsigned int reply_key_used:1;
+ unsigned int reply_key_replaced:1;
+ unsigned int kdc_verfied:1;
+ unsigned int _unused4:1;
+ unsigned int _unused5:1;
+ unsigned int _unused6:1;
+ unsigned int _unused7:1;
+ unsigned int _unused8:1;
+ unsigned int _unused9:1;
+ unsigned int _unused10:1;
+ unsigned int _unused11:1;
+ unsigned int _unused12:1;
+ unsigned int _unused13:1;
+ unsigned int _unused14:1;
+ unsigned int _unused15:1;
+ unsigned int _unused16:1;
+ unsigned int _unused17:1;
+ unsigned int _unused18:1;
+ unsigned int _unused19:1;
+ unsigned int _unused20:1;
+ unsigned int _unused21:1;
+ unsigned int _unused22:1;
+ unsigned int _unused23:1;
+ unsigned int _unused24:1;
+ unsigned int _unused25:1;
+ unsigned int _unused26:1;
+ unsigned int _unused27:1;
+ unsigned int _unused28:1;
+ unsigned int _unused29:1;
+ unsigned int _unused30:1;
+ unsigned int _unused31:1;
+} KDCFastFlags;
+
+
+unsigned KDCFastFlags2int(KDCFastFlags);
+KDCFastFlags int2KDCFastFlags(unsigned);
+/*
+KDCFastState ::= SEQUENCE {
+ flags [0] KDCFastFlags,
+ expiration [1] GeneralizedTime,
+ fast-state [2] METHOD-DATA,
+ expected-pa-types [3] SEQUENCE OF PADATA-TYPE OPTIONAL,
+}
+*/
+
+typedef struct KDCFastState {
+ KDCFastFlags flags;
+ time_t expiration;
+ METHOD_DATA fast_state;
+ struct KDCFastState_expected_pa_types {
+ unsigned int len;
+ PADATA_TYPE *val;
+ } *expected_pa_types;
+} KDCFastState;
+
+ASN1EXP int ASN1CALL decode_KDCFastState(const unsigned char *, size_t, KDCFastState *, size_t *);
+ASN1EXP int ASN1CALL encode_KDCFastState(unsigned char *, size_t, const KDCFastState *, size_t *);
+ASN1EXP size_t ASN1CALL length_KDCFastState(const KDCFastState *);
+ASN1EXP int ASN1CALL copy_KDCFastState (const KDCFastState *, KDCFastState *);
+ASN1EXP void ASN1CALL free_KDCFastState (KDCFastState *);
+
+
+/*
+KDCFastCookie ::= SEQUENCE {
+ version [0] UTF8String,
+ cookie [1] EncryptedData,
+}
+*/
+
+typedef struct KDCFastCookie {
+ heim_utf8_string version;
+ EncryptedData cookie;
+} KDCFastCookie;
+
+ASN1EXP int ASN1CALL decode_KDCFastCookie(const unsigned char *, size_t, KDCFastCookie *, size_t *);
+ASN1EXP int ASN1CALL encode_KDCFastCookie(unsigned char *, size_t, const KDCFastCookie *, size_t *);
+ASN1EXP size_t ASN1CALL length_KDCFastCookie(const KDCFastCookie *);
+ASN1EXP int ASN1CALL copy_KDCFastCookie (const KDCFastCookie *, KDCFastCookie *);
+ASN1EXP void ASN1CALL free_KDCFastCookie (KDCFastCookie *);
+
+
+/*
+KDC-PROXY-MESSAGE ::= SEQUENCE {
+ kerb-message [0] OCTET STRING,
+ target-domain [1] Realm OPTIONAL,
+ dclocator-hint [2] INTEGER OPTIONAL,
+}
+*/
+
+typedef struct KDC_PROXY_MESSAGE {
+ heim_octet_string kerb_message;
+ Realm *target_domain;
+ heim_integer *dclocator_hint;
+} KDC_PROXY_MESSAGE;
+
+ASN1EXP int ASN1CALL decode_KDC_PROXY_MESSAGE(const unsigned char *, size_t, KDC_PROXY_MESSAGE *, size_t *);
+ASN1EXP int ASN1CALL encode_KDC_PROXY_MESSAGE(unsigned char *, size_t, const KDC_PROXY_MESSAGE *, size_t *);
+ASN1EXP size_t ASN1CALL length_KDC_PROXY_MESSAGE(const KDC_PROXY_MESSAGE *);
+ASN1EXP int ASN1CALL copy_KDC_PROXY_MESSAGE (const KDC_PROXY_MESSAGE *, KDC_PROXY_MESSAGE *);
+ASN1EXP void ASN1CALL free_KDC_PROXY_MESSAGE (KDC_PROXY_MESSAGE *);
+
+
+/*
+KERB-TIMES ::= SEQUENCE {
+ authtime [0] KerberosTime,
+ starttime [1] KerberosTime,
+ endtime [2] KerberosTime,
+ renew_till [3] KerberosTime,
+}
+*/
+
+typedef struct KERB_TIMES {
+ KerberosTime authtime;
+ KerberosTime starttime;
+ KerberosTime endtime;
+ KerberosTime renew_till;
+} KERB_TIMES;
+
+ASN1EXP int ASN1CALL decode_KERB_TIMES(const unsigned char *, size_t, KERB_TIMES *, size_t *);
+ASN1EXP int ASN1CALL encode_KERB_TIMES(unsigned char *, size_t, const KERB_TIMES *, size_t *);
+ASN1EXP size_t ASN1CALL length_KERB_TIMES(const KERB_TIMES *);
+ASN1EXP int ASN1CALL copy_KERB_TIMES (const KERB_TIMES *, KERB_TIMES *);
+ASN1EXP void ASN1CALL free_KERB_TIMES (KERB_TIMES *);
+
+
+/*
+KERB-CRED ::= SEQUENCE {
+ client [0] Principal,
+ server [1] Principal,
+ keyblock [2] EncryptionKey,
+ times [3] KERB-TIMES,
+ ticket [4] OCTET STRING,
+ authdata [5] OCTET STRING,
+ addresses [6] HostAddresses,
+ flags [7] TicketFlags,
+}
+*/
+
+typedef struct KERB_CRED {
+ Principal client;
+ Principal server;
+ EncryptionKey keyblock;
+ KERB_TIMES times;
+ heim_octet_string ticket;
+ heim_octet_string authdata;
+ HostAddresses addresses;
+ TicketFlags flags;
+} KERB_CRED;
+
+ASN1EXP int ASN1CALL decode_KERB_CRED(const unsigned char *, size_t, KERB_CRED *, size_t *);
+ASN1EXP int ASN1CALL encode_KERB_CRED(unsigned char *, size_t, const KERB_CRED *, size_t *);
+ASN1EXP size_t ASN1CALL length_KERB_CRED(const KERB_CRED *);
+ASN1EXP int ASN1CALL copy_KERB_CRED (const KERB_CRED *, KERB_CRED *);
+ASN1EXP void ASN1CALL free_KERB_CRED (KERB_CRED *);
+
+
+/*
+KERB-TGS-REQ-IN ::= SEQUENCE {
+ cache [0] OCTET STRING,
+ addrs [1] HostAddresses,
+ flags [2] krb5uint32,
+ imp [3] Principal OPTIONAL,
+ ticket [4] OCTET STRING OPTIONAL,
+ in_cred [5] KERB-CRED,
+ krbtgt [6] KERB-CRED,
+ padata [7] METHOD-DATA,
+}
+*/
+
+typedef struct KERB_TGS_REQ_IN {
+ heim_octet_string cache;
+ HostAddresses addrs;
+ krb5uint32 flags;
+ Principal *imp;
+ heim_octet_string *ticket;
+ KERB_CRED in_cred;
+ KERB_CRED krbtgt;
+ METHOD_DATA padata;
+} KERB_TGS_REQ_IN;
+
+ASN1EXP int ASN1CALL decode_KERB_TGS_REQ_IN(const unsigned char *, size_t, KERB_TGS_REQ_IN *, size_t *);
+ASN1EXP int ASN1CALL encode_KERB_TGS_REQ_IN(unsigned char *, size_t, const KERB_TGS_REQ_IN *, size_t *);
+ASN1EXP size_t ASN1CALL length_KERB_TGS_REQ_IN(const KERB_TGS_REQ_IN *);
+ASN1EXP int ASN1CALL copy_KERB_TGS_REQ_IN (const KERB_TGS_REQ_IN *, KERB_TGS_REQ_IN *);
+ASN1EXP void ASN1CALL free_KERB_TGS_REQ_IN (KERB_TGS_REQ_IN *);
+
+
+/*
+KERB-TGS-REQ-OUT ::= SEQUENCE {
+ subkey [0] EncryptionKey OPTIONAL,
+ t [1] TGS-REQ,
+}
+*/
+
+typedef struct KERB_TGS_REQ_OUT {
+ EncryptionKey *subkey;
+ TGS_REQ t;
+} KERB_TGS_REQ_OUT;
+
+ASN1EXP int ASN1CALL decode_KERB_TGS_REQ_OUT(const unsigned char *, size_t, KERB_TGS_REQ_OUT *, size_t *);
+ASN1EXP int ASN1CALL encode_KERB_TGS_REQ_OUT(unsigned char *, size_t, const KERB_TGS_REQ_OUT *, size_t *);
+ASN1EXP size_t ASN1CALL length_KERB_TGS_REQ_OUT(const KERB_TGS_REQ_OUT *);
+ASN1EXP int ASN1CALL copy_KERB_TGS_REQ_OUT (const KERB_TGS_REQ_OUT *, KERB_TGS_REQ_OUT *);
+ASN1EXP void ASN1CALL free_KERB_TGS_REQ_OUT (KERB_TGS_REQ_OUT *);
+
+
+/*
+KERB-TGS-REP-IN ::= SEQUENCE {
+ cache [0] OCTET STRING,
+ subkey [1] EncryptionKey OPTIONAL,
+ in_cred [2] KERB-CRED,
+ t [3] TGS-REP,
+}
+*/
+
+typedef struct KERB_TGS_REP_IN {
+ heim_octet_string cache;
+ EncryptionKey *subkey;
+ KERB_CRED in_cred;
+ TGS_REP t;
+} KERB_TGS_REP_IN;
+
+/*
+KERB-TGS-REP-OUT ::= SEQUENCE {
+ cache [0] OCTET STRING,
+ cred [1] KERB-CRED,
+ subkey [2] EncryptionKey,
+}
+*/
+
+typedef struct KERB_TGS_REP_OUT {
+ heim_octet_string cache;
+ KERB_CRED cred;
+ EncryptionKey subkey;
+} KERB_TGS_REP_OUT;
+
+/*
+KERB-ARMOR-SERVICE-REPLY ::= SEQUENCE {
+ armor [0] KrbFastArmor,
+ armor-key [1] EncryptionKey,
+}
+*/
+
+typedef struct KERB_ARMOR_SERVICE_REPLY {
+ KrbFastArmor armor;
+ EncryptionKey armor_key;
+} KERB_ARMOR_SERVICE_REPLY;
+
+ASN1EXP int ASN1CALL decode_KERB_ARMOR_SERVICE_REPLY(const unsigned char *, size_t, KERB_ARMOR_SERVICE_REPLY *, size_t *);
+ASN1EXP int ASN1CALL encode_KERB_ARMOR_SERVICE_REPLY(unsigned char *, size_t, const KERB_ARMOR_SERVICE_REPLY *, size_t *);
+ASN1EXP size_t ASN1CALL length_KERB_ARMOR_SERVICE_REPLY(const KERB_ARMOR_SERVICE_REPLY *);
+ASN1EXP int ASN1CALL copy_KERB_ARMOR_SERVICE_REPLY (const KERB_ARMOR_SERVICE_REPLY *, KERB_ARMOR_SERVICE_REPLY *);
+ASN1EXP void ASN1CALL free_KERB_ARMOR_SERVICE_REPLY (KERB_ARMOR_SERVICE_REPLY *);
#endif /* __krb5_asn1_h__ */