khm_int32 serialize_krb5_addresses(const krb5_addresses * as, void * buf, size_t * pcbbuf) { size_t len = 0; len = length_HostAddresses(as); if (buf == 0 || *pcbbuf < len) { *pcbbuf = len; return KHM_ERROR_TOO_LONG; } encode_HostAddresses(BYTEOFFSET(buf, len - 1), *pcbbuf, as, &len); return KHM_ERROR_SUCCESS; }
int encode_KrbCredInfo(unsigned char *p, size_t len, const KrbCredInfo *data, size_t *size) { size_t ret = 0; size_t l; int i, e; i = 0; if((data)->caddr) { int oldret = ret; ret = 0; e = encode_HostAddresses(p, len, (data)->caddr, &l); BACK; e = der_put_length_and_tag (p, len, ret, ASN1_C_CONTEXT, CONS, 10, &l); BACK; ret += oldret; } if((data)->sname) { int oldret = ret; ret = 0; e = encode_PrincipalName(p, len, (data)->sname, &l); BACK; e = der_put_length_and_tag (p, len, ret, ASN1_C_CONTEXT, CONS, 9, &l); BACK; ret += oldret; } if((data)->srealm) { int oldret = ret; ret = 0; e = encode_Realm(p, len, (data)->srealm, &l); BACK; e = der_put_length_and_tag (p, len, ret, ASN1_C_CONTEXT, CONS, 8, &l); BACK; ret += oldret; } if((data)->renew_till) { int oldret = ret; ret = 0; e = encode_KerberosTime(p, len, (data)->renew_till, &l); BACK; e = der_put_length_and_tag (p, len, ret, ASN1_C_CONTEXT, CONS, 7, &l); BACK; ret += oldret; } if((data)->endtime) { int oldret = ret; ret = 0; e = encode_KerberosTime(p, len, (data)->endtime, &l); BACK; e = der_put_length_and_tag (p, len, ret, ASN1_C_CONTEXT, CONS, 6, &l); BACK; ret += oldret; } if((data)->starttime) { int oldret = ret; ret = 0; e = encode_KerberosTime(p, len, (data)->starttime, &l); BACK; e = der_put_length_and_tag (p, len, ret, ASN1_C_CONTEXT, CONS, 5, &l); BACK; ret += oldret; } if((data)->authtime) { int oldret = ret; ret = 0; e = encode_KerberosTime(p, len, (data)->authtime, &l); BACK; e = der_put_length_and_tag (p, len, ret, ASN1_C_CONTEXT, CONS, 4, &l); BACK; ret += oldret; } if((data)->flags) { int oldret = ret; ret = 0; e = encode_TicketFlags(p, len, (data)->flags, &l); BACK; e = der_put_length_and_tag (p, len, ret, ASN1_C_CONTEXT, CONS, 3, &l); BACK; ret += oldret; } if((data)->pname) { int oldret = ret; ret = 0; e = encode_PrincipalName(p, len, (data)->pname, &l); BACK; e = der_put_length_and_tag (p, len, ret, ASN1_C_CONTEXT, CONS, 2, &l); BACK; ret += oldret; } if((data)->prealm) { int oldret = ret; ret = 0; e = encode_Realm(p, len, (data)->prealm, &l); BACK; e = der_put_length_and_tag (p, len, ret, ASN1_C_CONTEXT, CONS, 1, &l); BACK; ret += oldret; } { int oldret = ret; ret = 0; e = encode_EncryptionKey(p, len, &(data)->key, &l); BACK; e = der_put_length_and_tag (p, len, ret, ASN1_C_CONTEXT, CONS, 0, &l); BACK; ret += oldret; } e = der_put_length_and_tag (p, len, ret, ASN1_C_UNIV, CONS, UT_Sequence, &l); BACK; *size = ret; return 0; }