From 71be3c74b1b281a935cee4d121bc4635ece88a1d Mon Sep 17 00:00:00 2001 From: Mia Alexiou Date: Tue, 21 Aug 2018 22:25:49 +0100 Subject: [PATCH 1/3] Update error rate to be double and balance data --- .../com/duckduckgo/app/httpsupgrade/BloomFilterTest.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/androidTest/java/com/duckduckgo/app/httpsupgrade/BloomFilterTest.kt b/app/src/androidTest/java/com/duckduckgo/app/httpsupgrade/BloomFilterTest.kt index 509f85cc4b2f..37c8516934da 100644 --- a/app/src/androidTest/java/com/duckduckgo/app/httpsupgrade/BloomFilterTest.kt +++ b/app/src/androidTest/java/com/duckduckgo/app/httpsupgrade/BloomFilterTest.kt @@ -59,7 +59,7 @@ class BloomFilterTest { } } - val errorRate = falsePositives / testData.size + val errorRate = falsePositives.toDouble() / testData.size.toDouble() assertEquals(0, falseNegatives) assertEquals(bloomData.size, truePositives) assertTrue(trueNegatives <= testData.size - bloomData.size) @@ -73,9 +73,9 @@ class BloomFilterTest { } companion object { - const val FILTER_ELEMENT_COUNT = 1000 - const val ADDITIONAL_TEST_DATA_ELEMENT_COUNT = 9000 + const val FILTER_ELEMENT_COUNT = 5000 + const val ADDITIONAL_TEST_DATA_ELEMENT_COUNT = 5000 const val TARGET_ERROR_RATE = 0.001 - const val ACCEPTABLE_ERROR_RATE = TARGET_ERROR_RATE * 1.1 + const val ACCEPTABLE_ERROR_RATE = TARGET_ERROR_RATE * 2 } } \ No newline at end of file From b4dda7998755167c7145f633f8d15f8d3646f275 Mon Sep 17 00:00:00 2001 From: Mia Alexiou Date: Tue, 21 Aug 2018 22:28:22 +0100 Subject: [PATCH 2/3] Improve logging message --- .../app/httpsupgrade/api/HttpsUpgradeDataDownloader.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/duckduckgo/app/httpsupgrade/api/HttpsUpgradeDataDownloader.kt b/app/src/main/java/com/duckduckgo/app/httpsupgrade/api/HttpsUpgradeDataDownloader.kt index 1026828a5b37..c48fa16bcc8d 100644 --- a/app/src/main/java/com/duckduckgo/app/httpsupgrade/api/HttpsUpgradeDataDownloader.kt +++ b/app/src/main/java/com/duckduckgo/app/httpsupgrade/api/HttpsUpgradeDataDownloader.kt @@ -79,7 +79,7 @@ class HttpsUpgradeDataDownloader @Inject constructor( val bytes = response.body()!!.bytes() if (!binaryDataStore.verifyCheckSum(bytes, specification.sha256)) { - throw IOException("Https binary has incorrect checksum, throwing away file") + throw IOException("Https binary has incorrect sha, throwing away file") } Timber.d("Updating https bloom data store with new data") From dcd9a24d3042ed23fca2a2fb8ab59a7a2bc40306 Mon Sep 17 00:00:00 2001 From: Mia Alexiou Date: Tue, 9 Oct 2018 01:43:37 +0100 Subject: [PATCH 3/3] Check checksum before loading bloom filter --- .../app/httpsupgrade/api/HttpsBloomFilterFactory.kt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/src/main/java/com/duckduckgo/app/httpsupgrade/api/HttpsBloomFilterFactory.kt b/app/src/main/java/com/duckduckgo/app/httpsupgrade/api/HttpsBloomFilterFactory.kt index 36c43ca6e60d..e213d826cb73 100644 --- a/app/src/main/java/com/duckduckgo/app/httpsupgrade/api/HttpsBloomFilterFactory.kt +++ b/app/src/main/java/com/duckduckgo/app/httpsupgrade/api/HttpsBloomFilterFactory.kt @@ -43,6 +43,12 @@ class HttpsBloomFilterFactoryImpl @Inject constructor(private val dao: HttpsBloo return null } + if (!binaryDataStore.verifyCheckSum(HTTPS_BINARY_FILE, specification.sha256)) { + Timber.d("Https update data failed checksum, clearing") + binaryDataStore.clearData(HTTPS_BINARY_FILE) + return null + } + val initialTimestamp = System.currentTimeMillis() Timber.d("Found https data at $dataPath, building filter") var bloomFilter = BloomFilter(dataPath, specification.totalEntries)