From ca0191d050b3dac6e65815ad5662ed8e796ef9d9 Mon Sep 17 00:00:00 2001 From: CGantert345 <57003061+CGantert345@users.noreply.github.com> Date: Thu, 29 Oct 2020 12:44:07 +0100 Subject: fix for the Android Java SDK bug in getDeclaredFields nor providing the field order --- src/net/gcdc/asn1/test/UperEncodeStringTest.java | 33 ++++++++++++++++++------ 1 file changed, 25 insertions(+), 8 deletions(-) (limited to 'src/net/gcdc/asn1/test/UperEncodeStringTest.java') diff --git a/src/net/gcdc/asn1/test/UperEncodeStringTest.java b/src/net/gcdc/asn1/test/UperEncodeStringTest.java index 521075c..29e6c99 100644 --- a/src/net/gcdc/asn1/test/UperEncodeStringTest.java +++ b/src/net/gcdc/asn1/test/UperEncodeStringTest.java @@ -6,6 +6,7 @@ import java.util.logging.Level; import net.gcdc.asn1.datatypes.Asn1Optional; import net.gcdc.asn1.datatypes.CharacterRestriction; +import net.gcdc.asn1.datatypes.FieldOrder; import net.gcdc.asn1.datatypes.RestrictedString; import net.gcdc.asn1.datatypes.Sequence; @@ -31,9 +32,11 @@ public class UperEncodeStringTest { @Sequence public static class TestRecord { + @FieldOrder(order = 0) @RestrictedString(CharacterRestriction.UTF8String) @Asn1Optional() String valueUtf8; + @FieldOrder(order = 1) @RestrictedString(CharacterRestriction.IA5String) @Asn1Optional() String valueIA5; @@ -48,29 +51,41 @@ public class UperEncodeStringTest { @Test public void testEncode() throws IllegalArgumentException, IllegalAccessException { - TestRecord record = new TestRecord("Müller", "Meier"); + + //Teststring: AêñüC + String original = new String("A" + "\u00ea" + "\u00f1" + "\u00fc" + "C"); + + TestRecord record = new TestRecord(original, "Meier"); byte[] encoded = UperEncoder.encode(record); String hex = UperEncoder.hexStringFromBytes(encoded); UperEncoder.logger.log(Level.FINEST,String.format("data hex: %s", hex)); - assertEquals("C1D370EF1B1B195C8166E5D39790",hex); + assertEquals("C21070EAB0EC70EF10C166E5D39790",hex); + } @Test public void testEncodeUtf8() throws IllegalArgumentException, IllegalAccessException { - TestRecord record = new TestRecord("你好吗", "Meier"); + + //"你好吗" + String original = new String("\u00e4" + "\u00bd" + "\u00a0" + "\u00e5" + "\u00a5" + "\u00bd" + "\u00e5" + "\u0090" + "\u0097"); + TestRecord record = new TestRecord(original, "Meier"); byte[] encoded = UperEncoder.encode(record); String hex = UperEncoder.hexStringFromBytes(encoded); UperEncoder.logger.log(Level.FINEST,String.format("data hex: %s", hex)); - assertEquals("C2792F6839696F796425C166E5D39790",hex); + assertEquals("C4B0E930AF70A830E970A970AF70E970A430A5C166E5D39790",hex); } @Test public void testDecode() throws IllegalArgumentException, IllegalAccessException { - TestRecord record = new TestRecord("Müller", "Meier"); + + //Teststring: AêñüC + String original = new String("A" + "\u00ea" + "\u00f1" + "\u00fc" + "C"); + + TestRecord record = new TestRecord(original, "Meier"); byte[] encoded = UperEncoder.encode(record); String hex = UperEncoder.hexStringFromBytes(encoded); UperEncoder.logger.log(Level.FINEST,String.format("data hex: %s", hex)); - assertEquals("C1D370EF1B1B195C8166E5D39790",hex); + assertEquals("C21070EAB0EC70EF10C166E5D39790",hex); TestRecord result = UperEncoder.decode(encoded, TestRecord.class); assertEquals(result.valueUtf8,record.valueUtf8); assertEquals(result.valueIA5,record.valueIA5); @@ -78,11 +93,13 @@ public class UperEncodeStringTest { @Test public void testDecodeUtf8() throws IllegalArgumentException, IllegalAccessException { - TestRecord record = new TestRecord("你好吗", "Meier"); + //"你好吗" + String original = new String("\u00e4" + "\u00bd" + "\u00a0" + "\u00e5" + "\u00a5" + "\u00bd" + "\u00e5" + "\u0090" + "\u0097"); + TestRecord record = new TestRecord(original, "Meier"); byte[] encoded = UperEncoder.encode(record); String hex = UperEncoder.hexStringFromBytes(encoded); UperEncoder.logger.log(Level.FINEST,String.format("data hex: %s", hex)); - assertEquals("C2792F6839696F796425C166E5D39790",hex); + assertEquals("C4B0E930AF70A830E970A970AF70E970A430A5C166E5D39790",hex); TestRecord result = UperEncoder.decode(encoded, TestRecord.class); assertEquals(result.valueUtf8,record.valueUtf8); assertEquals(result.valueIA5,record.valueIA5); -- cgit v1.2.3