You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by py...@apache.org on 2007/04/06 05:43:22 UTC
svn commit: r526042 - in
/harmony/enhanced/classlib/trunk/modules/security/src:
main/java/common/java/security/SecureRandom.java
test/api/java/org/apache/harmony/security/tests/java/security/SecureRandom2Test.java
Author: pyang
Date: Thu Apr 5 20:43:22 2007
New Revision: 526042
URL: http://svn.apache.org/viewvc?view=rev&rev=526042
Log:
Apply patch for HARMONY-3552([classlib][security]java.security.SecureRandom.next(int bitCount) returns a int which has a longer bit length than required.)
Modified:
harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/SecureRandom.java
harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/SecureRandom2Test.java
Modified: harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/SecureRandom.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/SecureRandom.java?view=diff&rev=526042&r1=526041&r2=526042
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/SecureRandom.java (original)
+++ harmony/enhanced/classlib/trunk/modules/security/src/main/java/common/java/security/SecureRandom.java Thu Apr 5 20:43:22 2007
@@ -301,7 +301,7 @@
for (int i = 0; i < bytes; i++) {
ret = (next[i] & 0xFF) | (ret << 8);
}
- ret = ret >> (bytes*8 - numBits);
+ ret = ret >>> (bytes*8 - numBits);
return ret;
}
Modified: harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/SecureRandom2Test.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/SecureRandom2Test.java?view=diff&rev=526042&r1=526041&r2=526042
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/SecureRandom2Test.java (original)
+++ harmony/enhanced/classlib/trunk/modules/security/src/test/api/java/org/apache/harmony/security/tests/java/security/SecureRandom2Test.java Thu Apr 5 20:43:22 2007
@@ -172,4 +172,58 @@
assertEquals("unknown", sr.getAlgorithm());
}
+
+ //Regression Test for HARMONY-3552.
+ public void test_nextJ() throws Exception {
+ MySecureRandom mySecureRandom = new MySecureRandom(
+ new MySecureRandomSpi(), null);
+ int numBits = 29;
+ int random = mySecureRandom.getNext(numBits);
+ assertEquals(numBits, Integer.bitCount(random));
+
+ numBits = 0;
+ random = mySecureRandom.getNext(numBits);
+ assertEquals(numBits, Integer.bitCount(random));
+
+ numBits = 40;
+ random = mySecureRandom.getNext(numBits);
+ assertEquals(32, Integer.bitCount(random));
+
+ numBits = -1;
+ random = mySecureRandom.getNext(numBits);
+ assertEquals(0, Integer.bitCount(random));
+ }
+
+ class MySecureRandom extends SecureRandom {
+ private static final long serialVersionUID = 1L;
+
+ public MySecureRandom(SecureRandomSpi secureRandomSpi, Provider provider) {
+ super(secureRandomSpi, provider);
+ }
+
+ public int getNext(int numBits) {
+ return super.next(numBits);
+ }
+ }
+
+ class MySecureRandomSpi extends SecureRandomSpi {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected byte[] engineGenerateSeed(int arg0) {
+ return null;
+ }
+
+ @Override
+ protected void engineNextBytes(byte[] bytes) {
+ for (int i = 0; i < bytes.length; i++) {
+ bytes[i] = (byte) 0xFF;
+ }
+ }
+
+ @Override
+ protected void engineSetSeed(byte[] arg0) {
+ return;
+ }
+ }
}