function encrypt_submissions_generate_keypair in Encrypt Submissions 6
Same name and namespace in other branches
- 7 encrypt_submissions.module \encrypt_submissions_generate_keypair()
This function, taken largely from the examples which come with jCryption, is called by AJAX and returns the relavant values needed to encrypt our form. It also places those same values into the SESSION, so we can decrypt it after the form submits.
For a little insurance, we will also create a unique token (based on the site's private key) and place that in the session. That way we can later on be sure that the form submission is legitimate, before we overwrite our $_POST.
1 string reference to 'encrypt_submissions_generate_keypair'
- encrypt_submissions_menu in ./
encrypt_submissions.module - Implementation of hook_menu
File
- ./
encrypt_submissions.module, line 184
Code
function encrypt_submissions_generate_keypair() {
$jcryption_location = variable_get("encrypt_submissions_jcryption_location", "");
$php_file = "{$jcryption_location}/jcryption.php";
if (!file_exists($php_file)) {
encrypt_submissions_check_library_files_exist();
$jcryption_location = variable_get("encrypt_submissions_jcryption_location", "");
$php_file = "{$jcryption_location}/jcryption.php";
}
require_once $php_file;
$keyLength = 256;
// If this is set too high, then key generation can take a long time.
// 256 bit should be plenty for the target users of this module. If you
// really need anything more than that, perhaps you should invest
// in an SSL cert after all!
$jCryption = new jCryption();
$keys = $jCryption
->generateKeypair($keyLength);
$_SESSION["es_e"] = array(
"int" => $keys["e"],
"hex" => $jCryption
->dec2string($keys["e"], 16),
);
$_SESSION["es_d"] = array(
"int" => $keys["d"],
"hex" => $jCryption
->dec2string($keys["d"], 16),
);
$_SESSION["es_n"] = array(
"int" => $keys["n"],
"hex" => $jCryption
->dec2string($keys["n"], 16),
);
// Create a token based on the e value and the site's private key.
$_SESSION["es_token"] = md5(drupal_get_private_key() . $_SESSION["es_e"]);
echo '{"e":"' . $_SESSION["es_e"]["hex"] . '","n":"' . $_SESSION["es_n"]["hex"] . '","maxdigits":"' . intval($keyLength * 2 / 16 + 3) . '"}';
return;
}