TwitterOauth { public static String getHmacSha1(String data, String key) { SecretKeySpec signingKey = new SecretKeySpec(key.getBytes(), HMAC_SHA1_ALGORITHM); try { Mac mac = Mac.getInstance(HMAC_SHA1_ALGORITHM); mac.init(signingKey); return toBase64(mac.doFinal(data.getBytes())); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e.getMessage(), e); } catch (InvalidKeyException e) { throw new RuntimeException(e.getMessage(), e); } }  static String getOautHeaderString(Credentials credentials, String method, String baseUrl, Map<String, String> params); static String getOautHeaderString(Credentials credentials, String method, String baseUrl, Map<String, String> params, String nonce, int time); static String getOautHeaderString(String consumerKey, String signature, String accessToken, String nonce, int time); static String percentEncode(String s); static String getSignatureBaseString(String method, String baseUrl, String collectedParams); static String getSigningKey(String consumerSecret, String tokenSecret); static String getHmacSha1(String data, String key); static String collectOauthParams(Map<String, String> params,
                                            String consumerKey,
                                            String nonce,
                                            int timestamp,
                                            String token);  }
@Test public void testCalcSignature() { String signatureBaseString = "POST&https%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses%2Fupdate.json&include_entities%3Dtrue%26oauth_consumer_key%3Dxvz1evFS4wEEPTGEFPHBog%26oauth_nonce%3DkYjzVBB8Y0ZFabxSWbWovY3uYSQ2pTgmZeNu2VS4cg%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1318622958%26oauth_token%3D370773112-GmHxMAgYyLbNEtIKZeRNFsMKPR9EyMZeS9weJAEb%26oauth_version%3D1.0%26status%3DHello%2520Ladies%2520%252B%2520Gentlemen%252C%2520a%2520signed%2520OAuth%2520request%2521"; String signingKey = "kAcSOqF21Fu85e7zjz7ZN2U4ZRhfV3WpwPAoE3Z7kBw&LswwdoUaIvS8ltyTt5jkRh4J50vUPVVHtR2YPi5kE"; String expected = "tnnArxj06cWHq44gCs1OSKk/jLY="; Assert.assertEquals(expected, TwitterOauth.getHmacSha1(signatureBaseString, signingKey)); }