/** * 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); }