The code I've used is in the first message of this topic

On Sep 16, 12:21 pm, Taylor Singletary <taylorsinglet...@twitter.com>
wrote:
> Can you share the code you're using?
>
> On Wed, Sep 15, 2010 at 8:02 PM, Nikolay Klimchuk <klimc...@gmail.com>wrote:
>
>
>
> > That's really puzzling for me. I've tried 5 different ways to get
> > oauth_signature, even extracted from libraries suggested by Twitter
> > All of them produce same result MUYmiobRdoK6s0ZVqo4xQNNO17w=
> > It's different from examplehttp://dev.twitter.com/pages/xauth
>
> > I'm looking for any logical explanation for this
>
> > Nikolay Klimchuk
>
> > On Sep 15, 12:03 pm, Taylor Singletary <taylorsinglet...@twitter.com>
> > wrote:
> > > Hi Everyone,
>
> > > I've revised the xAuth examples athttp://dev.twitter.com/pages/xauth--
> > > you'll find they should have signatures that are easier to reproduce and
> > was
> > > confirmed functional at the time of execution.
>
> > > Thanks for the nudge, Tom.
>
> > > Thanks,
> > > Taylor
>
> > > On Mon, Sep 13, 2010 at 11:41 AM, 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 here
> > > >http://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
>
> > --
> > 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

-- 
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