diff options
Diffstat (limited to 'tests/iketests/src/java/com')
3 files changed, 66 insertions, 5 deletions
diff --git a/tests/iketests/src/java/com/android/ike/ikev2/message/IkeAuthDigitalSignPayloadTest.java b/tests/iketests/src/java/com/android/ike/ikev2/message/IkeAuthDigitalSignPayloadTest.java new file mode 100644 index 00000000..a2c4d1f0 --- /dev/null +++ b/tests/iketests/src/java/com/android/ike/ikev2/message/IkeAuthDigitalSignPayloadTest.java @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2019 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.ike.ikev2.message; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +public final class IkeAuthDigitalSignPayloadTest { + + private static final String AUTH_PAYLOAD_BODY_GENERIC_DIGITAL_SIGN_HEX_STRING = + "0e0000000f300d06092a864886f70d01010b05007b2f4456878b1344e803f094" + + "159a59361bc639071b69de41915452c478b77a46ce4a2c96ddc7ba2c18d08406" + + "50ce51c77124605423a2f75d8ed4b5a1ec5944c3396221a39e25def09abe5c9f" + + "6d9cd70e8f6254d4c835015256c9d6c26f0c6d31ac96a2ed802ccb16e48e7ff3" + + "daf736221b18c2a972130a69edb197a505a312882baed95d38a47bf6784533f2" + + "ffee671d742b5ae463216e46ef970ee6a335ffb3fc9c170a680fb802bb950cb0" + + "5601339be8869a73f8f85254d792b6e91697d8893ccd34b5fb6aad6268c4ab0f" + + "9ead7b3f8a4a255e1b2eabfa3da0de284f3954cf49271918dd2d2db95c8e7812" + + "9aea77e5761ac5683a0b5af300ceb52f5e8d8168"; + // TODO: Build a RSA_SHA1 signature and add tests for it. + + @Test + public void testDecodeGenericDigitalSignPayload() throws Exception { + byte[] inputPacket = + TestUtils.hexStringToByteArray(AUTH_PAYLOAD_BODY_GENERIC_DIGITAL_SIGN_HEX_STRING); + IkeAuthPayload payload = IkeAuthPayload.getIkeAuthPayload(false, inputPacket); + + assertTrue(payload instanceof IkeAuthDigitalSignPayload); + IkeAuthDigitalSignPayload dsPayload = (IkeAuthDigitalSignPayload) payload; + assertEquals( + IkeAuthDigitalSignPayload.SIGNATURE_ALGO_RSA_SHA2_256, + dsPayload.signatureAlgoAndHash); + } +} diff --git a/tests/iketests/src/java/com/android/ike/ikev2/message/IkeNoncePayloadTest.java b/tests/iketests/src/java/com/android/ike/ikev2/message/IkeNoncePayloadTest.java index a15507c5..f4e4a984 100644 --- a/tests/iketests/src/java/com/android/ike/ikev2/message/IkeNoncePayloadTest.java +++ b/tests/iketests/src/java/com/android/ike/ikev2/message/IkeNoncePayloadTest.java @@ -41,7 +41,7 @@ public final class IkeNoncePayloadTest { payload.encodeToByteBuffer(NEXT_PAYLOAD_TYPE, byteBuffer); byte[] expectedNoncePayload = - TestUtils.hexStringToByteArray(NONCE_PAYLOAD_RAW_HEX_STRING); + TestUtils.hexStringToByteArray(NONCE_PAYLOAD_RAW_HEX_STRING); assertArrayEquals(expectedNoncePayload, byteBuffer.array()); } } diff --git a/tests/iketests/src/java/com/android/ike/ikev2/message/TestUtils.java b/tests/iketests/src/java/com/android/ike/ikev2/message/TestUtils.java index d1c82ddd..e77e799d 100644 --- a/tests/iketests/src/java/com/android/ike/ikev2/message/TestUtils.java +++ b/tests/iketests/src/java/com/android/ike/ikev2/message/TestUtils.java @@ -16,15 +16,26 @@ package com.android.ike.ikev2.message; +/** TestUtils provides utility methods for parsing Hex String */ public final class TestUtils { - static byte[] hexStringToByteArray(String s) { - int len = s.length(); + /** + * Converts the unsigned Hex String to a byte array. + * + * @param hexString hex representation of an unsigned value. + * @return the converted byte array. + * @throws IllegalArgumentException when length of Hex String is an odd number. + */ + public static byte[] hexStringToByteArray(String hexString) throws IllegalArgumentException { + int len = hexString.length(); + if (len % 2 != 0) { + throw new IllegalArgumentException("Invalid Hex String"); + } byte[] data = new byte[len / 2]; for (int i = 0; i < len; i += 2) { data[i / 2] = (byte) - ((Character.digit(s.charAt(i), 16) << 4) - + Character.digit(s.charAt(i + 1), 16)); + ((Character.digit(hexString.charAt(i), 16) << 4) + + Character.digit(hexString.charAt(i + 1), 16)); } return data; } |