diff options
Diffstat (limited to 'smccSTALExt/src')
| -rw-r--r-- | smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/IdentityLinkExtractor.java | 86 | ||||
| -rw-r--r-- | smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/PersonIdentityLinkRequestHandler.java | 117 | 
2 files changed, 203 insertions, 0 deletions
| diff --git a/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/IdentityLinkExtractor.java b/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/IdentityLinkExtractor.java new file mode 100644 index 00000000..b1aa9326 --- /dev/null +++ b/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/IdentityLinkExtractor.java @@ -0,0 +1,86 @@ +/* + * Copyright 2011 by Graz University of Technology, Austria + * MOCCA has been developed by the E-Government Innovation Center EGIZ, a joint + * initiative of the Federal Chancellery Austria and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ + + +package at.gv.egiz.bku.smccstal; + +import java.io.IOException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import iaik.me.asn1.ASN1; + +public class IdentityLinkExtractor { +	 +	private static final Logger log = LoggerFactory.getLogger(IdentityLinkExtractor.class); +	 +	private static ASN1 getPersonData(ASN1 identityLink) throws IOException +	{ +		if(identityLink.getSize() > 4 ) +		{ +			ASN1 data = identityLink.getElementAt(4).gvASN1(); +			if(data.getTagClass() != 0) +			{ +				log.error("CorporateBodyData currently not supported."); +				return null; +			} +			return data; +		} +		else +		{ +			log.error("IdentityLink ASN1 invalid size = " + identityLink.getSize()); +			return null; +		} +	}   +	 +	public static String getPersonFirstName(ASN1 identityLink) throws IOException +	{ +		ASN1 personData = getPersonData(identityLink); +		if(personData != null) +		{ +			return personData.getElementAt(1).gvString(); +		} +		return null; +	} +	 +	public static String getPersonLastName(ASN1 identityLink) throws IOException +	{ +		ASN1 personData = getPersonData(identityLink); +		if(personData != null) +		{ +			return personData.getElementAt(2).gvString(); +		} +		return null; +	} +	 +	public static String getPersonDateOfBirth(ASN1 identityLink) throws IOException +	{ +		ASN1 personData = getPersonData(identityLink); +		if(personData != null) +		{ +			return personData.getElementAt(3).gvString(); +		} +		return null; +	} +} diff --git a/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/PersonIdentityLinkRequestHandler.java b/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/PersonIdentityLinkRequestHandler.java new file mode 100644 index 00000000..d8af52ee --- /dev/null +++ b/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/PersonIdentityLinkRequestHandler.java @@ -0,0 +1,117 @@ +/* + * Copyright 2011 by Graz University of Technology, Austria + * MOCCA has been developed by the E-Government Innovation Center EGIZ, a joint + * initiative of the Federal Chancellery Austria and Graz University of Technology. + * + * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by + * the European Commission - subsequent versions of the EUPL (the "Licence"); + * You may not use this work except in compliance with the Licence. + * You may obtain a copy of the Licence at: + * http://www.osor.eu/eupl/ + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the Licence is distributed on an "AS IS" basis, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the Licence for the specific language governing permissions and + * limitations under the Licence. + * + * This product combines work with different licenses. See the "NOTICE" text + * file for details on the various modules and licenses. + * The "NOTICE" text file is part of the distribution. Any derivative works + * that you distribute must include a readable copy of the "NOTICE" text file. + */ + +package at.gv.egiz.bku.smccstal; + +import iaik.me.asn1.ASN1; + +import java.io.IOException; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.bku.gui.PINManagementGUIFacade; +import at.gv.egiz.bku.gui.PersonIdentityLinkGUIFacade; +import at.gv.egiz.bku.pin.gui.VerifyPINGUI; +import at.gv.egiz.smcc.SignatureCardException; +import at.gv.egiz.stal.ErrorResponse; +import at.gv.egiz.stal.STALRequest; +import at.gv.egiz.stal.STALResponse; +import at.gv.egiz.stal.ext.PersonIdentityLinkRequest; +import at.gv.egiz.stal.ext.PersonIdentityLinkResponse; + +/** + *  + * @author Andreas Fitzek <andreas.fitzek@iaik.tugraz.at> + */ +public class PersonIdentityLinkRequestHandler extends AbstractRequestHandler { + +	private final static String IdentityInfoBox = "IdentityLink"; +	 +	private final Logger log = LoggerFactory.getLogger(PersonIdentityLinkRequestHandler.class); + +	//PersonIdentityLinkGUIFacade person_gui = (PersonIdentityLinkGUIFacade) this.gui; +	 +	@Override +	public boolean requireCard() { +		return true; +	} + +	@Override +	public STALResponse handleRequest(STALRequest request) +			throws InterruptedException { +		if(request instanceof PersonIdentityLinkRequest) +		{ +			try +			{ +				byte[] identity_asn1 = card.getInfobox(IdentityInfoBox, new VerifyPINGUI(gui), ""); +				 +				ASN1 identity_object = new ASN1(identity_asn1); +				 +				String firstname = IdentityLinkExtractor.getPersonFirstName(identity_object); +				String lastname = IdentityLinkExtractor.getPersonLastName(identity_object); +				String dateofBirth = IdentityLinkExtractor.getPersonDateOfBirth(identity_object); +				 +				// TODO: correct error handling ... +				PersonIdentityLinkGUIFacade person_gui = null; +				 +				if(gui instanceof PersonIdentityLinkGUIFacade) +				{ +					person_gui = (PersonIdentityLinkGUIFacade) gui; +				} +				 +				if(person_gui == null) +				{ +					log.warn("Failed to cast gui to PersonIdentityLinkGUIFacade!"); +					return new ErrorResponse(1000); +				} +				 +				person_gui.showPersonIdentityLinkInformationDialog(this, "ok_action",  +						firstname,  +						lastname, +						dateofBirth); +				 +				waitForAction(); +				 +				return new PersonIdentityLinkResponse(); +			} +			catch(SignatureCardException ex) +			{ +				log.error(ex.getMessage(), ex); +				//gui.showErrorDialog(errorMsgKey, errorMsgParams) +				//waitForAction(); +				return new ErrorResponse(1000); +			} catch (IOException ex) { +				log.error(ex.getMessage(), ex); +				//gui.showErrorDialog(errorMsgKey, errorMsgParams) +				//waitForAction(); +				return new ErrorResponse(1000); +			} +		} +		else +		{ +			log.error("Got unexpected STAL request: {}.", request); +			return new ErrorResponse(1000); +		} +	} +} | 
