@@ -68,6 +68,7 @@ use crate::errors::*;
68
68
use self :: {
69
69
ecdsa:: { ec:: EcdsaSigner , ECDSAKeys } ,
70
70
ed25519:: { Ed25519Keys , Ed25519Signer } ,
71
+ rsa:: { keypair:: RSAKeys , RSASigner } ,
71
72
} ;
72
73
73
74
use super :: { verification_key:: CosignVerificationKey , SigningScheme } ;
@@ -89,6 +90,9 @@ pub const SIGSTORE_PRIVATE_KEY_PEM_LABEL: &str = "ENCRYPTED SIGSTORE PRIVATE KEY
89
90
/// The label for pem of private keys.
90
91
pub const PRIVATE_KEY_PEM_LABEL : & str = "PRIVATE KEY" ;
91
92
93
+ /// The label for pem of RSA private keys.
94
+ pub const RSA_PRIVATE_KEY_PEM_LABEL : & str = "RSA PRIVATE KEY" ;
95
+
92
96
/// Every signing scheme must implement this interface.
93
97
/// All private export methods using the wrapper `Zeroizing`.
94
98
/// It will tell the compiler when the
@@ -125,7 +129,7 @@ pub trait KeyPair {
125
129
pub enum SigStoreKeyPair {
126
130
ECDSA ( ECDSAKeys ) ,
127
131
ED25519 ( Ed25519Keys ) ,
128
- // RSA,
132
+ RSA ( RSAKeys ) ,
129
133
}
130
134
131
135
/// This macro helps to reduce duplicated code.
@@ -147,6 +151,7 @@ macro_rules! sigstore_keypair_code {
147
151
match $obj {
148
152
SigStoreKeyPair :: ECDSA ( keys) => keys. as_inner( ) . $func( $( $args, ) * ) ,
149
153
SigStoreKeyPair :: ED25519 ( keys) => keys. $func( $( $args, ) * ) ,
154
+ SigStoreKeyPair :: RSA ( keys) => keys. $func( $( $args, ) * ) ,
150
155
}
151
156
}
152
157
}
@@ -217,6 +222,12 @@ pub trait Signer {
217
222
218
223
#[ allow( non_camel_case_types) ]
219
224
pub enum SigStoreSigner {
225
+ RSA_PSS_SHA256 ( RSASigner ) ,
226
+ RSA_PSS_SHA384 ( RSASigner ) ,
227
+ RSA_PSS_SHA512 ( RSASigner ) ,
228
+ RSA_PKCS1_SHA256 ( RSASigner ) ,
229
+ RSA_PKCS1_SHA384 ( RSASigner ) ,
230
+ RSA_PKCS1_SHA512 ( RSASigner ) ,
220
231
ECDSA_P256_SHA256_ASN1 ( EcdsaSigner < p256:: NistP256 , sha2:: Sha256 > ) ,
221
232
ECDSA_P384_SHA384_ASN1 ( EcdsaSigner < p384:: NistP384 , sha2:: Sha384 > ) ,
222
233
ED25519 ( Ed25519Signer ) ,
@@ -230,6 +241,12 @@ impl SigStoreSigner {
230
241
SigStoreSigner :: ECDSA_P256_SHA256_ASN1 ( inner) => inner,
231
242
SigStoreSigner :: ECDSA_P384_SHA384_ASN1 ( inner) => inner,
232
243
SigStoreSigner :: ED25519 ( inner) => inner,
244
+ SigStoreSigner :: RSA_PSS_SHA256 ( inner) => inner,
245
+ SigStoreSigner :: RSA_PSS_SHA384 ( inner) => inner,
246
+ SigStoreSigner :: RSA_PSS_SHA512 ( inner) => inner,
247
+ SigStoreSigner :: RSA_PKCS1_SHA256 ( inner) => inner,
248
+ SigStoreSigner :: RSA_PKCS1_SHA384 ( inner) => inner,
249
+ SigStoreSigner :: RSA_PKCS1_SHA512 ( inner) => inner,
233
250
}
234
251
}
235
252
@@ -244,6 +261,12 @@ impl SigStoreSigner {
244
261
SigStoreSigner :: ECDSA_P256_SHA256_ASN1 ( _) => SigningScheme :: ECDSA_P256_SHA256_ASN1 ,
245
262
SigStoreSigner :: ECDSA_P384_SHA384_ASN1 ( _) => SigningScheme :: ECDSA_P384_SHA384_ASN1 ,
246
263
SigStoreSigner :: ED25519 ( _) => SigningScheme :: ED25519 ,
264
+ SigStoreSigner :: RSA_PSS_SHA256 ( _) => SigningScheme :: RSA_PSS_SHA256 ( 0 ) ,
265
+ SigStoreSigner :: RSA_PSS_SHA384 ( _) => SigningScheme :: RSA_PSS_SHA384 ( 0 ) ,
266
+ SigStoreSigner :: RSA_PSS_SHA512 ( _) => SigningScheme :: RSA_PSS_SHA512 ( 0 ) ,
267
+ SigStoreSigner :: RSA_PKCS1_SHA256 ( _) => SigningScheme :: RSA_PKCS1_SHA256 ( 0 ) ,
268
+ SigStoreSigner :: RSA_PKCS1_SHA384 ( _) => SigningScheme :: RSA_PKCS1_SHA384 ( 0 ) ,
269
+ SigStoreSigner :: RSA_PKCS1_SHA512 ( _) => SigningScheme :: RSA_PKCS1_SHA512 ( 0 ) ,
247
270
} ;
248
271
self . as_inner ( )
249
272
. key_pair ( )
@@ -262,6 +285,18 @@ impl SigStoreSigner {
262
285
SigStoreSigner :: ED25519 ( inner) => {
263
286
SigStoreKeyPair :: ED25519 ( Ed25519Keys :: from_ed25519key ( inner. ed25519_keys ( ) ) ?)
264
287
}
288
+ SigStoreSigner :: RSA_PSS_SHA256 ( inner) => SigStoreKeyPair :: RSA ( inner. rsa_keys ( ) . clone ( ) ) ,
289
+ SigStoreSigner :: RSA_PSS_SHA384 ( inner) => SigStoreKeyPair :: RSA ( inner. rsa_keys ( ) . clone ( ) ) ,
290
+ SigStoreSigner :: RSA_PSS_SHA512 ( inner) => SigStoreKeyPair :: RSA ( inner. rsa_keys ( ) . clone ( ) ) ,
291
+ SigStoreSigner :: RSA_PKCS1_SHA256 ( inner) => {
292
+ SigStoreKeyPair :: RSA ( inner. rsa_keys ( ) . clone ( ) )
293
+ }
294
+ SigStoreSigner :: RSA_PKCS1_SHA384 ( inner) => {
295
+ SigStoreKeyPair :: RSA ( inner. rsa_keys ( ) . clone ( ) )
296
+ }
297
+ SigStoreSigner :: RSA_PKCS1_SHA512 ( inner) => {
298
+ SigStoreKeyPair :: RSA ( inner. rsa_keys ( ) . clone ( ) )
299
+ }
265
300
} )
266
301
}
267
302
}
0 commit comments