/**
  * Creates an Amazon S3 AWS4-HMAC-SHA256 signature.
  *
  * @package s2Member\Files
  * @since 150108
  *
  * @param string $string Input string/data, to be signed by this routine.
  *
  * @return string An AWS4-HMAC-SHA256 signature for Amazon S3.
  */
 public static function amazon_s34_sign($string = '')
 {
     $s3c = array();
     // Initialize config. keys.
     foreach ($GLOBALS['WS_PLUGIN__']['s2member']['o'] as $option => $option_value) {
         if (preg_match('/^amazon_s3_files_/', $option) && ($option = preg_replace('/^amazon_s3_files_/', '', $option))) {
             $s3c[$option] = $option_value;
         }
     }
     $s3_date_key = c_ws_plugin__s2member_utils_strings::hmac_sha256_sign(gmdate('Ymd'), 'AWS4' . $s3c['secret_key'], TRUE);
     $s3_date_region_key = c_ws_plugin__s2member_utils_strings::hmac_sha256_sign($s3c['bucket_region'], $s3_date_key, TRUE);
     $s3_date_region_service_key = c_ws_plugin__s2member_utils_strings::hmac_sha256_sign('s3', $s3_date_region_key, TRUE);
     $s3_signing_key = c_ws_plugin__s2member_utils_strings::hmac_sha256_sign('aws4_request', $s3_date_region_service_key, TRUE);
     return c_ws_plugin__s2member_utils_strings::hmac_sha256_sign((string) $string, $s3_signing_key);
 }