]> git.mxchange.org Git - friendica-addons.git/blob - securemail/php-gpg/libs/GPG/Utility.php
ac3ac6b2698704797ebd6538e28962a25f13aa6c
[friendica-addons.git] / securemail / php-gpg / libs / GPG / Utility.php
1 <?php\r
2 /** @package    php-gpg::GPG */\r
3 \r
4 /** seed rand */\r
5 list($gpg_usec, $gpg_sec) = explode(' ', microtime());\r
6 srand((float) $gpg_sec + ((float) $gpg_usec * 100000));\r
7 \r
8 /**\r
9  * @package    php-gpg::GPG\r
10  */\r
11 class GPG_Utility\r
12 {\r
13         \r
14         static function starts_with($haystack, $needle)\r
15         {\r
16                 return $needle === "" || strpos($haystack, $needle) === 0;\r
17         }\r
18         \r
19         static function B0($x) {\r
20                 return ($x & 0xff);\r
21         }\r
22         \r
23         static function B1($x) {\r
24                 return (($x >> 0x8) & 0xff);\r
25         }\r
26         \r
27         static function B2($x) {\r
28                 return (($x >> 0x10) & 0xff);\r
29         }\r
30         \r
31         static function B3($x) {\r
32                 return (($x >> 0x18) & 0xff);\r
33         }\r
34         \r
35         static function zshift($x, $s) {\r
36                 $res = $x >> $s;\r
37                 \r
38                 $pad = 0;\r
39                 for ($i = 0; $i < 32 - $s; $i++) $pad += (1 << $i);\r
40                 \r
41                 return $res & $pad;\r
42         }\r
43         \r
44         static function pack_octets($octets)\r
45         {\r
46                 $i = 0;\r
47                 $j = 0;\r
48                 $len = count($octets);\r
49                 $b = array_fill(0, $len / 4, 0);\r
50                 \r
51                 if (!$octets || $len % 4) return;\r
52                 \r
53                 for ($i = 0, $j = 0; $j < $len; $j += 4) {\r
54                         $b[$i++] = $octets[$j] | ($octets[$j + 1] << 0x8) | ($octets[$j + 2] << 0x10) | ($octets[$j + 3] << 0x18);\r
55                         \r
56                 }\r
57                 \r
58                 return $b;  \r
59         }\r
60         \r
61         static function unpack_octets($packed)\r
62         {\r
63                 $j = 0;\r
64                 $i = 0;\r
65                 $l = count($packed);\r
66                 $r = array_fill(0, $l * 4, 0);\r
67                 \r
68                 for ($j = 0; $j < $l; $j++) {\r
69                         $r[$i++] = GPG_Utility::B0($packed[$j]);\r
70                         $r[$i++] = GPG_Utility::B1($packed[$j]);\r
71                         $r[$i++] = GPG_Utility::B2($packed[$j]);\r
72                         $r[$i++] = GPG_Utility::B3($packed[$j]);\r
73                 }\r
74                 \r
75                 return $r;\r
76         }\r
77 \r
78 \r
79 \r
80 \r
81         static function hex2bin($h)\r
82         {\r
83                 if(strlen($h) % 2) $h += "0";\r
84 \r
85                 $r = "";\r
86                 for($i = 0; $i < strlen($h); $i += 2) {\r
87                         $r .= chr(intval($h[$i], 16) * 16 + intval($h[$i + 1], 16));\r
88                 }\r
89 \r
90                 return $r;\r
91         }\r
92 \r
93         static function crc24($data)\r
94         {\r
95                 $crc = 0xb704ce;\r
96 \r
97                 for($n = 0; $n < strlen($data); $n++) {\r
98                         $crc ^= (ord($data[$n]) & 0xff) << 0x10;\r
99                         for($i = 0; $i < 8; $i++) {\r
100                                 $crc <<= 1;\r
101                                 if($crc & 0x1000000) $crc ^= 0x1864cfb;\r
102                         }       \r
103                 }\r
104             \r
105                 return\r
106                         chr(($crc >> 0x10) & 0xff) .\r
107                         chr(($crc >> 0x8) & 0xff) .\r
108                         chr($crc & 0xff);\r
109         }\r
110 \r
111         static function s_random($len, $textmode)\r
112         {\r
113                 $r = "";\r
114                 for($i = 0; $i < $len;)\r
115                 {\r
116                         $t = rand(0, 0xff);\r
117                         if($t == 0 && $textmode) continue;\r
118                         $i++;\r
119 \r
120                         $r .= chr($t);\r
121                 }\r
122 \r
123                 return $r;\r
124         }\r
125 \r
126         static function c_random() {\r
127                 return round(rand(0, 0xff));\r
128         }\r
129 \r
130 }\r
131 ?>