signstar_crypto/key/import/
nethsm.rs

1//! Implementations specific to a NetHSM backend.
2
3use base64ct::{Base64, Encoding};
4use nethsm_sdk_rs::models::KeyPrivateData;
5
6use crate::key::import::{PrivateKeyData, PrivateKeyImport};
7
8impl From<PrivateKeyImport> for KeyPrivateData {
9    fn from(value: PrivateKeyImport) -> Self {
10        match value.key_data {
11            PrivateKeyData::Rsa {
12                prime_p,
13                prime_q,
14                public_exponent,
15            } => KeyPrivateData {
16                prime_p: Some(Base64::encode_string(&prime_p)),
17                prime_q: Some(Base64::encode_string(&prime_q)),
18                public_exponent: Some(Base64::encode_string(&public_exponent)),
19                data: None,
20            },
21            PrivateKeyData::EcP256(data)
22            | PrivateKeyData::EcP384(data)
23            | PrivateKeyData::EcP521(data)
24            | PrivateKeyData::Curve25519(data) => KeyPrivateData {
25                prime_p: None,
26                prime_q: None,
27                public_exponent: None,
28                data: Some(Base64::encode_string(&data)),
29            },
30        }
31    }
32}