Skip to content

Instantly share code, notes, and snippets.

@torinkwok
Last active December 21, 2015 12:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save torinkwok/9aea4d69fac1cf0ba27d to your computer and use it in GitHub Desktop.
Save torinkwok/9aea4d69fac1cf0ba27d to your computer and use it in GitHub Desktop.
Utilities used for forming OAuth signed request
#import <CommonCrypto/CommonHMAC.h>
NSString* TKSignWithHMACSHA1( NSString* _SignatureBaseString, NSString* _SigningKey );
NSString* TKTimestamp();
NSString* TKNonce();
#import "OAuthSigningConstants.h"
NSString* TKSignWithHMACSHA1( NSString* _SignatureBaseString, NSString* _SigningKey )
{
unsigned char buffer[ CC_SHA1_DIGEST_LENGTH ];
CCHmac( kCCHmacAlgSHA1
, _SigningKey.UTF8String, _SigningKey.length
, _SignatureBaseString.UTF8String, _SignatureBaseString.length
, buffer
);
NSData* signatureData = [ NSData dataWithBytes: buffer length: CC_SHA1_DIGEST_LENGTH ];
NSString* base64 = [ signatureData base64EncodedStringWithOptions: NSDataBase64Encoding64CharacterLineLength ];
return base64;
}
NSString* TKTimestamp()
{
NSTimeInterval UnixEpoch = [ [ NSDate date ] timeIntervalSince1970 ];
NSString* timestamp = [ NSString stringWithFormat: @"%lu", ( NSUInteger )floor( UnixEpoch ) ];
return timestamp;
}
NSString* TKNonce()
{
CFUUIDRef UUID = CFUUIDCreate( kCFAllocatorDefault );
CFStringRef cfStringRep = CFUUIDCreateString( kCFAllocatorDefault, UUID ) ;
NSString* stringRepresentation = [ ( __bridge NSString* )cfStringRep copy ];
if ( UUID )
CFRelease( UUID );
if ( cfStringRep )
CFRelease( cfStringRep );
return stringRepresentation;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment