signstar_crypto/key/base/
nethsm.rs1use nethsm_sdk_rs::models::SignMode;
4
5use crate::key::base::{DecryptMode, EncryptMode, KeyMechanism, KeyType, SignatureType};
6
7impl From<KeyType> for nethsm_sdk_rs::models::KeyType {
8 fn from(value: KeyType) -> Self {
9 match value {
10 KeyType::Curve25519 => Self::Curve25519,
11 KeyType::EcP256 => Self::EcP256,
12 KeyType::EcP384 => Self::EcP384,
13 KeyType::EcP521 => Self::EcP521,
14 KeyType::Generic => Self::Generic,
15 KeyType::Rsa => Self::Rsa,
16 }
17 }
18}
19
20impl TryFrom<nethsm_sdk_rs::models::KeyType> for KeyType {
21 type Error = crate::key::Error;
22 fn try_from(value: nethsm_sdk_rs::models::KeyType) -> Result<Self, Self::Error> {
30 Ok(match value {
31 nethsm_sdk_rs::models::KeyType::Curve25519 => Self::Curve25519,
32 nethsm_sdk_rs::models::KeyType::EcP224 => {
33 unimplemented!(
34 "Elliptic Curve P224 is not implemented and the nethsm-sdk-rs crate will drop it in the future"
35 )
36 }
37 nethsm_sdk_rs::models::KeyType::EcP256 => Self::EcP256,
38 nethsm_sdk_rs::models::KeyType::EcP384 => Self::EcP384,
39 nethsm_sdk_rs::models::KeyType::EcP521 => Self::EcP521,
40 nethsm_sdk_rs::models::KeyType::Generic => Self::Generic,
41 nethsm_sdk_rs::models::KeyType::Rsa => Self::Rsa,
42 })
43 }
44}
45
46impl TryFrom<&nethsm_sdk_rs::models::KeyMechanism> for KeyMechanism {
47 type Error = crate::Error;
48 fn try_from(value: &nethsm_sdk_rs::models::KeyMechanism) -> Result<Self, Self::Error> {
49 Ok(match value {
50 nethsm_sdk_rs::models::KeyMechanism::AesDecryptionCbc => Self::AesDecryptionCbc,
51 nethsm_sdk_rs::models::KeyMechanism::AesEncryptionCbc => Self::AesEncryptionCbc,
52 nethsm_sdk_rs::models::KeyMechanism::EcdsaSignature => Self::EcdsaSignature,
53 nethsm_sdk_rs::models::KeyMechanism::EdDsaSignature => Self::EdDsaSignature,
54 nethsm_sdk_rs::models::KeyMechanism::RsaDecryptionOaepMd5 => Self::RsaDecryptionOaepMd5,
55 nethsm_sdk_rs::models::KeyMechanism::RsaDecryptionOaepSha1 => {
56 Self::RsaDecryptionOaepSha1
57 }
58 nethsm_sdk_rs::models::KeyMechanism::RsaDecryptionOaepSha224 => {
59 Self::RsaDecryptionOaepSha224
60 }
61 nethsm_sdk_rs::models::KeyMechanism::RsaDecryptionOaepSha256 => {
62 Self::RsaDecryptionOaepSha256
63 }
64 nethsm_sdk_rs::models::KeyMechanism::RsaDecryptionOaepSha384 => {
65 Self::RsaDecryptionOaepSha384
66 }
67 nethsm_sdk_rs::models::KeyMechanism::RsaDecryptionOaepSha512 => {
68 Self::RsaDecryptionOaepSha512
69 }
70 nethsm_sdk_rs::models::KeyMechanism::RsaDecryptionPkcs1 => Self::RsaDecryptionPkcs1,
71 nethsm_sdk_rs::models::KeyMechanism::RsaDecryptionRaw => Self::RsaDecryptionRaw,
72 nethsm_sdk_rs::models::KeyMechanism::RsaSignaturePkcs1 => Self::RsaSignaturePkcs1,
73 nethsm_sdk_rs::models::KeyMechanism::RsaSignaturePssSha1 => Self::RsaSignaturePssSha1,
74 nethsm_sdk_rs::models::KeyMechanism::RsaSignaturePssSha224 => {
75 Self::RsaSignaturePssSha224
76 }
77 nethsm_sdk_rs::models::KeyMechanism::RsaSignaturePssSha256 => {
78 Self::RsaSignaturePssSha256
79 }
80 nethsm_sdk_rs::models::KeyMechanism::RsaSignaturePssSha384 => {
81 Self::RsaSignaturePssSha384
82 }
83 nethsm_sdk_rs::models::KeyMechanism::RsaSignaturePssSha512 => {
84 Self::RsaSignaturePssSha512
85 }
86 nethsm_sdk_rs::models::KeyMechanism::RsaSignaturePssMd5 => {
87 return Err(crate::Error::UnsupportedNetHsmKeyMechanism(*value));
88 }
89 })
90 }
91}
92
93impl From<KeyMechanism> for nethsm_sdk_rs::models::KeyMechanism {
94 fn from(value: KeyMechanism) -> Self {
95 match value {
96 KeyMechanism::AesDecryptionCbc => Self::AesDecryptionCbc,
97 KeyMechanism::AesEncryptionCbc => Self::AesEncryptionCbc,
98 KeyMechanism::EcdsaSignature => Self::EcdsaSignature,
99 KeyMechanism::EdDsaSignature => Self::EdDsaSignature,
100 KeyMechanism::RsaDecryptionOaepMd5 => Self::RsaDecryptionOaepMd5,
101 KeyMechanism::RsaDecryptionOaepSha1 => Self::RsaDecryptionOaepSha1,
102 KeyMechanism::RsaDecryptionOaepSha224 => Self::RsaDecryptionOaepSha224,
103 KeyMechanism::RsaDecryptionOaepSha256 => Self::RsaDecryptionOaepSha256,
104 KeyMechanism::RsaDecryptionOaepSha384 => Self::RsaDecryptionOaepSha384,
105 KeyMechanism::RsaDecryptionOaepSha512 => Self::RsaDecryptionOaepSha512,
106 KeyMechanism::RsaDecryptionPkcs1 => Self::RsaDecryptionPkcs1,
107 KeyMechanism::RsaDecryptionRaw => Self::RsaDecryptionRaw,
108 KeyMechanism::RsaSignaturePkcs1 => Self::RsaSignaturePkcs1,
109 KeyMechanism::RsaSignaturePssSha1 => Self::RsaSignaturePssSha1,
110 KeyMechanism::RsaSignaturePssSha224 => Self::RsaSignaturePssSha224,
111 KeyMechanism::RsaSignaturePssSha256 => Self::RsaSignaturePssSha256,
112 KeyMechanism::RsaSignaturePssSha384 => Self::RsaSignaturePssSha384,
113 KeyMechanism::RsaSignaturePssSha512 => Self::RsaSignaturePssSha512,
114 }
115 }
116}
117
118impl From<SignatureType> for SignMode {
119 fn from(value: SignatureType) -> Self {
126 match value {
127 SignatureType::Pkcs1 => SignMode::Pkcs1,
128 SignatureType::PssSha1 => SignMode::PssSha1,
129 SignatureType::PssSha224 => SignMode::PssSha224,
130 SignatureType::PssSha256 => SignMode::PssSha256,
131 SignatureType::PssSha384 => SignMode::PssSha384,
132 SignatureType::PssSha512 => SignMode::PssSha512,
133 SignatureType::EdDsa => SignMode::EdDsa,
134 SignatureType::EcdsaP256 | SignatureType::EcdsaP384 | SignatureType::EcdsaP521 => {
135 SignMode::Ecdsa
136 }
137 }
138 }
139}
140
141impl From<EncryptMode> for nethsm_sdk_rs::models::EncryptMode {
142 fn from(value: EncryptMode) -> Self {
143 match value {
144 EncryptMode::AesCbc => Self::AesCbc,
145 }
146 }
147}
148
149impl From<DecryptMode> for nethsm_sdk_rs::models::DecryptMode {
150 fn from(value: DecryptMode) -> Self {
151 match value {
152 DecryptMode::AesCbc => Self::AesCbc,
153 DecryptMode::OaepMd5 => Self::OaepMd5,
154 DecryptMode::OaepSha1 => Self::OaepSha1,
155 DecryptMode::OaepSha224 => Self::OaepSha224,
156 DecryptMode::OaepSha256 => Self::OaepSha256,
157 DecryptMode::OaepSha384 => Self::OaepSha384,
158 DecryptMode::OaepSha512 => Self::OaepSha512,
159 DecryptMode::Pkcs1 => Self::Pkcs1,
160 DecryptMode::Raw => Self::Raw,
161 }
162 }
163}