]> andersk Git - gssapi-openssh.git/blobdiff - openssh/auth-skey.c
The man2html from jbasney on pkilab2 works whereas the standard one doesn't.
[gssapi-openssh.git] / openssh / auth-skey.c
index cb43dba485211e9b6eca84cf02e7ba127f8f802a..f921fc1bb70d8473b4527dc6d0ab10c8ff136d72 100644 (file)
@@ -1,4 +1,3 @@
-/* $OpenBSD: auth-skey.c,v 1.27 2007/01/21 01:41:54 stevesk Exp $ */
 /*
  * Copyright (c) 2001 Markus Friedl.  All rights reserved.
  *
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
-
 #include "includes.h"
+RCSID("$OpenBSD: auth-skey.c,v 1.12 2001/05/18 14:13:28 markus Exp $");
 
 #ifdef SKEY
 
-#include <sys/types.h>
-
-#include <pwd.h>
-#include <stdio.h>
-
 #include <skey.h>
 
 #include "xmalloc.h"
-#include "key.h"
-#include "hostfile.h"
 #include "auth.h"
-#include "ssh-gss.h"
-#include "monitor_wrap.h"
 
 static void *
 skey_init_ctx(Authctxt *authctxt)
@@ -47,36 +37,44 @@ skey_init_ctx(Authctxt *authctxt)
        return authctxt;
 }
 
-int
-skey_query(void *ctx, char **name, char **infotxt,
+#define PROMPT "\nS/Key Password: "
+
+static int
+skey_query(void *ctx, char **name, char **infotxt, 
     u_int* numprompts, char ***prompts, u_int **echo_on)
 {
        Authctxt *authctxt = ctx;
-       char challenge[1024];
+       char challenge[1024], *p;
+       int len;
        struct skey skey;
 
-       if (_compat_skeychallenge(&skey, authctxt->user, challenge,
-           sizeof(challenge)) == -1)
+       if (skeychallenge(&skey, authctxt->user, challenge) == -1)
                return -1;
 
-       *name = xstrdup("");
-       *infotxt = xstrdup("");
+       *name       = xstrdup("");
+       *infotxt    = xstrdup("");
        *numprompts = 1;
-       *prompts = xcalloc(*numprompts, sizeof(char *));
-       *echo_on = xcalloc(*numprompts, sizeof(u_int));
+       *prompts = xmalloc(*numprompts * sizeof(char*));
+       *echo_on = xmalloc(*numprompts * sizeof(u_int));
+       (*echo_on)[0] = 0;
 
-       xasprintf(*prompts, "%s%s", challenge, SKEY_PROMPT);
+       len = strlen(challenge) + strlen(PROMPT) + 1;
+       p = xmalloc(len);
+       p[0] = '\0';
+       strlcat(p, challenge, len);
+       strlcat(p, PROMPT, len);
+       (*prompts)[0] = p;
 
        return 0;
 }
 
-int
+static int
 skey_respond(void *ctx, u_int numresponses, char **responses)
 {
        Authctxt *authctxt = ctx;
-
        if (authctxt->valid &&
-           numresponses == 1 &&
+           numresponses == 1 && 
            skey_haskey(authctxt->pw->pw_name) == 0 &&
            skey_passcheck(authctxt->pw->pw_name, responses[0]) != -1)
            return 0;
@@ -96,12 +94,4 @@ KbdintDevice skey_device = {
        skey_respond,
        skey_free_ctx
 };
-
-KbdintDevice mm_skey_device = {
-       "skey",
-       skey_init_ctx,
-       mm_skey_query,
-       mm_skey_respond,
-       skey_free_ctx
-};
 #endif /* SKEY */
This page took 0.144924 seconds and 4 git commands to generate.