]> andersk Git - openssh.git/blobdiff - monitor_wrap.c
- markus@cvs.openbsd.org 2003/08/22 10:56:09
[openssh.git] / monitor_wrap.c
index 9e7e6b3c3e1a1ad783de4c51a267a97b5e576d8d..4073905f62a6898d6782a7f2ae54521a1fa48600 100644 (file)
@@ -25,7 +25,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: monitor_wrap.c,v 1.28 2003/07/22 13:35:22 markus Exp $");
+RCSID("$OpenBSD: monitor_wrap.c,v 1.29 2003/08/22 10:56:09 markus Exp $");
 
 #include <openssl/bn.h>
 #include <openssl/dh.h>
@@ -53,6 +53,10 @@ RCSID("$OpenBSD: monitor_wrap.c,v 1.28 2003/07/22 13:35:22 markus Exp $");
 #include "channels.h"
 #include "session.h"
 
+#ifdef GSSAPI
+#include "ssh-gss.h"
+#endif
+
 /* Imports */
 extern int compat20;
 extern Newkeys *newkeys[];
@@ -1100,4 +1104,69 @@ mm_auth_krb5(void *ctx, void *argp, char **userp, void *resp)
        buffer_free(&m);
        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 */
This page took 0.051411 seconds and 4 git commands to generate.