version 1.17, 2006/08/29 12:02:30 |
version 1.18, 2007/06/12 08:20:00 |
|
|
return (ctx->major); |
return (ctx->major); |
} |
} |
|
|
/* Acquire credentials for a server running on the current host. |
|
* Requires that the context structure contains a valid OID |
|
*/ |
|
|
|
/* Returns a GSSAPI error code */ |
|
OM_uint32 |
OM_uint32 |
ssh_gssapi_acquire_cred(Gssctxt *ctx) |
|
{ |
|
OM_uint32 status; |
|
char lname[MAXHOSTNAMELEN]; |
|
gss_OID_set oidset; |
|
|
|
gss_create_empty_oid_set(&status, &oidset); |
|
gss_add_oid_set_member(&status, ctx->oid, &oidset); |
|
|
|
if (gethostname(lname, MAXHOSTNAMELEN)) { |
|
gss_release_oid_set(&status, &oidset); |
|
return (-1); |
|
} |
|
|
|
if (GSS_ERROR(ssh_gssapi_import_name(ctx, lname))) { |
|
gss_release_oid_set(&status, &oidset); |
|
return (ctx->major); |
|
} |
|
|
|
if ((ctx->major = gss_acquire_cred(&ctx->minor, |
|
ctx->name, 0, oidset, GSS_C_ACCEPT, &ctx->creds, NULL, NULL))) |
|
ssh_gssapi_error(ctx); |
|
|
|
gss_release_oid_set(&status, &oidset); |
|
return (ctx->major); |
|
} |
|
|
|
OM_uint32 |
|
ssh_gssapi_sign(Gssctxt *ctx, gss_buffer_t buffer, gss_buffer_t hash) |
ssh_gssapi_sign(Gssctxt *ctx, gss_buffer_t buffer, gss_buffer_t hash) |
{ |
{ |
if ((ctx->major = gss_get_mic(&ctx->minor, ctx->context, |
if ((ctx->major = gss_get_mic(&ctx->minor, ctx->context, |
|
|
buffer_put_cstring(b, user); |
buffer_put_cstring(b, user); |
buffer_put_cstring(b, service); |
buffer_put_cstring(b, service); |
buffer_put_cstring(b, context); |
buffer_put_cstring(b, context); |
} |
|
|
|
OM_uint32 |
|
ssh_gssapi_server_ctx(Gssctxt **ctx, gss_OID oid) |
|
{ |
|
if (*ctx) |
|
ssh_gssapi_delete_ctx(ctx); |
|
ssh_gssapi_build_ctx(ctx); |
|
ssh_gssapi_set_oid(*ctx, oid); |
|
return (ssh_gssapi_acquire_cred(*ctx)); |
|
} |
} |
|
|
int |
int |