1 use super::PublicKeyComponents; 2 3 /// RSA key pair components. 4 #[derive(Clone, Copy)] 5 pub struct KeyPairComponents<Public, Private = Public> { 6 /// The public key components. 7 pub public_key: PublicKeyComponents<Public>, 8 9 /// The private exponent. 10 pub d: Private, 11 12 /// The first prime factor of `d`. 13 pub p: Private, 14 15 /// The second prime factor of `d`. 16 pub q: Private, 17 18 /// `p`'s public Chinese Remainder Theorem exponent. 19 pub dP: Private, 20 21 /// `q`'s public Chinese Remainder Theorem exponent. 22 pub dQ: Private, 23 24 /// `q**-1 mod p`. 25 pub qInv: Private, 26 } 27 28 impl<Public, Private> core::fmt::Debug for KeyPairComponents<Public, Private> 29 where 30 PublicKeyComponents<Public>: core::fmt::Debug, 31 { fmt(&self, f: &mut core::fmt::Formatter<'_>) -> Result<(), core::fmt::Error>32 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> Result<(), core::fmt::Error> { 33 // Non-public components are intentionally skipped 34 f.debug_struct("KeyPairComponents") 35 .field("public_key", &self.public_key) 36 .finish() 37 } 38 } 39