aboutsummaryrefslogtreecommitdiff
path: root/tests/iketests/src/java/com/android/internal/net/eap/statemachine/EapSimAkaMethodStateMachineTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/iketests/src/java/com/android/internal/net/eap/statemachine/EapSimAkaMethodStateMachineTest.java')
-rw-r--r--tests/iketests/src/java/com/android/internal/net/eap/statemachine/EapSimAkaMethodStateMachineTest.java475
1 files changed, 0 insertions, 475 deletions
diff --git a/tests/iketests/src/java/com/android/internal/net/eap/statemachine/EapSimAkaMethodStateMachineTest.java b/tests/iketests/src/java/com/android/internal/net/eap/statemachine/EapSimAkaMethodStateMachineTest.java
deleted file mode 100644
index 7adc9f75..00000000
--- a/tests/iketests/src/java/com/android/internal/net/eap/statemachine/EapSimAkaMethodStateMachineTest.java
+++ /dev/null
@@ -1,475 +0,0 @@
-/*
- * Copyright (C) 2019 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.internal.net.eap.statemachine;
-
-import static com.android.internal.net.TestUtils.hexStringToByteArray;
-import static com.android.internal.net.eap.message.EapData.EAP_TYPE_SIM;
-import static com.android.internal.net.eap.message.EapMessage.EAP_CODE_REQUEST;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.COMPUTED_MAC;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.EAP_SIM_CHALLENGE_RESPONSE_MAC_INPUT;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.EAP_SIM_CHALLENGE_RESPONSE_WITH_MAC;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.EAP_SIM_CLIENT_ERROR_RESPONSE;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.EAP_SIM_CLIENT_ERROR_UNABLE_TO_PROCESS;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.EAP_SIM_IDENTITY;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.EAP_SIM_NOTIFICATION_REQUEST_WITH_EMPTY_MAC;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.EAP_SIM_NOTIFICATION_RESPONSE;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.EAP_SIM_NOTIFICATION_RESPONSE_WITH_EMPTY_MAC;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.EAP_SIM_NOTIFICATION_RESPONSE_WITH_MAC;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.EAP_SIM_RESPONSE_PACKET;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.EMSK;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.EMSK_STRING;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.ID_INT;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.KC_1;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.KC_2;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.K_AUT;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.K_AUT_STRING;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.K_ENCR;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.K_ENCR_STRING;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.MAC_INPUT;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.MK;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.MSK;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.MSK_STRING;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.ORIGINAL_MAC;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.SRES_1;
-import static com.android.internal.net.eap.message.EapTestMessageDefinitions.SRES_BYTES;
-import static com.android.internal.net.eap.message.simaka.EapSimAkaAttribute.AtNotification.GENERAL_FAILURE_POST_CHALLENGE;
-import static com.android.internal.net.eap.message.simaka.EapSimAkaAttribute.AtNotification.GENERAL_FAILURE_PRE_CHALLENGE;
-import static com.android.internal.net.eap.message.simaka.EapSimAkaAttribute.EAP_AT_MAC;
-import static com.android.internal.net.eap.message.simaka.EapSimTypeData.EAP_SIM_CHALLENGE;
-import static com.android.internal.net.eap.message.simaka.EapSimTypeData.EAP_SIM_CLIENT_ERROR;
-import static com.android.internal.net.eap.message.simaka.EapSimTypeData.EAP_SIM_NOTIFICATION;
-import static com.android.internal.net.eap.message.simaka.EapSimTypeData.EAP_SIM_START;
-import static com.android.internal.net.eap.message.simaka.attributes.EapTestAttributeDefinitions.AT_IDENTITY;
-import static com.android.internal.net.eap.message.simaka.attributes.EapTestAttributeDefinitions.IDENTITY;
-import static com.android.internal.net.eap.message.simaka.attributes.EapTestAttributeDefinitions.NONCE_MT;
-import static com.android.internal.net.eap.message.simaka.attributes.EapTestAttributeDefinitions.NONCE_MT_STRING;
-import static com.android.internal.net.eap.message.simaka.attributes.EapTestAttributeDefinitions.RAND_1_BYTES;
-import static com.android.internal.net.eap.message.simaka.attributes.EapTestAttributeDefinitions.RAND_2_BYTES;
-import static com.android.internal.net.eap.statemachine.EapSimAkaMethodStateMachine.KEY_LEN;
-import static com.android.internal.net.eap.statemachine.EapSimAkaMethodStateMachine.MAC_ALGORITHM_STRING;
-import static com.android.internal.net.eap.statemachine.EapSimAkaMethodStateMachine.MASTER_KEY_GENERATION_ALG;
-import static com.android.internal.net.eap.statemachine.EapSimAkaMethodStateMachine.SESSION_KEY_LENGTH;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
-
-import android.net.eap.EapSessionConfig.EapSimConfig;
-import android.telephony.TelephonyManager;
-
-import com.android.internal.net.eap.EapResult;
-import com.android.internal.net.eap.EapResult.EapError;
-import com.android.internal.net.eap.EapResult.EapResponse;
-import com.android.internal.net.eap.crypto.Fips186_2Prf;
-import com.android.internal.net.eap.exceptions.EapInvalidRequestException;
-import com.android.internal.net.eap.exceptions.simaka.EapSimAkaAuthenticationFailureException;
-import com.android.internal.net.eap.message.EapData;
-import com.android.internal.net.eap.message.EapMessage;
-import com.android.internal.net.eap.message.simaka.EapSimAkaAttribute;
-import com.android.internal.net.eap.message.simaka.EapSimAkaAttribute.AtClientErrorCode;
-import com.android.internal.net.eap.message.simaka.EapSimAkaAttribute.AtIdentity;
-import com.android.internal.net.eap.message.simaka.EapSimAkaAttribute.AtMac;
-import com.android.internal.net.eap.message.simaka.EapSimAkaAttribute.AtNotification;
-import com.android.internal.net.eap.message.simaka.EapSimAkaAttribute.AtRandSim;
-import com.android.internal.net.eap.message.simaka.EapSimAkaAttribute.AtSelectedVersion;
-import com.android.internal.net.eap.message.simaka.EapSimAkaTypeData;
-import com.android.internal.net.eap.message.simaka.EapSimTypeData;
-import com.android.internal.net.eap.statemachine.EapMethodStateMachine.EapMethodState;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import java.security.MessageDigest;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import javax.crypto.Mac;
-import javax.crypto.spec.SecretKeySpec;
-
-public class EapSimAkaMethodStateMachineTest {
- private static final String TAG = EapSimAkaMethodStateMachineTest.class.getSimpleName();
- private static final int SUB_ID = 1;
- private static final int AT_RAND_LEN = 36;
- private static final String VERSIONS_STRING = "0001";
- private static final String SELECTED_VERSION = "0001";
- private static final byte[] SHA_1_INPUT = hexStringToByteArray("0123456789ABCDEF");
- private static final byte[] FORMATTED_UICC_CHALLENGE =
- hexStringToByteArray("1000112233445566778899AABBCCDDEEFF");
- private static final String BASE_64_CHALLENGE = "EAARIjNEVWZ3iJmqu8zd7v8=";
- private static final String BASE_64_RESPONSE = "BBEiM0QIAQIDBAUGBwg=";
- private static final byte[] UICC_RESPONSE =
- hexStringToByteArray("04" + SRES_1 + "08" + KC_1);
-
- // EAP-Identity = hex("test@android.net")
- protected static final byte[] EAP_IDENTITY_BYTES =
- hexStringToByteArray("7465737440616E64726F69642E6E6574");
-
- // K_encr + K_aut + MSK + EMSK
- private static final int PRF_OUTPUT_BYTES = (2 * KEY_LEN) + (2 * SESSION_KEY_LENGTH);
-
- private TelephonyManager mMockTelephonyManager;
- private EapSimConfig mEapSimConfig;
- private EapSimAkaMethodStateMachine mStateMachine;
-
- @Before
- public void setUp() {
- mMockTelephonyManager = mock(TelephonyManager.class);
- mEapSimConfig = new EapSimConfig(SUB_ID, TelephonyManager.APPTYPE_USIM);
-
- mStateMachine =
- new EapSimAkaMethodStateMachine(
- mMockTelephonyManager, EAP_IDENTITY_BYTES, mEapSimConfig) {
- @Override
- EapSimAkaTypeData getEapSimAkaTypeData(AtClientErrorCode clientErrorCode) {
- return new EapSimTypeData(
- EAP_SIM_CLIENT_ERROR, Arrays.asList(clientErrorCode));
- }
-
- @Override
- EapSimAkaTypeData getEapSimAkaTypeData(
- int eapSubtype, List<EapSimAkaAttribute> attributes) {
- return new EapSimTypeData(eapSubtype, attributes);
- }
-
- @Override
- int getEapMethod() {
- return EAP_TYPE_SIM;
- }
- };
- mStateMachine = spy(mStateMachine);
- }
-
- @Test
- public void testBuildClientErrorResponse() {
- AtClientErrorCode errorCode = AtClientErrorCode.UNSUPPORTED_VERSION;
-
- EapResult result =
- mStateMachine.buildClientErrorResponse(ID_INT, EAP_TYPE_SIM, errorCode);
- assertTrue(result instanceof EapResult.EapResponse);
- EapResult.EapResponse eapResponse = (EapResult.EapResponse) result;
- assertArrayEquals(EAP_SIM_CLIENT_ERROR_RESPONSE, eapResponse.packet);
- }
-
- @Test
- public void testBuildResponseMessage() throws Exception {
- List<EapSimAkaAttribute> attributes = new ArrayList<>();
- attributes.add(new AtSelectedVersion(1));
- attributes.add(new AtIdentity(AT_IDENTITY.length, IDENTITY));
- int identifier = ID_INT;
-
- EapResult result =
- mStateMachine.buildResponseMessage(
- EAP_TYPE_SIM,
- EAP_SIM_START,
- identifier,
- attributes);
- assertTrue(result instanceof EapResult);
- EapResponse eapResponse = (EapResponse) result;
- assertArrayEquals(EAP_SIM_RESPONSE_PACKET, eapResponse.packet);
- }
-
- @Test
- public void testGenerateAndPersistKeys() {
- byte[] mkInput = hexStringToByteArray(
- EAP_SIM_IDENTITY
- + KC_1
- + KC_2
- + NONCE_MT_STRING
- + VERSIONS_STRING
- + SELECTED_VERSION);
- MessageDigest mockSha1 = mock(MessageDigest.class);
- when(mockSha1.digest(eq(mkInput))).thenReturn(MK);
-
- byte[] keys = hexStringToByteArray(K_ENCR_STRING + K_AUT_STRING + MSK_STRING + EMSK_STRING);
- Fips186_2Prf mockFips186_2Prf = mock(Fips186_2Prf.class);
- when(mockFips186_2Prf.getRandom(eq(MK), eq(PRF_OUTPUT_BYTES))).thenReturn(keys);
-
- mStateMachine.generateAndPersistKeys(TAG, mockSha1, mockFips186_2Prf, mkInput);
- assertArrayEquals(K_ENCR, mStateMachine.mKEncr);
- assertArrayEquals(K_AUT, mStateMachine.mKAut);
- assertArrayEquals(MSK, mStateMachine.mMsk);
- assertArrayEquals(EMSK, mStateMachine.mEmsk);
-
- verify(mockSha1).digest(eq(mkInput));
- verify(mockFips186_2Prf).getRandom(eq(MK), eq(PRF_OUTPUT_BYTES));
- verifyNoMoreInteractions(mockSha1, mockFips186_2Prf);
- }
-
- /**
- * Test that we can actually instantiate and use the SHA-1algorithm.
- */
- @Test
- public void testCreateSha1() throws Exception {
- MessageDigest sha1 = MessageDigest.getInstance(MASTER_KEY_GENERATION_ALG);
- byte[] sha1Result = sha1.digest(SHA_1_INPUT);
- assertFalse(Arrays.equals(SHA_1_INPUT, sha1Result));
- }
-
- /**
- * Test that we can actually instantiate and use the HMAC-SHA-1 algorithm.
- */
- @Test
- public void testCreateHmacSha1() throws Exception {
- Mac macAlgorithm = Mac.getInstance(MAC_ALGORITHM_STRING);
- macAlgorithm.init(new SecretKeySpec(K_AUT, MAC_ALGORITHM_STRING));
- byte[] mac = macAlgorithm.doFinal(MAC_INPUT);
- assertFalse(Arrays.equals(MAC_INPUT, mac));
- }
-
- @Test
- public void testProcessUiccAuthentication() throws Exception {
- when(mMockTelephonyManager
- .getIccAuthentication(
- TelephonyManager.APPTYPE_USIM,
- TelephonyManager.AUTHTYPE_EAP_AKA,
- BASE_64_CHALLENGE)).thenReturn(BASE_64_RESPONSE);
-
- byte[] result =
- mStateMachine.processUiccAuthentication(
- TAG,
- TelephonyManager.AUTHTYPE_EAP_AKA,
- FORMATTED_UICC_CHALLENGE);
-
- assertArrayEquals(UICC_RESPONSE, result);
- verify(mMockTelephonyManager)
- .getIccAuthentication(
- TelephonyManager.APPTYPE_USIM,
- TelephonyManager.AUTHTYPE_EAP_AKA,
- BASE_64_CHALLENGE);
- verifyNoMoreInteractions(mMockTelephonyManager);
- }
-
- @Test
- public void testProcessUiccAuthenticationNullResponse() throws Exception {
- when(mMockTelephonyManager
- .getIccAuthentication(
- TelephonyManager.APPTYPE_USIM,
- TelephonyManager.AUTHTYPE_EAP_AKA,
- BASE_64_CHALLENGE)).thenReturn(null);
-
- try {
- mStateMachine.processUiccAuthentication(
- TAG,
- TelephonyManager.AUTHTYPE_EAP_AKA,
- FORMATTED_UICC_CHALLENGE);
- fail("EapSimAkaAuthenticationFailureException expected for null TelMan response");
- } catch (EapSimAkaAuthenticationFailureException expected) {
- }
-
- verify(mMockTelephonyManager)
- .getIccAuthentication(
- TelephonyManager.APPTYPE_USIM,
- TelephonyManager.AUTHTYPE_EAP_AKA,
- BASE_64_CHALLENGE);
- verifyNoMoreInteractions(mMockTelephonyManager);
- }
-
- @Test
- public void testGetMac() throws Exception {
- AtMac atMac = new AtMac(ORIGINAL_MAC);
- AtRandSim atRandSim = new AtRandSim(AT_RAND_LEN, RAND_1_BYTES, RAND_2_BYTES);
- EapSimTypeData eapSimTypeData =
- new EapSimTypeData(EAP_SIM_CHALLENGE, Arrays.asList(atRandSim, atMac));
-
- Mac mockMac = mock(Mac.class);
- when(mockMac.doFinal(eq(MAC_INPUT))).thenReturn(COMPUTED_MAC);
- mStateMachine.mMacAlgorithm = mockMac;
-
- byte[] mac = mStateMachine.getMac(EAP_CODE_REQUEST, ID_INT, eapSimTypeData, NONCE_MT);
- assertArrayEquals(COMPUTED_MAC, mac);
- AtMac postCalculationAtMac = (AtMac) eapSimTypeData.attributeMap.get(EAP_AT_MAC);
- assertArrayEquals(ORIGINAL_MAC, postCalculationAtMac.mac);
-
- verify(mockMac).doFinal(eq(MAC_INPUT));
- verifyNoMoreInteractions(mockMac);
- }
-
- @Test
- public void testGetMacNoMacAlgorithm() throws Exception {
- try {
- mStateMachine.getMac(EAP_CODE_REQUEST, ID_INT, null, null);
- fail("Expected IllegalStateException if Mac not set");
- } catch (IllegalStateException expected) {
- }
- }
-
- @Test
- public void testReceivedValidMac() throws Exception {
- AtMac atMac = new AtMac(ORIGINAL_MAC);
- AtRandSim atRandSim = new AtRandSim(AT_RAND_LEN, RAND_1_BYTES, RAND_2_BYTES);
- EapSimTypeData eapSimTypeData =
- new EapSimTypeData(EAP_SIM_CHALLENGE, Arrays.asList(atRandSim, atMac));
- EapData eapData = new EapData(EAP_TYPE_SIM, new byte[0]);
- EapMessage message = new EapMessage(EAP_CODE_REQUEST, ID_INT, eapData);
-
- doReturn(ORIGINAL_MAC)
- .when(mStateMachine)
- .getMac(eq(EAP_CODE_REQUEST), eq(ID_INT), eq(eapSimTypeData), eq(NONCE_MT));
-
- assertTrue(mStateMachine.isValidMac(TAG, message, eapSimTypeData, NONCE_MT));
-
- doReturn(new byte[0])
- .when(mStateMachine)
- .getMac(eq(EAP_CODE_REQUEST), eq(ID_INT), eq(eapSimTypeData), eq(NONCE_MT));
-
- assertFalse(mStateMachine.isValidMac(TAG, message, eapSimTypeData, NONCE_MT));
-
- verify(mStateMachine, times(2))
- .getMac(eq(EAP_CODE_REQUEST), eq(ID_INT), eq(eapSimTypeData), eq(NONCE_MT));
- }
-
- @Test
- public void testBuildResponseMessageWithMac() {
- Mac mockMac = mock(Mac.class);
- when(mockMac.doFinal(eq(EAP_SIM_CHALLENGE_RESPONSE_MAC_INPUT))).thenReturn(COMPUTED_MAC);
- mStateMachine.mMacAlgorithm = mockMac;
-
- EapResult result =
- mStateMachine.buildResponseMessageWithMac(ID_INT, EAP_SIM_CHALLENGE, SRES_BYTES);
-
- EapResponse eapResponse = (EapResponse) result;
- assertArrayEquals(EAP_SIM_CHALLENGE_RESPONSE_WITH_MAC, eapResponse.packet);
- verify(mockMac).doFinal(eq(EAP_SIM_CHALLENGE_RESPONSE_MAC_INPUT));
- verifyNoMoreInteractions(mockMac);
- }
-
- @Test
- public void testHandleEapSimNotificationPreChallenge() throws Exception {
- EapSimTypeData typeData =
- new EapSimTypeData(
- EAP_SIM_NOTIFICATION,
- Arrays.asList(new AtNotification(GENERAL_FAILURE_PRE_CHALLENGE)));
-
- EapResponse eapResponse =
- (EapResponse)
- mStateMachine.handleEapSimAkaNotification(TAG, true, ID_INT, typeData);
- assertArrayEquals(EAP_SIM_NOTIFICATION_RESPONSE, eapResponse.packet);
- assertTrue(mStateMachine.mHasReceivedSimAkaNotification);
- verify(mStateMachine, never()).transitionTo(any(EapMethodState.class));
- }
-
- @Test
- public void testHandleEapSimNotificationPreChallengeInvalidPBit() throws Exception {
- EapSimTypeData typeData =
- new EapSimTypeData(
- EAP_SIM_NOTIFICATION,
- Arrays.asList(new AtNotification(GENERAL_FAILURE_POST_CHALLENGE)));
-
- EapResponse eapResponse =
- (EapResponse)
- mStateMachine.handleEapSimAkaNotification(TAG, true, ID_INT, typeData);
- assertArrayEquals(EAP_SIM_CLIENT_ERROR_UNABLE_TO_PROCESS, eapResponse.packet);
- verify(mStateMachine, never())
- .transitionTo(any(EapMethodStateMachine.EapMethodState.class));
- }
-
- @Test
- public void testHandleEapSimNotificationMultipleNotifications() throws Exception {
- EapSimTypeData typeData =
- new EapSimTypeData(
- EAP_SIM_NOTIFICATION,
- Arrays.asList(new AtNotification(GENERAL_FAILURE_PRE_CHALLENGE)));
-
- mStateMachine.handleEapSimAkaNotification(TAG, true, ID_INT, typeData);
-
- EapError eapError =
- (EapError) mStateMachine.handleEapSimAkaNotification(TAG, true, ID_INT, typeData);
- assertTrue(eapError.cause instanceof EapInvalidRequestException);
- assertTrue(mStateMachine.mHasReceivedSimAkaNotification);
- verify(mStateMachine, never())
- .transitionTo(any(EapMethodStateMachine.EapMethodState.class));
- }
-
- @Test
- public void testHandleEapSimNotificationInvalidAtMac() throws Exception {
- EapSimTypeData typeData =
- new EapSimTypeData(
- EAP_SIM_NOTIFICATION,
- Arrays.asList(
- new AtNotification(GENERAL_FAILURE_PRE_CHALLENGE), new AtMac()));
-
- EapResponse eapResponse =
- (EapResponse)
- mStateMachine.handleEapSimAkaNotification(TAG, true, ID_INT, typeData);
- assertArrayEquals(EAP_SIM_CLIENT_ERROR_UNABLE_TO_PROCESS, eapResponse.packet);
- verify(mStateMachine, never())
- .transitionTo(any(EapMethodStateMachine.EapMethodState.class));
- }
-
- @Test
- public void testHandleEapSimNotificationPostChallenge() throws Exception {
- EapSimTypeData typeData =
- new EapSimTypeData(
- EAP_SIM_NOTIFICATION,
- Arrays.asList(
- new AtNotification(GENERAL_FAILURE_POST_CHALLENGE),
- new AtMac(ORIGINAL_MAC)));
-
- Mac mockMac = mock(Mac.class);
- when(mockMac.doFinal(eq(EAP_SIM_NOTIFICATION_REQUEST_WITH_EMPTY_MAC)))
- .thenReturn(ORIGINAL_MAC);
- when(mockMac.doFinal(eq(EAP_SIM_NOTIFICATION_RESPONSE_WITH_EMPTY_MAC)))
- .thenReturn(COMPUTED_MAC);
- mStateMachine.mMacAlgorithm = mockMac;
-
- EapResponse eapResponse =
- (EapResponse)
- mStateMachine.handleEapSimAkaNotification(TAG, false, ID_INT, typeData);
- assertArrayEquals(EAP_SIM_NOTIFICATION_RESPONSE_WITH_MAC, eapResponse.packet);
- assertTrue(mStateMachine.mHasReceivedSimAkaNotification);
- verify(mStateMachine, never()).transitionTo(any(EapMethodState.class));
-
- verify(mockMac).doFinal(eq(EAP_SIM_NOTIFICATION_REQUEST_WITH_EMPTY_MAC));
- verify(mockMac).doFinal(eq(EAP_SIM_NOTIFICATION_RESPONSE_WITH_EMPTY_MAC));
- verifyNoMoreInteractions(mockMac);
- }
-
- @Test
- public void testHandleEapSimNotificationPostChallengeInvalidAtMac() throws Exception {
- EapSimTypeData typeData =
- new EapSimTypeData(
- EAP_SIM_NOTIFICATION,
- Arrays.asList(new AtNotification(GENERAL_FAILURE_POST_CHALLENGE)));
-
- EapResponse eapResponse =
- (EapResponse)
- mStateMachine.handleEapSimAkaNotification(TAG, false, ID_INT, typeData);
- assertArrayEquals(EAP_SIM_CLIENT_ERROR_UNABLE_TO_PROCESS, eapResponse.packet);
- verify(mStateMachine, never()).transitionTo(any(EapMethodState.class));
- }
-
- @Test
- public void testKeyLengths() {
- assertEquals(KEY_LEN, mStateMachine.getKEncrLength());
- assertEquals(KEY_LEN, mStateMachine.getKAutLength());
- assertEquals(SESSION_KEY_LENGTH, mStateMachine.getMskLength());
- assertEquals(SESSION_KEY_LENGTH, mStateMachine.getEmskLength());
- }
-}