Simplify protocol based on the semantics defined by openssl.

This commit is contained in:
Brian Chin 2017-01-30 10:29:06 -08:00
parent 20eed1e762
commit e1fc5b2b7e
1 changed files with 12 additions and 7 deletions

View File

@ -109,6 +109,9 @@ impl<'a> Signer<'a> {
EVP_MD_CTX_free(ctx); EVP_MD_CTX_free(ctx);
return Err(ErrorStack::get()); return Err(ErrorStack::get());
} }
assert!(!pctx.is_null());
Ok(Signer { Ok(Signer {
md_ctx: ctx, md_ctx: ctx,
pkey_ctx: pctx, pkey_ctx: pctx,
@ -118,8 +121,8 @@ impl<'a> Signer<'a> {
} }
} }
pub fn pkey_ctx(&mut self) -> Option<&mut PKeyCtxRef> { pub fn pkey_ctx(&mut self) -> &mut PKeyCtxRef {
unsafe { self.pkey_ctx.as_mut().map(|ctx| ::types::OpenSslTypeRef::from_ptr_mut(ctx)) } unsafe { ::types::OpenSslTypeRef::from_ptr_mut(self.pkey_ctx) }
} }
pub fn update(&mut self, buf: &[u8]) -> Result<(), ErrorStack> { pub fn update(&mut self, buf: &[u8]) -> Result<(), ErrorStack> {
@ -185,6 +188,8 @@ impl<'a> Verifier<'a> {
return Err(ErrorStack::get()); return Err(ErrorStack::get());
} }
assert!(!pctx.is_null());
Ok(Verifier { Ok(Verifier {
md_ctx: ctx, md_ctx: ctx,
pkey_ctx: pctx, pkey_ctx: pctx,
@ -194,8 +199,8 @@ impl<'a> Verifier<'a> {
} }
} }
pub fn pkey_ctx(&mut self) -> Option<&mut PKeyCtxRef> { pub fn pkey_ctx(&mut self) -> &mut PKeyCtxRef {
unsafe { self.pkey_ctx.as_mut().map(|ctx| ::types::OpenSslTypeRef::from_ptr_mut(ctx)) } unsafe { ::types::OpenSslTypeRef::from_ptr_mut(self.pkey_ctx) }
} }
pub fn update(&mut self, buf: &[u8]) -> Result<(), ErrorStack> { pub fn update(&mut self, buf: &[u8]) -> Result<(), ErrorStack> {
@ -286,8 +291,8 @@ mod test {
let pkey = PKey::from_rsa(private_key).unwrap(); let pkey = PKey::from_rsa(private_key).unwrap();
let mut signer = Signer::new(MessageDigest::sha256(), &pkey).unwrap(); let mut signer = Signer::new(MessageDigest::sha256(), &pkey).unwrap();
assert_eq!(signer.pkey_ctx().unwrap().get_rsa_padding().unwrap(), PKCS1_PADDING); assert_eq!(signer.pkey_ctx().get_rsa_padding().unwrap(), PKCS1_PADDING);
signer.pkey_ctx().unwrap().set_rsa_padding(PKCS1_PADDING).unwrap(); signer.pkey_ctx().set_rsa_padding(PKCS1_PADDING).unwrap();
signer.update(INPUT).unwrap(); signer.update(INPUT).unwrap();
let result = signer.finish().unwrap(); let result = signer.finish().unwrap();
@ -301,7 +306,7 @@ mod test {
let pkey = PKey::from_rsa(private_key).unwrap(); let pkey = PKey::from_rsa(private_key).unwrap();
let mut verifier = Verifier::new(MessageDigest::sha256(), &pkey).unwrap(); let mut verifier = Verifier::new(MessageDigest::sha256(), &pkey).unwrap();
assert_eq!(verifier.pkey_ctx().unwrap().get_rsa_padding().unwrap(), PKCS1_PADDING); assert_eq!(verifier.pkey_ctx().get_rsa_padding().unwrap(), PKCS1_PADDING);
verifier.update(INPUT).unwrap(); verifier.update(INPUT).unwrap();
assert!(verifier.finish(SIGNATURE).unwrap()); assert!(verifier.finish(SIGNATURE).unwrap());
} }