package de.persosim.simulator.crypto; import static org.junit.Assert.*; import org.junit.Test; import de.persosim.simulator.test.PersoSimTestCase; import de.persosim.simulator.tlv.ConstructedTlvDataObject; import de.persosim.simulator.tlv.PrimitiveTlvDataObject; import de.persosim.simulator.tlv.TlvConstants; public class StandardizedDomainParametersTest extends PersoSimTestCase { /** * Positive test case: test for all implemented standardized domain * parameters that their corresponding plain AlgorithmIdentifer is correctly * matched back to standardized domain parameters */ @Test public void testSimplifyAlgorithmIdentifier() { for(byte i = 0; i < StandardizedDomainParameters.NO_OF_STANDARDIZED_DOMAIN_PARAMETERS; i++) { DomainParameterSet domParams = StandardizedDomainParameters.getDomainParameterSetById(i); if (domParams == null) continue; ConstructedTlvDataObject expectedAlgIdentifier = new ConstructedTlvDataObject(TlvConstants.TAG_SEQUENCE); expectedAlgIdentifier.addTlvDataObject(new PrimitiveTlvDataObject(TlvConstants.TAG_OID, StandardizedDomainParameters.OID)); expectedAlgIdentifier.addTlvDataObject(new PrimitiveTlvDataObject(TlvConstants.TAG_INTEGER, new byte[]{i})); assertEquals("Standardized domainparameters " + i + " are not returned correctly" , expectedAlgIdentifier, StandardizedDomainParameters.simplifyAlgorithmIdentifier(domParams.getAlgorithmIdentifier())); } } /** * Negative test: check that an unknown AlgorithmIdentifier (syntactically correct) is returned without any modifications */ @Test public void testSimplifyAlgorithmIdentifier_unknown() { ConstructedTlvDataObject unknownAlgIdentifier = new ConstructedTlvDataObject(TlvConstants.TAG_SEQUENCE); unknownAlgIdentifier.addTlvDataObject(new PrimitiveTlvDataObject(TlvConstants.TAG_OID, new byte[]{0x00})); unknownAlgIdentifier.addTlvDataObject(new PrimitiveTlvDataObject(TlvConstants.TAG_INTEGER, new byte[]{0x00})); assertEquals(unknownAlgIdentifier, StandardizedDomainParameters.simplifyAlgorithmIdentifier(unknownAlgIdentifier)); } /** * Positive test case: test for all implemented standardized domain * parameters that their corresponding plain AlgorithmIdentifer is correctly * matched back to standardized domain parameter ids */ @Test public void testGetAlgorithmId() { for(byte i = 0; i < StandardizedDomainParameters.NO_OF_STANDARDIZED_DOMAIN_PARAMETERS; i++) { DomainParameterSet domParams = StandardizedDomainParameters.getDomainParameterSetById(i); if (domParams == null) continue; assertEquals("Standardized domainparameters " + i + " are not returned correctly" , i, StandardizedDomainParameters.getDomainParameterSetId(domParams.getAlgorithmIdentifier()).intValue()); } } /** * Negative test: check that an unknown AlgorithmIdentifier (syntactically correct) is correctly handled */ @Test public void testGetAlgorithmId_unknown() { ConstructedTlvDataObject unknownAlgIdentifier = new ConstructedTlvDataObject(TlvConstants.TAG_SEQUENCE); unknownAlgIdentifier.addTlvDataObject(new PrimitiveTlvDataObject(TlvConstants.TAG_OID, new byte[]{0x00})); unknownAlgIdentifier.addTlvDataObject(new PrimitiveTlvDataObject(TlvConstants.TAG_INTEGER, new byte[]{0x00})); assertNull(StandardizedDomainParameters.getDomainParameterSetId(unknownAlgIdentifier)); } }