You are here

function encrypt_get_key in Encrypt 6

Same name and namespace in other branches
  1. 7 includes/encrypt.crypt.inc \encrypt_get_key()

Get Key

Get key from appropriate place. Ideally the key should be stored outside the webroot, but may be stored in drupal files or in the db. If none are there, 'files_default' will be used

@reset Boolean whether to reset cache or not

Parameters

$key_name: Name of key, use 'default' by default

Return value

FALSE if no key found or Key Array with following keys.

  • "name": Name of key to be able to refer later
  • "key": Actual key
1 call to encrypt_get_key()
_encrypt_decrypt in includes/encrypt.crypt.inc
Private Encrypt and Decrypt

File

includes/encrypt.crypt.inc, line 77
This file holds the functions necessary to encrypt and decrypt

Code

function encrypt_get_key($key_name = NULL, $reset = FALSE) {
  static $keys = array();
  static $searched = FALSE;
  $return_array = array();

  // Check if keys has already been retrieved
  if (!$searched || $reset) {

    // Get secure encrypt file
    $encrypt_key_path = rtrim(variable_get('encrypt_secure_key_path', ''), '/\\');
    $encrypt_key_file = $encrypt_key_path . '/' . ENCRYPT_SECURE_KEY_FILE;

    // Check secure encrypt file
    if (file_exists($encrypt_key_file)) {
      $file_data = file_get_contents($encrypt_key_file);

      // Check if key is in file
      if (!empty($file_data)) {
        $keys[ENCRYPT_DEFAULT_KEY_FILE] = $file_data;
      }
    }

    // Though, this is insecure, we default to the drupal_private_key
    $keys[ENCRYPT_DEFAULT_KEY_DB] = variable_get('drupal_private_key', ENCRYPT_DEFAULT_KEY_NONE);

    // Mark as searched
    $searched = TRUE;
  }

  // Check key name
  if ($key_name == NULL) {
    $key_name = variable_get('encrypt_default_key', ENCRYPT_DEFAULT_KEY);
  }

  // If there is a vlaue for the key name, set
  if (!empty($keys[$key_name])) {
    $return_array = array(
      'name' => $key_name,
      'key' => $keys[$key_name],
    );
  }
  else {

    // If not found, and default was specified
    if (!empty($keys[ENCRYPT_DEFAULT_KEY_FILE]) && $key_name == ENCRYPT_DEFAULT_KEY) {
      $return_array = array(
        'name' => ENCRYPT_DEFAULT_KEY_FILE,
        'key' => $keys[ENCRYPT_DEFAULT_KEY_FILE],
      );
    }
    elseif (!empty($keys[ENCRYPT_DEFAULT_KEY_DB]) && $key_name == ENCRYPT_DEFAULT_KEY) {
      $return_array = array(
        'name' => ENCRYPT_DEFAULT_KEY_DB,
        'key' => $keys[ENCRYPT_DEFAULT_KEY_DB],
      );
    }
  }

  // Check if found
  if (empty($return_array)) {

    // Key not found
    watchdog('encrypt', 'Key name could not be found: %key_name', array(
      '%key_name',
      $key_name,
    ), WATCHDOG_ERROR);
    return FALSE;
  }
  else {
    return $return_array;
  }
}