Index: content/public/android/java/src/org/chromium/content/browser/crypto/CipherFactory.java |
diff --git a/content/public/android/java/src/org/chromium/content/browser/crypto/CipherFactory.java b/content/public/android/java/src/org/chromium/content/browser/crypto/CipherFactory.java |
index 7b1f8ee9fa7336326477eb1ee2c6998adc390446..4125d6689d2136caf984df5ebc6543178d2413b8 100644 |
--- a/content/public/android/java/src/org/chromium/content/browser/crypto/CipherFactory.java |
+++ b/content/public/android/java/src/org/chromium/content/browser/crypto/CipherFactory.java |
@@ -8,6 +8,8 @@ import android.os.AsyncTask; |
import android.os.Bundle; |
import android.util.Log; |
+import org.chromium.base.SecureRandomInitializer; |
+ |
import java.io.IOException; |
import java.security.GeneralSecurityException; |
import java.security.Key; |
@@ -150,9 +152,8 @@ public class CipherFactory { |
@Override |
public CipherData call() { |
// Poll random data to generate initialization parameters for the Cipher. |
- byte[] seed, iv; |
+ byte[] iv; |
try { |
- seed = mRandomNumberProvider.getBytes(NUM_BYTES); |
Yaron
2014/10/08 18:08:00
Looks like you should update CipherFactoryTest. It
|
iv = mRandomNumberProvider.getBytes(NUM_BYTES); |
} catch (IOException e) { |
Log.e(TAG, "Couldn't get generator data."); |
@@ -163,20 +164,15 @@ public class CipherFactory { |
} |
try { |
- // Old versions of SecureRandom do not seed themselves as securely as possible. |
- // This workaround should suffice until the fixed version is deployed to all |
- // users. The seed comes from RandomNumberProvider.getBytes(), which reads |
- // from /dev/urandom, which is as good as the platform can get. |
- // |
- // TODO(palmer): Consider getting rid of this once the updated platform has |
- // shipped to everyone. Alternately, leave this in as a defense against other |
- // bugs in SecureRandom. |
SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); |
- random.setSeed(seed); |
+ SecureRandomInitializer.initialize(random); |
KeyGenerator generator = KeyGenerator.getInstance("AES"); |
generator.init(128, random); |
return new CipherData(generator.generateKey(), iv); |
+ } catch (IOException e) { |
+ Log.e(TAG, "Couldn't get generator data."); |
+ return null; |
} catch (GeneralSecurityException e) { |
Log.e(TAG, "Couldn't get generator instances."); |
return null; |
@@ -270,4 +266,4 @@ public class CipherFactory { |
private CipherFactory() { |
mRandomNumberProvider = new ByteArrayGenerator(); |
} |
-} |
+} |