From 4104f31c4a4bf4354ef0f1448474d80dca0de454 Mon Sep 17 00:00:00 2001 From: Lukas Niederbremer Date: Thu, 5 Mar 2026 01:18:16 +0100 Subject: [PATCH] Add SSH Key support in Bitwarden import Fixes #12778 --- src/format/BitwardenReader.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/format/BitwardenReader.cpp b/src/format/BitwardenReader.cpp index 43b2a34f3..0573e627c 100644 --- a/src/format/BitwardenReader.cpp +++ b/src/format/BitwardenReader.cpp @@ -257,6 +257,34 @@ namespace } } + // Parse SSH-Key entry, if present + if (itemMap.contains("sshKey")) { + const auto sshKey = itemMap.value("sshKey").toMap(); + + if (sshKey.contains("publicKey") && sshKey.contains("privateKey")) { + const auto publicKey = sshKey.value("publicKey").toString(); + + 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"); + } + + entry->attachments()->set(baseName + ".pub", sshKey.value("publicKey").toString().toUtf8()); + entry->attachments()->set(baseName, sshKey.value("privateKey").toString().toUtf8()); + } + } + entry->setEmitModified(true); return entry.take(); }