diff options
author | djm@openbsd.org <djm@openbsd.org> | 2022-01-06 23:05:42 +0100 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2022-01-06 23:21:38 +0100 |
commit | fdb1d58d0d3888b042e5a500f6ce524486aaf782 (patch) | |
tree | f56afecd30661d4dd3d20d71056dbf1ddd7bf9ad /sshkey.c | |
parent | upstream: log some details on hostkeys that ssh loads for (diff) | |
download | openssh-fdb1d58d0d3888b042e5a500f6ce524486aaf782.tar.xz openssh-fdb1d58d0d3888b042e5a500f6ce524486aaf782.zip |
upstream: add a helper function to match a key type to a list of
signature algorithms. RSA keys can make signatures with multiple algorithms,
so some special handling is required. ok markus@
OpenBSD-Commit-ID: 03b41b2bda06fa4cd9c84cef6095033b9e49b6ff
Diffstat (limited to 'sshkey.c')
-rw-r--r-- | sshkey.c | 25 |
1 files changed, 24 insertions, 1 deletions
@@ -1,4 +1,4 @@ -/* $OpenBSD: sshkey.c,v 1.119 2021/07/23 03:37:52 djm Exp $ */ +/* $OpenBSD: sshkey.c,v 1.120 2022/01/06 22:05:42 djm Exp $ */ /* * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. * Copyright (c) 2008 Alexander von Gernler. All rights reserved. @@ -255,6 +255,29 @@ sshkey_ecdsa_nid_from_name(const char *name) return -1; } +int +sshkey_match_keyname_to_sigalgs(const char *keyname, const char *sigalgs) +{ + int ktype; + + if (sigalgs == NULL || *sigalgs == '\0' || + (ktype = sshkey_type_from_name(keyname)) == KEY_UNSPEC) + return 0; + else if (ktype == KEY_RSA) { + return match_pattern_list("ssh-rsa", sigalgs, 0) == 1 || + match_pattern_list("rsa-sha2-256", sigalgs, 0) == 1 || + match_pattern_list("rsa-sha2-512", sigalgs, 0) == 1; + } else if (ktype == KEY_RSA_CERT) { + return match_pattern_list("ssh-rsa-cert-v01@openssh.com", + sigalgs, 0) == 1 || + match_pattern_list("rsa-sha2-256-cert-v01@openssh.com", + sigalgs, 0) == 1 || + match_pattern_list("rsa-sha2-512-cert-v01@openssh.com", + sigalgs, 0) == 1; + } else + return match_pattern_list(keyname, sigalgs, 0) == 1; +} + char * sshkey_alg_list(int certs_only, int plain_only, int include_sigonly, char sep) { |