Files
heimdal/lib/krb5/asn1_glue.c
Johan Danielsson de43cd185b Replace contents with keyvalue. Prepare for use of asn1-types.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@1890 ec53bebd-3082-4978-b11e-865c3cabbd6b
1997-06-10 14:25:15 +00:00

56 lines
1.3 KiB
C

/*
*
*/
#include "krb5_locl.h"
RCSID("$Id$");
krb5_error_code
krb5_principal2principalname (PrincipalName *p,
krb5_principal from)
{
#ifdef USE_ASN1_PRINCIPAL
copy_PrincipalName(&from->name, p);
#else
int i;
p->name_type = from->type;
p->name_string.len = from->ncomp;
p->name_string.val = malloc(from->ncomp * sizeof(*p->name_string.val));
for (i = 0; i < from->ncomp; ++i) {
int len = from->comp[i].length;
p->name_string.val[i] = malloc(len + 1);
strncpy (p->name_string.val[i], from->comp[i].data, len);
p->name_string.val[i][len] = '\0';
}
#endif
return 0;
}
krb5_error_code
principalname2krb5_principal (krb5_principal *principal,
PrincipalName from,
char *realm)
{
krb5_principal p = malloc(sizeof(*p));
#ifdef USE_ASN1_PRINCIPAL
copy_PrincipalName(&from, &p->name);
p->realm = strdup(realm);
#else
int i;
p->type = from.name_type;
p->ncomp = from.name_string.len;
p->comp = malloc (p->ncomp * sizeof(*p->comp));
for (i = 0; i < p->ncomp; ++i) {
int len = strlen(from.name_string.val[i]);
p->comp[i].length = len;
p->comp[i].data = strdup(from.name_string.val[i]);
}
p->realm.data = strdup(realm);
p->realm.length = strlen(realm);
#endif
*principal = p;
return 0;
}