Прежде всего, вы должны включить определения Crypto для обработки вашего запроса
#import <CommonCrypto/CommonHMAC.h>
Используя эту функцию, Вы можете переварить Ваш запрос. Ключ является секретным ключом, предоставленным Amazon
NSString *calcSignature(NSString *aString, NSString *key)
{
const char *cKey = [key cStringUsingEncoding: NSUTF8StringEncoding];
const char *cData = [aString cStringUsingEncoding: NSUTF8StringEncoding];
// Calculate SHA256-signature
unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC
length:sizeof(cHMAC)];
// return Base64 encoded
return [HMAC base64EncodedStringWithOptions:0];
}
Дайджест следующего образца requestString
POST /Feeds/2009-01-01 HTTP/1.1
Content-Type: x-www-form-urlencoded
Host: mws.amazonservices.com
User-Agent: <Your User Agent Header>
AWSAccessKeyId=0PExampleR2
&Action=CancelFeedSubmissions
&FeedSubmissionIdList.Id.1=1058369303
&FeedTypeList.Type.1=_POST_PRODUCT_DATA_
&FeedTypeList.Type.2=_POST_PRODUCT_PRICING_DATA_
&MWSAuthToken=amzn.mws.4ea38b7b-f563-7709-4bae-87aeaEXAMPLE
&Marketplace=ATExampleER
&SellerId=A1ExampleE6
&SignatureMethod=HmacSHA256
&SignatureVersion=2
&Timestamp=2009-02-04T17%3A34%3A14.203Z
&Version=2009-01-01
Теперь вы можете вычислить подпись
NSString *signatureString = calcSignature(requestString, amazonSecretKey);
Эти подписи прилагаются к запросу, и Вы должны получить результат. Вы можете немного протестировать и контролировать, отправляете ли вы правильную подпись с помощью Amazon Scratchpad.