package net.londatiga.android.twitter.oauth; import java.security.GeneralSecurityException; import java.io.UnsupportedEncodingException; import javax.crypto.Mac; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import net.londatiga.android.twitter.util.Base64; import net.londatiga.android.twitter.util.Debug; import net.londatiga.android.twitter.util.URIUtil; /** * Oauth signature. * * @author Lorensius W. L. T <lorenz@londatiga.net> * */ public class OauthSignature { public static final String MAC_NAME = "HmacSHA1"; public String createSignatureBase(String method, String url, String queryString) { StringBuffer sb = new StringBuffer(); sb.append(method); sb.append("&"); sb.append(URIUtil.encode(url)); sb.append("&"); sb.append(URIUtil.encode(queryString)); return sb.toString(); } public String createRequestSignature(String signatureBase, String consumerSecret, String tokenSecret) throws Exception { try { String keyString = URIUtil.encode(consumerSecret) + '&' + URIUtil.encode(tokenSecret); Debug.i("key " + keyString); byte[] keyBytes = keyString.getBytes("UTF-8"); SecretKey key = new SecretKeySpec(keyBytes, MAC_NAME); Mac mac = Mac.getInstance(MAC_NAME); mac.init(key); byte[] text = signatureBase.getBytes("UTF-8"); return Base64.encodeBytes(mac.doFinal(text)).trim(); } catch (GeneralSecurityException e) { throw e; } catch (UnsupportedEncodingException e) { throw e; } } }