cryptohelpers/rsa/
components.rs1use openssl::{
3 bn::BigNum,
4};
5pub trait HasComponents
6{
7 fn raw(&self) -> &[u8];
8}
9
10pub trait HasPublicComponents: HasComponents
11{
12 fn e(&self) -> &[u8];
13 fn n(&self) -> &[u8];
14
15 #[inline] fn num_n(&self) -> BigNum
20 {
21 BigNum::from_slice(self.n()).unwrap() }
23
24 #[inline] fn num_e(&self) -> BigNum
29 {
30 BigNum::from_slice(self.e()).unwrap()
31 }
32}
33
34pub trait HasPrivateComponents: HasPublicComponents
35{
36 fn d(&self) -> &[u8];
37 fn p(&self) -> &[u8];
38 fn q(&self) -> &[u8];
39 fn dmp1(&self) -> &[u8];
40 fn dmq1(&self) -> &[u8];
41 fn iqmp(&self) -> &[u8];
42
43 #[inline] fn num_d(&self) -> BigNum
44 {
45 BigNum::from_slice(self.d()).unwrap()
46 }
47 #[inline] fn num_p(&self) -> BigNum
48 {
49 BigNum::from_slice(self.p()).unwrap()
50 }
51 #[inline] fn num_q(&self) -> BigNum
52 {
53 BigNum::from_slice(self.q()).unwrap()
54 }
55 #[inline] fn num_dmp1(&self) -> BigNum
56 {
57 BigNum::from_slice(self.dmp1()).unwrap()
58 }
59 #[inline] fn num_dmq1(&self) -> BigNum
60 {
61 BigNum::from_slice(self.dmq1()).unwrap()
62 }
63 #[inline] fn num_iqmp(&self) -> BigNum
64 {
65 BigNum::from_slice(self.iqmp()).unwrap()
66 }
67}