Reworked check for double encoded Diaspora signatures
This commit is contained in:
parent
7e83ba090f
commit
98ccefebcf
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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),
|
||||||
|
|
Loading…
Reference in a new issue