Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit de1dca7c authored by Yan Yan's avatar Yan Yan
Browse files

Add three new IKE options in IkeSessionParamsUtils

This commit updates IkeSessionParamsUtils to be able
to encode/decode IkeSessionParams with IKE_OPTION_REKEY_MOBILITY,
IKE_OPTION_AUTOMATIC_ADDRESS_FAMILY_SELECTION and
IKE_OPTION_AUTOMATIC_NATT_KEEPALIVES

Bug: 242231517
Test: atest IkeSessionParamsUtilsTest
Change-Id: I0ea9fbf1e0c304a5afb563f912d2a8a49b4faad0
parent 45926929
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -72,6 +72,13 @@ public final class IkeSessionParamsUtils {
    private static final String NATT_KEEPALIVE_DELAY_SEC_KEY = "NATT_KEEPALIVE_DELAY_SEC_KEY";
    private static final String IKE_OPTIONS_KEY = "IKE_OPTIONS_KEY";

    // TODO: Use the IKE API when they are exposed
    @VisibleForTesting(visibility = Visibility.PRIVATE)
    public static final int IKE_OPTION_AUTOMATIC_ADDRESS_FAMILY_SELECTION = 6;

    @VisibleForTesting(visibility = Visibility.PRIVATE)
    public static final int IKE_OPTION_AUTOMATIC_NATT_KEEPALIVES = 7;

    private static final Set<Integer> IKE_OPTIONS = new ArraySet<>();

    static {
@@ -80,6 +87,9 @@ public final class IkeSessionParamsUtils {
        IKE_OPTIONS.add(IkeSessionParams.IKE_OPTION_MOBIKE);
        IKE_OPTIONS.add(IkeSessionParams.IKE_OPTION_FORCE_PORT_4500);
        IKE_OPTIONS.add(IkeSessionParams.IKE_OPTION_INITIAL_CONTACT);
        IKE_OPTIONS.add(IkeSessionParams.IKE_OPTION_REKEY_MOBILITY);
        IKE_OPTIONS.add(IKE_OPTION_AUTOMATIC_ADDRESS_FAMILY_SELECTION);
        IKE_OPTIONS.add(IKE_OPTION_AUTOMATIC_NATT_KEEPALIVES);
    }

    /** Serializes an IkeSessionParams to a PersistableBundle. */
+22 −14
Original line number Diff line number Diff line
@@ -134,13 +134,33 @@ public class IkeSessionParamsUtilsTest {
        verifyPersistableBundleEncodeDecodeIsLossless(params);
    }

    private static IkeSessionParams.Builder createBuilderMinimumWithEap() throws Exception {
        final X509Certificate serverCaCert = createCertFromPemFile("self-signed-ca.pem");

        final byte[] eapId = "test@android.net".getBytes(StandardCharsets.US_ASCII);
        final int subId = 1;
        final EapSessionConfig eapConfig =
                new EapSessionConfig.Builder()
                        .setEapIdentity(eapId)
                        .setEapSimConfig(subId, APPTYPE_USIM)
                        .setEapAkaConfig(subId, APPTYPE_USIM)
                        .build();
        return createBuilderMinimum().setAuthEap(serverCaCert, eapConfig);
    }

    @Test
    public void testEncodeDecodeParamsWithIkeOptions() throws Exception {
        final IkeSessionParams params =
                createBuilderMinimum()
                createBuilderMinimumWithEap()
                        .addIkeOption(IkeSessionParams.IKE_OPTION_ACCEPT_ANY_REMOTE_ID)
                        .addIkeOption(IkeSessionParams.IKE_OPTION_EAP_ONLY_AUTH)
                        .addIkeOption(IkeSessionParams.IKE_OPTION_MOBIKE)
                        .addIkeOption(IkeSessionParams.IKE_OPTION_FORCE_PORT_4500)
                        .addIkeOption(IkeSessionParams.IKE_OPTION_INITIAL_CONTACT)
                        .addIkeOption(IkeSessionParams.IKE_OPTION_REKEY_MOBILITY)
                        .addIkeOption(
                                IkeSessionParamsUtils.IKE_OPTION_AUTOMATIC_ADDRESS_FAMILY_SELECTION)
                        .addIkeOption(IkeSessionParamsUtils.IKE_OPTION_AUTOMATIC_NATT_KEEPALIVES)
                        .build();
        verifyPersistableBundleEncodeDecodeIsLossless(params);
    }
@@ -176,19 +196,7 @@ public class IkeSessionParamsUtilsTest {

    @Test
    public void testEncodeRecodeParamsWithEapAuth() throws Exception {
        final X509Certificate serverCaCert = createCertFromPemFile("self-signed-ca.pem");

        final byte[] eapId = "test@android.net".getBytes(StandardCharsets.US_ASCII);
        final int subId = 1;
        final EapSessionConfig eapConfig =
                new EapSessionConfig.Builder()
                        .setEapIdentity(eapId)
                        .setEapSimConfig(subId, APPTYPE_USIM)
                        .setEapAkaConfig(subId, APPTYPE_USIM)
                        .build();

        final IkeSessionParams params =
                createBuilderMinimum().setAuthEap(serverCaCert, eapConfig).build();
        final IkeSessionParams params = createBuilderMinimumWithEap().build();
        verifyPersistableBundleEncodeDecodeIsLossless(params);
    }
}