diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2017-10-03 08:13:48 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2017-10-03 08:13:48 +0000 |
commit | 65ac5feb83da6f5bf2cd1a81c00bf3f9bccc0e2b (patch) | |
tree | 50bb0e9b627d8aa75449a6c0338fbd232fa9ce55 | |
parent | 94820f63f296be8aec8c1eab1a280f45fc5581d9 (diff) | |
parent | b5c3d4d14f7373e0f9f7e6fc5329c41b89c892f3 (diff) | |
download | rappor-65ac5feb83da6f5bf2cd1a81c00bf3f9bccc0e2b.tar.gz |
Snap for 4373608 from b5c3d4d14f7373e0f9f7e6fc5329c41b89c892f3 to pi-release
Change-Id: I19834d517a71fd025253067f19245ed3753cfb2a
-rw-r--r-- | Android.mk | 11 | ||||
-rw-r--r-- | README.android | 4 | ||||
-rw-r--r-- | client/java/com/google/android/rappor/Encoder.java (renamed from client/java/com/google/rappor/Encoder.java) | 38 | ||||
-rw-r--r-- | client/java/com/google/android/rappor/HmacDrbg.java (renamed from client/java/com/google/rappor/HmacDrbg.java) | 2 | ||||
-rw-r--r-- | client/javatest/com/google/android/rappor/EncoderTest.java (renamed from client/javatest/com/google/rappor/EncoderTest.java) | 100 | ||||
-rw-r--r-- | client/javatest/com/google/android/rappor/HmacDrbgTest.java (renamed from client/javatest/com/google/rappor/HmacDrbgTest.java) | 2 |
6 files changed, 118 insertions, 39 deletions
@@ -21,5 +21,14 @@ LOCAL_NO_STANDARD_LIBRARIES := true LOCAL_JAVA_LANGUAGE_VERSION := 1.7 LOCAL_JAVA_LIBRARIES := core-oj jsr305 LOCAL_SRC_FILES := $(call all-java-files-under, client/java) +include $(BUILD_STATIC_JAVA_LIBRARY) -include $(BUILD_JAVA_LIBRARY) + +include $(CLEAR_VARS) +LOCAL_MODULE := rappor-tests +LOCAL_NO_STANDARD_LIBRARIES := true +LOCAL_JAVA_LANGUAGE_VERSION := 1.7 +LOCAL_STATIC_JAVA_LIBRARIES := hamcrest-library rappor guava junit +LOCAL_JAVA_LIBRARIES := core-oj jsr305 +LOCAL_SRC_FILES := $(call all-java-files-under, client/javatest) +include $(BUILD_STATIC_JAVA_LIBRARY) diff --git a/README.android b/README.android index 272665d..30aae43 100644 --- a/README.android +++ b/README.android @@ -8,4 +8,6 @@ here: - Removed all non-java client library files. - Modified client/java/com/google/rappor/HmacDrbg.java, client/java/com/google/rappor/Encoder.java - to remove Guava dependency. + to remove Guava, javax dependency. + +- Moved package from com.google.rappor.* to com.google.android.rappor.* to avoid source conflict with 3rd party library. diff --git a/client/java/com/google/rappor/Encoder.java b/client/java/com/google/android/rappor/Encoder.java index 5163f21..a8fb57c 100644 --- a/client/java/com/google/rappor/Encoder.java +++ b/client/java/com/google/android/rappor/Encoder.java @@ -1,4 +1,4 @@ -package com.google.rappor; +package com.google.android.rappor; // BEGIN android-changed: Removed guava dependency // import static com.google.common.base.Preconditions.checkArgument; @@ -12,9 +12,14 @@ import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.BitSet; +// BEGIN android-changed +import java.util.Random; +// END android-changed -import javax.annotation.Nullable; -import javax.annotation.concurrent.GuardedBy; +// BEGIN android-changed: Remove javax +// import javax.annotation.Nullable; +// import javax.annotation.concurrent.GuardedBy; +// END android-changed /** * Encodes reports using the RAPPOR differentially-private encoding algorithm. @@ -163,7 +168,9 @@ public class Encoder { * <p>This object is stateful; access must be synchronized. The reset method must be * called before each use. */ - @GuardedBy("this") +// BEGIN android-changed: Remove javax +// @GuardedBy("this") +// END android-changed private final MessageDigest sha256; /** @@ -172,13 +179,18 @@ public class Encoder { * <p>This object is stateful; access must be synchronized. The reset method must be * called before each use. */ - @GuardedBy("this") +// BEGIN android-changed: Remove javax +// @GuardedBy("this") +// END android-changed private final MessageDigest md5; /** * A SecureRandom instance, initialized with a cryptographically secure random seed. */ - private final SecureRandom random; +// BEGIN android-changed +// private final SecureRandom random; + private final Random random; +// BEGIN android-changed /** * Entropy input for constructing HmacDrbg objects. @@ -248,9 +260,15 @@ public class Encoder { * string. */ public Encoder( - @Nullable SecureRandom random, - @Nullable MessageDigest md5, - @Nullable MessageDigest sha256, +// BEGIN android-changed: Remove javax +// @Nullable SecureRandom random, +// @Nullable MessageDigest md5, +// @Nullable MessageDigest sha256, +// SecureRandom random, + Random random, + MessageDigest md5, + MessageDigest sha256, +// END android-changed byte[] userSecret, String encoderId, int numBits, @@ -580,7 +598,7 @@ public class Encoder { } // BEGIN android-changed: Added guava methods - private static void checkArgument(boolean expression, @Nullable Object errorMessage) { + private static void checkArgument(boolean expression, Object errorMessage) { if (!expression) { throw new IllegalArgumentException(String.valueOf(errorMessage)); } diff --git a/client/java/com/google/rappor/HmacDrbg.java b/client/java/com/google/android/rappor/HmacDrbg.java index b6f0e4f..db99700 100644 --- a/client/java/com/google/rappor/HmacDrbg.java +++ b/client/java/com/google/android/rappor/HmacDrbg.java @@ -1,4 +1,4 @@ -package com.google.rappor; +package com.google.android.rappor; // BEGIN android-changed: Removed guava dependency // import com.google.common.hash.HashFunction; diff --git a/client/javatest/com/google/rappor/EncoderTest.java b/client/javatest/com/google/android/rappor/EncoderTest.java index 316f8c2..896322f 100644 --- a/client/javatest/com/google/rappor/EncoderTest.java +++ b/client/javatest/com/google/android/rappor/EncoderTest.java @@ -1,4 +1,4 @@ -package com.google.rappor; +package com.google.android.rappor; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.lessThanOrEqualTo; @@ -16,7 +16,10 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; -import java.security.SecureRandom; +// BEGIN android-changed +// import java.security.SecureRandom; +import java.util.Random; +// END android-changed /** * Unit tests for {@link Encoder}. @@ -703,7 +706,10 @@ public class EncoderTest { double probabilityQ = 0.85; long inputValue = 0b11111101L; - SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); +// BEGIN android-changed +// SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); + Random random = new Random(); +// END android-changed random.setSeed(0x12345678L); int counts[] = new int[64]; @@ -730,14 +736,24 @@ public class EncoderTest { } } - assertEquals(8481, counts[0]); // input = 1, 99.99% CI = [8358, 8636] - assertEquals(2477, counts[1]); // input = 0, 99.99% CI = [2332, 2669] - assertEquals(8486, counts[2]); // input = 1, 99.99% CI = [8358, 8636] - assertEquals(8495, counts[3]); // input = 1, 99.99% CI = [8358, 8636] - assertEquals(8563, counts[4]); // input = 1, 99.99% CI = [8358, 8636] - assertEquals(8560, counts[5]); // input = 1, 99.99% CI = [8358, 8636] - assertEquals(8481, counts[6]); // input = 1, 99.99% CI = [8358, 8636] - assertEquals(8491, counts[7]); // input = 1, 99.99% CI = [8358, 8636] +// BEGIN android-changed +// assertEquals(8481, counts[0]); // input = 1, 99.99% CI = [8358, 8636] +// assertEquals(2477, counts[1]); // input = 0, 99.99% CI = [2332, 2669] +// assertEquals(8486, counts[2]); // input = 1, 99.99% CI = [8358, 8636] +// assertEquals(8495, counts[3]); // input = 1, 99.99% CI = [8358, 8636] +// assertEquals(8563, counts[4]); // input = 1, 99.99% CI = [8358, 8636] +// assertEquals(8560, counts[5]); // input = 1, 99.99% CI = [8358, 8636] +// assertEquals(8481, counts[6]); // input = 1, 99.99% CI = [8358, 8636] +// assertEquals(8491, counts[7]); // input = 1, 99.99% CI = [8358, 8636] + assertEquals(8492, counts[0]); // input = 1, 99.99% CI = [8358, 8636] + assertEquals(2510, counts[1]); // input = 0, 99.99% CI = [2332, 2669] + assertEquals(8476, counts[2]); // input = 1, 99.99% CI = [8358, 8636] + assertEquals(8509, counts[3]); // input = 1, 99.99% CI = [8358, 8636] + assertEquals(8406, counts[4]); // input = 1, 99.99% CI = [8358, 8636] + assertEquals(8482, counts[5]); // input = 1, 99.99% CI = [8358, 8636] + assertEquals(8498, counts[6]); // input = 1, 99.99% CI = [8358, 8636] + assertEquals(8533, counts[7]); // input = 1, 99.99% CI = [8358, 8636] +// END android-changed // Check that no high-order bit past numBits ever got set. for (int iBit = numBits; iBit < 64; iBit++) { @@ -751,7 +767,10 @@ public class EncoderTest { long inputValue = 0b11111101L; long prrValue = 0b01110101L; - long prrAndIrrValue = 0b01110110L; +// BEGIN android-changed +// long prrAndIrrValue = 0b01110110L; + long prrAndIrrValue = 0b00111101L; +// END android-changed // Verify that PRR is working as expected. assertEquals( @@ -772,7 +791,10 @@ public class EncoderTest { .encodeBits(toBytes(inputValue)))); // Verify that IRR is working as expected. - SecureRandom random1 = SecureRandom.getInstance("SHA1PRNG"); +// BEGIN android-changed +// SecureRandom random1 = SecureRandom.getInstance("SHA1PRNG"); + Random random1 = new Random(); +// END android-changed random1.setSeed(0x12345678L); assertEquals( prrAndIrrValue, @@ -792,7 +814,10 @@ public class EncoderTest { .encodeBits(toBytes(prrValue)))); // Test that end-to-end is the result of PRR + IRR. - SecureRandom random2 = SecureRandom.getInstance("SHA1PRNG"); +// BEGIN android-changed +// SecureRandom random2 = SecureRandom.getInstance("SHA1PRNG"); + Random random2 = new Random(); +// END android-changed random2.setSeed(0x12345678L); assertEquals( prrAndIrrValue, @@ -820,8 +845,12 @@ public class EncoderTest { // Explicitly spot-check the output for 2^0 and 2^31. long inputValue0 = 1L; - long outputValue0 = 590349342L; - SecureRandom random0 = SecureRandom.getInstance("SHA1PRNG"); +// BEGIN android-changed +// long outputValue0 = 590349342L; +// SecureRandom random0 = SecureRandom.getInstance("SHA1PRNG"); + long outputValue0 = 1117977L; + Random random0 = new Random(); +// END android-changed random0.setSeed(0x12345678L); assertEquals( outputValue0, @@ -841,8 +870,12 @@ public class EncoderTest { .encodeBits(toBytes(inputValue0)))); long inputValue31 = 1L << 31; - long outputValue31 = 2746482838L; - SecureRandom random31 = SecureRandom.getInstance("SHA1PRNG"); +// BEGIN android-changed +// long outputValue31 = 2746482838L; +// SecureRandom random31 = SecureRandom.getInstance("SHA1PRNG"); + long outputValue31 = 9505692L; + Random random31 = new Random(); +// END android-changed random31.setSeed(0x12345678L); assertEquals( outputValue31, @@ -862,7 +895,10 @@ public class EncoderTest { .encodeBits(toBytes(inputValue31)))); // Check the range 2^1 to 2^30, making sure no values produce exceptions. - SecureRandom randomRange = SecureRandom.getInstance("SHA1PRNG"); +// BEGIN android-changed +// SecureRandom randomRange = SecureRandom.getInstance("SHA1PRNG"); + Random randomRange = new Random(); +// END android-changed randomRange.setSeed(0x12345678L); for (int i = 1; i <= 30; i++) { long inputValue = 1L << (i - 1); @@ -889,8 +925,12 @@ public class EncoderTest { // Explicitly spot-check the output for 2^0 and 2^63. long inputValue0 = 1L; - long outputValue0 = 867402030798341150L; - SecureRandom random0 = SecureRandom.getInstance("SHA1PRNG"); +// BEGIN android-changed +// long outputValue0 = 867402030798341150L; +// SecureRandom random0 = SecureRandom.getInstance("SHA1PRNG"); + long outputValue0 = 5802301002133606169L; + Random random0 = new Random(); +// END android-changed random0.setSeed(0x12345678L); assertEquals( outputValue0, @@ -910,8 +950,12 @@ public class EncoderTest { .encodeBits(toBytes(inputValue0)))); long inputValue63 = 1L << 62; - long outputValue63 = 5497102447743615126L; - SecureRandom random63 = SecureRandom.getInstance("SHA1PRNG"); +// BEGIN android-changed +// long outputValue63 = 5497102447743615126L; +// SecureRandom random63 = SecureRandom.getInstance("SHA1PRNG"); + long outputValue63 = 5874921546135456664L; + Random random63 = new Random(); +// END android-changed random63.setSeed(0x12345678L); assertEquals( outputValue63, @@ -931,7 +975,10 @@ public class EncoderTest { .encodeBits(toBytes(inputValue63)))); // Check the range 2^1 to 2^62, making sure no values produce exceptions. - SecureRandom randomRange = SecureRandom.getInstance("SHA1PRNG"); +// BEGIN android-changed +// SecureRandom randomRange = SecureRandom.getInstance("SHA1PRNG"); + Random randomRange = new Random(); +// END android-changed randomRange.setSeed(0x12345678L); for (int i = 1; i <= 62; i++) { long inputValue = 1L << (i - 1); @@ -957,7 +1004,10 @@ public class EncoderTest { byte[] userSecret = makeTestingUserSecret("Bar"); // Check the range 2^1 to 2^4095, making sure no values produce exceptions. - SecureRandom randomRange = SecureRandom.getInstance("SHA1PRNG"); +// BEGIN android-changed +// SecureRandom randomRange = SecureRandom.getInstance("SHA1PRNG"); + Random randomRange = new Random(); +// END android-changed randomRange.setSeed(0x12345678L); // Stride is arbitrary, but chosen to be large enough to not cause too many probes (~40) and // prime to explore well. diff --git a/client/javatest/com/google/rappor/HmacDrbgTest.java b/client/javatest/com/google/android/rappor/HmacDrbgTest.java index a14ae7e..e8b0f49 100644 --- a/client/javatest/com/google/rappor/HmacDrbgTest.java +++ b/client/javatest/com/google/android/rappor/HmacDrbgTest.java @@ -1,4 +1,4 @@ -package com.google.rappor; +package com.google.android.rappor; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; |