package de.persosim.simulator.securemessaging; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotSame; import javax.crypto.spec.SecretKeySpec; import org.junit.Test; import de.persosim.simulator.test.PersoSimTestCase; import de.persosim.simulator.utils.HexString; public class SmDataProviderTr03110GeneratorTest extends PersoSimTestCase { // test data from ICAO Doc 9303 Part 3 Vol 2, Worked Example Appendix 6 to section IV private static final String ICAO_SK_ENC = "979EC13B1CBFE9DCD01AB0FED307EAE5"; private static final String ICAO_SK_MAC = "F1CB1F1FB5ADF208806B89DC579DC1F8"; /** * Positive test: check that SmDataProvider is correctly generated and can * be used to reconstruct original DataProvider matching the original object */ @Test public void testGenerateSmDataProvider_reconstructDataProvider() { SecretKeySpec cipherKey = new SecretKeySpec(HexString.toByteArray(ICAO_SK_ENC), "DESede"); SecretKeySpec macKey = new SecretKeySpec(HexString.toByteArray(ICAO_SK_MAC), "DESede"); SmDataProviderTr03110 smdpOri = new SmDataProviderTr03110(cipherKey, macKey); SmDataProviderTr03110Generator smdpg = new SmDataProviderTr03110Generator(smdpOri); SmDataProviderTr03110 smdpNew = smdpg.generateSmDataProvider(); assertEquals(smdpOri, smdpNew); assertNotSame(smdpOri, smdpNew); } /** * Positive test: check that SmDataProvider is correctly generated and can * be used to reconstruct original DataProvider mismatching the original * object that has been modified afterwards */ @Test public void testGenerateSmDataProvider_reconstructDataProviderModified() { SecretKeySpec cipherKey = new SecretKeySpec(HexString.toByteArray(ICAO_SK_ENC), "DESede"); SecretKeySpec macKey = new SecretKeySpec(HexString.toByteArray(ICAO_SK_MAC), "DESede"); SmDataProviderTr03110 smdpOri = new SmDataProviderTr03110(cipherKey, macKey); SmDataProviderTr03110Generator smdpg = new SmDataProviderTr03110Generator(smdpOri); smdpOri.nextIncoming(); SmDataProviderTr03110 smdpNew = smdpg.generateSmDataProvider(); assertNotEquals(smdpOri, smdpNew); assertNotSame(smdpOri, smdpNew); } }