nigoroさま、ありがとうございます.
「security/pecl-hash」を試してみます.
とりあえず、インストールだけやってみました.# cd /usr/ports/security/pecl-hash
# make
# make install
この後、簡単なスクリプトを作って動作するか試してみます.
さー、どうなることやら.
security/pecl-hash をインストール後、rehash して apachectl restart してみました.
以下のような php スクリプトを作成.<?php
echo hash_hmac('sha256','ハッシュするメッセージ','ひみつ鍵');
?>
これをブラウザで読み込むと、
おー、ハッシュの作成が出来ました.
nigoroさま、ありがとうございました.
おかげで先に進めそうです.
正直、これが出来ないなら php5 の環境を一から作らねばいけないと思っていた所ですので、大変助かりました.
ありがとうございます.
さてさて、ハッシュを作る環境が整ったので、Product Advertising API へ送るリクエストを試作してみます.
リクエストに必要な要素は、AWSAccessKeyId=ないしょだよ
IdType=ASIN
ItemId=B00005EQK4
Operation=ItemLookup
ResponseGroup=EditorialReview%2CImages%2CTracks
Service=AWSECommerceService
Timestamp=2009-05-18T14%3A10%3A00Z
Version=2009-01-06
この頭に「GET webservices.amazon.co.jp /onca/xml」の文字列を付与する.GET webservices.amazon.co.jp /onca/xml AWSAccessKeyId=[おしえてあげない]&IdType=ASIN&ItemId=B00005EQK4&Operation=ItemLookup&ResponseGroup=EditorialReview%2CImages%2CTracks&Service=AWSECommerceService&Timestamp=2009-05-18T14%3A10%3A00Z&Version=2009-01-06
(横に長くてごめんなさい)
この文字列のハッシュ値を得ます.
ハッシュ値を得るための鍵は、http://aws.amazon.com/のページから「Your Account」→「Access Identifiers」とたどり「Your Secret Access Key」を表示させると得られます.
先ほどの文字列を「$さっきの文字列」Amazonのひみつのアクセスキーを「$シークレットアクセスキー」として、ハッシュ値を計算させてみます.<?php
$hash = hash_hmac('sha256', $さっきの文字列, $シークレットアクセスキー, 'true');
$hash2 = base64_encode($hash);
echo urlencode($hash2);
?>
このPHPスクリプトにブラウザからアクセスするとハッシュ値が得られます.
得られたハッシュ値はこんな感じ.c0DLez1rLTUjmUJei%2Fg%2BMb0Ih3FscJCwX%2BTi0uuBQFQ%3D
ハッシュ値はちょっと置いといて、「先ほどの文字列」をちょっといじってやります.
「http://」を付与し、「GET」を捨てて、区切りの箇所を引っ付けて、おしりに「&Signature=」を付与してやります.http://webservices.amazon.co.jp/onca/xml?AWSAccessKeyId=[ないしょだよ]&IdType=ASIN&ItemId=B00005EQK4&Operation=ItemLookup&ResponseGroup=EditorialReview%2CImages%2CTracks&Service=AWSECommerceService&Timestamp=2009-05-18T14%3A10%3A00Z&Version=2009-01-06&Signature=
この後ろに肝心のハッシュ値をひっつけてやる.http://webservices.amazon.co.jp/onca/xml?AWSAccessKeyId=[ひみつだよ]&IdType=ASIN&ItemId=B00005EQK4&Operation=ItemLookup&ResponseGroup=EditorialReview%2CImages%2CTracks&Service=AWSECommerceService&Timestamp=2009-05-18T14%3A10%3A00Z&Version=2009-01-06&Signature=c0DLez1rLTUjmUJei%2Fg%2BMb0Ih3FscJCwX%2BTi0uuBQFQ%3D
_ さてさて、ここまででハマった事.
1. ResponseGroup を「%2C」で区切らねばいけなかった.
2. ハッシュ値を urlencode しなければいけなかった.
3. amazon.com ではなく amazon.co.jp にリクエストを送らねばいけなかったこと.((3)は、はかせの環境でのお話)
あとはこれを現行の環境にうまく組み込んでやらねばいけないのよ.
どうなる事やら...