]> git.mxchange.org Git - friendica-addons.git/blobdiff - securemail/php-gpg/libs/GPG/Utility.php
New experimental plugin 'secure mail'
[friendica-addons.git] / securemail / php-gpg / libs / GPG / Utility.php
diff --git a/securemail/php-gpg/libs/GPG/Utility.php b/securemail/php-gpg/libs/GPG/Utility.php
new file mode 100644 (file)
index 0000000..ac3ac6b
--- /dev/null
@@ -0,0 +1,131 @@
+<?php\r
+/** @package    php-gpg::GPG */\r
+\r
+/** seed rand */\r
+list($gpg_usec, $gpg_sec) = explode(' ', microtime());\r
+srand((float) $gpg_sec + ((float) $gpg_usec * 100000));\r
+\r
+/**\r
+ * @package    php-gpg::GPG\r
+ */\r
+class GPG_Utility\r
+{\r
+       \r
+       static function starts_with($haystack, $needle)\r
+       {\r
+               return $needle === "" || strpos($haystack, $needle) === 0;\r
+       }\r
+       \r
+       static function B0($x) {\r
+               return ($x & 0xff);\r
+       }\r
+       \r
+       static function B1($x) {\r
+               return (($x >> 0x8) & 0xff);\r
+       }\r
+       \r
+       static function B2($x) {\r
+               return (($x >> 0x10) & 0xff);\r
+       }\r
+       \r
+       static function B3($x) {\r
+               return (($x >> 0x18) & 0xff);\r
+       }\r
+       \r
+       static function zshift($x, $s) {\r
+               $res = $x >> $s;\r
+               \r
+               $pad = 0;\r
+               for ($i = 0; $i < 32 - $s; $i++) $pad += (1 << $i);\r
+               \r
+               return $res & $pad;\r
+       }\r
+       \r
+       static function pack_octets($octets)\r
+       {\r
+               $i = 0;\r
+               $j = 0;\r
+               $len = count($octets);\r
+               $b = array_fill(0, $len / 4, 0);\r
+               \r
+               if (!$octets || $len % 4) return;\r
+               \r
+               for ($i = 0, $j = 0; $j < $len; $j += 4) {\r
+                       $b[$i++] = $octets[$j] | ($octets[$j + 1] << 0x8) | ($octets[$j + 2] << 0x10) | ($octets[$j + 3] << 0x18);\r
+                       \r
+               }\r
+               \r
+               return $b;  \r
+       }\r
+       \r
+       static function unpack_octets($packed)\r
+       {\r
+               $j = 0;\r
+               $i = 0;\r
+               $l = count($packed);\r
+               $r = array_fill(0, $l * 4, 0);\r
+               \r
+               for ($j = 0; $j < $l; $j++) {\r
+                       $r[$i++] = GPG_Utility::B0($packed[$j]);\r
+                       $r[$i++] = GPG_Utility::B1($packed[$j]);\r
+                       $r[$i++] = GPG_Utility::B2($packed[$j]);\r
+                       $r[$i++] = GPG_Utility::B3($packed[$j]);\r
+               }\r
+               \r
+               return $r;\r
+       }\r
+\r
+\r
+\r
+\r
+       static function hex2bin($h)\r
+       {\r
+               if(strlen($h) % 2) $h += "0";\r
+\r
+               $r = "";\r
+               for($i = 0; $i < strlen($h); $i += 2) {\r
+                       $r .= chr(intval($h[$i], 16) * 16 + intval($h[$i + 1], 16));\r
+               }\r
+\r
+               return $r;\r
+       }\r
+\r
+       static function crc24($data)\r
+       {\r
+               $crc = 0xb704ce;\r
+\r
+               for($n = 0; $n < strlen($data); $n++) {\r
+                       $crc ^= (ord($data[$n]) & 0xff) << 0x10;\r
+                       for($i = 0; $i < 8; $i++) {\r
+                               $crc <<= 1;\r
+                               if($crc & 0x1000000) $crc ^= 0x1864cfb;\r
+                       }       \r
+               }\r
+           \r
+               return\r
+                       chr(($crc >> 0x10) & 0xff) .\r
+                       chr(($crc >> 0x8) & 0xff) .\r
+                       chr($crc & 0xff);\r
+       }\r
+\r
+       static function s_random($len, $textmode)\r
+       {\r
+               $r = "";\r
+               for($i = 0; $i < $len;)\r
+               {\r
+                       $t = rand(0, 0xff);\r
+                       if($t == 0 && $textmode) continue;\r
+                       $i++;\r
+\r
+                       $r .= chr($t);\r
+               }\r
+\r
+               return $r;\r
+       }\r
+\r
+       static function c_random() {\r
+               return round(rand(0, 0xff));\r
+       }\r
+\r
+}\r
+?>
\ No newline at end of file