mirror of
https://github.com/PowerShell/openssh-portable.git
synced 2025-07-30 17:25:09 +02:00
upstream: refactor out some duplicate private key loading code;
based on patch from loic AT venez.fr, ok dtucker@ OpenBSD-Commit-ID: 5eff2476b0d8d0614924c55e350fb7bb9c84f45e
This commit is contained in:
parent
4e04f46f24
commit
094dd513f4
43
authfile.c
43
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.
|
||||
*
|
||||
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user