diff options
author | Damien Miller <djm@cvs.openbsd.org> | 2020-04-17 07:15:12 +0000 |
---|---|---|
committer | Damien Miller <djm@cvs.openbsd.org> | 2020-04-17 07:15:12 +0000 |
commit | 85d79df35c23b28d0e2275c6fccd163877c6a0aa (patch) | |
tree | ce28d2db18dba7656efa4ea44a13c0e041285805 /usr.bin/ssh | |
parent | 1b18f41b07a679f2065290eb85b36a9c8cbc28a2 (diff) |
refactor out some duplicate private key loading code; based on
patch from loic AT venez.fr, ok dtucker@
Diffstat (limited to 'usr.bin/ssh')
-rw-r--r-- | usr.bin/ssh/authfile.c | 43 |
1 files changed, 9 insertions, 34 deletions
diff --git a/usr.bin/ssh/authfile.c b/usr.bin/ssh/authfile.c index c945c040298..a14650777b1 100644 --- a/usr.bin/ssh/authfile.c +++ b/usr.bin/ssh/authfile.c @@ -1,4 +1,4 @@ -/* $OpenBSD: authfile.c,v 1.139 2020/04/08 00:10:37 djm Exp $ */ +/* $OpenBSD: authfile.c,v 1.140 2020/04/17 07:15:11 djm Exp $ */ /* * Copyright (c) 2000, 2013 Markus Friedl. All rights reserved. * @@ -136,6 +136,14 @@ sshkey_load_private_type(int type, const char *filename, const char *passphrase, } int +sshkey_load_private(const char *filename, const char *passphrase, + struct sshkey **keyp, char **commentp) +{ + return sshkey_load_private_type(KEY_UNSPEC, filename, passphrase, + keyp, commentp); +} + +int sshkey_load_private_type_fd(int fd, int type, const char *passphrase, struct sshkey **keyp, char **commentp) { @@ -156,39 +164,6 @@ sshkey_load_private_type_fd(int fd, int type, const char *passphrase, return r; } -/* XXX this is almost identical to sshkey_load_private_type() */ -int -sshkey_load_private(const char *filename, const char *passphrase, - struct sshkey **keyp, char **commentp) -{ - struct sshbuf *buffer = NULL; - int r, fd; - - if (keyp != NULL) - *keyp = NULL; - if (commentp != NULL) - *commentp = NULL; - - if ((fd = open(filename, O_RDONLY)) == -1) - return SSH_ERR_SYSTEM_ERROR; - if (sshkey_perm_ok(fd, filename) != 0) { - r = SSH_ERR_KEY_BAD_PERMISSIONS; - goto out; - } - if ((r = sshbuf_load_fd(fd, &buffer)) != 0 || - (r = sshkey_parse_private_fileblob(buffer, passphrase, keyp, - commentp)) != 0) - goto out; - if (keyp && *keyp && - (r = sshkey_set_filename(*keyp, filename)) != 0) - goto out; - r = 0; - out: - close(fd); - sshbuf_free(buffer); - return r; -} - /* Load a pubkey from the unencrypted envelope of a new-format private key */ static int sshkey_load_pubkey_from_private(const char *filename, struct sshkey **pubkeyp) |