2009-01-24 8 views
14

के साथ काम करने के लिए अमेज़न सेवाएं (एस 3, EC2, SimpleDB) आप HMAC-SHA-1 हस्ताक्षर (http://en.wikipedia.org/wiki/HMAC, http://docs.amazonwebservices.com/AWSFWS/latest/DeveloperGuide/index.html?SummaryOfAuthentication.html) के साथ सभी resquest अप करने की आवश्यकता के साथ सभी आपरेशन के लिए है।वहाँ एक पुस्तकालय iPhone HMAC-SHA-1 एन्कोडिंग

मैं एएसपीनेट बैकएंड के तहत काम कर रहा हूं और इसमें कोई समस्या नहीं है। आईफोन एप्लिकेशन में समस्या है। आईफोन डेवलपर का कहना है कि एचएमएसी-एसएचए -1 एन्कोडिंग का उपयोग करने का कोई तरीका नहीं है, और उसके पास अपने स्वयं के एल्गोरिदम को लागू करने के लिए कोई कठोरता नहीं है। प्रोग्रामर के रूप में मैं समझ नहीं पा रहा हूं कि समस्या क्यों हो सकती है।

तो मुझे भी पता है कि आईफोन डेवलपर सही है?

मैंने कभी भी आईफोन के लिए कोड नहीं किया है, इसलिए मुझे ऐसी जानकारी भी नहीं मिलनी है।

+1

तो मूल रूप से अपने iPhone डेवलपर है गलत ... – schwa

उत्तर

6

CommonCrypto यह करना होगा। लेकिन अगर आप कोड चाहते हैं, मैं कुछ यहाँ है:

http://oauth.googlecode.com/svn/code/obj-c/OAuthConsumer/Crypto/

कौन सा मैं कोको OAuth कार्यान्वयन में उपयोग के लिए लिखा है: http://code.google.com/p/oauthconsumer/wiki/UsingOAuthConsumer

+1

लेकिन याद रखें कि यह आपके आवेदन में क्रिप्टो कोड जोड़ता है और इसके परिणामस्वरूप स्वीकृति प्रक्रिया – stigi

0

मुझे नहीं पता कि यह अब और मामला है, लेकिन वहां एन्क्रिप्शन एल्गोरिदम पर प्रतिबंध थे और कुछ देशों को वितरित करने का आपका अधिकार प्रतिबंधित था।

यदि यह अभी भी मामला है तो यह हो सकता है कि ऐप्पल इन देशों में कुछ एप्लिकेशन डाउनलोड नहीं होने से रोक/प्रतिबंधित नहीं कर सकता।

2

विशेष रूप से आईफोन के लिए नहीं, लेकिन लाइब्रेरी libs3 अमेज़ॅन की एस 3 सेवाओं तक पहुंचने के लिए एक सीपीआई प्रदान करता है। यह, या FUSE s3fs घटक, अमेज़ॅन की वेब सेवाओं के साथ संवाद करने के लिए आवश्यक दिनचर्या निकालने के लिए अच्छे स्रोत हो सकते हैं। चूंकि उद्देश्य-सी अभी भी इसके मूल पर सी है, इन दिनचर्याओं को आईफोन पर ठीक काम करना चाहिए।

मुझे कम से कम एक डेवलपर पता है जो एस 3 बाल्टी के साथ संवाद करने के लिए अपने आईफोन एप्लिकेशन के समान कुछ उपयोग कर रहा है।

+0

हाय: समारोह यदि आप इसे एक ही इनपुट दे उत्पन्न होगा! और क्या आपने libs3 के साथ काम किया? – Hate

2

मुझे लगता है कि कॉमनक्रिप्टो लाइब्रेरी आप जो चाहें वह करेगी। इस फाइल को देखो:

/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.sdk/usr/include/CommonCrypto/CommonHMAC.h

14

CommonCrypto काम कर देता है।

#import <CommonCrypto/CommonHMAC.h> 

फिर बाद में

/* 
    inputs: 
    NSData *keyData; 
    NSData *clearTextData 
*/ 

uint8_t digest[CC_SHA1_DIGEST_LENGTH] = {0}; 

CCHmacContext hmacContext; 
CCHmacInit(&hmacContext, kCCHmacAlgSHA1, keyData.bytes, keyData.length); 
CCHmacUpdate(&hmacContext, clearTextData.bytes, clearTextData.length); 
CCHmacFinal(&hmacContext, digest); 

NSData *out = [NSData dataWithBytes:digest length:CC_SHA1_DIGEST_LENGTH]; 
+1

के दौरान समस्याएं हो सकती हैं यह एक साधारण सवाल हो सकता है ... * को परिवर्तित करने के लिए आप [[NSString alloc] initWithData: आउट एन्कोडिंग जैसे कुछ उपयोग करेंगे: NSUTF8StringEncoding] ;? –

+1

बस इसी तरह। आप वास्तविक जीवन उदाहरण के लिए http://github.com/soundcloud/cocoa-api-wrapper/blob/b9e73f9cba5eec1dec9ac650d7059cc9ce23c76d/SoundCloudAPI/Outsourced/OAuthConsumer/OAHMAC_SHA1SignatureProvider.m देख सकते हैं। – stigi

4

googling के बारे में थोड़ी और मैं this document पाया।

SHA1 का निर्यात (संयुक्त Statese) संघीय सरकार निर्यात नियंत्रणों के अधीन है और निर्यातकों अधिक जानकारी के लिए वाणिज्य, निर्यात प्रशासन के ब्यूरो के विभाग से संपर्क करने के लिए सलाह दी जाती है।

मैं भी this पाया:

चीन जनवादी गणराज्य और पूर्व सोवियत ब्लॉक तक SHA आयात कर सकते हैं के रूप में यह नहीं बल्कि सैन्य उद्देश्य के लिए की तुलना में सिविल अंतिम-उपयोगकर्ता अनुप्रयोगों के लिए है। निम्नलिखित देशों को से प्रतिबंधित किया गया है SHA: क्यूबा, ​​ईरान, इराक, लीबिया, उत्तरी कोरिया, सर्बिया, सीरिया, और सुदान। कृपया ध्यान दें कि प्रतिबंधों की सूची इस समय के साथ बदलती है।

(अपने प्रश्न का कोई सीधा जवाब है, लेकिन निश्चित रूप से उचित।)

5

यह article एक छोटे से समारोह है कि एक SHA-1 हैश डाइजेस्ट कि क्या php SHA1 से मेल खाएगी उत्पन्न होगा यह दर्शाता है()

#import <CommonCrypto/CommonDigest.h> 

@implementation SHA1 

+(NSString*) digest:(NSString*)input 
{ 
const char *cstr = [input cStringUsingEncoding:NSUTF8StringEncoding]; 
NSData *data = [NSData dataWithBytes:cstr length:input.length]; 

uint8_t digest[CC_SHA1_DIGEST_LENGTH]; 

CC_SHA1(data.bytes, data.length, digest); 

NSMutableString* output = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2]; 

for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) 
[output appendFormat:@"%02x", digest[i]]; 

return output; 

} 
@end 
+1

SHA-1 एचएमएसी-एसएचए -1 जैसी ही बात नहीं है। –

+0

लागू रूपांतरण पूर्णांक परिशुद्धता खो देता है (NSUInteger CC_LONG तक) – Jonny

संबंधित मुद्दे