diff options
| author | 2017-11-08 18:02:53 +0000 | |
|---|---|---|
| committer | 2017-11-08 18:02:53 +0000 | |
| commit | 6491b034105d57c379b52f23f76e575dbf9d30dd (patch) | |
| tree | 7a55b4faf076001e63def86d36a8ce3da3bd2fd6 | |
| parent | 609330578923e26c92d487f496e4204bbfcfd5b7 (diff) | |
| parent | 3db35dfcd518bfe819d8d05f4fd13d0d8a0f891a (diff) | |
Merge "Update documentation for AES-GCM-ESP keymat length"
am: 3db35dfcd5
Change-Id: I71b24c9da8c677e35d05b6623eb99ec17f823b4b
| -rw-r--r-- | core/java/android/net/IpSecAlgorithm.java | 6 | ||||
| -rw-r--r-- | tests/net/java/com/android/server/IpSecServiceParameterizedTest.java | 13 |
2 files changed, 15 insertions, 4 deletions
diff --git a/core/java/android/net/IpSecAlgorithm.java b/core/java/android/net/IpSecAlgorithm.java index 16b1452311a6..64f8f39e2bca 100644 --- a/core/java/android/net/IpSecAlgorithm.java +++ b/core/java/android/net/IpSecAlgorithm.java @@ -78,7 +78,11 @@ public final class IpSecAlgorithm implements Parcelable { /** * AES-GCM Authentication/Integrity + Encryption/Ciphering Algorithm. * - * <p>Valid lengths for this key are {128, 192, 256}. + * <p>Valid lengths for keying material are {160, 224, 288}. + * + * <p>As per RFC4106 (Section 8.1), keying material consists of a 128, 192, or 256 bit AES key + * followed by a 32-bit salt. RFC compliance requires that the salt must be unique per + * invocation with the same key. * * <p>Valid ICV (truncation) lengths are {64, 96, 128}. */ diff --git a/tests/net/java/com/android/server/IpSecServiceParameterizedTest.java b/tests/net/java/com/android/server/IpSecServiceParameterizedTest.java index 9e97d84ba680..5c031eb11372 100644 --- a/tests/net/java/com/android/server/IpSecServiceParameterizedTest.java +++ b/tests/net/java/com/android/server/IpSecServiceParameterizedTest.java @@ -64,6 +64,13 @@ public class IpSecServiceParameterizedTest { return Arrays.asList(new Object[][] {{"8.8.4.4"}, {"2601::10"}}); } + private static final byte[] AEAD_KEY = { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, + 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + 0x73, 0x61, 0x6C, 0x74 + }; private static final byte[] CRYPT_KEY = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, @@ -87,7 +94,7 @@ public class IpSecServiceParameterizedTest { private static final IpSecAlgorithm CRYPT_ALGO = new IpSecAlgorithm(IpSecAlgorithm.CRYPT_AES_CBC, CRYPT_KEY); private static final IpSecAlgorithm AEAD_ALGO = - new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, CRYPT_KEY, CRYPT_KEY.length * 4); + new IpSecAlgorithm(IpSecAlgorithm.AUTH_CRYPT_AES_GCM, AEAD_KEY, 128); private static final int[] DIRECTIONS = new int[] {IpSecTransform.DIRECTION_IN, IpSecTransform.DIRECTION_OUT}; @@ -262,7 +269,7 @@ public class IpSecServiceParameterizedTest { eq(new byte[] {}), eq(0), eq(IpSecAlgorithm.AUTH_CRYPT_AES_GCM), - eq(CRYPT_KEY), + eq(AEAD_KEY), anyInt(), anyInt(), anyInt(), @@ -283,7 +290,7 @@ public class IpSecServiceParameterizedTest { eq(new byte[] {}), eq(0), eq(IpSecAlgorithm.AUTH_CRYPT_AES_GCM), - eq(CRYPT_KEY), + eq(AEAD_KEY), anyInt(), anyInt(), anyInt(), |