Reworked check for double encoded Diaspora signatures

This commit is contained in:
Michael Vogel 2016-01-20 16:00:43 +01:00
parent 7e83ba090f
commit 98ccefebcf
2 changed files with 8 additions and 4 deletions

View file

@ -2911,10 +2911,6 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
$authorsig = $orig_sign['signature']; $authorsig = $orig_sign['signature'];
$handle = $orig_sign['signer']; $handle = $orig_sign['signer'];
// Friendica servers lower than 3.5 had double encoded the signature ...
if (substr($authorsig, -1, 1) != "=")
$authorsig = base64_decode($authorsig);
// Split the signed text // Split the signed text
$signed_parts = explode(";", $signed_text); $signed_parts = explode(";", $signed_text);

View file

@ -1609,6 +1609,14 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
); );
if($dsprsig) { if($dsprsig) {
// Friendica servers lower than 3.4.3-2 had double encoded the signature ...
// We can check for this condition when we decode and encode the stuff again.
if (base64_encode(base64_decode(base64_decode($dsprsig->signature))) == base64_decode($dsprsig->signature)) {
$dsprsig->signature = base64_decode($dsprsig->signature);
logger("Repaired double encoded signature from handle ".$dsprsig->signer, LOGGER_DEBUG);
}
q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ", q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
intval($current_post), intval($current_post),
dbesc($dsprsig->signed_text), dbesc($dsprsig->signed_text),