diff options
| author | tkellner <tkellner@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4> | 2012-04-02 16:38:59 +0000 | 
|---|---|---|
| committer | tkellner <tkellner@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4> | 2012-04-02 16:38:59 +0000 | 
| commit | f8db5af9c94285c4946bdf38407fe15ed1b7f818 (patch) | |
| tree | baf5d1db2da875abf1b90daf5119fe04f8a9db18 /smccSTALExt/src/main | |
| parent | 8a6896444ce9b14c27193e688a8eeb59e1f51a4d (diff) | |
| download | mocca-f8db5af9c94285c4946bdf38407fe15ed1b7f818.tar.gz mocca-f8db5af9c94285c4946bdf38407fe15ed1b7f818.tar.bz2 mocca-f8db5af9c94285c4946bdf38407fe15ed1b7f818.zip | |
* Save certificates to local file system
* Show cardreader and smartcard information
for Webstart and Applet version
git-svn-id: https://joinup.ec.europa.eu/svn/mocca/trunk@1042 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4
Diffstat (limited to 'smccSTALExt/src/main')
| -rw-r--r-- | smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/GETCertificateRequestHandler.java | 129 | ||||
| -rw-r--r-- | smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/GETHardwareInfoRequestHandler.java | 106 | 
2 files changed, 235 insertions, 0 deletions
| diff --git a/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/GETCertificateRequestHandler.java b/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/GETCertificateRequestHandler.java new file mode 100644 index 00000000..d564b735 --- /dev/null +++ b/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/GETCertificateRequestHandler.java @@ -0,0 +1,129 @@ +/* + * 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; + +/** +* +* @author Thomas Lenz <thomas.lenz@iaik.tugraz.at> +*/ + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.bku.gui.GetCertificateGUIFacade; +import at.gv.egiz.bku.pin.gui.VerifyPINGUI; +import at.gv.egiz.smcc.SignatureCard; +import at.gv.egiz.smcc.SignatureCardException; +import at.gv.egiz.stal.STALRequest; +import at.gv.egiz.stal.STALResponse; +import at.gv.egiz.stal.ext.GETCertificateRequest; +import at.gv.egiz.stal.ext.GETCertificateResponse; + +public class GETCertificateRequestHandler extends AbstractRequestHandler { + +	private final Logger log = LoggerFactory.getLogger(GETCertificateRequestHandler.class); +	 +	@Override +	public boolean requireCard() { +		return true; +	} + +	@Override +	public STALResponse handleRequest(STALRequest request) +			throws InterruptedException { +		 +		log.debug("handle a GETCertificateRequest"); +		 +		if (request instanceof GETCertificateRequest) { +			 +			GetCertificateGUIFacade gui = (GetCertificateGUIFacade) this.gui; +			 +			gui.showGETCertificateDialog(this, "getqualcert", "getsimcert", this, "cancel"); +			 +			while (true) { +			 +				waitForAction(); +				 +				try { +					 +					 if ("cancel".equals(actionCommand)) { +				          log.debug("get certificate response cancel."); +				          return new GETCertificateResponse(); +				           +				     } else if ("getqualcert".equals(actionCommand)) { +				        	 +			        	File file = gui.showSaveDialog(GetCertificateGUIFacade.FILENAME_QUAL_CERT); +			        	byte[] cert = card.getCertificate(SignatureCard.KeyboxName.SECURE_SIGNATURE_KEYPAIR,  +			        			new VerifyPINGUI(gui));	        		 +			        	 +			        	FileOutputStream fstream = new FileOutputStream(file); +			        	fstream.write(cert); +			        	fstream.close(); +			        	 +			        	log.debug("qualified certificate are saved to | " + file.getAbsolutePath() + "."); +			        	 +			        	return new GETCertificateResponse(); +				        			        	 +				     } else if ("getsimcert".equals(actionCommand)) { +							 +			        	File file = gui.showSaveDialog(GetCertificateGUIFacade.FILENAME_SIM_CERT); +			         +			        	FileOutputStream fstream = new FileOutputStream(file); +			        	fstream.write(card.getCertificate(SignatureCard.KeyboxName.CERTIFIED_KEYPAIR,  +			        			new VerifyPINGUI(gui))); +			        	fstream.close(); +			         +			        	log.debug("simple certificate are saved to | " + file.getAbsolutePath() + "."); +			        	 +			        	return new GETCertificateResponse();									 +					} +				    else { +				       	log.info("unknown command resolved."); +				    } +				  +	        	} catch (FileNotFoundException e) { +	        		log.error("file to save the certificate could not be found.", e); +	        		 +	        	} catch (SignatureCardException e) { +	        		log.error("Card not activated or certificate is not available.", e); +	                gui.showErrorDialog(GetCertificateGUIFacade.ERR_CARD_NOTACTIVATED, +	                    null, this, "cancel"); +	        		 +	        	} catch (NullPointerException e) { +	        		log.error("save certificate file selection aborted.", e); +	        		 +	        	} catch (Exception e) { +	        		log.error("a general error occur during the certificate save operation.", e); +	        	} +			} +		} +		 +		return new GETCertificateResponse(); +	} +	 +} diff --git a/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/GETHardwareInfoRequestHandler.java b/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/GETHardwareInfoRequestHandler.java new file mode 100644 index 00000000..d2b3b050 --- /dev/null +++ b/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/GETHardwareInfoRequestHandler.java @@ -0,0 +1,106 @@ +/* + * 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 org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import at.gv.egiz.bku.gui.GetHardwareInfoGUIFacade; +import at.gv.egiz.stal.STALRequest; +import at.gv.egiz.stal.STALResponse; +import at.gv.egiz.stal.ext.GETHardwareInfoRequest; +import at.gv.egiz.stal.ext.GETHardwareInfoResponse; + +/** +* +* @author Thomas Lenz <thomas.lenz@iaik.tugraz.at> +*/ + +public class GETHardwareInfoRequestHandler extends AbstractRequestHandler { + +	private final Logger log = LoggerFactory.getLogger(GETHardwareInfoRequestHandler.class); +	 +	@Override +	public boolean requireCard() { +		return true; +	} + +	@Override +	public STALResponse handleRequest(STALRequest request) +			throws InterruptedException { +		 +		log.debug("handle a get-hardware info request"); +		 +		if (request instanceof GETHardwareInfoRequest) { +			 +			try { +			  String terminal = card.getTerminalName(); +			  String smartcard = card.toString(); +			  String smartcard_ATR = toString(card.getCard().getATR().getBytes()); +			   +	    } catch (SignatureCardException e) { +	        log.error("Some error occur during card communication.", e); +	            gui.showErrorDialog(GetHardwareInfoGUIFacade.ERR_CARD_NOTACTIVATED, +	                 null, this, "cancel"); +      } +		   +			 +			 +			GetHardwareInfoGUIFacade gui = (GetHardwareInfoGUIFacade) this.gui; +			 +			gui.showHardwareInfoDialog(this, "back", terminal, smartcard, smartcard_ATR); +			 +			while (true) { +			 +				waitForAction(); +				 +				 if ("back".equals(actionCommand)) { +			          log.debug("show hardware info response back."); +			          return new GETHardwareInfoResponse(); +			           +				 } else { +					 log.info("unknown command resolved."); +				 } +			} +		} +		return new GETHardwareInfoResponse(); +	} +	 +	  private static String toString(byte[] b) { +		    StringBuffer sb = new StringBuffer(); +		    sb.append('['); +		    if (b != null && b.length > 0) { +		      sb.append(Integer.toHexString((b[0] & 240) >> 4)); +		      sb.append(Integer.toHexString(b[0] & 15)); +		      for (int i = 1; i < b.length; i++) { +		        sb.append((i % 32 == 0) ? '\n' : ':'); +		        sb.append(Integer.toHexString((b[i] & 240) >> 4)); +		        sb.append(Integer.toHexString(b[i] & 15)); +		      } +		    } +		    sb.append(']'); +		    return sb.toString(); +		  } + +} | 
