Java tutorial
/******************************************************************************* * Implementation of the protocols PACE, Terminal Authentication and Chip * Authentication (client side) with respect to the according BSI standards. * * Copyright (C) 2013 Fraunhofer-Gesellschaft * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. ******************************************************************************/ package de.fraunhofer.fokus.openeid.ca; import org.bouncycastle.asn1.DERBitString; import org.bouncycastle.asn1.DERInteger; import org.bouncycastle.asn1.DERObjectIdentifier; import org.bouncycastle.asn1.DERSequence; import org.bouncycastle.asn1.util.ASN1Dump; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ChipAuthenticationPublicKeyInfo { private static Logger logger = LoggerFactory.getLogger(ChipAuthenticationPublicKeyInfo.class); protected String oid; protected byte[] encodedPublicKey; protected DERSequence algorithmIdentifier; protected Integer keyId; public ChipAuthenticationPublicKeyInfo(DERSequence chipInfoSequence) { DERObjectIdentifier derOid = (DERObjectIdentifier) chipInfoSequence.getObjectAt(0); oid = derOid.getId(); DERSequence publicKey = (DERSequence) chipInfoSequence.getObjectAt(1); logger.info(ASN1Dump.dumpAsString(publicKey, true)); algorithmIdentifier = (DERSequence) publicKey.getObjectAt(0); DERBitString encodedKey = (DERBitString) publicKey.getObjectAt(1); encodedPublicKey = encodedKey.getBytes(); if (chipInfoSequence.size() > 2) { DERInteger derKeyId = (DERInteger) chipInfoSequence.getObjectAt(2); keyId = derKeyId.getValue().intValue(); } } public String getOid() { return oid; } public byte[] getEncodedPublicKey() { return encodedPublicKey; } public Integer getKeyId() { return keyId; } }