From 9066931701c8dcd8807508ef1e06a12a7e50c5d2 Mon Sep 17 00:00:00 2001 From: Dmitry Baryshkov Date: Sat, 8 Oct 2022 22:01:19 +0300 Subject: [PATCH] RSA: implement EncodePublicKey for VerifyingKeys (#207) Implement key -> der conversion for public keys. Signed-off-by: Dmitry Baryshkov --- src/pkcs1v15.rs | 11 ++++++++++- src/pss.rs | 10 ++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/pkcs1v15.rs b/src/pkcs1v15.rs index a1cad1d..dc9a94d 100644 --- a/src/pkcs1v15.rs +++ b/src/pkcs1v15.rs @@ -4,7 +4,7 @@ use core::fmt::{Debug, Display, Formatter, LowerHex, UpperHex}; use core::marker::PhantomData; use core::ops::Deref; use digest::Digest; -use pkcs8::AssociatedOid; +use pkcs8::{AssociatedOid, Document, EncodePublicKey}; use rand_core::{CryptoRng, RngCore}; #[cfg(feature = "hazmat")] use signature::hazmat::{PrehashSigner, PrehashVerifier}; @@ -574,6 +574,15 @@ where } } +impl EncodePublicKey for VerifyingKey +where + D: Digest, +{ + fn to_public_key_der(&self) -> pkcs8::spki::Result { + self.inner.to_public_key_der() + } +} + #[cfg(test)] mod tests { use super::*; diff --git a/src/pss.rs b/src/pss.rs index 55eaeee..6970441 100644 --- a/src/pss.rs +++ b/src/pss.rs @@ -5,6 +5,7 @@ use core::fmt::{Debug, Display, Formatter, LowerHex, UpperHex}; use core::marker::PhantomData; use core::ops::Deref; use digest::{Digest, DynDigest, FixedOutputReset}; +use pkcs8::{Document, EncodePublicKey}; use rand_core::{CryptoRng, RngCore}; #[cfg(feature = "hazmat")] use signature::hazmat::{PrehashVerifier, RandomizedPrehashSigner}; @@ -874,6 +875,15 @@ where } } +impl EncodePublicKey for VerifyingKey +where + D: Digest, +{ + fn to_public_key_der(&self) -> pkcs8::spki::Result { + self.inner.to_public_key_der() + } +} + #[cfg(test)] mod test { use crate::pss::{BlindedSigningKey, SigningKey, VerifyingKey};