Mercurial > hg > ywww
diff php/read/aws_signed_request.php @ 6:077b0a0a3e6d
remaining originals according to dependency walk
author | Robert Boland <robert@markup.co.uk> |
---|---|
date | Thu, 16 Feb 2017 22:29:02 +0000 |
parents | |
children | 2c0c95bd97a6 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/php/read/aws_signed_request.php Thu Feb 16 22:29:02 2017 +0000 @@ -0,0 +1,106 @@ +<?php + +//20090627/Jaap van Ganswijk: This is a modified version, see the +//return statement some lines before the end of the last function. + +if (!function_exists("aws_signed_request")) { +function aws_signed_request($region, $params, $public_key, $private_key) +{ + /* + Copyright (c) 2009 Ulrich Mierendorff + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. + */ + + /* + Parameters: + $region - the Amazon(r) region (ca,com,co.uk,de,fr,jp) + $params - an array of parameters, eg. array("Operation"=>"ItemLookup", + "ItemId"=>"B000X9FLKM", "ResponseGroup"=>"Small") + $public_key - your "Access Key ID" + $private_key - your "Secret Access Key" + */ + + // some paramters + $method = "GET"; + $host = "ecs.amazonaws.".$region; + $uri = "/onca/xml"; + + // additional parameters + $params["Service"] = "AWSECommerceService"; + $params["AWSAccessKeyId"] = $public_key; + // GMT timestamp + $params["Timestamp"] = gmdate("Y-m-d\TH:i:s\Z"); + // API version + $params["Version"] = "2011-08-01"; + + // sort the parameters + ksort($params); + + // create the canonicalized query + $canonicalized_query = array(); + foreach ($params as $param=>$value) + { + $param = str_replace("%7E", "~", rawurlencode($param)); + $value = str_replace("%7E", "~", rawurlencode($value)); + $canonicalized_query[] = $param."=".$value; + } + $canonicalized_query = implode("&", $canonicalized_query); + + // create the string to sign + $string_to_sign = $method."\n".$host."\n".$uri."\n".$canonicalized_query; + + // calculate HMAC with SHA256 and base64-encoding + $signature = base64_encode(hash_hmac("sha256", $string_to_sign, $private_key, True)); + + // encode the signature for the request + $signature = str_replace("%7E", "~", rawurlencode($signature)); + + // create request + $request = "http://".$host.$uri."?".$canonicalized_query."&Signature=".$signature; + +//20090627 and 20090804/Jaap van Ganswijk: I added the next lines +//and commented out the others to prevent getting the file and +//interpreting the XML because my script likes to do that itself. + + return $request; + +// // do request +// $response = @file_get_contents($request); +// +// if ($response === False) +// { +// return False; +// } +// else +// { +// // parse XML +// $pxml = simplexml_load_string($response); +// if ($pxml === False) +// { +// return False; // no xml +// } +// else +// { +// return $pxml; +// } +// } +} +} +?>