Mercurial > hg > ywww
comparison xml/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 |
comparison
equal
deleted
inserted
replaced
5:55445b456ad0 | 6:077b0a0a3e6d |
---|---|
1 <?php | |
2 | |
3 //20090627/Jaap van Ganswijk: This is a modified version, see the | |
4 //return statement some lines before the end of the last function. | |
5 | |
6 if (!function_exists("aws_signed_request")) { | |
7 function aws_signed_request($region, $params, $public_key, $private_key) | |
8 { | |
9 /* | |
10 Copyright (c) 2009 Ulrich Mierendorff | |
11 | |
12 Permission is hereby granted, free of charge, to any person obtaining a | |
13 copy of this software and associated documentation files (the "Software"), | |
14 to deal in the Software without restriction, including without limitation | |
15 the rights to use, copy, modify, merge, publish, distribute, sublicense, | |
16 and/or sell copies of the Software, and to permit persons to whom the | |
17 Software is furnished to do so, subject to the following conditions: | |
18 | |
19 The above copyright notice and this permission notice shall be included in | |
20 all copies or substantial portions of the Software. | |
21 | |
22 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
23 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
24 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL | |
25 THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
26 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |
27 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | |
28 DEALINGS IN THE SOFTWARE. | |
29 */ | |
30 | |
31 /* | |
32 Parameters: | |
33 $region - the Amazon(r) region (ca,com,co.uk,de,fr,jp) | |
34 $params - an array of parameters, eg. array("Operation"=>"ItemLookup", | |
35 "ItemId"=>"B000X9FLKM", "ResponseGroup"=>"Small") | |
36 $public_key - your "Access Key ID" | |
37 $private_key - your "Secret Access Key" | |
38 */ | |
39 | |
40 // some paramters | |
41 $method = "GET"; | |
42 $host = "ecs.amazonaws.".$region; | |
43 $uri = "/onca/xml"; | |
44 | |
45 // additional parameters | |
46 $params["Service"] = "AWSECommerceService"; | |
47 $params["AWSAccessKeyId"] = $public_key; | |
48 // GMT timestamp | |
49 $params["Timestamp"] = gmdate("Y-m-d\TH:i:s\Z"); | |
50 // API version | |
51 $params["Version"] = "2011-08-01"; | |
52 | |
53 // sort the parameters | |
54 ksort($params); | |
55 | |
56 // create the canonicalized query | |
57 $canonicalized_query = array(); | |
58 foreach ($params as $param=>$value) | |
59 { | |
60 $param = str_replace("%7E", "~", rawurlencode($param)); | |
61 $value = str_replace("%7E", "~", rawurlencode($value)); | |
62 $canonicalized_query[] = $param."=".$value; | |
63 } | |
64 $canonicalized_query = implode("&", $canonicalized_query); | |
65 | |
66 // create the string to sign | |
67 $string_to_sign = $method."\n".$host."\n".$uri."\n".$canonicalized_query; | |
68 | |
69 // calculate HMAC with SHA256 and base64-encoding | |
70 $signature = base64_encode(hash_hmac("sha256", $string_to_sign, $private_key, True)); | |
71 | |
72 // encode the signature for the request | |
73 $signature = str_replace("%7E", "~", rawurlencode($signature)); | |
74 | |
75 // create request | |
76 $request = "http://".$host.$uri."?".$canonicalized_query."&Signature=".$signature; | |
77 | |
78 //20090627 and 20090804/Jaap van Ganswijk: I added the next lines | |
79 //and commented out the others to prevent getting the file and | |
80 //interpreting the XML because my script likes to do that itself. | |
81 | |
82 return $request; | |
83 | |
84 // // do request | |
85 // $response = @file_get_contents($request); | |
86 // | |
87 // if ($response === False) | |
88 // { | |
89 // return False; | |
90 // } | |
91 // else | |
92 // { | |
93 // // parse XML | |
94 // $pxml = simplexml_load_string($response); | |
95 // if ($pxml === False) | |
96 // { | |
97 // return False; // no xml | |
98 // } | |
99 // else | |
100 // { | |
101 // return $pxml; | |
102 // } | |
103 // } | |
104 } | |
105 } | |
106 ?> |