diff options
author | Rich Cannings <richc@google.com> | 2019-01-30 15:43:27 -0800 |
---|---|---|
committer | Rich Cannings <richc@google.com> | 2019-02-23 15:57:19 -0800 |
commit | fe21aeee563b916a738c2a21e824e9ecf4b03416 (patch) | |
tree | a06cc5c6978dff940a2f604e784b3075acdd9aa5 /tests | |
parent | 0b7dfd2253af0f4713af3a7f6ca5f233f0fbf8b9 (diff) |
DO NOT MERGE Add data integrity checking for wifi passwords
Bug: 117994255
Test: DataIntegrityCheckerTests tests good integrity, bad integrity, and
instances when the intefrity data is unavailable. In addition,
existing tests pass.
Change-Id: I00a6b30c2172b4e1b11178e0ade9f6861b79fc0c
Diffstat (limited to 'tests')
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/util/DataIntegrityCheckerTest.java | 84 |
1 files changed, 84 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..5e4f6cc0d --- /dev/null +++ b/tests/wifitests/src/com/android/server/wifi/util/DataIntegrityCheckerTest.java @@ -0,0 +1,84 @@ +/* + * 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.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 + 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 + 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) + 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)); + } +} |