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.Retention;
|
||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* IpSecAlgorithm specifies a single algorithm that can be applied to an IpSec Transform. Refer to
|
* 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)";
|
public static final String AUTH_HMAC_SHA512 = "hmac(sha512)";
|
||||||
|
|
||||||
/** @hide */
|
/** @hide */
|
||||||
@StringDef({
|
@StringDef({CRYPT_AES_CBC, AUTH_HMAC_MD5, AUTH_HMAC_SHA1, AUTH_HMAC_SHA256, AUTH_HMAC_SHA512})
|
||||||
CRYPT_AES_CBC,
|
|
||||||
AUTH_HMAC_MD5,
|
|
||||||
AUTH_HMAC_SHA1,
|
|
||||||
AUTH_HMAC_SHA256,
|
|
||||||
AUTH_HMAC_SHA512
|
|
||||||
})
|
|
||||||
@Retention(RetentionPolicy.SOURCE)
|
@Retention(RetentionPolicy.SOURCE)
|
||||||
public @interface AlgorithmName {}
|
public @interface AlgorithmName {}
|
||||||
|
|
||||||
@@ -197,4 +192,12 @@ public final class IpSecAlgorithm implements Parcelable {
|
|||||||
.append("}")
|
.append("}")
|
||||||
.toString();
|
.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("}")
|
.append("}")
|
||||||
.toString();
|
.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()};
|
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(mEncapType);
|
||||||
out.writeInt(mEncapSocketResourceId);
|
out.writeInt(mEncapSocketResourceId);
|
||||||
out.writeInt(mEncapRemotePort);
|
out.writeInt(mEncapRemotePort);
|
||||||
|
out.writeInt(mNattKeepaliveInterval);
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -221,6 +229,7 @@ public final class IpSecConfig implements Parcelable {
|
|||||||
mEncapType = in.readInt();
|
mEncapType = in.readInt();
|
||||||
mEncapSocketResourceId = in.readInt();
|
mEncapSocketResourceId = in.readInt();
|
||||||
mEncapRemotePort = in.readInt();
|
mEncapRemotePort = in.readInt();
|
||||||
|
mNattKeepaliveInterval = in.readInt();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -262,4 +271,22 @@ public final class IpSecConfig implements Parcelable {
|
|||||||
return new IpSecConfig[size];
|
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