summaryrefslogtreecommitdiffstats
path: root/openpgp-ffi/src
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2020-03-27 17:15:13 +0100
committerJustus Winter <justus@sequoia-pgp.org>2020-03-27 17:58:29 +0100
commitffd468e0dadf8065f8ce21a62cbea8e59ec09c60 (patch)
tree08d45ba532cd03ce274dcd73856083d31cf470da /openpgp-ffi/src
parent38bf9e15efe78aa08a864f14e113d8ff46bfbd11 (diff)
openpgp: Explain binding signature lookup failures.
- If looking up a binding signature fails, don't merely return None, but an Err(_) that explains the lookup failure. For example, a binding signature may be present, but it may not meet the policy. - Fixes #460.
Diffstat (limited to 'openpgp-ffi/src')
-rw-r--r--openpgp-ffi/src/cert.rs5
1 files changed, 3 insertions, 2 deletions
diff --git a/openpgp-ffi/src/cert.rs b/openpgp-ffi/src/cert.rs
index 5f04ac8c..9c3f43ad 100644
--- a/openpgp-ffi/src/cert.rs
+++ b/openpgp-ffi/src/cert.rs
@@ -364,7 +364,7 @@ fn pgp_cert_primary_user_id(cert: *const Cert, policy: *const Policy,
{
let cert = cert.ref_raw();
let policy = &**policy.ref_raw();
- if let Some(binding) = cert.primary_userid(policy, maybe_time(when)) {
+ if let Ok(binding) = cert.primary_userid(policy, maybe_time(when)) {
ffi_return_string!(binding.userid().value())
} else {
ptr::null_mut()
@@ -393,13 +393,14 @@ pub extern "C" fn pgp_user_id_bundle_user_id(
/// Returns a reference to the self-signature, if any.
#[::sequoia_ffi_macros::extern_fn] #[no_mangle]
pub extern "C" fn pgp_user_id_bundle_selfsig(
+ errp: Option<&mut *mut crate::error::Error>,
binding: *const UserIDBundle,
policy: *const Policy)
-> Maybe<Signature>
{
let binding = ffi_param_ref!(binding);
let policy = &**policy.ref_raw();
- binding.binding_signature(policy, None).move_into_raw()
+ binding.binding_signature(policy, None).move_into_raw(errp)
}