]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream commit
authordjm@openbsd.org <djm@openbsd.org>
Mon, 18 Dec 2017 02:22:29 +0000 (02:22 +0000)
committerDamien Miller <djm@mindrot.org>
Tue, 19 Dec 2017 04:20:44 +0000 (15:20 +1100)
sshkey_sigtype() function to return the type of a
signature; ok markus@

OpenBSD-Commit-ID: d3772b065ad6eed97285589bfb544befed9032e8

sshkey.c
sshkey.h

index 1e390420d070a82083524d12f968d1df44d6d2b3..19f26a1176551d59397a9fec4e0d64c3190be180 100644 (file)
--- a/sshkey.c
+++ b/sshkey.c
@@ -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.
@@ -2049,6 +2049,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 9093eac517d91aadab8f60a64ec7317cefa1ad79..b5346a92db65eda47076659c6cfee32e9eb7e91d 100644 (file)
--- a/sshkey.h
+++ b/sshkey.h
@@ -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.
@@ -174,6 +174,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,