package twitter4j.auth; import java.io.Serializable; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Random; import twitter4j.TwitterException; import twitter4j.conf.Configuration; import twitter4j.internal.http.HttpClientWrapper; import twitter4j.internal.http.HttpParameter; import twitter4j.internal.http.HttpRequest; import twitter4j.internal.http.RequestMethod; import twitter4j.internal.logging.Logger; import twitter4j.internal.util.z_T4JInternalStringUtil; public class OAuthAuthorization implements Authorization, Serializable, OAuthSupport { private static final String HMAC_SHA1 = "HmacSHA1"; private static final HttpParameter OAUTH_SIGNATURE_METHOD = new HttpParameter("oauth_signature_method", "HMAC-SHA1"); private static Random RAND = new Random(); private static transient HttpClientWrapper http; private static final Logger logger = Logger.getLogger(OAuthAuthorization.class); private static final long serialVersionUID = -4368426677157998618L; private final Configuration conf; private String consumerKey = ""; private String consumerSecret; private OAuthToken oauthToken = null; private String realm = null; public OAuthAuthorization(Configuration paramConfiguration) { this.conf = paramConfiguration; http = new HttpClientWrapper(paramConfiguration); setOAuthConsumer(paramConfiguration.getOAuthConsumerKey(), paramConfiguration.getOAuthConsumerSecret()); if ((paramConfiguration.getOAuthAccessToken() != null) && (paramConfiguration.getOAuthAccessTokenSecret() != null)) { setOAuthAccessToken(new AccessToken(paramConfiguration.getOAuthAccessToken(), paramConfiguration.getOAuthAccessTokenSecret())); } } static String constructRequestURL(String paramString) { int i = paramString.indexOf("?"); if (-1 != i) { paramString = paramString.substring(0, i); } int j = paramString.indexOf("/", 8); String str = paramString.substring(0, j).toLowerCase(); int k = str.indexOf(":", 8); if (-1 != k) { if ((!str.startsWith("http://")) || (!str.endsWith(":80"))) { break label105; } } for (str = str.substring(0, k);; str = str.substring(0, k)) { label105: do { return str + paramString.substring(j); } while ((!str.startsWith("https://")) || (!str.endsWith(":443"))); } } public static String encodeParameters(List<HttpParameter> paramList) { return encodeParameters(paramList, "&", false); } public static String encodeParameters(List<HttpParameter> paramList, String paramString, boolean paramBoolean) { StringBuilder localStringBuilder = new StringBuilder(); Iterator localIterator = paramList.iterator(); while (localIterator.hasNext()) { HttpParameter localHttpParameter = (HttpParameter)localIterator.next(); if (!localHttpParameter.isFile()) { if (localStringBuilder.length() != 0) { if (paramBoolean) { localStringBuilder.append("\""); } localStringBuilder.append(paramString); } localStringBuilder.append(HttpParameter.encode(localHttpParameter.getName())).append("="); if (paramBoolean) { localStringBuilder.append("\""); } localStringBuilder.append(HttpParameter.encode(localHttpParameter.getValue())); } } if ((localStringBuilder.length() != 0) && (paramBoolean)) { localStringBuilder.append("\""); } return localStringBuilder.toString(); } private void ensureTokenIsAvailable() { if (this.oauthToken == null) { throw new IllegalStateException("No Token available."); } } static String normalizeAuthorizationHeaders(List<HttpParameter> paramList) { Collections.sort(paramList); return encodeParameters(paramList); } static String normalizeRequestParameters(List<HttpParameter> paramList) { Collections.sort(paramList); return encodeParameters(paramList); } static String normalizeRequestParameters(HttpParameter[] paramArrayOfHttpParameter) { return normalizeRequestParameters(toParamList(paramArrayOfHttpParameter)); } private void parseGetParameters(String paramString, List<HttpParameter> paramList) { int i = paramString.indexOf("?"); String[] arrayOfString1; if (-1 != i) { arrayOfString1 = z_T4JInternalStringUtil.split(paramString.substring(i + 1), "&"); } for (;;) { int k; try { int j = arrayOfString1.length; k = 0; if (k < j) { String[] arrayOfString2 = z_T4JInternalStringUtil.split(arrayOfString1[k], "="); if (arrayOfString2.length == 2) { paramList.add(new HttpParameter(URLDecoder.decode(arrayOfString2[0], "UTF-8"), URLDecoder.decode(arrayOfString2[1], "UTF-8"))); } else { paramList.add(new HttpParameter(URLDecoder.decode(arrayOfString2[0], "UTF-8"), "")); } } } catch (UnsupportedEncodingException localUnsupportedEncodingException) {} return; k++; } } static List<HttpParameter> toParamList(HttpParameter[] paramArrayOfHttpParameter) { ArrayList localArrayList = new ArrayList(paramArrayOfHttpParameter.length); localArrayList.addAll(Arrays.asList(paramArrayOfHttpParameter)); return localArrayList; } public boolean equals(Object paramObject) { boolean bool = true; if (this == paramObject) {} OAuthAuthorization localOAuthAuthorization; do { for (;;) { return bool; if ((paramObject instanceof OAuthSupport)) { break; } bool = false; } localOAuthAuthorization = (OAuthAuthorization)paramObject; if (this.consumerKey != null) { if (this.consumerKey.equals(localOAuthAuthorization.consumerKey)) {} } else { while (localOAuthAuthorization.consumerKey != null) { bool = false; break; } } if (this.consumerSecret != null) { if (this.consumerSecret.equals(localOAuthAuthorization.consumerSecret)) {} } else { while (localOAuthAuthorization.consumerSecret != null) { bool = false; break; } } if (this.oauthToken == null) { break; } } while (this.oauthToken.equals(localOAuthAuthorization.oauthToken)); for (;;) { bool = false; break; if (localOAuthAuthorization.oauthToken == null) { break; } } } String generateAuthorizationHeader(String paramString1, String paramString2, HttpParameter[] paramArrayOfHttpParameter, String paramString3, String paramString4, OAuthToken paramOAuthToken) { if (paramArrayOfHttpParameter == null) { paramArrayOfHttpParameter = new HttpParameter[0]; } ArrayList localArrayList1 = new ArrayList(5); localArrayList1.add(new HttpParameter("oauth_consumer_key", this.consumerKey)); localArrayList1.add(OAUTH_SIGNATURE_METHOD); localArrayList1.add(new HttpParameter("oauth_timestamp", paramString4)); localArrayList1.add(new HttpParameter("oauth_nonce", paramString3)); localArrayList1.add(new HttpParameter("oauth_version", "1.0")); if (paramOAuthToken != null) { localArrayList1.add(new HttpParameter("oauth_token", paramOAuthToken.getToken())); } ArrayList localArrayList2 = new ArrayList(localArrayList1.size() + paramArrayOfHttpParameter.length); localArrayList2.addAll(localArrayList1); if (!HttpParameter.containsFile(paramArrayOfHttpParameter)) { localArrayList2.addAll(toParamList(paramArrayOfHttpParameter)); } parseGetParameters(paramString2, localArrayList2); StringBuilder localStringBuilder = new StringBuilder(paramString1).append("&").append(HttpParameter.encode(constructRequestURL(paramString2))).append("&"); localStringBuilder.append(HttpParameter.encode(normalizeRequestParameters(localArrayList2))); String str1 = localStringBuilder.toString(); logger.debug("OAuth base string: ", str1); String str2 = generateSignature(str1, paramOAuthToken); logger.debug("OAuth signature: ", str2); localArrayList1.add(new HttpParameter("oauth_signature", str2)); if (this.realm != null) { localArrayList1.add(new HttpParameter("realm", this.realm)); } return "OAuth " + encodeParameters(localArrayList1, ",", true); } String generateAuthorizationHeader(String paramString1, String paramString2, HttpParameter[] paramArrayOfHttpParameter, OAuthToken paramOAuthToken) { long l = System.currentTimeMillis() / 1000L; return generateAuthorizationHeader(paramString1, paramString2, paramArrayOfHttpParameter, String.valueOf(l + RAND.nextInt()), String.valueOf(l), paramOAuthToken); } public List<HttpParameter> generateOAuthSignatureHttpParams(String paramString1, String paramString2) { long l1 = System.currentTimeMillis() / 1000L; long l2 = l1 + RAND.nextInt(); ArrayList localArrayList1 = new ArrayList(5); localArrayList1.add(new HttpParameter("oauth_consumer_key", this.consumerKey)); localArrayList1.add(OAUTH_SIGNATURE_METHOD); localArrayList1.add(new HttpParameter("oauth_timestamp", l1)); localArrayList1.add(new HttpParameter("oauth_nonce", l2)); localArrayList1.add(new HttpParameter("oauth_version", "1.0")); if (this.oauthToken != null) { localArrayList1.add(new HttpParameter("oauth_token", this.oauthToken.getToken())); } ArrayList localArrayList2 = new ArrayList(localArrayList1.size()); localArrayList2.addAll(localArrayList1); parseGetParameters(paramString2, localArrayList2); StringBuilder localStringBuilder = new StringBuilder(paramString1).append("&").append(HttpParameter.encode(constructRequestURL(paramString2))).append("&"); localStringBuilder.append(HttpParameter.encode(normalizeRequestParameters(localArrayList2))); localArrayList1.add(new HttpParameter("oauth_signature", generateSignature(localStringBuilder.toString(), this.oauthToken))); return localArrayList1; } String generateSignature(String paramString) { return generateSignature(paramString, null); } /* Error */ String generateSignature(String paramString, OAuthToken paramOAuthToken) { // Byte code: // 0: ldc 14 // 2: invokestatic 350 javax/crypto/Mac:getInstance (Ljava/lang/String;)Ljavax/crypto/Mac; // 5: astore 5 // 7: aload_2 // 8: ifnonnull +66 -> 74 // 11: new 352 javax/crypto/spec/SecretKeySpec // 14: dup // 15: new 142 java/lang/StringBuilder // 18: dup // 19: invokespecial 143 java/lang/StringBuilder:<init> ()V // 22: aload_0 // 23: getfield 267 twitter4j/auth/OAuthAuthorization:consumerSecret Ljava/lang/String; // 26: invokestatic 195 twitter4j/internal/http/HttpParameter:encode (Ljava/lang/String;)Ljava/lang/String; // 29: invokevirtual 147 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder; // 32: ldc 161 // 34: invokevirtual 147 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder; // 37: invokevirtual 153 java/lang/StringBuilder:toString ()Ljava/lang/String; // 40: invokevirtual 356 java/lang/String:getBytes ()[B // 43: ldc 14 // 45: invokespecial 359 javax/crypto/spec/SecretKeySpec:<init> ([BLjava/lang/String;)V // 48: astore 6 // 50: aload 5 // 52: aload 6 // 54: invokevirtual 363 javax/crypto/Mac:init (Ljava/security/Key;)V // 57: aload 5 // 59: aload_1 // 60: invokevirtual 356 java/lang/String:getBytes ()[B // 63: invokevirtual 367 javax/crypto/Mac:doFinal ([B)[B // 66: astore 7 // 68: aload 7 // 70: invokestatic 372 twitter4j/internal/http/BASE64Encoder:encode ([B)Ljava/lang/String; // 73: areturn // 74: aload_2 // 75: invokevirtual 376 twitter4j/auth/OAuthToken:getSecretKeySpec ()Ljavax/crypto/spec/SecretKeySpec; // 78: astore 6 // 80: aload 6 // 82: ifnonnull -32 -> 50 // 85: new 352 javax/crypto/spec/SecretKeySpec // 88: dup // 89: new 142 java/lang/StringBuilder // 92: dup // 93: invokespecial 143 java/lang/StringBuilder:<init> ()V // 96: aload_0 // 97: getfield 267 twitter4j/auth/OAuthAuthorization:consumerSecret Ljava/lang/String; // 100: invokestatic 195 twitter4j/internal/http/HttpParameter:encode (Ljava/lang/String;)Ljava/lang/String; // 103: invokevirtual 147 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder; // 106: ldc 161 // 108: invokevirtual 147 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder; // 111: aload_2 // 112: invokevirtual 379 twitter4j/auth/OAuthToken:getTokenSecret ()Ljava/lang/String; // 115: invokestatic 195 twitter4j/internal/http/HttpParameter:encode (Ljava/lang/String;)Ljava/lang/String; // 118: invokevirtual 147 java/lang/StringBuilder:append (Ljava/lang/String;)Ljava/lang/StringBuilder; // 121: invokevirtual 153 java/lang/StringBuilder:toString ()Ljava/lang/String; // 124: invokevirtual 356 java/lang/String:getBytes ()[B // 127: ldc 14 // 129: invokespecial 359 javax/crypto/spec/SecretKeySpec:<init> ([BLjava/lang/String;)V // 132: astore 6 // 134: aload_2 // 135: aload 6 // 137: invokevirtual 383 twitter4j/auth/OAuthToken:setSecretKeySpec (Ljavax/crypto/spec/SecretKeySpec;)V // 140: goto -90 -> 50 // 143: astore 4 // 145: getstatic 55 twitter4j/auth/OAuthAuthorization:logger Ltwitter4j/internal/logging/Logger; // 148: ldc_w 385 // 151: aload 4 // 153: invokevirtual 389 twitter4j/internal/logging/Logger:error (Ljava/lang/String;Ljava/lang/Throwable;)V // 156: new 391 java/lang/AssertionError // 159: dup // 160: aload 4 // 162: invokespecial 394 java/lang/AssertionError:<init> (Ljava/lang/Object;)V // 165: athrow // 166: astore_3 // 167: getstatic 55 twitter4j/auth/OAuthAuthorization:logger Ltwitter4j/internal/logging/Logger; // 170: ldc_w 396 // 173: aload_3 // 174: invokevirtual 389 twitter4j/internal/logging/Logger:error (Ljava/lang/String;Ljava/lang/Throwable;)V // 177: new 391 java/lang/AssertionError // 180: dup // 181: aload_3 // 182: invokespecial 394 java/lang/AssertionError:<init> (Ljava/lang/Object;)V // 185: athrow // Local variable table: // start length slot name signature // 0 186 0 this OAuthAuthorization // 0 186 1 paramString String // 0 186 2 paramOAuthToken OAuthToken // 166 16 3 localNoSuchAlgorithmException java.security.NoSuchAlgorithmException // 143 18 4 localInvalidKeyException java.security.InvalidKeyException // 5 53 5 localMac javax.crypto.Mac // 48 88 6 localSecretKeySpec javax.crypto.spec.SecretKeySpec // 66 3 7 arrayOfByte byte[] // Exception table: // from to target type // 0 68 143 java/security/InvalidKeyException // 74 140 143 java/security/InvalidKeyException // 0 68 166 java/security/NoSuchAlgorithmException // 74 140 166 java/security/NoSuchAlgorithmException } public String getAuthorizationHeader(HttpRequest paramHttpRequest) { return generateAuthorizationHeader(paramHttpRequest.getMethod().name(), paramHttpRequest.getURL(), paramHttpRequest.getParameters(), this.oauthToken); } public AccessToken getOAuthAccessToken() throws TwitterException { ensureTokenIsAvailable(); if ((this.oauthToken instanceof AccessToken)) {} for (AccessToken localAccessToken = (AccessToken)this.oauthToken;; localAccessToken = (AccessToken)this.oauthToken) { return localAccessToken; this.oauthToken = new AccessToken(http.post(this.conf.getOAuthAccessTokenURL(), this)); } } public AccessToken getOAuthAccessToken(String paramString) throws TwitterException { ensureTokenIsAvailable(); HttpClientWrapper localHttpClientWrapper = http; String str = this.conf.getOAuthAccessTokenURL(); HttpParameter[] arrayOfHttpParameter = new HttpParameter[1]; arrayOfHttpParameter[0] = new HttpParameter("oauth_verifier", paramString); this.oauthToken = new AccessToken(localHttpClientWrapper.post(str, arrayOfHttpParameter, this)); return (AccessToken)this.oauthToken; } public AccessToken getOAuthAccessToken(String paramString1, String paramString2) throws TwitterException { try { String str = this.conf.getOAuthAccessTokenURL(); if (str.indexOf("http://") == 0) { str = "https://" + str.substring(7); } HttpClientWrapper localHttpClientWrapper = http; HttpParameter[] arrayOfHttpParameter = new HttpParameter[3]; arrayOfHttpParameter[0] = new HttpParameter("x_auth_username", paramString1); arrayOfHttpParameter[1] = new HttpParameter("x_auth_password", paramString2); arrayOfHttpParameter[2] = new HttpParameter("x_auth_mode", "client_auth"); this.oauthToken = new AccessToken(localHttpClientWrapper.post(str, arrayOfHttpParameter, this)); AccessToken localAccessToken = (AccessToken)this.oauthToken; return localAccessToken; } catch (TwitterException localTwitterException) { throw new TwitterException("The screen name / password combination seems to be invalid.", localTwitterException, localTwitterException.getStatusCode()); } } public AccessToken getOAuthAccessToken(RequestToken paramRequestToken) throws TwitterException { this.oauthToken = paramRequestToken; return getOAuthAccessToken(); } public AccessToken getOAuthAccessToken(RequestToken paramRequestToken, String paramString) throws TwitterException { this.oauthToken = paramRequestToken; return getOAuthAccessToken(paramString); } public RequestToken getOAuthRequestToken() throws TwitterException { return getOAuthRequestToken(null, null); } public RequestToken getOAuthRequestToken(String paramString) throws TwitterException { return getOAuthRequestToken(paramString, null); } public RequestToken getOAuthRequestToken(String paramString1, String paramString2) throws TwitterException { if ((this.oauthToken instanceof AccessToken)) { throw new IllegalStateException("Access token already available."); } ArrayList localArrayList = new ArrayList(); if (paramString1 != null) { localArrayList.add(new HttpParameter("oauth_callback", paramString1)); } if (paramString2 != null) { localArrayList.add(new HttpParameter("x_auth_access_type", paramString2)); } this.oauthToken = new RequestToken(http.post(this.conf.getOAuthRequestTokenURL(), (HttpParameter[])localArrayList.toArray(new HttpParameter[localArrayList.size()]), this), this); return (RequestToken)this.oauthToken; } public int hashCode() { int i = 0; int j; int k; if (this.consumerKey != null) { j = this.consumerKey.hashCode(); k = j * 31; if (this.consumerSecret == null) { break label72; } } label72: for (int m = this.consumerSecret.hashCode();; m = 0) { int n = 31 * (k + m); if (this.oauthToken != null) { i = this.oauthToken.hashCode(); } return n + i; j = 0; break; } } public boolean isEnabled() { if ((this.oauthToken != null) && ((this.oauthToken instanceof AccessToken))) {} for (boolean bool = true;; bool = false) { return bool; } } public void setOAuthAccessToken(AccessToken paramAccessToken) { this.oauthToken = paramAccessToken; } public void setOAuthConsumer(String paramString1, String paramString2) { if (paramString1 != null) { this.consumerKey = paramString1; if (paramString2 == null) { break label25; } } for (;;) { this.consumerSecret = paramString2; return; paramString1 = ""; break; label25: paramString2 = ""; } } public void setOAuthRealm(String paramString) { this.realm = paramString; } public String toString() { return "OAuthAuthorization{consumerKey='" + this.consumerKey + '\'' + ", consumerSecret='******************************************'" + ", oauthToken=" + this.oauthToken + '}'; } } /* Location: F:\neembuu\Research\android_apps\output_jar.jar * Qualified Name: twitter4j.auth.OAuthAuthorization * JD-Core Version: 0.7.0.1 */