if ( $base64 ) { $msg = base64_decode($msg); }
if ( ! $td = mcrypt_module_open('rijndael-256', '', 'ctr', '') ) {
$this->log('decrypt() - Failed to open cipher');
return false;
}
$iv = substr($msg, 0, 32);
$mo = strlen($msg) - 32;
$em = substr($msg, $mo);
$msg = substr($msg, 32, strlen($msg)-64);
$mac = $this->pbkdf2($iv . $msg, $k, 1000, 32);
if ( $em !== $mac ) {
$this->log('decrypt() - Mac authenticate failed');
return false;
}
if ( mcrypt_generic_init($td, $k, $iv) !== 0 ) {
$this->log('decrypt() - Buffer init failed');
return false;
}
$msg = mdecrypt_generic($td, $msg);
$msg = unserialize($msg);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
return $msg;