/** * プライベートキー取得時使用 * @return array * @access public */ function &getEncryptionKeys() { // 有効期限が切れてないものを取得 $int_time = mktime(date("H"), date("i"), date("s"), date("m"), date("d") - $this->expiration_day, date("Y")); $time = date("YmdHis", $int_time); $where_params = array("expiration_time >= " . $time => null); $result = $this->_db->selectExecute("encryption", $where_params, null, 1); if ($result === false) { return $result; } if (!isset($result[0])) { // 有効期限が切れている or 新規作成 $key_pair = new Crypt_RSA_KeyPair($this->key_length); $public_key = $key_pair->getPublicKey(); $private_key = $key_pair->getPrivateKey(); //insert $update_time = timezone_date(); $container =& DIContainerFactory::getContainer(); $session =& $container->getComponent("Session"); $user_id = $session->getParameter("_user_id"); $int_time = mktime(date("H"), date("i"), date("s"), date("m"), date("d") + $this->expiration_day, date("Y")); $time = date("YmdHis", $int_time); $params = array("public_key" => $public_key->toString(), "private_key" => $private_key->toString(), "key_length" => $this->key_length, "expiration_time" => $time, "update_time" => $update_time, "update_user" => $user_id); $result = $this->_db->insertExecute("encryption", $params, false); if ($result === false) { return $result; } } else { $params = $result[0]; //$private_key = $result[0]['private_key']; } return $params; }
$text = '1234567890'; $enc_text = $rsa_obj->encrypt($text, $public_key1); $private_key = Crypt_RSA_Key::fromString($private_key_str, MATH_LIBRARY, 'check_error'); $text1 = $rsa_obj->decrypt($enc_text, $private_key); if ($text != $text1) { $errors[] = "error in Crypt_RSA_Key class methods"; } /////////////////////////////////////////////// // test all functionality of Crypt_RSA class /////////////////////////////////////////////// // create Crypt_RSA object $rsa_obj = new Crypt_RSA(array(), MATH_LIBRARY, 'check_error'); // create Crypt_RSA_KeyPair object $key_pair = new Crypt_RSA_KeyPair(256, MATH_LIBRARY, 'check_error'); // check encrypting/decrypting function's behaviour $params = array('enc_key' => $key_pair->getPublicKey(), 'dec_key' => $key_pair->getPrivateKey()); $rsa_obj->setParams($params); $text = '1234567890'; $enc_text = $rsa_obj->encrypt($text); $text1 = $rsa_obj->decrypt($enc_text); if ($text != $text1) { $errors[] = "error in encrypting/decrypting functions"; } // check signing/sign validating $params = array('public_key' => $key_pair->getPublicKey(), 'private_key' => $key_pair->getPrivateKey()); $rsa_obj->setParams($params); $text = '1234567890'; $sign = $rsa_obj->createSign($text); if (!$rsa_obj->validateSign($text, $sign)) { $errors[] = "error in signing/sign validating functions with default hash function"; }