diff --git a/src/pkcs1v15/signature.rs b/src/pkcs1v15/signature.rs index ea57b34..f5dcaa9 100644 --- a/src/pkcs1v15/signature.rs +++ b/src/pkcs1v15/signature.rs @@ -4,6 +4,7 @@ pub use ::signature::{ SignatureEncoding, Signer, Verifier, }; +use crate::algorithms::pad::uint_to_be_pad; use alloc::{boxed::Box, string::ToString}; use core::fmt::{Debug, Display, Formatter, LowerHex, UpperHex}; use num_bigint::BigUint; @@ -34,7 +35,9 @@ impl TryFrom<&[u8]> for Signature { impl From for Box<[u8]> { fn from(signature: Signature) -> Box<[u8]> { - signature.inner.to_bytes_be().into_boxed_slice() + uint_to_be_pad(signature.inner, signature.len) + .expect("RSASSA-PKCS1-v1_5 length invariants should've been enforced") + .into_boxed_slice() } } diff --git a/src/pss/signature.rs b/src/pss/signature.rs index 0718d33..c65d0e7 100644 --- a/src/pss/signature.rs +++ b/src/pss/signature.rs @@ -4,6 +4,7 @@ pub use ::signature::{ SignatureEncoding, Signer, Verifier, }; +use crate::algorithms::pad::uint_to_be_pad; use alloc::{boxed::Box, string::ToString}; use core::fmt::{Debug, Display, Formatter, LowerHex, UpperHex}; use num_bigint::BigUint; @@ -34,7 +35,9 @@ impl TryFrom<&[u8]> for Signature { impl From for Box<[u8]> { fn from(signature: Signature) -> Box<[u8]> { - signature.inner.to_bytes_be().into_boxed_slice() + uint_to_be_pad(signature.inner, signature.len) + .expect("RSASSA-PKCS1-v1_5 length invariants should've been enforced") + .into_boxed_slice() } }