/****************************************************************************
* Copyright (C) 2012 ecsec GmbH.
* All rights reserved.
* Contact: ecsec GmbH (info@ecsec.de)
*
* This file is part of the Open eCard App.
*
* GNU General Public License Usage
* This file may be used under the terms of the GNU General Public
* License version 3.0 as published by the Free Software Foundation
* and appearing in the file LICENSE.GPL included in the packaging of
* this file. Please review the following information to ensure the
* GNU General Public License version 3.0 requirements will be met:
* http://www.gnu.org/copyleft/gpl.html.
*
* Other Usage
* Alternatively, this file may be used in accordance with the terms
* and conditions contained in a signed written agreement between
* you and ecsec GmbH.
*
***************************************************************************/
package org.openecard.crypto.common.asn1.cvc;
import java.util.GregorianCalendar;
import org.openecard.common.util.StringUtils;
import org.testng.annotations.Test;
import static org.testng.Assert.*;
/**
*
* @author Moritz Horsch <horsch at cdc.informatik.tu-darmstadt.de>
* @author Dirk Petrautzki <petrautzki@hs-coburg.de>
*/
public class CardVerifiableCertificateTest {
@Test
public void test() throws Exception {
byte[] c = StringUtils.toByteArray("7F218201487F4E8201005F290100420E5A5A4456434141544230303030377F494F060A04007F0007020202020386410453107B1FA3767A3A36532A7CA1AE2BF2B3D08B6508CE03FECD9397CB107318519442980E9F17239A976FB1800A5515BC4AF61B013F7C5454A22A86D0CE18FADA5F20105A5A41546D74475465737430303030307F4C12060904007F0007030102025305300301FFB75F25060100010001035F2406010001000300655E732D060904007F00070301030280208FAC553CB79699D13E724E864BEBDD818DD550F7C34FC170ECDE2598A03F9EAC732D060904007F0007030103018020B48DA6DC54E8440F41EB20358CE8F640F45838D68B3E39812600047DBC5BB93B5F37405EE54A76BA698C098750E5E559F79CE2463E3F812083BB3815F4A7322C117C007C9D23958E99EC9542924BEF910A8C4C6462FB4D33B0F50F6B946F3A641C0DB1");
byte[] body = StringUtils.toByteArray("5F290100420E5A5A4456434141544230303030377F494F060A04007F0007020202020386410453107B1FA3767A3A36532A7CA1AE2BF2B3D08B6508CE03FECD9397CB107318519442980E9F17239A976FB1800A5515BC4AF61B013F7C5454A22A86D0CE18FADA5F20105A5A41546D74475465737430303030307F4C12060904007F0007030102025305300301FFB75F25060100010001035F2406010001000300655E732D060904007F00070301030280208FAC553CB79699D13E724E864BEBDD818DD550F7C34FC170ECDE2598A03F9EAC732D060904007F0007030103018020B48DA6DC54E8440F41EB20358CE8F640F45838D68B3E39812600047DBC5BB93B");
byte[] signature = StringUtils.toByteArray("5EE54A76BA698C098750E5E559F79CE2463E3F812083BB3815F4A7322C117C007C9D23958E99EC9542924BEF910A8C4C6462FB4D33B0F50F6B946F3A641C0DB1");
byte[] chat = StringUtils.toByteArray("7F4C12060904007F0007030102025305300301FFB7");
byte[] chr = StringUtils.toByteArray("5A5A41546D7447546573743030303030");
byte[] car = StringUtils.toByteArray("5A5A445643414154423030303037");
byte[] publicKey = StringUtils.toByteArray("060A04007F0007020202020386410453107B1FA3767A3A36532A7CA1AE2BF2B3D08B6508CE03FECD9397CB107318519442980E9F17239A976FB1800A5515BC4AF61B013F7C5454A22A86D0CE18FADA");
byte[] cpi = new byte[]{0x00};
byte[] encodedBodyAndSignature = StringUtils.toByteArray("7F4E8201005F290100420E5A5A4456434141544230303030377F494F060A04007F0007020202020386410453107B1FA3767A3A36532A7CA1AE2BF2B3D08B6508CE03FECD9397CB107318519442980E9F17239A976FB1800A5515BC4AF61B013F7C5454A22A86D0CE18FADA5F20105A5A41546D74475465737430303030307F4C12060904007F0007030102025305300301FFB75F25060100010001035F2406010001000300655E732D060904007F00070301030280208FAC553CB79699D13E724E864BEBDD818DD550F7C34FC170ECDE2598A03F9EAC732D060904007F0007030103018020B48DA6DC54E8440F41EB20358CE8F640F45838D68B3E39812600047DBC5BB93B5F37405EE54A76BA698C098750E5E559F79CE2463E3F812083BB3815F4A7322C117C007C9D23958E99EC9542924BEF910A8C4C6462FB4D33B0F50F6B946F3A641C0DB1");
byte[] extension = StringUtils.toByteArray("732D060904007F00070301030280208FAC553CB79699D13E724E864BEBDD818DD550F7C34FC170ECDE2598A03F9EAC732D060904007F0007030103018020B48DA6DC54E8440F41EB20358CE8F640F45838D68B3E39812600047DBC5BB93B");
CardVerifiableCertificate cvc = new CardVerifiableCertificate(c);
assertEquals(body, cvc.getBody());
assertEquals(signature, cvc.getSignature());
assertEquals(chat, cvc.getCHAT().toByteArray());
assertEquals(chr, cvc.getCHR().toByteArray());
assertEquals(car, cvc.getCAR().toByteArray());
assertEquals(publicKey, cvc.getPublicKey().getTLVEncoded().getValue());
assertEquals(cpi, cvc.getCPI());
assertEquals(encodedBodyAndSignature, cvc.getCertificate().getValue());
assertEquals(extension, cvc.getExtensions());
assertEquals(13, cvc.getEffectiveDate().get(GregorianCalendar.DAY_OF_MONTH));
assertEquals(9, cvc.getEffectiveDate().get(GregorianCalendar.MONTH));
assertEquals(2010, cvc.getEffectiveDate().get(GregorianCalendar.YEAR));
assertEquals(30, cvc.getExpirationDate().get(GregorianCalendar.DAY_OF_MONTH));
assertEquals(9, cvc.getExpirationDate().get(GregorianCalendar.MONTH));
assertEquals(2010, cvc.getExpirationDate().get(GregorianCalendar.YEAR));
try {
cvc = new CardVerifiableCertificate(encodedBodyAndSignature);
} catch (Exception expected) {
}
}
}