You are here

function drd_server_aes_decrypt in Drupal Remote Dashboard Server 6.2

Same name and namespace in other branches
  1. 7.2 drd_server.aes.inc \drd_server_aes_decrypt()
1 call to drd_server_aes_decrypt()
_drd_server_validate_request in ./drd_server.module

File

./drd_server.aes.inc, line 42

Code

function drd_server_aes_decrypt($string, $base64encoded, $key, $cipher, $iv, $implementation) {
  if ($base64encoded) {
    $string = base64_decode($string);
  }
  if (empty($string)) {
    return FALSE;
  }

  # Decode the key
  $key = base64_decode($key);
  if ($implementation == 'phpseclib') {
    _drd_server_aes_load_phpsec();
    $phpsec = new Crypt_AES();
    $phpsec
      ->setKey($key);
    if (!empty($iv)) {
      $phpsec
        ->setIV($iv);
    }
    $decrypted = $phpsec
      ->decrypt($string);
  }
  else {
    if ($implementation == 'mcrypt') {
      $td = mcrypt_module_open($cipher, '', MCRYPT_MODE_CBC, '');
      $ks = mcrypt_enc_get_key_size($td);
      $key = substr(sha1($key), 0, $ks);
      mcrypt_generic_init($td, $key, $iv);
      $decrypted = mdecrypt_generic($td, $string);
      mcrypt_generic_deinit($td);
      mcrypt_module_close($td);
    }
    else {
      return FALSE;
    }
  }
  return trim($decrypted);
}