Clean up RSA and DSA accessors

This commit is contained in:
Steven Fackler 2016-08-08 19:04:30 -07:00
parent deb94a904b
commit e4b97921a9
2 changed files with 74 additions and 58 deletions

View File

@ -145,7 +145,7 @@ impl DSA {
}
pub fn size(&self) -> Option<u32> {
if self.has_q() {
if self.q().is_some() {
unsafe { Some(ffi::DSA_size(self.0) as u32) }
} else {
None
@ -189,31 +189,37 @@ impl DSA {
self.0
}
pub fn p<'a>(&'a self) -> BigNumRef<'a> {
assert!(self.has_p());
unsafe { BigNumRef::from_handle((*self.0).p) }
pub fn p<'a>(&'a self) -> Option<BigNumRef<'a>> {
unsafe {
let p = (*self.0).p;
if p.is_null() {
None
} else {
Some(BigNumRef::from_handle((*self.0).p))
}
}
}
pub fn has_p(&self) -> bool {
unsafe { !(*self.0).p.is_null() }
pub fn q<'a>(&'a self) -> Option<BigNumRef<'a>> {
unsafe {
let q = (*self.0).q;
if q.is_null() {
None
} else {
Some(BigNumRef::from_handle((*self.0).q))
}
}
}
pub fn q<'a>(&'a self) -> BigNumRef<'a> {
assert!(self.has_q());
unsafe { BigNumRef::from_handle((*self.0).q) }
pub fn g<'a>(&'a self) -> Option<BigNumRef<'a>> {
unsafe {
let g = (*self.0).g;
if g.is_null() {
None
} else {
Some(BigNumRef::from_handle((*self.0).g))
}
pub fn has_q(&self) -> bool {
unsafe { !(*self.0).q.is_null() }
}
pub fn g<'a>(&'a self) -> BigNumRef<'a> {
assert!(self.has_g());
unsafe { BigNumRef::from_handle((*self.0).g) }
}
pub fn has_g(&self) -> bool {
unsafe { !(*self.0).q.is_null() }
}
pub fn has_public_key(&self) -> bool {

View File

@ -144,7 +144,7 @@ impl RSA {
}
pub fn size(&self) -> Option<u32> {
if self.has_n() {
if self.n().is_some() {
unsafe { Some(ffi::RSA_size(self.0) as u32) }
} else {
None
@ -184,49 +184,59 @@ impl RSA {
self.0
}
pub fn n<'a>(&'a self) -> BigNumRef<'a> {
assert!(self.has_n());
unsafe { BigNumRef::from_handle((*self.0).n) }
pub fn n<'a>(&'a self) -> Option<BigNumRef<'a>> {
unsafe {
let n = (*self.0).n;
if n.is_null() {
None
} else {
Some(BigNumRef::from_handle(n))
}
}
}
pub fn has_n(&self) -> bool {
unsafe { !(*self.0).n.is_null() }
pub fn d<'a>(&self) -> Option<BigNumRef<'a>> {
unsafe {
let d = (*self.0).d;
if d.is_null() {
None
} else {
Some(BigNumRef::from_handle(d))
}
}
}
pub fn d<'a>(&self) -> BigNumRef<'a> {
assert!(self.has_d());
unsafe { BigNumRef::from_handle((*self.0).d) }
pub fn e<'a>(&'a self) -> Option<BigNumRef<'a>> {
unsafe {
let e = (*self.0).e;
if e.is_null() {
None
} else {
Some(BigNumRef::from_handle(e))
}
}
}
pub fn has_d(&self) -> bool {
unsafe { !(*self.0).d.is_null() }
pub fn p<'a>(&'a self) -> Option<BigNumRef<'a>> {
unsafe {
let p = (*self.0).p;
if p.is_null() {
None
} else {
Some(BigNumRef::from_handle(p))
}
}
}
pub fn e<'a>(&'a self) -> BigNumRef<'a> {
assert!(self.has_e());
unsafe { BigNumRef::from_handle((*self.0).e) }
pub fn q<'a>(&'a self) -> Option<BigNumRef<'a>> {
unsafe {
let q = (*self.0).q;
if q.is_null() {
None
} else {
Some(BigNumRef::from_handle(q))
}
pub fn has_e(&self) -> bool {
unsafe { !(*self.0).e.is_null() }
}
pub fn p<'a>(&'a self) -> BigNumRef<'a> {
assert!(self.has_p());
unsafe { BigNumRef::from_handle((*self.0).p) }
}
pub fn has_p(&self) -> bool {
unsafe { !(*self.0).p.is_null() }
}
pub fn q<'a>(&'a self) -> BigNumRef<'a> {
assert!(self.has_q());
unsafe { BigNumRef::from_handle((*self.0).q) }
}
pub fn has_q(&self) -> bool {
unsafe { !(*self.0).q.is_null() }
}
}