]> andersk Git - gssapi-openssh.git/blobdiff - openssh/monitor_wrap.c
openssh-3.6.1p1-gssapi-20030416.diff from Simon
[gssapi-openssh.git] / openssh / monitor_wrap.c
index a0c4d2a2f77f0216e36e01b1e51441b34ec0c1c6..e23f72d8b7386d2caac8987dfb4bdb07df9bc662 100644 (file)
@@ -1126,5 +1126,54 @@ mm_ssh_gssapi_last_error(Gssctxt *ctx, OM_uint32 *major, OM_uint32 *minor) {
        
        return(errstr);
 }      
+
+OM_uint32
+mm_gss_indicate_mechs(OM_uint32 *minor_status, gss_OID_set *mech_set)
+{
+        Buffer m;
+       OM_uint32 major,minor;
+       int count;
+       gss_OID_desc oid;
+       buffer_init(&m);
+
+       mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSMECHS, &m);
+        mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSMECHS,
+                                 &m);
+        major=buffer_get_int(&m);
+       count=buffer_get_int(&m);
+       
+        gss_create_empty_oid_set(&minor,mech_set);
+       while(count-->0) {
+           oid.elements=buffer_get_string(&m,&oid.length);
+           gss_add_oid_set_member(&minor,&oid,mech_set);
+       }
+
+       buffer_free(&m);
+       
+        return(major);
+}
+
+int
+mm_ssh_gssapi_localname(char **lname)
+{
+        Buffer m;
+
+       buffer_init(&m);
+        mm_request_send(pmonitor->m_recvfd, MONITOR_REQ_GSSLOCALNAME, &m);
+
+        debug3("%s: waiting for MONITOR_ANS_GSSLOCALNAME", __func__);
+        mm_request_receive_expect(pmonitor->m_recvfd, MONITOR_ANS_GSSLOCALNAME,
+                                  &m);
+
+       *lname = buffer_get_string(&m, NULL);
+
+        buffer_free(&m);
+       if (lname[0] == '\0') {
+           debug3("%s: gssapi identity mapping failed", __func__);
+       } else {
+           debug3("%s: gssapi identity mapped to %s", __func__, *lname);
+       }
        
+        return(0);
+}      
 #endif /* GSSAPI */
This page took 0.032085 seconds and 4 git commands to generate.