You are here

drd_server.aes.inc in Drupal Remote Dashboard Server 7.2

Same filename and directory in other branches
  1. 6.2 drd_server.aes.inc

File

drd_server.aes.inc
View source
<?php

function drd_server_aes_encrypt($string, $base64encode, $key, $cipher, $iv, $implementation) {
  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);
    }
    $encrypted = $phpsec
      ->encrypt($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);
      $encrypted = mcrypt_generic($td, $string);
      mcrypt_generic_deinit($td);
      mcrypt_module_close($td);
    }
    else {
      return FALSE;
    }
  }
  if ($base64encode) {
    return base64_encode($encrypted);
  }
  else {
    return $encrypted;
  }
}
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);
}
function _drd_server_aes_load_phpsec() {
  if (module_exists('libraries') && libraries_get_path('phpseclib')) {
    $phpsec_include_path = libraries_get_path('phpseclib');
  }
  else {
    $phpsec_include_path = dirname(__FILE__) . '/phpseclib';
  }
  if (file_exists($phpsec_include_path . '/Crypt/AES.php') === FALSE) {
    return -2;
  }
  if (is_readable($phpsec_include_path . '/Crypt/AES.php') === FALSE) {
    return -3;
  }
  if (function_exists('set_include_path') == FALSE) {
    return -1;
  }
  set_include_path(get_include_path() . PATH_SEPARATOR . $phpsec_include_path);
  include_once 'Crypt/AES.php';
  return TRUE;
}