diff options
author | Rich Cannings <richc@google.com> | 2019-03-29 15:42:09 -0700 |
---|---|---|
committer | Etan Cohen <etancohen@google.com> | 2019-04-09 21:30:17 +0000 |
commit | f88d296d36abd371ef11d074bbb95e47f04e8ed0 (patch) | |
tree | 2d482848ce688656950cafa4cf87106eb4a9afe2 /tests | |
parent | 84522169bed37020285a7484067b64c4161d8c5b (diff) |
DO NOT MERGE Add data integrity checking for wifi passwords
Cherry pick of the following CLs to pi-dev:
ag/6709482, ag/6841349, ag/6869071
Bug: 128318105
Test: Triggered a failure to exercise new code and ran
tests/wifitests/runtests.sh
Change-Id: I2e8e3b766727365be1055d04a52d0c96d84d6465
Diffstat (limited to 'tests')
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/util/DataIntegrityCheckerTest.java | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/util/DataIntegrityCheckerTest.java b/tests/wifitests/src/com/android/server/wifi/util/DataIntegrityCheckerTest.java new file mode 100644 index 000000000..b7076988b --- /dev/null +++ b/tests/wifitests/src/com/android/server/wifi/util/DataIntegrityCheckerTest.java @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.server.wifi.util; + +import static org.junit.Assert.*; + +import org.junit.Ignore; +import org.junit.Test; + +import java.io.File; +import java.security.DigestException; + +/** + * Unit tests for {@link com.android.server.wifi.util.DataIntegrityChecker}. + */ +public class DataIntegrityCheckerTest { + private static byte[] sGoodData = {1, 2, 3, 4}; + private static byte[] sBadData = {5, 6, 7, 8}; + + /** + * Verify that updating the integrity token with known data and alias will + * pass the integrity test. This test ensure the expected outcome for + * unedited data succeeds. + * + * @throws Exception + */ + @Test + @Ignore + public void testIntegrityWithKnownDataAndKnownAlias() throws Exception { + File integrityFile = File.createTempFile("testIntegrityWithKnownDataAndKnownAlias", + ".tmp"); + DataIntegrityChecker dataIntegrityChecker = new DataIntegrityChecker( + integrityFile.getParent()); + dataIntegrityChecker.update(sGoodData); + assertTrue(dataIntegrityChecker.isOk(sGoodData)); + } + + /** + * Verify that checking the integrity of unknown data and a known alias + * will fail the integrity test. This test ensure the expected failure for + * altered data, in fact, fails. + * + * + * @throws Exception + */ + @Test + @Ignore + public void testIntegrityWithUnknownDataAndKnownAlias() throws Exception { + File integrityFile = File.createTempFile("testIntegrityWithUnknownDataAndKnownAlias", + ".tmp"); + DataIntegrityChecker dataIntegrityChecker = new DataIntegrityChecker( + integrityFile.getParent()); + dataIntegrityChecker.update(sGoodData); + assertFalse(dataIntegrityChecker.isOk(sBadData)); + } + + /** + * Verify a corner case where integrity of data that has never been + * updated passes and adds the token to the keystore. + * + * @throws Exception + */ + @Test(expected = DigestException.class) + @Ignore + public void testIntegrityWithoutUpdate() throws Exception { + File tmpFile = File.createTempFile("testIntegrityWithoutUpdate", ".tmp"); + + DataIntegrityChecker dataIntegrityChecker = new DataIntegrityChecker( + tmpFile.getAbsolutePath()); + + // the integrity data is not known, so isOk throws a DigestException + assertTrue(dataIntegrityChecker.isOk(sGoodData)); + } +} |