summaryrefslogtreecommitdiffstats
path: root/usr.bin/ssh/sshkey.c
diff options
context:
space:
mode:
authordjm <djm@openbsd.org>2017-12-18 02:22:29 +0000
committerdjm <djm@openbsd.org>2017-12-18 02:22:29 +0000
commitee642ea0683f74dde437e195e2c25df3f222668f (patch)
treedb4c8ba584ed1a49f806dccd220017febf8cc9e8 /usr.bin/ssh/sshkey.c
parentSupport setting the Cortex-A7 cores to active/passive mode and (diff)
downloadwireguard-openbsd-ee642ea0683f74dde437e195e2c25df3f222668f.tar.xz
wireguard-openbsd-ee642ea0683f74dde437e195e2c25df3f222668f.zip
sshkey_sigtype() function to return the type of a signature;
ok markus@
Diffstat (limited to 'usr.bin/ssh/sshkey.c')
-rw-r--r--usr.bin/ssh/sshkey.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/usr.bin/ssh/sshkey.c b/usr.bin/ssh/sshkey.c
index 0ad9a65cc9d..9e69a7e75f0 100644
--- a/usr.bin/ssh/sshkey.c
+++ b/usr.bin/ssh/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.
@@ -2012,6 +2012,31 @@ sshkey_froms(struct sshbuf *buf, struct sshkey **keyp)
}
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,
const u_char *data, size_t datalen, const char *alg, u_int compat)