diff --git a/src/pkcs1v15/decrypting_key.rs b/src/pkcs1v15/decrypting_key.rs index 0bd6dc89..32982f6c 100644 --- a/src/pkcs1v15/decrypting_key.rs +++ b/src/pkcs1v15/decrypting_key.rs @@ -4,6 +4,8 @@ use crate::{ traits::{Decryptor, EncryptingKeypair, RandomizedDecryptor}, Result, RsaPrivateKey, }; +#[cfg(feature = "serde")] +use serde::{Deserialize, Serialize}; use alloc::vec::Vec; use rand_core::CryptoRngCore; use zeroize::ZeroizeOnDrop; @@ -12,6 +14,7 @@ use zeroize::ZeroizeOnDrop; /// /// [RFC8017 § 7.2]: https://datatracker.ietf.org/doc/html/rfc8017#section-7.2 #[derive(Debug, Clone)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] pub struct DecryptingKey { inner: RsaPrivateKey, } diff --git a/src/pkcs1v15/encrypting_key.rs b/src/pkcs1v15/encrypting_key.rs index 80db0f60..ccf5eec2 100644 --- a/src/pkcs1v15/encrypting_key.rs +++ b/src/pkcs1v15/encrypting_key.rs @@ -1,12 +1,15 @@ use super::encrypt; use crate::{traits::RandomizedEncryptor, Result, RsaPublicKey}; use alloc::vec::Vec; +#[cfg(feature = "serde")] +use serde::{Deserialize, Serialize}; use rand_core::CryptoRngCore; /// Encryption key for PKCS#1 v1.5 encryption as described in [RFC8017 § 7.2]. /// /// [RFC8017 § 7.2]: https://datatracker.ietf.org/doc/html/rfc8017#section-7.2 #[derive(Debug, Clone)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] pub struct EncryptingKey { pub(super) inner: RsaPublicKey, } diff --git a/src/pkcs1v15/signature.rs b/src/pkcs1v15/signature.rs index a07b6468..afc3043b 100644 --- a/src/pkcs1v15/signature.rs +++ b/src/pkcs1v15/signature.rs @@ -3,6 +3,8 @@ use crate::algorithms::pad::uint_to_be_pad; use ::signature::SignatureEncoding; use alloc::{boxed::Box, string::ToString}; +#[cfg(feature = "serde")] +use serde::{Deserialize, Serialize}; use core::fmt::{Debug, Display, Formatter, LowerHex, UpperHex}; use num_bigint::BigUint; use spki::{ @@ -14,6 +16,7 @@ use spki::{ /// /// [RFC8017 § 8.2]: https://datatracker.ietf.org/doc/html/rfc8017#section-8.2 #[derive(Clone, PartialEq, Eq)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] pub struct Signature { pub(super) inner: BigUint, pub(super) len: usize, diff --git a/src/pkcs1v15/signing_key.rs b/src/pkcs1v15/signing_key.rs index 24754589..232c99f9 100644 --- a/src/pkcs1v15/signing_key.rs +++ b/src/pkcs1v15/signing_key.rs @@ -3,6 +3,8 @@ use crate::{dummy_rng::DummyRng, Result, RsaPrivateKey}; use alloc::vec::Vec; use core::marker::PhantomData; use digest::Digest; +#[cfg(feature = "serde")] +use serde::{Deserialize, Serialize}; use pkcs8::{ spki::{ der::AnyRef, AlgorithmIdentifierRef, AssociatedAlgorithmIdentifier, @@ -20,6 +22,7 @@ use zeroize::ZeroizeOnDrop; /// /// [RFC8017 § 8.2]: https://datatracker.ietf.org/doc/html/rfc8017#section-8.2 #[derive(Debug, Clone)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] pub struct SigningKey where D: Digest, diff --git a/src/pkcs1v15/verifying_key.rs b/src/pkcs1v15/verifying_key.rs index fafb4a4d..9464aef0 100644 --- a/src/pkcs1v15/verifying_key.rs +++ b/src/pkcs1v15/verifying_key.rs @@ -3,6 +3,8 @@ use crate::RsaPublicKey; use alloc::vec::Vec; use core::marker::PhantomData; use digest::Digest; +#[cfg(feature = "serde")] +use serde::{Deserialize, Serialize}; use pkcs8::{ spki::{ der::AnyRef, AlgorithmIdentifierRef, AssociatedAlgorithmIdentifier, @@ -16,6 +18,7 @@ use signature::{hazmat::PrehashVerifier, DigestVerifier, Verifier}; /// /// [RFC8017 § 8.2]: https://datatracker.ietf.org/doc/html/rfc8017#section-8.2 #[derive(Debug)] +#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))] pub struct VerifyingKey where D: Digest,