2 /** @package php-gpg::GPG */
\r
5 list($gpg_usec, $gpg_sec) = explode(' ', microtime());
\r
6 srand((float) $gpg_sec + ((float) $gpg_usec * 100000));
\r
9 * @package php-gpg::GPG
\r
14 static function starts_with($haystack, $needle)
\r
16 return $needle === "" || strpos($haystack, $needle) === 0;
\r
19 static function B0($x) {
\r
23 static function B1($x) {
\r
24 return (($x >> 0x8) & 0xff);
\r
27 static function B2($x) {
\r
28 return (($x >> 0x10) & 0xff);
\r
31 static function B3($x) {
\r
32 return (($x >> 0x18) & 0xff);
\r
35 static function zshift($x, $s) {
\r
39 for ($i = 0; $i < 32 - $s; $i++) $pad += (1 << $i);
\r
44 static function pack_octets($octets)
\r
48 $len = count($octets);
\r
49 $b = array_fill(0, $len / 4, 0);
\r
51 if (!$octets || $len % 4) return;
\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
61 static function unpack_octets($packed)
\r
65 $l = count($packed);
\r
66 $r = array_fill(0, $l * 4, 0);
\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
81 static function hex2bin($h)
\r
83 if(strlen($h) % 2) $h += "0";
\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
93 static function crc24($data)
\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
101 if($crc & 0x1000000) $crc ^= 0x1864cfb;
\r
106 chr(($crc >> 0x10) & 0xff) .
\r
107 chr(($crc >> 0x8) & 0xff) .
\r
111 static function s_random($len, $textmode)
\r
114 for($i = 0; $i < $len;)
\r
116 $t = rand(0, 0xff);
\r
117 if($t == 0 && $textmode) continue;
\r
126 static function c_random() {
\r
127 return round(rand(0, 0xff));
\r