Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(292)

Side by Side Diff: remoting/android/java/src/org/chromium/chromoting/ThirdPartyTokenFetcher.java

Issue 463393002: Android Chromoting: Initialize SecureRandom generator. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Pull initialization code into a reusable class Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chromoting; 5 package org.chromium.chromoting;
6 6
7 import android.annotation.SuppressLint;
7 import android.app.Activity; 8 import android.app.Activity;
8 import android.content.ActivityNotFoundException; 9 import android.content.ActivityNotFoundException;
9 import android.content.ComponentName; 10 import android.content.ComponentName;
10 import android.content.Intent; 11 import android.content.Intent;
11 import android.content.pm.PackageManager; 12 import android.content.pm.PackageManager;
12 import android.net.Uri; 13 import android.net.Uri;
13 import android.text.TextUtils; 14 import android.text.TextUtils;
14 import android.util.Base64; 15 import android.util.Base64;
15 import android.util.Log; 16 import android.util.Log;
16 17
18 import java.io.IOException;
17 import java.security.SecureRandom; 19 import java.security.SecureRandom;
18 import java.util.ArrayList; 20 import java.util.ArrayList;
19 21
20 /** 22 /**
21 * This class is responsible for fetching a third party token from the user usin g the OAuth2 23 * This class is responsible for fetching a third party token from the user usin g the OAuth2
22 * implicit flow. It directs the user to a third party login page located at |t okenUrl|. It relies 24 * implicit flow. It directs the user to a third party login page located at |t okenUrl|. It relies
23 * on the |ThirdPartyTokenFetcher$OAuthRedirectActivity| to intercept the access token from the 25 * on the |ThirdPartyTokenFetcher$OAuthRedirectActivity| to intercept the access token from the
24 * redirect at intent://|REDIRECT_URI_PATH|#Intent;...end; upon successful login . 26 * redirect at intent://|REDIRECT_URI_PATH|#Intent;...end; upon successful login .
25 */ 27 */
26 public class ThirdPartyTokenFetcher { 28 public class ThirdPartyTokenFetcher {
27 /** Callback for receiving the token. */ 29 /** Callback for receiving the token. */
28 public interface Callback { 30 public interface Callback {
29 void onTokenFetched(String code, String accessToken); 31 void onTokenFetched(String code, String accessToken);
30 } 32 }
31 33
32 /** The path of the Redirect URI. */ 34 /** The path of the Redirect URI. */
33 private static final String REDIRECT_URI_PATH = "/oauthredirect/"; 35 private static final String REDIRECT_URI_PATH = "/oauthredirect/";
34 36
35 /** 37 /**
36 * Request both the authorization code and access token from the server. Se e 38 * Request both the authorization code and access token from the server. Se e
37 * http://tools.ietf.org/html/rfc6749#section-3.1.1. 39 * http://tools.ietf.org/html/rfc6749#section-3.1.1.
38 */ 40 */
39 private static final String RESPONSE_TYPE = "code token"; 41 private static final String RESPONSE_TYPE = "code token";
40 42
41 /** This is used to securely generate an opaque 128 bit for the |mState| var iable. */ 43 /** This is used to securely generate an opaque 128 bit for the |mState| var iable. */
42 private static SecureRandom sSecureRandom = new SecureRandom(); 44 @SuppressLint("TrulyRandom")
45 private static SecureRandom sSecureRandom;
46
47 // TODO(lambroslambrou): Refactor this class to only initialize a PRNG when ThirdPartyAuth is
48 // actually used.
49 static {
50 sSecureRandom = new SecureRandom();
51 try {
52 SecureRandomInitializer.initialize(sSecureRandom);
palmer 2014/08/18 17:47:52 I almost wonder if the interface should instead be
Lambros 2014/08/18 20:31:31 I thought about that, but there are a lot of Secur
53 } catch (IOException e) {
54 throw new RuntimeException("Failed to initialize PRNG: " + e);
55 }
56 }
43 57
44 /** This is used to launch the third party login page in the browser. */ 58 /** This is used to launch the third party login page in the browser. */
45 private Activity mContext; 59 private Activity mContext;
46 60
47 /** 61 /**
48 * An opaque value used by the client to maintain state between the request and callback. The 62 * An opaque value used by the client to maintain state between the request and callback. The
49 * authorization server includes this value when redirecting the user-agent back to the client. 63 * authorization server includes this value when redirecting the user-agent back to the client.
50 * The parameter is used for preventing cross-site request forgery. See 64 * The parameter is used for preventing cross-site request forgery. See
51 * http://tools.ietf.org/html/rfc6749#section-10.12. 65 * http://tools.ietf.org/html/rfc6749#section-10.12.
52 */ 66 */
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 ComponentName component = new ComponentName( 232 ComponentName component = new ComponentName(
219 context.getApplicationContext(), 233 context.getApplicationContext(),
220 ThirdPartyTokenFetcher.OAuthRedirectActivity.class); 234 ThirdPartyTokenFetcher.OAuthRedirectActivity.class);
221 context.getPackageManager().setComponentEnabledSetting( 235 context.getPackageManager().setComponentEnabledSetting(
222 component, 236 component,
223 enabledState, 237 enabledState,
224 PackageManager.DONT_KILL_APP); 238 PackageManager.DONT_KILL_APP);
225 } 239 }
226 } 240 }
227 } 241 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698