summaryrefslogtreecommitdiffstats
path: root/crypto/openssh/sshkey.c
diff options
context:
space:
mode:
authordes <des@FreeBSD.org>2017-09-02 14:25:20 +0000
committerdes <des@FreeBSD.org>2017-09-02 14:25:20 +0000
commitce0d6faba2a9fd27ff0fc0942a4e51f5203bb88f (patch)
treee29bf4f30ea560420ac21b41c62cc53b42547a0b /crypto/openssh/sshkey.c
parentfa127d1375fbc969c65e8d8a5f9f2f8efe4e36fc (diff)
downloadFreeBSD-src-ce0d6faba2a9fd27ff0fc0942a4e51f5203bb88f.zip
FreeBSD-src-ce0d6faba2a9fd27ff0fc0942a4e51f5203bb88f.tar.gz
MFH (r314527,r314576,r314601,r317998): Upgrade OpenSSH to 7.3p1.
Diffstat (limited to 'crypto/openssh/sshkey.c')
-rw-r--r--crypto/openssh/sshkey.c44
1 files changed, 26 insertions, 18 deletions
diff --git a/crypto/openssh/sshkey.c b/crypto/openssh/sshkey.c
index 87b093e..c9f04cd 100644
--- a/crypto/openssh/sshkey.c
+++ b/crypto/openssh/sshkey.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sshkey.c,v 1.31 2015/12/11 04:21:12 mmcc Exp $ */
+/* $OpenBSD: sshkey.c,v 1.35 2016/06/19 07:48:02 djm Exp $ */
/*
* Copyright (c) 2000, 2001 Markus Friedl. All rights reserved.
* Copyright (c) 2008 Alexander von Gernler. All rights reserved.
@@ -1966,7 +1966,8 @@ sshkey_from_blob_internal(struct sshbuf *b, struct sshkey **keyp,
#ifdef DEBUG_PK /* XXX */
sshbuf_dump(b, stderr);
#endif
- *keyp = NULL;
+ if (keyp != NULL)
+ *keyp = NULL;
if ((copy = sshbuf_fromb(b)) == NULL) {
ret = SSH_ERR_ALLOC_FAIL;
goto out;
@@ -2121,8 +2122,10 @@ sshkey_from_blob_internal(struct sshbuf *b, struct sshkey **keyp,
goto out;
}
ret = 0;
- *keyp = key;
- key = NULL;
+ if (keyp != NULL) {
+ *keyp = key;
+ key = NULL;
+ }
out:
sshbuf_free(copy);
sshkey_free(key);
@@ -2367,7 +2370,7 @@ sshkey_drop_cert(struct sshkey *k)
/* Sign a certified key, (re-)generating the signed certblob. */
int
-sshkey_certify(struct sshkey *k, struct sshkey *ca)
+sshkey_certify(struct sshkey *k, struct sshkey *ca, const char *alg)
{
struct sshbuf *principals = NULL;
u_char *ca_blob = NULL, *sig_blob = NULL, nonce[32];
@@ -2457,7 +2460,7 @@ sshkey_certify(struct sshkey *k, struct sshkey *ca)
/* Sign the whole mess */
if ((ret = sshkey_sign(ca, &sig_blob, &sig_len, sshbuf_ptr(cert),
- sshbuf_len(cert), NULL, 0)) != 0)
+ sshbuf_len(cert), alg, 0)) != 0)
goto out;
/* Append signature and we are done */
@@ -3631,12 +3634,10 @@ sshkey_parse_public_rsa1_fileblob(struct sshbuf *blob,
/* The encrypted private part is not parsed by this function. */
r = 0;
- if (keyp != NULL)
+ if (keyp != NULL) {
*keyp = pub;
- else
- sshkey_free(pub);
- pub = NULL;
-
+ pub = NULL;
+ }
out:
sshbuf_free(copy);
sshkey_free(pub);
@@ -3657,7 +3658,8 @@ sshkey_parse_private_rsa1(struct sshbuf *blob, const char *passphrase,
const struct sshcipher *cipher;
struct sshkey *prv = NULL;
- *keyp = NULL;
+ if (keyp != NULL)
+ *keyp = NULL;
if (commentp != NULL)
*commentp = NULL;
@@ -3743,8 +3745,10 @@ sshkey_parse_private_rsa1(struct sshbuf *blob, const char *passphrase,
goto out;
}
r = 0;
- *keyp = prv;
- prv = NULL;
+ if (keyp != NULL) {
+ *keyp = prv;
+ prv = NULL;
+ }
if (commentp != NULL) {
*commentp = comment;
comment = NULL;
@@ -3769,7 +3773,8 @@ sshkey_parse_private_pem_fileblob(struct sshbuf *blob, int type,
BIO *bio = NULL;
int r;
- *keyp = NULL;
+ if (keyp != NULL)
+ *keyp = NULL;
if ((bio = BIO_new(BIO_s_mem())) == NULL || sshbuf_len(blob) > INT_MAX)
return SSH_ERR_ALLOC_FAIL;
@@ -3838,8 +3843,10 @@ sshkey_parse_private_pem_fileblob(struct sshbuf *blob, int type,
goto out;
}
r = 0;
- *keyp = prv;
- prv = NULL;
+ if (keyp != NULL) {
+ *keyp = prv;
+ prv = NULL;
+ }
out:
BIO_free(bio);
if (pk != NULL)
@@ -3853,7 +3860,8 @@ int
sshkey_parse_private_fileblob_type(struct sshbuf *blob, int type,
const char *passphrase, struct sshkey **keyp, char **commentp)
{
- *keyp = NULL;
+ if (keyp != NULL)
+ *keyp = NULL;
if (commentp != NULL)
*commentp = NULL;
OpenPOWER on IntegriCloud