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"
|
#include "krb5_locl.h"
|
||||||
|
|
||||||
RCSID("$Id$");
|
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