Add impersonate support functions.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@17616 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -34,3 +34,52 @@
|
||||
#include "krb5_locl.h"
|
||||
|
||||
RCSID("$Id$");
|
||||
|
||||
krb5_error_code KRB5_LIB_FUNCTION
|
||||
_krb5_s4u2self_to_checksumdata(krb5_context context,
|
||||
const PA_S4U2Self *self,
|
||||
krb5_data *data)
|
||||
{
|
||||
krb5_error_code ret;
|
||||
krb5_ssize_t ssize;
|
||||
krb5_storage *sp;
|
||||
size_t size;
|
||||
int i;
|
||||
|
||||
sp = krb5_storage_emem();
|
||||
if (sp == NULL) {
|
||||
krb5_clear_error_string(context);
|
||||
return ENOMEM;
|
||||
}
|
||||
ret = krb5_store_int32(sp, self->name.name_type);
|
||||
if (ret)
|
||||
goto out;
|
||||
for (i = 0; i < self->name.name_string.len; i++) {
|
||||
size = strlen(self->name.name_string.val[i]);
|
||||
ssize = krb5_storage_write(sp, self->name.name_string.val[i], size);
|
||||
if (ssize != size) {
|
||||
ret = ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
}
|
||||
size = strlen(self->realm);
|
||||
ssize = krb5_storage_write(sp, self->realm, size);
|
||||
if (ssize != size) {
|
||||
ret = ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
size = strlen(self->auth);
|
||||
ssize = krb5_storage_write(sp, self->auth, size);
|
||||
if (ssize != size) {
|
||||
ret = ENOMEM;
|
||||
goto out;
|
||||
}
|
||||
|
||||
ret = krb5_storage_to_data(sp, data);
|
||||
krb5_storage_free(sp);
|
||||
return ret;
|
||||
|
||||
out:
|
||||
krb5_clear_error_string(context);
|
||||
return ret;
|
||||
}
|
||||
|
Reference in New Issue
Block a user