mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-06-23 19:31:53 +02:00
Formatting
This commit is contained in:
parent
f6b3e189cf
commit
32eeb8c49a
@ -23,113 +23,142 @@
|
|||||||
|
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
class crypto {
|
class crypto
|
||||||
var $td = False; // Handle for mcrypt
|
{
|
||||||
var $iv = "";
|
var $td = False; // Handle for mcrypt
|
||||||
var $key = "";
|
var $iv = '';
|
||||||
function crypto($vars)
|
var $key = '';
|
||||||
{
|
|
||||||
global $phpgw, $phpgw_info;
|
|
||||||
$key = $vars[0];
|
|
||||||
$iv = $vars[1];
|
|
||||||
if ($phpgw_info['server']['mcrypt_enabled'] && extension_loaded('mcrypt')) {
|
|
||||||
if ($phpgw_info['server']['versions']['mcrypt'] == 'old') {
|
|
||||||
$this->td = false;
|
|
||||||
if (phpversion() > '4.0.2pl1') {
|
|
||||||
$keysize = mcrypt_get_key_size(MCRYPT_TRIPLEDES);
|
|
||||||
$ivsize = mcrypt_get_iv_size(MCRYPT_TRIPLEDES,MCRYPT_MODE_CBC);
|
|
||||||
} else {
|
|
||||||
$keysize = 8;
|
|
||||||
$ivsize = 8;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Start up mcrypt
|
|
||||||
$this->td = mcrypt_module_open (MCRYPT_TRIPLEDES, '', MCRYPT_MODE_CBC, '');
|
|
||||||
|
|
||||||
$ivsize = mcrypt_enc_get_iv_size($this->td);
|
function crypto($vars)
|
||||||
$keysize = mcrypt_enc_get_key_size($this->td);
|
{
|
||||||
}
|
global $phpgw, $phpgw_info;
|
||||||
|
$key = $vars[0];
|
||||||
|
$iv = $vars[1];
|
||||||
|
if ($phpgw_info['server']['mcrypt_enabled'] && extension_loaded('mcrypt'))
|
||||||
|
{
|
||||||
|
if ($phpgw_info['server']['versions']['mcrypt'] == 'old')
|
||||||
|
{
|
||||||
|
$this->td = false;
|
||||||
|
if (phpversion() > '4.0.2pl1')
|
||||||
|
{
|
||||||
|
$keysize = mcrypt_get_key_size(MCRYPT_TRIPLEDES);
|
||||||
|
$ivsize = mcrypt_get_iv_size(MCRYPT_TRIPLEDES,MCRYPT_MODE_CBC);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$keysize = 8;
|
||||||
|
$ivsize = 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Start up mcrypt
|
||||||
|
$this->td = mcrypt_module_open (MCRYPT_TRIPLEDES, '', MCRYPT_MODE_CBC, '');
|
||||||
|
|
||||||
// Hack IV to be the correct size
|
$ivsize = mcrypt_enc_get_iv_size($this->td);
|
||||||
$x = strlen($iv);
|
$keysize = mcrypt_enc_get_key_size($this->td);
|
||||||
for ($i = 0; $i < $ivsize; $i++) {
|
}
|
||||||
$this->iv .= $iv[$i % $x];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Hack Key to be the correct size
|
// Hack IV to be the correct size
|
||||||
$x = strlen($key);
|
$x = strlen($iv);
|
||||||
|
for ($i = 0; $i < $ivsize; $i++)
|
||||||
|
{
|
||||||
|
$this->iv .= $iv[$i % $x];
|
||||||
|
}
|
||||||
|
|
||||||
for ($i = 0; $i < $keysize; $i++) {
|
// Hack Key to be the correct size
|
||||||
$this->key .= $key[$i % $x];
|
$x = strlen($key);
|
||||||
}
|
|
||||||
if ($phpgw_info['server']['versions']['mcrypt'] != 'old') {
|
|
||||||
mcrypt_generic_init ($this->td, $this->key, $this->iv);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// If mcrypt isn't loaded key and iv are not needed
|
|
||||||
}
|
|
||||||
|
|
||||||
function cleanup()
|
for ($i = 0; $i < $keysize; $i++)
|
||||||
{
|
{
|
||||||
global $phpgw_info;
|
$this->key .= $key[$i % $x];
|
||||||
|
}
|
||||||
|
if ($phpgw_info['server']['versions']['mcrypt'] != 'old')
|
||||||
|
{
|
||||||
|
mcrypt_generic_init ($this->td, $this->key, $this->iv);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// If mcrypt isn't loaded key and iv are not needed
|
||||||
|
}
|
||||||
|
|
||||||
if ($phpgw_info['server']['mcrypt_enabled'] && extension_loaded('mcrypt')) {
|
function cleanup()
|
||||||
if ($phpgw_info['server']['versions']['mcrypt'] != 'old') {
|
{
|
||||||
mcrypt_generic_end ($this->td);
|
global $phpgw_info;
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
function hex2bin($data)
|
|
||||||
{
|
|
||||||
$len = strlen($data);
|
|
||||||
return pack('H' . $len, $data);
|
|
||||||
}
|
|
||||||
|
|
||||||
function encrypt($data) {
|
if ($phpgw_info['server']['mcrypt_enabled'] && extension_loaded('mcrypt'))
|
||||||
global $phpgw_info;
|
{
|
||||||
|
if ($phpgw_info['server']['versions']['mcrypt'] != 'old')
|
||||||
|
{
|
||||||
|
mcrypt_generic_end ($this->td);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$data = serialize($data);
|
function hex2bin($data)
|
||||||
|
{
|
||||||
|
$len = strlen($data);
|
||||||
|
return pack('H' . $len, $data);
|
||||||
|
}
|
||||||
|
|
||||||
// Disable all encryption if the admin didn't set it up
|
function encrypt($data)
|
||||||
if ($phpgw_info['server']['mcrypt_enabled'] && extension_loaded('mcrypt')) {
|
{
|
||||||
switch ($phpgw_info['server']['versions']['mcrypt']) {
|
global $phpgw_info;
|
||||||
// The old code, only works with mcrypt <= 2.2.x
|
|
||||||
case 'old': {
|
|
||||||
$encrypteddata = mcrypt_cbc(MCRYPT_TripleDES, $this->key, $data, MCRYPT_ENCRYPT);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default: { // Handle 2.4 and newer API
|
|
||||||
$encrypteddata = mcrypt_generic($this->td, $data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$encrypteddata = bin2hex($encrypteddata);
|
|
||||||
return $encrypteddata;
|
|
||||||
} else { // No mcrypt == insecure !
|
|
||||||
return $data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function decrypt($encrypteddata) {
|
$data = serialize($data);
|
||||||
global $phpgw_info;
|
|
||||||
|
|
||||||
// Disable all encryption if the admin didn't set it up
|
// Disable all encryption if the admin didn't set it up
|
||||||
if ($phpgw_info['server']['mcrypt_enabled'] && extension_loaded('mcrypt')) {
|
if ($phpgw_info['server']['mcrypt_enabled'] && extension_loaded('mcrypt'))
|
||||||
$data = $this->hex2bin($encrypteddata);
|
{
|
||||||
|
switch ($phpgw_info['server']['versions']['mcrypt'])
|
||||||
|
{
|
||||||
|
// The old code, only works with mcrypt <= 2.2.x
|
||||||
|
case 'old':
|
||||||
|
{
|
||||||
|
$encrypteddata = mcrypt_cbc(MCRYPT_TripleDES, $this->key, $data, MCRYPT_ENCRYPT);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{ // Handle 2.4 and newer API
|
||||||
|
$encrypteddata = mcrypt_generic($this->td, $data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$encrypteddata = bin2hex($encrypteddata);
|
||||||
|
return $encrypteddata;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{ // No mcrypt == insecure !
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch ($phpgw_info['server']['versions']['mcrypt']) {
|
function decrypt($encrypteddata)
|
||||||
// The old code, only works with mcrypt <= 2.2.x
|
{
|
||||||
case 'old': {
|
global $phpgw_info;
|
||||||
$data = mcrypt_cbc(MCRYPT_TripleDES, $this->key, $data, MCRYPT_DECRYPT);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default: { // Handle 2.4 and newer API
|
|
||||||
$data = mdecrypt_generic($this->td, $data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return unserialize($data);
|
|
||||||
} else {
|
|
||||||
return unserialize($encrypteddata);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} // class crypto
|
// Disable all encryption if the admin didn't set it up
|
||||||
|
if ($phpgw_info['server']['mcrypt_enabled'] && extension_loaded('mcrypt'))
|
||||||
|
{
|
||||||
|
$data = $this->hex2bin($encrypteddata);
|
||||||
|
|
||||||
|
switch ($phpgw_info['server']['versions']['mcrypt'])
|
||||||
|
{
|
||||||
|
// The old code, only works with mcrypt <= 2.2.x
|
||||||
|
case 'old':
|
||||||
|
{
|
||||||
|
$data = mcrypt_cbc(MCRYPT_TripleDES, $this->key, $data, MCRYPT_DECRYPT);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{ // Handle 2.4 and newer API
|
||||||
|
$data = mdecrypt_generic($this->td, $data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return unserialize($data);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return unserialize($encrypteddata);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} // class crypto
|
||||||
|
?>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user