signstar_crypto/key/import/
nethsm.rs1use base64ct::{Base64, Encoding};
4use nethsm_sdk_rs::models::KeyPrivateData;
5
6use crate::key::import::{PrivateKeyData, PrivateKeyImport};
7
8impl TryFrom<PrivateKeyImport> for KeyPrivateData {
9 type Error = crate::Error;
10
11 fn try_from(value: PrivateKeyImport) -> Result<Self, Self::Error> {
12 Ok(match value.key_data {
13 PrivateKeyData::Rsa {
14 prime_p,
15 prime_q,
16 public_exponent,
17 } =>
18 {
23 let mut key_private_data = KeyPrivateData::default();
24 key_private_data.prime_p = Some(Base64::encode_string(&prime_p));
25 key_private_data.prime_q = Some(Base64::encode_string(&prime_q));
26 key_private_data.public_exponent = Some(Base64::encode_string(&public_exponent));
27 key_private_data.data = None;
28 key_private_data
29 }
30 PrivateKeyData::Curve25519(data)
31 | PrivateKeyData::EcBp256(data)
32 | PrivateKeyData::EcBp384(data)
33 | PrivateKeyData::EcK256(data)
34 | PrivateKeyData::EcP224(data)
35 | PrivateKeyData::EcP256(data)
36 | PrivateKeyData::EcP384(data)
37 | PrivateKeyData::EcP521(data) =>
38 {
43 let mut key_private_data = KeyPrivateData::default();
44 key_private_data.prime_q = None;
45 key_private_data.prime_q = None;
46 key_private_data.public_exponent = None;
47 key_private_data.data = Some(Base64::encode_string(&data));
48 key_private_data
49 }
50 })
51 }
52}