Skip to content

Commit 4451cca

Browse files
committed
Tweak naming slightly.
1 parent b1bbf60 commit 4451cca

File tree

2 files changed

+28
-24
lines changed

2 files changed

+28
-24
lines changed

crates/bitwarden-exporters/src/cxf/ssh.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use bitwarden_ssh::{error::SshKeyImportError, import::import_der_key};
1+
use bitwarden_ssh::{error::SshKeyImportError, import::import_pkcs8_der};
22
use bitwarden_vault::FieldType;
33
use credential_exchange_format::SshKeyCredential;
44

@@ -10,7 +10,7 @@ pub(super) fn to_ssh(
1010
) -> Result<(SshKey, Vec<Field>), SshKeyImportError> {
1111
// Convert to OpenSSH format
1212
let encoded_key: Vec<u8> = credential.private_key.as_ref().into();
13-
let encoded_key = import_der_key(&encoded_key)?;
13+
let encoded_key = import_pkcs8_der(&encoded_key)?;
1414

1515
let ssh = SshKey {
1616
private_key: encoded_key.private_key,
@@ -57,7 +57,7 @@ mod tests {
5757
fn test_to_ssh() {
5858
let credential = SshKeyCredential {
5959
key_type: "ssh-ed25519".into(),
60-
private_key: "MC4CAQAwBQYDK2VwBCIEID-U9VakauO4Fsv4b_znpDHcdYg74U68siZjnWLPn7Q1"
60+
private_key: "MIIG_QIBADANBgkqhkiG9w0BAQEFAASCBucwggbjAgEAAoIBgQCn4-QiJojZ9mgc9KYJIvDWGaz4qFhf0CButg6L8zEoHKwuiN-mqcEciCCOa9BNiJmm8NTTehZvrrglGG59zIbqYtDAHjVn-vtb49xPzIv-M651Yqj08lIbR9tEIHKCq7aH8GlDm8NgG9EzJGjlL7okQym4TH1MHl-s4mUyr_qb2unlZBDixAQsphU8iCLftukWCIkmQg4CSj1Gh3WbBlZ-EX5eW0EXuAw4XsSbBTWV9CHRowVIpYqPvEYSpHsoCjEcd988p19hpiGknA0J4z7JfUlNgyT_1chb8GCTDT-2DCBRApbsIg6TOBVS-PR6emAQ3eZzUW0-3_oRM4ip0ujltQy8uU6gvYIAqx5wXGMThVpZcUgahKiSsVo_s4b84iMe4DG3W8jz4qi6yyNv0VedEzPUZ1lXd1GJFoy9uKNuSTe-1ksicAcluZN6LuNsPHcPxFCzOcmoNnVXEKAXInt-ys__5CDVasroZSAHZnDjUD4oNsLI3VIOnGxgXrkwSH0CAwEAAQKCAYAA2SDMf7OBHw1OGM9OQa1ZS4u-ktfQHhn31-FxbrhWGp-lDt8gYABVf6Y4dKN6rMtn7D9gVSAlZCAn3Hx8aWAvcXHaspxe9YXiZDTh-Kd8EIXxBQn-TiDA5LH0dryABqmMp20vYKtR7OS3lIIXfFBSrBMwdunKzLwmKwZLWq0SWf6vVbwpxRyR9CyByodF6DjmZK3QB2qQ3jqlL1HWXL0VnyArY7HLvUvfLLK4vMPqnsSH-FdHvhcEhwqMlWT44g-fhqWtCJNnjDgLK3FPbI8Pz9TF8dWJvOmp5Q6iSBua1e9x2LizVuNSqiFc7ZTLeoG4nDj7T2BtqB0E1rNUDEN1aBo-UZmHJK7LrzfW_B-ssi2WwIpfxYa1lO6HFod5_YQiXV1GunyH1chCsbvOFtXvAHASO4HTKlJNbWhRF1GXqnKpAaHDPCVuwp3eq6Yf0oLbXrL3KFZ3jwWiWbpQXRVvpqzaJwZn3CN1yQgYS9j17a9wrPky-BoJxXjZ_oImWLECgcEA0lkLwiHvmTYFTCC7PN938Agk9_NQs5PQ18MRn9OJmyfSpYqf_gNp-Md7xUgtF_MTif7uelp2J7DYf6fj9EYf9g4EuW-SQgFP4pfiJn1-zGFeTQq1ISvwjsA4E8ZSt-GIumjZTg6YiL1_A79u4wm24swt7iqnVViOPtPGOM34S1tAamjZzq2eZDmAF6pAfmuTMdinCMR1E1kNJYbxeqLiqQCXuwBBnHOOOJofN3AkvzjRUBB9udvniqYxH3PQcxPxAoHBAMxT5KwBhZhnJedYN87Kkcpl7xdMkpU8b-aXeZoNykCeoC-wgIQexnSWmFk4HPkCNxvCWlbkOT1MHrTAKFnaOww23Ob-Vi6A9n0rozo9vtoJig114GB0gUqEmtfLhO1P5AE8yzogE-ILHyp0BqXt8vGIfzpDnCkN-GKl8gOOMPrR4NAcLO-Rshc5nLs7BGB4SEi126Y6mSfp85m0--1QhWMz9HzqJEHCWKVcZYdCdEONP9js04EUnK33KtlJIWzZTQKBwAT0pBpGwmZRp35Lpx2gBitZhcVxrg0NBnaO2fNyAGPvZD8SLQLHAdAiov_a23Uc_PDbWLL5Pp9gwzj-s5glrssVOXdE8aUscr1b5rARdNNL1_Tos6u8ZUZ3sNqGaZx7a8U4gyYboexWyo9EC1C-AdkGBm7-AkM4euFwC9N6xsa_t5zKK5d676hc0m-8SxivYCBkgkrqlfeGuZCQxU-mVsC0it6U-va8ojUjLGkZ80OuCwBf4xZl3-acU7vx9o8_gQKBwB7BrhU6MWrsc-cr_1KQaXum9mNyckomi82RFYvb8Yrilcg38FBy9XqNRKeBa9MLw1HZYpHbzsXsVF7u4eQMloDTLVNUC5L6dKAI1owoyTa24uH90WWTg_a8mTZMe1jhgrew-AJq27NV6z4PswR9GenDmyshDDudz7rBsflZCQRoXUfWRelV7BHU6UPBsXn4ASF4xnRyM6WvcKy9coKZcUqqgm3fLM_9OizCCMJgfXHBrE-x7nBqst746qlEedSRrQKBwQCVYwwKCHNlZxl0_NMkDJ-hp7_InHF6mz_3VO58iCb19TLDVUC2dDGPXNYwWTT9PclefwV5HNBHcAfTzgB4dpQyNiDyV914HL7DFEGduoPnwBYjeFre54v0YjjnskjJO7myircdbdX__i-7LMUw5aZZXCC8a5BD_rdV6IKJWJG5QBXbe5fVf1XwOjBTzlhIPIqhNFfSu-mFikp5BRwHGBqsKMju6inYmW6YADeY_SvOQjDEB37RqGZxqyIx8V2ZYwU"
6161
.try_into()
6262
.unwrap(),
6363
key_comment: Some("Work SSH Key".into()),

crates/bitwarden-ssh/src/import.rs

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,31 @@ pub fn import_key(
3434

3535
/// Import a DER encoded private key, and returns a decoded [SshKeyView]. This is primarily used for
3636
/// importing SSH keys from other Credential Managers through Credential Exchange.
37-
pub fn import_der_key(encoded_key: &[u8]) -> Result<SshKeyView, SshKeyImportError> {
37+
pub fn import_pkcs8_der(encoded_key: &[u8]) -> Result<SshKeyView, SshKeyImportError> {
38+
import_der_key(encoded_key)
39+
}
40+
41+
fn import_pkcs8_key(
42+
encoded_key: String,
43+
password: Option<String>,
44+
) -> Result<SshKeyView, SshKeyImportError> {
45+
let doc = if let Some(password) = password {
46+
SecretDocument::from_pkcs8_encrypted_pem(&encoded_key, password.as_bytes()).map_err(
47+
|err| match err {
48+
pkcs8::Error::EncryptedPrivateKey(pkcs5::Error::DecryptFailed) => {
49+
SshKeyImportError::WrongPassword
50+
}
51+
_ => SshKeyImportError::ParsingError,
52+
},
53+
)?
54+
} else {
55+
SecretDocument::from_pkcs8_pem(&encoded_key).map_err(|_| SshKeyImportError::ParsingError)?
56+
};
57+
58+
import_der_key(doc.as_bytes())
59+
}
60+
61+
fn import_der_key(encoded_key: &[u8]) -> Result<SshKeyView, SshKeyImportError> {
3862
let private_key_info =
3963
PrivateKeyInfo::from_der(encoded_key).map_err(|_| SshKeyImportError::ParsingError)?;
4064

@@ -61,26 +85,6 @@ pub fn import_der_key(encoded_key: &[u8]) -> Result<SshKeyView, SshKeyImportErro
6185
ssh_private_key_to_view(private_key).map_err(|_| SshKeyImportError::ParsingError)
6286
}
6387

64-
fn import_pkcs8_key(
65-
encoded_key: String,
66-
password: Option<String>,
67-
) -> Result<SshKeyView, SshKeyImportError> {
68-
let doc = if let Some(password) = password {
69-
SecretDocument::from_pkcs8_encrypted_pem(&encoded_key, password.as_bytes()).map_err(
70-
|err| match err {
71-
pkcs8::Error::EncryptedPrivateKey(pkcs5::Error::DecryptFailed) => {
72-
SshKeyImportError::WrongPassword
73-
}
74-
_ => SshKeyImportError::ParsingError,
75-
},
76-
)?
77-
} else {
78-
SecretDocument::from_pkcs8_pem(&encoded_key).map_err(|_| SshKeyImportError::ParsingError)?
79-
};
80-
81-
import_der_key(doc.as_bytes())
82-
}
83-
8488
fn import_openssh_key(
8589
encoded_key: String,
8690
password: Option<String>,

0 commit comments

Comments
 (0)