version 1.28, 2003/07/22 13:35:22 |
version 1.29, 2003/08/22 10:56:09 |
|
|
#include "channels.h" |
#include "channels.h" |
#include "session.h" |
#include "session.h" |
|
|
|
#ifdef GSSAPI |
|
#include "ssh-gss.h" |
|
#endif |
|
|
/* Imports */ |
/* Imports */ |
extern int compat20; |
extern int compat20; |
extern Newkeys *newkeys[]; |
extern Newkeys *newkeys[]; |
|
|
buffer_free(&m); |
buffer_free(&m); |
return (success); |
return (success); |
} |
} |
#endif |
#endif /* KRB5 */ |
|
|
|
#ifdef GSSAPI |
|
OM_uint32 |
|
mm_ssh_gssapi_server_ctx(Gssctxt **ctx, gss_OID oid) |
|
{ |
|
Buffer m; |
|
OM_uint32 major; |
|
|
|
/* Client doesn't get to see the context */ |
|
*ctx = NULL; |
|
|
|
buffer_init(&m); |
|
buffer_put_string(&m, oid->elements, oid->length); |
|
|
|
mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSSETUP, &m); |
|
mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSSETUP, &m); |
|
|
|
major = buffer_get_int(&m); |
|
|
|
buffer_free(&m); |
|
return (major); |
|
} |
|
|
|
OM_uint32 |
|
mm_ssh_gssapi_accept_ctx(Gssctxt *ctx, gss_buffer_desc *in, |
|
gss_buffer_desc *out, OM_uint32 *flags) |
|
{ |
|
Buffer m; |
|
OM_uint32 major; |
|
|
|
buffer_init(&m); |
|
buffer_put_string(&m, in->value, in->length); |
|
|
|
mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSSTEP, &m); |
|
mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSSTEP, &m); |
|
|
|
major = buffer_get_int(&m); |
|
out->value = buffer_get_string(&m, &out->length); |
|
if (flags) |
|
*flags = buffer_get_int(&m); |
|
|
|
buffer_free(&m); |
|
|
|
return (major); |
|
} |
|
|
|
int |
|
mm_ssh_gssapi_userok(char *user) |
|
{ |
|
Buffer m; |
|
int authenticated = 0; |
|
|
|
buffer_init(&m); |
|
|
|
mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSUSEROK, &m); |
|
mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSUSEROK, |
|
&m); |
|
|
|
authenticated = buffer_get_int(&m); |
|
|
|
buffer_free(&m); |
|
debug3("%s: user %sauthenticated",__func__, authenticated ? "" : "not "); |
|
return (authenticated); |
|
} |
|
#endif /* GSSAPI */ |