From a7515e3c057ef00ade3ae093b179c2787f07803b Mon Sep 17 00:00:00 2001 From: CGantert345 <57003061+CGantert345@users.noreply.github.com> Date: Thu, 30 Apr 2020 14:39:47 +0200 Subject: Implementation of ObjectIdentifier and dynamic header --- .../asn1/test/UperEncodeObjectIdentifierTest.java | 73 ++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 src/net/gcdc/asn1/test/UperEncodeObjectIdentifierTest.java (limited to 'src/net/gcdc/asn1/test') diff --git a/src/net/gcdc/asn1/test/UperEncodeObjectIdentifierTest.java b/src/net/gcdc/asn1/test/UperEncodeObjectIdentifierTest.java new file mode 100644 index 0000000..c46751d --- /dev/null +++ b/src/net/gcdc/asn1/test/UperEncodeObjectIdentifierTest.java @@ -0,0 +1,73 @@ +package net.gcdc.asn1.test; + +import static org.junit.Assert.assertEquals; +import java.util.logging.Level; + +import org.junit.jupiter.api.Test; + +import net.gcdc.asn1.datatypes.Asn1Optional; +import net.gcdc.asn1.datatypes.CharacterRestriction; +import net.gcdc.asn1.datatypes.RestrictedString; +import net.gcdc.asn1.datatypes.Sequence; +import net.gcdc.asn1.uper.UperEncoder; + +class UperEncodeObjectIdentifierTest { + + + /** + * Example from the Standard on UPER. +
+		TestRecord ::= [APPLICATION 0] IMPLICIT SEQUENCE {
+  			value1 OBJECT IDENTIFIER,
+  			value2 OBJECT IDENTIFIER,
+  			value3 OBJECT IDENTIFIER
+		}
+		
+		value TestRecord ::= {
+  			value1 2.16.840.1.101.3.4.3.1,
+  			value2 2.16.840.1.101.3.4.3.2,
+  			value3 1.2.840.10045.3.1.7			
+		}
+    
+ */ + + @Sequence + public static class TestRecord { + + @RestrictedString(CharacterRestriction.ObjectIdentifier) + String value1 = "2.16.840.1.101.3.4.3.1"; //DSA SHA224 + + @RestrictedString(CharacterRestriction.ObjectIdentifier) + String value2 = "2.16.840.1.101.3.4.3.2"; //DSA SHA248 + + @RestrictedString(CharacterRestriction.ObjectIdentifier) + String value3 = "1.2.840.10045.3.1.7"; //ECC + + public TestRecord() {} + + } + + @Test + public void testEncode() throws IllegalArgumentException, IllegalAccessException { + TestRecord record = new TestRecord(); + byte[] encoded = UperEncoder.encode(record); + String hex = UperEncoder.hexStringFromBytes(encoded); + UperEncoder.logger.log(Level.FINEST,String.format("data hex: %s", hex)); + assertEquals("0960864801650304030109608648016503040302082A8648CE3D030107",hex); + } + + @Test + public void testDecode() throws IllegalArgumentException, IllegalAccessException { + TestRecord record = new TestRecord(); + byte[] encoded = UperEncoder.encode(record); + String hex = UperEncoder.hexStringFromBytes(encoded); + UperEncoder.logger.log(Level.FINEST,String.format("data hex: %s", hex)); + assertEquals("0960864801650304030109608648016503040302082A8648CE3D030107",hex); + TestRecord result = UperEncoder.decode(encoded, TestRecord.class); + assertEquals(result.value1,record.value1); + assertEquals(result.value2,record.value2); + assertEquals(result.value3,record.value3); + } + + +} -- cgit v1.2.3