mirror of
https://git.friendi.ca/friendica/friendica-addons.git
synced 2025-07-07 17:08:48 +00:00
New experimental plugin 'secure mail'
This commit is contained in:
parent
9aefbf3def
commit
e17cb70379
14 changed files with 3199 additions and 0 deletions
131
securemail/php-gpg/libs/GPG/Utility.php
Normal file
131
securemail/php-gpg/libs/GPG/Utility.php
Normal file
|
@ -0,0 +1,131 @@
|
|||
<?php
|
||||
/** @package php-gpg::GPG */
|
||||
|
||||
/** seed rand */
|
||||
list($gpg_usec, $gpg_sec) = explode(' ', microtime());
|
||||
srand((float) $gpg_sec + ((float) $gpg_usec * 100000));
|
||||
|
||||
/**
|
||||
* @package php-gpg::GPG
|
||||
*/
|
||||
class GPG_Utility
|
||||
{
|
||||
|
||||
static function starts_with($haystack, $needle)
|
||||
{
|
||||
return $needle === "" || strpos($haystack, $needle) === 0;
|
||||
}
|
||||
|
||||
static function B0($x) {
|
||||
return ($x & 0xff);
|
||||
}
|
||||
|
||||
static function B1($x) {
|
||||
return (($x >> 0x8) & 0xff);
|
||||
}
|
||||
|
||||
static function B2($x) {
|
||||
return (($x >> 0x10) & 0xff);
|
||||
}
|
||||
|
||||
static function B3($x) {
|
||||
return (($x >> 0x18) & 0xff);
|
||||
}
|
||||
|
||||
static function zshift($x, $s) {
|
||||
$res = $x >> $s;
|
||||
|
||||
$pad = 0;
|
||||
for ($i = 0; $i < 32 - $s; $i++) $pad += (1 << $i);
|
||||
|
||||
return $res & $pad;
|
||||
}
|
||||
|
||||
static function pack_octets($octets)
|
||||
{
|
||||
$i = 0;
|
||||
$j = 0;
|
||||
$len = count($octets);
|
||||
$b = array_fill(0, $len / 4, 0);
|
||||
|
||||
if (!$octets || $len % 4) return;
|
||||
|
||||
for ($i = 0, $j = 0; $j < $len; $j += 4) {
|
||||
$b[$i++] = $octets[$j] | ($octets[$j + 1] << 0x8) | ($octets[$j + 2] << 0x10) | ($octets[$j + 3] << 0x18);
|
||||
|
||||
}
|
||||
|
||||
return $b;
|
||||
}
|
||||
|
||||
static function unpack_octets($packed)
|
||||
{
|
||||
$j = 0;
|
||||
$i = 0;
|
||||
$l = count($packed);
|
||||
$r = array_fill(0, $l * 4, 0);
|
||||
|
||||
for ($j = 0; $j < $l; $j++) {
|
||||
$r[$i++] = GPG_Utility::B0($packed[$j]);
|
||||
$r[$i++] = GPG_Utility::B1($packed[$j]);
|
||||
$r[$i++] = GPG_Utility::B2($packed[$j]);
|
||||
$r[$i++] = GPG_Utility::B3($packed[$j]);
|
||||
}
|
||||
|
||||
return $r;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static function hex2bin($h)
|
||||
{
|
||||
if(strlen($h) % 2) $h += "0";
|
||||
|
||||
$r = "";
|
||||
for($i = 0; $i < strlen($h); $i += 2) {
|
||||
$r .= chr(intval($h[$i], 16) * 16 + intval($h[$i + 1], 16));
|
||||
}
|
||||
|
||||
return $r;
|
||||
}
|
||||
|
||||
static function crc24($data)
|
||||
{
|
||||
$crc = 0xb704ce;
|
||||
|
||||
for($n = 0; $n < strlen($data); $n++) {
|
||||
$crc ^= (ord($data[$n]) & 0xff) << 0x10;
|
||||
for($i = 0; $i < 8; $i++) {
|
||||
$crc <<= 1;
|
||||
if($crc & 0x1000000) $crc ^= 0x1864cfb;
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
chr(($crc >> 0x10) & 0xff) .
|
||||
chr(($crc >> 0x8) & 0xff) .
|
||||
chr($crc & 0xff);
|
||||
}
|
||||
|
||||
static function s_random($len, $textmode)
|
||||
{
|
||||
$r = "";
|
||||
for($i = 0; $i < $len;)
|
||||
{
|
||||
$t = rand(0, 0xff);
|
||||
if($t == 0 && $textmode) continue;
|
||||
$i++;
|
||||
|
||||
$r .= chr($t);
|
||||
}
|
||||
|
||||
return $r;
|
||||
}
|
||||
|
||||
static function c_random() {
|
||||
return round(rand(0, 0xff));
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
Loading…
Add table
Add a link
Reference in a new issue