Can somebody recalculate test example from http://dev.twitter.com/pages/xauth
???

I'm looking for oauth_signature parameter

I'm getting different result and it does not make any sense so far

On Sep 13, 2:54 pm, Nikolay Klimchuk <klimc...@gmail.com> wrote:
> Thanks Tom
>
> I feel better now LoL
>
> On Sep 13, 2:41 pm, Tom van der Woerdt <i...@tvdw.eu> wrote:
>
>
>
> > 2010-09-13 20:39:11.190 Test[56513:207] NSData *HMAC: <3146268a 86d17682
> > bab34655 aa8e3140 d34ed7bc>
> > 2010-09-13 20:39:11.191 Test[56513:207] NSString *HMAC64:
> > MUYmiobRdoK6s0ZVqo4xQNNO17w=
>
> > Looks like you're right :-)
>
> > @episod: You should fix that! :-)
>
> > Tom
>
> > On 9/13/10 8:23 PM, Nikolay Klimchuk wrote:
>
> > > Still no luck
>
> > > With your code I'm gettings exactly the same result
> > > MUYmiobRdoK6s0ZVqo4xQNNO17w=
>
> > > Something really strange in example herehttp://dev.twitter.com/pages/xauth
>
> > > Nikolay Klimchuk
>
> > > On Sep 13, 7:19 am, Tom van der Woerdt <i...@tvdw.eu> wrote:
> > >> Oh, hehe, good point. That's because my Base String has one extra
> > >> urlencoded '&' on the end, and that shouldn't be there.
>
> > >> Tom
>
> > >> On Mon, 13 Sep 2010 04:18:06 -0700 (PDT), Nikolay Klimchuk
>
> > >> <klimc...@gmail.com> wrote:
> > >>> Thank you Tom
>
> > >>> I will try your algorithm and compare results.
> > >>> Quick question: why you do this [str substringToIndex:[str
> > >>> length]-3] ?
>
> > >>> Nikolay Klimchuk
>
> > >>> On Sep 13, 2:46 am, Tom van der Woerdt <i...@tvdw.eu> wrote:
> > >>>> Hi Nikolay,
>
> > >>>> The first part of your code looks fine. You may, however, like to do
> > >>>> some debugging on the HMAC part - it looks a bit too simple to me.
>
> > >>>> This works :
> > >>>>         NSString *compKey = [NSString 
> > >>>> stringWithFormat:@"%@&%@",secret,userSecret];
> > >>>>         const char *cKey = [compKey 
> > >>>> cStringUsingEncoding:NSUTF8StringEncoding];
> > >>>>         const char *cData = [[str substringToIndex:[str length]-3]
> > >>>> cStringUsingEncoding:NSUTF8StringEncoding];
> > >>>>         unsigned char cHMAC[CC_SHA1_DIGEST_LENGTH];
> > >>>>         CCHmac(kCCHmacAlgSHA1, cKey, strlen(cKey), cData, 
> > >>>> strlen(cData), cHMAC);
> > >>>>         NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC 
> > >>>> length:sizeof(cHMAC)];
> > >>>> (str being the Base String)
>
> > >>>> Hope it helps :-)
>
> > >>>> Tom
>
> > >>>> On 9/13/10 3:02 AM, Nikolay Klimchuk wrote:
>
> > >>>>> I'm trying to understand why algorithm for calculation of
> > >>>>> oauth_signature does not give me the same result as shown here:
> > >>>>>http://dev.twitter.com/pages/xauth
>
> > >>>>> In my case I'm getting signedSK = 'MUYmiobRdoK6s0ZVqo4xQNNO17w='
>
> > >>>>> If I URL encode such result it's still very different from
> > >>>>> yUDBrcMMm6ghqBEKCFKVoJPIacU%3D
>
> > >>>>> I've tried different implementations, all of them give the same
> > >>>>> result. After few hours of exercises with all this stuff I completely
> > >>>>> run out of ideas, please help
>
> > >>>>> // Test with input data taken from Twitter page
>
> > >>>>> NSString *s= @"POST&https%3A%2F%2Fapi.twitter.com%2Foauth
> > >>>>> %2Faccess_token&oauth_consumer_key%3DsGNxxnqgZRHUt6NunK3uw
> > >>>>> %26oauth_nonce%3DWLxsobj4rhS2xmCbaAeT4aAkRfx4vSHX4OnYpTE77hA
> > >>>>> %26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp
> > >>>>> %3D1276101652%26oauth_version%3D1.0%26x_auth_mode%3Dclient_auth
> > >>>>> %26x_auth_password%3D%2525%2526123%2521aZ%252B
> > >>>>> %2528%2529456242134%26x_auth_username%3DtpFriendlyGiant";
>
> > >>>>> NSString *k = @"5kEQypKe7lFHnufLtsocB1vAzO07xLFgp2Pc4sp2vk&";
>
> > >>>>> NSString *signedSK = [NetworkManager base64forData:[NetworkManager
> > >>>>> HMACSHA1withKey:k forString:s]];
>
> > >>>>> // Source code
>
> > >>>>> + (NSData *)HMACSHA1withKey:(NSString *)key forString:(NSString
> > >>>>> *)string
> > >>>>> {
> > >>>>>    NSData *clearTextData = [string
> > >>>>> dataUsingEncoding:NSUTF8StringEncoding];
> > >>>>>    NSData *keyData = [key dataUsingEncoding:NSUTF8StringEncoding];
>
> > >>>>>    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);
>
> > >>>>>    return [NSData dataWithBytes:digest length:CC_SHA1_DIGEST_LENGTH];
> > >>>>> }
>
> > >>>>> //Sourcehttp://www.cocoadev.com/index.pl?BaseSixtyFour
>
> > >>>>> + (NSString *)base64forData:(NSData *)data
> > >>>>> {
> > >>>>>     static const char encodingTable[] =
> > >>>>> "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
>
> > >>>>>     if ([data length] == 0)
> > >>>>>         return @"";
>
> > >>>>>     char *characters = malloc((([data length] + 2) / 3) * 4);
> > >>>>>     if (characters == NULL)
> > >>>>>         return nil;
> > >>>>>     NSUInteger length = 0;
>
> > >>>>>     NSUInteger i = 0;
> > >>>>>     while (i < [data length])
> > >>>>>     {
> > >>>>>         char buffer[3] = {0,0,0};
> > >>>>>         short bufferLength = 0;
> > >>>>>         while (bufferLength < 3 && i < [data length])
> > >>>>>                    buffer[bufferLength++] = ((char *)[data 
> > >>>>> bytes])[i++];
>
> > >>>>>         //  Encode the bytes in the buffer to four characters,
> > >>>>> including padding "=" characters if necessary.
> > >>>>>         characters[length++] = encodingTable[(buffer[0] & 0xFC) >> 2];
> > >>>>>         characters[length++] = encodingTable[((buffer[0] & 0x03) << 4)
> > >>>>> | ((buffer[1] & 0xF0) >> 4)];
> > >>>>>         if (bufferLength > 1)
> > >>>>>                    characters[length++] = encodingTable[((buffer[1] & 
> > >>>>> 0x0F) << 2) |
> > >>>>> ((buffer[2] & 0xC0) >> 6)];
> > >>>>>         else characters[length++] = '=';
> > >>>>>         if (bufferLength > 2)
> > >>>>>                    characters[length++] = encodingTable[buffer[2] & 
> > >>>>> 0x3F];
> > >>>>>         else characters[length++] = '=';
> > >>>>>     }
>
> > >>>>>     return [[[NSString alloc] initWithBytesNoCopy:characters
> > >>>>> length:length encoding:NSASCIIStringEncoding freeWhenDone:YES]
> > >>>>> autorelease];
> > >>>>> }

-- 
Twitter developer documentation and resources: http://dev.twitter.com/doc
API updates via Twitter: http://twitter.com/twitterapi
Issues/Enhancements Tracker: http://code.google.com/p/twitter-api/issues/list
Change your membership to this group: 
http://groups.google.com/group/twitter-development-talk?hl=en

Reply via email to