Verify converting to Vpnprofile with IkeTunnelConnectionParams set

Add test to verify converting Ikev2VpnProfile to Vpnprofile with
IkeTunnelConnectionParams set. Some fields like server should
not be set since the information should contain in the assigned
IkeTunnelConnectionParams.

Bug: 243718982
Test: atest FrameworksNetTests
Change-Id: Ie019ea98932a6d079f213e3bff45f21b44d3fa4e
This commit is contained in:
chiachangwang
2022-09-02 03:52:04 +00:00
parent b259ee802f
commit 4e953f63dd
2 changed files with 42 additions and 0 deletions

View File

@@ -27,6 +27,7 @@ import static android.net.ipsec.ike.SaProposal.PSEUDORANDOM_FUNCTION_AES128_XCBC
import android.net.InetAddresses; import android.net.InetAddresses;
import android.net.ipsec.ike.ChildSaProposal; import android.net.ipsec.ike.ChildSaProposal;
import android.net.ipsec.ike.IkeFqdnIdentification; import android.net.ipsec.ike.IkeFqdnIdentification;
import android.net.ipsec.ike.IkeIdentification;
import android.net.ipsec.ike.IkeIpv4AddrIdentification; import android.net.ipsec.ike.IkeIpv4AddrIdentification;
import android.net.ipsec.ike.IkeIpv6AddrIdentification; import android.net.ipsec.ike.IkeIpv6AddrIdentification;
import android.net.ipsec.ike.IkeSaProposal; import android.net.ipsec.ike.IkeSaProposal;
@@ -57,6 +58,11 @@ public class IkeSessionTestUtils {
} }
private static IkeSessionParams getTestIkeSessionParams(boolean testIpv6) { private static IkeSessionParams getTestIkeSessionParams(boolean testIpv6) {
return getTestIkeSessionParams(testIpv6, new IkeFqdnIdentification(TEST_IDENTITY));
}
public static IkeSessionParams getTestIkeSessionParams(boolean testIpv6,
IkeIdentification identification) {
final String testServer = testIpv6 ? TEST_SERVER_ADDR_V6 : TEST_SERVER_ADDR_V4; final String testServer = testIpv6 ? TEST_SERVER_ADDR_V6 : TEST_SERVER_ADDR_V4;
final InetAddress addr = InetAddresses.parseNumericAddress(testServer); final InetAddress addr = InetAddresses.parseNumericAddress(testServer);
final IkeSessionParams.Builder ikeOptionsBuilder = final IkeSessionParams.Builder ikeOptionsBuilder =

View File

@@ -18,6 +18,7 @@ package android.net;
import static android.net.cts.util.IkeSessionTestUtils.CHILD_PARAMS; import static android.net.cts.util.IkeSessionTestUtils.CHILD_PARAMS;
import static android.net.cts.util.IkeSessionTestUtils.IKE_PARAMS_V6; import static android.net.cts.util.IkeSessionTestUtils.IKE_PARAMS_V6;
import static android.net.cts.util.IkeSessionTestUtils.getTestIkeSessionParams;
import static com.android.testutils.DevSdkIgnoreRuleKt.SC_V2; import static com.android.testutils.DevSdkIgnoreRuleKt.SC_V2;
@@ -28,6 +29,7 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
import android.net.ipsec.ike.IkeKeyIdIdentification;
import android.net.ipsec.ike.IkeTunnelConnectionParams; import android.net.ipsec.ike.IkeTunnelConnectionParams;
import android.os.Build; import android.os.Build;
import android.test.mock.MockContext; import android.test.mock.MockContext;
@@ -445,6 +447,40 @@ public class Ikev2VpnProfileTest {
assertEquals(ikeProfile, Ikev2VpnProfile.fromVpnProfile(ikeProfile.toVpnProfile())); assertEquals(ikeProfile, Ikev2VpnProfile.fromVpnProfile(ikeProfile.toVpnProfile()));
} }
@Test
public void testBuildWithIkeTunConnParamsConvertToVpnProfile() throws Exception {
// Special keyId that contains delimiter character of VpnProfile
final byte[] keyId = "foo\0bar".getBytes();
final IkeTunnelConnectionParams tunnelParams = new IkeTunnelConnectionParams(
getTestIkeSessionParams(true /* testIpv6 */, new IkeKeyIdIdentification(keyId)),
CHILD_PARAMS);
final Ikev2VpnProfile ikev2VpnProfile = new Ikev2VpnProfile.Builder(tunnelParams).build();
final VpnProfile vpnProfile = ikev2VpnProfile.toVpnProfile();
assertEquals(VpnProfile.TYPE_IKEV2_FROM_IKE_TUN_CONN_PARAMS, vpnProfile.type);
// Username, password, server, ipsecIdentifier, ipsecCaCert, ipsecSecret, ipsecUserCert and
// getAllowedAlgorithms should not be set if IkeTunnelConnectionParams is set.
assertEquals("", vpnProfile.server);
assertEquals("", vpnProfile.ipsecIdentifier);
assertEquals("", vpnProfile.username);
assertEquals("", vpnProfile.password);
assertEquals("", vpnProfile.ipsecCaCert);
assertEquals("", vpnProfile.ipsecSecret);
assertEquals("", vpnProfile.ipsecUserCert);
assertEquals(0, vpnProfile.getAllowedAlgorithms().size());
// IkeTunnelConnectionParams should stay the same.
assertEquals(tunnelParams, vpnProfile.ikeTunConnParams);
// Convert to disk-stable format and then back to Ikev2VpnProfile should be the same.
final VpnProfile decodedVpnProfile =
VpnProfile.decode(vpnProfile.key, vpnProfile.encode());
final Ikev2VpnProfile convertedIkev2VpnProfile =
Ikev2VpnProfile.fromVpnProfile(decodedVpnProfile);
assertEquals(ikev2VpnProfile, convertedIkev2VpnProfile);
}
@Test @Test
public void testConversionIsLosslessWithIkeTunConnParams() throws Exception { public void testConversionIsLosslessWithIkeTunConnParams() throws Exception {
final IkeTunnelConnectionParams tunnelParams = final IkeTunnelConnectionParams tunnelParams =