/* * Copyright (c) 2011 - 2013 United ID. * * 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 org.unitedid.yhsm.internal; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; import org.unitedid.yhsm.SetupCommon; import static org.testng.Assert.*; public class AESECBCmdTest extends SetupCommon { private int khEncrypt = 4097; // 0x1001 private int khDecrypt = 4097; // 0x1001 private int khCompare = 4097; // 0x1001 @BeforeTest public void setUp() throws Exception { super.setUp(); } @AfterTest public void tearDown() throws Exception { super.tearDown(); } @Test public void testEncryptAndDecrypt() throws YubiHSMCommandFailedException, YubiHSMErrorException, YubiHSMInputException { String plaintext = "World domination"; String cipherText = hsm.encryptAES_ECB(plaintext, khEncrypt); assertNotSame(plaintext, cipherText); String decrypted = hsm.decryptAES_ECB(cipherText, khDecrypt); assertEquals(decrypted, plaintext); } @Test(expectedExceptions = YubiHSMInputException.class, expectedExceptionsMessageRegExp = "Argument 'plaintext' is too long, expected max 16 but got 26") public void testEncryptInputException() throws YubiHSMCommandFailedException, YubiHSMErrorException, YubiHSMInputException { String aTooLongString = "abcdefghijklmonpqrstuvwxyz"; hsm.encryptAES_ECB(aTooLongString, khEncrypt); } @Test(expectedExceptions = YubiHSMInputException.class, expectedExceptionsMessageRegExp = "Wrong size of argument 'cipherText', expected 16 but got 19") public void testDecryptInputException() throws YubiHSMCommandFailedException, YubiHSMErrorException, YubiHSMInputException { String aTooLongCipher = "112233445566778899aaccddeeff1122334455"; hsm.decryptAES_ECB(aTooLongCipher, khDecrypt); } @Test public void testCompare() throws YubiHSMCommandFailedException, YubiHSMErrorException, YubiHSMInputException { String plaintext = "Good deal"; String cipherText = hsm.encryptAES_ECB(plaintext, khEncrypt); assertTrue(hsm.compareAES_ECB(khCompare, cipherText, plaintext)); } @Test public void testCompareNotOk() throws YubiHSMCommandFailedException, YubiHSMErrorException, YubiHSMInputException { String plaintext = "Good deal"; String cipherText = hsm.encryptAES_ECB(plaintext, khEncrypt); assertFalse(hsm.compareAES_ECB(khCompare, cipherText, plaintext.substring(0,5))); } }