Add equals() for IpSecAlgorithm and IpSecConfig
Add equality testing methods to support tests for parceling and un-parceling IpSecConfig. Bug: 38397094 Test: runtest -x IpSecConfigTest.java Change-Id: I31e318334d39ed6e9daf5ec8f3be7dcec75e12ad
This commit is contained in:
@@ -24,6 +24,7 @@ import com.android.internal.util.HexDump;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* IpSecAlgorithm specifies a single algorithm that can be applied to an IpSec Transform. Refer to
|
||||
@@ -75,13 +76,7 @@ public final class IpSecAlgorithm implements Parcelable {
|
||||
public static final String AUTH_HMAC_SHA512 = "hmac(sha512)";
|
||||
|
||||
/** @hide */
|
||||
@StringDef({
|
||||
CRYPT_AES_CBC,
|
||||
AUTH_HMAC_MD5,
|
||||
AUTH_HMAC_SHA1,
|
||||
AUTH_HMAC_SHA256,
|
||||
AUTH_HMAC_SHA512
|
||||
})
|
||||
@StringDef({CRYPT_AES_CBC, AUTH_HMAC_MD5, AUTH_HMAC_SHA1, AUTH_HMAC_SHA256, AUTH_HMAC_SHA512})
|
||||
@Retention(RetentionPolicy.SOURCE)
|
||||
public @interface AlgorithmName {}
|
||||
|
||||
@@ -197,4 +192,12 @@ public final class IpSecAlgorithm implements Parcelable {
|
||||
.append("}")
|
||||
.toString();
|
||||
}
|
||||
|
||||
/** package */
|
||||
static boolean equals(IpSecAlgorithm lhs, IpSecAlgorithm rhs) {
|
||||
if (lhs == null || rhs == null) return (lhs == rhs);
|
||||
return (lhs.mName.equals(rhs.mName)
|
||||
&& Arrays.equals(lhs.mKey, rhs.mKey)
|
||||
&& lhs.mTruncLenBits == rhs.mTruncLenBits);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -62,6 +62,13 @@ public final class IpSecConfig implements Parcelable {
|
||||
.append("}")
|
||||
.toString();
|
||||
}
|
||||
|
||||
static boolean equals(IpSecConfig.Flow lhs, IpSecConfig.Flow rhs) {
|
||||
if (lhs == null || rhs == null) return (lhs == rhs);
|
||||
return (lhs.mSpiResourceId == rhs.mSpiResourceId
|
||||
&& IpSecAlgorithm.equals(lhs.mEncryption, rhs.mEncryption)
|
||||
&& IpSecAlgorithm.equals(lhs.mAuthentication, rhs.mAuthentication));
|
||||
}
|
||||
}
|
||||
|
||||
private final Flow[] mFlow = new Flow[] {new Flow(), new Flow()};
|
||||
@@ -198,6 +205,7 @@ public final class IpSecConfig implements Parcelable {
|
||||
out.writeInt(mEncapType);
|
||||
out.writeInt(mEncapSocketResourceId);
|
||||
out.writeInt(mEncapRemotePort);
|
||||
out.writeInt(mNattKeepaliveInterval);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
@@ -221,6 +229,7 @@ public final class IpSecConfig implements Parcelable {
|
||||
mEncapType = in.readInt();
|
||||
mEncapSocketResourceId = in.readInt();
|
||||
mEncapRemotePort = in.readInt();
|
||||
mNattKeepaliveInterval = in.readInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -262,4 +271,22 @@ public final class IpSecConfig implements Parcelable {
|
||||
return new IpSecConfig[size];
|
||||
}
|
||||
};
|
||||
|
||||
@VisibleForTesting
|
||||
public static boolean equals(IpSecConfig lhs, IpSecConfig rhs) {
|
||||
if (lhs == null || rhs == null) return (lhs == rhs);
|
||||
return (lhs.mMode == rhs.mMode
|
||||
&& lhs.mLocalAddress.equals(rhs.mLocalAddress)
|
||||
&& lhs.mRemoteAddress.equals(rhs.mRemoteAddress)
|
||||
&& ((lhs.mNetwork != null && lhs.mNetwork.equals(rhs.mNetwork))
|
||||
|| (lhs.mNetwork == rhs.mNetwork))
|
||||
&& lhs.mEncapType == rhs.mEncapType
|
||||
&& lhs.mEncapSocketResourceId == rhs.mEncapSocketResourceId
|
||||
&& lhs.mEncapRemotePort == rhs.mEncapRemotePort
|
||||
&& lhs.mNattKeepaliveInterval == rhs.mNattKeepaliveInterval
|
||||
&& IpSecConfig.Flow.equals(lhs.mFlow[IpSecTransform.DIRECTION_OUT],
|
||||
rhs.mFlow[IpSecTransform.DIRECTION_OUT])
|
||||
&& IpSecConfig.Flow.equals(lhs.mFlow[IpSecTransform.DIRECTION_IN],
|
||||
rhs.mFlow[IpSecTransform.DIRECTION_IN]));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user