Beispiel #1
0
 /**
  * Generates an RSA-SHA1 signature.
  *
  * @package optimizeMember\Utilities
  * @since 111017
  *
  * @param str $string Input string/data, to be signed by this routine.
  * @param str $key The secret key that will be used in this signature.
  * @return str|bool An RSA-SHA1 signature string, or false on failure.
  */
 public static function rsa_sha1_sign($string = FALSE, $key = FALSE)
 {
     $key = c_ws_plugin__optimizemember_utils_strings::_rsa_sha1_key_fix_wrappers((string) $key);
     /**/
     $signature = c_ws_plugin__optimizemember_utils_strings::_rsa_sha1_shell_sign((string) $string, (string) $key);
     /**/
     if (empty($signature) && stripos(PHP_OS, "win") === 0 && file_exists($openssl = "c:\\openssl-win32\\bin\\openssl.exe")) {
         $signature = c_ws_plugin__optimizemember_utils_strings::_rsa_sha1_shell_sign((string) $string, (string) $key, $openssl);
     }
     /**/
     if (empty($signature) && stripos(PHP_OS, "win") === 0 && file_exists($openssl = "c:\\openssl-win64\\bin\\openssl.exe")) {
         $signature = c_ws_plugin__optimizemember_utils_strings::_rsa_sha1_shell_sign((string) $string, (string) $key, $openssl);
     }
     /**/
     if (empty($signature) && function_exists("openssl_get_privatekey") && function_exists("openssl_sign") && is_resource($private_key = openssl_get_privatekey((string) $key))) {
         openssl_sign((string) $string, $signature, $private_key, OPENSSL_ALGO_SHA1) . openssl_free_key($private_key);
     }
     /**/
     if (empty($signature)) {
         /* Now, if we're still empty, trigger an error here. */
         trigger_error("optimizeMember was unable to generate an RSA-SHA1 signature." . " Please make sure your installation of PHP is compiled with OpenSSL: `openssl_sign()`." . " See: http://php.net/manual/en/function.openssl-sign.php", E_USER_ERROR);
     }
     /**/
     return !empty($signature) ? $signature : false;
 }