fix: more logic fixes for encryption

This commit is contained in:
dignifiedquire
2019-05-14 23:54:29 +02:00
parent e32329e860
commit 826fe573a4
3 changed files with 21 additions and 21 deletions

View File

@@ -522,15 +522,15 @@ pub unsafe fn dc_apeerstate_save_to_db(
success success
} }
// TODO should return bool /rtn
pub unsafe fn dc_apeerstate_has_verified_key( pub unsafe fn dc_apeerstate_has_verified_key(
peerstate: &dc_apeerstate_t, peerstate: &dc_apeerstate_t,
fingerprints: *const dc_hash_t, fingerprints: *const dc_hash_t,
) -> libc::c_int { ) -> bool {
if fingerprints.is_null() { if fingerprints.is_null() {
return 0; return false;
} }
if !peerstate.verified_key.is_some()
if peerstate.verified_key.is_some()
&& !peerstate.verified_key_fingerprint.is_null() && !peerstate.verified_key_fingerprint.is_null()
&& !dc_hash_find( && !dc_hash_find(
fingerprints, fingerprints,
@@ -539,8 +539,8 @@ pub unsafe fn dc_apeerstate_has_verified_key(
) )
.is_null() .is_null()
{ {
return 1; return true;
} }
0 false
} }

View File

@@ -1114,19 +1114,21 @@ pub unsafe fn dc_contact_is_verified_ex<'a>(
} }
} else { } else {
let mut peerstate = dc_apeerstate_new((*contact).context); let mut peerstate = dc_apeerstate_new((*contact).context);
let mut res = 0;
if 0 != dc_apeerstate_load_by_addr( let res = if 0
!= dc_apeerstate_load_by_addr(
&mut peerstate, &mut peerstate,
&mut (*contact).context.sql.clone().read().unwrap(), &(*contact).context.sql.clone().read().unwrap(),
(*contact).addr, (*contact).addr,
) { ) {
res = if peerstate.verified_key.is_some() { if peerstate.verified_key.is_some() {
2 2
} else { } else {
0 0
};
} }
} else {
0
};
dc_apeerstate_unref(&mut peerstate); dc_apeerstate_unref(&mut peerstate);
res res

View File

@@ -1896,12 +1896,10 @@ unsafe fn check_verified_properties(
); );
dc_log_warning(context, 0i32, *failure_reason); dc_log_warning(context, 0i32, *failure_reason);
current_block = 14837890932895028253; current_block = 14837890932895028253;
} else if 0 } else if !dc_apeerstate_has_verified_key(
== dc_apeerstate_has_verified_key(
&peerstate, &peerstate,
(*(*mimeparser).e2ee_helper).signatures, (*(*mimeparser).e2ee_helper).signatures,
) ) {
{
*failure_reason = dc_mprintf( *failure_reason = dc_mprintf(
b"%s. See \"Info\" for details.\x00" as *const u8 as *const libc::c_char, b"%s. See \"Info\" for details.\x00" as *const u8 as *const libc::c_char,
b"The message was sent with non-verified encryption.\x00" as *const u8 b"The message was sent with non-verified encryption.\x00" as *const u8