[PATCH 5/3] ssh-keygen: -Z cipher can be "none" test it in regression and, report it correctly in -yv option
Loïc
loic at venez.fr
Sun Apr 26 07:48:58 AEST 2020
On 25/04/2020 at 23:35, Loïc wrote :
> On 25/04/2020 at 02:58, Loïc wrote :
>> Add private key protection information extraction to shh-keygen using -v
>> option on top of -y option which is already parsing the private key.
>>
>> Technically, the passphrase isn't necessary to do this, but it is the
>> most logical thing to do for me.
>>
>> Adding this to -l option is not appropriate because fingerprinting is
>> using the .pub file when available.
>>
>> An other idea is to add a new option, I can do it if you prefer.
>>
>> Also, I'm laking information for information extraction from PEM and
>> PKCS8 file format, I'm OK to have a pointer to implement this correctly.
>>
>> This patch is also adding a regression test for the functionnality.
>>
>> ---
>>
>> authfile.c | 16 ++--
>> authfile.h | 7 +-
>> regress/Makefile | 3 +-
>> regress/keygen-private-information.sh | 81 +++++++++++++++++++++
>> ssh-keygen.c | 44 +++++++----
>> ssh-keysign.c | 2 +-
>> sshconnect2.c | 2 +-
>> sshd.c | 2 +-
>> sshkey.c | 101 +++++++++++++++++++++++---
>> sshkey.h | 14 +++-
>> 10 files changed, 234 insertions(+), 38 deletions(-)
>> create mode 100644 regress/keygen-private-information.sh
>>
> In since I discovered the -Z option, I'm adding here a regression test
> for this option, the patch below applies on top on the upper one I'm
> replying to.
>
In fact "none" cypher is allowed here is a patch to test it in
regression and report it correctly in -yv option
---
regress/keygen-private-information.sh | 2 +-
ssh-keygen.c | 3 +--
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/regress/keygen-private-information.sh
b/regress/keygen-private-information.sh
index ddf74eb95c3c..22ad6429a079 100644
--- a/regress/keygen-private-information.sh
+++ b/regress/keygen-private-information.sh
@@ -48,7 +48,7 @@ EOF
for fmt in '' RFC4716 PKCS8 PEM ; do
for secret in '' 'secret1'; do
cipher_list="default"
- test -n "$secret" -a -z "$fmt" && cipher_list=`${SSH} -Q cipher`
+ test -n "$secret" -a -z "$fmt" && cipher_list=`${SSH} -Q
cipher`" none"
for cipher in $cipher_list; do
rounds_list="default"
test -n "$secret" -a -z "$fmt" && rounds_list="2 16"
diff --git a/ssh-keygen.c b/ssh-keygen.c
index a848edc33b5d..030b12e5b897 100644
--- a/ssh-keygen.c
+++ b/ssh-keygen.c
@@ -824,8 +824,7 @@ do_print_public(struct passwd *pw)
if (log_level_get() >= SYSLOG_LEVEL_VERBOSE) {
printf("Key protection details:\n");
printf("File format: %s\n",
sshkey_format_name(vault_info->format));
- if ( (vault_info->ciphername == NULL ||
strcmp(vault_info->ciphername, "none") == 0)
- || (vault_info->kdfname == NULL ||
strcmp(vault_info->kdfname, "none") == 0)) {
+ if (vault_info->kdfname == NULL || strcmp(vault_info->kdfname,
"none") == 0) {
printf("no passphrase\n");
} else {
printf("cipher: %s\n", vault_info->ciphername);
--
2.17.1
More information about the openssh-unix-dev
mailing list