単純という人がいますが、やってみればわかるけど独特の表記方法とかあるので理解するのが難しい面もありますよ。
とりあえずやってみたサンプル書きます。
以下のサイトのステップ8と結果が一致したのであってると思います。
https://affiliate.amazon.co.jp/gp/associates/help/t126/a13?ie=UTF8&pf_rd_i=assoc_help_t126_a12&pf_rd_m=AN1VRQENFRJN5&pf_rd_p=&pf_rd_r=&pf_rd_s=center-2&pf_rd_t=501&ref_=amb_link_84046596_2
ただし最後の結果はbase64でエンコードしてますがそれはHMACの仕様ではないみたいです。
あと以下のサンプルはとりあえずやってみたもので無駄が多いです。
いろいろ最適化すればもっと簡潔にできます。
サンプルの実行にはlongintというプラグインが必要です。
http://www.vector.co.jp/soft/dl/win95/prog/se397330.html
#include "rsa.hsp"
key="1234567890"
lf="":wpoke lf,0,0x0a ;Cの\n相当の文字。HSPの\nと他言語の\nは違うので
text="GET"+lf
text+="webservices.amazon.com"+lf
text+="/onca/xml"+lf
text+="AWSAccessKeyId=00000000000000000000&ItemId=0679722769&Operation=ItemLookup&ResponseGroup=ItemAttributes%2COffers%2CImages%2CReviews&Service=AWSECommerceService&Timestamp=2009-01-01T12%3A00%3A00Z&Version=2009-01-06"
dim ipad,16
memset ipad,0x36,64
dim opad,16
memset opad,0x5c,64
l=strlen(key)
memset key,0,64-l,l
InitSha256 context
repeat 64
c=peek(key,cnt)^peek(opad,cnt)
InputSha256 context,c,1
loop
InitSha256 context2
repeat 64
c=peek(key,cnt)^peek(ipad,cnt)
InputSha256 context2,c,1
loop
InputSha256 context2,text,strlen(text)
OutputSha256 context2,hash,0
InputSha256 context,hash,32
OutputSha256 context,hash,0
EncodeBase64 result,hash,32
mes result