From 48fdc08ca5b0100c5ec0a3bfd4cae0d78562afc4 Mon Sep 17 00:00:00 2001 From: Lukas Niederbremer Date: Thu, 5 Mar 2026 02:14:03 +0100 Subject: [PATCH] Ignore empty or invalid SSH key components --- src/format/BitwardenReader.cpp | 35 ++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/src/format/BitwardenReader.cpp b/src/format/BitwardenReader.cpp index b23117b28..a9ec6248d 100644 --- a/src/format/BitwardenReader.cpp +++ b/src/format/BitwardenReader.cpp @@ -263,25 +263,28 @@ namespace if (sshKey.contains("publicKey") && sshKey.contains("privateKey")) { const auto publicKey = sshKey.value("publicKey").toString(); + const auto privateKey = sshKey.value("privateKey").toString(); - auto baseName = QString("id"); + if (!publicKey.isEmpty() && !privateKey.isEmpty()) { + auto baseName = QString("id"); - if (publicKey.startsWith("ssh-ed25519 ")) { - baseName.append("_ed25519"); - } else if (publicKey.startsWith("ssh-rsa ") - || publicKey.startsWith("ssh-sha2-256 ") - || publicKey.startsWith("ssh-sha2-512 ")) { - baseName.append("_rsa"); - } else if (publicKey.startsWith("ecdsa-sha2-nistp256 ") - || publicKey.startsWith("ecdsa-sha2-nistp384 ") - || publicKey.startsWith("ecdsa-sha2-nistp521 ")) { - baseName.append("_ecdsa"); - } else if (publicKey.startsWith("ssh-dss ")) { - baseName.append("_dss"); + if (publicKey.startsWith("ssh-ed25519 ")) { + baseName.append("_ed25519"); + } else if (publicKey.startsWith("ssh-rsa ") + || publicKey.startsWith("ssh-sha2-256 ") + || publicKey.startsWith("ssh-sha2-512 ")) { + baseName.append("_rsa"); + } else if (publicKey.startsWith("ecdsa-sha2-nistp256 ") + || publicKey.startsWith("ecdsa-sha2-nistp384 ") + || publicKey.startsWith("ecdsa-sha2-nistp521 ")) { + baseName.append("_ecdsa"); + } else if (publicKey.startsWith("ssh-dss ")) { + baseName.append("_dss"); + } + + entry->attachments()->set(baseName + ".pub", publicKey.toUtf8()); + entry->attachments()->set(baseName, privateKey.toUtf8()); } - - entry->attachments()->set(baseName + ".pub", sshKey.value("publicKey").toString().toUtf8()); - entry->attachments()->set(baseName, sshKey.value("privateKey").toString().toUtf8()); } }