You are currently browsing the Batista R. Harahap posts tagged: hmac sha1


HMAC-SHA1 Base64 Result With Objective-C

A few days of hard done nights were all inspired by faulty encodings. Talk about “Hello World” experiences LOL. Keeping things in mind, to really smooth things up between Objective-C and PHP, in any Objective-C functions needing to encode/decode strings like PHP, here’s the encoding type:

NSASCIIStringEncoding

Do not interchange this with any other or things will go wrong :( Here are snippets to generate HMAC-SHA1 hashes in its Base64 form encoded correctly for OAUTH v1.0a authentication.

The Base64Transcoder library is the work of Jonathan Wright, available at http://code.google.com/p/oauth/. Cheers!

Android – Create SHA1 Hash

I’ve been toying with Urbanesia’s OAuth provider API calls in Android these few hours regretting why it is so complicated in Java compared to PHP hehehe. Since OAuth’s requirement to generate a signature is using HMAC SHA1 to sign the whole POST & GET requests, I had to find a way to do it in Android’s Java.

So I scour Google to look for answers but sadly the results is surprisingly scarce. I wanted to make a standardize OAuth client for Urbanesia’s API but the standard libraries provided by the Android SDK is not what I’ve expected. For this to work, will need to download Apache Commons Codec Library here. So without further ado, here are the codes.

	private String sha1(String s, String keyString) throws 
		UnsupportedEncodingException, NoSuchAlgorithmException, 
			InvalidKeyException {
 
		SecretKeySpec key = new SecretKeySpec((keyString).getBytes("UTF-8"), "HmacSHA1");
		Mac mac = Mac.getInstance("HmacSHA1");
		mac.init(key);
 
		byte[] bytes = mac.doFinal(s.getBytes("UTF-8"));
 
		return new String( Base64.encodeBase64(bytes) );
	}

photo of Batista Batista R Harahap [email protected]
Jl. Bango II/29C, Pondok Labu
Cilandak , DKI Jakarta , 12450 Indonesia
62817847023

This hCard created with the hCard creator.