]> git.mxchange.org Git - friendica-addons.git/blobdiff - securemail/php-gpg/libs/GPG.php
securemail: update library and readme
[friendica-addons.git] / securemail / php-gpg / libs / GPG.php
index 053a54beab256bd81006aed71cd52b9a737be5df..e111ccabdc2d53972c790d2474c416a260e879f8 100644 (file)
@@ -35,8 +35,6 @@ class GPG
        private function gpg_encrypt($key, $text) {\r
 \r
                $i = 0;\r
-               $i = 0;\r
-               $len = strlen($text);\r
                $len = strlen($text);\r
                $iblock = array_fill(0, $this->width, 0);\r
                $rblock = array_fill(0, $this->width, 0);\r
@@ -82,14 +80,32 @@ class GPG
 \r
        private function gpg_header($tag, $len)\r
        {\r
-               if ($len > 0xff) $tag += 1;\r
-               $h = chr($tag);\r
-               if ($len > 0xff) $h .= chr($len / 0x100);\r
-               $h .= chr($len % 0x100);\r
-\r
+               $h = "";\r
+               if ($len < 0x100) {\r
+                 $h .= chr($tag);\r
+                 $h .= chr($len);\r
+               } else if ($len < 0x10000) {\r
+                 $tag+=1;\r
+                 $h .= chr($tag);\r
+                 $h .= $this->writeNumber($len, 2);\r
+               } else {\r
+                 $tag+=2;\r
+                 $h .= chr($tag);\r
+                 $h .= $this->writeNumber($len, 4);\r
+               }\r
                return $h;\r
        }\r
 \r
+       private function writeNumber($n, $bytes)\r
+       {\r
+               // credits for this function go to OpenPGP.js\r
+               $b = '';\r
+               for ($i = 0; $i < $bytes; $i++) {\r
+                 $b .= chr(($n >> (8 * ($bytes - $i - 1))) & 0xff);\r
+               }\r
+               return $b;\r
+       }\r
+\r
        private function gpg_session($key_id, $key_type, $session_key, $public_key)\r
        { \r
 \r
@@ -174,7 +190,7 @@ class GPG
                        $this->gpg_data($session_key, $plaintext);\r
 \r
                $code = base64_encode($cp);\r
-               $code = wordwrap($code, 60, "\n", 1);\r
+               $code = wordwrap($code, 64, "\n", 1);\r
 \r
                return\r
                        "-----BEGIN PGP MESSAGE-----\nVersion: VerySimple PHP-GPG v".$this->version."\n\n" .\r
@@ -183,4 +199,4 @@ class GPG
        }\r
 }\r
 \r
-?>
\ No newline at end of file
+?>\r