]> git.mxchange.org Git - friendica.git/commitdiff
Reworked check for double encoded Diaspora signatures
authorMichael Vogel <icarus@dabo.de>
Wed, 20 Jan 2016 15:00:43 +0000 (16:00 +0100)
committerMichael Vogel <icarus@dabo.de>
Wed, 20 Jan 2016 15:00:43 +0000 (16:00 +0100)
include/diaspora.php
include/items.php

index d61ec016c783ba45f80e76f1417831d806f5fee5..4673cdaf4c1fdc9de5bce0293ca28fe59ea7d424 100644 (file)
@@ -2911,10 +2911,6 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
                $authorsig = $orig_sign['signature'];
                $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
                $signed_parts = explode(";", $signed_text);
 
index b7a759a3b54af3cdcae384d9b9f66c8777a44547..76ff6e8b0c5ff81e9b526ec393c4bd26534a428b 100644 (file)
@@ -1609,6 +1609,14 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
                );
 
        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') ",
                        intval($current_post),
                        dbesc($dsprsig->signed_text),