sshkey_sigtype() function to return the type of a signature;
authordjm <djm@openbsd.org>
Mon, 18 Dec 2017 02:22:29 +0000 (02:22 +0000)
committerdjm <djm@openbsd.org>
Mon, 18 Dec 2017 02:22:29 +0000 (02:22 +0000)
ok markus@

usr.bin/ssh/sshkey.c
usr.bin/ssh/sshkey.h

index 0ad9a65..9e69a7e 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshkey.c,v 1.57 2017/10/13 06:24:51 djm Exp $ */
+/* $OpenBSD: sshkey.c,v 1.58 2017/12/18 02:22:29 djm Exp $ */
 /*
  * Copyright (c) 2000, 2001 Markus Friedl.  All rights reserved.
  * Copyright (c) 2008 Alexander von Gernler.  All rights reserved.
@@ -2011,6 +2011,31 @@ sshkey_froms(struct sshbuf *buf, struct sshkey **keyp)
        return r;
 }
 
+int
+sshkey_sigtype(const u_char *sig, size_t siglen, char **sigtypep)
+{
+       int r;
+       struct sshbuf *b = NULL;
+       char *sigtype = NULL;
+
+       if (sigtypep != NULL)
+               *sigtypep = NULL;
+       if ((b = sshbuf_from(sig, siglen)) == NULL)
+               return SSH_ERR_ALLOC_FAIL;
+       if ((r = sshbuf_get_cstring(b, &sigtype, NULL)) != 0)
+               goto out;
+       /* success */
+       if (sigtypep != NULL) {
+               *sigtypep = sigtype;
+               sigtype = NULL;
+       }
+       r = 0;
+ out:
+       free(sigtype);
+       sshbuf_free(b);
+       return r;
+}
+
 int
 sshkey_sign(const struct sshkey *key,
     u_char **sigp, size_t *lenp,
index b4c036a..814e22f 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshkey.h,v 1.21 2017/07/01 13:50:45 djm Exp $ */
+/* $OpenBSD: sshkey.h,v 1.22 2017/12/18 02:22:29 djm Exp $ */
 
 /*
  * Copyright (c) 2000, 2001 Markus Friedl.  All rights reserved.
@@ -168,6 +168,7 @@ int  sshkey_puts(const struct sshkey *, struct sshbuf *);
 int     sshkey_plain_to_blob(const struct sshkey *, u_char **, size_t *);
 int     sshkey_putb_plain(const struct sshkey *, struct sshbuf *);
 
+int     sshkey_sigtype(const u_char *, size_t, char **);
 int     sshkey_sign(const struct sshkey *, u_char **, size_t *,
     const u_char *, size_t, const char *, u_int);
 int     sshkey_verify(const struct sshkey *, const u_char *, size_t,