]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: refactor out some duplicate private key loading code;
authordjm@openbsd.org <djm@openbsd.org>
Fri, 17 Apr 2020 07:15:11 +0000 (07:15 +0000)
committerDamien Miller <djm@mindrot.org>
Fri, 17 Apr 2020 07:17:47 +0000 (17:17 +1000)
based on patch from loic AT venez.fr, ok dtucker@

OpenBSD-Commit-ID: 5eff2476b0d8d0614924c55e350fb7bb9c84f45e

authfile.c

index 50fa48e4a3b6f4c095fe10c8481dfd0ea2d83a6d..35ccf576c2b5f0c9fa9b975f2bb3624fb69f1282 100644 (file)
@@ -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.
  *
@@ -140,6 +140,14 @@ sshkey_load_private_type(int type, const char *filename, const char *passphrase,
        return r;
 }
 
+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)
@@ -161,39 +169,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)