From d89f36b67ea1d838a78523538a24e044518f3587 Mon Sep 17 00:00:00 2001 From: mcentner Date: Tue, 26 Jan 2010 16:22:56 +0000 Subject: MOCCA 1.2.11 with SHA-2 enabled. git-svn-id: https://joinup.ec.europa.eu/svn/mocca/branches/mocca-1.2.11-sha2@599 8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4 --- mocca-1.2.11/BKUApplet/keystore.ks | Bin 0 -> 5635 bytes mocca-1.2.11/BKUApplet/pom.xml | 144 ++ .../gv/egiz/bku/online/applet/AppletBKUWorker.java | 224 ++ .../egiz/bku/online/applet/AppletSecureViewer.java | 237 ++ .../at/gv/egiz/bku/online/applet/BKUApplet.java | 359 +++ .../online/applet/InternalSSLSocketFactory.java | 157 ++ .../bku/online/applet/viewer/URLFontLoader.java | 82 + .../src/main/resources/commons-logging.properties | 16 + .../src/main/resources/simplelog.properties | 25 + .../at/gv/egiz/stal/client/STALServiceTest.java | 100 + .../src/test/resources/DejaVuLGCSansMono.ttf | Bin 0 -> 282704 bytes .../BKUApplet/src/test/resources/appletTest.html | 40 + .../src/test/resources/appletviewer.policy | 3 + mocca-1.2.11/BKUAppletExt/keystore.ks | Bin 0 -> 5635 bytes mocca-1.2.11/BKUAppletExt/nbactions.xml | 13 + mocca-1.2.11/BKUAppletExt/pom.xml | 147 ++ .../egiz/bku/online/applet/ActivationApplet.java | 94 + .../bku/online/applet/PINManagementApplet.java | 55 + .../bku/online/applet/PINManagementBKUWorker.java | 91 + .../src/test/resources/appletTest.html | 34 + mocca-1.2.11/BKUCertificates/pom.xml | 35 + .../certStore/toBeAdded/A-CERT GLOBALTRUST.cer | Bin 0 -> 1561 bytes .../certs/certStore/toBeAdded/A-Sign Light CA.crt | Bin 0 -> 700 bytes .../certs/certStore/toBeAdded/A-Sign Medium CA.crt | Bin 0 -> 704 bytes .../certStore/toBeAdded/A-Sign Premium CA.crt | Bin 0 -> 734 bytes .../certs/certStore/toBeAdded/A-Sign Strong CA.crt | Bin 0 -> 704 bytes .../certs/certStore/toBeAdded/A-SignProjects.crt | Bin 0 -> 806 bytes .../certStore/toBeAdded/A-Trust Premium-Sig-01.crt | Bin 0 -> 1217 bytes .../toBeAdded/A-Trust TrustMark-Enc-01_CA.crt | Bin 0 -> 919 bytes .../toBeAdded/A-Trust TrustMark-Sig-01_CA.crt | Bin 0 -> 919 bytes .../toBeAdded/A-Trust TrustMarkToken-Enc-01.crt | Bin 0 -> 930 bytes .../toBeAdded/A-Trust TrustMarkToken-Enc-01a.crt | Bin 0 -> 1028 bytes .../toBeAdded/A-Trust TrustMarkToken-Enc-01b.crt | Bin 0 -> 997 bytes .../toBeAdded/A-Trust TrustMarkToken-Sig-01.cer | Bin 0 -> 930 bytes .../toBeAdded/A-Trust TrustMarkToken-Sig-01a.cer | Bin 0 -> 933 bytes .../toBeAdded/A-Trust TrustMarkToken-Sig-01b.cer | Bin 0 -> 997 bytes .../toBeAdded/A-Trust TrustSign-Enc-01.crt | Bin 0 -> 1018 bytes .../toBeAdded/A-Trust TrustSign-Sig-01_CA.crt | Bin 0 -> 924 bytes .../toBeAdded/A-Trust TrustSign-Sig-01a.cer | Bin 0 -> 1237 bytes .../toBeAdded/A-Trust TrustSign-Sig-01b.crt | Bin 0 -> 1333 bytes .../toBeAdded/A-Trust a-sign-Premium-Enc-01.crt | Bin 0 -> 1057 bytes .../toBeAdded/A-Trust a-sign-Premium-Enc-01a.crt | Bin 0 -> 1057 bytes .../toBeAdded/A-Trust-Qual-0120041213.cer | Bin 0 -> 1111 bytes .../certStore/toBeAdded/A-Trust-Qual-01_CA.crt | Bin 0 -> 901 bytes .../toBeAdded/A-Trust-Qual-01_cACertificate1.crt | Bin 0 -> 1110 bytes .../toBeAdded/A-Trust-Qual-01_cACertificate2.crt | Bin 0 -> 1110 bytes .../certs/certStore/toBeAdded/A-Trust-Qual-03.crt | Bin 0 -> 975 bytes .../toBeAdded/A-Trust-TrustSign-Sig-01c.crt | Bin 0 -> 1333 bytes .../toBeAdded/A-Trust-a-sign-developer-02.cer | Bin 0 -> 1155 bytes .../toBeAdded/A-Trust-a-sign-token-enc-02.cer | Bin 0 -> 1155 bytes .../toBeAdded/A-Trust-a-sign-token-sig-02.cer | Bin 0 -> 1155 bytes .../certStore/toBeAdded/A-Trust-a-sign-uni.cer | Bin 0 -> 786 bytes .../toBeAdded/A-Trust-nQual-01_cACertificate1.crt | Bin 0 -> 860 bytes .../certStore/toBeAdded/A-Trust-nQual-01a.cer | Bin 0 -> 864 bytes .../certStore/toBeAdded/A-Trust-nQual-01b.cer | Bin 0 -> 861 bytes .../certs/certStore/toBeAdded/A-Trust-nQual-03.cer | Bin 0 -> 979 bytes .../certs/certStore/toBeAdded/A-trust-Qual-02.cer | Bin 0 -> 975 bytes .../bku/certs/certStore/toBeAdded/CA-GSig-1.cer | Bin 0 -> 1366 bytes .../bku/certs/certStore/toBeAdded/CA-System-2.cer | Bin 0 -> 1579 bytes .../bku/certs/certStore/toBeAdded/CA-VPSig-1.cer | Bin 0 -> 1367 bytes .../bku/certs/certStore/toBeAdded/CA-VPSig-2.cer | Bin 0 -> 1367 bytes .../bku/certs/certStore/toBeAdded/CA-VSig-1.cer | Bin 0 -> 1366 bytes .../bku/certs/certStore/toBeAdded/CA-root-1.cer | Bin 0 -> 1747 bytes .../bku/certs/certStore/toBeAdded/CA-system-1.cer | Bin 0 -> 1571 bytes .../toBeAdded/Cybertrust Educational CA.crt | Bin 0 -> 1094 bytes .../toBeAdded/D-TRUST Qualified CA 1 2008_PN.cer | Bin 0 -> 1287 bytes .../toBeAdded/D-TRUST Qualified CA 2 2008_PN.cer | Bin 0 -> 1287 bytes .../toBeAdded/D-TRUST Qualified CA 3 2008_PN.cer | Bin 0 -> 1287 bytes .../D-TRUST Qualified CRL-Signer 2 2008_PN.cer | Bin 0 -> 1289 bytes .../D-TRUST Qualified CRL-Signer 3 2008_PN.cer | Bin 0 -> 1289 bytes .../D-TRUST Qualified CRL-Signer CA 1 2008_PN.cer | Bin 0 -> 1295 bytes .../D-TRUST Qualified Root CA 1 2008_PN.cer | Bin 0 -> 1256 bytes .../D-TRUST Qualified Root CA 2 2008_PN.cer | Bin 0 -> 1256 bytes .../D-TRUST Qualified Root CA 3 2008_PN.cer | Bin 0 -> 1256 bytes .../toBeAdded/D-TRUST_Qualified_CA_1_2006.crt | Bin 0 -> 1321 bytes .../toBeAdded/D-TRUST_Qualified_CA_2_2006.crt | Bin 0 -> 1321 bytes .../toBeAdded/D-TRUST_Qualified_CA_3_2007.crt | Bin 0 -> 1290 bytes .../toBeAdded/D-TRUST_Qualified_Root_CA_1_2006.crt | Bin 0 -> 1294 bytes .../toBeAdded/D-TRUST_Qualified_Root_CA_2_2006.crt | Bin 0 -> 1290 bytes .../toBeAdded/D-TRUST_Qualified_Root_CA_3_2007.crt | Bin 0 -> 1259 bytes .../Equifax Secure Global eBusiness CA-1.crt | Bin 0 -> 660 bytes .../toBeAdded/Equifax Secure eBusiness CA-1.crt | Bin 0 -> 646 bytes .../toBeAdded/Equifax Secure eBusiness CA-2.crt | Bin 0 -> 804 bytes .../Equifax_Secure_Certificate_Authority_DER.cer | Bin 0 -> 804 bytes .../toBeAdded/GTE CyberTrust Global Root.cer | Bin 0 -> 606 bytes .../certs/certStore/toBeAdded/Halcom CA PO 2.crt | Bin 0 -> 541 bytes .../toBeAdded/StadtWienTrustcenterApplication.cer | Bin 0 -> 946 bytes .../toBeAdded/StadtWienTrustcenterEncryption.cer | Bin 0 -> 949 bytes .../toBeAdded/StadtWienTrustcenterExtern.cer | Bin 0 -> 939 bytes .../toBeAdded/StadtWienTrustcenterNet.cer | Bin 0 -> 937 bytes .../toBeAdded/StadtWienTrustcenterRoot.cer | Bin 0 -> 836 bytes .../toBeAdded/StadtWienTrustcenterSigner.cer | Bin 0 -> 941 bytes .../toBeAdded/TC TrustCenter Class 3 CA.crt | Bin 0 -> 864 bytes .../toBeAdded/TC TrustCenter Class 3 L1 CA V.crt | Bin 0 -> 1300 bytes .../toBeAdded/TCTrustCenter-Class2-CA.cer | Bin 0 -> 864 bytes .../toBeAdded/Thawte Premium Server CA.crt | Bin 0 -> 811 bytes .../certs/certStore/toBeAdded/Thwate-ServerCA.cer | Bin 0 -> 791 bytes .../certs/certStore/toBeAdded/TrustMark-VSC-01.crt | Bin 0 -> 1087 bytes .../certStore/toBeAdded/TrustMark-WebServer-01.crt | Bin 0 -> 932 bytes .../toBeAdded/TrustMark-WebServer-01a.crt | Bin 0 -> 999 bytes .../certStore/toBeAdded/TrustMarkToken-Enc-01.crt | Bin 0 -> 1097 bytes .../certStore/toBeAdded/TrustMarkToken-Sig-01.crt | Bin 0 -> 1097 bytes .../toBeAdded/TrustSign-Enc-01_cACertificate1.crt | Bin 0 -> 1087 bytes .../toBeAdded/TrustSign-Enc-01_cACertificate2.crt | Bin 0 -> 990 bytes .../VeriSign Class 3 Secure Server CA.crt | Bin 0 -> 1184 bytes ...Verisign-SecureServerCertificationAuthority.cer | Bin 0 -> 568 bytes .../certs/certStore/toBeAdded/a-cert-advanced.cer | Bin 0 -> 1751 bytes .../certStore/toBeAdded/a-cert-government.cer | Bin 0 -> 1563 bytes .../certStore/toBeAdded/a-sign-Inhouse-03.crt | Bin 0 -> 1155 bytes .../certStore/toBeAdded/a-sign-Premium-Enc-03.crt | Bin 0 -> 1163 bytes .../certStore/toBeAdded/a-sign-Premium-Sig-01.crt | Bin 0 -> 1313 bytes .../certStore/toBeAdded/a-sign-Premium-Sig-02.cer | Bin 0 -> 1159 bytes .../certStore/toBeAdded/a-sign-Premium-Sig-03.crt | Bin 0 -> 1159 bytes .../certs/certStore/toBeAdded/a-sign-SSL-03.cer | Bin 0 -> 1147 bytes .../certs/certStore/toBeAdded/a-sign-Token-03.cer | Bin 0 -> 1151 bytes .../certStore/toBeAdded/a-sign-Token-Enc-01.crt | Bin 0 -> 1053 bytes .../certStore/toBeAdded/a-sign-Token-Enc-01a.crt | Bin 0 -> 1053 bytes .../certStore/toBeAdded/a-sign-Token-Sig-01.crt | Bin 0 -> 1053 bytes .../certStore/toBeAdded/a-sign-Token-Sig-01a.crt | Bin 0 -> 1053 bytes .../certStore/toBeAdded/a-sign-company-root-03.cer | Bin 0 -> 1165 bytes .../certStore/toBeAdded/a-sign-corporate-03.cer | Bin 0 -> 1159 bytes .../toBeAdded/a-sign-corporate-light-01.cer | Bin 0 -> 1066 bytes .../toBeAdded/a-sign-corporate-light-01.crt | Bin 0 -> 1167 bytes .../toBeAdded/a-sign-corporate-light-02.cer | Bin 0 -> 1167 bytes .../toBeAdded/a-sign-corporate-light-03.cer | Bin 0 -> 1171 bytes .../toBeAdded/a-sign-corporate-medium-01.cer | Bin 0 -> 1068 bytes .../toBeAdded/a-sign-corporate-medium-02.cer | Bin 0 -> 1169 bytes .../toBeAdded/a-sign-corporate-strong-01.cer | Bin 0 -> 1068 bytes .../toBeAdded/a-sign-corporate-strong-02.cer | Bin 0 -> 1169 bytes .../certStore/toBeAdded/a-sign-developer-01.cer | Bin 0 -> 1054 bytes .../certs/certStore/toBeAdded/a-sign-light-01.cer | Bin 0 -> 1046 bytes .../certs/certStore/toBeAdded/a-sign-light-01.crt | Bin 0 -> 1045 bytes .../certs/certStore/toBeAdded/a-sign-light-01a.crt | Bin 0 -> 1045 bytes .../certs/certStore/toBeAdded/a-sign-light-02.cer | Bin 0 -> 1147 bytes .../certs/certStore/toBeAdded/a-sign-light-03.cer | Bin 0 -> 1151 bytes .../certStore/toBeAdded/a-sign-limited-03.crt | Bin 0 -> 1155 bytes .../certStore/toBeAdded/a-sign-premium-enc-01.cer | Bin 0 -> 1058 bytes .../certStore/toBeAdded/a-sign-premium-enc-02.cer | Bin 0 -> 1159 bytes .../toBeAdded/a-sign-premium-sig-01.crt.cer | Bin 0 -> 1218 bytes .../certStore/toBeAdded/a-sign-token-enc-01.cer | Bin 0 -> 1054 bytes .../certStore/toBeAdded/a-sign-token-sig-01.cer | Bin 0 -> 1054 bytes .../toBeAdded/a-trust-nQual-0120041213.cer | Bin 0 -> 865 bytes .../certStore/toBeAdded/eSignature Advanced.crt | Bin 0 -> 1359 bytes .../certStore/toBeAdded/eSignature Basic med.crt | Bin 0 -> 1563 bytes .../certs/certStore/toBeAdded/eSignature Basic.crt | Bin 0 -> 1412 bytes .../certs/certStore/toBeAdded/eSignature SSL.crt | Bin 0 -> 1333 bytes ...m_A1-Signatur_20060912-20110912_SerNo027866.cer | Bin 0 -> 1141 bytes .../toBeAdded/telekom-control-kommission-top-1.cer | Bin 0 -> 1052 bytes .../certs/certStore/toBeAdded/trustMark-VSC-01.cer | Bin 0 -> 991 bytes .../certStore/toBeAdded/trustMark-WebServer-01.cer | Bin 0 -> 1003 bytes .../certStore/toBeAdded/trustMarkToken-Enc-01.cer | Bin 0 -> 1001 bytes .../certStore/toBeAdded/trustMarkToken-sig-01.cer | Bin 0 -> 1001 bytes .../certs/certStore/toBeAdded/trustSign-Enc-01.cer | Bin 0 -> 991 bytes .../certs/certStore/toBeAdded/trustSign-Sig-01.cer | Bin 0 -> 1238 bytes .../bku/certs/certStore/toBeAdded/verisign.cer | Bin 0 -> 903 bytes .../bku/certs/certStore/toBeAdded/versignc3.cer | Bin 0 -> 576 bytes .../certStore/toBeAdded/www.buergerkarte.at.crt | Bin 0 -> 1188 bytes .../egiz/bku/certs/trustStore/A-Sign Light CA.crt | Bin 0 -> 700 bytes .../egiz/bku/certs/trustStore/A-Sign Medium CA.crt | Bin 0 -> 704 bytes .../bku/certs/trustStore/A-Sign Premium CA.crt | Bin 0 -> 734 bytes .../egiz/bku/certs/trustStore/A-Sign Strong CA.crt | Bin 0 -> 704 bytes .../egiz/bku/certs/trustStore/A-SignProjects.crt | Bin 0 -> 806 bytes .../certs/trustStore/A-Trust-Qual-0120041213.cer | Bin 0 -> 1111 bytes .../bku/certs/trustStore/A-Trust-Qual-01_CA.crt | Bin 0 -> 901 bytes .../trustStore/A-Trust-Qual-01_cACertificate1.crt | Bin 0 -> 1110 bytes .../trustStore/A-Trust-Qual-01_cACertificate2.crt | Bin 0 -> 1110 bytes .../egiz/bku/certs/trustStore/A-Trust-Qual-03.crt | Bin 0 -> 975 bytes .../bku/certs/trustStore/A-Trust-a-sign-uni.cer | Bin 0 -> 786 bytes .../trustStore/A-Trust-nQual-01_cACertificate1.crt | Bin 0 -> 860 bytes .../bku/certs/trustStore/A-Trust-nQual-01a.cer | Bin 0 -> 864 bytes .../bku/certs/trustStore/A-Trust-nQual-01b.cer | Bin 0 -> 861 bytes .../egiz/bku/certs/trustStore/A-Trust-nQual-03.cer | Bin 0 -> 979 bytes .../egiz/bku/certs/trustStore/A-trust-Qual-02.cer | Bin 0 -> 975 bytes .../at/gv/egiz/bku/certs/trustStore/CA-root-1.cer | Bin 0 -> 1747 bytes .../D-TRUST Qualified Root CA 1 2008_PN.cer | Bin 0 -> 1256 bytes .../D-TRUST Qualified Root CA 2 2008_PN.cer | Bin 0 -> 1256 bytes .../D-TRUST Qualified Root CA 3 2008_PN.cer | Bin 0 -> 1256 bytes .../D-TRUST_Qualified_Root_CA_1_2006.crt | Bin 0 -> 1294 bytes .../D-TRUST_Qualified_Root_CA_2_2006.crt | Bin 0 -> 1290 bytes .../D-TRUST_Qualified_Root_CA_3_2007.crt | Bin 0 -> 1259 bytes .../Equifax Secure Global eBusiness CA-1.crt | Bin 0 -> 660 bytes .../trustStore/Equifax Secure eBusiness CA-1.crt | Bin 0 -> 646 bytes .../trustStore/Equifax Secure eBusiness CA-2.crt | Bin 0 -> 804 bytes .../Equifax_Secure_Certificate_Authority_DER.cer | Bin 0 -> 804 bytes .../trustStore/GTE CyberTrust Global Root.cer | Bin 0 -> 606 bytes .../egiz/bku/certs/trustStore/Halcom CA PO 2.crt | Bin 0 -> 541 bytes .../certs/trustStore/StadtWienTrustcenterRoot.cer | Bin 0 -> 836 bytes .../certs/trustStore/TC TrustCenter Class 3 CA.crt | Bin 0 -> 864 bytes .../certs/trustStore/TCTrustCenter-Class2-CA.cer | Bin 0 -> 864 bytes .../certs/trustStore/Thawte Premium Server CA.crt | Bin 0 -> 811 bytes .../egiz/bku/certs/trustStore/Thwate-ServerCA.cer | Bin 0 -> 791 bytes ...Verisign-SecureServerCertificationAuthority.cer | Bin 0 -> 568 bytes .../egiz/bku/certs/trustStore/a-cert-advanced.cer | Bin 0 -> 1751 bytes .../certs/trustStore/a-trust-nQual-0120041213.cer | Bin 0 -> 865 bytes .../bku/certs/trustStore/eSignature Advanced.crt | Bin 0 -> 1359 bytes .../egiz/bku/certs/trustStore/eSignature Basic.crt | Bin 0 -> 1412 bytes .../egiz/bku/certs/trustStore/eSignature SSL.crt | Bin 0 -> 1333 bytes .../at/gv/egiz/bku/certs/trustStore/versignc3.cer | Bin 0 -> 576 bytes .../bku/certs/trustStore/www.buergerkarte.at.crt | Bin 0 -> 1188 bytes mocca-1.2.11/BKUCommonGUI/pom.xml | 43 + .../src/main/java/META-INF/MANIFEST.MF | 3 + .../at/gv/egiz/bku/gui/AbstractHelpListener.java | 103 + .../main/java/at/gv/egiz/bku/gui/BKUGUIFacade.java | 176 ++ .../main/java/at/gv/egiz/bku/gui/BKUGUIImpl.java | 1665 +++++++++++++ .../src/main/java/at/gv/egiz/bku/gui/BKUIcons.java | 57 + .../at/gv/egiz/bku/gui/DefaultHelpListener.java | 81 + .../at/gv/egiz/bku/gui/HashDataTableModel.java | 63 + .../java/at/gv/egiz/bku/gui/HelpKeyListener.java | 46 + .../at/gv/egiz/bku/gui/HelpLinkFocusManager.java | 138 ++ .../java/at/gv/egiz/bku/gui/HelpMouseListener.java | 54 + .../main/java/at/gv/egiz/bku/gui/HelpViewer.java | 218 ++ .../java/at/gv/egiz/bku/gui/HyperlinkRenderer.java | 54 + .../main/java/at/gv/egiz/bku/gui/ImagePanel.java | 50 + .../main/java/at/gv/egiz/bku/gui/PinDocument.java | 74 + .../at/gv/egiz/bku/gui/SecureViewerDialog.java | 360 +++ .../gv/egiz/bku/gui/SwitchFocusFocusListener.java | 38 + .../at/gv/egiz/bku/gui/SwitchFocusListener.java | 44 + .../egiz/bku/gui/html/RestrictedHTMLEditorKit.java | 49 + .../gv/egiz/bku/gui/html/RestrictedImageView.java | 67 + .../at/gv/egiz/bku/gui/viewer/FontProvider.java | 40 + .../egiz/bku/gui/viewer/FontProviderException.java | 29 + .../java/at/gv/egiz/bku/gui/viewer/MimeFilter.java | 65 + .../java/at/gv/egiz/bku/gui/viewer/MimeTypes.java | 53 + .../bku/gui/viewer/SecureViewerSaveDialog.java | 121 + .../gv/egiz/stal/impl/ByteArrayHashDataInput.java | 107 + .../at/gv/egiz/bku/gui/Messages.properties | 109 + .../at/gv/egiz/bku/gui/Messages_en.properties | 107 + .../main/resources/at/gv/egiz/bku/gui/chip128.png | Bin 0 -> 7775 bytes .../main/resources/at/gv/egiz/bku/gui/chip16.png | Bin 0 -> 787 bytes .../main/resources/at/gv/egiz/bku/gui/chip24.png | Bin 0 -> 1227 bytes .../main/resources/at/gv/egiz/bku/gui/chip32.png | Bin 0 -> 1753 bytes .../main/resources/at/gv/egiz/bku/gui/chip48.png | Bin 0 -> 2771 bytes .../resources/at/gv/egiz/bku/gui/chiperling105.png | Bin 0 -> 4035 bytes .../src/main/resources/at/gv/egiz/bku/gui/help.png | Bin 0 -> 441 bytes .../resources/at/gv/egiz/bku/gui/help_focus.png | Bin 0 -> 343 bytes .../test/java/at/gv/egiz/bku/gui/BKUGUITest.java | 62 + .../test/java/at/gv/egiz/bku/gui/BKUGUIWorker.java | 199 ++ .../java/at/gv/egiz/bku/gui/DummyFontLoader.java | 41 + .../at/gv/egiz/bku/gui/SecureViewerDialogTest.java | 167 ++ .../src/test/resources/commons-logging.properties | 1 + .../src/test/resources/log4j.properties | 19 + mocca-1.2.11/BKUFonts/.classpath | 8 + mocca-1.2.11/BKUFonts/.project | 36 + .../BKUFonts/.settings/org.eclipse.jdt.core.prefs | 7 + .../.settings/org.eclipse.wst.common.component | 6 + .../org.eclipse.wst.common.project.facet.core.xml | 5 + .../BKUFonts/.settings/org.maven.ide.eclipse.prefs | 9 + mocca-1.2.11/BKUFonts/pom.xml | 41 + .../BKUFonts/src/main/fonts/DejaVuLGCSans.ttf | Bin 0 -> 498636 bytes .../BKUFonts/src/main/fonts/DejaVuLGCSansMono.ttf | Bin 0 -> 282704 bytes .../BKUFonts/src/main/fonts/DejaVuLGCSerif.ttf | Bin 0 -> 304924 bytes mocca-1.2.11/BKUFonts/src/main/fonts/LICENSE | 99 + .../services/at.gv.egiz.bku.gui.SecureFontProvider | 3 + mocca-1.2.11/BKUGuiExt/pom.xml | 24 + .../java/at/gv/egiz/bku/gui/ActivationGUI.java | 251 ++ .../at/gv/egiz/bku/gui/ActivationGUIFacade.java | 34 + .../main/java/at/gv/egiz/bku/gui/CardMgmtGUI.java | 73 + .../at/gv/egiz/bku/gui/ComparePinDocument.java | 102 + .../at/gv/egiz/bku/gui/ExtendedPinDocument.java | 108 + .../java/at/gv/egiz/bku/gui/PINManagementGUI.java | 761 ++++++ .../at/gv/egiz/bku/gui/PINManagementGUIFacade.java | 129 + .../java/at/gv/egiz/bku/gui/PINSpecRenderer.java | 39 + .../java/at/gv/egiz/bku/gui/PINStatusRenderer.java | 61 + .../at/gv/egiz/bku/gui/PINStatusTableModel.java | 58 + .../gv/egiz/bku/gui/ActivationMessages.properties | 83 + .../egiz/bku/gui/ActivationMessages_en.properties | 82 + .../java/at/gv/egiz/bku/gui/ActivationGuiTest.java | 62 + .../test/java/at/gv/egiz/bku/gui/BKUGUIWorker.java | 206 ++ .../java/at/gv/egiz/bku/gui/DummyFontLoader.java | 35 + mocca-1.2.11/BKUHelp/pom.xml | 19 + .../BKUHelp/src/main/webapp/help/chip16.ico | Bin 0 -> 1150 bytes .../src/main/webapp/help/de/cardnotsupported.html | 48 + .../src/main/webapp/help/de/cardnotsupported.png | Bin 0 -> 2120 bytes .../src/main/webapp/help/de/error.card.locked.html | 47 + .../src/main/webapp/help/de/error.card.locked.png | Bin 0 -> 2727 bytes .../webapp/help/de/error.card.notactivated.html | 44 + .../webapp/help/de/error.card.notactivated.png | Bin 0 -> 3116 bytes .../main/webapp/help/de/error.cardterminal.html | 43 + .../src/main/webapp/help/de/error.cardterminal.png | Bin 0 -> 3362 bytes .../src/main/webapp/help/de/error.pcsc.html | 52 + .../BKUHelp/src/main/webapp/help/de/error.pcsc.png | Bin 0 -> 3488 bytes .../src/main/webapp/help/de/error.pin.timeout.html | 45 + .../src/main/webapp/help/de/error.pin.timeout.png | Bin 0 -> 3866 bytes .../main/webapp/help/de/error.ws.unreachable.html | 40 + .../main/webapp/help/de/error.ws.unreachable.png | Bin 0 -> 2853 bytes .../src/main/webapp/help/de/help.activate.pin.html | 47 + .../src/main/webapp/help/de/help.cardpin.html | 42 + .../src/main/webapp/help/de/help.cardpin1.png | Bin 0 -> 3163 bytes .../src/main/webapp/help/de/help.cardpin2.png | Bin 0 -> 3189 bytes .../src/main/webapp/help/de/help.change.pin.html | 48 + .../main/webapp/help/de/help.hashdataviewer.html | 42 + .../main/webapp/help/de/help.hashdataviewer.png | Bin 0 -> 11310 bytes .../main/webapp/help/de/help.install.cacert.html | 58 + .../main/webapp/help/de/help.install.cacert.png | Bin 0 -> 25299 bytes .../src/main/webapp/help/de/help.pin.activate.png | Bin 0 -> 6227 bytes .../src/main/webapp/help/de/help.pin.change.png | Bin 0 -> 6359 bytes .../src/main/webapp/help/de/help.pin.mgmt-1.png | Bin 0 -> 8206 bytes .../src/main/webapp/help/de/help.pin.mgmt-2.png | Bin 0 -> 7764 bytes .../src/main/webapp/help/de/help.pin.mgmt-3.png | Bin 0 -> 8923 bytes .../src/main/webapp/help/de/help.pin.mgmt-4.png | Bin 0 -> 8503 bytes .../src/main/webapp/help/de/help.pin.mgmt.html | 78 + .../src/main/webapp/help/de/help.pin.mgmt.png | Bin 0 -> 7478 bytes .../src/main/webapp/help/de/help.pin.verify.png | Bin 0 -> 5422 bytes .../src/main/webapp/help/de/help.retry.html | 41 + .../BKUHelp/src/main/webapp/help/de/help.retry.png | Bin 0 -> 3729 bytes .../src/main/webapp/help/de/help.signpin-1.png | Bin 0 -> 12818 bytes .../src/main/webapp/help/de/help.signpin.html | 46 + .../src/main/webapp/help/de/help.signpin.png | Bin 0 -> 4043 bytes .../src/main/webapp/help/de/help.unblock.pin.html | 47 + .../webapp/help/de/help.unsupported.mimetype.html | 41 + .../src/main/webapp/help/de/help.verify.pin.html | 51 + .../src/main/webapp/help/de/insertcard.html | 43 + .../BKUHelp/src/main/webapp/help/de/insertcard.png | Bin 0 -> 2270 bytes .../BKUHelp/src/main/webapp/help/de/wait.html | 40 + .../BKUHelp/src/main/webapp/help/de/wait.png | Bin 0 -> 1542 bytes .../BKUHelp/src/main/webapp/help/de/welcome.html | 41 + .../BKUHelp/src/main/webapp/help/de/welcome.png | Bin 0 -> 1537 bytes mocca-1.2.11/BKUHelp/src/main/webapp/help/help.css | 81 + .../BKUHelp/src/main/webapp/help/index.html | 48 + mocca-1.2.11/BKULocal/pom.xml | 136 ++ .../accesscontroller/SpringSecurityManager.java | 65 + .../gv/egiz/bku/local/conf/SpringConfigurator.java | 142 ++ .../java/at/gv/egiz/bku/local/gui/GUIProxy.java | 55 + .../gv/egiz/bku/local/gui/LocalHelpListener.java | 61 + .../at/gv/egiz/bku/local/stal/LocalBKUWorker.java | 64 + .../gv/egiz/bku/local/stal/LocalSTALFactory.java | 126 + .../gv/egiz/bku/local/stal/LocalSecureViewer.java | 129 + .../bku/local/stal/LocalSignRequestHandler.java | 63 + .../egiz/bku/local/webapp/BKURequestHandler.java | 113 + .../bku/local/webapp/PINManagementServlet.java | 114 + .../gv/egiz/bku/local/webapp/SpringBKUServlet.java | 39 + .../gv/egiz/bku/local/conf/accessControlConfig.xml | 96 + .../gv/egiz/bku/local/conf/defaultConf.properties | 61 + .../src/main/resources/commons-logging.properties | 16 + .../BKULocal/src/main/resources/log4j.properties | 34 + .../BKULocal/src/main/webapp/META-INF/MANIFEST.MF | 3 + .../BKULocal/src/main/webapp/META-INF/context.xml | 2 + .../src/main/webapp/WEB-INF/applicationContext.xml | 109 + .../BKULocal/src/main/webapp/WEB-INF/web.xml | 64 + .../BKULocal/src/main/webapp/errorresponse.css | 12 + .../BKULocal/src/main/webapp/img/chip16.ico | Bin 0 -> 1150 bytes .../BKULocal/src/main/webapp/img/chip48.png | Bin 0 -> 2771 bytes mocca-1.2.11/BKULocal/src/main/webapp/index.html | 64 + .../at/gv/egiz/bku/local/stal/TestSignRequest.java | 55 + .../at/gv/egiz/bku/local/stal/sigInfo.xml | 79 + mocca-1.2.11/BKUOnline/catalog.xml | 4 + mocca-1.2.11/BKUOnline/nb-configuration.xml | 15 + mocca-1.2.11/BKUOnline/nbactions.xml | 13 + mocca-1.2.11/BKUOnline/pom.xml | 324 +++ .../BKUOnline/private/cache/retriever/catalog.xml | 5 + .../java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd | 362 +++ .../cache/retriever/www.w3.org/2001/XMLSchema.xsd | 2534 ++++++++++++++++++++ .../src/main/custom-binding/cardchannel-custom.xml | 40 + .../src/main/custom-binding/stalservice-custom.xml | 116 + .../src/main/custom-binding/staltypes-custom.xml | 47 + .../accesscontroller/SpringSecurityManager.java | 63 + .../egiz/bku/online/conf/SpringConfigurator.java | 127 + .../egiz/bku/online/webapp/AppletDispatcher.java | 113 + .../egiz/bku/online/webapp/BKURequestHandler.java | 317 +++ .../gv/egiz/bku/online/webapp/ResultServlet.java | 154 ++ .../gv/egiz/bku/online/webapp/SessionTimeout.java | 49 + .../gv/egiz/bku/online/webapp/ShutdownHandler.java | 48 + .../egiz/bku/online/webapp/SpringBKUServlet.java | 37 + .../service/impl/RequestBrokerSTALFactory.java | 45 + .../egiz/stal/service/impl/STALRequestBroker.java | 41 + .../stal/service/impl/STALRequestBrokerImpl.java | 324 +++ .../gv/egiz/stal/service/impl/STALServiceImpl.java | 386 +++ .../stal/service/impl/STALXJAXBContextFactory.java | 61 + .../egiz/stal/service/impl/TestSignatureData.java | 47 + .../BKUOnline/src/main/policy/50mocca.policy | 319 +++ .../egiz/bku/online/conf/accessControlConfig.xml | 84 + .../gv/egiz/bku/online/conf/defaultConf.properties | 56 + .../src/main/resources/commons-logging.properties | 16 + .../BKUOnline/src/main/resources/log4j.properties | 36 + .../BKUOnline/src/main/webapp/META-INF/MANIFEST.MF | 6 + .../BKUOnline/src/main/webapp/META-INF/context.xml | 19 + .../BKUOnline/src/main/webapp/PINManagement.jsp | 111 + .../BKUOnline/src/main/webapp/SLRequestForm.html | 215 ++ .../src/main/webapp/WEB-INF/applicationContext.xml | 134 ++ .../src/main/webapp/WEB-INF/mocca-conf.xml | 51 + .../src/main/webapp/WEB-INF/sun-jaxws.xml | 36 + .../BKUOnline/src/main/webapp/WEB-INF/web.xml | 129 + .../src/main/webapp/WEB-INF/wsdl/stal.wsdl | 105 + .../src/main/webapp/WEB-INF/wsdl/stal.xsd | 168 ++ mocca-1.2.11/BKUOnline/src/main/webapp/applet.jsp | 111 + .../BKUOnline/src/main/webapp/css/applet.css | 15 + .../src/main/webapp/css/appletAlternative.css | 12 + .../BKUOnline/src/main/webapp/css/main.css | 55 + .../BKUOnline/src/main/webapp/errorresponse.css | 12 + .../BKUOnline/src/main/webapp/expired.html | 29 + .../BKUOnline/src/main/webapp/img/chip16.ico | Bin 0 -> 1150 bytes .../BKUOnline/src/main/webapp/img/chip32.png | Bin 0 -> 1753 bytes .../BKUOnline/src/main/webapp/img/webstart.png | Bin 0 -> 4643 bytes mocca-1.2.11/BKUOnline/src/main/webapp/index.html | 59 + .../BKUOnline/src/main/webapp/js/deployJava.js | 925 +++++++ .../src/main/webapp/js/deployJava_orig.js | 725 ++++++ .../BKUOnline/src/main/wsdl/CardChannel.xsd | 148 ++ .../BKUOnline/src/main/wsdl/stal-service.wsdl | 114 + .../BKUOnline/src/main/wsdl/stal-service.xsd | 183 ++ .../at/gv/egiz/bku/online/conf/SSLConfigTest.java | 40 + .../egiz/stal/service/STALRequestBrokerTest.java | 534 +++++ .../BKUOnline/src/test/resources/appletTest.html | 29 + .../src/test/resources/applicationContext.xml | 55 + .../src/test/resources/commons-logging.properties | 16 + .../BKUOnline/src/test/resources/log4j.properties | 29 + mocca-1.2.11/BKUViewer/pom.xml | 48 + .../at/gv/egiz/bku/slxhtml/SLXHTMLValidator.java | 273 +++ .../egiz/bku/slxhtml/css/CSSValidatorSLXHTML.java | 95 + .../bku/slxhtml/css/CssBackgroundColorSLXHTML.java | 57 + .../egiz/bku/slxhtml/css/CssBackgroundSLXHTML.java | 93 + .../slxhtml/css/CssBorderBottomColorSLXHTML.java | 57 + .../bku/slxhtml/css/CssBorderColorSLXHTML.java | 81 + .../bku/slxhtml/css/CssBorderLeftColorSLXHTML.java | 57 + .../slxhtml/css/CssBorderRightColorSLXHTML.java | 57 + .../gv/egiz/bku/slxhtml/css/CssBorderSLXHTML.java | 85 + .../bku/slxhtml/css/CssBorderTopColorSLXHTML.java | 57 + .../gv/egiz/bku/slxhtml/css/CssColorSLXHTML.java | 99 + .../at/gv/egiz/bku/slxhtml/css/CssFontSLXHTML.java | 59 + .../bku/slxhtml/css/CssLetterSpacingSLXHTML.java | 54 + .../bku/slxhtml/css/CssMarginBottomSLXHTML.java | 60 + .../egiz/bku/slxhtml/css/CssMarginLeftSLXHTML.java | 61 + .../bku/slxhtml/css/CssMarginRightSLXHTML.java | 60 + .../gv/egiz/bku/slxhtml/css/CssMarginSLXHTML.java | 101 + .../egiz/bku/slxhtml/css/CssMarginTopSLXHTML.java | 61 + .../bku/slxhtml/css/CssPaddingBottomSLXHTML.java | 60 + .../bku/slxhtml/css/CssPaddingLeftSLXHTML.java | 60 + .../bku/slxhtml/css/CssPaddingRightSLXHTML.java | 60 + .../gv/egiz/bku/slxhtml/css/CssPaddingSLXHTML.java | 102 + .../egiz/bku/slxhtml/css/CssPaddingTopSLXHTML.java | 61 + .../bku/slxhtml/css/CssTextDecorationSLXHTML.java | 51 + .../bku/slxhtml/css/CssWordSpacingSLXHTML.java | 54 + .../slxhtml/css/SLXHTMLInvalidParamException.java | 71 + .../at/gv/egiz/bku/slxhtml/css/SLXHTMLStyle.java | 22 + .../egiz/bku/slxhtml/css/TableLayoutSLXHTML.java | 45 + .../java/at/gv/egiz/bku/text/TextValidator.java | 91 + .../services/at.gv.egiz.bku.viewer.Validator | 2 + .../at/gv/egiz/bku/slxhtml/slxhtml-model-1.xsd | 473 ++++ .../at/gv/egiz/bku/slxhtml/slxhtml-modules-1.xsd | 259 ++ .../resources/at/gv/egiz/bku/slxhtml/slxhtml.xsd | 77 + .../at/gv/egiz/bku/slxhtml/xhtml-attribs-1.xsd | 77 + .../at/gv/egiz/bku/slxhtml/xhtml-blkphras-1.xsd | 161 ++ .../at/gv/egiz/bku/slxhtml/xhtml-blkpres-1.xsd | 37 + .../at/gv/egiz/bku/slxhtml/xhtml-blkstruct-1.xsd | 49 + .../at/gv/egiz/bku/slxhtml/xhtml-datatypes-1.xsd | 177 ++ .../at/gv/egiz/bku/slxhtml/xhtml-framework-1.xsd | 66 + .../at/gv/egiz/bku/slxhtml/xhtml-image-1.xsd | 45 + .../at/gv/egiz/bku/slxhtml/xhtml-inlphras-1.xsd | 163 ++ .../at/gv/egiz/bku/slxhtml/xhtml-inlpres-1.xsd | 39 + .../at/gv/egiz/bku/slxhtml/xhtml-inlstruct-1.xsd | 50 + .../at/gv/egiz/bku/slxhtml/xhtml-list-1.xsd | 99 + .../at/gv/egiz/bku/slxhtml/xhtml-pres-1.xsd | 51 + .../at/gv/egiz/bku/slxhtml/xhtml-struct-1.xsd | 130 + .../at/gv/egiz/bku/slxhtml/xhtml-style-1.xsd | 53 + .../at/gv/egiz/bku/slxhtml/xhtml-table-1.xsd | 272 +++ .../at/gv/egiz/bku/slxhtml/xhtml-text-1.xsd | 67 + .../main/resources/at/gv/egiz/bku/slxhtml/xml.xsd | 145 ++ .../org/w3c/css/properties/Config.properties | 32 + .../css/properties/ProfilesProperties.properties | 30 + .../css/properties/SLXHTMLProperties.properties | 641 +++++ .../java/at/gv/egiz/bku/slxhtml/ValidatorTest.java | 67 + .../gv/egiz/bku/slxhtml/css/CssValidatorTest.java | 75 + .../at/gv/egiz/bku/text/TestTextValidator.java | 218 ++ .../resources/at/gv/egiz/bku/slxhtml/test.xhtml | 10 + .../resources/at/gv/egiz/bku/slxhtml/zugang.xhtml | 17 + .../src/test/resources/commons-logging.properties | 1 + .../BKUViewer/src/test/resources/log4j.properties | 19 + mocca-1.2.11/BKUWebStart/pom.xml | 301 +++ .../java/at/gv/egiz/bku/webstart/Configurator.java | 440 ++++ .../java/at/gv/egiz/bku/webstart/Container.java | 264 ++ .../java/at/gv/egiz/bku/webstart/Launcher.java | 391 +++ .../gv/egiz/bku/webstart/LogSecurityManager.java | 443 ++++ .../java/at/gv/egiz/bku/webstart/TLSServerCA.java | 142 ++ .../at/gv/egiz/bku/webstart/gui/AboutDialog.form | 139 ++ .../at/gv/egiz/bku/webstart/gui/AboutDialog.java | 165 ++ .../bku/webstart/gui/BKUControllerInterface.java | 23 + .../bku/webstart/gui/PINManagementInvoker.java | 72 + mocca-1.2.11/BKUWebStart/src/main/jnlp/keystore.ks | Bin 0 -> 5635 bytes .../src/main/jnlp/resources/img/chip128.png | Bin 0 -> 7775 bytes .../src/main/jnlp/resources/img/chip16.png | Bin 0 -> 787 bytes .../src/main/jnlp/resources/img/chip24.png | Bin 0 -> 1227 bytes .../src/main/jnlp/resources/img/chip32.png | Bin 0 -> 1753 bytes .../src/main/jnlp/resources/img/chip48.png | Bin 0 -> 2771 bytes .../src/main/jnlp/resources/img/splash.png | Bin 0 -> 41455 bytes .../src/main/jnlp/resources/img/version.xml | 52 + .../src/main/jnlp/resources/player.jnlp | 3 + .../BKUWebStart/src/main/jnlp/template-local.xml | 40 + .../src/main/jnlp/template-unstable.xml | 49 + .../BKUWebStart/src/main/jnlp/template.xml | 49 + .../resources/at/gv/egiz/bku/webstart/chip16.png | Bin 0 -> 787 bytes .../resources/at/gv/egiz/bku/webstart/chip24.png | Bin 0 -> 1227 bytes .../resources/at/gv/egiz/bku/webstart/chip32.png | Bin 0 -> 1753 bytes .../resources/at/gv/egiz/bku/webstart/chip48.png | Bin 0 -> 2771 bytes .../at/gv/egiz/bku/webstart/chiperling96.png | Bin 0 -> 7378 bytes .../at/gv/egiz/bku/webstart/conf/conf.zip | Bin 0 -> 3045 bytes .../at/gv/egiz/bku/webstart/messages.properties | 38 + .../resources/at/gv/egiz/bku/webstart/splash.png | Bin 0 -> 41455 bytes .../src/main/resources/log4j.properties | 27 + .../at/gv/egiz/bku/webstart/ConfiguratorTest.java | 197 ++ .../src/test/resources/commons-logging.properties | 1 + .../src/test/resources/log4j.properties | 35 + mocca-1.2.11/BKUWebStartPackage/nbactions.xml | 10 + mocca-1.2.11/BKUWebStartPackage/pom.xml | 160 ++ .../src/main/assemblies/zip-webstart.xml | 35 + .../BKUWebStartPackage/src/main/jnlp/keystore.ks | Bin 0 -> 5635 bytes .../src/main/jnlp/resources/img/chip128.png | Bin 0 -> 7775 bytes .../src/main/jnlp/resources/img/chip16.png | Bin 0 -> 787 bytes .../src/main/jnlp/resources/img/chip24.png | Bin 0 -> 1227 bytes .../src/main/jnlp/resources/img/chip32.png | Bin 0 -> 1753 bytes .../src/main/jnlp/resources/img/chip48.png | Bin 0 -> 2771 bytes .../src/main/jnlp/resources/img/splash.png | Bin 0 -> 41455 bytes .../src/main/jnlp/resources/img/version.xml | 52 + .../src/main/jnlp/resources/player.jnlp | 3 + .../src/main/jnlp/template-local.xml | 41 + .../BKUWebStartPackage/src/main/jnlp/template.xml | 49 + mocca-1.2.11/LICENSE.txt | 202 ++ mocca-1.2.11/NOTICE.txt | 17 + mocca-1.2.11/STAL/catalog.xml | 4 + mocca-1.2.11/STAL/pom.xml | 59 + .../STAL/private/cache/retriever/catalog.xml | 5 + .../java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd | 362 +++ .../cache/retriever/www.w3.org/2001/XMLSchema.xsd | 2534 ++++++++++++++++++++ .../STAL/src/main/java/META-INF/MANIFEST.MF | 3 + .../main/java/at/gv/egiz/stal/ErrorResponse.java | 112 + .../main/java/at/gv/egiz/stal/HashDataInput.java | 38 + .../java/at/gv/egiz/stal/InfoboxReadRequest.java | 112 + .../java/at/gv/egiz/stal/InfoboxReadResponse.java | 78 + .../src/main/java/at/gv/egiz/stal/QuitRequest.java | 48 + .../STAL/src/main/java/at/gv/egiz/stal/STAL.java | 43 + .../src/main/java/at/gv/egiz/stal/STALFactory.java | 24 + .../src/main/java/at/gv/egiz/stal/STALRequest.java | 56 + .../main/java/at/gv/egiz/stal/STALResponse.java | 90 + .../src/main/java/at/gv/egiz/stal/SignRequest.java | 114 + .../main/java/at/gv/egiz/stal/SignResponse.java | 78 + .../main/java/at/gv/egiz/stal/StatusRequest.java | 32 + .../main/java/at/gv/egiz/stal/StatusResponse.java | 60 + .../signedinfo/CanonicalizationMethodType.java | 125 + .../gv/egiz/stal/signedinfo/DigestMethodType.java | 127 + .../at/gv/egiz/stal/signedinfo/ObjectFactory.java | 178 ++ .../at/gv/egiz/stal/signedinfo/ReferenceType.java | 230 ++ .../egiz/stal/signedinfo/SignatureMethodType.java | 125 + .../at/gv/egiz/stal/signedinfo/SignedInfoType.java | 183 ++ .../at/gv/egiz/stal/signedinfo/TransformsType.java | 88 + .../at/gv/egiz/stal/signedinfo/package-info.java | 25 + mocca-1.2.11/STALExt/pom.xml | 20 + .../STALExt/src/main/java/META-INF/MANIFEST.MF | 3 + .../at/gv/egiz/stal/ext/APDUScriptRequest.java | 72 + .../at/gv/egiz/stal/ext/APDUScriptResponse.java | 91 + .../at/gv/egiz/stal/ext/PINManagementRequest.java | 31 + .../at/gv/egiz/stal/ext/PINManagementResponse.java | 28 + mocca-1.2.11/STALService/META-INF/MANIFEST.MF | 3 + mocca-1.2.11/STALService/pom.xml | 26 + .../egiz/stal/service/GetHashDataInputFault.java | 55 + .../java/at/gv/egiz/stal/service/STALPortType.java | 73 + .../java/at/gv/egiz/stal/service/STALService.java | 72 + .../stal/service/translator/STALTranslator.java | 294 +++ .../service/translator/TranslationException.java | 42 + .../egiz/stal/service/types/ErrorResponseType.java | 84 + .../service/types/GetHashDataInputFaultType.java | 82 + .../types/GetHashDataInputResponseType.java | 267 +++ .../stal/service/types/GetHashDataInputType.java | 156 ++ .../service/types/GetNextRequestResponseType.java | 115 + .../stal/service/types/GetNextRequestType.java | 114 + .../stal/service/types/InfoboxReadRequestType.java | 102 + .../service/types/InfoboxReadResponseType.java | 62 + .../gv/egiz/stal/service/types/ObjectFactory.java | 316 +++ .../egiz/stal/service/types/QuitRequestType.java | 32 + .../at/gv/egiz/stal/service/types/RequestType.java | 39 + .../gv/egiz/stal/service/types/ResponseType.java | 38 + .../egiz/stal/service/types/SignRequestType.java | 97 + .../egiz/stal/service/types/SignResponseType.java | 62 + .../egiz/stal/service/types/StatusRequestType.java | 32 + .../stal/service/types/StatusResponseType.java | 60 + .../gv/egiz/stal/service/types/package-info.java | 2 + .../service/translator/STALTranslatorTest.java | 146 ++ mocca-1.2.11/STALXService/pom.xml | 25 + .../namespaces/cardchannel/service/ATRType.java | 100 + .../cardchannel/service/AttributeList.java | 71 + .../cardchannel/service/AttributeType.java | 264 ++ .../cardchannel/service/CommandAPDUType.java | 154 ++ .../cardchannel/service/ObjectFactory.java | 172 ++ .../namespaces/cardchannel/service/ResetType.java | 64 + .../cardchannel/service/ResponseAPDUType.java | 161 ++ .../cardchannel/service/ResponseType.java | 82 + .../namespaces/cardchannel/service/ScriptType.java | 85 + .../cardchannel/service/VerifyAPDUType.java | 266 ++ .../cardchannel/service/package-info.java | 2 + .../at/gv/egiz/stalx/service/STALPortType.java | 45 + .../java/at/gv/egiz/stalx/service/STALService.java | 73 + .../translator/STALXTranslationHandler.java | 217 ++ .../src/main/resources/wsdl/CardChannel.xsd | 148 ++ .../STALXService/src/main/resources/wsdl/stal.xsd | 162 ++ .../src/main/resources/wsdl/stalx.wsdl | 123 + .../stalx/service/ClientJAXBContextFactory.java | 52 + .../at/gv/egiz/stalx/service/STALServiceTest.java | 112 + mocca-1.2.11/addResources/eclipseFormatter.xml | 267 +++ mocca-1.2.11/bkucommon/pom.xml | 112 + .../cache/retriever/www.w3.org/2000/09/xmldsig | 7 + .../bkucommon/src/main/java/META-INF/MANIFEST.MF | 6 + .../bku/accesscontrol/config/AccessControl.java | 79 + .../gv/egiz/bku/accesscontrol/config/Action.java | 114 + .../at/gv/egiz/bku/accesscontrol/config/Chain.java | 115 + .../gv/egiz/bku/accesscontrol/config/Chains.java | 86 + .../gv/egiz/bku/accesscontrol/config/Command.java | 116 + .../bku/accesscontrol/config/ObjectFactory.java | 135 ++ .../at/gv/egiz/bku/accesscontrol/config/Param.java | 109 + .../at/gv/egiz/bku/accesscontrol/config/Rule.java | 285 +++ .../at/gv/egiz/bku/accesscontrol/config/Rules.java | 86 + .../egiz/bku/accesscontroller/AccessChecker.java | 23 + .../bku/accesscontroller/AccessCheckerContext.java | 43 + .../accesscontroller/AccessControllerFactory.java | 153 ++ .../at/gv/egiz/bku/accesscontroller/Action.java | 35 + .../bku/accesscontroller/AuthenticationClass.java | 37 + .../accesscontroller/AuthenticationClassifier.java | 110 + .../gv/egiz/bku/accesscontroller/ChainChecker.java | 91 + .../gv/egiz/bku/accesscontroller/ChainResult.java | 49 + .../bku/accesscontroller/CommandParamChecker.java | 68 + .../bku/accesscontroller/InfoboxParamChecker.java | 74 + .../gv/egiz/bku/accesscontroller/RuleChecker.java | 203 ++ .../gv/egiz/bku/accesscontroller/RuleResult.java | 32 + .../accesscontroller/SecurityManagerFacade.java | 118 + .../gv/egiz/bku/accesscontroller/UserAction.java | 36 + .../egiz/bku/binding/AbstractBindingProcessor.java | 89 + .../at/gv/egiz/bku/binding/BindingProcessor.java | 78 + .../egiz/bku/binding/BindingProcessorManager.java | 107 + .../bku/binding/BindingProcessorManagerImpl.java | 330 +++ .../main/java/at/gv/egiz/bku/binding/DataUrl.java | 111 + .../at/gv/egiz/bku/binding/DataUrlConnection.java | 82 + .../gv/egiz/bku/binding/DataUrlConnectionImpl.java | 539 +++++ .../gv/egiz/bku/binding/DataUrlConnectionSPI.java | 64 + .../at/gv/egiz/bku/binding/DataUrlResponse.java | 98 + .../java/at/gv/egiz/bku/binding/ExpiryRemover.java | 67 + .../gv/egiz/bku/binding/FixedFormParameters.java | 28 + .../java/at/gv/egiz/bku/binding/FormParameter.java | 39 + .../at/gv/egiz/bku/binding/FormParameterImpl.java | 93 + .../at/gv/egiz/bku/binding/FormParameterStore.java | 146 ++ .../gv/egiz/bku/binding/HTTPBindingProcessor.java | 844 +++++++ .../main/java/at/gv/egiz/bku/binding/HttpUtil.java | 79 + .../src/main/java/at/gv/egiz/bku/binding/Id.java | 31 + .../java/at/gv/egiz/bku/binding/IdFactory.java | 106 + .../main/java/at/gv/egiz/bku/binding/IdImpl.java | 83 + .../java/at/gv/egiz/bku/binding/InputDecoder.java | 41 + .../gv/egiz/bku/binding/InputDecoderFactory.java | 89 + .../bku/binding/MultiPartFormDataInputDecoder.java | 133 + .../at/gv/egiz/bku/binding/ProcessingContext.java | 59 + .../at/gv/egiz/bku/binding/RemovalStrategy.java | 26 + .../gv/egiz/bku/binding/SLCommandInvokerImpl.java | 95 + .../egiz/bku/binding/XWWWFormUrlInputDecoder.java | 58 + .../egiz/bku/binding/XWWWFormUrlInputIterator.java | 386 +++ .../binding/multipart/InputStreamPartSource.java | 61 + .../egiz/bku/binding/multipart/SLResultPart.java | 71 + .../java/at/gv/egiz/bku/conf/CertValidator.java | 13 + .../at/gv/egiz/bku/conf/CertValidatorImpl.java | 107 + .../java/at/gv/egiz/bku/conf/Configuration.java | 100 + .../java/at/gv/egiz/bku/conf/Configurator.java | 467 ++++ .../java/at/gv/egiz/bku/conf/IAIKCommonsLog.java | 144 ++ .../at/gv/egiz/bku/conf/IAIKCommonsLogFactory.java | 59 + .../bku/slcommands/AccessControlInvocation.java | 21 + .../bku/slcommands/CreateXMLSignatureCommand.java | 25 + .../bku/slcommands/CreateXMLSignatureResult.java | 20 + .../at/gv/egiz/bku/slcommands/ErrorResult.java | 20 + .../gv/egiz/bku/slcommands/GetStatusCommand.java | 26 + .../at/gv/egiz/bku/slcommands/GetStatusResult.java | 26 + .../gv/egiz/bku/slcommands/InfoboxReadCommand.java | 28 + .../gv/egiz/bku/slcommands/InfoboxReadResult.java | 20 + .../egiz/bku/slcommands/InfoboxUpdateCommand.java | 23 + .../egiz/bku/slcommands/InfoboxUpdateResult.java | 21 + .../gv/egiz/bku/slcommands/InvocationStrategy.java | 20 + .../egiz/bku/slcommands/NullOperationCommand.java | 20 + .../egiz/bku/slcommands/NullOperationResult.java | 20 + .../java/at/gv/egiz/bku/slcommands/SLCommand.java | 31 + .../gv/egiz/bku/slcommands/SLCommandContext.java | 55 + .../gv/egiz/bku/slcommands/SLCommandFactory.java | 395 +++ .../gv/egiz/bku/slcommands/SLCommandInvoker.java | 46 + .../egiz/bku/slcommands/SLMarshallerFactory.java | 172 ++ .../java/at/gv/egiz/bku/slcommands/SLResult.java | 45 + .../at/gv/egiz/bku/slcommands/SLSourceContext.java | 64 + .../at/gv/egiz/bku/slcommands/SLTargetContext.java | 51 + .../slcommands/impl/AbstractAssocArrayInfobox.java | 299 +++ .../slcommands/impl/AbstractBinaryFileInfobox.java | 66 + .../impl/AbstractInfoboxCommandImpl.java | 83 + .../bku/slcommands/impl/AbstractInfoboxImpl.java | 45 + .../bku/slcommands/impl/AssocArrayInfobox.java | 27 + .../bku/slcommands/impl/BinaryFileInfobox.java | 27 + .../slcommands/impl/CardChannelInfoboxImpl.java | 235 ++ .../slcommands/impl/CertificatesInfoboxImpl.java | 112 + .../impl/CreateXMLSignatureCommandImpl.java | 219 ++ .../impl/CreateXMLSignatureResultImpl.java | 107 + .../slcommands/impl/DataObjectHashDataInput.java | 59 + .../egiz/bku/slcommands/impl/ErrorResultImpl.java | 67 + .../bku/slcommands/impl/GetStatusCommandImpl.java | 77 + .../bku/slcommands/impl/GetStatusResultImpl.java | 52 + .../slcommands/impl/IdentityLinkInfoboxImpl.java | 290 +++ .../at/gv/egiz/bku/slcommands/impl/Infobox.java | 70 + .../egiz/bku/slcommands/impl/InfoboxFactory.java | 90 + .../slcommands/impl/InfoboxReadCommandImpl.java | 96 + .../slcommands/impl/InfoboxReadResultFileImpl.java | 160 ++ .../bku/slcommands/impl/InfoboxReadResultImpl.java | 64 + .../slcommands/impl/InfoboxUpdateCommandImpl.java | 74 + .../slcommands/impl/InfoboxUpdateResultImpl.java | 43 + .../slcommands/impl/NullOperationCommandImpl.java | 43 + .../slcommands/impl/NullOperationResultImpl.java | 48 + .../gv/egiz/bku/slcommands/impl/SLCommandImpl.java | 81 + .../gv/egiz/bku/slcommands/impl/SLResultImpl.java | 297 +++ .../at/gv/egiz/bku/slcommands/impl/STALHelper.java | 242 ++ .../impl/SVPersonendatenInfoboxImpl.java | 323 +++ .../impl/xsect/AlgorithmMethodFactory.java | 79 + .../impl/xsect/AlgorithmMethodFactoryImpl.java | 172 ++ .../impl/xsect/ByteArrayDereferencer.java | 65 + .../egiz/bku/slcommands/impl/xsect/DataObject.java | 1289 ++++++++++ .../bku/slcommands/impl/xsect/IdValueFactory.java | 37 + .../slcommands/impl/xsect/IdValueFactoryImpl.java | 127 + .../slcommands/impl/xsect/LocRefDereferencer.java | 112 + .../bku/slcommands/impl/xsect/STALPrivateKey.java | 128 + .../bku/slcommands/impl/xsect/STALProvider.java | 71 + .../bku/slcommands/impl/xsect/STALSignature.java | 184 ++ .../impl/xsect/STALSignatureException.java | 92 + .../egiz/bku/slcommands/impl/xsect/Signature.java | 995 ++++++++ .../slcommands/impl/xsect/SignatureContext.java | 129 + .../slcommands/impl/xsect/SignatureLocation.java | 235 ++ .../impl/xsect/SimpleDOMErrorHandler.java | 98 + .../impl/xsect/URIDereferncerAdapter.java | 103 + .../bku/slcommands/impl/xsect/XSECTReference.java | 112 + .../bku/slcommands/impl/xsect/XSECTTransforms.java | 124 + .../egiz/bku/slexceptions/SLBindingException.java | 31 + .../egiz/bku/slexceptions/SLCanceledException.java | 26 + .../egiz/bku/slexceptions/SLCommandException.java | 30 + .../at/gv/egiz/bku/slexceptions/SLException.java | 88 + .../egiz/bku/slexceptions/SLExceptionMessages.java | 56 + .../egiz/bku/slexceptions/SLRequestException.java | 30 + .../egiz/bku/slexceptions/SLRuntimeException.java | 37 + .../egiz/bku/slexceptions/SLVersionException.java | 28 + .../egiz/bku/slexceptions/SLViewerException.java | 28 + .../at/gv/egiz/bku/viewer/ResourceFontLoader.java | 61 + .../at/gv/egiz/bku/viewer/ValidationException.java | 38 + .../main/java/at/gv/egiz/bku/viewer/Validator.java | 25 + .../at/gv/egiz/bku/viewer/ValidatorFactory.java | 178 ++ .../bku/accesscontrol/config/AccessControl.xsd | 128 + .../at/gv/egiz/bku/slcommands/schema/Core-1.2.xsd | 877 +++++++ .../egiz/bku/slcommands/schema/Core.20020225.xsd | 33 + .../egiz/bku/slcommands/schema/Core.20020831.xsd | 10 + .../at/gv/egiz/bku/slcommands/schema/xml.xsd | 145 ++ .../bku/slcommands/schema/xmldsig-core-schema.xsd | 308 +++ .../bku/slcommands/schema/xmldsig-transforms.xsd | 41 + .../slexceptions/SLExceptionMessages.properties | 104 + .../slexceptions/SLExceptionMessages_en.properties | 102 + .../AuthenticationClassifierTest.java | 28 + .../gv/egiz/bku/accesscontroller/ConfigTest.java | 104 + .../egiz/bku/accesscontroller/RuleCheckerTest.java | 87 + .../bku/binding/BindingProcessorManagerTest.java | 51 + .../gv/egiz/bku/binding/DataUrlConnectionTest.java | 178 ++ .../at/gv/egiz/bku/binding/DummyStalFactory.java | 38 + .../bku/binding/EmptyMultipartSLRequestTest.java | 98 + .../at/gv/egiz/bku/binding/ExpiryRemoverTest.java | 70 + .../egiz/bku/binding/HttpBindingProcessorTest.java | 328 +++ .../java/at/gv/egiz/bku/binding/IdFactoryTest.java | 63 + .../egiz/bku/binding/InputDecoderFactoryTest.java | 96 + .../bku/binding/MultiTestDataUrlConnection.java | 49 + .../egiz/bku/binding/MultipartSLRequestTest.java | 59 + .../at/gv/egiz/bku/binding/NullOperationTest.java | 54 + .../at/gv/egiz/bku/binding/RequestFactory.java | 116 + .../egiz/bku/binding/SSLDataUrlConnectionTest.java | 40 + .../gv/egiz/bku/binding/TestDataUrlConnection.java | 150 ++ .../bku/binding/XWWWFormUrlInputIteratorTest.java | 299 +++ .../at/gv/egiz/bku/conf/CertValidatorTest.java | 35 + .../at/gv/egiz/bku/conf/DummyConfiguration.java | 32 + .../egiz/bku/slcommands/SLCommandFactoryTest.java | 90 + .../impl/CreateXMLSignatureComandImplTest.java | 103 + .../bku/slcommands/impl/ErrorResultImplTest.java | 46 + .../slcommands/impl/InfoboxReadComandImplTest.java | 104 + .../impl/NullOperationResultImplTest.java | 42 + .../impl/SVPersonendatenInfoboxImplTest.java | 146 ++ .../bku/slcommands/impl/xsect/SignatureTest.java | 853 +++++++ .../test/java/at/gv/egiz/stal/dummy/DummySTAL.java | 154 ++ .../src/test/java/moaspss/MOASPClient.java | 276 +++ .../bkucommon/src/test/java/moaspss/SLClient.java | 175 ++ .../src/test/java/moaspss/SLException.java | 40 + .../java/moaspss/TestCreateAndVerifySignature.java | 163 ++ .../java/moaspss/generated/AllSignatoriesType.java | 64 + .../java/moaspss/generated/AnyChildrenType.java | 96 + .../java/moaspss/generated/CMSContentBaseType.java | 51 + .../generated/CMSDataObjectOptionalMetaType.java | 106 + .../generated/CanonicalizationMethodType.java | 118 + .../java/moaspss/generated/CheckResultType.java | 114 + .../java/moaspss/generated/ContentBaseType.java | 139 ++ .../moaspss/generated/ContentExLocRefBaseType.java | 56 + .../moaspss/generated/ContentOptionalRefType.java | 84 + .../moaspss/generated/ContentRequiredRefType.java | 54 + .../CreateSignatureEnvironmentProfile.java | 115 + .../generated/CreateSignatureLocationType.java | 109 + .../generated/CreateTransformsInfoProfile.java | 115 + .../generated/CreateXMLSignatureRequest.java | 50 + .../generated/CreateXMLSignatureRequestType.java | 466 ++++ .../generated/CreateXMLSignatureResponseType.java | 160 ++ .../java/moaspss/generated/DSAKeyValueType.java | 236 ++ .../java/moaspss/generated/DataObjectInfoType.java | 211 ++ .../java/moaspss/generated/DigestMethodType.java | 120 + .../java/moaspss/generated/ErrorResponseType.java | 107 + .../moaspss/generated/FinalDataMetaInfoType.java | 82 + .../test/java/moaspss/generated/InputDataType.java | 120 + .../test/java/moaspss/generated/KeyInfoType.java | 151 ++ .../java/moaspss/generated/KeyStorageType.java | 67 + .../test/java/moaspss/generated/KeyValueType.java | 101 + .../src/test/java/moaspss/generated/MOAFault.java | 70 + .../generated/ManifestRefsCheckResultInfoType.java | 53 + .../generated/ManifestRefsCheckResultType.java | 52 + .../test/java/moaspss/generated/ManifestType.java | 120 + .../test/java/moaspss/generated/MetaInfoType.java | 151 ++ .../test/java/moaspss/generated/ObjectFactory.java | 1032 ++++++++ .../test/java/moaspss/generated/ObjectType.java | 180 ++ .../test/java/moaspss/generated/PGPDataType.java | 114 + .../moaspss/generated/PublicAuthorityType.java | 78 + .../java/moaspss/generated/RSAKeyValueType.java | 102 + .../test/java/moaspss/generated/ReferenceType.java | 223 ++ .../generated/ReferencesCheckResultInfoType.java | 52 + .../generated/ReferencesCheckResultType.java | 52 + .../moaspss/generated/RetrievalMethodType.java | 136 ++ .../test/java/moaspss/generated/SPKIDataType.java | 92 + .../moaspss/generated/SignatureMethodType.java | 124 + .../moaspss/generated/SignaturePropertiesType.java | 120 + .../moaspss/generated/SignaturePropertyType.java | 153 ++ .../test/java/moaspss/generated/SignatureType.java | 204 ++ .../java/moaspss/generated/SignatureValueType.java | 108 + .../generated/SignatureVerificationPortType.java | 57 + .../generated/SignatureVerificationService.java | 87 + .../java/moaspss/generated/SignedInfoType.java | 176 ++ .../moaspss/generated/TransformParameterType.java | 226 ++ .../test/java/moaspss/generated/TransformType.java | 125 + .../java/moaspss/generated/TransformsInfoType.java | 106 + .../java/moaspss/generated/TransformsType.java | 85 + .../generated/VerifyCMSSignatureRequest.java | 85 + .../generated/VerifyCMSSignatureRequestType.java | 171 ++ .../generated/VerifyCMSSignatureResponseType.java | 95 + .../generated/VerifyTransformsDataType.java | 91 + .../generated/VerifyTransformsInfoProfile.java | 115 + .../generated/VerifyXMLSignatureRequestType.java | 439 ++++ .../generated/VerifyXMLSignatureResponseType.java | 263 ++ .../test/java/moaspss/generated/X509DataType.java | 109 + .../moaspss/generated/X509IssuerSerialType.java | 107 + .../java/moaspss/generated/XMLContentType.java | 79 + .../generated/XMLDataObjectAssociationType.java | 106 + .../test/java/moaspss/generated/package-info.java | 18 + .../bkucommon/src/test/resources/MOA-SPSS-1.3.wsdl | 57 + .../bkucommon/src/test/resources/MOA-SPSS-1.3.xsd | 469 ++++ .../bku/accesscontroller/AccessControlConfig.xml | 78 + .../egiz/bku/accesscontroller/SimpleChainTest.xml | 39 + .../egiz/bku/accesscontroller/www.a-trust.at.crt | 28 + .../at/gv/egiz/bku/binding/Multipart.txt.bin | 337 +++ .../at/gv/egiz/bku/binding/MultipartEmpty.txt | 17 + .../gv/egiz/bku/binding/MultipartFromTutorial.txt | 37 + .../at/gv/egiz/bku/binding/NOPMultipartDataUrl.txt | 47 + .../at/gv/egiz/bku/binding/Nulloperation.xml | 1 + .../egiz/bku/binding/NulloperationRequest.txt.bin | 1 + .../at/gv/egiz/bku/binding/Statemachine1.txt | 36 + .../at/gv/egiz/bku/binding/Stylesheet.txt | 56 + .../at/gv/egiz/bku/binding/XWWWFormUrlEncoded1.txt | 1 + .../at/gv/egiz/bku/binding/XWWWFormUrlEncoded2.txt | 1 + .../at/gv/egiz/bku/binding/stylesheet.xslt | 16 + .../bku/conf/certs/CACerts/A-Trust-Qual-01a.cer | Bin 0 -> 1111 bytes .../bku/conf/certs/CACerts/A-Trust-Qual-02a.cer | Bin 0 -> 975 bytes .../bku/conf/certs/CACerts/A-Trust-Qual-03a.cer | Bin 0 -> 975 bytes .../bku/conf/certs/CACerts/A-Trust-nQual-01a.cer | Bin 0 -> 865 bytes .../bku/conf/certs/CACerts/A-Trust-nQual-03.cer | Bin 0 -> 979 bytes .../bku/conf/certs/certStore/A-Trust-Qual-01a.cer | Bin 0 -> 1111 bytes .../bku/conf/certs/certStore/A-Trust-Qual-02a.cer | Bin 0 -> 975 bytes .../bku/conf/certs/certStore/A-Trust-Qual-03a.cer | Bin 0 -> 975 bytes .../bku/conf/certs/certStore/A-Trust-nQual-01a.cer | Bin 0 -> 865 bytes .../bku/conf/certs/certStore/A-Trust-nQual-03.cer | Bin 0 -> 979 bytes .../bku/conf/certs/certStore/a-sign-SSL-03.cer | 26 + .../conf/certs/certStore/a-sign-corporate-03.cer | 27 + .../certs/certStore/a-sign-corporate-light-01a.cer | 21 + .../certs/certStore/a-sign-corporate-light-02a.cer | 27 + .../certs/certStore/a-sign-corporate-light-03.cer | 27 + .../certStore/a-sign-corporate-medium-01a.cer | 21 + .../certStore/a-sign-corporate-medium-02a.cer | 27 + .../bku/conf/certs/testCerts/www.a-trust.at.der | Bin 0 -> 1230 bytes .../CreateXMLSignatureRequest.xml | 23 + .../at/gv/egiz/bku/slcommands/impl/Cert.p12 | Bin 0 -> 4158 bytes .../at/gv/egiz/bku/slcommands/impl/DataObject1.bin | 6 + .../at/gv/egiz/bku/slcommands/impl/DataObject1.txt | 1 + .../at/gv/egiz/bku/slcommands/impl/DataObject1.xml | 6 + .../impl/DataObjectInfo_Base64Content_1.xml | 13 + .../slcommands/impl/DataObjectInfo_Detached_1.xml | 11 + .../impl/DataObjectInfo_Detached_Base64Content.xml | 13 + .../impl/DataObjectInfo_Detached_LocRefContent.xml | 13 + .../impl/DataObjectInfo_LocRefContent_1.xml | 11 + .../impl/DataObjectInfo_LocRefContent_2.xml | 13 + .../slcommands/impl/DataObjectInfo_Reference_1.xml | 13 + .../impl/DataObjectInfo_XMLContent_1.xml | 14 + .../impl/DataObjectInfo_XMLContent_2.xml | 17 + .../at/gv/egiz/bku/slcommands/impl/Document.dtd | 3 + .../bku/slcommands/impl/SignatureEnvironment1.xml | 6 + .../bku/slcommands/impl/SignatureInfo_Base64_1.xml | 23 + .../bku/slcommands/impl/SignatureInfo_Base64_2.xml | 18 + .../bku/slcommands/impl/SignatureInfo_Base64_3.xml | 20 + .../slcommands/impl/SignatureInfo_Reference_1.xml | 11 + .../slcommands/impl/SignatureInfo_XMLContent_1.xml | 13 + .../egiz/bku/slcommands/impl/TransformsInfo_1.xml | 304 +++ .../egiz/bku/slcommands/impl/TransformsInfo_2.xml | 397 +++ .../at/gv/egiz/bku/slcommands/impl/XMLDocument.xsd | 15 + .../IdentityLink.Binary.Invalid-1.xml | 1 + .../IdentityLink.Binary.Invalid-2.xml | 1 + .../infoboxreadcommand/IdentityLink.Binary.xml | 1 + .../egiz/bku/slcommands/testApplicationContext.xml | 53 + .../src/test/resources/commons-logging.properties | 1 + .../bkucommon/src/test/resources/log4j.properties | 19 + .../moaspss/CreateXMLSignatureRequest.xml | 16 + mocca-1.2.11/htdocs/index.php | 127 + mocca-1.2.11/htdocs/mocca-t_s.png | Bin 0 -> 8976 bytes mocca-1.2.11/htdocs/mocca_s.png | Bin 0 -> 3952 bytes mocca-1.2.11/nbactions.xml | 27 + mocca-1.2.11/pom.xml | 258 ++ mocca-1.2.11/smcc/keystore.ks | Bin 0 -> 5635 bytes mocca-1.2.11/smcc/pom.xml | 46 + .../smcc/src/main/java/META-INF/MANIFEST.MF | 3 + .../src/main/java/at/gv/egiz/smcc/ACOSCard.java | 805 +++++++ .../at/gv/egiz/smcc/AbstractSignatureCard.java | 121 + .../src/main/java/at/gv/egiz/smcc/BELPICCard.java | 284 +++ .../java/at/gv/egiz/smcc/CancelledException.java | 39 + .../at/gv/egiz/smcc/CardNotSupportedException.java | 62 + .../gv/egiz/smcc/ChangeReferenceDataAPDUSpec.java | 95 + .../at/gv/egiz/smcc/ExclSignatureCardProxy.java | 110 + .../src/main/java/at/gv/egiz/smcc/Exclusive.java | 28 + .../at/gv/egiz/smcc/FileNotFoundException.java | 38 + .../smcc/src/main/java/at/gv/egiz/smcc/ITCard.java | 298 +++ .../main/java/at/gv/egiz/smcc/LockedException.java | 38 + .../main/java/at/gv/egiz/smcc/LogCardChannel.java | 129 + .../at/gv/egiz/smcc/NewReferenceDataAPDUSpec.java | 60 + .../at/gv/egiz/smcc/NotActivatedException.java | 44 + .../at/gv/egiz/smcc/PINConfirmationException.java | 26 + .../java/at/gv/egiz/smcc/PINFormatException.java | 26 + .../java/at/gv/egiz/smcc/PINMgmtSignatureCard.java | 44 + .../gv/egiz/smcc/PINOperationAbortedException.java | 45 + .../src/main/java/at/gv/egiz/smcc/PINSpec.java | 239 ++ .../at/gv/egiz/smcc/ResetRetryCounterAPDUSpec.java | 38 + .../src/main/java/at/gv/egiz/smcc/STARCOSCard.java | 888 +++++++ .../smcc/src/main/java/at/gv/egiz/smcc/SWCard.java | 396 +++ .../smcc/SecurityStatusNotSatisfiedException.java | 38 + .../main/java/at/gv/egiz/smcc/SignatureCard.java | 125 + .../at/gv/egiz/smcc/SignatureCardException.java | 65 + .../java/at/gv/egiz/smcc/SignatureCardFactory.java | 401 ++++ .../java/at/gv/egiz/smcc/TimeoutException.java | 39 + .../gv/egiz/smcc/VerificationFailedException.java | 65 + .../main/java/at/gv/egiz/smcc/VerifyAPDUSpec.java | 200 ++ .../at/gv/egiz/smcc/conf/SMCCConfiguration.java | 45 + .../java/at/gv/egiz/smcc/pin/gui/ModifyPINGUI.java | 36 + .../at/gv/egiz/smcc/pin/gui/ModifyPINProvider.java | 48 + .../main/java/at/gv/egiz/smcc/pin/gui/PINGUI.java | 42 + .../java/at/gv/egiz/smcc/pin/gui/PINProvider.java | 51 + .../java/at/gv/egiz/smcc/reader/CardReader.java | 92 + .../at/gv/egiz/smcc/reader/DefaultCardReader.java | 106 + .../at/gv/egiz/smcc/reader/PinpadCardReader.java | 703 ++++++ .../java/at/gv/egiz/smcc/reader/ReaderFactory.java | 125 + .../java/at/gv/egiz/smcc/util/ISO7816Utils.java | 368 +++ .../main/java/at/gv/egiz/smcc/util/SMCCHelper.java | 150 ++ .../java/at/gv/egiz/smcc/util/SmartCardIO.java | 204 ++ .../egiz/smcc/util/TransparentFileInputStream.java | 194 ++ .../resources/at/gv/egiz/smcc/ACOSCard.properties | 24 + .../at/gv/egiz/smcc/BELPICCard.properties | 3 + .../resources/at/gv/egiz/smcc/ITCard.properties | 3 + .../at/gv/egiz/smcc/STARCOSCard.properties | 22 + .../test/java/at/gv/egiz/smcc/AbstractAppl.java | 57 + .../src/test/java/at/gv/egiz/smcc/CardAppl.java | 43 + .../test/java/at/gv/egiz/smcc/CardChannelEmul.java | 52 + .../src/test/java/at/gv/egiz/smcc/CardEmul.java | 106 + .../java/at/gv/egiz/smcc/CardTerminalEmul.java | 64 + .../src/test/java/at/gv/egiz/smcc/CardTest.java | 222 ++ .../test/java/at/gv/egiz/smcc/CardTestSuite.java | 29 + .../smcc/src/test/java/at/gv/egiz/smcc/File.java | 38 + .../smcc/src/test/java/at/gv/egiz/smcc/PIN.java | 45 + .../egiz/smcc/TransparentFileInputStreamTest.java | 208 ++ .../test/java/at/gv/egiz/smcc/acos/A03ApplDEC.java | 151 ++ .../test/java/at/gv/egiz/smcc/acos/A03ApplSIG.java | 77 + .../at/gv/egiz/smcc/acos/A03CardChannelEmul.java | 98 + .../java/at/gv/egiz/smcc/acos/A03CardEmul.java | 31 + .../java/at/gv/egiz/smcc/acos/A03CardTest.java | 92 + .../test/java/at/gv/egiz/smcc/acos/A04ApplDEC.java | 296 +++ .../test/java/at/gv/egiz/smcc/acos/A04ApplSIG.java | 87 + .../at/gv/egiz/smcc/acos/A04CardChannelEmul.java | 75 + .../java/at/gv/egiz/smcc/acos/A04CardEmul.java | 32 + .../java/at/gv/egiz/smcc/acos/A04CardTest.java | 143 ++ .../test/java/at/gv/egiz/smcc/acos/ACOSAppl.java | 79 + .../java/at/gv/egiz/smcc/acos/ACOSApplDEC.java | 334 +++ .../java/at/gv/egiz/smcc/acos/ACOSApplSIG.java | 302 +++ .../at/gv/egiz/smcc/acos/ACOSCardChannelEmul.java | 261 ++ .../java/at/gv/egiz/smcc/acos/ACOSCardEmul.java | 38 + .../java/at/gv/egiz/smcc/acos/ACOSCardTest.java | 230 ++ .../at/gv/egiz/smcc/acos/ACOSCardTestSuite.java | 27 + .../egiz/smcc/pin/gui/CancelChangePINProvider.java | 39 + .../at/gv/egiz/smcc/pin/gui/CancelPINProvider.java | 29 + .../at/gv/egiz/smcc/pin/gui/ChangePINProvider.java | 49 + .../at/gv/egiz/smcc/pin/gui/DummyChangePINGUI.java | 68 + .../java/at/gv/egiz/smcc/pin/gui/DummyPINGUI.java | 48 + .../gv/egiz/smcc/pin/gui/InterruptPINProvider.java | 34 + .../smcc/pin/gui/InvalidChangePINProvider.java | 56 + .../gv/egiz/smcc/pin/gui/InvalidPINProvider.java | 48 + .../gv/egiz/smcc/pin/gui/SMCCTestPINProvider.java | 43 + .../java/at/gv/egiz/smcc/starcos/STARCOSAppl.java | 72 + .../starcos/STARCOSApplGewoehnlicheSignatur.java | 349 +++ .../gv/egiz/smcc/starcos/STARCOSApplInfobox.java | 165 ++ .../smcc/starcos/STARCOSApplSichereSignatur.java | 375 +++ .../egiz/smcc/starcos/STARCOSCardChannelEmul.java | 434 ++++ .../at/gv/egiz/smcc/starcos/STARCOSCardEmul.java | 54 + .../at/gv/egiz/smcc/starcos/STARCOSCardTest.java | 346 +++ .../smcc/starcos/STARCOSG3CardChannelEmul.java | 46 + .../at/gv/egiz/smcc/starcos/STARCOSG3CardEmul.java | 57 + .../at/gv/egiz/smcc/starcos/STARCOSG3CardTest.java | 119 + .../at/gv/egiz/smcc/util/ISO7816UtilsTest.java | 175 ++ .../smcc/src/test/resources/IdentityLink.bin | Bin 0 -> 395 bytes .../smcc/src/test/resources/log4j.properties | 19 + mocca-1.2.11/smccSTAL/pom.xml | 48 + .../gv/egiz/bku/pin/gui/AbstractPINProvider.java | 60 + .../java/at/gv/egiz/bku/pin/gui/SignPINGUI.java | 136 ++ .../at/gv/egiz/bku/pin/gui/SignPINProvider.java | 105 + .../java/at/gv/egiz/bku/pin/gui/VerifyPINGUI.java | 76 + .../at/gv/egiz/bku/pin/gui/VerifyPINProvider.java | 72 + .../at/gv/egiz/bku/smccstal/AbstractBKUWorker.java | 206 ++ .../egiz/bku/smccstal/AbstractRequestHandler.java | 86 + .../at/gv/egiz/bku/smccstal/AbstractSMCCSTAL.java | 192 ++ .../at/gv/egiz/bku/smccstal/DomainIdConverter.java | 85 + .../gv/egiz/bku/smccstal/HashDataInputDisplay.java | 46 + .../bku/smccstal/InfoBoxReadRequestHandler.java | 141 ++ .../egiz/bku/smccstal/SMCCSTALRequestHandler.java | 33 + .../gv/egiz/bku/smccstal/STALMessageConsumer.java | 21 + .../java/at/gv/egiz/bku/smccstal/SecureViewer.java | 43 + .../gv/egiz/bku/smccstal/SignRequestHandler.java | 136 ++ .../gv/egiz/bku/smccstal/StatusRequestHandler.java | 72 + .../src/test/java/at/gv/egiz/smcc/ASN1Test.java | 105 + .../java/at/gv/egiz/smcc/AbstractSMCCSTALTest.java | 126 + .../smccSTAL/src/test/resources/log4j.properties | 19 + mocca-1.2.11/smccSTALExt/pom.xml | 24 + .../at/gv/egiz/bku/pin/gui/ManagementPINGUI.java | 88 + .../gv/egiz/bku/pin/gui/ManagementPINProvider.java | 89 + .../egiz/bku/smccstal/CardMgmtRequestHandler.java | 177 ++ .../egiz/bku/smccstal/GetPINStatusException.java | 41 + .../bku/smccstal/PINManagementRequestHandler.java | 371 +++ mocca-1.2.11/src/main/site/apt/index.apt | 104 + mocca-1.2.11/src/main/site/apt/notes.apt | 4 + mocca-1.2.11/src/main/site/site.xml | 30 + mocca-1.2.11/utils/pom.xml | 77 + .../utils/src/main/java/META-INF/MANIFEST.MF | 3 + .../namespaces/cardchannel/ATRType.java | 100 + .../namespaces/cardchannel/AttributeList.java | 71 + .../namespaces/cardchannel/AttributeType.java | 264 ++ .../namespaces/cardchannel/CommandAPDUType.java | 154 ++ .../namespaces/cardchannel/ObjectFactory.java | 171 ++ .../namespaces/cardchannel/ResetType.java | 64 + .../namespaces/cardchannel/ResponseAPDUType.java | 161 ++ .../namespaces/cardchannel/ResponseType.java | 78 + .../namespaces/cardchannel/ScriptType.java | 80 + .../namespaces/cardchannel/VerifyAPDUType.java | 266 ++ .../namespaces/cardchannel/package-info.java | 2 + .../_20020506_/CompressedIdentityLinkType.java | 310 +++ .../personenbindung/_20020506_/ObjectFactory.java | 76 + .../personenbindung/_20020506_/package-info.java | 25 + .../securitylayer/_1/AccessAuthorizationType.java | 112 + .../securitylayer/_1/AllSignatoriesType.java | 71 + .../securitylayer/_1/AnyChildrenType.java | 98 + .../securitylayer/_1/AnyMixedChildrenType.java | 102 + .../securitylayer/_1/AuthenticationClassType.java | 80 + .../securitylayer/_1/Base64ContentType.java | 87 + .../securitylayer/_1/Base64OptRefContentType.java | 85 + .../securitylayer/_1/Base64XMLContentType.java | 116 + .../_1/Base64XMLLocRefContentType.java | 147 ++ .../_1/Base64XMLLocRefOptRefContentType.java | 85 + .../_1/Base64XMLLocRefReqRefContentType.java | 85 + .../_1/Base64XMLOptRefContentType.java | 85 + .../namespaces/securitylayer/_1/BindingType.java | 88 + .../_1/CMSDataObjectOptionalMetaType.java | 117 + .../_1/CMSDataObjectRequiredMetaType.java | 59 + .../securitylayer/_1/CMSEncryptedContentType.java | 113 + .../_1/CMSRecipientPublicKeyType.java | 83 + .../securitylayer/_1/CMSToBeEncryptedType.java | 113 + .../securitylayer/_1/CheckResultType.java | 116 + .../_1/CreateCMSSignatureRequestType.java | 151 ++ .../_1/CreateCMSSignatureResponseType.java | 83 + .../_1/CreateHashInfoRequestType.java | 163 ++ .../_1/CreateHashInfoResponseType.java | 169 ++ .../securitylayer/_1/CreateHashRequestType.java | 92 + .../securitylayer/_1/CreateHashResponseType.java | 92 + .../_1/CreateXMLSignatureRequestType.java | 151 ++ .../_1/CreateXMLSignatureResponseType.java | 88 + .../_1/DataObjectAssociationType.java | 113 + .../securitylayer/_1/DataObjectInfoType.java | 188 ++ .../securitylayer/_1/DecryptCMSRequestType.java | 143 ++ .../securitylayer/_1/DecryptCMSResponseType.java | 83 + .../securitylayer/_1/DecryptXMLRequestType.java | 180 ++ .../securitylayer/_1/DecryptXMLResponseType.java | 265 ++ .../securitylayer/_1/EncryptCMSRequestType.java | 152 ++ .../securitylayer/_1/EncryptCMSResponseType.java | 83 + .../securitylayer/_1/EncryptXMLRequest.java | 57 + .../securitylayer/_1/EncryptXMLRequestType.java | 157 ++ .../securitylayer/_1/EncryptXMLResponseType.java | 189 ++ .../securitylayer/_1/EncryptedDataType.java | 110 + .../securitylayer/_1/EncryptionInfoType.java | 243 ++ .../securitylayer/_1/ErrorResponseType.java | 105 + .../securitylayer/_1/GetPropertiesRequest.java | 57 + .../securitylayer/_1/GetPropertiesRequestType.java | 57 + .../_1/GetPropertiesResponseType.java | 265 ++ .../securitylayer/_1/GetStatusRequestType.java | 116 + .../securitylayer/_1/GetStatusResponseType.java | 85 + .../namespaces/securitylayer/_1/HashDataType.java | 113 + .../_1/InfoboxAssocArrayPairType.java | 83 + .../_1/InfoboxAvailableRequestType.java | 53 + .../_1/InfoboxAvailableResponseType.java | 95 + .../securitylayer/_1/InfoboxCreateRequestType.java | 284 +++ .../_1/InfoboxCreateResponseType.java | 53 + .../securitylayer/_1/InfoboxDeleteRequestType.java | 88 + .../_1/InfoboxDeleteResponseType.java | 53 + .../_1/InfoboxReadDataAssocArrayType.java | 132 + .../_1/InfoboxReadParamsAssocArrayType.java | 450 ++++ .../_1/InfoboxReadParamsBinaryFileType.java | 85 + .../securitylayer/_1/InfoboxReadRequestType.java | 174 ++ .../securitylayer/_1/InfoboxReadResponseType.java | 113 + .../securitylayer/_1/InfoboxTypeType.java | 74 + .../_1/InfoboxUpdateParamsAssocArrayType.java | 297 +++ .../securitylayer/_1/InfoboxUpdateRequestType.java | 174 ++ .../_1/InfoboxUpdateResponseType.java | 53 + .../_1/ManifestRefsCheckResultInfoType.java | 109 + .../_1/ManifestRefsCheckResultType.java | 116 + .../namespaces/securitylayer/_1/MetaInfoType.java | 152 ++ .../securitylayer/_1/NullOperationRequestType.java | 53 + .../_1/NullOperationResponseType.java | 53 + .../namespaces/securitylayer/_1/ObjectFactory.java | 1265 ++++++++++ .../_1/QualifiedBoxIdentifierType.java | 124 + .../_1/ReferencesCheckResultInfoType.java | 103 + .../_1/ReferencesCheckResultType.java | 116 + .../securitylayer/_1/RequesterIDType.java | 110 + .../securitylayer/_1/ReturnResultType.java | 77 + .../_1/SignatureInfoCreationType.java | 148 ++ .../_1/SignatureInfoVerificationType.java | 118 + .../securitylayer/_1/SignatureLocationType.java | 117 + .../securitylayer/_1/ToBeEncryptedType.java | 325 +++ .../securitylayer/_1/TokenStatusType.java | 74 + .../securitylayer/_1/TransformsInfoType.java | 123 + .../_1/UserConfirmationSimpleType.java | 80 + .../securitylayer/_1/UserConfirmationType.java | 102 + .../securitylayer/_1/VerificationResultType.java | 105 + .../_1/VerifyCMSSignatureRequestType.java | 177 ++ .../_1/VerifyCMSSignatureResponseType.java | 103 + .../_1/VerifyHashInfoRequestType.java | 169 ++ .../securitylayer/_1/VerifyHashRequestType.java | 92 + .../securitylayer/_1/VerifyHashResponseType.java | 92 + .../_1/VerifyXMLSignatureRequestType.java | 151 ++ .../_1/VerifyXMLSignatureResponseType.java | 205 ++ .../securitylayer/_1/XMLContentType.java | 86 + .../_1/XMLRecipientPublicKeyType.java | 112 + .../_1/XMLToBeEncryptedNewContentType.java | 85 + .../securitylayer/_1/XMLToBeEncryptedNewType.java | 175 ++ .../namespaces/securitylayer/_1/package-info.java | 25 + .../_20020225_/ErrorResponseType.java | 98 + .../securitylayer/_20020225_/ObjectFactory.java | 280 +++ .../securitylayer/_20020225_/package-info.java | 9 + .../securitylayer/_20020831_/ObjectFactory.java | 112 + .../persondata/_20020228_/AbstractAddressType.java | 159 ++ .../persondata/_20020228_/AbstractPersonType.java | 159 ++ .../persondata/_20020228_/CorporateBodyType.java | 260 ++ .../_20020228_/DefinedAlternativeNameTypeType.java | 83 + .../persondata/_20020228_/DefinedRelationType.java | 95 + .../persondata/_20020228_/IdentificationType.java | 333 +++ .../persondata/_20020228_/InternetAddressType.java | 158 ++ .../persondata/_20020228_/MaritalStatusType.java | 80 + .../_20020228_/MobileTelcomNumberType.java | 83 + .../persondata/_20020228_/ObjectFactory.java | 436 ++++ .../persondata/_20020228_/PersonDataType.java | 262 ++ .../persondata/_20020228_/PersonNameType.java | 636 +++++ .../persondata/_20020228_/PhysicalPersonType.java | 565 +++++ .../persondata/_20020228_/PostalAddressType.java | 627 +++++ .../namespace/persondata/_20020228_/SexType.java | 77 + .../_20020228_/TelcomNumberListType.java | 197 ++ .../persondata/_20020228_/TelcomNumberType.java | 225 ++ .../_20020228_/TelephoneAddressType.java | 162 ++ .../_20020228_/TypedPostalAddressType.java | 157 ++ .../persondata/_20020228_/package-info.java | 25 + .../at/gv/egiz/bku/utils/DebugOutputStream.java | 48 + .../java/at/gv/egiz/bku/utils/DebugReader.java | 58 + .../java/at/gv/egiz/bku/utils/DebugWriter.java | 55 + .../main/java/at/gv/egiz/bku/utils/HexDump.java | 75 + .../at/gv/egiz/bku/utils/NullOutputStream.java | 10 + .../main/java/at/gv/egiz/bku/utils/StreamUtil.java | 101 + .../gv/egiz/bku/utils/URLEncodingInputStream.java | 62 + .../gv/egiz/bku/utils/URLEncodingOutputStream.java | 134 ++ .../at/gv/egiz/bku/utils/URLEncodingWriter.java | 57 + .../at/gv/egiz/bku/utils/binding/Protocol.java | 41 + .../utils/urldereferencer/FormDataURLSupplier.java | 26 + .../HTTPURLProtocolHandlerImpl.java | 119 + .../urldereferencer/SimpleFormDataContextImpl.java | 41 + .../egiz/bku/utils/urldereferencer/StreamData.java | 61 + .../utils/urldereferencer/URIResolverAdapter.java | 96 + .../bku/utils/urldereferencer/URLDereferencer.java | 108 + .../urldereferencer/URLDereferencerContext.java | 27 + .../utils/urldereferencer/URLProtocolHandler.java | 39 + .../src/main/java/at/gv/egiz/dom/DOMUtils.java | 115 + .../egiz/idlink/CompressedIdentityLinkFactory.java | 416 ++++ .../at/gv/egiz/idlink/IdentityLinkFactory.java | 428 ++++ .../at/gv/egiz/idlink/IdentityLinkTransformer.java | 188 ++ .../at/gv/egiz/idlink/ans1/CitizenPublicKey.java | 92 + .../java/at/gv/egiz/idlink/ans1/IdentityLink.java | 315 +++ .../java/at/gv/egiz/idlink/ans1/PersonData.java | 91 + .../at/gv/egiz/idlink/ans1/PhysicalPersonData.java | 143 ++ .../java/at/gv/egiz/marshal/MarshallerFactory.java | 60 + .../gv/egiz/marshal/NamespacePrefixMapperImpl.java | 76 + .../apache/tomcat/util/http/AcceptLanguage.java | 151 ++ .../egiz/slbinding/NamespaceContextCallback.java | 41 + .../at/gv/egiz/slbinding/RedirectCallback.java | 42 + .../at/gv/egiz/slbinding/RedirectEventFilter.java | 263 ++ .../slbinding/RedirectUnmarshallerListener.java | 68 + .../egiz/slbinding/impl/SignatureLocationType.java | 50 + .../gv/egiz/slbinding/impl/TransformsInfoType.java | 79 + .../at/gv/egiz/slbinding/impl/XMLContentType.java | 69 + .../ReportingValidationEventHandler.java | 64 + .../egiz/xades/QualifyingPropertiesException.java | 40 + .../gv/egiz/xades/QualifyingPropertiesFactory.java | 230 ++ .../egiz/xmldsig/KeyTypeNotSupportedException.java | 65 + .../java/at/gv/egiz/xmldsig/KeyValueFactory.java | 279 +++ .../names/tc/saml/_1_0/assertion/ActionType.java | 96 + .../names/tc/saml/_1_0/assertion/AdviceType.java | 89 + .../names/tc/saml/_1_0/assertion/AnyType.java | 87 + .../tc/saml/_1_0/assertion/AssertionType.java | 318 +++ .../_1_0/assertion/AttributeDesignatorType.java | 98 + .../_1_0/assertion/AttributeStatementType.java | 78 + .../tc/saml/_1_0/assertion/AttributeType.java | 78 + .../AudienceRestrictionConditionType.java | 80 + .../assertion/AuthenticationStatementType.java | 165 ++ .../saml/_1_0/assertion/AuthorityBindingType.java | 123 + .../AuthorizationDecisionStatementType.java | 163 ++ .../saml/_1_0/assertion/ConditionAbstractType.java | 41 + .../tc/saml/_1_0/assertion/ConditionsType.java | 141 ++ .../names/tc/saml/_1_0/assertion/DecisionType.java | 61 + .../names/tc/saml/_1_0/assertion/EvidenceType.java | 82 + .../tc/saml/_1_0/assertion/NameIdentifierType.java | 123 + .../tc/saml/_1_0/assertion/ObjectFactory.java | 418 ++++ .../saml/_1_0/assertion/StatementAbstractType.java | 41 + .../_1_0/assertion/SubjectConfirmationType.java | 135 ++ .../saml/_1_0/assertion/SubjectLocalityType.java | 92 + .../assertion/SubjectStatementAbstractType.java | 77 + .../names/tc/saml/_1_0/assertion/SubjectType.java | 96 + .../names/tc/saml/_1_0/assertion/package-info.java | 9 + .../java/org/etsi/uri/_01903/v1_1/AnyType.java | 119 + .../etsi/uri/_01903/v1_1/CRLIdentifierType.java | 174 ++ .../java/org/etsi/uri/_01903/v1_1/CRLRefType.java | 113 + .../java/org/etsi/uri/_01903/v1_1/CRLRefsType.java | 92 + .../org/etsi/uri/_01903/v1_1/CRLValuesType.java | 92 + .../org/etsi/uri/_01903/v1_1/CertIDListType.java | 92 + .../java/org/etsi/uri/_01903/v1_1/CertIDType.java | 114 + .../uri/_01903/v1_1/CertificateValuesType.java | 133 + .../uri/_01903/v1_1/CertifiedRolesListType.java | 92 + .../etsi/uri/_01903/v1_1/ClaimedRolesListType.java | 92 + .../_01903/v1_1/CommitmentTypeIndicationType.java | 180 ++ .../v1_1/CommitmentTypeQualifiersListType.java | 92 + .../_01903/v1_1/CompleteCertificateRefsType.java | 120 + .../_01903/v1_1/CompleteRevocationRefsType.java | 176 ++ .../etsi/uri/_01903/v1_1/CounterSignatureType.java | 86 + .../etsi/uri/_01903/v1_1/DataObjectFormatType.java | 200 ++ .../uri/_01903/v1_1/DigestAlgAndValueType.java | 112 + .../_01903/v1_1/DocumentationReferencesType.java | 94 + .../uri/_01903/v1_1/EncapsulatedPKIDataType.java | 115 + .../org/etsi/uri/_01903/v1_1/HashDataInfoType.java | 116 + .../org/etsi/uri/_01903/v1_1/IdentifierType.java | 112 + .../org/etsi/uri/_01903/v1_1/IntegerListType.java | 93 + .../etsi/uri/_01903/v1_1/NoticeReferenceType.java | 113 + .../etsi/uri/_01903/v1_1/OCSPIdentifierType.java | 145 ++ .../java/org/etsi/uri/_01903/v1_1/OCSPRefType.java | 113 + .../org/etsi/uri/_01903/v1_1/OCSPRefsType.java | 92 + .../org/etsi/uri/_01903/v1_1/OCSPValuesType.java | 92 + .../org/etsi/uri/_01903/v1_1/ObjectFactory.java | 755 ++++++ .../etsi/uri/_01903/v1_1/ObjectIdentifierType.java | 141 ++ .../uri/_01903/v1_1/OtherCertStatusRefsType.java | 92 + .../uri/_01903/v1_1/OtherCertStatusValuesType.java | 92 + .../org/etsi/uri/_01903/v1_1/QualifierType.java | 74 + .../v1_1/QualifyingPropertiesReferenceType.java | 149 ++ .../uri/_01903/v1_1/QualifyingPropertiesType.java | 176 ++ .../etsi/uri/_01903/v1_1/RevocationValuesType.java | 176 ++ .../org/etsi/uri/_01903/v1_1/SPUserNoticeType.java | 113 + .../_01903/v1_1/SigPolicyQualifiersListType.java | 92 + .../uri/_01903/v1_1/SignaturePolicyIdType.java | 170 ++ .../_01903/v1_1/SignaturePolicyIdentifierType.java | 144 ++ .../_01903/v1_1/SignatureProductionPlaceType.java | 169 ++ .../v1_1/SignedDataObjectPropertiesType.java | 191 ++ .../etsi/uri/_01903/v1_1/SignedPropertiesType.java | 148 ++ .../_01903/v1_1/SignedSignaturePropertiesType.java | 200 ++ .../org/etsi/uri/_01903/v1_1/SignerRoleType.java | 113 + .../org/etsi/uri/_01903/v1_1/TimeStampType.java | 150 ++ .../v1_1/UnsignedDataObjectPropertiesType.java | 92 + .../uri/_01903/v1_1/UnsignedPropertiesType.java | 148 ++ .../v1_1/UnsignedSignaturePropertiesType.java | 338 +++ .../org/etsi/uri/_01903/v1_1/package-info.java | 25 + .../_09/xmldsig_/CanonicalizationMethodType.java | 125 + .../org/w3/_2000/_09/xmldsig_/DSAKeyValueType.java | 243 ++ .../w3/_2000/_09/xmldsig_/DigestMethodType.java | 127 + .../org/w3/_2000/_09/xmldsig_/KeyInfoType.java | 158 ++ .../org/w3/_2000/_09/xmldsig_/KeyValueType.java | 108 + .../org/w3/_2000/_09/xmldsig_/ManifestType.java | 127 + .../org/w3/_2000/_09/xmldsig_/ObjectFactory.java | 576 +++++ .../java/org/w3/_2000/_09/xmldsig_/ObjectType.java | 187 ++ .../org/w3/_2000/_09/xmldsig_/PGPDataType.java | 121 + .../org/w3/_2000/_09/xmldsig_/RSAKeyValueType.java | 109 + .../org/w3/_2000/_09/xmldsig_/ReferenceType.java | 230 ++ .../w3/_2000/_09/xmldsig_/RetrievalMethodType.java | 143 ++ .../org/w3/_2000/_09/xmldsig_/SPKIDataType.java | 99 + .../w3/_2000/_09/xmldsig_/SignatureMethodType.java | 131 + .../_09/xmldsig_/SignaturePropertiesType.java | 127 + .../_2000/_09/xmldsig_/SignaturePropertyType.java | 160 ++ .../org/w3/_2000/_09/xmldsig_/SignatureType.java | 211 ++ .../w3/_2000/_09/xmldsig_/SignatureValueType.java | 115 + .../org/w3/_2000/_09/xmldsig_/SignedInfoType.java | 183 ++ .../org/w3/_2000/_09/xmldsig_/TransformType.java | 132 + .../org/w3/_2000/_09/xmldsig_/TransformsType.java | 92 + .../org/w3/_2000/_09/xmldsig_/X509DataType.java | 116 + .../_2000/_09/xmldsig_/X509IssuerSerialType.java | 114 + .../org/w3/_2000/_09/xmldsig_/package-info.java | 25 + .../_04/xmldsig_more_/BasePointParamsType.java | 145 ++ .../_04/xmldsig_more_/CharTwoFieldElemType.java | 88 + .../_04/xmldsig_more_/CharTwoFieldParamsType.java | 95 + .../_2001/_04/xmldsig_more_/CurveParamsType.java | 146 ++ .../_2001/_04/xmldsig_more_/DomainParamsType.java | 175 ++ .../_2001/_04/xmldsig_more_/ECDSAKeyValueType.java | 113 + .../w3/_2001/_04/xmldsig_more_/ECPointType.java | 113 + .../_04/xmldsig_more_/ExplicitParamsType.java | 141 ++ .../w3/_2001/_04/xmldsig_more_/FieldElemType.java | 59 + .../_2001/_04/xmldsig_more_/FieldParamsType.java | 59 + .../w3/_2001/_04/xmldsig_more_/ObjectFactory.java | 180 ++ .../OddCharExtensionFieldElemType.java | 86 + .../OddCharExtensionFieldParamsType.java | 119 + .../_04/xmldsig_more_/PnBFieldParamsType.java | 148 ++ .../_04/xmldsig_more_/PrimeFieldElemType.java | 86 + .../_04/xmldsig_more_/PrimeFieldParamsType.java | 90 + .../_04/xmldsig_more_/TnBFieldParamsType.java | 90 + .../w3/_2001/_04/xmldsig_more_/package-info.java | 25 + .../utils/src/test/cardchannel/marshalled.xml | 1 + mocca-1.2.11/utils/src/test/cardchannel/script.xml | 6 + .../java/at/gv/egiz/bku/utils/HexDumpTest.java | 49 + .../bku/utils/URLEncodingOutputStreamTest.java | 147 ++ .../at/gv/egiz/idlink/CompressIdentityLink.java | 54 + .../test/java/at/gv/egiz/idlink/IdentityLink.java | 153 ++ .../java/at/gv/egiz/slbinding/RedirectTest.java | 219 ++ .../at/gv/egiz/urldereferencer/FormDataTest.java | 96 + .../src/test/java/cardchannel/UnmarshalTest.java | 71 + .../test/java/saml/KeyValueAttributeTypeTest.java | 129 + .../test/requests/CreateCMSSignatureRequest01.xml | 14 + .../test/requests/CreateXMLSignatureRequest01.xml | 27 + .../requests/CreateXMLSignatureRequest01_bound.xml | 3 + .../CreateXMLSignatureRequest01_redirect.xml | 5 + .../test/requests/CreateXMLSignatureRequest02.xml | 304 +++ .../CreateXMLSignatureRequest02.xml_bound.xml | 1 + .../CreateXMLSignatureRequest02.xml_redirect.txt | 165 ++ .../test/requests/CreateXMLSignatureRequest03.xml | 10 + .../CreateXMLSignatureRequest03.xml_bound.xml | 1 + .../CreateXMLSignatureRequest03.xml_redirect.txt | 3 + .../utils/src/test/resources/BigRequest.xml | 1060 ++++++++ .../at/gv/egiz/idlink/IdentityLinkTest.p12 | Bin 0 -> 4222 bytes .../test/resources/at/gv/egiz/idlink/certified.cer | Bin 0 -> 1279 bytes .../test/resources/at/gv/egiz/idlink/secure.cer | Bin 0 -> 1269 bytes .../src/test/resources/commons-logging.properties | 1 + .../utils/src/test/resources/log4j.properties | 19 + 1354 files changed, 133002 insertions(+) create mode 100644 mocca-1.2.11/BKUApplet/keystore.ks create mode 100644 mocca-1.2.11/BKUApplet/pom.xml create mode 100644 mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/AppletBKUWorker.java create mode 100644 mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/AppletSecureViewer.java create mode 100644 mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/BKUApplet.java create mode 100644 mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/InternalSSLSocketFactory.java create mode 100644 mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/viewer/URLFontLoader.java create mode 100644 mocca-1.2.11/BKUApplet/src/main/resources/commons-logging.properties create mode 100644 mocca-1.2.11/BKUApplet/src/main/resources/simplelog.properties create mode 100644 mocca-1.2.11/BKUApplet/src/test/java/at/gv/egiz/stal/client/STALServiceTest.java create mode 100644 mocca-1.2.11/BKUApplet/src/test/resources/DejaVuLGCSansMono.ttf create mode 100644 mocca-1.2.11/BKUApplet/src/test/resources/appletTest.html create mode 100644 mocca-1.2.11/BKUApplet/src/test/resources/appletviewer.policy create mode 100644 mocca-1.2.11/BKUAppletExt/keystore.ks create mode 100644 mocca-1.2.11/BKUAppletExt/nbactions.xml create mode 100644 mocca-1.2.11/BKUAppletExt/pom.xml create mode 100644 mocca-1.2.11/BKUAppletExt/src/main/java/at/gv/egiz/bku/online/applet/ActivationApplet.java create mode 100644 mocca-1.2.11/BKUAppletExt/src/main/java/at/gv/egiz/bku/online/applet/PINManagementApplet.java create mode 100644 mocca-1.2.11/BKUAppletExt/src/main/java/at/gv/egiz/bku/online/applet/PINManagementBKUWorker.java create mode 100644 mocca-1.2.11/BKUAppletExt/src/test/resources/appletTest.html create mode 100644 mocca-1.2.11/BKUCertificates/pom.xml create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-CERT GLOBALTRUST.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Light CA.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Medium CA.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Premium CA.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Strong CA.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-SignProjects.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust Premium-Sig-01.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMark-Enc-01_CA.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMark-Sig-01_CA.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Enc-01.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Enc-01a.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Enc-01b.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Sig-01.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Sig-01a.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Sig-01b.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Enc-01.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Sig-01_CA.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Sig-01a.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Sig-01b.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust a-sign-Premium-Enc-01.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust a-sign-Premium-Enc-01a.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-0120041213.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-01_CA.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-01_cACertificate1.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-01_cACertificate2.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-03.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-TrustSign-Sig-01c.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-developer-02.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-token-enc-02.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-token-sig-02.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-uni.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-01_cACertificate1.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-01a.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-01b.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-03.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-trust-Qual-02.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-GSig-1.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-System-2.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-VPSig-1.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-VPSig-2.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-VSig-1.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-root-1.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-system-1.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Cybertrust Educational CA.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CA 1 2008_PN.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CA 2 2008_PN.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CA 3 2008_PN.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CRL-Signer 2 2008_PN.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CRL-Signer 3 2008_PN.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CRL-Signer CA 1 2008_PN.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified Root CA 1 2008_PN.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified Root CA 2 2008_PN.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified Root CA 3 2008_PN.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_CA_1_2006.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_CA_2_2006.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_CA_3_2007.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_Root_CA_1_2006.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_Root_CA_2_2006.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_Root_CA_3_2007.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax Secure Global eBusiness CA-1.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax Secure eBusiness CA-1.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax Secure eBusiness CA-2.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax_Secure_Certificate_Authority_DER.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/GTE CyberTrust Global Root.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Halcom CA PO 2.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterApplication.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterEncryption.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterExtern.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterNet.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterRoot.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterSigner.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TC TrustCenter Class 3 CA.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TC TrustCenter Class 3 L1 CA V.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TCTrustCenter-Class2-CA.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Thawte Premium Server CA.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Thwate-ServerCA.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMark-VSC-01.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMark-WebServer-01.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMark-WebServer-01a.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMarkToken-Enc-01.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMarkToken-Sig-01.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustSign-Enc-01_cACertificate1.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustSign-Enc-01_cACertificate2.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/VeriSign Class 3 Secure Server CA.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Verisign-SecureServerCertificationAuthority.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-cert-advanced.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-cert-government.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Inhouse-03.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Enc-03.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Sig-01.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Sig-02.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Sig-03.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-SSL-03.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-03.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Enc-01.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Enc-01a.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Sig-01.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Sig-01a.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-company-root-03.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-03.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-01.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-01.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-02.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-03.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-medium-01.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-medium-02.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-strong-01.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-strong-02.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-developer-01.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-01.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-01.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-01a.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-02.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-03.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-limited-03.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-premium-enc-01.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-premium-enc-02.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-premium-sig-01.crt.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-token-enc-01.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-token-sig-01.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-trust-nQual-0120041213.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature Advanced.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature Basic med.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature Basic.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature SSL.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/mobilkom_A1-Signatur_20060912-20110912_SerNo027866.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/telekom-control-kommission-top-1.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMark-VSC-01.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMark-WebServer-01.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMarkToken-Enc-01.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMarkToken-sig-01.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustSign-Enc-01.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustSign-Sig-01.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/verisign.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/versignc3.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/www.buergerkarte.at.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Light CA.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Medium CA.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Premium CA.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Strong CA.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-SignProjects.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-0120041213.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-01_CA.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-01_cACertificate1.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-01_cACertificate2.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-03.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-a-sign-uni.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-01_cACertificate1.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-01a.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-01b.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-03.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-trust-Qual-02.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/CA-root-1.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST Qualified Root CA 1 2008_PN.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST Qualified Root CA 2 2008_PN.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST Qualified Root CA 3 2008_PN.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST_Qualified_Root_CA_1_2006.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST_Qualified_Root_CA_2_2006.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST_Qualified_Root_CA_3_2007.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax Secure Global eBusiness CA-1.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax Secure eBusiness CA-1.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax Secure eBusiness CA-2.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax_Secure_Certificate_Authority_DER.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/GTE CyberTrust Global Root.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Halcom CA PO 2.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/StadtWienTrustcenterRoot.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/TC TrustCenter Class 3 CA.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/TCTrustCenter-Class2-CA.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Thawte Premium Server CA.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Thwate-ServerCA.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Verisign-SecureServerCertificationAuthority.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/a-cert-advanced.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/a-trust-nQual-0120041213.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/eSignature Advanced.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/eSignature Basic.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/eSignature SSL.crt create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/versignc3.cer create mode 100644 mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/www.buergerkarte.at.crt create mode 100644 mocca-1.2.11/BKUCommonGUI/pom.xml create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/META-INF/MANIFEST.MF create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/AbstractHelpListener.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUGUIFacade.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUGUIImpl.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUIcons.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/DefaultHelpListener.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HashDataTableModel.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpKeyListener.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpLinkFocusManager.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpMouseListener.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpViewer.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HyperlinkRenderer.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/ImagePanel.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/PinDocument.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SecureViewerDialog.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SwitchFocusFocusListener.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SwitchFocusListener.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/html/RestrictedHTMLEditorKit.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/html/RestrictedImageView.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/FontProvider.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/FontProviderException.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/MimeFilter.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/MimeTypes.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/SecureViewerSaveDialog.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/stal/impl/ByteArrayHashDataInput.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages.properties create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages_en.properties create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip128.png create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip16.png create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip24.png create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip32.png create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip48.png create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chiperling105.png create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/help.png create mode 100644 mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/help_focus.png create mode 100644 mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/BKUGUITest.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/BKUGUIWorker.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/DummyFontLoader.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/SecureViewerDialogTest.java create mode 100644 mocca-1.2.11/BKUCommonGUI/src/test/resources/commons-logging.properties create mode 100644 mocca-1.2.11/BKUCommonGUI/src/test/resources/log4j.properties create mode 100644 mocca-1.2.11/BKUFonts/.classpath create mode 100644 mocca-1.2.11/BKUFonts/.project create mode 100644 mocca-1.2.11/BKUFonts/.settings/org.eclipse.jdt.core.prefs create mode 100644 mocca-1.2.11/BKUFonts/.settings/org.eclipse.wst.common.component create mode 100644 mocca-1.2.11/BKUFonts/.settings/org.eclipse.wst.common.project.facet.core.xml create mode 100644 mocca-1.2.11/BKUFonts/.settings/org.maven.ide.eclipse.prefs create mode 100644 mocca-1.2.11/BKUFonts/pom.xml create mode 100644 mocca-1.2.11/BKUFonts/src/main/fonts/DejaVuLGCSans.ttf create mode 100644 mocca-1.2.11/BKUFonts/src/main/fonts/DejaVuLGCSansMono.ttf create mode 100644 mocca-1.2.11/BKUFonts/src/main/fonts/DejaVuLGCSerif.ttf create mode 100644 mocca-1.2.11/BKUFonts/src/main/fonts/LICENSE create mode 100644 mocca-1.2.11/BKUFonts/src/main/fonts/META-INF/services/at.gv.egiz.bku.gui.SecureFontProvider create mode 100644 mocca-1.2.11/BKUGuiExt/pom.xml create mode 100644 mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ActivationGUI.java create mode 100644 mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ActivationGUIFacade.java create mode 100644 mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/CardMgmtGUI.java create mode 100644 mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ComparePinDocument.java create mode 100644 mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ExtendedPinDocument.java create mode 100644 mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINManagementGUI.java create mode 100644 mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINManagementGUIFacade.java create mode 100644 mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINSpecRenderer.java create mode 100644 mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINStatusRenderer.java create mode 100644 mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINStatusTableModel.java create mode 100644 mocca-1.2.11/BKUGuiExt/src/main/resources/at/gv/egiz/bku/gui/ActivationMessages.properties create mode 100644 mocca-1.2.11/BKUGuiExt/src/main/resources/at/gv/egiz/bku/gui/ActivationMessages_en.properties create mode 100644 mocca-1.2.11/BKUGuiExt/src/test/java/at/gv/egiz/bku/gui/ActivationGuiTest.java create mode 100644 mocca-1.2.11/BKUGuiExt/src/test/java/at/gv/egiz/bku/gui/BKUGUIWorker.java create mode 100644 mocca-1.2.11/BKUGuiExt/src/test/java/at/gv/egiz/bku/gui/DummyFontLoader.java create mode 100644 mocca-1.2.11/BKUHelp/pom.xml create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/chip16.ico create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/cardnotsupported.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/cardnotsupported.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.locked.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.locked.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.notactivated.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.notactivated.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.cardterminal.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.cardterminal.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pcsc.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pcsc.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pin.timeout.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pin.timeout.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.ws.unreachable.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.ws.unreachable.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.activate.pin.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.cardpin.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.cardpin1.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.cardpin2.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.change.pin.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.hashdataviewer.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.hashdataviewer.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.install.cacert.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.install.cacert.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.activate.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.change.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-1.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-2.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-3.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-4.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.verify.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.retry.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.retry.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.signpin-1.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.signpin.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.signpin.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.unblock.pin.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.unsupported.mimetype.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.verify.pin.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/insertcard.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/insertcard.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/wait.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/wait.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/welcome.html create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/de/welcome.png create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/help.css create mode 100644 mocca-1.2.11/BKUHelp/src/main/webapp/help/index.html create mode 100644 mocca-1.2.11/BKULocal/pom.xml create mode 100644 mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/accesscontroller/SpringSecurityManager.java create mode 100644 mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/conf/SpringConfigurator.java create mode 100644 mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/gui/GUIProxy.java create mode 100644 mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/gui/LocalHelpListener.java create mode 100644 mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalBKUWorker.java create mode 100644 mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSTALFactory.java create mode 100644 mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSecureViewer.java create mode 100644 mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSignRequestHandler.java create mode 100644 mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/BKURequestHandler.java create mode 100644 mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/PINManagementServlet.java create mode 100644 mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/SpringBKUServlet.java create mode 100644 mocca-1.2.11/BKULocal/src/main/resources/at/gv/egiz/bku/local/conf/accessControlConfig.xml create mode 100644 mocca-1.2.11/BKULocal/src/main/resources/at/gv/egiz/bku/local/conf/defaultConf.properties create mode 100644 mocca-1.2.11/BKULocal/src/main/resources/commons-logging.properties create mode 100644 mocca-1.2.11/BKULocal/src/main/resources/log4j.properties create mode 100644 mocca-1.2.11/BKULocal/src/main/webapp/META-INF/MANIFEST.MF create mode 100644 mocca-1.2.11/BKULocal/src/main/webapp/META-INF/context.xml create mode 100644 mocca-1.2.11/BKULocal/src/main/webapp/WEB-INF/applicationContext.xml create mode 100644 mocca-1.2.11/BKULocal/src/main/webapp/WEB-INF/web.xml create mode 100644 mocca-1.2.11/BKULocal/src/main/webapp/errorresponse.css create mode 100644 mocca-1.2.11/BKULocal/src/main/webapp/img/chip16.ico create mode 100644 mocca-1.2.11/BKULocal/src/main/webapp/img/chip48.png create mode 100644 mocca-1.2.11/BKULocal/src/main/webapp/index.html create mode 100644 mocca-1.2.11/BKULocal/src/test/java/at/gv/egiz/bku/local/stal/TestSignRequest.java create mode 100644 mocca-1.2.11/BKULocal/src/test/resources/at/gv/egiz/bku/local/stal/sigInfo.xml create mode 100644 mocca-1.2.11/BKUOnline/catalog.xml create mode 100644 mocca-1.2.11/BKUOnline/nb-configuration.xml create mode 100644 mocca-1.2.11/BKUOnline/nbactions.xml create mode 100644 mocca-1.2.11/BKUOnline/pom.xml create mode 100644 mocca-1.2.11/BKUOnline/private/cache/retriever/catalog.xml create mode 100644 mocca-1.2.11/BKUOnline/private/cache/retriever/java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd create mode 100644 mocca-1.2.11/BKUOnline/private/cache/retriever/www.w3.org/2001/XMLSchema.xsd create mode 100644 mocca-1.2.11/BKUOnline/src/main/custom-binding/cardchannel-custom.xml create mode 100644 mocca-1.2.11/BKUOnline/src/main/custom-binding/stalservice-custom.xml create mode 100644 mocca-1.2.11/BKUOnline/src/main/custom-binding/staltypes-custom.xml create mode 100644 mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/accesscontroller/SpringSecurityManager.java create mode 100644 mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/conf/SpringConfigurator.java create mode 100644 mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/AppletDispatcher.java create mode 100644 mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/BKURequestHandler.java create mode 100644 mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/ResultServlet.java create mode 100644 mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/SessionTimeout.java create mode 100644 mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/ShutdownHandler.java create mode 100644 mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/SpringBKUServlet.java create mode 100644 mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/RequestBrokerSTALFactory.java create mode 100644 mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALRequestBroker.java create mode 100644 mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALRequestBrokerImpl.java create mode 100644 mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALServiceImpl.java create mode 100644 mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALXJAXBContextFactory.java create mode 100644 mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/TestSignatureData.java create mode 100644 mocca-1.2.11/BKUOnline/src/main/policy/50mocca.policy create mode 100644 mocca-1.2.11/BKUOnline/src/main/resources/at/gv/egiz/bku/online/conf/accessControlConfig.xml create mode 100644 mocca-1.2.11/BKUOnline/src/main/resources/at/gv/egiz/bku/online/conf/defaultConf.properties create mode 100644 mocca-1.2.11/BKUOnline/src/main/resources/commons-logging.properties create mode 100644 mocca-1.2.11/BKUOnline/src/main/resources/log4j.properties create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/META-INF/MANIFEST.MF create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/META-INF/context.xml create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/PINManagement.jsp create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/SLRequestForm.html create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/applicationContext.xml create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/mocca-conf.xml create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/sun-jaxws.xml create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/web.xml create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/wsdl/stal.wsdl create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/wsdl/stal.xsd create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/applet.jsp create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/css/applet.css create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/css/appletAlternative.css create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/css/main.css create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/errorresponse.css create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/expired.html create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/img/chip16.ico create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/img/chip32.png create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/img/webstart.png create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/index.html create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/js/deployJava.js create mode 100644 mocca-1.2.11/BKUOnline/src/main/webapp/js/deployJava_orig.js create mode 100644 mocca-1.2.11/BKUOnline/src/main/wsdl/CardChannel.xsd create mode 100644 mocca-1.2.11/BKUOnline/src/main/wsdl/stal-service.wsdl create mode 100644 mocca-1.2.11/BKUOnline/src/main/wsdl/stal-service.xsd create mode 100644 mocca-1.2.11/BKUOnline/src/test/java/at/gv/egiz/bku/online/conf/SSLConfigTest.java create mode 100644 mocca-1.2.11/BKUOnline/src/test/java/at/gv/egiz/stal/service/STALRequestBrokerTest.java create mode 100644 mocca-1.2.11/BKUOnline/src/test/resources/appletTest.html create mode 100644 mocca-1.2.11/BKUOnline/src/test/resources/applicationContext.xml create mode 100644 mocca-1.2.11/BKUOnline/src/test/resources/commons-logging.properties create mode 100644 mocca-1.2.11/BKUOnline/src/test/resources/log4j.properties create mode 100644 mocca-1.2.11/BKUViewer/pom.xml create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/SLXHTMLValidator.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CSSValidatorSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBackgroundColorSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBackgroundSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderBottomColorSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderColorSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderLeftColorSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderRightColorSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderTopColorSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssColorSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssFontSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssLetterSpacingSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginBottomSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginLeftSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginRightSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginTopSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingBottomSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingLeftSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingRightSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingTopSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssTextDecorationSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssWordSpacingSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/SLXHTMLInvalidParamException.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/SLXHTMLStyle.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/TableLayoutSLXHTML.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/text/TextValidator.java create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/META-INF/services/at.gv.egiz.bku.viewer.Validator create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml-model-1.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml-modules-1.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-attribs-1.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkphras-1.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkpres-1.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkstruct-1.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-datatypes-1.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-framework-1.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-image-1.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlphras-1.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlpres-1.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlstruct-1.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-list-1.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-pres-1.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-struct-1.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-style-1.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-table-1.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-text-1.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xml.xsd create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/org/w3c/css/properties/Config.properties create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/org/w3c/css/properties/ProfilesProperties.properties create mode 100644 mocca-1.2.11/BKUViewer/src/main/resources/org/w3c/css/properties/SLXHTMLProperties.properties create mode 100644 mocca-1.2.11/BKUViewer/src/test/java/at/gv/egiz/bku/slxhtml/ValidatorTest.java create mode 100644 mocca-1.2.11/BKUViewer/src/test/java/at/gv/egiz/bku/slxhtml/css/CssValidatorTest.java create mode 100644 mocca-1.2.11/BKUViewer/src/test/java/at/gv/egiz/bku/text/TestTextValidator.java create mode 100644 mocca-1.2.11/BKUViewer/src/test/resources/at/gv/egiz/bku/slxhtml/test.xhtml create mode 100644 mocca-1.2.11/BKUViewer/src/test/resources/at/gv/egiz/bku/slxhtml/zugang.xhtml create mode 100644 mocca-1.2.11/BKUViewer/src/test/resources/commons-logging.properties create mode 100644 mocca-1.2.11/BKUViewer/src/test/resources/log4j.properties create mode 100644 mocca-1.2.11/BKUWebStart/pom.xml create mode 100644 mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Configurator.java create mode 100644 mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Container.java create mode 100644 mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Launcher.java create mode 100644 mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/LogSecurityManager.java create mode 100644 mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/TLSServerCA.java create mode 100644 mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/AboutDialog.form create mode 100644 mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/AboutDialog.java create mode 100644 mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/BKUControllerInterface.java create mode 100644 mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/PINManagementInvoker.java create mode 100644 mocca-1.2.11/BKUWebStart/src/main/jnlp/keystore.ks create mode 100644 mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip128.png create mode 100644 mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip16.png create mode 100644 mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip24.png create mode 100644 mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip32.png create mode 100644 mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip48.png create mode 100644 mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/splash.png create mode 100644 mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/version.xml create mode 100644 mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/player.jnlp create mode 100644 mocca-1.2.11/BKUWebStart/src/main/jnlp/template-local.xml create mode 100644 mocca-1.2.11/BKUWebStart/src/main/jnlp/template-unstable.xml create mode 100644 mocca-1.2.11/BKUWebStart/src/main/jnlp/template.xml create mode 100644 mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip16.png create mode 100644 mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip24.png create mode 100644 mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip32.png create mode 100644 mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip48.png create mode 100644 mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chiperling96.png create mode 100644 mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/conf/conf.zip create mode 100644 mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/messages.properties create mode 100644 mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/splash.png create mode 100644 mocca-1.2.11/BKUWebStart/src/main/resources/log4j.properties create mode 100644 mocca-1.2.11/BKUWebStart/src/test/java/at/gv/egiz/bku/webstart/ConfiguratorTest.java create mode 100644 mocca-1.2.11/BKUWebStart/src/test/resources/commons-logging.properties create mode 100644 mocca-1.2.11/BKUWebStart/src/test/resources/log4j.properties create mode 100644 mocca-1.2.11/BKUWebStartPackage/nbactions.xml create mode 100644 mocca-1.2.11/BKUWebStartPackage/pom.xml create mode 100644 mocca-1.2.11/BKUWebStartPackage/src/main/assemblies/zip-webstart.xml create mode 100644 mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/keystore.ks create mode 100644 mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip128.png create mode 100644 mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip16.png create mode 100644 mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip24.png create mode 100644 mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip32.png create mode 100644 mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip48.png create mode 100644 mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/splash.png create mode 100644 mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/version.xml create mode 100644 mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/player.jnlp create mode 100644 mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/template-local.xml create mode 100644 mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/template.xml create mode 100644 mocca-1.2.11/LICENSE.txt create mode 100644 mocca-1.2.11/NOTICE.txt create mode 100644 mocca-1.2.11/STAL/catalog.xml create mode 100644 mocca-1.2.11/STAL/pom.xml create mode 100644 mocca-1.2.11/STAL/private/cache/retriever/catalog.xml create mode 100644 mocca-1.2.11/STAL/private/cache/retriever/java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd create mode 100644 mocca-1.2.11/STAL/private/cache/retriever/www.w3.org/2001/XMLSchema.xsd create mode 100644 mocca-1.2.11/STAL/src/main/java/META-INF/MANIFEST.MF create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/ErrorResponse.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/HashDataInput.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/InfoboxReadRequest.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/InfoboxReadResponse.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/QuitRequest.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STAL.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STALFactory.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STALRequest.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STALResponse.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/SignRequest.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/SignResponse.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/StatusRequest.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/StatusResponse.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/CanonicalizationMethodType.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/DigestMethodType.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/ObjectFactory.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/ReferenceType.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/SignatureMethodType.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/SignedInfoType.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/TransformsType.java create mode 100644 mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/package-info.java create mode 100644 mocca-1.2.11/STALExt/pom.xml create mode 100644 mocca-1.2.11/STALExt/src/main/java/META-INF/MANIFEST.MF create mode 100644 mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/APDUScriptRequest.java create mode 100644 mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/APDUScriptResponse.java create mode 100644 mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/PINManagementRequest.java create mode 100644 mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/PINManagementResponse.java create mode 100644 mocca-1.2.11/STALService/META-INF/MANIFEST.MF create mode 100644 mocca-1.2.11/STALService/pom.xml create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/GetHashDataInputFault.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/STALPortType.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/STALService.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/translator/STALTranslator.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/translator/TranslationException.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/ErrorResponseType.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetHashDataInputFaultType.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetHashDataInputResponseType.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetHashDataInputType.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetNextRequestResponseType.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetNextRequestType.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/InfoboxReadRequestType.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/InfoboxReadResponseType.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/ObjectFactory.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/QuitRequestType.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/RequestType.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/ResponseType.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/SignRequestType.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/SignResponseType.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/StatusRequestType.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/StatusResponseType.java create mode 100644 mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/package-info.java create mode 100644 mocca-1.2.11/STALService/src/test/java/at/gv/egiz/stal/service/translator/STALTranslatorTest.java create mode 100644 mocca-1.2.11/STALXService/pom.xml create mode 100644 mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ATRType.java create mode 100644 mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/AttributeList.java create mode 100644 mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/AttributeType.java create mode 100644 mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/CommandAPDUType.java create mode 100644 mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ObjectFactory.java create mode 100644 mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ResetType.java create mode 100644 mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ResponseAPDUType.java create mode 100644 mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ResponseType.java create mode 100644 mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ScriptType.java create mode 100644 mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/VerifyAPDUType.java create mode 100644 mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/package-info.java create mode 100644 mocca-1.2.11/STALXService/src/main/java/at/gv/egiz/stalx/service/STALPortType.java create mode 100644 mocca-1.2.11/STALXService/src/main/java/at/gv/egiz/stalx/service/STALService.java create mode 100644 mocca-1.2.11/STALXService/src/main/java/at/gv/egiz/stalx/service/translator/STALXTranslationHandler.java create mode 100644 mocca-1.2.11/STALXService/src/main/resources/wsdl/CardChannel.xsd create mode 100644 mocca-1.2.11/STALXService/src/main/resources/wsdl/stal.xsd create mode 100644 mocca-1.2.11/STALXService/src/main/resources/wsdl/stalx.wsdl create mode 100644 mocca-1.2.11/STALXService/src/test/java/at/gv/egiz/stalx/service/ClientJAXBContextFactory.java create mode 100644 mocca-1.2.11/STALXService/src/test/java/at/gv/egiz/stalx/service/STALServiceTest.java create mode 100644 mocca-1.2.11/addResources/eclipseFormatter.xml create mode 100644 mocca-1.2.11/bkucommon/pom.xml create mode 100644 mocca-1.2.11/bkucommon/private/cache/retriever/www.w3.org/2000/09/xmldsig create mode 100644 mocca-1.2.11/bkucommon/src/main/java/META-INF/MANIFEST.MF create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/AccessControl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Action.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Chain.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Chains.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Command.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/ObjectFactory.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Param.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Rule.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Rules.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessChecker.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessCheckerContext.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessControllerFactory.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/Action.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AuthenticationClass.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AuthenticationClassifier.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/ChainChecker.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/ChainResult.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/CommandParamChecker.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/InfoboxParamChecker.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/RuleChecker.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/RuleResult.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/SecurityManagerFacade.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/UserAction.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/AbstractBindingProcessor.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessor.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManager.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManagerImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnection.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionSPI.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlResponse.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/ExpiryRemover.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FixedFormParameters.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameter.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameterImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameterStore.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/HTTPBindingProcessor.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/HttpUtil.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/Id.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/IdFactory.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/IdImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/InputDecoder.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/InputDecoderFactory.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/MultiPartFormDataInputDecoder.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/ProcessingContext.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/RemovalStrategy.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/SLCommandInvokerImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/XWWWFormUrlInputDecoder.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/XWWWFormUrlInputIterator.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/InputStreamPartSource.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/SLResultPart.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/CertValidator.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/CertValidatorImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/Configuration.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/Configurator.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/IAIKCommonsLog.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/IAIKCommonsLogFactory.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/AccessControlInvocation.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/CreateXMLSignatureCommand.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/CreateXMLSignatureResult.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/ErrorResult.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/GetStatusCommand.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/GetStatusResult.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxReadCommand.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxReadResult.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxUpdateCommand.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxUpdateResult.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InvocationStrategy.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/NullOperationCommand.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/NullOperationResult.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommand.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandContext.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandFactory.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandInvoker.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLMarshallerFactory.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLResult.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLSourceContext.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLTargetContext.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractAssocArrayInfobox.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractBinaryFileInfobox.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractInfoboxCommandImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractInfoboxImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AssocArrayInfobox.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/BinaryFileInfobox.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CardChannelInfoboxImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CertificatesInfoboxImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureCommandImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureResultImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/DataObjectHashDataInput.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/ErrorResultImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/GetStatusCommandImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/GetStatusResultImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/IdentityLinkInfoboxImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/Infobox.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxFactory.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadCommandImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadResultFileImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadResultImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxUpdateCommandImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxUpdateResultImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/NullOperationCommandImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/NullOperationResultImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SLCommandImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SLResultImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/STALHelper.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SVPersonendatenInfoboxImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/AlgorithmMethodFactory.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/AlgorithmMethodFactoryImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/ByteArrayDereferencer.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/DataObject.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/IdValueFactory.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/IdValueFactoryImpl.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/LocRefDereferencer.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALPrivateKey.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALProvider.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignature.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignatureException.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/Signature.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureContext.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureLocation.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SimpleDOMErrorHandler.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/URIDereferncerAdapter.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTReference.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTTransforms.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLBindingException.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLCanceledException.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLCommandException.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLException.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLExceptionMessages.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLRequestException.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLRuntimeException.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLVersionException.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLViewerException.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ResourceFontLoader.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidationException.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/Validator.java create mode 100644 mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidatorFactory.java create mode 100644 mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/accesscontrol/config/AccessControl.xsd create mode 100644 mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/Core-1.2.xsd create mode 100644 mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/Core.20020225.xsd create mode 100644 mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/Core.20020831.xsd create mode 100644 mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/xml.xsd create mode 100644 mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/xmldsig-core-schema.xsd create mode 100644 mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/xmldsig-transforms.xsd create mode 100644 mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slexceptions/SLExceptionMessages.properties create mode 100644 mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slexceptions/SLExceptionMessages_en.properties create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/accesscontroller/AuthenticationClassifierTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/accesscontroller/ConfigTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/accesscontroller/RuleCheckerTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/BindingProcessorManagerTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/DataUrlConnectionTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/DummyStalFactory.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/EmptyMultipartSLRequestTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/ExpiryRemoverTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/HttpBindingProcessorTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/IdFactoryTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/InputDecoderFactoryTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/MultiTestDataUrlConnection.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/MultipartSLRequestTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/NullOperationTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/RequestFactory.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/SSLDataUrlConnectionTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/TestDataUrlConnection.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/XWWWFormUrlInputIteratorTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/conf/CertValidatorTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/conf/DummyConfiguration.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/SLCommandFactoryTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureComandImplTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/ErrorResultImplTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadComandImplTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/NullOperationResultImplTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/SVPersonendatenInfoboxImplTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureTest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/stal/dummy/DummySTAL.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/MOASPClient.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/SLClient.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/SLException.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/TestCreateAndVerifySignature.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/AllSignatoriesType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/AnyChildrenType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CMSContentBaseType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CMSDataObjectOptionalMetaType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CanonicalizationMethodType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CheckResultType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentBaseType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentExLocRefBaseType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentOptionalRefType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentRequiredRefType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateSignatureEnvironmentProfile.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateSignatureLocationType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateTransformsInfoProfile.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateXMLSignatureRequest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateXMLSignatureRequestType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateXMLSignatureResponseType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/DSAKeyValueType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/DataObjectInfoType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/DigestMethodType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ErrorResponseType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/FinalDataMetaInfoType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/InputDataType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/KeyInfoType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/KeyStorageType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/KeyValueType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/MOAFault.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ManifestRefsCheckResultInfoType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ManifestRefsCheckResultType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ManifestType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/MetaInfoType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ObjectFactory.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ObjectType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/PGPDataType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/PublicAuthorityType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/RSAKeyValueType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ReferenceType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ReferencesCheckResultInfoType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ReferencesCheckResultType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/RetrievalMethodType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SPKIDataType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureMethodType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignaturePropertiesType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignaturePropertyType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureValueType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureVerificationPortType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureVerificationService.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignedInfoType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformParameterType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformsInfoType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformsType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyCMSSignatureRequest.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyCMSSignatureRequestType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyCMSSignatureResponseType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyTransformsDataType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyTransformsInfoProfile.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyXMLSignatureRequestType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyXMLSignatureResponseType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/X509DataType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/X509IssuerSerialType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/XMLContentType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/XMLDataObjectAssociationType.java create mode 100644 mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/package-info.java create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/MOA-SPSS-1.3.wsdl create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/MOA-SPSS-1.3.xsd create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/accesscontroller/AccessControlConfig.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/accesscontroller/SimpleChainTest.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/accesscontroller/www.a-trust.at.crt create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Multipart.txt.bin create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/MultipartEmpty.txt create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/MultipartFromTutorial.txt create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/NOPMultipartDataUrl.txt create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Nulloperation.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/NulloperationRequest.txt.bin create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Statemachine1.txt create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Stylesheet.txt create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/XWWWFormUrlEncoded1.txt create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/XWWWFormUrlEncoded2.txt create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/stylesheet.xslt create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-Qual-01a.cer create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-Qual-02a.cer create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-Qual-03a.cer create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-nQual-01a.cer create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-nQual-03.cer create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-Qual-01a.cer create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-Qual-02a.cer create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-Qual-03a.cer create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-nQual-01a.cer create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-nQual-03.cer create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-SSL-03.cer create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-03.cer create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-light-01a.cer create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-light-02a.cer create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-light-03.cer create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-medium-01a.cer create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-medium-02a.cer create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/testCerts/www.a-trust.at.der create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/createxmlsignaturerequest/CreateXMLSignatureRequest.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/Cert.p12 create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObject1.bin create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObject1.txt create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObject1.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Base64Content_1.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Detached_1.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Detached_Base64Content.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Detached_LocRefContent.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_LocRefContent_1.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_LocRefContent_2.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Reference_1.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_XMLContent_1.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_XMLContent_2.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/Document.dtd create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureEnvironment1.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Base64_1.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Base64_2.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Base64_3.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Reference_1.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_XMLContent_1.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/TransformsInfo_1.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/TransformsInfo_2.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/XMLDocument.xsd create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.Invalid-1.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.Invalid-2.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/testApplicationContext.xml create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/commons-logging.properties create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/log4j.properties create mode 100644 mocca-1.2.11/bkucommon/src/test/resources/moaspss/CreateXMLSignatureRequest.xml create mode 100644 mocca-1.2.11/htdocs/index.php create mode 100644 mocca-1.2.11/htdocs/mocca-t_s.png create mode 100644 mocca-1.2.11/htdocs/mocca_s.png create mode 100644 mocca-1.2.11/nbactions.xml create mode 100644 mocca-1.2.11/pom.xml create mode 100644 mocca-1.2.11/smcc/keystore.ks create mode 100644 mocca-1.2.11/smcc/pom.xml create mode 100644 mocca-1.2.11/smcc/src/main/java/META-INF/MANIFEST.MF create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/AbstractSignatureCard.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/BELPICCard.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/CancelledException.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/CardNotSupportedException.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ChangeReferenceDataAPDUSpec.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ExclSignatureCardProxy.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/Exclusive.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/FileNotFoundException.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ITCard.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/LockedException.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/LogCardChannel.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/NewReferenceDataAPDUSpec.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/NotActivatedException.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINConfirmationException.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINFormatException.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINMgmtSignatureCard.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINOperationAbortedException.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINSpec.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ResetRetryCounterAPDUSpec.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/STARCOSCard.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SWCard.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SecurityStatusNotSatisfiedException.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SignatureCard.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SignatureCardException.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SignatureCardFactory.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/TimeoutException.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/VerificationFailedException.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/VerifyAPDUSpec.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/conf/SMCCConfiguration.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/ModifyPINGUI.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/ModifyPINProvider.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/PINGUI.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/PINProvider.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/CardReader.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/DefaultCardReader.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/PinpadCardReader.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/ReaderFactory.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/ISO7816Utils.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/SMCCHelper.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/SmartCardIO.java create mode 100644 mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/TransparentFileInputStream.java create mode 100644 mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/ACOSCard.properties create mode 100644 mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/BELPICCard.properties create mode 100644 mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/ITCard.properties create mode 100644 mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/STARCOSCard.properties create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/AbstractAppl.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardAppl.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardChannelEmul.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardEmul.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardTerminalEmul.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardTest.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardTestSuite.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/File.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/PIN.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/TransparentFileInputStreamTest.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03ApplDEC.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03ApplSIG.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03CardChannelEmul.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03CardEmul.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03CardTest.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04ApplDEC.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04ApplSIG.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04CardChannelEmul.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04CardEmul.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04CardTest.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSAppl.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSApplDEC.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSApplSIG.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardChannelEmul.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardEmul.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTestSuite.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/CancelChangePINProvider.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/CancelPINProvider.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/ChangePINProvider.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/DummyChangePINGUI.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/DummyPINGUI.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/InterruptPINProvider.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/InvalidChangePINProvider.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/InvalidPINProvider.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/SMCCTestPINProvider.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSAppl.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSApplGewoehnlicheSignatur.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSApplInfobox.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSApplSichereSignatur.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSCardChannelEmul.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSCardEmul.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSCardTest.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSG3CardChannelEmul.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSG3CardEmul.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSG3CardTest.java create mode 100644 mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/util/ISO7816UtilsTest.java create mode 100644 mocca-1.2.11/smcc/src/test/resources/IdentityLink.bin create mode 100644 mocca-1.2.11/smcc/src/test/resources/log4j.properties create mode 100644 mocca-1.2.11/smccSTAL/pom.xml create mode 100644 mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/AbstractPINProvider.java create mode 100644 mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/SignPINGUI.java create mode 100644 mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/SignPINProvider.java create mode 100644 mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/VerifyPINGUI.java create mode 100644 mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/VerifyPINProvider.java create mode 100644 mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/AbstractBKUWorker.java create mode 100644 mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/AbstractRequestHandler.java create mode 100644 mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/AbstractSMCCSTAL.java create mode 100644 mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/DomainIdConverter.java create mode 100644 mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/HashDataInputDisplay.java create mode 100644 mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/InfoBoxReadRequestHandler.java create mode 100644 mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/SMCCSTALRequestHandler.java create mode 100644 mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/STALMessageConsumer.java create mode 100644 mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/SecureViewer.java create mode 100644 mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/SignRequestHandler.java create mode 100644 mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/StatusRequestHandler.java create mode 100644 mocca-1.2.11/smccSTAL/src/test/java/at/gv/egiz/smcc/ASN1Test.java create mode 100644 mocca-1.2.11/smccSTAL/src/test/java/at/gv/egiz/smcc/AbstractSMCCSTALTest.java create mode 100644 mocca-1.2.11/smccSTAL/src/test/resources/log4j.properties create mode 100644 mocca-1.2.11/smccSTALExt/pom.xml create mode 100644 mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/pin/gui/ManagementPINGUI.java create mode 100644 mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/pin/gui/ManagementPINProvider.java create mode 100644 mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/CardMgmtRequestHandler.java create mode 100644 mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/GetPINStatusException.java create mode 100644 mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/PINManagementRequestHandler.java create mode 100644 mocca-1.2.11/src/main/site/apt/index.apt create mode 100644 mocca-1.2.11/src/main/site/apt/notes.apt create mode 100644 mocca-1.2.11/src/main/site/site.xml create mode 100644 mocca-1.2.11/utils/pom.xml create mode 100644 mocca-1.2.11/utils/src/main/java/META-INF/MANIFEST.MF create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ATRType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/AttributeList.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/AttributeType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/CommandAPDUType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ObjectFactory.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ResetType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ResponseAPDUType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ScriptType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/VerifyAPDUType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/package-info.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/personenbindung/_20020506_/CompressedIdentityLinkType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/personenbindung/_20020506_/ObjectFactory.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/personenbindung/_20020506_/package-info.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AccessAuthorizationType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AllSignatoriesType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AnyChildrenType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AnyMixedChildrenType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AuthenticationClassType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64ContentType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64OptRefContentType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLContentType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLLocRefContentType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLLocRefOptRefContentType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLLocRefReqRefContentType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLOptRefContentType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/BindingType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSDataObjectOptionalMetaType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSDataObjectRequiredMetaType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSEncryptedContentType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSRecipientPublicKeyType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSToBeEncryptedType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CheckResultType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateCMSSignatureRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateCMSSignatureResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashInfoRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashInfoResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateXMLSignatureRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateXMLSignatureResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DataObjectAssociationType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DataObjectInfoType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptCMSRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptCMSResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptXMLRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptXMLResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptCMSRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptCMSResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptXMLRequest.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptXMLRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptXMLResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptedDataType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptionInfoType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ErrorResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetPropertiesRequest.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetPropertiesRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetPropertiesResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetStatusRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetStatusResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/HashDataType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxAssocArrayPairType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxAvailableRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxAvailableResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxCreateRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxCreateResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxDeleteRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxDeleteResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadDataAssocArrayType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadParamsAssocArrayType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadParamsBinaryFileType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxTypeType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxUpdateParamsAssocArrayType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxUpdateRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxUpdateResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ManifestRefsCheckResultInfoType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ManifestRefsCheckResultType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/MetaInfoType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/NullOperationRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/NullOperationResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ObjectFactory.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/QualifiedBoxIdentifierType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ReferencesCheckResultInfoType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ReferencesCheckResultType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/RequesterIDType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ReturnResultType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/SignatureInfoCreationType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/SignatureInfoVerificationType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/SignatureLocationType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ToBeEncryptedType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/TokenStatusType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/TransformsInfoType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/UserConfirmationSimpleType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/UserConfirmationType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerificationResultType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyCMSSignatureRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyCMSSignatureResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyHashInfoRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyHashRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyHashResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyXMLSignatureRequestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyXMLSignatureResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLContentType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLRecipientPublicKeyType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLToBeEncryptedNewContentType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLToBeEncryptedNewType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/package-info.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020225_/ErrorResponseType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020225_/ObjectFactory.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020225_/package-info.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020831_/ObjectFactory.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/AbstractAddressType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/AbstractPersonType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/CorporateBodyType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/DefinedAlternativeNameTypeType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/DefinedRelationType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/IdentificationType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/InternetAddressType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/MaritalStatusType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/MobileTelcomNumberType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/ObjectFactory.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PersonDataType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PersonNameType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PhysicalPersonType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PostalAddressType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/SexType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TelcomNumberListType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TelcomNumberType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TelephoneAddressType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TypedPostalAddressType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/package-info.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/DebugOutputStream.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/DebugReader.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/DebugWriter.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/HexDump.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/NullOutputStream.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/StreamUtil.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/URLEncodingInputStream.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/URLEncodingOutputStream.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/URLEncodingWriter.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/binding/Protocol.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/FormDataURLSupplier.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/HTTPURLProtocolHandlerImpl.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/SimpleFormDataContextImpl.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/StreamData.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URIResolverAdapter.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URLDereferencer.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URLDereferencerContext.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URLProtocolHandler.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/dom/DOMUtils.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/CompressedIdentityLinkFactory.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/IdentityLinkFactory.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/IdentityLinkTransformer.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/CitizenPublicKey.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/IdentityLink.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/PersonData.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/PhysicalPersonData.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/marshal/MarshallerFactory.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/marshal/NamespacePrefixMapperImpl.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/org/apache/tomcat/util/http/AcceptLanguage.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/NamespaceContextCallback.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/RedirectCallback.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/RedirectEventFilter.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/RedirectUnmarshallerListener.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/impl/SignatureLocationType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/impl/TransformsInfoType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/impl/XMLContentType.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/validation/ReportingValidationEventHandler.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/xades/QualifyingPropertiesException.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/xades/QualifyingPropertiesFactory.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/xmldsig/KeyTypeNotSupportedException.java create mode 100644 mocca-1.2.11/utils/src/main/java/at/gv/egiz/xmldsig/KeyValueFactory.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ActionType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AdviceType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AnyType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AssertionType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AttributeDesignatorType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AttributeStatementType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AttributeType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AudienceRestrictionConditionType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AuthenticationStatementType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AuthorityBindingType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AuthorizationDecisionStatementType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ConditionAbstractType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ConditionsType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/DecisionType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/EvidenceType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/NameIdentifierType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ObjectFactory.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/StatementAbstractType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectConfirmationType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectLocalityType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectStatementAbstractType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectType.java create mode 100644 mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/package-info.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/AnyType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLIdentifierType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLRefType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLRefsType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLValuesType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertIDListType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertIDType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertificateValuesType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertifiedRolesListType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/ClaimedRolesListType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CommitmentTypeIndicationType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CommitmentTypeQualifiersListType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CompleteCertificateRefsType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CompleteRevocationRefsType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CounterSignatureType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/DataObjectFormatType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/DigestAlgAndValueType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/DocumentationReferencesType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/EncapsulatedPKIDataType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/HashDataInfoType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/IdentifierType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/IntegerListType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/NoticeReferenceType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPIdentifierType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPRefType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPRefsType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPValuesType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/ObjectFactory.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/ObjectIdentifierType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OtherCertStatusRefsType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OtherCertStatusValuesType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/QualifierType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/QualifyingPropertiesReferenceType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/QualifyingPropertiesType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/RevocationValuesType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SPUserNoticeType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SigPolicyQualifiersListType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignaturePolicyIdType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignaturePolicyIdentifierType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignatureProductionPlaceType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignedDataObjectPropertiesType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignedPropertiesType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignedSignaturePropertiesType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignerRoleType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/TimeStampType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/UnsignedDataObjectPropertiesType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/UnsignedPropertiesType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/UnsignedSignaturePropertiesType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/package-info.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/CanonicalizationMethodType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/DSAKeyValueType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/DigestMethodType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/KeyInfoType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/KeyValueType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ManifestType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ObjectFactory.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ObjectType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/PGPDataType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/RSAKeyValueType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ReferenceType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/RetrievalMethodType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SPKIDataType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignatureMethodType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignaturePropertiesType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignaturePropertyType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignatureType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignatureValueType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignedInfoType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/TransformType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/TransformsType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/X509DataType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/X509IssuerSerialType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/package-info.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/BasePointParamsType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/CharTwoFieldElemType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/CharTwoFieldParamsType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/CurveParamsType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/DomainParamsType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ECDSAKeyValueType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ECPointType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ExplicitParamsType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/FieldElemType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/FieldParamsType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ObjectFactory.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/OddCharExtensionFieldElemType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/OddCharExtensionFieldParamsType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/PnBFieldParamsType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/PrimeFieldElemType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/PrimeFieldParamsType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/TnBFieldParamsType.java create mode 100644 mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/package-info.java create mode 100644 mocca-1.2.11/utils/src/test/cardchannel/marshalled.xml create mode 100644 mocca-1.2.11/utils/src/test/cardchannel/script.xml create mode 100644 mocca-1.2.11/utils/src/test/java/at/gv/egiz/bku/utils/HexDumpTest.java create mode 100644 mocca-1.2.11/utils/src/test/java/at/gv/egiz/bku/utils/URLEncodingOutputStreamTest.java create mode 100644 mocca-1.2.11/utils/src/test/java/at/gv/egiz/idlink/CompressIdentityLink.java create mode 100644 mocca-1.2.11/utils/src/test/java/at/gv/egiz/idlink/IdentityLink.java create mode 100644 mocca-1.2.11/utils/src/test/java/at/gv/egiz/slbinding/RedirectTest.java create mode 100644 mocca-1.2.11/utils/src/test/java/at/gv/egiz/urldereferencer/FormDataTest.java create mode 100644 mocca-1.2.11/utils/src/test/java/cardchannel/UnmarshalTest.java create mode 100644 mocca-1.2.11/utils/src/test/java/saml/KeyValueAttributeTypeTest.java create mode 100644 mocca-1.2.11/utils/src/test/requests/CreateCMSSignatureRequest01.xml create mode 100644 mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest01.xml create mode 100644 mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest01_bound.xml create mode 100644 mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest01_redirect.xml create mode 100644 mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest02.xml create mode 100644 mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest02.xml_bound.xml create mode 100644 mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest02.xml_redirect.txt create mode 100644 mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest03.xml create mode 100644 mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest03.xml_bound.xml create mode 100644 mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest03.xml_redirect.txt create mode 100644 mocca-1.2.11/utils/src/test/resources/BigRequest.xml create mode 100644 mocca-1.2.11/utils/src/test/resources/at/gv/egiz/idlink/IdentityLinkTest.p12 create mode 100644 mocca-1.2.11/utils/src/test/resources/at/gv/egiz/idlink/certified.cer create mode 100644 mocca-1.2.11/utils/src/test/resources/at/gv/egiz/idlink/secure.cer create mode 100644 mocca-1.2.11/utils/src/test/resources/commons-logging.properties create mode 100644 mocca-1.2.11/utils/src/test/resources/log4j.properties diff --git a/mocca-1.2.11/BKUApplet/keystore.ks b/mocca-1.2.11/BKUApplet/keystore.ks new file mode 100644 index 00000000..824c3a40 Binary files /dev/null and b/mocca-1.2.11/BKUApplet/keystore.ks differ diff --git a/mocca-1.2.11/BKUApplet/pom.xml b/mocca-1.2.11/BKUApplet/pom.xml new file mode 100644 index 00000000..35707336 --- /dev/null +++ b/mocca-1.2.11/BKUApplet/pom.xml @@ -0,0 +1,144 @@ + + + bku + at.gv.egiz + 1.2.11 + + 4.0.0 + at.gv.egiz + BKUApplet + BKU Applet + 1.2.11 + + + + maven-dependency-plugin + + + unpack + + unpack-dependencies + + + at.gv.egiz + + true + ${project.build.outputDirectory} + META-INF\/ + + + + + copy_testapplet + + copy-dependencies + + + ${project.build.directory}/test-classes + at.gv.egiz,commons-logging,iaik + commons-logging,iaik_jce_me4se + true + + + + + + org.codehaus.mojo + maven-buildnumber-plugin + + + validate + + create + + + + + false + false + + + + maven-jar-plugin + org.apache.maven.plugins + + + + sign + + + + + + false + false + + false + true + + + ${project.version}-r${buildNumber} + + + test-applet signer + ./keystore.ks + + storepass + keypass + true + + + + + + + pkcs11-sign + + + + maven-jar-plugin + org.apache.maven.plugins + 2.2-mocca + + NONE + PKCS11 + iaik.pkcs.pkcs11.provider.IAIKPkcs11 + a-sit + ${pkcs11-pass} + + + + + + + + + at.gv.egiz + smcc + 1.2.11 + + + at.gv.egiz + STAL + 1.2.11 + + + at.gv.egiz + STALService + 1.2.11 + + + at.gv.egiz + smccSTAL + 1.2.11 + + + at.gv.egiz + BKUCommonGUI + 1.2.11 + + + \ No newline at end of file diff --git a/mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/AppletBKUWorker.java b/mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/AppletBKUWorker.java new file mode 100644 index 00000000..d5f8dd69 --- /dev/null +++ b/mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/AppletBKUWorker.java @@ -0,0 +1,224 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.online.applet; + +import at.gv.egiz.bku.smccstal.AbstractBKUWorker; +import at.gv.egiz.bku.gui.BKUGUIFacade; +import at.gv.egiz.bku.smccstal.SignRequestHandler; +import at.gv.egiz.stal.STALRequest; +import at.gv.egiz.stal.STALResponse; +import at.gv.egiz.stal.SignRequest; +import at.gv.egiz.stal.service.STALPortType; +import at.gv.egiz.stal.service.translator.STALTranslator; +import at.gv.egiz.stal.service.translator.TranslationException; +import at.gv.egiz.stal.service.types.ErrorResponseType; +import at.gv.egiz.stal.service.types.GetNextRequestResponseType; +import at.gv.egiz.stal.service.types.GetNextRequestType; +import at.gv.egiz.stal.service.types.ObjectFactory; +import at.gv.egiz.stal.service.types.RequestType; +import at.gv.egiz.stal.service.types.ResponseType; +import java.net.MalformedURLException; +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.JAXBElement; +import javax.xml.ws.WebServiceException; + +/** + * + * @author Clemens Orthacker + */ +public class AppletBKUWorker extends AbstractBKUWorker implements Runnable { + + protected BKUApplet applet; + protected String sessionId; + + private ObjectFactory stalObjFactory = new ObjectFactory(); + + public AppletBKUWorker(BKUApplet applet, BKUGUIFacade gui) { + super(gui); + this.applet = applet; + + sessionId = applet.getParameter(BKUApplet.SESSION_ID); + if (sessionId == null) { + sessionId = "TestSession"; + log.warn("using dummy sessionId " + sessionId); + } + } + + @Override + public void run() { + gui.showMessageDialog(BKUGUIFacade.TITLE_WELCOME, + BKUGUIFacade.MESSAGE_WELCOME); + + try { + STALPortType stalPort = applet.getSTALPort(); + STALTranslator stalTranslator = applet.getSTALTranslator(); + + AppletSecureViewer secureViewer = + new AppletSecureViewer(gui, stalPort, sessionId); + addRequestHandler(SignRequest.class, + new SignRequestHandler(secureViewer)); + + GetNextRequestResponseType nextRequestResp = stalPort.connect(sessionId); + + do { + List> requests; + List> responses = new ArrayList>(); + + try { + requests = nextRequestResp.getInfoboxReadRequestOrSignRequestOrQuitRequest(); + responses.clear(); + + // (rather use validator) + if (requests.size() == 0) { + log.error("Received empty NextRequestResponse: no STAL requests to handle. (STAL-X requests might not have gotten unmarshalled)"); + throw new RuntimeException("No STAL requests to handle."); + } + + if (log.isInfoEnabled()) { + StringBuilder sb = new StringBuilder("Received "); + sb.append(requests.size()); + sb.append(" requests: "); + for (JAXBElement r : requests) { + sb.append(r.getValue().getClass()); + sb.append(' '); + } + log.info(sb.toString()); + } + + List stalRequests = new ArrayList(); + for (JAXBElement req : requests) { + try { + stalRequests.add(stalTranslator.translate(req)); + } catch (TranslationException ex) { + log.error("Received unknown request from server STAL: " + ex.getMessage()); + throw new RuntimeException(ex); + } + } + + checkPermission(stalRequests); + + List stalResponses = handleRequest(stalRequests); + for (STALResponse stalResponse : stalResponses) { + try { + responses.add(stalTranslator.translate(stalResponse)); + } catch (TranslationException ex) { + log.error("Received unknown response from STAL: " + ex.getMessage()); + throw new RuntimeException(ex); + } + } + + } catch (RuntimeException ex) { + // return ErrorResponse to server, which displays error page + log.error(ex.getMessage()); + ErrorResponseType err = stalObjFactory.createErrorResponseType(); + if (ex instanceof SecurityException) { + err.setErrorCode(6002); + } else { + Throwable cause = ex.getCause(); + if (cause != null && cause instanceof InterruptedException) { + log.info("do not return error response, client might want to resume session"); + finished = true; + } + err.setErrorCode(4000); + } + responses.clear(); + responses.add(stalObjFactory.createGetNextRequestTypeErrorResponse(err)); + + } finally { + if (!finished) { + if (log.isInfoEnabled()) { + StringBuilder sb = new StringBuilder("Sending "); + sb.append(responses.size()); + sb.append(" responses: "); + for (JAXBElement r : responses) { + sb.append(r.getValue().getClass()); + sb.append(' '); + } + log.info(sb.toString()); + } + GetNextRequestType nextRequest = stalObjFactory.createGetNextRequestType(); + nextRequest.setSessionId(sessionId); + nextRequest.getInfoboxReadResponseOrSignResponseOrErrorResponse().addAll(responses); + nextRequestResp = stalPort.getNextRequest(nextRequest); + } + } + + + } while (!finished); + log.info("Finished " + Thread.currentThread().getName()); + + } catch (WebServiceException ex) { + log.fatal("communication error with server STAL: " + ex.getMessage(), ex); + showErrorDialog(BKUGUIFacade.ERR_SERVICE_UNREACHABLE, ex); + } catch (MalformedURLException ex) { + log.fatal(ex.getMessage(), ex); + showErrorDialog(BKUGUIFacade.ERR_CONFIG, ex); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + showErrorDialog(BKUGUIFacade.ERR_UNKNOWN_WITH_PARAM, ex); + } finally { + if (signatureCard != null) { + signatureCard.disconnect(false); + } + } + + applet.sendRedirect(sessionId); + } + + /** + * throws RuntimeException if requests contain InfoboxReadRequest for IdentityLink + * and STAL Service Endpoint is no e-Gov agency + * @param stalRequests + */ + private void checkPermission(List stalRequests) { + for (STALRequest request : stalRequests) { + if (request instanceof at.gv.egiz.stal.InfoboxReadRequest) { + at.gv.egiz.stal.InfoboxReadRequest r = (at.gv.egiz.stal.InfoboxReadRequest) request; + String infoboxId = r.getInfoboxIdentifier(); + String domainId = r.getDomainIdentifier(); + if ("IdentityLink".equals(infoboxId) && domainId == null) { + if (!InternalSSLSocketFactory.getInstance().isEgovAgency()) { + throw new SecurityException("Insufficient rights to execute command InfoboxReadRequest for Infobox IdentityLink"); + } + } + } + } + } + + /** + * + * @param err_code + * @param ex if not null, the message will be appended as parameter to the error message + */ + protected void showErrorDialog(String err_code, Exception ex) { + actionCommandList.clear(); + actionCommandList.add("ok"); + Object[] params = (ex != null) ? new Object[] { ex.getMessage() } : null; + gui.showErrorDialog(err_code, params, this, "ok"); + try { + waitForAction(); + } catch (InterruptedException e) { + log.error(e); + } + } + + public void getFocusFromBrowser() { + + gui.getFocusFromBrowser(); + } +} diff --git a/mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/AppletSecureViewer.java b/mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/AppletSecureViewer.java new file mode 100644 index 00000000..c67699af --- /dev/null +++ b/mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/AppletSecureViewer.java @@ -0,0 +1,237 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.online.applet; + +import at.gv.egiz.bku.gui.BKUGUIFacade; +import at.gv.egiz.bku.smccstal.SecureViewer; +import at.gv.egiz.stal.HashDataInput; +import at.gv.egiz.stal.impl.ByteArrayHashDataInput; +import at.gv.egiz.stal.service.GetHashDataInputFault; +import at.gv.egiz.stal.service.STALPortType; +import at.gv.egiz.stal.service.types.GetHashDataInputResponseType; +import at.gv.egiz.stal.service.types.GetHashDataInputType; +import at.gv.egiz.stal.signedinfo.ReferenceType; +import at.gv.egiz.stal.signedinfo.SignedInfoType; +import java.awt.event.ActionListener; +import java.security.DigestException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author Clemens Orthacker + */ +public class AppletSecureViewer implements SecureViewer { + + private static final Log log = LogFactory.getLog(AppletSecureViewer.class); + + protected BKUGUIFacade gui; + protected STALPortType stalPort; + protected String sessId; + protected List verifiedDataToBeSigned; + + public AppletSecureViewer(BKUGUIFacade gui, STALPortType stalPort, + String sessId) { + if (gui == null) { + throw new NullPointerException("GUI must not be null"); + } + if (stalPort == null) { + throw new NullPointerException("STAL port must not be null"); + } + if (sessId == null) { + throw new NullPointerException("session id must not be null"); + } + this.gui = gui; + this.stalPort = stalPort; + this.sessId = sessId; + } + + /** + * retrieves the data to be signed for + * @param signedReferences + * @param okListener + * @param okCommand + * @param cancelListener + * @param cancelCommand + * @throws java.security.DigestException + * @throws java.lang.Exception + */ + @Override + public void displayDataToBeSigned(SignedInfoType signedInfo, + ActionListener okListener, String okCommand) + throws DigestException, Exception { + + if (verifiedDataToBeSigned == null) { + log.info("retrieve data to be signed for dsig:SignedInfo " + + signedInfo.getId()); + List hdi = + getHashDataInput(signedInfo.getReference()); + verifiedDataToBeSigned = verifyHashDataInput(signedInfo.getReference(), + hdi); + } + if (verifiedDataToBeSigned.size() > 0) { + gui.showSecureViewer(verifiedDataToBeSigned, okListener, okCommand); + } else { + throw new Exception("No data to be signed (apart from any QualifyingProperties or a Manifest)"); + } + } + + /** + * Get all hashdata inputs that contain an ID attribute but no Type attribute. + * @param signedReferences + * @return + * @throws at.gv.egiz.stal.service.GetHashDataInputFault + */ + private List getHashDataInput(List signedReferences) + throws GetHashDataInputFault, Exception { + GetHashDataInputType request = new GetHashDataInputType(); + request.setSessionId(sessId); + +// HashMap idSignedRefMap = new HashMap(); + for (ReferenceType signedRef : signedReferences) { + //don't get Manifest, QualifyingProperties, ... + if (signedRef.getType() == null) { + String signedRefId = signedRef.getId(); + if (signedRefId != null) { + if (log.isTraceEnabled()) { + log.trace("requesting hashdata input for reference " + signedRefId); + } +// idSignedRefMap.put(signedRefId, signedRef); + GetHashDataInputType.Reference ref = new GetHashDataInputType.Reference(); + ref.setID(signedRefId); + request.getReference().add(ref); + + } else { + throw new Exception("Cannot resolve signature data for dsig:Reference without Id attribute"); + } + } + } + + if (request.getReference().size() < 1) { + log.error("No signature data (apart from any QualifyingProperties or a Manifest) for session " + sessId); + throw new Exception("No signature data (apart from any QualifyingProperties or a Manifest)"); + } + + if (log.isDebugEnabled()) { + log.debug("WebService call GetHashDataInput for " + request.getReference().size() + " references in session " + sessId); + } + GetHashDataInputResponseType response = stalPort.getHashDataInput(request); + return response.getReference(); + } + + /** + * Verifies all signed references and returns STAL HashDataInputs + * @param signedReferences + * @param hashDataInputs + * @return + * @throws java.security.DigestException + * @throws java.security.NoSuchAlgorithmException + * @throws Exception if no hashdata input is provided for a signed reference + */ + private List verifyHashDataInput(List signedReferences, List hashDataInputs) + throws DigestException, NoSuchAlgorithmException, Exception { + + ArrayList verifiedHashDataInputs = new ArrayList(); + + for (ReferenceType signedRef : signedReferences) { + if (signedRef.getType() == null) { + log.info("Verifying digest for signed reference " + signedRef.getId()); + + String signedRefId = signedRef.getId(); + byte[] signedDigest = signedRef.getDigestValue(); + String signedDigestAlg = null; + if (signedRef.getDigestMethod() != null) { + signedDigestAlg = signedRef.getDigestMethod().getAlgorithm(); + } else { + throw new NoSuchAlgorithmException("Failed to verify digest value for reference " + signedRefId + ": no digest algorithm"); + } + + // usually, there is just one item here + GetHashDataInputResponseType.Reference hashDataInput = null; + for (GetHashDataInputResponseType.Reference hdi : hashDataInputs) { + if (signedRefId.equals(hdi.getID())) { + hashDataInput = hdi; + break; + } + } + if (hashDataInput == null) { + throw new Exception("No hashdata input for reference " + signedRefId + " returned by service"); + } + + byte[] hdi = hashDataInput.getValue(); + String mimeType = hashDataInput.getMimeType(); + String encoding = hashDataInput.getEncoding(); + String filename = hashDataInput.getFilename(); + + if (hdi == null) { + throw new Exception("No hashdata input for reference " + signedRefId + " provided by service"); + } + if (log.isDebugEnabled()) { + log.debug("Digesting reference " + signedRefId + " (" + mimeType + ";" + encoding + ")"); + } + + byte[] hashDataInputDigest = digest(hdi, signedDigestAlg); + + if (log.isDebugEnabled()) { + log.debug("Comparing digest to claimed digest value for reference " + signedRefId); + } +// log.warn("***************** DISABLED HASHDATA VERIFICATION"); + if (!Arrays.equals(hashDataInputDigest, signedDigest)) { + log.error("Bad digest value for reference " + signedRefId); + throw new DigestException("Bad digest value for reference " + signedRefId); + } + + verifiedHashDataInputs.add(new ByteArrayHashDataInput(hdi, signedRefId, mimeType, encoding, filename)); + } + } + + return verifiedHashDataInputs; + } + + //TODO + private byte[] digest(byte[] hashDataInput, String mdAlg) throws NoSuchAlgorithmException { + if ("http://www.w3.org/2000/09/xmldsig#sha1".equals(mdAlg)) { + mdAlg = "SHA-1"; + } else if ("http://www.w3.org/2001/04/xmlenc#sha256".equals(mdAlg)) { + mdAlg = "SHA-256"; + } else if ("http://www.w3.org/2001/04/xmlenc#sha224".equals(mdAlg)) { + mdAlg = "SHA-224"; + } else if ("http://www.w3.org/2001/04/xmldsig-more#sha224".equals(mdAlg)) { + mdAlg = "SHA-224"; + } else if ("http://www.w3.org/2001/04/xmldsig-more#sha384".equals(mdAlg)) { + mdAlg = "SHA-384"; + } else if ("http://www.w3.org/2001/04/xmlenc#sha512".equals(mdAlg)) { + mdAlg = "SHA-512"; + } else if ("http://www.w3.org/2001/04/xmldsig-more#md2".equals(mdAlg)) { + mdAlg = "MD2"; + } else if ("http://www.w3.org/2001/04/xmldsig-more#md5".equals(mdAlg)) { + mdAlg = "MD5"; + } else if ("http://www.w3.org/2001/04/xmlenc#ripemd160".equals(mdAlg)) { + mdAlg = "RipeMD-160"; + } else { + throw new NoSuchAlgorithmException("Failed to verify digest value: unsupported digest algorithm " + mdAlg); + } + + MessageDigest md = MessageDigest.getInstance(mdAlg); + return md.digest(hashDataInput); + } +} diff --git a/mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/BKUApplet.java b/mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/BKUApplet.java new file mode 100644 index 00000000..2fa4889a --- /dev/null +++ b/mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/BKUApplet.java @@ -0,0 +1,359 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.online.applet; + +import at.gv.egiz.bku.online.applet.viewer.URLFontLoader; +import at.gv.egiz.bku.gui.BKUGUIFacade.Style; +import at.gv.egiz.bku.gui.DefaultHelpListener; +import at.gv.egiz.bku.gui.AbstractHelpListener; +import at.gv.egiz.bku.gui.SwitchFocusListener; +import at.gv.egiz.smcc.SignatureCardFactory; +import at.gv.egiz.stal.service.translator.STALTranslator; + +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Locale; + +import java.util.jar.Attributes; +import java.util.jar.Manifest; +import javax.net.ssl.HttpsURLConnection; +import javax.swing.JApplet; +import javax.swing.JPanel; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import at.gv.egiz.bku.gui.BKUGUIFacade; +import at.gv.egiz.bku.gui.BKUGUIImpl; +import at.gv.egiz.bku.gui.viewer.FontProvider; +import at.gv.egiz.stal.service.STALPortType; +import at.gv.egiz.stal.service.STALService; +import java.applet.AppletContext; +import java.awt.Color; +import java.awt.Container; + +import javax.xml.namespace.QName; + +/** + * Note: all swing code is executed by the event dispatch thread (see + * BKUGUIFacade) + */ +public class BKUApplet extends JApplet { + + private static final long serialVersionUID = 1L; + private static Log log = LogFactory.getLog(BKUApplet.class); + /** + * Applet parameter keys + */ + public static final String GUI_STYLE = "GuiStyle"; + public final static String LOCALE = "Locale"; + public final static String WSDL_URL = "WSDL_URL"; + public static final String HASHDATA_DISPLAY = "HashDataDisplay"; + public final static String HASHDATA_URL = "HashDataURL"; + public final static String HELP_URL = "HelpURL"; + public final static String SESSION_ID = "SessionID"; + public static final String BACKGROUND_IMG = "Background"; + public static final String BACKGROUND_COLOR = "BackgroundColor"; + public static final String REDIRECT_URL = "RedirectURL"; + public static final String REDIRECT_TARGET = "RedirectTarget"; + public static final String HASHDATA_DISPLAY_FRAME = "frame"; + public static final String ENFORCE_RECOMMENDED_PIN_LENGTH = "EnforceRecommendedPINLength"; + /** + * STAL WSDL namespace and service name + */ + public static final String STAL_WSDL_NS = "http://www.egiz.gv.at/wsdl/stal"; + public static final String STAL_SERVICE = "STALService"; + /** + * Dummy session id, used if no sessionId parameter is provided + */ + protected static final String TEST_SESSION_ID = "TestSession"; + + public static final String VERSION; + public static final String UNKNOWN_VERSION = "UNKNOWN"; + + static { + String tmp = UNKNOWN_VERSION; + try { + String BKUAppletJar = BKUApplet.class.getProtectionDomain().getCodeSource().getLocation().toString(); + URL manifestURL = new URL("jar:" + BKUAppletJar + "!/META-INF/MANIFEST.MF"); + if (log.isTraceEnabled()) { + log.trace("read version information from " + manifestURL); + } + Manifest manifest = new Manifest(manifestURL.openStream()); + Attributes atts = manifest.getMainAttributes(); + if (atts != null) { + tmp = atts.getValue("Implementation-Build"); + } + } catch (IOException ex) { + log.error("failed to read version", ex); + } finally { + VERSION = tmp; + log.debug("BKU Applet " + VERSION); + } + } + + /** + * STAL + */ + protected AppletBKUWorker worker; + protected Thread workerThread; + + /* + * (non-Javadoc) + * + * @see java.applet.Applet#getParameterInfo() + */ + @Override + public String[][] getParameterInfo() { + return new String[][]{ + {WSDL_URL, "url", + "URL of the WSDL of the MOCCA server side STAL"}, + {REDIRECT_URL, "url", + "URL to redirect the browser to when finished"}, + {REDIRECT_TARGET, "frame target", + "name of the target frame for redirection when finished"}, + {LOCALE, "locale", + "locale for UI localization (optional, default: system default)"}, + {GUI_STYLE, "simple, advanced, tiny", + "GUI style (optional, default: simple)"}, + {BACKGROUND_COLOR, "#hhhhhh", + "background color, e.g. '#333333' (optional, default: look and feel dependend)"}, + {BACKGROUND_IMG, "url", + "URL of a background image for the GUI (optional, default: no image)"}, + {HELP_URL, "url", + "URL for locating help files, e.g. '../help/' (no help provided if missing)"}}; + } + + + /** + * Factory method to create and wire HelpListener, GUI and BKUWorker. + * (Config via applet parameters, see BKUApplet.* constants) + */ + @Override + public void init() { + log.info("Welcome to MOCCA " + VERSION); + log.trace("Called init()"); + showStatus("Initializing MOCCA applet"); + + HttpsURLConnection.setDefaultSSLSocketFactory(InternalSSLSocketFactory.getInstance()); + + String locale = getParameter(LOCALE); + if (locale != null) { + this.setLocale(new Locale(locale)); + } + log.trace("default locale: " + Locale.getDefault()); + log.debug("setting locale: " + getLocale()); + + if (Boolean.parseBoolean(getParameter(ENFORCE_RECOMMENDED_PIN_LENGTH))) { + SignatureCardFactory.ENFORCE_RECOMMENDED_PIN_LENGTH = true; + log.debug("enforce recommended pin length = " + SignatureCardFactory.ENFORCE_RECOMMENDED_PIN_LENGTH); + } + + BKUGUIFacade.Style guiStyle; + String guiStyleParam = getParameter(GUI_STYLE); + if ("advanced".equalsIgnoreCase(guiStyleParam)) { + guiStyle = BKUGUIFacade.Style.advanced; + } else if ("tiny".equalsIgnoreCase(guiStyleParam)) { + guiStyle = BKUGUIFacade.Style.tiny; + } else { + guiStyle = BKUGUIFacade.Style.simple; + } + log.debug("setting gui-style: " + guiStyle); + + URL backgroundImgURL = null; + try { + backgroundImgURL = getURLParameter(BACKGROUND_IMG, null); + log.debug("setting background: " + backgroundImgURL); + } catch (MalformedURLException ex) { + log.warn("cannot load applet background image: " + ex.getMessage()); + } + + AbstractHelpListener helpListener = null; + try { + helpListener = new DefaultHelpListener(getAppletContext(), + getURLParameter(HELP_URL, null), getLocale()); + if (log.isDebugEnabled()) { + log.debug("setting helpURL: " + getURLParameter(HELP_URL, null)); + } + } catch (MalformedURLException ex) { + log.warn("failed to load help URL: " + ex.getMessage() + ", disabling help"); + } + + // Note: We need a panel in order to be able to set the background + // properly. + // Setting the background without a panel has side effects with the + // different java plugins. + JPanel contentPanel = new JPanel(); + getContentPane().add(contentPanel); + + String backgroundColor = getParameter(BACKGROUND_COLOR); + if (backgroundColor != null && backgroundColor.startsWith("#")) { + try { + Color color = new Color(Integer.parseInt(backgroundColor.substring(1), 16)); + log.debug("setting background color to " + color); + contentPanel.setBackground(color); + } catch (NumberFormatException e) { + log.debug("failed to set background color '" + backgroundColor + "'"); + } + } + + try { + URLFontLoader fontProvider = new URLFontLoader(getCodeBase()); + fontProvider.loadInBackground(); + BKUGUIFacade gui = createGUI(contentPanel, getLocale(), guiStyle, + backgroundImgURL, fontProvider, helpListener, null); + + worker = createBKUWorker(this, gui); + } catch (MalformedURLException ex) { + log.fatal("failed to load font provider URL", ex); + System.err.println("invalid font provider URL " + ex.getMessage()); + } + } + + @Override + public void start() { + log.trace("Called start()"); + if (worker != null) { + showStatus("Starting MOCCA applet"); + workerThread = new Thread(worker); + workerThread.start(); + } else { + log.debug("cannot start uninitialzed MOCCA applet"); + } + } + + @Override + public void stop() { + log.trace("Called stop()"); + showStatus("Stopping MOCCA applet"); + if ((workerThread != null) && (workerThread.isAlive())) { + workerThread.interrupt(); + } + } + + @Override + public void destroy() { + log.trace("Called destroy()"); + } + + // /////////////////////////////////////////////////////////////////////////// + // factory methods for subclasses to inject different components + // /////////////////////////////////////////////////////////////////////////// + protected BKUGUIFacade createGUI(Container contentPane, Locale locale, + Style guiStyle, URL backgroundImgURL, + FontProvider fontProvider, AbstractHelpListener helpListener, + SwitchFocusListener switchFocusListener) { + return new BKUGUIImpl(contentPane, locale, guiStyle, backgroundImgURL, + fontProvider, helpListener, switchFocusListener); + } + + protected AppletBKUWorker createBKUWorker(BKUApplet applet, BKUGUIFacade gui) { + return new AppletBKUWorker(applet, gui); + } + + // /////////////////////////////////////////////////////////////////////////// + // callback for BKUWorker to allow extension + // /////////////////////////////////////////////////////////////////////////// + /** + * Callback for BKUWorker to allow extension + * + * @return + * @throws java.net.MalformedURLException + */ + public STALPortType getSTALPort() throws MalformedURLException { + URL wsdlURL = getURLParameter(WSDL_URL, null); + log.debug("setting STAL WSDL: " + wsdlURL); + QName endpointName = new QName(STAL_WSDL_NS, STAL_SERVICE); + STALService stal = new STALService(wsdlURL, endpointName); + return stal.getSTALPort(); + } + + /** + * Callback for BKUWorker to allow extension (TODO STALPort could know its + * STALTranslator) + * + * @return + * @throws java.net.MalformedURLException + */ + public STALTranslator getSTALTranslator() { + return new STALTranslator(); + } + + /** + * Callback for BKUWorker to keep applet context out of BKUWorker + * + * @return + * @throws java.net.MalformedURLException + */ + protected void sendRedirect(String sessionId) { + try { + AppletContext ctx = getAppletContext(); + if (ctx == null) { + log.error("no applet context (applet might already have been destroyed)"); + return; + } + URL redirectURL = getURLParameter(REDIRECT_URL, sessionId); + String redirectTarget = getParameter(REDIRECT_TARGET); + if (redirectTarget == null) { + log.info("Done. Redirecting to " + redirectURL + " ..."); + ctx.showDocument(redirectURL); + } else { + log.info("Done. Redirecting to " + redirectURL + " (target=" + redirectTarget + ") ..."); + ctx.showDocument(redirectURL, redirectTarget); + } + } catch (MalformedURLException ex) { + log.warn("Failed to redirect: " + ex.getMessage(), ex); + // gui.showErrorDialog(errorMsg, okListener, actionCommand) + } + } + + public void getFocusFromBrowser() { + + worker.getFocusFromBrowser(); + } + + // /////////////////////////////////////////////////////////////////////////// + // utility methods + // /////////////////////////////////////////////////////////////////////////// + protected URL getURLParameter(String paramKey, String sessionId) + throws MalformedURLException { + String urlParam = getParameter(paramKey); + if (urlParam != null && !"".equals(urlParam)) { + URL codebase = getCodeBase(); + try { + URL url; + if (codebase.getProtocol().equalsIgnoreCase("file")) { + // for debugging in appletrunner + url = new URL(urlParam); + } else { + if (sessionId != null) { + urlParam = urlParam + ";jsessionid=" + sessionId; + } + url = new URL(codebase, urlParam); + } + return url; + } catch (MalformedURLException ex) { + log.error("applet paremeter " + urlParam + " is not a valid URL: " + ex.getMessage()); + throw ex; + } + } else { + log.error("applet paremeter " + paramKey + " not set"); + throw new MalformedURLException(paramKey + " not set"); + } + } +} diff --git a/mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/InternalSSLSocketFactory.java b/mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/InternalSSLSocketFactory.java new file mode 100644 index 00000000..a02e56eb --- /dev/null +++ b/mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/InternalSSLSocketFactory.java @@ -0,0 +1,157 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.online.applet; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.Socket; +import java.net.UnknownHostException; +import java.security.cert.CertificateParsingException; +import java.security.cert.X509Certificate; +import java.util.Collection; +import java.util.List; + +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.SSLPeerUnverifiedException; +import javax.net.ssl.SSLSocket; +import javax.net.ssl.SSLSocketFactory; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class InternalSSLSocketFactory extends SSLSocketFactory { + + private final static String GOV_DOMAIN = ".gv.at"; + + private static InternalSSLSocketFactory instance = new InternalSSLSocketFactory(); + + private final static Log log = LogFactory + .getLog(InternalSSLSocketFactory.class); + + private SSLSocket sslSocket; + + private SSLSocketFactory proxy; + + private InternalSSLSocketFactory() { + proxy = HttpsURLConnection.getDefaultSSLSocketFactory(); + } + + public static InternalSSLSocketFactory getInstance() { + return instance; + } + + @Override + public Socket createSocket() throws IOException { + sslSocket = (SSLSocket) proxy.createSocket(); + return sslSocket; + } + + @Override + public Socket createSocket(String arg0, int arg1) throws IOException, + UnknownHostException { + sslSocket = (SSLSocket) proxy.createSocket(arg0, arg1); + + return sslSocket; + } + + @Override + public Socket createSocket(InetAddress arg0, int arg1) throws IOException { + sslSocket = (SSLSocket) proxy.createSocket(arg0, arg1); + return sslSocket; + } + + @Override + public Socket createSocket(String arg0, int arg1, InetAddress arg2, int arg3) + throws IOException, UnknownHostException { + sslSocket = (SSLSocket) proxy.createSocket(arg0, arg1, arg2, arg3); + return sslSocket; + } + + @Override + public Socket createSocket(InetAddress arg0, int arg1, InetAddress arg2, + int arg3) throws IOException { + sslSocket = (SSLSocket) proxy.createSocket(arg0, arg1, arg2, arg3); + return sslSocket; + } + + @Override + public Socket createSocket(Socket arg0, String arg1, int arg2, boolean arg3) + throws IOException { + sslSocket = (SSLSocket) proxy.createSocket(arg0, arg1, arg2, arg3); + return sslSocket; + } + + @Override + public String[] getDefaultCipherSuites() { + return proxy.getDefaultCipherSuites(); + } + + @Override + public String[] getSupportedCipherSuites() { + return proxy.getSupportedCipherSuites(); + } + + public boolean isEgovAgency() { + log.info("Checking if server is egov agency"); + if (sslSocket != null) { + try { + X509Certificate cert = (X509Certificate) sslSocket.getSession() + .getPeerCertificates()[0]; + log.info("Server cert: " + cert); + return isGovAgency(cert); + } catch (SSLPeerUnverifiedException e) { + log.error(e); + return false; + } + } + log.info("Not a SSL connection"); + return false; + } + + public static boolean isGovAgency(X509Certificate cert) { + String[] rdns = (cert.getSubjectX500Principal().getName()).split(","); + for (String rdn : rdns) { + if (rdn.startsWith("CN=")) { + String dns = rdn.split("=")[1]; + if (dns.endsWith(GOV_DOMAIN)) { + return true; + } + } + } + try { + Collection> sanList = cert.getSubjectAlternativeNames(); + if (sanList != null) { + for (List san : sanList) { + if ((Integer) san.get(0) == 2) { + String dns = (String) san.get(1); + if (dns.endsWith(GOV_DOMAIN)) { + return true; + } + } + } + } + } catch (CertificateParsingException e) { + log.error(e); + } + if ((cert.getExtensionValue("1.2.40.0.10.1.1.1") != null) + || (cert.getExtensionValue("1.2.40.0.10.1.1.2") != null)) { + return true; + } + return false; + } +} diff --git a/mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/viewer/URLFontLoader.java b/mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/viewer/URLFontLoader.java new file mode 100644 index 00000000..49615887 --- /dev/null +++ b/mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/viewer/URLFontLoader.java @@ -0,0 +1,82 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.online.applet.viewer; + +import at.gv.egiz.bku.gui.viewer.FontProviderException; +import at.gv.egiz.bku.gui.viewer.FontProvider; +import java.awt.Font; +import java.awt.FontFormatException; +import java.io.IOException; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.concurrent.ExecutionException; +import javax.swing.SwingWorker; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author Clemens Orthacker + */ +public class URLFontLoader extends SwingWorker implements FontProvider { + + protected static final Log log = LogFactory.getLog(URLFontLoader.class); + protected URL fontURL; + protected Font font; + + public URLFontLoader(URL codebase) throws MalformedURLException { + this.fontURL = new URL(codebase, SANSMONO_FONT_RESOURCE); + if (log.isDebugEnabled()) { + log.debug("[" + Thread.currentThread().getName() + "] setting font load URL: " + fontURL); + } + } + + public void loadInBackground() { + if (log.isDebugEnabled()) { + log.debug("[" + Thread.currentThread().getName() + "] scheduling font loading in background: " + fontURL); + } + this.execute(); + } + + @Override + protected Font doInBackground() throws MalformedURLException, FontFormatException, IOException { + if (log.isDebugEnabled()) { + log.debug("[" + Thread.currentThread().getName() + "] loading font in background..."); + } + return Font.createFont(Font.TRUETYPE_FONT, fontURL.openStream()); + } + + /** + * waits for loadInBackground to finish + * @return the font loaded in loadInbackground + * @throws Exception + */ + @Override + public Font getFont() throws FontProviderException { + log.debug("[" + Thread.currentThread().getName() + "] get font (EDT?)"); + try { + return get(); + } catch (InterruptedException ex) { + log.error("font loader interrupted"); +// Thread.currentThread().interrupt(); + throw new FontProviderException("font loader interrupted", ex); + } catch (ExecutionException ex) { + log.error("failed to load font", ex.getCause()); + throw new FontProviderException("failed to load font", ex.getCause()); + } + } +} diff --git a/mocca-1.2.11/BKUApplet/src/main/resources/commons-logging.properties b/mocca-1.2.11/BKUApplet/src/main/resources/commons-logging.properties new file mode 100644 index 00000000..faa21c47 --- /dev/null +++ b/mocca-1.2.11/BKUApplet/src/main/resources/commons-logging.properties @@ -0,0 +1,16 @@ +# Copyright 2008 Federal Chancellery Austria and +# Graz University of Technology +# +# 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. + +org.apache.commons.logging.Log=org.apache.commons.logging.impl.SimpleLog \ No newline at end of file diff --git a/mocca-1.2.11/BKUApplet/src/main/resources/simplelog.properties b/mocca-1.2.11/BKUApplet/src/main/resources/simplelog.properties new file mode 100644 index 00000000..d62508cf --- /dev/null +++ b/mocca-1.2.11/BKUApplet/src/main/resources/simplelog.properties @@ -0,0 +1,25 @@ +# Copyright 2008 Federal Chancellery Austria and +# Graz University of Technology +# +# 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. + +# Logging detail level, +# Must be one of ("trace", "debug", "info", "warn", "error", or "fatal"). +org.apache.commons.logging.simplelog.defaultlog=debug +# Logs the Log instance used +org.apache.commons.logging.simplelog.showlogname=true +#Logs the class name with package(or Path) +#( Valid Values "true","false". Default Value "true") +org.apache.commons.logging.simplelog.showShortLogname=true +#Logs date and time( Valid Values "true","false". Default Value "false") +org.apache.commons.logging.simplelog.showdatetime=false diff --git a/mocca-1.2.11/BKUApplet/src/test/java/at/gv/egiz/stal/client/STALServiceTest.java b/mocca-1.2.11/BKUApplet/src/test/java/at/gv/egiz/stal/client/STALServiceTest.java new file mode 100644 index 00000000..74017c22 --- /dev/null +++ b/mocca-1.2.11/BKUApplet/src/test/java/at/gv/egiz/stal/client/STALServiceTest.java @@ -0,0 +1,100 @@ +/* +* Copyright 2008 Federal Chancellery Austria and +* Graz University of Technology +* +* 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. +*/ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package at.gv.egiz.stal.client; + +import static org.junit.Assert.assertNotNull; + +import java.net.MalformedURLException; +import java.net.URL; + +import javax.xml.namespace.QName; + +import org.junit.Test; + +import at.gv.egiz.stal.InfoboxReadRequest; +import at.gv.egiz.stal.STALRequest; +import at.gv.egiz.stal.service.GetHashDataInputFault; +import at.gv.egiz.stal.service.STALPortType; +import at.gv.egiz.stal.service.STALService; +import at.gv.egiz.stal.service.types.GetHashDataInputResponseType; +import at.gv.egiz.stal.service.types.GetHashDataInputType; +import at.gv.egiz.stal.service.types.GetNextRequestResponseType; +import at.gv.egiz.stal.service.types.GetNextRequestType; +import at.gv.egiz.stal.service.types.InfoboxReadRequestType; +import at.gv.egiz.stal.service.types.RequestType; +import javax.xml.bind.JAXBElement; + +/** + * + * @author clemens + */ +public class STALServiceTest { + +// @Test + public void callSTAL() { + try { + URL endpointURL = new URL("http://localhost:3495/bkuonline/stal?wsdl"); + QName endpointName = new QName("http://www.egiz.gv.at/wsdl/stal", "STALService"); + STALService stal = new STALService(endpointURL, endpointName); +// stal = new STALService(); + STALPortType port = stal.getSTALPort(); + + GetNextRequestType nrReq = new GetNextRequestType(); + nrReq.setSessionId("TestSession"); //STALServiceImpl.TEST_SESSION_ID); +// req.getResponse().add(new ErrorResponse(1234)); + GetNextRequestResponseType nrResp = port.getNextRequest(nrReq); + assertNotNull(nrResp); + System.out.println("got response: " + nrResp.getInfoboxReadRequestOrSignRequestOrQuitRequest().size()); + for (JAXBElement stalReqElt : nrResp.getInfoboxReadRequestOrSignRequestOrQuitRequest()) { + RequestType stalReq = stalReqElt.getValue(); + if (stalReq instanceof InfoboxReadRequestType) { + String ibid = ((InfoboxReadRequestType) stalReq).getInfoboxIdentifier(); + String did = ((InfoboxReadRequestType) stalReq).getDomainIdentifier(); + System.out.println(" received InfoboxReadRequest for " + ibid + ", " + did); + } else { + System.out.println(" received STAL request " + stalReq.getClass().getName()); + } + } + + GetHashDataInputType hdReq = new GetHashDataInputType(); + hdReq.setSessionId("TestSession"); //STALServiceImpl.TEST_SESSION_ID); + GetHashDataInputType.Reference ref = new GetHashDataInputType.Reference(); + ref.setID("refId"); + hdReq.getReference().add(ref); + GetHashDataInputResponseType hdResp = port.getHashDataInput(hdReq); + GetHashDataInputResponseType.Reference hdRef = hdResp.getReference().get(0); + System.out.println("got HashDataInput " + new String(hdRef.getValue())); + + + } catch (GetHashDataInputFault ex) { + ex.printStackTrace(); + } catch (MalformedURLException ex) { + ex.printStackTrace(); + } + } + + @Test + public void testSTAL() { + //TODO + } + +} diff --git a/mocca-1.2.11/BKUApplet/src/test/resources/DejaVuLGCSansMono.ttf b/mocca-1.2.11/BKUApplet/src/test/resources/DejaVuLGCSansMono.ttf new file mode 100644 index 00000000..21647753 Binary files /dev/null and b/mocca-1.2.11/BKUApplet/src/test/resources/DejaVuLGCSansMono.ttf differ diff --git a/mocca-1.2.11/BKUApplet/src/test/resources/appletTest.html b/mocca-1.2.11/BKUApplet/src/test/resources/appletTest.html new file mode 100644 index 00000000..22495a32 --- /dev/null +++ b/mocca-1.2.11/BKUApplet/src/test/resources/appletTest.html @@ -0,0 +1,40 @@ + + + + + MOCCA Applet + + + +

Run applet test with appletviewer (-J-d32) -J-Djava.security.policy=appletviewer.policy appletTest.html

+ + + + + + + + + + + + + + diff --git a/mocca-1.2.11/BKUApplet/src/test/resources/appletviewer.policy b/mocca-1.2.11/BKUApplet/src/test/resources/appletviewer.policy new file mode 100644 index 00000000..c26e27b7 --- /dev/null +++ b/mocca-1.2.11/BKUApplet/src/test/resources/appletviewer.policy @@ -0,0 +1,3 @@ +grant { + permission java.security.AllPermission; +}; \ No newline at end of file diff --git a/mocca-1.2.11/BKUAppletExt/keystore.ks b/mocca-1.2.11/BKUAppletExt/keystore.ks new file mode 100644 index 00000000..824c3a40 Binary files /dev/null and b/mocca-1.2.11/BKUAppletExt/keystore.ks differ diff --git a/mocca-1.2.11/BKUAppletExt/nbactions.xml b/mocca-1.2.11/BKUAppletExt/nbactions.xml new file mode 100644 index 00000000..286e3ba6 --- /dev/null +++ b/mocca-1.2.11/BKUAppletExt/nbactions.xml @@ -0,0 +1,13 @@ + + + + CUSTOM-PackageNoTests + PackageNoTests + + package + + + true + + + diff --git a/mocca-1.2.11/BKUAppletExt/pom.xml b/mocca-1.2.11/BKUAppletExt/pom.xml new file mode 100644 index 00000000..64236425 --- /dev/null +++ b/mocca-1.2.11/BKUAppletExt/pom.xml @@ -0,0 +1,147 @@ + + + bku + at.gv.egiz + 1.2.11 + + 4.0.0 + at.gv.egiz + BKUAppletExt + BKU Applet Extension + 1.2.11 + + + + at.gv.egiz + STALExt + 1.2.11 + + + at.gv.egiz + STALXService + 1.2.11 + + + at.gv.egiz + smccSTAL + 1.2.11 + + + at.gv.egiz + BKUApplet + 1.2.11 + + + at.gv.egiz + BKUGuiExt + 1.2.11 + + + at.gv.egiz + smccSTALExt + 1.2.11 + + + + + + org.codehaus.mojo + maven-buildnumber-plugin + + + validate + + create + + + + + false + false + + + + maven-jar-plugin + org.apache.maven.plugins + + + + sign + + + + + + false + false + + false + true + + + ${project.version}-r${buildNumber} + + + test-applet signer + ./keystore.ks + storepass + keypass + true + + + + maven-dependency-plugin + + + unpack + + unpack-dependencies + + + at.gv.egiz + true + ${project.build.outputDirectory} + META-INF\/ + + + + + copy_testapplet + + copy-dependencies + + + ${project.build.directory}/test-classes + commons-logging,iaik + commons-logging,iaik_jce_me4se + true + + + + + + + + + pkcs11-sign + + + + maven-jar-plugin + org.apache.maven.plugins + 2.2-mocca + + NONE + PKCS11 + iaik.pkcs.pkcs11.provider.IAIKPkcs11 + a-sit + ${pkcs11-pass} + + + + + + + \ No newline at end of file diff --git a/mocca-1.2.11/BKUAppletExt/src/main/java/at/gv/egiz/bku/online/applet/ActivationApplet.java b/mocca-1.2.11/BKUAppletExt/src/main/java/at/gv/egiz/bku/online/applet/ActivationApplet.java new file mode 100644 index 00000000..4f2f1331 --- /dev/null +++ b/mocca-1.2.11/BKUAppletExt/src/main/java/at/gv/egiz/bku/online/applet/ActivationApplet.java @@ -0,0 +1,94 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.online.applet; + +import at.gv.egiz.bku.gui.AbstractHelpListener; +import at.gv.egiz.bku.gui.ActivationGUI; +import at.gv.egiz.bku.gui.BKUGUIFacade; +import at.gv.egiz.bku.gui.SwitchFocusListener; +import at.gv.egiz.bku.gui.BKUGUIFacade.Style; +import at.gv.egiz.bku.gui.viewer.FontProvider; +import at.gv.egiz.bku.online.applet.BKUApplet; +import at.gv.egiz.bku.smccstal.AbstractSMCCSTAL; +import at.gv.egiz.bku.smccstal.CardMgmtRequestHandler; +import at.gv.egiz.stal.ext.APDUScriptRequest; +import at.gv.egiz.stal.service.STALPortType; +import at.gv.egiz.stal.service.translator.STALTranslator; +import at.gv.egiz.stalx.service.STALService; +import at.gv.egiz.stalx.service.translator.STALXTranslationHandler; +import java.awt.Container; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Locale; +import javax.xml.namespace.QName; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author Clemens Orthacker + */ +public class ActivationApplet extends BKUApplet { + + private static final long serialVersionUID = 1L; + private static Log log = LogFactory.getLog(ActivationApplet.class); + + @Override + public void init() { + super.init(); + if (worker instanceof AbstractSMCCSTAL) { + CardMgmtRequestHandler handler = new CardMgmtRequestHandler(); + ((AbstractSMCCSTAL) worker).addRequestHandler(APDUScriptRequest.class, handler); + log.debug("Registered CardMgmtRequestHandler"); + } else { + log.warn("Cannot register CardMgmtRequestHandler."); + } + } + + /** + * creates a STAL-X enabled webservice port + * @return + * @throws java.net.MalformedURLException + */ + @Override + public STALPortType getSTALPort() throws MalformedURLException { + URL wsdlURL = getURLParameter(WSDL_URL, null); + log.debug("setting STAL WSDL: " + wsdlURL); + QName endpointName = new QName(STAL_WSDL_NS, STAL_SERVICE); + log.info("creating STAL-X enabled webservice port"); + STALService stal = new STALService(wsdlURL, endpointName); + return stal.getSTALPort(); + } + + @Override + public STALTranslator getSTALTranslator() { + STALTranslator translator = super.getSTALTranslator(); + translator.registerTranslationHandler(new STALXTranslationHandler()); + return translator; + } + + @Override + protected BKUGUIFacade createGUI(Container contentPane, + Locale locale, + Style guiStyle, + URL backgroundImgURL, + FontProvider fontProvider, + AbstractHelpListener helpListener, + SwitchFocusListener switchFocusListener) { + return new ActivationGUI(contentPane, locale, guiStyle, backgroundImgURL, fontProvider, helpListener, switchFocusListener); + } +} diff --git a/mocca-1.2.11/BKUAppletExt/src/main/java/at/gv/egiz/bku/online/applet/PINManagementApplet.java b/mocca-1.2.11/BKUAppletExt/src/main/java/at/gv/egiz/bku/online/applet/PINManagementApplet.java new file mode 100644 index 00000000..bf323969 --- /dev/null +++ b/mocca-1.2.11/BKUAppletExt/src/main/java/at/gv/egiz/bku/online/applet/PINManagementApplet.java @@ -0,0 +1,55 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.online.applet; + +import at.gv.egiz.bku.gui.AbstractHelpListener; +import at.gv.egiz.bku.gui.BKUGUIFacade; +import at.gv.egiz.bku.gui.PINManagementGUI; +import at.gv.egiz.bku.gui.PINManagementGUIFacade; +import at.gv.egiz.bku.gui.SwitchFocusListener; +import at.gv.egiz.bku.gui.viewer.FontProvider; +import java.awt.Container; +import java.net.URL; +import java.util.Locale; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author Clemens Orthacker + */ +public class PINManagementApplet extends BKUApplet { + + private static final long serialVersionUID = 1L; + private static Log log = LogFactory.getLog(PINManagementApplet.class); + + @Override + protected BKUGUIFacade createGUI(Container contentPane, + Locale locale, + BKUGUIFacade.Style guiStyle, + URL backgroundImgURL, + FontProvider fontProvider, + AbstractHelpListener helpListener, + SwitchFocusListener switchFocusListener) { + return new PINManagementGUI(contentPane, locale, guiStyle, backgroundImgURL, fontProvider, helpListener, switchFocusListener); + } + + @Override + protected AppletBKUWorker createBKUWorker(BKUApplet applet, BKUGUIFacade gui) { + return new PINManagementBKUWorker(applet, (PINManagementGUIFacade) gui); + } +} diff --git a/mocca-1.2.11/BKUAppletExt/src/main/java/at/gv/egiz/bku/online/applet/PINManagementBKUWorker.java b/mocca-1.2.11/BKUAppletExt/src/main/java/at/gv/egiz/bku/online/applet/PINManagementBKUWorker.java new file mode 100644 index 00000000..5dedcedb --- /dev/null +++ b/mocca-1.2.11/BKUAppletExt/src/main/java/at/gv/egiz/bku/online/applet/PINManagementBKUWorker.java @@ -0,0 +1,91 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.online.applet; + +import at.gv.egiz.bku.gui.BKUGUIFacade; +import at.gv.egiz.bku.gui.PINManagementGUIFacade; +import at.gv.egiz.bku.smccstal.PINManagementRequestHandler; +import at.gv.egiz.stal.ErrorResponse; +import at.gv.egiz.stal.InfoboxReadRequest; +import at.gv.egiz.stal.QuitRequest; +import at.gv.egiz.stal.STALRequest; +import at.gv.egiz.stal.STALResponse; +import at.gv.egiz.stal.SignRequest; +import at.gv.egiz.stal.ext.PINManagementRequest; +import at.gv.egiz.stal.ext.PINManagementResponse; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * This BKU Worker does not connect to STAL webservice + * (no Internet connection permitted while activating PINs). + * + * @author Clemens Orthacker + */ +public class PINManagementBKUWorker extends AppletBKUWorker { + + public PINManagementBKUWorker(BKUApplet applet, PINManagementGUIFacade gui) { + super(applet, gui); + removeRequestHandler(InfoboxReadRequest.class); + removeRequestHandler(SignRequest.class); + addRequestHandler(PINManagementRequest.class, new PINManagementRequestHandler()); + } + + @Override + public void run() { + gui.showMessageDialog(BKUGUIFacade.TITLE_WELCOME, + BKUGUIFacade.MESSAGE_WELCOME); + + try { + + List responses = handleRequest(Collections.singletonList(new PINManagementRequest())); + handleRequest(Collections.singletonList(new QuitRequest())); + + if (responses.size() == 1) { + STALResponse response = responses.get(0); + if (response instanceof PINManagementResponse) { + log.debug("PIN management dialog terminated"); + } else if (response instanceof ErrorResponse) { + log.debug("PIN management dialog terminated with error"); + } else { + throw new RuntimeException("Invalid STAL response: " + response.getClass().getName()); + } + } else { + throw new RuntimeException("invalid number of STAL responses: " + responses.size()); + } + + } catch (RuntimeException ex) { + log.error(ex.getMessage()); + Throwable cause = ex.getCause(); + if (cause != null) { // && cause instanceof InterruptedException) { + log.info(cause.getMessage()); + } + showErrorDialog(BKUGUIFacade.ERR_UNKNOWN, null); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + showErrorDialog(BKUGUIFacade.ERR_UNKNOWN_WITH_PARAM, ex); + } finally { + if (signatureCard != null) { + signatureCard.disconnect(false); + } + } + + applet.sendRedirect(sessionId); + } + + } diff --git a/mocca-1.2.11/BKUAppletExt/src/test/resources/appletTest.html b/mocca-1.2.11/BKUAppletExt/src/test/resources/appletTest.html new file mode 100644 index 00000000..813ee1f0 --- /dev/null +++ b/mocca-1.2.11/BKUAppletExt/src/test/resources/appletTest.html @@ -0,0 +1,34 @@ + + + +
+ + + + + + + + + + +
+ + \ No newline at end of file diff --git a/mocca-1.2.11/BKUCertificates/pom.xml b/mocca-1.2.11/BKUCertificates/pom.xml new file mode 100644 index 00000000..acd70cff --- /dev/null +++ b/mocca-1.2.11/BKUCertificates/pom.xml @@ -0,0 +1,35 @@ + + 4.0.0 + + bku + at.gv.egiz + 1.2.11 + + at.gv.egiz + BKUCertificates + + 1.1 + BKU Certificates + + + + + maven-jar-plugin + org.apache.maven.plugins + + + + + + true + + + true + + + + + \ No newline at end of file diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-CERT GLOBALTRUST.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-CERT GLOBALTRUST.cer new file mode 100644 index 00000000..9a25e57d Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-CERT GLOBALTRUST.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Light CA.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Light CA.crt new file mode 100644 index 00000000..0a8de4bb Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Light CA.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Medium CA.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Medium CA.crt new file mode 100644 index 00000000..69a8e487 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Medium CA.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Premium CA.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Premium CA.crt new file mode 100644 index 00000000..10a1f714 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Premium CA.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Strong CA.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Strong CA.crt new file mode 100644 index 00000000..4dd2c49b Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Strong CA.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-SignProjects.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-SignProjects.crt new file mode 100644 index 00000000..a7948e48 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-SignProjects.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust Premium-Sig-01.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust Premium-Sig-01.crt new file mode 100644 index 00000000..7085c5ac Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust Premium-Sig-01.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMark-Enc-01_CA.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMark-Enc-01_CA.crt new file mode 100644 index 00000000..670f2cb0 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMark-Enc-01_CA.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMark-Sig-01_CA.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMark-Sig-01_CA.crt new file mode 100644 index 00000000..2572b675 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMark-Sig-01_CA.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Enc-01.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Enc-01.crt new file mode 100644 index 00000000..9ae7ffa0 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Enc-01.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Enc-01a.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Enc-01a.crt new file mode 100644 index 00000000..a68ae2db Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Enc-01a.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Enc-01b.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Enc-01b.crt new file mode 100644 index 00000000..61d346a8 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Enc-01b.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Sig-01.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Sig-01.cer new file mode 100644 index 00000000..c34d0f38 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Sig-01.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Sig-01a.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Sig-01a.cer new file mode 100644 index 00000000..d894e92c Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Sig-01a.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Sig-01b.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Sig-01b.cer new file mode 100644 index 00000000..380486f6 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Sig-01b.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Enc-01.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Enc-01.crt new file mode 100644 index 00000000..29d93550 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Enc-01.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Sig-01_CA.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Sig-01_CA.crt new file mode 100644 index 00000000..6225c0ca Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Sig-01_CA.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Sig-01a.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Sig-01a.cer new file mode 100644 index 00000000..f1d7b6a2 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Sig-01a.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Sig-01b.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Sig-01b.crt new file mode 100644 index 00000000..6fa13a0e Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Sig-01b.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust a-sign-Premium-Enc-01.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust a-sign-Premium-Enc-01.crt new file mode 100644 index 00000000..b596d82e Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust a-sign-Premium-Enc-01.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust a-sign-Premium-Enc-01a.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust a-sign-Premium-Enc-01a.crt new file mode 100644 index 00000000..fe561ad6 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust a-sign-Premium-Enc-01a.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-0120041213.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-0120041213.cer new file mode 100644 index 00000000..f9fef65f Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-0120041213.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-01_CA.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-01_CA.crt new file mode 100644 index 00000000..d361d919 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-01_CA.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-01_cACertificate1.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-01_cACertificate1.crt new file mode 100644 index 00000000..45dfed45 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-01_cACertificate1.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-01_cACertificate2.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-01_cACertificate2.crt new file mode 100644 index 00000000..f9f27442 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-01_cACertificate2.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-03.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-03.crt new file mode 100644 index 00000000..ab9e0cd7 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-03.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-TrustSign-Sig-01c.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-TrustSign-Sig-01c.crt new file mode 100644 index 00000000..c1b90c0f Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-TrustSign-Sig-01c.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-developer-02.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-developer-02.cer new file mode 100644 index 00000000..e39dacaa Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-developer-02.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-token-enc-02.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-token-enc-02.cer new file mode 100644 index 00000000..988c9234 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-token-enc-02.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-token-sig-02.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-token-sig-02.cer new file mode 100644 index 00000000..01484a57 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-token-sig-02.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-uni.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-uni.cer new file mode 100644 index 00000000..83aeb1fc Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-uni.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-01_cACertificate1.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-01_cACertificate1.crt new file mode 100644 index 00000000..b7d4b08a Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-01_cACertificate1.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-01a.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-01a.cer new file mode 100644 index 00000000..289fc219 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-01a.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-01b.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-01b.cer new file mode 100644 index 00000000..69de7560 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-01b.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-03.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-03.cer new file mode 100644 index 00000000..33e77636 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-03.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-trust-Qual-02.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-trust-Qual-02.cer new file mode 100644 index 00000000..36a442b8 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-trust-Qual-02.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-GSig-1.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-GSig-1.cer new file mode 100644 index 00000000..6da18c62 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-GSig-1.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-System-2.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-System-2.cer new file mode 100644 index 00000000..ae89b737 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-System-2.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-VPSig-1.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-VPSig-1.cer new file mode 100644 index 00000000..bf4daa8a Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-VPSig-1.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-VPSig-2.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-VPSig-2.cer new file mode 100644 index 00000000..76dab054 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-VPSig-2.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-VSig-1.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-VSig-1.cer new file mode 100644 index 00000000..5026d395 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-VSig-1.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-root-1.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-root-1.cer new file mode 100644 index 00000000..3be7b6a0 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-root-1.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-system-1.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-system-1.cer new file mode 100644 index 00000000..2acfaf76 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-system-1.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Cybertrust Educational CA.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Cybertrust Educational CA.crt new file mode 100644 index 00000000..47eb310b Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Cybertrust Educational CA.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CA 1 2008_PN.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CA 1 2008_PN.cer new file mode 100644 index 00000000..4fbc1a6b Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CA 1 2008_PN.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CA 2 2008_PN.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CA 2 2008_PN.cer new file mode 100644 index 00000000..89512020 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CA 2 2008_PN.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CA 3 2008_PN.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CA 3 2008_PN.cer new file mode 100644 index 00000000..8331273c Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CA 3 2008_PN.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CRL-Signer 2 2008_PN.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CRL-Signer 2 2008_PN.cer new file mode 100644 index 00000000..bb315574 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CRL-Signer 2 2008_PN.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CRL-Signer 3 2008_PN.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CRL-Signer 3 2008_PN.cer new file mode 100644 index 00000000..8916c08a Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CRL-Signer 3 2008_PN.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CRL-Signer CA 1 2008_PN.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CRL-Signer CA 1 2008_PN.cer new file mode 100644 index 00000000..bbfc7a47 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CRL-Signer CA 1 2008_PN.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified Root CA 1 2008_PN.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified Root CA 1 2008_PN.cer new file mode 100644 index 00000000..131fe4e1 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified Root CA 1 2008_PN.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified Root CA 2 2008_PN.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified Root CA 2 2008_PN.cer new file mode 100644 index 00000000..bc3a9780 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified Root CA 2 2008_PN.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified Root CA 3 2008_PN.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified Root CA 3 2008_PN.cer new file mode 100644 index 00000000..a96e4ee6 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified Root CA 3 2008_PN.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_CA_1_2006.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_CA_1_2006.crt new file mode 100644 index 00000000..51d618b6 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_CA_1_2006.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_CA_2_2006.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_CA_2_2006.crt new file mode 100644 index 00000000..37bdf307 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_CA_2_2006.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_CA_3_2007.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_CA_3_2007.crt new file mode 100644 index 00000000..dddbbe63 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_CA_3_2007.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_Root_CA_1_2006.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_Root_CA_1_2006.crt new file mode 100644 index 00000000..39067943 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_Root_CA_1_2006.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_Root_CA_2_2006.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_Root_CA_2_2006.crt new file mode 100644 index 00000000..550be62d Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_Root_CA_2_2006.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_Root_CA_3_2007.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_Root_CA_3_2007.crt new file mode 100644 index 00000000..a6e00b53 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_Root_CA_3_2007.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax Secure Global eBusiness CA-1.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax Secure Global eBusiness CA-1.crt new file mode 100644 index 00000000..f1edb673 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax Secure Global eBusiness CA-1.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax Secure eBusiness CA-1.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax Secure eBusiness CA-1.crt new file mode 100644 index 00000000..79b0a3f9 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax Secure eBusiness CA-1.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax Secure eBusiness CA-2.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax Secure eBusiness CA-2.crt new file mode 100644 index 00000000..a55903a6 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax Secure eBusiness CA-2.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax_Secure_Certificate_Authority_DER.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax_Secure_Certificate_Authority_DER.cer new file mode 100644 index 00000000..c44db274 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax_Secure_Certificate_Authority_DER.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/GTE CyberTrust Global Root.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/GTE CyberTrust Global Root.cer new file mode 100644 index 00000000..e37fa29b Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/GTE CyberTrust Global Root.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Halcom CA PO 2.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Halcom CA PO 2.crt new file mode 100644 index 00000000..c24f3691 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Halcom CA PO 2.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterApplication.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterApplication.cer new file mode 100644 index 00000000..2d828eb4 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterApplication.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterEncryption.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterEncryption.cer new file mode 100644 index 00000000..f674c177 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterEncryption.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterExtern.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterExtern.cer new file mode 100644 index 00000000..179b8afc Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterExtern.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterNet.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterNet.cer new file mode 100644 index 00000000..9bbf044d Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterNet.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterRoot.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterRoot.cer new file mode 100644 index 00000000..30545b43 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterRoot.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterSigner.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterSigner.cer new file mode 100644 index 00000000..c9253662 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterSigner.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TC TrustCenter Class 3 CA.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TC TrustCenter Class 3 CA.crt new file mode 100644 index 00000000..bf14ae30 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TC TrustCenter Class 3 CA.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TC TrustCenter Class 3 L1 CA V.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TC TrustCenter Class 3 L1 CA V.crt new file mode 100644 index 00000000..de5c7184 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TC TrustCenter Class 3 L1 CA V.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TCTrustCenter-Class2-CA.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TCTrustCenter-Class2-CA.cer new file mode 100644 index 00000000..3f376a7b Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TCTrustCenter-Class2-CA.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Thawte Premium Server CA.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Thawte Premium Server CA.crt new file mode 100644 index 00000000..59b1059f Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Thawte Premium Server CA.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Thwate-ServerCA.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Thwate-ServerCA.cer new file mode 100644 index 00000000..8588ce58 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Thwate-ServerCA.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMark-VSC-01.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMark-VSC-01.crt new file mode 100644 index 00000000..e43ae846 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMark-VSC-01.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMark-WebServer-01.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMark-WebServer-01.crt new file mode 100644 index 00000000..8286cabb Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMark-WebServer-01.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMark-WebServer-01a.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMark-WebServer-01a.crt new file mode 100644 index 00000000..a0148f63 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMark-WebServer-01a.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMarkToken-Enc-01.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMarkToken-Enc-01.crt new file mode 100644 index 00000000..fd95a2d1 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMarkToken-Enc-01.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMarkToken-Sig-01.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMarkToken-Sig-01.crt new file mode 100644 index 00000000..3758c93b Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMarkToken-Sig-01.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustSign-Enc-01_cACertificate1.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustSign-Enc-01_cACertificate1.crt new file mode 100644 index 00000000..84a1690d Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustSign-Enc-01_cACertificate1.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustSign-Enc-01_cACertificate2.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustSign-Enc-01_cACertificate2.crt new file mode 100644 index 00000000..2a88295a Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustSign-Enc-01_cACertificate2.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/VeriSign Class 3 Secure Server CA.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/VeriSign Class 3 Secure Server CA.crt new file mode 100644 index 00000000..2d34c112 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/VeriSign Class 3 Secure Server CA.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Verisign-SecureServerCertificationAuthority.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Verisign-SecureServerCertificationAuthority.cer new file mode 100644 index 00000000..b76137b1 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Verisign-SecureServerCertificationAuthority.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-cert-advanced.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-cert-advanced.cer new file mode 100644 index 00000000..66ff251b Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-cert-advanced.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-cert-government.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-cert-government.cer new file mode 100644 index 00000000..c4d97cda Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-cert-government.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Inhouse-03.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Inhouse-03.crt new file mode 100644 index 00000000..a30624f3 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Inhouse-03.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Enc-03.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Enc-03.crt new file mode 100644 index 00000000..c1a304eb Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Enc-03.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Sig-01.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Sig-01.crt new file mode 100644 index 00000000..d53dce92 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Sig-01.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Sig-02.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Sig-02.cer new file mode 100644 index 00000000..cc35ba69 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Sig-02.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Sig-03.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Sig-03.crt new file mode 100644 index 00000000..ea1585a6 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Sig-03.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-SSL-03.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-SSL-03.cer new file mode 100644 index 00000000..a699436c Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-SSL-03.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-03.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-03.cer new file mode 100644 index 00000000..762079c8 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-03.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Enc-01.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Enc-01.crt new file mode 100644 index 00000000..a2920518 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Enc-01.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Enc-01a.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Enc-01a.crt new file mode 100644 index 00000000..663d379a Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Enc-01a.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Sig-01.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Sig-01.crt new file mode 100644 index 00000000..3a6e249d Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Sig-01.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Sig-01a.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Sig-01a.crt new file mode 100644 index 00000000..80181433 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Sig-01a.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-company-root-03.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-company-root-03.cer new file mode 100644 index 00000000..9a24c564 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-company-root-03.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-03.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-03.cer new file mode 100644 index 00000000..b15880c2 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-03.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-01.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-01.cer new file mode 100644 index 00000000..508f7f07 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-01.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-01.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-01.crt new file mode 100644 index 00000000..25ab4cd0 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-01.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-02.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-02.cer new file mode 100644 index 00000000..61a7ccb1 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-02.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-03.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-03.cer new file mode 100644 index 00000000..5171276f Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-03.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-medium-01.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-medium-01.cer new file mode 100644 index 00000000..c5bcc42e Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-medium-01.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-medium-02.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-medium-02.cer new file mode 100644 index 00000000..0a1fcff8 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-medium-02.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-strong-01.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-strong-01.cer new file mode 100644 index 00000000..91acd396 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-strong-01.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-strong-02.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-strong-02.cer new file mode 100644 index 00000000..88275398 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-strong-02.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-developer-01.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-developer-01.cer new file mode 100644 index 00000000..c31bc26f Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-developer-01.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-01.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-01.cer new file mode 100644 index 00000000..0b6804fe Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-01.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-01.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-01.crt new file mode 100644 index 00000000..843aee88 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-01.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-01a.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-01a.crt new file mode 100644 index 00000000..6e17b9db Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-01a.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-02.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-02.cer new file mode 100644 index 00000000..cf732c21 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-02.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-03.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-03.cer new file mode 100644 index 00000000..7c914622 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-03.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-limited-03.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-limited-03.crt new file mode 100644 index 00000000..262a55ef Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-limited-03.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-premium-enc-01.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-premium-enc-01.cer new file mode 100644 index 00000000..4adc3b7e Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-premium-enc-01.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-premium-enc-02.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-premium-enc-02.cer new file mode 100644 index 00000000..bc5ed1e6 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-premium-enc-02.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-premium-sig-01.crt.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-premium-sig-01.crt.cer new file mode 100644 index 00000000..5375c57c Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-premium-sig-01.crt.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-token-enc-01.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-token-enc-01.cer new file mode 100644 index 00000000..a02ca24f Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-token-enc-01.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-token-sig-01.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-token-sig-01.cer new file mode 100644 index 00000000..6d46b6c1 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-token-sig-01.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-trust-nQual-0120041213.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-trust-nQual-0120041213.cer new file mode 100644 index 00000000..efa28178 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-trust-nQual-0120041213.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature Advanced.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature Advanced.crt new file mode 100644 index 00000000..e3a2627a Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature Advanced.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature Basic med.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature Basic med.crt new file mode 100644 index 00000000..9526b3d7 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature Basic med.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature Basic.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature Basic.crt new file mode 100644 index 00000000..5b1943da Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature Basic.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature SSL.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature SSL.crt new file mode 100644 index 00000000..e501549c Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature SSL.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/mobilkom_A1-Signatur_20060912-20110912_SerNo027866.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/mobilkom_A1-Signatur_20060912-20110912_SerNo027866.cer new file mode 100644 index 00000000..7e9fd5b0 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/mobilkom_A1-Signatur_20060912-20110912_SerNo027866.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/telekom-control-kommission-top-1.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/telekom-control-kommission-top-1.cer new file mode 100644 index 00000000..9628f191 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/telekom-control-kommission-top-1.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMark-VSC-01.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMark-VSC-01.cer new file mode 100644 index 00000000..d2e7db66 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMark-VSC-01.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMark-WebServer-01.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMark-WebServer-01.cer new file mode 100644 index 00000000..41244878 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMark-WebServer-01.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMarkToken-Enc-01.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMarkToken-Enc-01.cer new file mode 100644 index 00000000..ff875cbd Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMarkToken-Enc-01.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMarkToken-sig-01.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMarkToken-sig-01.cer new file mode 100644 index 00000000..270bc512 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMarkToken-sig-01.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustSign-Enc-01.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustSign-Enc-01.cer new file mode 100644 index 00000000..e18893c8 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustSign-Enc-01.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustSign-Sig-01.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustSign-Sig-01.cer new file mode 100644 index 00000000..46407027 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustSign-Sig-01.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/verisign.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/verisign.cer new file mode 100644 index 00000000..1c84d8b5 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/verisign.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/versignc3.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/versignc3.cer new file mode 100644 index 00000000..c61d2958 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/versignc3.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/www.buergerkarte.at.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/www.buergerkarte.at.crt new file mode 100644 index 00000000..82ce6ec2 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/www.buergerkarte.at.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Light CA.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Light CA.crt new file mode 100644 index 00000000..0a8de4bb Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Light CA.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Medium CA.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Medium CA.crt new file mode 100644 index 00000000..69a8e487 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Medium CA.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Premium CA.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Premium CA.crt new file mode 100644 index 00000000..10a1f714 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Premium CA.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Strong CA.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Strong CA.crt new file mode 100644 index 00000000..4dd2c49b Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Strong CA.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-SignProjects.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-SignProjects.crt new file mode 100644 index 00000000..a7948e48 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-SignProjects.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-0120041213.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-0120041213.cer new file mode 100644 index 00000000..f9fef65f Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-0120041213.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-01_CA.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-01_CA.crt new file mode 100644 index 00000000..d361d919 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-01_CA.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-01_cACertificate1.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-01_cACertificate1.crt new file mode 100644 index 00000000..45dfed45 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-01_cACertificate1.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-01_cACertificate2.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-01_cACertificate2.crt new file mode 100644 index 00000000..f9f27442 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-01_cACertificate2.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-03.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-03.crt new file mode 100644 index 00000000..ab9e0cd7 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-03.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-a-sign-uni.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-a-sign-uni.cer new file mode 100644 index 00000000..83aeb1fc Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-a-sign-uni.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-01_cACertificate1.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-01_cACertificate1.crt new file mode 100644 index 00000000..b7d4b08a Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-01_cACertificate1.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-01a.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-01a.cer new file mode 100644 index 00000000..289fc219 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-01a.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-01b.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-01b.cer new file mode 100644 index 00000000..69de7560 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-01b.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-03.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-03.cer new file mode 100644 index 00000000..33e77636 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-03.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-trust-Qual-02.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-trust-Qual-02.cer new file mode 100644 index 00000000..36a442b8 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-trust-Qual-02.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/CA-root-1.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/CA-root-1.cer new file mode 100644 index 00000000..3be7b6a0 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/CA-root-1.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST Qualified Root CA 1 2008_PN.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST Qualified Root CA 1 2008_PN.cer new file mode 100644 index 00000000..131fe4e1 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST Qualified Root CA 1 2008_PN.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST Qualified Root CA 2 2008_PN.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST Qualified Root CA 2 2008_PN.cer new file mode 100644 index 00000000..bc3a9780 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST Qualified Root CA 2 2008_PN.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST Qualified Root CA 3 2008_PN.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST Qualified Root CA 3 2008_PN.cer new file mode 100644 index 00000000..a96e4ee6 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST Qualified Root CA 3 2008_PN.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST_Qualified_Root_CA_1_2006.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST_Qualified_Root_CA_1_2006.crt new file mode 100644 index 00000000..39067943 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST_Qualified_Root_CA_1_2006.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST_Qualified_Root_CA_2_2006.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST_Qualified_Root_CA_2_2006.crt new file mode 100644 index 00000000..550be62d Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST_Qualified_Root_CA_2_2006.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST_Qualified_Root_CA_3_2007.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST_Qualified_Root_CA_3_2007.crt new file mode 100644 index 00000000..a6e00b53 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST_Qualified_Root_CA_3_2007.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax Secure Global eBusiness CA-1.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax Secure Global eBusiness CA-1.crt new file mode 100644 index 00000000..f1edb673 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax Secure Global eBusiness CA-1.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax Secure eBusiness CA-1.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax Secure eBusiness CA-1.crt new file mode 100644 index 00000000..79b0a3f9 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax Secure eBusiness CA-1.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax Secure eBusiness CA-2.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax Secure eBusiness CA-2.crt new file mode 100644 index 00000000..a55903a6 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax Secure eBusiness CA-2.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax_Secure_Certificate_Authority_DER.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax_Secure_Certificate_Authority_DER.cer new file mode 100644 index 00000000..c44db274 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax_Secure_Certificate_Authority_DER.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/GTE CyberTrust Global Root.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/GTE CyberTrust Global Root.cer new file mode 100644 index 00000000..e37fa29b Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/GTE CyberTrust Global Root.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Halcom CA PO 2.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Halcom CA PO 2.crt new file mode 100644 index 00000000..c24f3691 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Halcom CA PO 2.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/StadtWienTrustcenterRoot.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/StadtWienTrustcenterRoot.cer new file mode 100644 index 00000000..30545b43 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/StadtWienTrustcenterRoot.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/TC TrustCenter Class 3 CA.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/TC TrustCenter Class 3 CA.crt new file mode 100644 index 00000000..bf14ae30 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/TC TrustCenter Class 3 CA.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/TCTrustCenter-Class2-CA.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/TCTrustCenter-Class2-CA.cer new file mode 100644 index 00000000..3f376a7b Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/TCTrustCenter-Class2-CA.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Thawte Premium Server CA.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Thawte Premium Server CA.crt new file mode 100644 index 00000000..59b1059f Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Thawte Premium Server CA.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Thwate-ServerCA.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Thwate-ServerCA.cer new file mode 100644 index 00000000..8588ce58 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Thwate-ServerCA.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Verisign-SecureServerCertificationAuthority.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Verisign-SecureServerCertificationAuthority.cer new file mode 100644 index 00000000..b76137b1 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Verisign-SecureServerCertificationAuthority.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/a-cert-advanced.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/a-cert-advanced.cer new file mode 100644 index 00000000..66ff251b Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/a-cert-advanced.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/a-trust-nQual-0120041213.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/a-trust-nQual-0120041213.cer new file mode 100644 index 00000000..efa28178 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/a-trust-nQual-0120041213.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/eSignature Advanced.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/eSignature Advanced.crt new file mode 100644 index 00000000..e3a2627a Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/eSignature Advanced.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/eSignature Basic.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/eSignature Basic.crt new file mode 100644 index 00000000..5b1943da Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/eSignature Basic.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/eSignature SSL.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/eSignature SSL.crt new file mode 100644 index 00000000..e501549c Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/eSignature SSL.crt differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/versignc3.cer b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/versignc3.cer new file mode 100644 index 00000000..c61d2958 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/versignc3.cer differ diff --git a/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/www.buergerkarte.at.crt b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/www.buergerkarte.at.crt new file mode 100644 index 00000000..82ce6ec2 Binary files /dev/null and b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/www.buergerkarte.at.crt differ diff --git a/mocca-1.2.11/BKUCommonGUI/pom.xml b/mocca-1.2.11/BKUCommonGUI/pom.xml new file mode 100644 index 00000000..b0ac6418 --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/pom.xml @@ -0,0 +1,43 @@ + + + bku + at.gv.egiz + 1.2.11 + + 4.0.0 + at.gv.egiz + BKUCommonGUI + BKU GUI + 1.2.11 + + + at.gv.egiz + smcc + 1.2.11 + + + at.gv.egiz + STAL + 1.2.11 + compile + + + + + + + maven-compiler-plugin + org.apache.maven.plugins + + false + + + + + \ No newline at end of file diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/META-INF/MANIFEST.MF b/mocca-1.2.11/BKUCommonGUI/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 00000000..5e949512 --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/AbstractHelpListener.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/AbstractHelpListener.java new file mode 100644 index 00000000..6fd1ffea --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/AbstractHelpListener.java @@ -0,0 +1,103 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.net.MalformedURLException; +import java.net.URL; +import java.util.Locale; +import java.util.ResourceBundle; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Implement the showDocument(URL) method to provide an actual HelpListener. + * This class does not keep a GUI reference and subclasses should not interfere with the GUI. + * Therefore, any errors occurring in showDocument() should be handled/displayed within + * showDocument() and exceptions thrown from showDocument() are logged, not displayed in the GUI. + *
+ * The help URL is build as [baseURL]/[locale]/[helpTopic].html + * (note that no session information is contained). + * + * @author Clemens Orthacker + */ +public abstract class AbstractHelpListener implements ActionListener { + + /** + * any locale not in the list will be mapped to 'de' + */ + public static final String[] SUPPORTED_LANGUAGES = new String[] { "de" }; + + protected final static Log log = LogFactory.getLog(AbstractHelpListener.class); + protected URL baseURL; + protected Locale locale; + protected ResourceBundle messages; + + public AbstractHelpListener(URL baseURL, Locale locale) { + if (baseURL == null || "".equals(baseURL.toString())) { + throw new RuntimeException("no help URL provided"); + } + this.baseURL = baseURL; + this.locale = locale; + if (locale != null) { + messages = ResourceBundle.getBundle(BKUGUIFacade.MESSAGES_BUNDLE, locale); + } else { + messages = ResourceBundle.getBundle(BKUGUIFacade.MESSAGES_BUNDLE); + } + } + + @Override + public void actionPerformed(ActionEvent e) { + log.debug("received help action: " + e.getActionCommand()); + URL helpURL = constructHelpURL(baseURL, e.getActionCommand()); + try { + showDocument(helpURL, e.getActionCommand()); + } catch (Exception ex) { + log.error("could not display help document " + helpURL + ": " + ex.getMessage()); + } + } + + private URL constructHelpURL(URL baseURL, String helpTopic) { + URL helpURL = baseURL; + log.trace("constructing help URL: " + helpURL); + try { + // not localized for now + //check if locale.getLanguage() supported and add default if not +// if (locale != null) { +// helpURL = new URL(helpURL, locale.toString() + "/"); +// log.trace("constructing help URL: " + helpURL); +// } + if (helpTopic != null && !"".equals(helpTopic)) { + helpURL = new URL(helpURL, "de/" + helpTopic + ".html"); + log.trace("constructing help URL: " + helpURL); + } + } catch (MalformedURLException ex) { + log.error("Failed to construct help URL for help item " + helpTopic + ": " + ex.getMessage()); + } + return helpURL; + } + + /** + * Errors from HelpListeners should not (are not) displayed in the applet, + * but should rather be in the HelpListener specific way. + * Therefore, implementations SHOULD NOT throw exceptions (these are only logged). + * @param helpDocument + * @throws java.lang.Exception + */ + public abstract void showDocument(URL helpDocument, String helpTopic) throws Exception; +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUGUIFacade.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUGUIFacade.java new file mode 100644 index 00000000..1e23c64c --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUGUIFacade.java @@ -0,0 +1,176 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + + import at.gv.egiz.stal.HashDataInput; +import at.gv.egiz.smcc.PINSpec; +import java.awt.Color; +import java.awt.event.ActionListener; +import java.util.List; +import java.util.Locale; + +public interface BKUGUIFacade { + + public static final String ERR_UNKNOWN_WITH_PARAM = "error.unknown.param"; + public static final String ERR_UNKNOWN = "error.unknown"; + public static final String ERR_SERVICE_UNREACHABLE = "error.ws.unreachable"; + public static final String ERR_NO_PCSC = "error.pcsc"; + public static final String ERR_NO_CARDTERMINAL = "error.cardterminal"; + public static final String ERR_NO_HASHDATA = "error.no.hashdata"; + public static final String ERR_DISPLAY_HASHDATA = "error.display.hashdata"; + public static final String ERR_WRITE_HASHDATA = "error.write.hashdata"; + public static final String ERR_INVALID_HASH = "error.invalid.hash"; + public static final String ERR_CARD_LOCKED = "error.card.locked"; + public static final String ERR_CARD_NOTACTIVATED = "error.card.notactivated"; + public static final String ERR_PIN_TIMEOUT = "error.pin.timeout"; + public static final String ERR_VIEWER = "error.viewer"; + public static final String ERR_EXTERNAL_LINK = "error.external.link"; + public static final String ERR_CONFIG = "error.config"; + + /** no leading slash for Messages resource, leading slash for images */ + public static final String MESSAGES_BUNDLE = "at/gv/egiz/bku/gui/Messages"; + public static final String DEFAULT_BACKGROUND = "/at/gv/egiz/bku/gui/chip32.png"; + public static final String DEFAULT_ICON = "/at/gv/egiz/bku/gui/chiperling105.png"; + public static final String HELP_IMG = "/at/gv/egiz/bku/gui/help.png"; + public static final String HELP_IMG_FOCUS = "/at/gv/egiz/bku/gui/help.png"; //help_focus.png"; + public static final String HASHDATA_FONT = "Monospaced"; + public static final Color ERROR_COLOR = Color.RED; + public static final Color HYPERLINK_COLOR = Color.BLUE; + public static final String TITLE_WELCOME = "title.welcome"; + public static final String TITLE_INSERTCARD = "title.insertcard"; + public static final String TITLE_CARD_NOT_SUPPORTED = "title.cardnotsupported"; + public static final String TITLE_VERIFY_PIN = "title.verify.pin"; + public static final String TITLE_SIGN = "title.sign"; + public static final String TITLE_VERIFY_PINPAD = "title.verify.pinpad"; + public static final String TITLE_ERROR = "title.error"; + public static final String TITLE_WARNING = "title.warning"; + public static final String TITLE_ENTRY_TIMEOUT = "title.entry.timeout"; + public static final String TITLE_RETRY = "title.retry"; + public static final String TITLE_WAIT = "title.wait"; + public static final String TITLE_SIGNATURE_DATA = "title.signature.data"; + public static final String WINDOWTITLE_SAVE = "windowtitle.save"; + public static final String WINDOWTITLE_ERROR = "windowtitle.error"; + public static final String WINDOWTITLE_SAVEDIR = "windowtitle.savedir"; + public static final String WINDOWTITLE_OVERWRITE = "windowtitle.overwrite"; + public static final String WINDOWTITLE_VIEWER = "windowtitle.viewer"; + public static final String WINDOWTITLE_HELP = "windowtitle.help"; + + // removed message.* prefix to reuse keys as help keys + public static final String MESSAGE_WELCOME = "welcome"; + public static final String MESSAGE_WAIT = "wait"; + public static final String MESSAGE_INSERTCARD = "insertcard"; + public static final String MESSAGE_CARD_NOT_SUPPORTED = "cardnotsupported"; + public static final String MESSAGE_ENTERPIN = "enterpin"; + public static final String MESSAGE_ENTERPIN_PINPAD = "enterpin.pinpad"; + public static final String MESSAGE_ENTERPIN_PINPAD_DIRECT = "enterpin.pinpad.direct"; + public static final String MESSAGE_HASHDATALINK = "hashdatalink"; + public static final String MESSAGE_HASHDATALINK_TINY = "hashdatalink.tiny"; + public static final String MESSAGE_HASHDATALINK_FOCUS = "hashdatalink.focus"; + public static final String MESSAGE_HASHDATALINK_TINY_FOCUS = "hashdatalink.tiny.focus"; + public static final String MESSAGE_HASHDATALIST = "hashdatalist"; + public static final String MESSAGE_HASHDATA_VIEWER = "hashdata.viewer"; + public static final String MESSAGE_UNSUPPORTED_MIMETYPE = "unsupported.mimetype"; + public static final String MESSAGE_RETRIES = "retries"; + public static final String MESSAGE_LAST_RETRY = "retries.last"; + public static final String MESSAGE_RETRIES_PINPAD = "retries.pinpad"; + public static final String MESSAGE_LAST_RETRY_PINPAD = "retries.pinpad.last"; + public static final String MESSAGE_OVERWRITE = "overwrite"; + public static final String MESSAGE_HELP = "help"; + + public static final String WARNING_XHTML = "warning.xhtml"; + public static final String LABEL_PIN = "label.pin"; + public static final String LABEL_PINSIZE = "label.pinsize"; + public static final String HELP_WELCOME = "help.welcome"; + public static final String HELP_WAIT = "help.wait"; + public static final String HELP_CARDNOTSUPPORTED = "help.cardnotsupported"; + public static final String HELP_INSERTCARD = "help.insertcard"; + public static final String HELP_VERIFY_PIN = "help.cardpin"; + public static final String HELP_SIGNPIN = "help.signpin"; + public static final String HELP_PINPAD = "help.pinpad"; + public static final String HELP_RETRY = "help.retry"; + public static final String HELP_HASHDATA = "help.hashdata"; + public static final String HELP_HASHDATALIST = "help.hashdatalist"; + public static final String HELP_HASHDATAVIEWER = "help.hashdataviewer"; + public static final String BUTTON_OK = "button.ok"; + public static final String BUTTON_CANCEL = "button.cancel"; + public static final String BUTTON_BACK = "button.back"; + public static final String BUTTON_SIGN = "button.sign"; + public static final String BUTTON_SAVE = "button.save"; + public static final String BUTTON_CLOSE = "button.close"; + public static final String SAVE_HASHDATAINPUT_PREFIX = "save.hashdatainput.prefix"; + public static final String ALT_HELP = "alt.help"; + + public void showEnterPINDirect(PINSpec spec, int retries); + + public void showEnterPIN(PINSpec spec, int retries); + + public void showSignatureDataDialog(PINSpec spec, ActionListener listener, String string, ActionListener aThis0, String string0, ActionListener aThis1, String string1); + + public void correctionButtonPressed(); + + public void allKeysCleared(); + + public void validKeyPressed(); + + public enum Style { tiny, simple, advanced }; + + /** + * BKUWorker needs to init signature card with locale + * @return + */ + public Locale getLocale(); + + public void showVerifyPINDialog(PINSpec pinSpec, int numRetries, + ActionListener okListener, String okCommand, + ActionListener cancelListener, String cancelCommand); + + public void showSignaturePINDialog(PINSpec pinSpec, int numRetries, + ActionListener signListener, String signCommand, + ActionListener cancelListener, String cancelCommand, + ActionListener viewerListener, String viewerCommand); + + public char[] getPin(); + + /** + * + * @param dataToBeSigned + * @param backListener if list of references hides pin dialog, backListener + * receives an action when user hits 'back' button (i.e. whenever the pin-dialog + * needs to be re-paint) + * @param backCommand + */ + public void showSecureViewer(List dataToBeSigned, + ActionListener backListener, String backCommand); + + public void showErrorDialog(String errorMsgKey, Object[] errorMsgParams, + ActionListener okListener, String okCommand); + + public void showErrorDialog(String errorMsgKey, Object[] errorMsgParams); + + public void showMessageDialog(String titleKey, + String msgKey, Object[] msgParams, + String buttonKey, + ActionListener okListener, String okCommand); + + public void showMessageDialog(String titleKey, + String msgKey, Object[] msgParams); + + public void showMessageDialog(String titleKey, + String msgKey); + + public void getFocusFromBrowser(); +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUGUIImpl.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUGUIImpl.java new file mode 100644 index 00000000..e005836c --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUGUIImpl.java @@ -0,0 +1,1665 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import at.gv.egiz.bku.gui.viewer.FontProviderException; +import at.gv.egiz.bku.gui.viewer.FontProvider; +import at.gv.egiz.bku.gui.viewer.SecureViewerSaveDialog; +import at.gv.egiz.smcc.PINSpec; +import at.gv.egiz.stal.HashDataInput; +import java.awt.Color; +import java.awt.Container; +import java.awt.Cursor; +import java.awt.Font; +import java.awt.Window; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseMotionAdapter; +import java.net.URL; +import java.text.MessageFormat; +import java.util.List; +import java.util.Locale; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.swing.GroupLayout; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JPasswordField; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.LayoutStyle; +import javax.swing.ListSelectionModel; +import javax.swing.SwingUtilities; +import javax.swing.UIManager; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import javax.swing.text.BadLocationException; +import javax.swing.text.Document; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + + + +/** + * + * @author clemens + */ +public class BKUGUIImpl implements BKUGUIFacade { + + protected static final Log log = LogFactory.getLog(BKUGUIImpl.class); + + protected enum PinLabelPosition { + LEFT, ABOVE + } + + protected HelpMouseListener helpMouseListener; + protected HelpKeyListener helpKeyListener; + protected SwitchFocusFocusListener switchFocusKeyListener; + protected SecureViewerDialog secureViewer; + protected FontProvider fontProvider; + + protected Container contentPane; + protected ResourceBundle messages; + /** left and right side main panels */ + protected JPanel iconPanel; + protected JPanel contentPanel; + /** right side content panels and layouts */ + protected JPanel headerPanel; + protected JPanel mainPanel; + protected JPanel buttonPanel; + /** right side fixed labels */ + protected JLabel titleLabel; + protected JLabel helpLabel; + protected JLabel switchFocusDummyLabel; + /** remember the pinfield to return to worker */ + protected JPasswordField pinField; + protected Document pinpadPIN; + + protected int buttonSize; + + /** gui style config (default 'simple') */ + protected boolean renderHeaderPanel = false; + protected boolean renderIconPanel = false; + protected boolean renderCancelButton = false; + protected boolean shortText = false; + protected PinLabelPosition pinLabelPos = PinLabelPosition.LEFT; + protected boolean renderRefId = false; + + /** + * set contentPane + * init message bundle + * configure the style + * register the help listener + * create GUI (on event-dispatching thread) + * + * @param contentPane + * @param locale + * @param guiStyle + * @param background + * @param helpListener + */ + public BKUGUIImpl(Container contentPane, + Locale locale, + Style guiStyle, + URL background, + FontProvider fontProvider, + ActionListener helpListener, + SwitchFocusListener switchFocusListener) { + this.contentPane = contentPane; + + loadMessageBundle(locale); + + if (guiStyle == Style.advanced) { + renderHeaderPanel = true; + renderIconPanel = false; + renderCancelButton = true; + renderRefId = true; + } else if (guiStyle == Style.tiny) { + shortText = true; + pinLabelPos = PinLabelPosition.ABOVE; + } + + // ensure that buttons can be fired with enter key too + UIManager.put("Button.defaultButtonFollowsFocus", Boolean.TRUE); + + registerHelpListener(helpListener); + + registerSwitchFocusListener(switchFocusListener); + + this.fontProvider = fontProvider; + createGUI(background); + } + + private void createGUI(final URL background) { + + try { + + log.debug("scheduling gui initialization"); + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + + log.debug("[" + Thread.currentThread().getName() + "] initializing gui"); + + if (renderIconPanel) { + initIconPanel(background); + initContentPanel(null); + } else { + initContentPanel(background); + } + + GroupLayout layout = new GroupLayout(contentPane); + contentPane.setLayout(layout); + + if (renderIconPanel) { + layout.setHorizontalGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(iconPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(contentPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addContainerGap()); + layout.setVerticalGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(iconPanel, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(contentPanel, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap()); + } else { + layout.setHorizontalGroup(layout.createSequentialGroup() + // left border + .addContainerGap() + .addComponent(contentPanel) + .addContainerGap()); + layout.setVerticalGroup(layout.createSequentialGroup() + .addContainerGap() + .addComponent(contentPanel) + .addContainerGap()); + } + } + }); + } catch (Exception ex) { + throw new RuntimeException("Failed to init GUI: " + ex.getMessage()); + } + } + + protected void initIconPanel(URL background) { + if (background == null) { + background = getClass().getResource(DEFAULT_ICON); + } + if ("file".equals(background.getProtocol())) { + log.warn("file:// background images not permitted: " + background + + ", loading default background"); + background = getClass().getResource(DEFAULT_ICON); + } + log.debug("loading icon panel background " + background); + + iconPanel = new JPanel(); + JLabel iconLabel = new JLabel(); + iconLabel.setIcon(new ImageIcon(background)); + + GroupLayout iconPanelLayout = new GroupLayout(iconPanel); + iconPanel.setLayout(iconPanelLayout); + iconPanelLayout.setHorizontalGroup( + iconPanelLayout.createSequentialGroup() + .addComponent(iconLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)); + iconPanelLayout.setVerticalGroup( + iconPanelLayout.createSequentialGroup() + .addComponent(iconLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)); + } + + protected void initContentPanel(URL background) { + + if (background == null) { + log.debug("no background image set"); +// contentPanel = new ImagePanel(getClass().getResource(DEFAULT_BACKGROUND)); + contentPanel = new JPanel(); + } else if ("file".equals(background.getProtocol())) { + log.warn("file:// background images not permitted: " + background); + contentPanel = new JPanel(); + } else { + log.debug("loading background " + background); + contentPanel = new ImagePanel(background); + } + contentPanel.setOpaque(false); + mainPanel = new JPanel(); + mainPanel.setOpaque(false); + buttonPanel = new JPanel(); + buttonPanel.setOpaque(false); + + helpLabel = new JLabel(); + helpLabel.setIcon(new ImageIcon(getClass().getResource(HELP_IMG))); + helpLabel.getAccessibleContext().setAccessibleName(getMessage(ALT_HELP)); + helpLabel.setFocusable(true); + helpLabel.addMouseListener(helpMouseListener); + helpLabel.addKeyListener(helpKeyListener); + helpLabel.addFocusListener(new FocusAdapter() { + + @Override + public void focusGained(FocusEvent e) { + + helpLabel.setIcon(new ImageIcon(getClass().getResource(HELP_IMG_FOCUS))); + } + + @Override + public void focusLost(FocusEvent e) { + + helpLabel.setIcon(new ImageIcon(getClass().getResource(HELP_IMG))); + } + + + }); + helpLabel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + + switchFocusDummyLabel = new JLabel(); + switchFocusDummyLabel.setText(""); + switchFocusDummyLabel.setFocusable(true); + switchFocusDummyLabel.addFocusListener(switchFocusKeyListener); + + buttonSize = initButtonSize(); + + if (renderHeaderPanel) { + headerPanel = new JPanel(); + headerPanel.setOpaque(false); + + titleLabel = new JLabel(); + titleLabel.setFont(titleLabel.getFont().deriveFont(titleLabel.getFont().getStyle() | + java.awt.Font.BOLD, titleLabel.getFont().getSize() + 2)); + + GroupLayout headerPanelLayout = new GroupLayout(headerPanel); + headerPanel.setLayout(headerPanelLayout); + + headerPanelLayout.setHorizontalGroup( + headerPanelLayout.createSequentialGroup() + .addComponent(titleLabel, 0, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE) + .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED, 0, Short.MAX_VALUE) + .addComponent(switchFocusDummyLabel) + .addComponent(helpLabel) + ); + headerPanelLayout.setVerticalGroup( + headerPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(titleLabel, 0, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE) + .addComponent(switchFocusDummyLabel) + .addComponent(helpLabel) + ); + } + + GroupLayout contentPanelLayout = new GroupLayout(contentPanel); + contentPanel.setLayout(contentPanelLayout); + + // align header, main and button to the right + GroupLayout.ParallelGroup horizontalContent = + contentPanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING); //LEADING); + GroupLayout.SequentialGroup verticalContent = + contentPanelLayout.createSequentialGroup(); + + if (renderHeaderPanel) { + horizontalContent + .addComponent(headerPanel, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE); + verticalContent + .addComponent(headerPanel, 0, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED); + + } + horizontalContent + .addComponent(mainPanel, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonPanel, 0, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE); //Short.MAX_VALUE); + verticalContent + .addComponent(mainPanel, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(buttonPanel, 0, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE); + + contentPanelLayout.setHorizontalGroup(horizontalContent); //Outer); + contentPanelLayout.setVerticalGroup(verticalContent); + } + + /** + * BKUWorker inits signaturecard with locale + * @return + */ + @Override + public Locale getLocale() { + return messages.getLocale(); + } + + /** + * to be overridden by subclasses providing additional resource messages + * @param key + * @return + */ + protected String getMessage(String key) { + return messages.getString(key); + } + + /** + * to be overridden by subclasses providing additional resource messages + * @param key + * @return + */ + protected boolean hasMessage(String key) { + return messages.containsKey(key); + } + + @Override + public void showVerifyPINDialog(final PINSpec pinSpec, final int numRetries, + final ActionListener okListener, final String okCommand, + final ActionListener cancelListener, final String cancelCommand) { + + log.debug("scheduling verify pin dialog"); + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + + log.debug("[" + Thread.currentThread().getName() + "] show verify pin dialog"); + + mainPanel.removeAll(); + buttonPanel.removeAll(); + + if (renderHeaderPanel) { + if (numRetries < 0) { + String verifyTitle = getMessage(TITLE_VERIFY_PIN); + titleLabel.setText(MessageFormat.format(verifyTitle, new Object[]{pinSpec.getLocalizedName()})); + } else { + titleLabel.setText(getMessage(TITLE_RETRY)); + } + } + + JButton okButton = new JButton(); + okButton.setFont(okButton.getFont().deriveFont(okButton.getFont().getStyle() & ~java.awt.Font.BOLD)); + okButton.setText(getMessage(BUTTON_OK)); + okButton.setEnabled(pinSpec.getMinLength() <= 0); + okButton.setActionCommand(okCommand); + okButton.addActionListener(okListener); + + JLabel cardPinLabel = new JLabel(); + cardPinLabel.setFont(cardPinLabel.getFont().deriveFont(cardPinLabel.getFont().getStyle() & ~java.awt.Font.BOLD)); + String pinLabel = getMessage(LABEL_PIN); + cardPinLabel.setText(MessageFormat.format(pinLabel, new Object[]{pinSpec.getLocalizedName()})); + + pinField = new JPasswordField(); + pinField.setText(""); + pinField.setDocument(new PINDocument(pinSpec.getMinLength(), pinSpec.getMaxLength(), pinSpec.getRexepPattern(), okButton)); + pinField.setActionCommand(okCommand); + pinField.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + if (pinField.getPassword().length >= pinSpec.getMinLength()) { + okListener.actionPerformed(e); + } + } + }); + + JLabel infoLabel = new JLabel(); + if (numRetries < 0) { + infoLabel.setFont(infoLabel.getFont().deriveFont(infoLabel.getFont().getStyle() & ~java.awt.Font.BOLD)); + String infoPattern = getMessage(MESSAGE_ENTERPIN); + if (shortText) { + infoLabel.setText(MessageFormat.format(infoPattern, new Object[] {"PIN"})); + } else { + infoLabel.setText(MessageFormat.format(infoPattern, new Object[] {pinSpec.getLocalizedName()})); + } + helpMouseListener.setHelpTopic(HELP_VERIFY_PIN); + helpKeyListener.setHelpTopic(HELP_VERIFY_PIN); + } else { + String retryPattern; + if (numRetries < 2) { + retryPattern = getMessage(MESSAGE_LAST_RETRY); + } else { + retryPattern = getMessage(MESSAGE_RETRIES); + } + infoLabel.setFont(infoLabel.getFont().deriveFont(infoLabel.getFont().getStyle() | java.awt.Font.BOLD)); + infoLabel.setText(MessageFormat.format(retryPattern, new Object[]{String.valueOf(numRetries)})); + infoLabel.setForeground(ERROR_COLOR); + helpMouseListener.setHelpTopic(HELP_RETRY); + helpKeyListener.setHelpTopic(HELP_RETRY); + } + + JLabel pinsizeLabel = new JLabel(); + pinsizeLabel.setFont(pinsizeLabel.getFont().deriveFont(pinsizeLabel.getFont().getStyle() & ~java.awt.Font.BOLD, pinsizeLabel.getFont().getSize()-2)); + pinsizeLabel.setText(MessageFormat.format(getMessage(LABEL_PINSIZE), pinSpec.getLocalizedLength())); + + GroupLayout mainPanelLayout = new GroupLayout(mainPanel); + mainPanel.setLayout(mainPanelLayout); + + GroupLayout.SequentialGroup infoHorizontal = mainPanelLayout.createSequentialGroup() + .addComponent(infoLabel); + GroupLayout.ParallelGroup infoVertical = mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(infoLabel); + + if (!renderHeaderPanel) { + infoHorizontal + .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED, 0, Short.MAX_VALUE) + .addComponent(switchFocusDummyLabel) + .addComponent(helpLabel) + ; + infoVertical + .addComponent(switchFocusDummyLabel) + .addComponent(helpLabel) + ; + } + + // align pinfield and pinsize to the right + GroupLayout.ParallelGroup pinHorizontal = mainPanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING); + GroupLayout.Group pinVertical; + + if (pinLabelPos == PinLabelPosition.ABOVE) { + pinHorizontal + .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(cardPinLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addComponent(pinField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(pinsizeLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE); + pinVertical = mainPanelLayout.createSequentialGroup() + .addComponent(cardPinLabel) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(pinField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE); + } else { + pinHorizontal + .addGroup(mainPanelLayout.createSequentialGroup() + .addComponent(cardPinLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(pinField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(pinsizeLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE); + pinVertical = mainPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(cardPinLabel) + .addComponent(pinField); + } + + mainPanelLayout.setHorizontalGroup( + mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(infoHorizontal) + .addGroup(pinHorizontal)); + + mainPanelLayout.setVerticalGroup( + mainPanelLayout.createSequentialGroup() + .addGroup(infoVertical) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(pinVertical) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(pinsizeLabel)); + + + GroupLayout buttonPanelLayout = new GroupLayout(buttonPanel); + buttonPanel.setLayout(buttonPanelLayout); + + GroupLayout.SequentialGroup buttonHorizontal = buttonPanelLayout.createSequentialGroup() + .addComponent(okButton, GroupLayout.PREFERRED_SIZE, buttonSize, GroupLayout.PREFERRED_SIZE); + GroupLayout.Group buttonVertical; + + if (renderCancelButton) { + JButton cancelButton = new JButton(); + cancelButton.setFont(cancelButton.getFont().deriveFont(cancelButton.getFont().getStyle() & ~java.awt.Font.BOLD)); + cancelButton.setText(getMessage(BUTTON_CANCEL)); + cancelButton.setActionCommand(cancelCommand); + cancelButton.addActionListener(cancelListener); + + buttonHorizontal + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cancelButton, GroupLayout.PREFERRED_SIZE, buttonSize, GroupLayout.PREFERRED_SIZE); + buttonVertical = buttonPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(okButton) + .addComponent(cancelButton); + } else { + buttonVertical = buttonPanelLayout.createSequentialGroup() + .addComponent(okButton); + } + + buttonPanelLayout.setHorizontalGroup(buttonHorizontal); + buttonPanelLayout.setVerticalGroup(buttonVertical); + +// pinField.requestFocusInWindow(); +// helpLabel.requestFocus(); + pinField.requestFocus(); + contentPanel.validate(); + + } + }); + } + + @Override + public void showEnterPINDirect(PINSpec pinSpec, int retries) { + if (retries < 0) { + showMessageDialog(TITLE_VERIFY_PINPAD, MESSAGE_ENTERPIN_PINPAD_DIRECT, new Object[] { + pinSpec.getLocalizedName(), pinSpec.getLocalizedLength() }); + } else { + showMessageDialog(TITLE_RETRY, MESSAGE_RETRIES, new Object[]{String.valueOf(retries) }); + } + } + + @Override + public void showEnterPIN(final PINSpec pinSpec, final int retries) { + showEnterPIN(pinSpec, retries, TITLE_VERIFY_PINPAD, MESSAGE_ENTERPIN_PINPAD, null); + } + + protected void showEnterPIN(final PINSpec pinSpec, final int retries, final String titleKey, final String messageKey, final Object[] messageParams) { + log.debug("scheduling pinpad dialog"); + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + + log.debug("[" + Thread.currentThread().getName() + "] show pinpad dialog"); + + mainPanel.removeAll(); + buttonPanel.removeAll(); + + if (renderHeaderPanel) { + if (retries < 0) { + titleLabel.setText(getMessage(titleKey)); + } else { + titleLabel.setText(getMessage(TITLE_RETRY)); + } + } + + final JLabel infoLabel = new JLabel(); + if (retries < 0) { + infoLabel.setFont(infoLabel.getFont().deriveFont(infoLabel.getFont().getStyle() & ~java.awt.Font.BOLD)); + infoLabel.setText(MessageFormat.format(getMessage(messageKey), messageParams)); + helpMouseListener.setHelpTopic(HELP_PINPAD); + helpKeyListener.setHelpTopic(HELP_PINPAD); + } else { + String retryPattern; + if (retries == 1) { + retryPattern = getMessage(MESSAGE_LAST_RETRY); + } else { + retryPattern = getMessage(MESSAGE_RETRIES); + } + infoLabel.setText(MessageFormat.format(retryPattern, new Object[]{String.valueOf(retries)})); + infoLabel.setFont(infoLabel.getFont().deriveFont(infoLabel.getFont().getStyle() | java.awt.Font.BOLD)); + infoLabel.setForeground(ERROR_COLOR); + helpMouseListener.setHelpTopic(HELP_RETRY); + helpKeyListener.setHelpTopic(HELP_RETRY); + } + + JLabel pinLabel = new JLabel(); + pinLabel.setFont(pinLabel.getFont().deriveFont(pinLabel.getFont().getStyle() & ~java.awt.Font.BOLD)); + String pinName = getMessage(LABEL_PIN); + pinLabel.setText(MessageFormat.format(pinName, new Object[]{pinSpec.getLocalizedName()})); + + JPasswordField pinpadPINField = new JPasswordField(); + pinpadPINField.setText(""); + pinpadPINField.setEnabled(false); + pinpadPIN = pinpadPINField.getDocument(); + + JLabel pinsizeLabel = new JLabel(); + pinsizeLabel.setFont(pinsizeLabel.getFont().deriveFont(pinsizeLabel.getFont().getStyle() & ~java.awt.Font.BOLD, pinsizeLabel.getFont().getSize()-2)); + pinsizeLabel.setText(MessageFormat.format(getMessage(LABEL_PINSIZE), pinSpec.getLocalizedLength())); + + GroupLayout mainPanelLayout = new GroupLayout(mainPanel); + mainPanel.setLayout(mainPanelLayout); + + GroupLayout.SequentialGroup infoHorizontal = mainPanelLayout.createSequentialGroup() + .addComponent(infoLabel); + GroupLayout.ParallelGroup infoVertical = mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(infoLabel); + + if (!renderHeaderPanel) { + infoHorizontal + .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED, 0, Short.MAX_VALUE) + .addComponent(switchFocusDummyLabel) + .addComponent(helpLabel) + ; + infoVertical + .addComponent(switchFocusDummyLabel) + .addComponent(helpLabel) + ; + } + + // align pinfield and pinsize to the right + GroupLayout.Group pinHorizontal = mainPanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING); + GroupLayout.SequentialGroup pinVertical = mainPanelLayout.createSequentialGroup(); + + if (pinLabelPos == PinLabelPosition.ABOVE) { + pinHorizontal + .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(pinLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addComponent(pinpadPINField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(pinsizeLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE); + pinVertical + .addComponent(pinLabel) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(pinpadPINField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(pinsizeLabel); + } else { // PinLabelPosition.LEFT + pinHorizontal + .addGroup(mainPanelLayout.createSequentialGroup() + .addComponent(pinLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(pinpadPINField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(pinsizeLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE); + pinVertical + .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(pinLabel) + .addComponent(pinpadPINField)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(pinsizeLabel); + } + + mainPanelLayout.setHorizontalGroup( + mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(infoHorizontal) + .addGroup(pinHorizontal)); + + mainPanelLayout.setVerticalGroup( + mainPanelLayout.createSequentialGroup() + .addGroup(infoVertical) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(pinVertical)); + + contentPanel.validate(); + } + }); + } + + @Override + public void showSignatureDataDialog(PINSpec spec, + final ActionListener enterPINListener, final String enterPINCommand, + final ActionListener cancelListener, final String cancelCommand, + final ActionListener hashdataListener, final String hashdataCommand) { + + log.debug("scheduling signature-data dialog"); + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + + log.debug("[" + Thread.currentThread().getName() + "] show signature-data dialog"); + + mainPanel.removeAll(); + buttonPanel.removeAll(); + + if (renderHeaderPanel) { + titleLabel.setText(getMessage(TITLE_SIGNATURE_DATA)); + } + + final JLabel infoLabel = new JLabel(); + infoLabel.setFont(infoLabel.getFont().deriveFont(infoLabel.getFont().getStyle() & ~java.awt.Font.BOLD)); + if (shortText) { + infoLabel.setText(getMessage(MESSAGE_HASHDATALINK_TINY)); + } else { + infoLabel.setText(getMessage(MESSAGE_HASHDATALINK)); + } + infoLabel.setFocusable(true); + infoLabel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + infoLabel.setForeground(HYPERLINK_COLOR); + infoLabel.addMouseListener(new MouseAdapter() { + + @Override + public void mouseClicked(MouseEvent me) { + ActionEvent e = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, hashdataCommand); + hashdataListener.actionPerformed(e); + } + }); + + infoLabel.addKeyListener(new KeyAdapter() { + + @Override + public void keyPressed(KeyEvent e) { + + if(e.getKeyCode() == KeyEvent.VK_ENTER) { + ActionEvent e1 = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, hashdataCommand); + hashdataListener.actionPerformed(e1); + } + } + + }); + + infoLabel.addFocusListener(new FocusAdapter() { + + @Override + public void focusGained(FocusEvent e) { + + if (shortText) { + infoLabel.setText(getMessage(MESSAGE_HASHDATALINK_TINY_FOCUS)); + } else { + infoLabel.setText(getMessage(MESSAGE_HASHDATALINK_FOCUS)); + } + } + + @Override + public void focusLost(FocusEvent e) { + + if (shortText) { + infoLabel.setText(getMessage(MESSAGE_HASHDATALINK_TINY)); + } else { + infoLabel.setText(getMessage(MESSAGE_HASHDATALINK)); + } + + } + + }); + + helpMouseListener.setHelpTopic(HELP_SIGNPIN); + helpKeyListener.setHelpTopic(HELP_SIGNPIN); + + //TODO message panel + +// String msgPattern = getMessage(MESSAGE_ENTERPIN_PINPAD); +// String msg = MessageFormat.format(msgPattern, new Object[] { +// pinSpec.getLocalizedName(), pinSpec.getLocalizedLength() }); +// +// JLabel msgLabel = new JLabel(); +// msgLabel.setFont(msgLabel.getFont().deriveFont(msgLabel.getFont().getStyle() & ~Font.BOLD)); +// msgLabel.setText(msg); + + GroupLayout mainPanelLayout = new GroupLayout(mainPanel); + mainPanel.setLayout(mainPanelLayout); + + GroupLayout.SequentialGroup infoHorizontal = mainPanelLayout.createSequentialGroup() + .addComponent(infoLabel); + GroupLayout.ParallelGroup infoVertical = mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(infoLabel); + + if (!renderHeaderPanel) { + infoHorizontal + .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED, 0, Short.MAX_VALUE) + .addComponent(switchFocusDummyLabel) + .addComponent(helpLabel) + ; + infoVertical + .addComponent(switchFocusDummyLabel) + .addComponent(helpLabel) + ; + } + + mainPanelLayout.setHorizontalGroup( + infoHorizontal); +// mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) +// .addGroup(infoHorizontal) +// .addComponent(msgLabel)); + + mainPanelLayout.setVerticalGroup( + infoVertical); +// mainPanelLayout.createSequentialGroup() +// .addGroup(infoVertical) +// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) +// .addComponent(msgLabel)); + + + GroupLayout buttonPanelLayout = new GroupLayout(buttonPanel); + buttonPanel.setLayout(buttonPanelLayout); + + GroupLayout.SequentialGroup buttonHorizontal = buttonPanelLayout.createSequentialGroup(); + GroupLayout.Group buttonVertical; + + JButton enterPINButton = new JButton(); + enterPINButton.setFont(enterPINButton.getFont().deriveFont(enterPINButton.getFont().getStyle() & ~java.awt.Font.BOLD)); + enterPINButton.setText(getMessage(BUTTON_SIGN)); + enterPINButton.setActionCommand(enterPINCommand); + enterPINButton.addActionListener(enterPINListener); + + if (renderCancelButton) { + JButton cancelButton = new JButton(); + cancelButton.setFont(cancelButton.getFont().deriveFont(cancelButton.getFont().getStyle() & ~java.awt.Font.BOLD)); + cancelButton.setText(getMessage(BUTTON_CANCEL)); + cancelButton.setActionCommand(cancelCommand); + cancelButton.addActionListener(cancelListener); + + buttonHorizontal + .addComponent(enterPINButton, GroupLayout.PREFERRED_SIZE, buttonSize, GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cancelButton, GroupLayout.PREFERRED_SIZE, buttonSize, GroupLayout.PREFERRED_SIZE) + ; + buttonVertical = buttonPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(enterPINButton) + .addComponent(cancelButton) + ; + } else { + buttonHorizontal + .addComponent(enterPINButton, GroupLayout.PREFERRED_SIZE, buttonSize, GroupLayout.PREFERRED_SIZE) + ; + buttonVertical = buttonPanelLayout.createSequentialGroup() + .addComponent(enterPINButton) + ; + } + + buttonPanelLayout.setHorizontalGroup(buttonHorizontal); + buttonPanelLayout.setVerticalGroup(buttonVertical); + + contentPanel.validate(); + } + }); + } + + @Override + public void correctionButtonPressed() { + log.debug("[" + Thread.currentThread().getName() + "] correction button pressed"); + + if (pinpadPIN != null) { + try { + pinpadPIN.remove(0, 1); + } catch (BadLocationException ex) { + } + } + } + + @Override + public void allKeysCleared() { + log.debug("[" + Thread.currentThread().getName() + "] all keys cleared"); + + if (pinpadPIN != null) { + try { + pinpadPIN.remove(0, pinpadPIN.getLength()); + } catch (BadLocationException ex) { + } + } + } + + @Override + public void validKeyPressed() { + log.debug("[" + Thread.currentThread().getName() + "] valid key pressed"); + + if (pinpadPIN != null) { + try { + pinpadPIN.insertString(0, "*", null); + } catch (BadLocationException ex) { + } + } + } + + @Override + public void showSignaturePINDialog(final PINSpec pinSpec, final int numRetries, + final ActionListener signListener, final String signCommand, + final ActionListener cancelListener, final String cancelCommand, + final ActionListener hashdataListener, final String hashdataCommand) { + + log.debug("scheduling signature-pin dialog"); + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + + log.debug("[" + Thread.currentThread().getName() + "] show signature-pin dialog"); + + mainPanel.removeAll(); + buttonPanel.removeAll(); + + if (renderHeaderPanel) { + if (numRetries < 0) { + titleLabel.setText(getMessage(TITLE_SIGN)); + } else { + titleLabel.setText(getMessage(TITLE_RETRY)); + } + } + + final JLabel infoLabel = new JLabel(); + if (numRetries < 0) { + infoLabel.setFont(infoLabel.getFont().deriveFont(infoLabel.getFont().getStyle() & ~java.awt.Font.BOLD)); + if (shortText) { + infoLabel.setText(getMessage(MESSAGE_HASHDATALINK_TINY)); + } else { + infoLabel.setText(getMessage(MESSAGE_HASHDATALINK)); + } + infoLabel.setFocusable(true); + infoLabel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + infoLabel.setForeground(HYPERLINK_COLOR); + infoLabel.addMouseListener(new MouseAdapter() { + + @Override + public void mouseClicked(MouseEvent me) { + ActionEvent e = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, hashdataCommand); + hashdataListener.actionPerformed(e); + } + }); + + infoLabel.addKeyListener(new KeyAdapter() { + + @Override + public void keyPressed(KeyEvent e) { + + if(e.getKeyCode() == KeyEvent.VK_ENTER) { + ActionEvent e1 = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, hashdataCommand); + hashdataListener.actionPerformed(e1); + } + } + + }); + + infoLabel.addFocusListener(new FocusAdapter() { + + @Override + public void focusGained(FocusEvent e) { + + + if (shortText) { + infoLabel.setText(getMessage(MESSAGE_HASHDATALINK_TINY_FOCUS)); + } else { + infoLabel.setText(getMessage(MESSAGE_HASHDATALINK_FOCUS)); + } + } + + @Override + public void focusLost(FocusEvent e) { + + + if (shortText) { + infoLabel.setText(getMessage(MESSAGE_HASHDATALINK_TINY)); + } else { + infoLabel.setText(getMessage(MESSAGE_HASHDATALINK)); + } + + } + + }); + + helpMouseListener.setHelpTopic(HELP_SIGNPIN); + helpKeyListener.setHelpTopic(HELP_SIGNPIN); + } else { + String retryPattern; + if (numRetries < 2) { + retryPattern = getMessage(MESSAGE_LAST_RETRY); + } else { + retryPattern = getMessage(MESSAGE_RETRIES); + } + infoLabel.setFocusable(true); + infoLabel.setText(MessageFormat.format(retryPattern, new Object[]{String.valueOf(numRetries)})); + infoLabel.setFont(infoLabel.getFont().deriveFont(infoLabel.getFont().getStyle() | java.awt.Font.BOLD)); + infoLabel.setForeground(ERROR_COLOR); + helpMouseListener.setHelpTopic(HELP_RETRY); + helpKeyListener.setHelpTopic(HELP_RETRY); + } + + JButton signButton = new JButton(); + signButton.setFont(signButton.getFont().deriveFont(signButton.getFont().getStyle() & ~java.awt.Font.BOLD)); + signButton.setText(getMessage(BUTTON_SIGN)); + signButton.setEnabled(pinSpec.getMinLength() <= 0); + signButton.setActionCommand(signCommand); + signButton.addActionListener(signListener); + + JLabel signPinLabel = new JLabel(); + signPinLabel.setFont(signPinLabel.getFont().deriveFont(signPinLabel.getFont().getStyle() & ~java.awt.Font.BOLD)); + String pinLabel = getMessage(LABEL_PIN); + signPinLabel.setText(MessageFormat.format(pinLabel, new Object[]{pinSpec.getLocalizedName()})); + + pinField = new JPasswordField(); + pinField.setText(""); + pinField.setDocument(new PINDocument(pinSpec.getMinLength(), pinSpec.getMaxLength(), pinSpec.getRexepPattern(), signButton)); + pinField.setActionCommand(signCommand); + pinField.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + if (pinField.getPassword().length >= pinSpec.getMinLength()) { + signListener.actionPerformed(e); + } + } + }); + + + JLabel pinsizeLabel = new JLabel(); + pinsizeLabel.setFont(pinsizeLabel.getFont().deriveFont(pinsizeLabel.getFont().getStyle() & ~java.awt.Font.BOLD, pinsizeLabel.getFont().getSize()-2)); + pinsizeLabel.setText(MessageFormat.format(getMessage(LABEL_PINSIZE), pinSpec.getLocalizedLength())); + + GroupLayout mainPanelLayout = new GroupLayout(mainPanel); + mainPanel.setLayout(mainPanelLayout); + + GroupLayout.SequentialGroup infoHorizontal = mainPanelLayout.createSequentialGroup() + .addComponent(infoLabel); + GroupLayout.ParallelGroup infoVertical = mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(infoLabel); + + if (!renderHeaderPanel) { + infoHorizontal + .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED, 0, Short.MAX_VALUE) + .addComponent(switchFocusDummyLabel) + .addComponent(helpLabel) + ; + infoVertical + .addComponent(switchFocusDummyLabel) + .addComponent(helpLabel) + ; + } + + // align pinfield and pinsize to the right + GroupLayout.Group pinHorizontal = mainPanelLayout.createParallelGroup(GroupLayout.Alignment.TRAILING); + GroupLayout.SequentialGroup pinVertical = mainPanelLayout.createSequentialGroup(); + + if (pinLabelPos == PinLabelPosition.ABOVE) { + pinHorizontal + .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(signPinLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addComponent(pinField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(pinsizeLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE); + pinVertical + .addComponent(signPinLabel) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(pinField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(pinsizeLabel); + } else { // PinLabelPosition.LEFT + pinHorizontal + .addGroup(mainPanelLayout.createSequentialGroup() + .addComponent(signPinLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(pinField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(pinsizeLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE); + pinVertical + .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(signPinLabel) + .addComponent(pinField)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(pinsizeLabel); + } + + mainPanelLayout.setHorizontalGroup( + mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(infoHorizontal) + .addGroup(pinHorizontal)); + + mainPanelLayout.setVerticalGroup( + mainPanelLayout.createSequentialGroup() + .addGroup(infoVertical) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(pinVertical)); + + GroupLayout buttonPanelLayout = new GroupLayout(buttonPanel); + buttonPanel.setLayout(buttonPanelLayout); + + GroupLayout.SequentialGroup buttonHorizontal = buttonPanelLayout.createSequentialGroup(); + GroupLayout.Group buttonVertical; + + if (renderCancelButton) { + JButton cancelButton = new JButton(); + cancelButton.setFont(cancelButton.getFont().deriveFont(cancelButton.getFont().getStyle() & ~java.awt.Font.BOLD)); + cancelButton.setText(getMessage(BUTTON_CANCEL)); + cancelButton.setActionCommand(cancelCommand); + cancelButton.addActionListener(cancelListener); + + buttonHorizontal + .addComponent(signButton, GroupLayout.PREFERRED_SIZE, buttonSize, GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cancelButton, GroupLayout.PREFERRED_SIZE, buttonSize, GroupLayout.PREFERRED_SIZE) + ; + buttonVertical = buttonPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(signButton) + .addComponent(cancelButton) + ; + } else { + buttonHorizontal + .addComponent(signButton, GroupLayout.PREFERRED_SIZE, buttonSize, GroupLayout.PREFERRED_SIZE) + ; + buttonVertical = buttonPanelLayout.createSequentialGroup() + .addComponent(signButton) + ; + } + + buttonPanelLayout.setHorizontalGroup(buttonHorizontal); + buttonPanelLayout.setVerticalGroup(buttonVertical); + +// pinField.requestFocusInWindow(); +// helpLabel.requestFocus(); + pinField.requestFocus(); + contentPanel.validate(); + + } + }); + } + + @Override + public void showErrorDialog( + final String errorMsgKey, final Object[] errorMsgParams, + final ActionListener okListener, final String okCommand) { + + showMessageDialog(TITLE_ERROR, ERROR_COLOR, + errorMsgKey, errorMsgParams, BUTTON_OK, okListener, okCommand); + } + + @Override + public void showErrorDialog( + final String errorMsgKey, final Object[] errorMsgParams) { + + showMessageDialog(TITLE_ERROR, ERROR_COLOR, + errorMsgKey, errorMsgParams, null, null, null); + } + + @Override + public void showMessageDialog( + final String titleKey, + final String msgKey, final Object[] msgParams, + final String buttonKey, + final ActionListener okListener, final String okCommand) { + + showMessageDialog(titleKey, null, + msgKey, msgParams, buttonKey, okListener, okCommand); + } + + @Override + public void showMessageDialog( + final String titleKey, + final String msgKey, final Object[] msgParams) { + + showMessageDialog(titleKey, null, + msgKey, msgParams, null, null, null); + } + + @Override + public void showMessageDialog( + final String titleKey, final String msgKey) { + + showMessageDialog(titleKey, null, + msgKey, null, null, null, null); + } + + /** + * + * @param buttonKey if null defaults to BUTTON_OK + */ + private void showMessageDialog( + final String titleKey, final Color titleColor, + final String msgKey, final Object[] msgParams, + final String buttonKey, + final ActionListener okListener, final String okCommand) { + + log.debug("scheduling message dialog"); + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + + log.debug("[" + Thread.currentThread().getName() + "] show message dialog"); + + mainPanel.removeAll(); + buttonPanel.removeAll(); + + if (renderHeaderPanel) { + titleLabel.setText(getMessage(titleKey)); + } + + helpMouseListener.setHelpTopic(msgKey); + helpKeyListener.setHelpTopic(msgKey); + + String msgPattern = getMessage(msgKey); + String msg = MessageFormat.format(msgPattern, msgParams); + + JLabel msgLabel = new JLabel(); + msgLabel.setFont(msgLabel.getFont().deriveFont(msgLabel.getFont().getStyle() & ~Font.BOLD)); + msgLabel.setText(msg); + + GroupLayout mainPanelLayout = new GroupLayout(mainPanel); + mainPanel.setLayout(mainPanelLayout); + + GroupLayout.ParallelGroup mainHorizontal = mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING); + GroupLayout.SequentialGroup mainVertical = mainPanelLayout.createSequentialGroup(); + + log.debug("focus to contentPanel"); + contentPanel.requestFocus(); + + if (!renderHeaderPanel) { + JLabel titleLabel = new JLabel(); + titleLabel.setFont(titleLabel.getFont().deriveFont(titleLabel.getFont().getStyle() | Font.BOLD)); + titleLabel.setText(getMessage(titleKey)); + if (titleColor != null) { + titleLabel.setForeground(titleColor); + } + + mainHorizontal + .addGroup(mainPanelLayout.createSequentialGroup() + .addComponent(titleLabel) + .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED, 0, Short.MAX_VALUE) + .addComponent(switchFocusDummyLabel) + .addComponent(helpLabel) + ); + mainVertical + .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(titleLabel) + .addComponent(switchFocusDummyLabel) + .addComponent(helpLabel) + ); + + log.debug("focus to helpLabel"); + helpLabel.requestFocus(); + } + + mainPanelLayout.setHorizontalGroup(mainHorizontal + .addComponent(msgLabel)); + mainPanelLayout.setVerticalGroup(mainVertical + .addComponent(msgLabel)); + + if (okListener != null) { + + JButton okButton = new JButton(); + okButton.setFont(okButton.getFont().deriveFont(okButton.getFont().getStyle() & ~java.awt.Font.BOLD)); + okButton.setText(getMessage((buttonKey != null) ? buttonKey : BUTTON_OK)); + okButton.setActionCommand(okCommand); + okButton.addActionListener(okListener); + + GroupLayout buttonPanelLayout = new GroupLayout(buttonPanel); + buttonPanel.setLayout(buttonPanelLayout); + + buttonPanelLayout.setHorizontalGroup( + buttonPanelLayout.createSequentialGroup() + .addComponent(okButton, GroupLayout.PREFERRED_SIZE, buttonSize, GroupLayout.PREFERRED_SIZE)); + buttonPanelLayout.setVerticalGroup( + buttonPanelLayout.createSequentialGroup() + .addComponent(okButton)); + + log.debug("focus to ok-button"); + okButton.requestFocus(); + } + + contentPanel.validate(); + } + }); + } + + + @Override + public char[] getPin() { + if (pinField != null) { + char[] pin = pinField.getPassword(); //returns a copy + pinField = null; //garbage collect original pin (make sure to clear char[] after use) + return pin; + } + return null; + } + + + //////////////////////////////////////////////////////////////////////////// + // SECURE VIEWER + //////////////////////////////////////////////////////////////////////////// + + + /** + * @param signedReferences + * @param backListener gets notified if pin-dialog has to be redrawn + * (signedRefencesList returns via BACK button) + * @param okCommand + */ + @Override + public void showSecureViewer(final List dataToBeSigned, + final ActionListener backListener, final String backCommand) { + + if (dataToBeSigned == null) { + showErrorDialog(getMessage(ERR_NO_HASHDATA), + new Object[] {"no signature data provided"}, + backListener, backCommand); + } else if (dataToBeSigned.size() == 1) { + //TODO pull out (see also SignedReferencesSelectionListener) + if (SecureViewerDialog.SUPPORTED_MIME_TYPES.contains(dataToBeSigned.get(0).getMimeType())) { + try { + log.debug("[" + Thread.currentThread().getName() + "] scheduling secure viewer"); + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + try { + showMessageDialog(TITLE_SIGNATURE_DATA, MESSAGE_HASHDATA_VIEWER); + showSecureViewer(dataToBeSigned.get(0), backListener, backCommand); + } catch (FontProviderException ex) { + log.error("failed to display secure viewer", ex); + showErrorDialog(ERR_VIEWER, new Object[] {ex.getMessage()}, backListener, backCommand); + } + } + }); + + } catch (Exception ex) { //InterruptedException InvocationTargetException + log.error("Failed to display secure viewer: " + ex.getMessage()); + log.trace(ex); + showErrorDialog(ERR_UNKNOWN, null, backListener, backCommand); + } + } else { + log.debug("[" + Thread.currentThread().getName() + "] mime-type not supported by secure viewer, scheduling save dialog"); + showMessageDialog(TITLE_SIGNATURE_DATA, MESSAGE_UNSUPPORTED_MIMETYPE); + SecureViewerSaveDialog.showSaveDialog(dataToBeSigned.get(0), messages, backListener, backCommand); + } + } else { + showSignedReferencesListDialog(dataToBeSigned, backListener, backCommand); + } + } + + /** + * has to be called from event dispatcher thread + */ + private void showSecureViewer(HashDataInput dataToBeSigned, ActionListener closeListener, String closeCommand) throws FontProviderException { + + log.debug("[" + Thread.currentThread().getName() + "] show secure viewer"); + SecureViewerDialog secureViewer = new SecureViewerDialog(null, messages, + closeListener, closeCommand, + fontProvider, helpMouseListener.getActionListener()); + + // workaround for [#439] + // avoid AlwaysOnTop at least in applet, otherwise make secureViewer AlwaysOnTop since MOCCA Dialog (JFrame created in LocalSTALFactory) is always on top. + Window window = SwingUtilities.getWindowAncestor(contentPane); + if (window != null && window.isAlwaysOnTop()) { + log.debug("make secureViewer alwaysOnTop"); + secureViewer.setAlwaysOnTop(true); + } + secureViewer.setContent(dataToBeSigned); + log.trace("viewer setContent returned"); + } + + + + private void showSignedReferencesListDialog(final List signedReferences, + final ActionListener backListener, final String backCommand) { + + log.debug("[" + Thread.currentThread().getName() + "] scheduling signed references list dialog"); + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + + log.debug("[" + Thread.currentThread().getName() + "] show signed references list dialog"); + + mainPanel.removeAll(); + buttonPanel.removeAll(); + + if (renderHeaderPanel) { + titleLabel.setText(getMessage(TITLE_SIGNATURE_DATA)); + } + + helpMouseListener.setHelpTopic(HELP_HASHDATALIST); + helpKeyListener.setHelpTopic(HELP_HASHDATALIST); + + JLabel refIdLabel = new JLabel(); + refIdLabel.setFont(refIdLabel.getFont().deriveFont(refIdLabel.getFont().getStyle() & ~java.awt.Font.BOLD)); + String refIdLabelPattern = getMessage(MESSAGE_HASHDATALIST); + refIdLabel.setText(MessageFormat.format(refIdLabelPattern, new Object[]{signedReferences.size()})); + + HashDataTableModel tableModel = new HashDataTableModel(signedReferences, renderRefId); + final JTable hashDataTable = new JTable(tableModel); + hashDataTable.setDefaultRenderer(HashDataInput.class, new HyperlinkRenderer(renderRefId)); + hashDataTable.setTableHeader(null); + + hashDataTable.addMouseMotionListener(new SignedReferencesMouseMotionListener(hashDataTable)); + + hashDataTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + hashDataTable.getSelectionModel().addListSelectionListener(new SignedReferencesSelectionListener(signedReferences, backListener, backCommand)); + + JScrollPane hashDataScrollPane = new JScrollPane(hashDataTable); + + GroupLayout mainPanelLayout = new GroupLayout(mainPanel); + mainPanel.setLayout(mainPanelLayout); + + GroupLayout.SequentialGroup messageHorizontal = mainPanelLayout.createSequentialGroup() + .addComponent(refIdLabel); + + GroupLayout.ParallelGroup messageVertical = mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(refIdLabel); + + if (!renderHeaderPanel) { + messageHorizontal + .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED, 0, Short.MAX_VALUE) + .addComponent(switchFocusDummyLabel) + .addComponent(helpLabel) + ; + messageVertical + .addComponent(switchFocusDummyLabel) + .addComponent(helpLabel) + ; + } + + mainPanelLayout.setHorizontalGroup( + mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(messageHorizontal) + .addComponent(hashDataScrollPane, 0, 0, Short.MAX_VALUE)); + + mainPanelLayout.setVerticalGroup( + mainPanelLayout.createSequentialGroup() + .addGroup(messageVertical) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(hashDataScrollPane, 0, 0, hashDataTable.getPreferredSize().height+3)); + + JButton backButton = new JButton(); + backButton.setFont(backButton.getFont().deriveFont(backButton.getFont().getStyle() & ~java.awt.Font.BOLD)); + backButton.setText(getMessage(BUTTON_BACK)); + backButton.setActionCommand(backCommand); + backButton.addActionListener(backListener); + + GroupLayout buttonPanelLayout = new GroupLayout(buttonPanel); + buttonPanel.setLayout(buttonPanelLayout); + + buttonPanelLayout.setHorizontalGroup(buttonPanelLayout.createSequentialGroup() + .addComponent(backButton, GroupLayout.PREFERRED_SIZE, buttonSize, GroupLayout.PREFERRED_SIZE)); + buttonPanelLayout.setVerticalGroup(buttonPanelLayout.createSequentialGroup() + .addComponent(backButton)); + + contentPanel.validate(); + } + }); + } + + + + /** + * not possible to add mouse listener to TableCellRenderer + * to change cursor on specific columns only, use table.columnAtPoint(e.getPoint()) + * + */ + private class SignedReferencesMouseMotionListener extends MouseMotionAdapter { + + JTable hashDataTable; + + public SignedReferencesMouseMotionListener(JTable table) { + this.hashDataTable = table; + } + + @Override + public void mouseMoved(MouseEvent e) { +// if (hashDataTable.columnAtPoint(e.getPoint()) == 0) { + hashDataTable.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + } + } + + /////////// + // SignedReferencesList (TODO pull out) + + public class SignedReferencesSelectionListener implements ListSelectionListener { + + List signedReferences; + ActionListener backListener; + String backCommand; + + public SignedReferencesSelectionListener(List signedReferences, ActionListener backListener, String backCommand) { + this.signedReferences = signedReferences; + this.backListener = backListener; + this.backCommand = backCommand; + } + + @Override + public void valueChanged(ListSelectionEvent event) { + + if (event.getValueIsAdjusting()) { + return; + } + + ListSelectionModel lsm = (ListSelectionModel) event.getSource(); + int selectionIdx = lsm.getMinSelectionIndex(); + + log.debug("[" + Thread.currentThread().getName() + "] reference " + selectionIdx + " selected"); + + if (selectionIdx >= 0) { + final HashDataInput selection = signedReferences.get(selectionIdx); + final SignedReferencesListDisplayer backToListListener = new SignedReferencesListDisplayer(signedReferences, backListener, backCommand); + + if (SecureViewerDialog.SUPPORTED_MIME_TYPES.contains(selection.getMimeType())) { + log.debug("[" + Thread.currentThread().getName() + "] scheduling secure viewer dialog"); + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + try { + showMessageDialog(TITLE_SIGNATURE_DATA, MESSAGE_HASHDATA_VIEWER); + showSecureViewer(selection, backToListListener, null); +// SecureViewerDialog.showSecureViewer(selection, messages, fontProvider, helpMouseListener.getActionListener(), false); + } catch (FontProviderException ex) { + log.error("failed to display secure viewer", ex); + showErrorDialog(BKUGUIFacade.ERR_VIEWER, new Object[] {ex.getMessage()}, backToListListener, null); + } + + } + }); + } else { + log.debug("[" + Thread.currentThread().getName() + "] mime-type not supported by secure viewer, scheduling save dialog"); + showMessageDialog(BKUGUIFacade.TITLE_SIGNATURE_DATA, BKUGUIFacade.MESSAGE_UNSUPPORTED_MIMETYPE); + SecureViewerSaveDialog.showSaveDialog(selection, messages, backToListListener, null); + } + } + } + + /** + * ActionListener that returns to signed references list + */ + private class SignedReferencesListDisplayer implements ActionListener { + List sr; + ActionListener bl; + String bc; + + public SignedReferencesListDisplayer(List signedReferences, ActionListener backListener, String backCommand) { + sr = signedReferences; + bl = backListener; + bc = backCommand; + } + + @Override + public void actionPerformed(ActionEvent e) { +// log.debug("[" + Thread.currentThread().getName() + "] displaying signed references list"); + showSignedReferencesListDialog(sr, bl, bc); + } + } + } + + + //////////////////////////////////////////////////////////////////////////// + // UTILITY METHODS + //////////////////////////////////////////////////////////////////////////// + + private void registerHelpListener(ActionListener helpListener) { + if (helpListener != null) { + this.helpMouseListener = new HelpMouseListener(helpListener); + this.helpKeyListener = new HelpKeyListener(helpListener); + } else { + log.error("no help listener provided, will not be able to display help"); + this.helpMouseListener = new HelpMouseListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + log.error("no help listener registered (requested help topic: " + e.getActionCommand() + ")"); + } + }); + this.helpKeyListener = new HelpKeyListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + log.error("no help listener registered (requested help topic: " + e.getActionCommand() + ")"); + } + }); + } + } + + private void registerSwitchFocusListener(ActionListener switchFocusListener) { + if (switchFocusListener != null) { + this.switchFocusKeyListener = new SwitchFocusFocusListener(switchFocusListener); + + } else { + + this.switchFocusKeyListener = new SwitchFocusFocusListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + log.warn("no switch focus listener registered"); + } + }); + } + } + + //////////////////////////////////////////////////////////////////////////// + // INITIALIZERS (MAY BE OVERRIDDEN BY SUBCLASSES) + //////////////////////////////////////////////////////////////////////////// + + /** + * Load applet messages bundle. Note that getBundle looks for classes based + * on the default Locale before it selects the base class! + * + * Called from constructor. + * Subclasses may override this method to ensure the message bundle is loaded + * once initButtonSize (called from constructor as well) is called. + * (Only relevant if initButtonSize is overridden as well) + * @param locale + */ + protected void loadMessageBundle(Locale locale) { + if (locale != null) { + // see [#378] Ignoring post parameter 'locale': bundle resolve-order not correct?! + Locale lang = new Locale(locale.getLanguage().substring(0, 2)); + log.debug("loading applet resources for language: " + lang.toString()); + messages = ResourceBundle.getBundle(MESSAGES_BUNDLE, lang); + } else { + log.debug("loading default language applet resources"); + messages = ResourceBundle.getBundle(MESSAGES_BUNDLE); + } + // how the f*** you know the default Messages.properties is de?! + log.debug("applet messages loaded: " + messages.getLocale()); + } + + protected int initButtonSize() { + int bs = 0; + + JButton b = new JButton(); + b.setText(getMessage(BUTTON_OK)); + if (b.getPreferredSize().width > bs) { + bs = b.getPreferredSize().width; + } + // need cancel button for message dialog, + // even if renderCancelButton == false + b.setText(getMessage(BUTTON_CANCEL)); + if (b.getPreferredSize().width > bs) { + bs = b.getPreferredSize().width; + } + b.setText(getMessage(BUTTON_SIGN)); + if (b.getPreferredSize().width > bs) { + bs = b.getPreferredSize().width; + } + b.setText(getMessage(BUTTON_BACK)); + if (b.getPreferredSize().width > bs) { + bs = b.getPreferredSize().width; + } + b.setText(getMessage(BUTTON_SAVE)); + if (b.getPreferredSize().width > bs) { + bs = b.getPreferredSize().width; + } + return bs; + } + + @Override + public void getFocusFromBrowser() { + + // This method puts the focus to the helpLabel as this + // element is supposed to appear in each dialogue. + helpLabel.requestFocus(); + + } +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUIcons.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUIcons.java new file mode 100644 index 00000000..92d6897b --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUIcons.java @@ -0,0 +1,57 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import java.awt.Image; +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import javax.imageio.ImageIO; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author Clemens Orthacker + */ +public class BKUIcons { + + protected static final Log log = LogFactory.getLog(BKUIcons.class); + + /** 16x16, 24x24, 32x32, 48x48, 128x128 pixels */ + public static final ArrayList icons = new ArrayList(); + + static { + String[] iconResources = new String[] { + "/at/gv/egiz/bku/gui/chip16.png", + "/at/gv/egiz/bku/gui/chip24.png", + "/at/gv/egiz/bku/gui/chip32.png", + "/at/gv/egiz/bku/gui/chip48.png", + "/at/gv/egiz/bku/gui/chip128.png" }; + for (String ir : iconResources) { + URL resource = BKUIcons.class.getResource(ir); + if (ir != null) { + try { + icons.add(ImageIO.read(resource)); + } catch (IOException ex) { + log.warn("failed to load mocca icon " + ir, ex); + } + } + } + } +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/DefaultHelpListener.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/DefaultHelpListener.java new file mode 100644 index 00000000..032c8fe5 --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/DefaultHelpListener.java @@ -0,0 +1,81 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import java.applet.AppletContext; +import java.net.URL; +import java.util.Locale; +import javax.swing.SwingUtilities; + +/** + * + * @author Clemens Orthacker + */ +public class DefaultHelpListener extends AbstractHelpListener { + + /** + * applet context to open external links in help pages, + * if null, no external links will be opened + */ + protected AppletContext ctx; + + /** + * + * @param ctx open external links via applet context + * @param helpURL + * @param locale + */ + public DefaultHelpListener(AppletContext ctx, URL helpURL, Locale locale) { + super(helpURL, locale); + this.ctx = ctx; + } + + /** + * external links in help document are not opened + * @param helpURL + * @param locale + */ + public DefaultHelpListener(URL helpURL, Locale locale) { + super(helpURL, locale); + this.ctx = null; + } + + /** + * blocks until help viewer returns (is closed) + * @param helpURL + * @param helpTopic ignored + */ + @Override + public void showDocument(final URL helpURL, final String helpTopic) { + log.debug("schedule help dialog"); + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + + log.debug("show help dialog"); + + if (ctx == null) { + HelpViewer.showHelpDialog(helpURL, messages); + } else { + HelpViewer.showHelpDialog(ctx, helpURL, messages); + } + } + }); + } +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HashDataTableModel.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HashDataTableModel.java new file mode 100644 index 00000000..70842102 --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HashDataTableModel.java @@ -0,0 +1,63 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import at.gv.egiz.stal.HashDataInput; +import java.util.List; +import javax.swing.table.DefaultTableModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author Clemens Orthacker + */ +class HashDataTableModel extends DefaultTableModel { + + protected static final Log log = LogFactory.getLog(HashDataTableModel.class); + + /** HashDataInput in first column, register hyperlinkrenderer only here */ + protected Class[] types; + protected List hashDataInputs; + + public HashDataTableModel(List hashDataInputs, boolean twoColLayout) { + super(0, (twoColLayout) ? 2 : 1); + this.hashDataInputs = hashDataInputs; + + if (twoColLayout) { + types = new Class[] { HashDataInput.class, String.class }; + for (HashDataInput hdi : hashDataInputs) { + addRow(new Object[] { hdi, hdi.getMimeType() }); + } + } else { + types = new Class[] { HashDataInput.class }; + for (HashDataInput hdi : hashDataInputs) { + addRow(new Object[] { hdi }); + } + } + } + + @Override + public Class getColumnClass(int columnIndex) { + return types[columnIndex]; + } + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return false; + } +} \ No newline at end of file diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpKeyListener.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpKeyListener.java new file mode 100644 index 00000000..4ca20f7e --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpKeyListener.java @@ -0,0 +1,46 @@ +package at.gv.egiz.bku.gui; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author Thomas Zefferer + */ +public class HelpKeyListener extends KeyAdapter { + + protected static final Log log = LogFactory.getLog(HelpKeyListener.class); + + protected ActionListener helpListener; + protected String locale; + protected String topic; + + public HelpKeyListener(ActionListener externalHelpListener) { + super(); + this.helpListener = externalHelpListener; + } + + public void setHelpTopic(String topic) { + log.trace("setting help topic: " + topic); + this.topic = topic; + } + + public ActionListener getActionListener() { + return helpListener; + } + + @Override + public void keyPressed(KeyEvent arg0) { + + if(arg0.getKeyCode() == KeyEvent.VK_ENTER) { + ActionEvent e = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, topic); + helpListener.actionPerformed(e); + } + } + +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpLinkFocusManager.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpLinkFocusManager.java new file mode 100644 index 00000000..f5882b3d --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpLinkFocusManager.java @@ -0,0 +1,138 @@ +package at.gv.egiz.bku.gui; + +import java.awt.Color; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.net.URL; + +import javax.accessibility.AccessibleHyperlink; +import javax.accessibility.AccessibleHypertext; +import javax.swing.JEditorPane; +import javax.swing.event.HyperlinkEvent; +import javax.swing.text.DefaultStyledDocument; +import javax.swing.text.Element; +import javax.swing.text.MutableAttributeSet; +import javax.swing.text.SimpleAttributeSet; +import javax.swing.text.StyleConstants; + +/** + * + * @author Thomas Zefferer + */ +public final class HelpLinkFocusManager extends KeyAdapter { + + private static final int FOCUS_UNDEFINED = -1; + + private int focusedHyperlinkIndex = FOCUS_UNDEFINED; + private JEditorPane displayPane; + + public HelpLinkFocusManager(JEditorPane displayPane) { + + super(); + this.displayPane = displayPane; + } + + public void keyPressed(KeyEvent e) { + + AccessibleHypertext accessibleHypertext = (AccessibleHypertext) this.displayPane + .getAccessibleContext().getAccessibleText(); + + if (accessibleHypertext.getLinkCount() > 0) { + switch (e.getKeyCode()) { + + case KeyEvent.VK_RIGHT: + if (this.focusedHyperlinkIndex != FOCUS_UNDEFINED) { + removeHyperlinkFocus(); + } + + this.focusedHyperlinkIndex++; + + if (this.focusedHyperlinkIndex >= accessibleHypertext + .getLinkCount()) { + + this.focusedHyperlinkIndex = 0; + } + + setHyperlinkFocus(); + break; + + case KeyEvent.VK_LEFT: + if (this.focusedHyperlinkIndex != FOCUS_UNDEFINED) { + removeHyperlinkFocus(); + } + + this.focusedHyperlinkIndex--; + + if (this.focusedHyperlinkIndex < 0) { + this.focusedHyperlinkIndex = accessibleHypertext + .getLinkCount() - 1; + } + + setHyperlinkFocus(); + break; + + case KeyEvent.VK_SPACE: + case KeyEvent.VK_ENTER: + + + AccessibleHyperlink link = accessibleHypertext + .getLink(this.focusedHyperlinkIndex); + if (link != null) { + URL url = (URL) link.getAccessibleActionObject(0); + Element element = ((DefaultStyledDocument) this.displayPane + .getDocument()).getCharacterElement(link + .getStartIndex()); + HyperlinkEvent linkEvent = new HyperlinkEvent( + this.displayPane, + HyperlinkEvent.EventType.ACTIVATED, url, null, + element); + this.displayPane.fireHyperlinkUpdate(linkEvent); + } + + removeHyperlinkFocus(); + this.focusedHyperlinkIndex = FOCUS_UNDEFINED; + break; + default: + // nothig to do + break; + } + } + } + + private void setHyperlinkFocus() { + + AccessibleHypertext accessibleHypertext = (AccessibleHypertext) this.displayPane + .getAccessibleContext().getAccessibleText(); + AccessibleHyperlink link = accessibleHypertext + .getLink(this.focusedHyperlinkIndex); + + if (link != null) { + + MutableAttributeSet style = new SimpleAttributeSet(); + StyleConstants.setForeground(style, Color.RED); + ((DefaultStyledDocument) this.displayPane.getDocument()) + .setCharacterAttributes(link.getStartIndex(), link + .getEndIndex() + - link.getStartIndex(), style, false); + } + } + + private void removeHyperlinkFocus() { + Color textColor = Color.BLUE; + AccessibleHypertext accessibleHypertext = (AccessibleHypertext) this.displayPane + .getAccessibleContext().getAccessibleText(); + AccessibleHyperlink link = accessibleHypertext + .getLink(this.focusedHyperlinkIndex); + + if (link != null) { + + MutableAttributeSet style = new SimpleAttributeSet(); + StyleConstants.setForeground(style, textColor); + ((DefaultStyledDocument) this.displayPane.getDocument()) + .setCharacterAttributes(link.getStartIndex(), link + .getEndIndex() + - link.getStartIndex(), style, false); + } + } + +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpMouseListener.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpMouseListener.java new file mode 100644 index 00000000..b7bbe971 --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpMouseListener.java @@ -0,0 +1,54 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public class HelpMouseListener extends MouseAdapter { + + protected static final Log log = LogFactory.getLog(HelpMouseListener.class); + + protected ActionListener helpListener; + protected String locale; + protected String topic; + + public HelpMouseListener(ActionListener externalHelpListener) { + super(); + this.helpListener = externalHelpListener; + } + + public void setHelpTopic(String topic) { + log.trace("setting help topic: " + topic); + this.topic = topic; + } + + public ActionListener getActionListener() { + return helpListener; + } + + @Override + public void mouseClicked(MouseEvent arg0) { + ActionEvent e = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, topic); + helpListener.actionPerformed(e); + } +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpViewer.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpViewer.java new file mode 100644 index 00000000..0f887f78 --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpViewer.java @@ -0,0 +1,218 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import java.applet.AppletContext; +import java.awt.Component; +import java.awt.Container; +import java.awt.Cursor; +import java.awt.Dimension; +import java.awt.Frame; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.IOException; +import java.net.URL; +import java.text.MessageFormat; +import java.util.ResourceBundle; +import javax.swing.GroupLayout; +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JEditorPane; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.LayoutStyle; +import javax.swing.SwingUtilities; +import javax.swing.event.HyperlinkEvent; +import javax.swing.event.HyperlinkListener; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author Clemens Orthacker + */ +public class HelpViewer extends JDialog + implements ActionListener { + + protected static final Log log = LogFactory.getLog(HelpViewer.class); + private static HelpViewer dialog; + protected ResourceBundle messages; + protected AppletContext ctx; + + /** + * + * @param ctx external links are opened via ctx.showDocument() + * @param helpURL + * @param helpTopic + * @param messages + */ + public static void showHelpDialog(AppletContext ctx, + URL helpURL, +// String helpTopic, + ResourceBundle messages) { + showHelpDialog(null, ctx, helpURL, messages); //helpTopic, messages); + } + + public static void showHelpDialog(URL helpURL, +// String helpTopic, + ResourceBundle messages) { + showHelpDialog(null, null, helpURL, messages); // helpTopic, messages); + } + + public static void showHelpDialog(Component owner, + AppletContext ctx, + URL helpURL, +// String helpTopic, + ResourceBundle messages) { + + Frame frame = null; + if (owner != null) { + JOptionPane.getFrameForComponent(owner); + } + dialog = new HelpViewer(frame, messages, ctx, helpURL); //, helpTopic); + dialog.setVisible(true); + dialog.toFront(); + } + + private HelpViewer(Frame frame, + ResourceBundle messages, + AppletContext ctx, + URL helpURL) { //, String helpTopic) { + super(frame, messages.getString(BKUGUIFacade.WINDOWTITLE_HELP), true); + this.messages = messages; + this.ctx = ctx; + +// String p = messages.getString(BKUGUIFacade.MESSAGE_HELP); +// String helpItem = messages.getString(helpTopic); +// String viewerLabel = MessageFormat.format(p, new Object[]{helpItem}); + + JPanel helpPanel = createViewerPanel(helpURL); //viewerLabel, helpURL); + JPanel buttonPanel = createButtonPanel(); + + initContentPane(new Dimension(600, 600), helpPanel, buttonPanel); + pack(); + if (frame != null) { + setLocationRelativeTo(frame); + } else { + setLocationByPlatform(true); + } + } + + private void initContentPane(Dimension preferredSize, JPanel viewerPanel, JPanel buttonPanel) { + Container contentPane = getContentPane(); + contentPane.setPreferredSize(preferredSize); + + GroupLayout mainLayout = new GroupLayout(contentPane); + contentPane.setLayout(mainLayout); + + mainLayout.setHorizontalGroup( + mainLayout.createSequentialGroup().addContainerGap().addGroup( + mainLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(viewerPanel, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addComponent(buttonPanel, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)).addContainerGap()); + mainLayout.setVerticalGroup( + mainLayout.createSequentialGroup().addContainerGap().addComponent(viewerPanel, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED).addComponent(buttonPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE).addContainerGap()); + } + + private JPanel createViewerPanel(URL helpURL) { //String viewerLabelText, + log.debug("viewer dialog: " + helpURL.toString()); + + final JEditorPane viewer = new JEditorPane(); + viewer.setEditable(false); + try { + viewer.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + viewer.setPage(helpURL); + + HelpLinkFocusManager editorFocusManager = new HelpLinkFocusManager (viewer); + viewer.addKeyListener(editorFocusManager ); + + viewer.addHyperlinkListener(new HyperlinkListener() { + + @Override + public void hyperlinkUpdate(HyperlinkEvent e) { + final URL url = e.getURL(); + if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { + if (ctx != null) { + log.debug("open external link in help viewer: " + url); + ctx.showDocument(url, "_blank"); + } else { + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + String msgP = messages.getString(BKUGUIFacade.ERR_EXTERNAL_LINK); + String msg = MessageFormat.format(msgP, url); + String title = messages.getString(BKUGUIFacade.TITLE_ERROR); + JOptionPane.showMessageDialog(rootPane, msg, title, JOptionPane.ERROR_MESSAGE); + } + }); + } + } + } + }); + } catch (IOException ex) { + String p = messages.getString(BKUGUIFacade.ERR_VIEWER); + viewer.setText(MessageFormat.format(p, new Object[]{ex.getMessage()})); + } + viewer.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); + JScrollPane scrollPane = new JScrollPane(viewer); + scrollPane.setPreferredSize(viewer.getPreferredSize()); + scrollPane.setAlignmentX(LEFT_ALIGNMENT); + viewer.setCaretPosition(0); + +// JLabel viewerLabel = new JLabel(); +// viewerLabel.setText(viewerLabelText); +// viewerLabel.setFont(viewerLabel.getFont().deriveFont(viewerLabel.getFont().getStyle() | java.awt.Font.BOLD)); +// viewerLabel.setLabelFor(viewer); + + JPanel viewerPanel = new JPanel(); + GroupLayout viewerPanelLayout = new GroupLayout(viewerPanel); + viewerPanel.setLayout(viewerPanelLayout); + + viewerPanelLayout.setHorizontalGroup( + viewerPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) +// .addComponent(viewerLabel) + .addComponent(scrollPane)); + viewerPanelLayout.setVerticalGroup( + viewerPanelLayout.createSequentialGroup() +// .addComponent(viewerLabel) +// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(scrollPane)); + + return viewerPanel; + } + + private JPanel createButtonPanel() { + JButton closeButton = new JButton(); + closeButton.setText(messages.getString(BKUGUIFacade.BUTTON_CLOSE)); + closeButton.addActionListener(this); + + JPanel buttonPanel = new JPanel(); + GroupLayout buttonPanelLayout = new GroupLayout(buttonPanel); + buttonPanel.setLayout(buttonPanelLayout); + + buttonPanelLayout.setHorizontalGroup( + buttonPanelLayout.createSequentialGroup().addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addComponent(closeButton)); + buttonPanelLayout.setVerticalGroup( + buttonPanelLayout.createSequentialGroup().addComponent(closeButton)); + return buttonPanel; + } + + @Override + public void actionPerformed(ActionEvent e) { + HelpViewer.dialog.setVisible(false); + } +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HyperlinkRenderer.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HyperlinkRenderer.java new file mode 100644 index 00000000..6af22815 --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HyperlinkRenderer.java @@ -0,0 +1,54 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import at.gv.egiz.stal.HashDataInput; +import javax.swing.table.DefaultTableCellRenderer; + +/** + * + * @author Clemens Orthacker + */ +public class HyperlinkRenderer extends DefaultTableCellRenderer { + + protected boolean renderReferenceId; + + public HyperlinkRenderer(boolean renderReferenceId) { + this.renderReferenceId = renderReferenceId; + } + + /** + * cannot change mouse cursor here, do in jTable + * @param value + */ + @Override + protected void setValue(Object value) { + String hrefText; + if (((HashDataInput) value).getFilename() != null) { + hrefText = ((HashDataInput) value).getFilename(); + } else { + if (renderReferenceId) { + hrefText = ((HashDataInput) value).getReferenceId(); + } else { + hrefText = ((HashDataInput) value).getMimeType(); + } + } + super.setText("" + hrefText + ""); + setForeground(BKUGUIFacade.HYPERLINK_COLOR); + } +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/ImagePanel.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/ImagePanel.java new file mode 100644 index 00000000..6a738acb --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/ImagePanel.java @@ -0,0 +1,50 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import java.awt.Graphics; +import java.awt.Image; +import java.net.URL; +import javax.swing.ImageIcon; +import javax.swing.JPanel; + +/** + * paints the background image in the lower left corner of the component + * + * @author Clemens Orthacker + */ +public class ImagePanel extends JPanel { + + protected Image backgroundImg; + + public ImagePanel(URL background) { + this(new ImageIcon(background).getImage()); + } + + public ImagePanel(Image img) { + this.backgroundImg = img; + this.setOpaque(false); + } + + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + g.drawImage(backgroundImg, 0, this.getHeight() - backgroundImg.getHeight(null), null); + } + +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/PinDocument.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/PinDocument.java new file mode 100644 index 00000000..52a3d5fe --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/PinDocument.java @@ -0,0 +1,74 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.swing.JButton; +import javax.swing.text.AttributeSet; +import javax.swing.text.BadLocationException; +import javax.swing.text.PlainDocument; + +/** + * + * @author clemens + */ +class PINDocument extends PlainDocument { + + private static final long serialVersionUID = 1L; + protected Pattern pinPattern; + protected int minLength; + protected int maxLength; + protected JButton enterButton; + + public PINDocument(int minLength, int maxLength, String pattern, JButton enterButton) { + if (enterButton == null) { + throw new NullPointerException("OK button null"); + } + if (pattern != null) { + pinPattern = Pattern.compile(pattern); + } else { + pinPattern = Pattern.compile("."); + } + this.minLength = minLength; + this.maxLength = maxLength; + this.enterButton = enterButton; + } + + @Override + public void insertString(int offs, String str, AttributeSet a) throws BadLocationException { + if (maxLength < 0 || maxLength >= (getLength() + str.length())) { + boolean matches = true; + for (int i = 0; i < str.length(); i++) { + Matcher m = pinPattern.matcher(str.substring(i, i + 1)); + if (!m.matches()) { + matches = false; + } + } + if (matches) { + super.insertString(offs, str, a); + enterButton.setEnabled(getLength() >= minLength); + } + } + } + + @Override + public void remove(int offs, int len) throws BadLocationException { + super.remove(offs, len); + enterButton.setEnabled(getLength() >= minLength); + } +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SecureViewerDialog.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SecureViewerDialog.java new file mode 100644 index 00000000..7db70c46 --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SecureViewerDialog.java @@ -0,0 +1,360 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import at.gv.egiz.bku.gui.viewer.FontProvider; +import at.gv.egiz.bku.gui.viewer.SecureViewerSaveDialog; +import at.gv.egiz.stal.HashDataInput; +import java.awt.Container; +import java.awt.Cursor; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Frame; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.Reader; +import java.nio.charset.Charset; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.List; +import java.util.ResourceBundle; +import javax.swing.GroupLayout; +import javax.swing.ImageIcon; +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JEditorPane; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.LayoutStyle; +import javax.swing.WindowConstants; +import javax.swing.text.Document; +import javax.swing.text.EditorKit; +import javax.swing.text.StyledEditorKit; +import javax.swing.text.html.HTMLEditorKit; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author Clemens Orthacker + */ +public class SecureViewerDialog extends JDialog { + + /** don't import BKUFonts in order not to load BKUFonts.jar + * BKUApplet includes BKUFonts as runtime dependency only, the jar is copied to the applet dir in BKUOnline with dependency-plugin + * BKUViewer has compile dependency BKUFonts, transitive in BKUOnline and BKULocal + */ + public static final Dimension VIEWER_DIMENSION = new Dimension(600, 400); + + public static final List SUPPORTED_MIME_TYPES = new ArrayList(); + static { + SUPPORTED_MIME_TYPES.add("text/plain"); + SUPPORTED_MIME_TYPES.add("application/xhtml+xml"); + } + protected static final Log log = LogFactory.getLog(SecureViewerDialog.class); +// private static SecureViewerDialog dialog; + protected ResourceBundle messages; + protected JEditorPane viewer; + protected JLabel viewerLabel; + protected JScrollPane scrollPane; + protected HashDataInput content; //remember for save dialog + protected FontProvider fontProvider; + + /** + * Create and display a modal SecureViewer dialog. + * This method blocks until the dialog's close button is pressed. + * + * @param owner, dialog is positioned relative to its owner + * (if null, at default location of native windowing system) + */ + public SecureViewerDialog(Frame owner, ResourceBundle messages, + ActionListener closeListener, String closeCommand, + FontProvider fontProvider, ActionListener helpListener) { + super(owner, messages.getString(BKUGUIFacade.WINDOWTITLE_VIEWER), true); + this.setIconImages(BKUIcons.icons); + this.messages = messages; + this.fontProvider = fontProvider; + + initContentPane(VIEWER_DIMENSION, + createViewerPanel(helpListener), + createButtonPanel(closeListener, closeCommand)); + + // also leave defaultWindowClosing HIDE_ON_CLOSE + this.addWindowListener(new WindowCloseListener(closeListener, closeCommand)); + this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); + + pack(); + if (owner != null) { + setLocationRelativeTo(owner); + } else { + setLocationByPlatform(true); + } + } + + private void initContentPane(Dimension preferredSize, + JPanel viewerPanel, JPanel buttonPanel) { + Container contentPane = getContentPane(); + contentPane.setPreferredSize(preferredSize); + + GroupLayout mainLayout = new GroupLayout(contentPane); + contentPane.setLayout(mainLayout); + + mainLayout.setHorizontalGroup( + mainLayout.createSequentialGroup().addContainerGap().addGroup( + mainLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(viewerPanel, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addComponent(buttonPanel, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)).addContainerGap()); + mainLayout.setVerticalGroup( + mainLayout.createSequentialGroup().addContainerGap().addComponent(viewerPanel, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED).addComponent(buttonPanel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE).addContainerGap()); + } + + /** + * @param helpListener may be null + */ + private JPanel createViewerPanel(final ActionListener helpListener) { + viewer = new JEditorPane(); + viewer.setEditable(false); + viewer.putClientProperty(JEditorPane.HONOR_DISPLAY_PROPERTIES, Boolean.TRUE); + + scrollPane = new JScrollPane(); + + JPanel viewerPanel = new JPanel(); + GroupLayout viewerPanelLayout = new GroupLayout(viewerPanel); + viewerPanel.setLayout(viewerPanelLayout); + + GroupLayout.SequentialGroup infoHorizontal = viewerPanelLayout.createSequentialGroup(); + GroupLayout.ParallelGroup infoVertical = viewerPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING); + + viewerLabel = new JLabel(); + viewerLabel.setFont(viewerLabel.getFont().deriveFont(viewerLabel.getFont().getStyle() | java.awt.Font.BOLD)); +// viewerLabel.setLabelFor(viewer); + + infoHorizontal.addComponent(viewerLabel); + infoVertical.addComponent(viewerLabel); + + if (helpListener != null) { + final JLabel helpLabel = new JLabel(); + helpLabel.setFocusable(true); + helpLabel.setIcon(new ImageIcon(getClass().getResource(BKUGUIFacade.HELP_IMG))); + helpLabel.getAccessibleContext().setAccessibleName(messages.getString(BKUGUIFacade.ALT_HELP)); + helpLabel.addMouseListener(new MouseAdapter() { + + @Override + public void mouseClicked(MouseEvent arg0) { + ActionEvent e = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, BKUGUIFacade.HELP_HASHDATAVIEWER); + helpListener.actionPerformed(e); + } + }); + helpLabel.addKeyListener(new KeyAdapter() { + + @Override + public void keyPressed(KeyEvent arg0) { + + if (arg0.getKeyCode() == KeyEvent.VK_ENTER) { + ActionEvent e = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, BKUGUIFacade.HELP_HASHDATAVIEWER); + helpListener.actionPerformed(e); + } + } + }); + + helpLabel.addFocusListener(new FocusAdapter() { + + @Override + public void focusGained(FocusEvent e) { + + helpLabel.setIcon(new ImageIcon(getClass().getResource(BKUGUIFacade.HELP_IMG_FOCUS))); + } + + @Override + public void focusLost(FocusEvent e) { + + helpLabel.setIcon(new ImageIcon(getClass().getResource(BKUGUIFacade.HELP_IMG))); + } + }); + helpLabel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + + infoHorizontal.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED, 0, Short.MAX_VALUE).addComponent(helpLabel); + infoVertical.addComponent(helpLabel); + } + + viewerPanelLayout.setHorizontalGroup( + viewerPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addGroup(infoHorizontal).addComponent(scrollPane)); + viewerPanelLayout.setVerticalGroup( + viewerPanelLayout.createSequentialGroup().addGroup(infoVertical).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addComponent(scrollPane)); + + return viewerPanel; + } + + /** + * Sets the hashdataInput to be displayed and makes the dialog visible. + * This method blocks until the dialog's close button is pressed. + * + * @param mimeType defaults to text/plain if null + * @param encoding must be null if document contains charset declaration (e.g. HTML page), otherwise the parser crashes + + * @param hashDataInput + */ + public void setContent(HashDataInput hashDataInput) { //throws FontProviderException { + + log.debug("[" + Thread.currentThread().getName() + "] set viewer content"); + + this.content = null; + viewer.setText(null); + + String mimeType = hashDataInput.getMimeType(); + if (mimeType == null) { + mimeType = "text/plain"; + } + log.debug("secure viewer mime type: " + mimeType); + // loads editorkit for text/plain if unrecognized + viewer.setContentType(mimeType); + + try { + + if ("text/plain".equals(mimeType)) { + viewer.setEditorKit(new StyledEditorKit()); + viewer.setFont(fontProvider.getFont().deriveFont(Font.PLAIN, viewer.getFont().getSize())); + } else if ("application/xhtml+xml".equals(mimeType)) { + viewer.setEditorKit(new HTMLEditorKit()); + //reset font if fontprovider font was set before (TODO also html font from fontprovider) + viewer.setFont(new Font("Dialog", Font.PLAIN, viewer.getFont().getSize())); //UIManager.getFont("Label.font")); + } + + EditorKit editorKit = viewer.getEditorKit(); + Document document = editorKit.createDefaultDocument(); + // document.putProperty("IgnoreCharsetDirective", new Boolean(true)); + + Charset cs = (hashDataInput.getEncoding() == null) ? Charset.forName("UTF-8") : Charset.forName(hashDataInput.getEncoding()); + log.debug("secure viewer encoding: " + cs.toString()); + + InputStreamReader isr = new InputStreamReader(hashDataInput.getHashDataInput(), cs); + Reader contentReader = new BufferedReader(isr); + viewer.read(contentReader, document); + contentReader.close(); + + this.content = hashDataInput; + +// } catch (Exception ex) // fontProvider +// } catch (IllegalCharsetNameException ex) { +// } catch (UnsupportedCharsetException ex) { +// } catch (FontProviderException ex) { + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + String p = messages.getString(BKUGUIFacade.ERR_VIEWER); + viewer.setContentType("text/plain"); + viewer.setText(MessageFormat.format(p, ex.getMessage())); + } + viewer.setCaretPosition(0); + + scrollPane.setViewportView(viewer); + scrollPane.setPreferredSize(viewer.getPreferredSize()); + scrollPane.setAlignmentX(LEFT_ALIGNMENT); + + if ("application/xhtml+xml".equals(mimeType)) { + viewerLabel.setText(messages.getString(BKUGUIFacade.WARNING_XHTML)); + } else { + viewerLabel.setText(""); + } + + log.debug("VIEWER FONT: " + viewer.getFont()); + setVisible(true); + toFront(); + } + + private JPanel createButtonPanel(ActionListener closeListener, String closeCommand) { + JButton closeButton = new JButton(); + closeButton.setText(messages.getString(BKUGUIFacade.BUTTON_CLOSE)); + closeButton.setActionCommand(closeCommand); + closeButton.addActionListener(new CloseButtonListener(closeListener)); + + JButton saveButton = new JButton(); + saveButton.setText(messages.getString(BKUGUIFacade.BUTTON_SAVE)); + saveButton.addActionListener(new SaveButtonListener()); + + int buttonSize = closeButton.getPreferredSize().width; + if (saveButton.getPreferredSize().width > buttonSize) { + buttonSize = saveButton.getPreferredSize().width; + } + + JPanel buttonPanel = new JPanel(); + GroupLayout buttonPanelLayout = new GroupLayout(buttonPanel); + buttonPanel.setLayout(buttonPanelLayout); + + buttonPanelLayout.setHorizontalGroup( + buttonPanelLayout.createSequentialGroup().addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE).addComponent(saveButton, GroupLayout.PREFERRED_SIZE, buttonSize, GroupLayout.PREFERRED_SIZE).addPreferredGap(LayoutStyle.ComponentPlacement.RELATED).addComponent(closeButton, GroupLayout.PREFERRED_SIZE, buttonSize, GroupLayout.PREFERRED_SIZE)); + buttonPanelLayout.setVerticalGroup( + buttonPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(saveButton).addComponent(closeButton)); + + return buttonPanel; + } + + public class WindowCloseListener extends WindowAdapter { + + ActionListener closeListener; + String closeCommand; + + public WindowCloseListener(ActionListener closeListener, String closeCommand) { + this.closeListener = closeListener; + this.closeCommand = closeCommand; + } + + @Override + public void windowClosing(WindowEvent e) { + log.trace("[" + Thread.currentThread().getName() + "] closing secure viewer"); + setVisible(false); + if (closeListener != null) { + closeListener.actionPerformed(new ActionEvent(e.getSource(), e.getID(), closeCommand)); + } + } + } + + public class CloseButtonListener implements ActionListener { + + ActionListener closeListener; + + public CloseButtonListener(ActionListener closeListener) { + this.closeListener = closeListener; + } + + @Override + public void actionPerformed(ActionEvent e) { + log.trace("[" + Thread.currentThread().getName() + "] closing secure viewer"); + setVisible(false); + if (closeListener != null) { + closeListener.actionPerformed(e); + } + } + } + + public class SaveButtonListener implements ActionListener { + + @Override + public void actionPerformed(ActionEvent e) { + log.trace("[" + Thread.currentThread().getName() + "] display secure viewer save dialog"); + SecureViewerSaveDialog.showSaveDialog(content, messages, null, null); + } + } +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SwitchFocusFocusListener.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SwitchFocusFocusListener.java new file mode 100644 index 00000000..06e37a89 --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SwitchFocusFocusListener.java @@ -0,0 +1,38 @@ +package at.gv.egiz.bku.gui; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author Thomas Zefferer + */ +public class SwitchFocusFocusListener extends FocusAdapter { + + protected static final Log log = LogFactory.getLog(SwitchFocusFocusListener.class); + + protected ActionListener swichFocusListener; + + public SwitchFocusFocusListener(ActionListener externalSwitchFocusListener) { + super(); + this.swichFocusListener = externalSwitchFocusListener; + } + + public ActionListener getActionListener() { + return swichFocusListener; + } + + @Override + public void focusGained(FocusEvent arg0) { + + ActionEvent e = new ActionEvent(this, ActionEvent.ACTION_PERFORMED, null); + swichFocusListener.actionPerformed(e); + } + + +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SwitchFocusListener.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SwitchFocusListener.java new file mode 100644 index 00000000..48b641e2 --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SwitchFocusListener.java @@ -0,0 +1,44 @@ +package at.gv.egiz.bku.gui; + +import java.applet.AppletContext; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.net.MalformedURLException; +import java.net.URL; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author Thomas Zefferer + */ +public class SwitchFocusListener implements ActionListener { + + protected final static Log log = LogFactory.getLog(SwitchFocusListener.class); + + protected AppletContext ctx; + protected String javascriptFunction; + + public SwitchFocusListener(AppletContext ctx, String javascriptFunction) { + + this.ctx = ctx; + this.javascriptFunction = javascriptFunction; + } + + @Override + public void actionPerformed(ActionEvent e) { + + try { + ctx.showDocument + (new URL("javascript:" + javascriptFunction)); + } + catch (MalformedURLException me) { + + log.warn("Unable to call external javascript function.", me); + } + + + } + +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/html/RestrictedHTMLEditorKit.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/html/RestrictedHTMLEditorKit.java new file mode 100644 index 00000000..680bf1a4 --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/html/RestrictedHTMLEditorKit.java @@ -0,0 +1,49 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui.html; + +import javax.swing.text.Element; +import javax.swing.text.StyleConstants; +import javax.swing.text.View; +import javax.swing.text.html.HTML; +import javax.swing.text.html.HTMLEditorKit; + +/** + * + * @author Clemens Orthacker + */ +public class RestrictedHTMLEditorKit extends HTMLEditorKit { + + + public static class RestrictedHTMLFactory extends HTMLFactory { + + @Override + public View create(Element elem) { + Object o = + elem.getAttributes().getAttribute(StyleConstants.NameAttribute); + if (o instanceof HTML.Tag) { + HTML.Tag kind = (HTML.Tag) o; + if (kind == HTML.Tag.IMG) + return new RestrictedImageView(elem); + } + return super.create( elem ); + } + + } + +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/html/RestrictedImageView.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/html/RestrictedImageView.java new file mode 100644 index 00000000..b1aa35db --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/html/RestrictedImageView.java @@ -0,0 +1,67 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui.html; + +import javax.swing.text.Element; +import javax.swing.text.html.HTML; +import javax.swing.text.html.ImageView; + +/** + * + * @author Clemens Orthacker + */ +/** + * ImageViewer.refreshImage() (and loadImage()) is private :-( + */ + public class RestrictedImageView extends ImageView { + + public RestrictedImageView(Element elem) { + super(elem); + } + +// @Override +// public Image getImage() { +// int s = state; +// if ((s & RELOAD_IMAGE_FLAG) != 0) { +// refreshImage(); +// } +// s = state; +// if ((s & RELOAD_FLAG) != 0) { +// synchronized(this) { +// state = (state | RELOAD_FLAG) ^ RELOAD_FLAG; +// } +// setPropertiesFromAttributes(); +// } +// return super.getImage(); +// } + + /** + * check whether this URL corresponds to the data URI scheme + * (and the referenced content is directly included in the document). + * @return + */ + private boolean isDataURI() { + String src = (String)getElement().getAttributes(). + getAttribute(HTML.Attribute.SRC); + if (src == null) { + return false; + } + + return src.toLowerCase().startsWith("data"); + } + } \ No newline at end of file diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/FontProvider.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/FontProvider.java new file mode 100644 index 00000000..8fb815b0 --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/FontProvider.java @@ -0,0 +1,40 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui.viewer; + +import java.awt.Font; + +/** + * + * @author Clemens Orthacker + */ +public interface FontProvider { + + /** will be replaced by more sophisticated font selection mechanism + * (see java.awt.Font int/String constants) */ + String SANSMONO_FONT_RESOURCE = "DejaVuLGCSansMono.ttf"; + + /** + * + * @return + * @throws InterruptedException + * @throws FileNotFoundException if remote font file cannot be retrieved + */ + Font getFont() throws FontProviderException; + +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/FontProviderException.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/FontProviderException.java new file mode 100644 index 00000000..5a6a277e --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/FontProviderException.java @@ -0,0 +1,29 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui.viewer; + +/** + * Encapsulates the reason why a font could not be loaded. + * @author Clemens Orthacker + */ +public class FontProviderException extends Exception { + + public FontProviderException(String msg, Throwable cause) { + super(msg, cause); + } +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/MimeFilter.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/MimeFilter.java new file mode 100644 index 00000000..5d64eb4f --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/MimeFilter.java @@ -0,0 +1,65 @@ +/* +* Copyright 2008 Federal Chancellery Austria and +* Graz University of Technology +* +* 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 at.gv.egiz.bku.gui.viewer; + +import java.io.File; +import java.util.ResourceBundle; +import javax.swing.filechooser.FileFilter; + +/** + * + * @author clemens + */ +class MimeFilter extends FileFilter { + + protected String mimeType; + protected ResourceBundle messages; + + public MimeFilter(String mimeType, ResourceBundle messages) { + this.mimeType = mimeType; + this.messages = messages; + } + + @Override + public boolean accept(File f) { + + if (f.isDirectory()) { + return true; + } + return MimeTypes.getExtension(mimeType).equalsIgnoreCase(getExtension(f)); + } + + private String getExtension(File f) { + String ext = null; + String s = f.getName(); + int i = s.lastIndexOf('.'); + + if (i > 0 && i < s.length() - 1) { + ext = s.substring(i + 1).toLowerCase(); + } + return ext; + } + + @Override + public String getDescription() { + return messages.getString(MimeTypes.getDescriptionKey(mimeType)); + } + + public static String getExtension(String mimeType) { + return MimeTypes.getExtension(mimeType); + } +} \ No newline at end of file diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/MimeTypes.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/MimeTypes.java new file mode 100644 index 00000000..4500fa71 --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/MimeTypes.java @@ -0,0 +1,53 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package at.gv.egiz.bku.gui.viewer; + +import java.util.HashMap; +import java.util.Map; + +/** + * + * @author clemens + */ +public class MimeTypes { + + private static final Map FILE_EXTENSIONS = new HashMap() {{ + put("application/msword", ".doc"); + put("application/octet-stream", ".bin"); + put("application/pdf", ".pdf"); + put("application/xhtml+xml", ".xhtml"); + put("text/html", ".html"); + put("text/plain", ".txt"); + put("text/xml", ".xml"); + }}; + + private static final Map DESCRIPTIONS = new HashMap() {{ + put("application/msword", "mimetype.desc.doc"); + put("application/octet-stream", "mimetype.desc.bin"); + put("application/pdf", "mimetype.desc.pdf"); + put("application/xhtml+xml", "mimetype.desc.xhtml"); + put("text/html", "mimetype.desc.html"); + put("text/plain", "mimetype.desc.txt"); + put("text/xml", "mimetype.desc.xml"); + }}; + + public static String getExtension(String mimetype) { + if (FILE_EXTENSIONS.containsKey(mimetype)) { + return FILE_EXTENSIONS.get(mimetype); + } + return ""; + } + + /** + * @return bundle key to be resolved in message resource bundle + */ + public static String getDescriptionKey(String mimetype) { + if (DESCRIPTIONS.containsKey(mimetype)) { + return DESCRIPTIONS.get(mimetype); + } + return "mimetype.desc.unknown"; + } +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/SecureViewerSaveDialog.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/SecureViewerSaveDialog.java new file mode 100644 index 00000000..3303d4ef --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/SecureViewerSaveDialog.java @@ -0,0 +1,121 @@ +package at.gv.egiz.bku.gui.viewer; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.text.MessageFormat; +import java.util.Locale; +import java.util.ResourceBundle; + +import javax.swing.JFileChooser; +import javax.swing.JOptionPane; +import javax.swing.SwingUtilities; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import at.gv.egiz.bku.gui.BKUGUIFacade; +import at.gv.egiz.stal.HashDataInput; + +public class SecureViewerSaveDialog { + + protected static final Log log = LogFactory.getLog(SecureViewerSaveDialog.class); + + public static void showSaveDialog(final HashDataInput hashDataInput, final ResourceBundle messages, + final ActionListener okListener, final String okCommand) { + + log.debug("[" + Thread.currentThread().getName() + + "] scheduling save dialog"); + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + + log + .debug("[" + Thread.currentThread().getName() + + "] show save dialog"); + + String userHome = System.getProperty("user.home"); + + JFileChooser fileDialog = new JFileChooser(userHome); + fileDialog.setMultiSelectionEnabled(false); + fileDialog.setDialogType(JFileChooser.SAVE_DIALOG); + fileDialog.setFileHidingEnabled(true); + fileDialog.setDialogTitle(messages + .getString(BKUGUIFacade.WINDOWTITLE_SAVE)); + fileDialog.setFileSelectionMode(JFileChooser.FILES_ONLY); + String mimeType = hashDataInput.getMimeType(); + MimeFilter mimeFilter = new MimeFilter(mimeType, messages); + fileDialog.setFileFilter(mimeFilter); + String filename = (hashDataInput.getFilename() != null) ? + hashDataInput.getFilename() : + messages.getString(BKUGUIFacade.SAVE_HASHDATAINPUT_PREFIX) + + MimeFilter.getExtension(mimeType); + fileDialog.setSelectedFile(new File(userHome, filename)); + + // parent contentPane -> placed over applet + switch (fileDialog.showSaveDialog(fileDialog)) { + case JFileChooser.APPROVE_OPTION: + File file = fileDialog.getSelectedFile(); + String id = hashDataInput.getReferenceId(); + if (file.exists()) { + String msgPattern = messages + .getString(BKUGUIFacade.MESSAGE_OVERWRITE); + int overwrite = JOptionPane.showConfirmDialog(fileDialog, + MessageFormat.format(msgPattern, file), messages + .getString(BKUGUIFacade.WINDOWTITLE_OVERWRITE), + JOptionPane.OK_CANCEL_OPTION); + if (overwrite != JOptionPane.OK_OPTION) { + break; + } + } + if (log.isDebugEnabled()) { + log.debug("writing hashdata input " + id + " (" + mimeType + + ") to file " + file); + } + FileOutputStream fos = null; + try { + fos = new FileOutputStream(file); + BufferedOutputStream bos = new BufferedOutputStream(fos); + InputStream hdi = hashDataInput.getHashDataInput(); + int b; + while ((b = hdi.read()) != -1) { + bos.write(b); + } + bos.flush(); + bos.close(); + } catch (IOException ex) { + log.error("Failed to write " + file + ": " + ex.getMessage()); + log.debug(ex); + String errPattern = messages + .getString(BKUGUIFacade.ERR_WRITE_HASHDATA); + JOptionPane.showMessageDialog(fileDialog, MessageFormat.format( + errPattern, ex.getMessage()), messages + .getString(BKUGUIFacade.WINDOWTITLE_ERROR), + JOptionPane.ERROR_MESSAGE); + } finally { + try { + if (fos != null) { + fos.close(); + } + } catch (IOException ex) { + } + } + break; + case JFileChooser.CANCEL_OPTION: + log.debug("cancelled save dialog"); + break; + } + if (okListener != null) { + okListener.actionPerformed(new ActionEvent(fileDialog, + ActionEvent.ACTION_PERFORMED, okCommand)); + } + } + }); + } +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/stal/impl/ByteArrayHashDataInput.java b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/stal/impl/ByteArrayHashDataInput.java new file mode 100644 index 00000000..b9416845 --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/stal/impl/ByteArrayHashDataInput.java @@ -0,0 +1,107 @@ +/* +* Copyright 2008 Federal Chancellery Austria and +* Graz University of Technology +* +* 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 at.gv.egiz.stal.impl; + +import at.gv.egiz.stal.HashDataInput; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author clemens + */ +public class ByteArrayHashDataInput implements HashDataInput { + + private static final Log log = LogFactory.getLog(ByteArrayHashDataInput.class); + + protected byte[] hashData; + protected String id; + protected String mimeType; + protected String encoding; + protected String filename; + + public ByteArrayHashDataInput(byte[] hashData, String id, String mimeType, String encoding, String filename) { + if (hashData == null) { + throw new NullPointerException("HashDataInput not provided."); + } + this.hashData = hashData; + this.id = id; + this.mimeType = mimeType; + this.encoding = encoding; + this.filename = filename; + } + + /** + * caches the hashdata input's stream + * @param hdi to be cached + */ + public ByteArrayHashDataInput(HashDataInput hdi) { + if (hdi == null) { + throw new NullPointerException("HashDataInput not provided."); + } + InputStream is = hdi.getHashDataInput(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + try { + byte[] buffer = new byte[1024]; + for (int i = is.read(buffer); i > -1; i = is.read(buffer)) { + baos.write(buffer, 0, i); + } + this.hashData = baos.toByteArray(); + } catch (IOException ex) { + log.error("Failed to cache provided HashDataInput: " + ex.getMessage(), ex); + this.hashData = new byte[0]; + } + this.id = hdi.getReferenceId(); + this.mimeType = hdi.getMimeType(); + this.encoding = hdi.getEncoding(); + } + + @Override + public String getReferenceId() { + return id; + } + + @Override + public String getMimeType() { + return mimeType; + } + + @Override + public InputStream getHashDataInput() { + return new ByteArrayInputStream(hashData); + } + + /** + * may be null + * @return + */ + @Override + public String getEncoding() { + return encoding; + } + + @Override + public String getFilename() { + return filename; + } + + +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages.properties b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages.properties new file mode 100644 index 00000000..c09433de --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages.properties @@ -0,0 +1,109 @@ +# Copyright 2008 Federal Chancellery Austria and +# Graz University of Technology +# +# 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. + +title.welcome=Willkommen +title.insertcard=Keine B\u00FCrgerkarte gefunden +title.cardnotsupported=Die Karte wird nicht unterst\u00FCtzt +title.verify.pin=Karte wird gelesen +title.sign=Signatur erstellen +title.verify.pinpad=PIN eingeben +title.error=Fehler +title.warning=Achtung +title.entry.timeout=Zeit\u00FCberschreitung +title.retry=Falsche PIN +title.wait=Bitte warten +title.signature.data=Signaturdaten +windowtitle.save=Signaturdaten speichern +windowtitle.error=Fehler +windowtitle.savedir=Signaturdaten in Verzeichnis speichern +windowtitle.overwrite=Datei \u00FCberschreiben? +windowtitle.viewer=Signaturdaten +windowtitle.help=Hilfe zur B\u00FCrgerkarte + +# removed message.* prefix to reuse keys as help keys +welcome=Bitte warten... +wait=Bitte warten... +cardnotsupported=Bitte die B\u00FCrgerkarte in den Kartenleser stecken +insertcard=Bitte die B\u00FCrgerkarte in den Kartenleser stecken +enterpin={0} eingeben +enterpin.pinpad=PIN am Kartenleser eingeben +enterpin.pinpad.direct={0} ({1} stellig) am Kartenleser eingeben +hashdatalink=Signaturdaten anzeigen +hashdatalink.tiny=Signaturdaten +hashdatalink.focus=[Signaturdaten anzeigen] +hashdatalink.tiny.focus=[Signaturdaten] +#message.hashdata=Hinweis: Dies ist eine Voransicht des zu signierenden Inhalts. F\u00FCr eine standardkonforme Darstellung siehe Hilfe (i). +#message.hashdata=Dies ist eine Voransicht des zu signierenden Inhaltes. F\u00FCr Details siehe Hilfe (i). +#verwenden sie bitte die von ihrem System zur Verf\u00FCgung gestellte {0} Anwendung. +hashdatalist={0} Signaturdaten: +hashdata.viewer=Signaturdaten werden im Betrachter angezeigt +unsupported.mimetype=Signaturdaten k\u00F6nnen nicht angezeigt werden +retries.last=Letzter Versuch! +retries=Noch {0} Versuche +retries.pinpad.last=Eingabe wiederholen, letzter Versuch! +retries.pinpad=Eingabe wiederholen, noch {0} Versuche +overwrite=M\u00F6chten Sie das existierende Dokument {0} \u00FCberschreiben? +help=Hilfe zu {0} + +warning.xhtml=Hinweis: Dies ist eine Voransicht des zu signierenden Inhalts. F\u00FCr eine standardkonforme Darstellung siehe Hilfe (i). +label.pin={0}: +label.pinsize=({0} stellig) +button.ok=OK +button.cancel=Abbrechen +button.back=Zur\u00FCck +button.sign=Signieren +button.save=Speichern... +button.close=Schlie\u00DFen +mimetype.desc.xml=XML-Dateien (.xml) +mimetype.desc.html=HTML-Dateien (.html, .htm) +mimetype.desc.xhtml=XHTML-Dateien (.xhtml) +mimetype.desc.txt=Textdateien (.txt) +mimetype.desc.pdf=Adobe PDF-Dateien (.pdf) +mimetype.desc.bin=Bin\u00E4rdateien (.bin) +mimetype.desc.doc=Microsoft Word-Dateien (.doc) +mimetype.desc.unknown=Alle Dateien (.*) +save.hashdatainput.prefix=Signaturdaten +alt.help=Hilfe + +# Error Messages +error.no.hashdata=Keine Signaturdaten verf\u00FCgbar: {0} +error.display.hashdata=Signaturdaten konnten nicht dargestellt werden: {0} +error.write.hashdata=Die Signaturdaten konnten nicht gespeichert werden: {0} +error.invalid.hash=Die Signaturdaten sind ung\u00FCltig: {0} +error.ws.unreachable=Der Server ist nicht erreichbar +#error.ws.unreachable=Das Web-Service ist nicht erreichbar: {0} +error.pcsc=Es konnte keine PC/SC Schnittstelle gefunden werden +error.cardterminal=Es konnte kein Smartcard-Leser gefunden werden +error.unknown.param=Ein Fehler trat auf: {0} +error.unknown=Ein Fehler trat auf +error.test=Fehler1 {0} - Fehler2 {1} +error.card.locked=B\u00FCrgerkarte ist gesperrt +error.card.notactivated=Die B\u00FCrgerkarte ist nicht aktiviert +error.pin.timeout=Zeit\u00FCberschreitung bei Eingabe der PIN +error.viewer=Der Inhalt kann nicht dargestellt werden: {0} +error.external.link=Externer Link {0} wird nicht ge\u00F6ffnet +error.config=Fehlerhafte Konfiguration des Systems: {0} + +# Help Topics +help.welcome=Startseite +help.wait=Bitte Warten Bildschirm +help.cardnotsupported=Nicht unterst\u00FCtzte B\u00FCrgerkarte +help.insertcard=Keine B\u00FCrgerkarte im Kartenleser +help.cardpin=Pineingabe +help.signpin=Signatur-Pineingabe +help.retry=Falsche Pin +help.hashdata=Signierte Inhalte +help.hashdatalist=Signierte Inhalte +help.hashdataviewer=Anzeige signierter Inhalte \ No newline at end of file diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages_en.properties b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages_en.properties new file mode 100644 index 00000000..4d86d21b --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages_en.properties @@ -0,0 +1,107 @@ +# Copyright 2008 Federal Chancellery Austria and +# Graz University of Technology +# +# 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. + +title.welcome=Welcome +title.insertcard=No citizen card found +title.cardnotsupported=This card is not supported +title.verify.pin=Reading card +title.sign=Create signature +title.verify.pinpad=Enter PIN +title.error=Error +title.warning=Warning +title.entry.timeout=Timeout +title.retry=Wrong PIN +title.wait=Please wait +title.signature.data=Signature data +windowtitle.save=Save signature data +windowtitle.error=Error +windowtitle.savedir=Save signature data to directory +windowtitle.overwrite=Overwrite file? +windowtitle.viewer=Signature data +windowtitle.help=Citizen card help + +# removed message.* prefix to reuse keys as help keys +welcome=Please wait... +wait=Please wait... +insertcard=Please insert your citizen card into the reader +cardnotsupported=Please insert your citizen card into the reader +enterpin=Enter {0} +enterpin.pinpad=Enter PIN on card reader pinpad +enterpin.pinpad.direct=Enter {0} ({1} digits) on card reader pinpad +hashdatalink=Display signature data +hashdatalink.tiny=signature data +hashdatalink.focus=[Display signature data] +hashdatalink.tiny.focus=[signature data] +#message.hashdata=Remark: This is a preview of the data to-be signed. For standards compliant display see help. +hashdatalist={0} signature data objects: +hashdata.viewer=Signature data is being displayed in viewer +unsupported.mimetype=Signature data cannot be displayed +retries.last=Last try! +retries={0} tries left +retries.pinpad.last=Re-enter pin, last try! +retries.pinpad=Re-enter pin, {0} tries left +overwrite=Overwrite {0}? +help=Help topic {0} + +warning.xhtml=Remark: This is a preview of the data to-be signed. For standard-compliant display see help. +label.pin={0}: +label.pinsize=({0} digits) +button.ok=OK +button.cancel=Cancel +button.back=Back +button.sign=Sign +button.save=Save... +button.close=Close +mimetype.desc.xml=XML-files (.xml) +mimetype.desc.html=HTML-files (.html, .htm) +mimetype.desc.xhtml=XHTML-files (.xhtml) +mimetype.desc.txt=Textfiles (.txt) +mimetype.desc.pdf=Adobe PDF-files (.pdf) +mimetype.desc.bin=Binary files (.bin) +mimetype.desc.doc=Microsoft Word-files (.doc) +mimetype.desc.unknown=All files (.*) +save.hashdatainput.prefix=signaturedata +alt.help=help + +# Error Messages +error.no.hashdata=No signature data available: {0} +error.display.hashdata=Could not display signature data: {0} +error.write.hashdata=Could not save signature data: {0} +error.invalid.hash=Invalid signature data: {0} +error.ws.unreachable=Server unreachable +#error.ws.unreachable=Web-service unreachable: {0} +error.pcsc=No PC/SC interface for smartcard access provided +error.cardterminal=Could not find smartcard reader +error.unknown.param=An error occured: {0} +error.unknown=An error occured +error.test=Error1 {0} - Error2 {1} +error.card.locked=Citizen card is locked +error.card.notactivated=Citizen card not activated +error.pin.timeout=Timeout during PIN entry +error.viewer=Failed to display contents: {0} +error.external.link=Cannot open external link {0} +error.config=Incorrect system configuration: {0} + +# Help Topics +help.welcome=Welcome page +help.wait=Wait screen +help.cardnotsupported=Unsupported citizen card +help.insertcard=No citizen card found +help.cardpin=Pin entry +help.signpin=Signature pin entry +help.retry=Wrong Pin +help.hashdata=Signed contents +help.hashdatalist=Signed contents +help.hashdataviewer=Display of signed contents \ No newline at end of file diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip128.png b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip128.png new file mode 100644 index 00000000..c36d8079 Binary files /dev/null and b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip128.png differ diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip16.png b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip16.png new file mode 100644 index 00000000..96b580e9 Binary files /dev/null and b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip16.png differ diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip24.png b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip24.png new file mode 100644 index 00000000..efd6dbeb Binary files /dev/null and b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip24.png differ diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip32.png b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip32.png new file mode 100644 index 00000000..e7efb020 Binary files /dev/null and b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip32.png differ diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip48.png b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip48.png new file mode 100644 index 00000000..491fbcac Binary files /dev/null and b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip48.png differ diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chiperling105.png b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chiperling105.png new file mode 100644 index 00000000..eee4be4f Binary files /dev/null and b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chiperling105.png differ diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/help.png b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/help.png new file mode 100644 index 00000000..d1c36c33 Binary files /dev/null and b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/help.png differ diff --git a/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/help_focus.png b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/help_focus.png new file mode 100644 index 00000000..d650bea2 Binary files /dev/null and b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/help_focus.png differ diff --git a/mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/BKUGUITest.java b/mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/BKUGUITest.java new file mode 100644 index 00000000..fdd58850 --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/BKUGUITest.java @@ -0,0 +1,62 @@ +/* +* Copyright 2008 Federal Chancellery Austria and +* Graz University of Technology +* +* 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. +*/ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package at.gv.egiz.bku.gui; + +import java.awt.Container; +import java.awt.Dimension; +import javax.swing.JFrame; +import org.junit.Ignore; +import org.junit.Test; + + +/** + * + * @author clemens + */ +@Ignore +public class BKUGUITest { + + @Test + public void testBKUGUI() { + JFrame testFrame = new JFrame("BKUGUITest"); + Container contentPane = testFrame.getContentPane(); +// contentPane.setPreferredSize(new Dimension(170, 150)); + contentPane.setPreferredSize(new Dimension(290, 190)); + BKUGUIFacade gui = new BKUGUIImpl(contentPane, null, BKUGUIFacade.Style.advanced, null, new DummyFontLoader(), null, null); + BKUGUIWorker worker = new BKUGUIWorker(); + worker.init(gui); + testFrame.pack(); + testFrame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + testFrame.setVisible(true); + new Thread(worker).start(); + + while(true) ; + } + + @Test + public void dummyTest() { + } + +// public static void main(String[] args) { +// new BKUGUITest().testBKUGUI(); +// } +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/BKUGUIWorker.java b/mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/BKUGUIWorker.java new file mode 100644 index 00000000..a2a84d6e --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/BKUGUIWorker.java @@ -0,0 +1,199 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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. + */ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package at.gv.egiz.bku.gui; + +import at.gv.egiz.smcc.PINSpec; +import at.gv.egiz.smcc.STARCOSCard; +import at.gv.egiz.stal.HashDataInput; +import at.gv.egiz.stal.impl.ByteArrayHashDataInput; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +/** + * + * @author clemens + */ +public class BKUGUIWorker implements Runnable { + + BKUGUIFacade gui; + + public void init(BKUGUIFacade gui) { + this.gui = gui; + } + + @Override + public void run() { + try { + + final PINSpec signPinSpec = new PINSpec(6, 10, "[0-9]", "Test-PIN", (byte) 0x81, null); + final PINSpec cardPinSpec = new PINSpec(4, 4, "[0-9]", "Test-PIN", (byte) 0x01, null); + + + final ActionListener cancelListener = new ActionListener() { + + public void actionPerformed(ActionEvent e) { + System.out.println("CANCEL EVENT OCCURED: " + e); + } + }; + ActionListener okListener = new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + System.out.println("OK EVENT OCCURED: " + e); + } + }; + final ActionListener signListener = new ActionListener() { + + public void actionPerformed(ActionEvent e) { + System.out.println("SIGN EVENT OCCURED: " + e); + } + }; + ActionListener hashdataListener = new ActionListener() { + + public void actionPerformed(ActionEvent e) { + System.out.println("HASHDATA EVENT OCCURED: " + e); + ActionListener returnListener = new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + gui.showSignaturePINDialog(signPinSpec, -1, signListener, "sign", cancelListener, "cancel", null, "hashdata"); + } + }; + HashDataInput signedRef1 = new ByteArrayHashDataInput( + "Ich bin ein einfacher Text mit Umlauten: öäüßéç@€\n123\n456\n\tHello, world!\n\nlkjsd\nnksdjf".getBytes(), + "ref-id-0000000000000000000000001", + "text/plain", + "UTF-8", + "file.txt"); + + HashDataInput signedRef2 = new ByteArrayHashDataInput( + "HashDataInput_002".getBytes(), + "ref-id-000000002", + "application/xhtml+xml", + "UTF-8", + "file.xhtml"); + + HashDataInput signedRef3 = new ByteArrayHashDataInput( + "HashDataInput_003".getBytes(), + "ref-id-000000003", + "application/xhtml+xml", + "UTF-8", + "file2.xhtml"); + + HashDataInput signedRef4 = new ByteArrayHashDataInput( + "HashDataInput_004".getBytes(), + "ref-id-000000004", + "text/xml", + "UTF-8", + "file.xml"); + + // + List signedRefs = new ArrayList(); + signedRefs.add(signedRef1); +// signedRefs.add(signedRef2); +// signedRefs.add(signedRef3); +// signedRefs.add(signedRef4); +// signedRefs.add(signedRef4); +// signedRefs.add(signedRef4); +// signedRefs.add(signedRef4); +// signedRefs.add(signedRef4); +// signedRefs = Collections.singletonList(signedRef1); + gui.showSecureViewer(signedRefs, returnListener, "return"); + } + }; + + + +// gui.showWelcomeDialog(); +// +// Thread.sleep(2000); +// +// gui.showWaitDialog(null); +// +// Thread.sleep(1000); +// +// gui.showWaitDialog("test"); +// +// Thread.sleep(1000); +// +// +// gui.showInsertCardDialog(cancelListener, "cancel"); +// +// Thread.sleep(2000); +// +// gui.showCardNotSupportedDialog(cancelListener, "cancel"); +// +// Thread.sleep(2000); +// +// PINSpec cardPinSpec = new PINSpec(4, 4, "[0-9]", "Karten-PIN"); +// +// gui.showCardPINDialog(cardPinSpec, okListener, "ok", cancelListener, "cancel"); +// +// Thread.sleep(2000); +// +// gui.showSignaturePINDialog(signPinSpec, -1, signListener, "sign", cancelListener, "cancel", hashdataListener, "hashdata"); + + gui.showSignatureDataDialog(signPinSpec, signListener, "sign", cancelListener, "cancel", hashdataListener, "hashdata"); + Thread.sleep(2000); + + gui.showEnterPINDirect(signPinSpec, -1); +// +// Thread.sleep(4000); +// + +// gui.showErrorDialog(BKUGUIFacade.ERR_NO_PCSC, null, null, null); + +// gui.showSignaturePINRetryDialog(signPinSpec, 2, signListener, "sign", cancelListener, "cancel", hashdataListener, "hashdata"); +// +// Thread.sleep(2000); +// +// gui.showErrorDialog(BKUGUIFacade.ERR_UNKNOWN, new Object[] {"Testfehler"}, null, null); +// +// Thread.sleep(2000); +// +// gui.showErrorDialog("error.test", new Object[] {"Testfehler", "noch ein TestFehler"}); +// +// Thread.sleep(2000); +// +// gui.showErrorDialog("error.no.hashdata", null); +// +// Thread.sleep(2000); +// +// gui.showErrorDialog(BKUGUIFacade.ERR_UNKNOWN, new Object[] {"Testfehler"}); +// +// Thread.sleep(2000); +// +// gui.showErrorDialog("error.unknown", null); + + +// gui.showTextPlainHashDataInput("hallo,\n welt!", "12345", null, "cancel", null, "save"); +// gui.showTextPlainHashDataInput("hallo,\n welt!", "12345", null, "cancel", null, "save"); +// Thread.sleep(2000); + + } catch (InterruptedException ex) { + ex.printStackTrace(); + } + } +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/DummyFontLoader.java b/mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/DummyFontLoader.java new file mode 100644 index 00000000..505c4247 --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/DummyFontLoader.java @@ -0,0 +1,41 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import at.gv.egiz.bku.gui.viewer.FontProviderException; +import at.gv.egiz.bku.gui.viewer.FontProvider; +import java.awt.Font; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author Clemens Orthacker + */ +public class DummyFontLoader implements FontProvider { + + protected final static Log log = LogFactory.getLog(DummyFontLoader.class); + + @Override + public Font getFont() throws FontProviderException { + log.debug("return font"); + return new Font("monospaced", Font.PLAIN, 10); + } + +} diff --git a/mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/SecureViewerDialogTest.java b/mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/SecureViewerDialogTest.java new file mode 100644 index 00000000..9bbc1b1a --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/SecureViewerDialogTest.java @@ -0,0 +1,167 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package at.gv.egiz.bku.gui; + +import at.gv.egiz.stal.impl.ByteArrayHashDataInput; +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.BufferedInputStream; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.util.ResourceBundle; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Ignore; +import org.junit.Test; + +/** + * + * @author clemens + */ +@Ignore +public class SecureViewerDialogTest { + + static SecureViewerDialog secureViewer; + static ResourceBundle messages; + + @BeforeClass + public static void setUpClass() throws Exception { + messages = ResourceBundle.getBundle("at/gv/egiz/bku/gui/Messages"); + secureViewer = new SecureViewerDialog(null, messages,null, null, new DummyFontLoader(), null); + } + + @AfterClass + public static void tearDownClass() throws Exception { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + + @Test + @Ignore + public void testLatin1Supplement() throws UnsupportedEncodingException, FileNotFoundException, IOException { +// StringBuilder data = new StringBuilder(); +// data.append("\nhttp://www.unicode.org/charts/PDF/U0080.pdf\n"); +// for (int i = 0x0080; i <= 0x00ff; i++) { +// data.append((char) i); +// } +// System.out.println(data.toString()); + BufferedInputStream bis = new BufferedInputStream(new FileInputStream("/home/clemens/IAIK/MOCCA/encoding/test_iso-8859-1.txt")); + byte[] bytes = new byte[bis.available()]; + bis.read(bytes); + String s = new String(bytes, "iso-8859-1"); + System.out.println("read iso-8859-1 bytes " + s); + + secureViewer.setContent(new ByteArrayHashDataInput(s.getBytes("UTF-8"), "id-1", "text/plain", "iso-8859-1", "file.txt")); + + } + + @Test + @Ignore + public void testGreek() throws UnsupportedEncodingException { +// Font fm = new Font(Font.MONOSPACED, Font.PLAIN, 10); + Font fm = new Font("Lucida Sans Typewriter", Font.PLAIN, 18); //GothicBBB-MediumH", Font.PLAIN, 10); + System.out.println(fm.getFontName() + ", " + fm.getPSName() + ", " + fm); + + StringBuilder data = new StringBuilder(); + data.append("\nhttp://www.unicode.org/charts/PDF/U0370.pdf\n"); + for (int i = 0x0370; i <= 0x03ff; i++) { + if (!fm.canDisplay((char) i)) { + System.out.println("cannot display " + Integer.toHexString(i) ); + } + data.append((char) i); + } + + System.out.println(data.toString()); + secureViewer.setContent(new ByteArrayHashDataInput(data.toString().getBytes("UTF-8"), "id-1", "text/plain", "UTF-8", "file.txt")); + + } + + /** + * Test of setContent method, of class SecureViewerDialog. + */ + @Test +// @Ignore + public void testCyrillic() throws UnsupportedEncodingException { + + StringBuilder data = new StringBuilder("\n"); + + int[] mocca = new int[] {0x041c, 0x04a8, 0x0480, 0x0480, 0x0466 }; + + for (int i = 0; i < mocca.length; i++) { + data.append((char) mocca[i]); + } + data.append(" goes cyrillic\n"); + + data.append("\nCyrillic - http://www.unicode.org/charts/PDF/U0400.pdf\n"); + for (int i = 0x0400; i <= 0x04ff; i++) { +// System.out.printf("%c%04x=%c\t", (i & 7) == 0 ? '\n' : '\0', i, (char)i); +// System.out.print((char) i); + data.append((char)i); + } + + data.append("\n\nCyrillic Supplement - http://www.unicode.org/charts/PDF/U0500.pdf\n"); + for (int i = 0x0500; i <= 0x0525; i++) { +// System.out.printf("%c%04x=%c\t", (i & 7) == 0 ? '\n' : '\0', i, (char)i); +// System.out.print((char) i); + data.append((char) i); + } + + for (int i = 0; i < data.length(); i++) { + char c = data.charAt(i); + if (c >= '\u0400' && c <= '\u0525') { + System.out.println(c + "\tcyrillic"); + } else if (c < '\u007f') { + System.out.println(c + "\tlatin"); + } else { + System.out.println(c + "\tunknown"); + } + } + + System.out.println(data.toString()); + +// char[] cyrillicChars = new char[] {(char) 0x0411, (char) 0x0444}; +// System.out.println(new String(cyrillicChars)); // + ": " + SMCCHelper.toString(cyrillicBytes)); +// byte[] cyrillicBytes = new byte[] {(byte) 0x11, (byte) 0x04, (byte) 0x0444}; +// System.out.println(new String(cyrillicBytes, "UTF-8") + ": " + SMCCHelper.toString(cyrillicBytes)); + +// String encoding = "cp1252"; +// String data = "öäü߀"; +// byte[] bytes = data.getBytes(encoding); +// System.out.println(data + "\t" + SMCCHelper.toString(bytes)); +// byte[] bytes2 = data.getBytes("cp1252"); +// System.out.println(data + "\t" + SMCCHelper.toString(bytes2)); + + secureViewer.setContent(new ByteArrayHashDataInput(data.toString().getBytes("UTF-8"), "id-1", "text/plain", "UTF-8", "file.txt")); + + System.out.println("\n\n=============================\n"); +// +//// int[] mocca = new int[] {0x0428, 0x0429, 0x04a8, 0x04e8, 0x047a, 0x042d, 0x042d, 0x0421, 0x0421, 0x04d0, 0x0466 }; +// int[] mocca = new int[] {0x0429, 0x04a8, 0x0480, 0x0480, 0x0466 }; + for (int i = 0; i < mocca.length; i++) { + System.out.print((char) mocca[i]); + } +// for (int i = 0; i < mocca.length; i++) { +// System.out.printf(" 0x%04x", mocca[i]); +// } +// + System.out.println("\n=============================\n"); + + } + + +} \ No newline at end of file diff --git a/mocca-1.2.11/BKUCommonGUI/src/test/resources/commons-logging.properties b/mocca-1.2.11/BKUCommonGUI/src/test/resources/commons-logging.properties new file mode 100644 index 00000000..29292562 --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/test/resources/commons-logging.properties @@ -0,0 +1 @@ +org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger diff --git a/mocca-1.2.11/BKUCommonGUI/src/test/resources/log4j.properties b/mocca-1.2.11/BKUCommonGUI/src/test/resources/log4j.properties new file mode 100644 index 00000000..053eac17 --- /dev/null +++ b/mocca-1.2.11/BKUCommonGUI/src/test/resources/log4j.properties @@ -0,0 +1,19 @@ +# loglever DEBUG, appender STDOUT +log4j.rootLogger=TRACE, STDOUT +#log4j.logger.at.gv.egiz.slbinding.RedirectEventFilter=DEBUG, STDOUT + +# STDOUT appender +log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender +log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout +#log4j.appender.STDOUT.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %20c | %10t | %m%n +#log4j.appender.STDOUT.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n +log4j.appender.STDOUT.layout.ConversionPattern=%-5p |%d | %t | %c %x- %m%n + +### FILE appender +#log4j.appender.file=org.apache.log4j.RollingFileAppender +#log4j.appender.file.maxFileSize=100KB +#log4j.appender.file.maxBackupIndex=9 +#log4j.appender.file.File=egovbus_ca.log +#log4j.appender.file.threshold=info +#log4j.appender.file.layout=org.apache.log4j.PatternLayout +#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n \ No newline at end of file diff --git a/mocca-1.2.11/BKUFonts/.classpath b/mocca-1.2.11/BKUFonts/.classpath new file mode 100644 index 00000000..54382402 --- /dev/null +++ b/mocca-1.2.11/BKUFonts/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/mocca-1.2.11/BKUFonts/.project b/mocca-1.2.11/BKUFonts/.project new file mode 100644 index 00000000..62c74cfb --- /dev/null +++ b/mocca-1.2.11/BKUFonts/.project @@ -0,0 +1,36 @@ + + + BKUFonts + + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + org.maven.ide.eclipse.maven2Builder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.jdt.core.javanature + org.maven.ide.eclipse.maven2Nature + org.eclipse.wst.common.project.facet.core.nature + + diff --git a/mocca-1.2.11/BKUFonts/.settings/org.eclipse.jdt.core.prefs b/mocca-1.2.11/BKUFonts/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..9db35b19 --- /dev/null +++ b/mocca-1.2.11/BKUFonts/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +#Fri Nov 06 15:23:46 CET 2009 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/mocca-1.2.11/BKUFonts/.settings/org.eclipse.wst.common.component b/mocca-1.2.11/BKUFonts/.settings/org.eclipse.wst.common.component new file mode 100644 index 00000000..d7d79bb4 --- /dev/null +++ b/mocca-1.2.11/BKUFonts/.settings/org.eclipse.wst.common.component @@ -0,0 +1,6 @@ + + + + + + diff --git a/mocca-1.2.11/BKUFonts/.settings/org.eclipse.wst.common.project.facet.core.xml b/mocca-1.2.11/BKUFonts/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 00000000..f68988cf --- /dev/null +++ b/mocca-1.2.11/BKUFonts/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/mocca-1.2.11/BKUFonts/.settings/org.maven.ide.eclipse.prefs b/mocca-1.2.11/BKUFonts/.settings/org.maven.ide.eclipse.prefs new file mode 100644 index 00000000..51d61132 --- /dev/null +++ b/mocca-1.2.11/BKUFonts/.settings/org.maven.ide.eclipse.prefs @@ -0,0 +1,9 @@ +#Fri Nov 06 15:23:22 CET 2009 +activeProfiles= +eclipse.preferences.version=1 +fullBuildGoals=process-test-resources +includeModules=false +resolveWorkspaceProjects=true +resourceFilterGoals=process-resources resources\:testResources +skipCompilerPlugin=true +version=1 diff --git a/mocca-1.2.11/BKUFonts/pom.xml b/mocca-1.2.11/BKUFonts/pom.xml new file mode 100644 index 00000000..0326c28d --- /dev/null +++ b/mocca-1.2.11/BKUFonts/pom.xml @@ -0,0 +1,41 @@ + + 4.0.0 + + bku + at.gv.egiz + 1.2.11 + + at.gv.egiz + BKUFonts + 1.2 + BKU Fonts + + This module is used in validator(s) and viewer and is a direct dependency of + - BKUViewer (attention, this is the validator!) + TextValidator depends on the fonts. (compile scope, make available for BKULocal/Online TextValidator) + (TextValidator should rather use a FontProvider) + - BKUOnline: + - direct/provided if jar inclusion in applet dir, but do not enforce inclusion as WEB-INF/lib + - transitive from BKUViewer if unpack-fonts to applet dir + - removed the BKUCommonGUI (runtime; propagate dependency to BKUApplet): + no real dependency: BKUCommonGUI contains SecureFontProvider interface only + (which does not state how fonts are loaded); implementations should depend no BKUFonts + (ResourceFontLoader in BKULocal depends on the fonts, however URLFontLoader in BKUApplet doesn't. + BKUOnline however depends on BKUFonts for providing the fonts as web-resource for the applet) + + + at.gv.egiz.bku.text.TextValidator and xxx.LocalFontProvider load fonts from classpath, + resource name must be known, TODO: encapsulate resource loading (FontProvider constants?) + + at.gv.egiz.bku.online.applet.URLFontLoader loads (unpacked) font files from applet codebase, + resource names _must_ be known since applet has no BKUFonts dependency + + + + + + src/main/fonts + + + + \ No newline at end of file diff --git a/mocca-1.2.11/BKUFonts/src/main/fonts/DejaVuLGCSans.ttf b/mocca-1.2.11/BKUFonts/src/main/fonts/DejaVuLGCSans.ttf new file mode 100644 index 00000000..cae5a48b Binary files /dev/null and b/mocca-1.2.11/BKUFonts/src/main/fonts/DejaVuLGCSans.ttf differ diff --git a/mocca-1.2.11/BKUFonts/src/main/fonts/DejaVuLGCSansMono.ttf b/mocca-1.2.11/BKUFonts/src/main/fonts/DejaVuLGCSansMono.ttf new file mode 100644 index 00000000..21647753 Binary files /dev/null and b/mocca-1.2.11/BKUFonts/src/main/fonts/DejaVuLGCSansMono.ttf differ diff --git a/mocca-1.2.11/BKUFonts/src/main/fonts/DejaVuLGCSerif.ttf b/mocca-1.2.11/BKUFonts/src/main/fonts/DejaVuLGCSerif.ttf new file mode 100644 index 00000000..4b3bf2e6 Binary files /dev/null and b/mocca-1.2.11/BKUFonts/src/main/fonts/DejaVuLGCSerif.ttf differ diff --git a/mocca-1.2.11/BKUFonts/src/main/fonts/LICENSE b/mocca-1.2.11/BKUFonts/src/main/fonts/LICENSE new file mode 100644 index 00000000..254e2cc4 --- /dev/null +++ b/mocca-1.2.11/BKUFonts/src/main/fonts/LICENSE @@ -0,0 +1,99 @@ +Fonts are (c) Bitstream (see below). DejaVu changes are in public domain. +Glyphs imported from Arev fonts are (c) Tavmjong Bah (see below) + +Bitstream Vera Fonts Copyright +------------------------------ + +Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream Vera is +a trademark of Bitstream, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of the fonts accompanying this license ("Fonts") and associated +documentation files (the "Font Software"), to reproduce and distribute the +Font Software, including without limitation the rights to use, copy, merge, +publish, distribute, and/or sell copies of the Font Software, and to permit +persons to whom the Font Software is furnished to do so, subject to the +following conditions: + +The above copyright and trademark notices and this permission notice shall +be included in all copies of one or more of the Font Software typefaces. + +The Font Software may be modified, altered, or added to, and in particular +the designs of glyphs or characters in the Fonts may be modified and +additional glyphs or characters may be added to the Fonts, only if the fonts +are renamed to names not containing either the words "Bitstream" or the word +"Vera". + +This License becomes null and void to the extent applicable to Fonts or Font +Software that has been modified and is distributed under the "Bitstream +Vera" names. + +The Font Software may be sold as part of a larger software package but no +copy of one or more of the Font Software typefaces may be sold by itself. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, +TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL BITSTREAM OR THE GNOME +FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING +ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF +THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE +FONT SOFTWARE. + +Except as contained in this notice, the names of Gnome, the Gnome +Foundation, and Bitstream Inc., shall not be used in advertising or +otherwise to promote the sale, use or other dealings in this Font Software +without prior written authorization from the Gnome Foundation or Bitstream +Inc., respectively. For further information, contact: fonts at gnome dot +org. + +Arev Fonts Copyright +------------------------------ + +Copyright (c) 2006 by Tavmjong Bah. All Rights Reserved. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the fonts accompanying this license ("Fonts") and +associated documentation files (the "Font Software"), to reproduce +and distribute the modifications to the Bitstream Vera Font Software, +including without limitation the rights to use, copy, merge, publish, +distribute, and/or sell copies of the Font Software, and to permit +persons to whom the Font Software is furnished to do so, subject to +the following conditions: + +The above copyright and trademark notices and this permission notice +shall be included in all copies of one or more of the Font Software +typefaces. + +The Font Software may be modified, altered, or added to, and in +particular the designs of glyphs or characters in the Fonts may be +modified and additional glyphs or characters may be added to the +Fonts, only if the fonts are renamed to names not containing either +the words "Tavmjong Bah" or the word "Arev". + +This License becomes null and void to the extent applicable to Fonts +or Font Software that has been modified and is distributed under the +"Tavmjong Bah Arev" names. + +The Font Software may be sold as part of a larger software package but +no copy of one or more of the Font Software typefaces may be sold by +itself. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL +TAVMJONG BAH BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. + +Except as contained in this notice, the name of Tavmjong Bah shall not +be used in advertising or otherwise to promote the sale, use or other +dealings in this Font Software without prior written authorization +from Tavmjong Bah. For further information, contact: tavmjong @ free +. fr. + +$Id: LICENSE 2133 2007-11-28 02:46:28Z lechimp $ diff --git a/mocca-1.2.11/BKUFonts/src/main/fonts/META-INF/services/at.gv.egiz.bku.gui.SecureFontProvider b/mocca-1.2.11/BKUFonts/src/main/fonts/META-INF/services/at.gv.egiz.bku.gui.SecureFontProvider new file mode 100644 index 00000000..c9bf2059 --- /dev/null +++ b/mocca-1.2.11/BKUFonts/src/main/fonts/META-INF/services/at.gv.egiz.bku.gui.SecureFontProvider @@ -0,0 +1,3 @@ +Serif DejaVuLGCSerif.ttf +Sans DejaVuLGCSans.ttf +SansMono DejaVuLGCSansMono.ttf diff --git a/mocca-1.2.11/BKUGuiExt/pom.xml b/mocca-1.2.11/BKUGuiExt/pom.xml new file mode 100644 index 00000000..73e9df63 --- /dev/null +++ b/mocca-1.2.11/BKUGuiExt/pom.xml @@ -0,0 +1,24 @@ + + 4.0.0 + + bku + at.gv.egiz + 1.2.11 + + at.gv.egiz + BKUGuiExt + 1.2.11 + BKU GUI Extension + + + at.gv.egiz + STALXService + 1.2.11 + + + at.gv.egiz + smccSTAL + 1.2.11 + + + \ No newline at end of file diff --git a/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ActivationGUI.java b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ActivationGUI.java new file mode 100644 index 00000000..37f30340 --- /dev/null +++ b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ActivationGUI.java @@ -0,0 +1,251 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import at.gv.egiz.bku.gui.viewer.FontProvider; +import java.awt.Container; +import java.awt.Cursor; +import java.awt.event.ActionListener; +import java.net.URL; +import java.text.MessageFormat; +import java.util.Locale; +import javax.swing.GroupLayout; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JProgressBar; +import javax.swing.LayoutStyle; +import javax.swing.SwingUtilities; + +/** + * + * @author Clemens Orthacker + */ +public class ActivationGUI extends CardMgmtGUI implements ActivationGUIFacade { + + public static final String TITLE_ACTIVATION = "title.activation"; + public static final String LABEL_ACTIVATION = "label.activation"; + public static final String LABEL_ACTIVATION_STEP = "label.activation.step"; + public static final String LABEL_ACTIVATION_IDLE = "label.activation.idle"; + + public static final String HELP_ACTIVATION = "help.activation"; + + protected JProgressBar progressBar; + + public ActivationGUI(Container contentPane, + Locale locale, + Style guiStyle, + URL backgroundImgURL, + FontProvider fontProvider, + AbstractHelpListener helpListener, + SwitchFocusListener switchFocusListener) { + super(contentPane, locale, guiStyle, backgroundImgURL, fontProvider, helpListener, switchFocusListener); + + progressBar = new JProgressBar(); + } + + @Override + public void showActivationProgressDialog(final int currentStep, final int maxProgress, final ActionListener cancelListener, final String cancelCommand) { + + log.debug("scheduling activation progress dialog (step " + currentStep + ")"); + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + + log.debug("show activation progress dialog (step " + currentStep + ")"); + + mainPanel.removeAll(); + buttonPanel.removeAll(); + + mainPanel.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + + + JLabel infoLabel = new JLabel(); + infoLabel.setFont(infoLabel.getFont().deriveFont(infoLabel.getFont().getStyle() & ~java.awt.Font.BOLD)); + + if (renderHeaderPanel) { + titleLabel.setText(cardmgmtMessages.getString(TITLE_ACTIVATION)); + infoLabel.setText(cardmgmtMessages.getString(LABEL_ACTIVATION)); + } else { + infoLabel.setText(cardmgmtMessages.getString(TITLE_ACTIVATION)); + } + + helpMouseListener.setHelpTopic(HELP_ACTIVATION); + + progressBar.setIndeterminate(false); + progressBar.setStringPainted(true); + progressBar.setString(null); //reset to percentage + progressBar.setMinimum(0); + progressBar.setMaximum(maxProgress); + + JLabel stepLabel = new JLabel(); + stepLabel.setFont(stepLabel.getFont().deriveFont(stepLabel.getFont().getStyle() & ~java.awt.Font.BOLD, stepLabel.getFont().getSize()-2)); + String stepPattern = cardmgmtMessages.getString(LABEL_ACTIVATION_STEP); + stepLabel.setText(MessageFormat.format(stepPattern, new Object[]{ currentStep })); + + GroupLayout mainPanelLayout = new GroupLayout(mainPanel); + mainPanel.setLayout(mainPanelLayout); + + GroupLayout.SequentialGroup infoHorizontal = mainPanelLayout.createSequentialGroup().addComponent(infoLabel); + GroupLayout.ParallelGroup infoVertical = mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(infoLabel); + + if (!renderHeaderPanel) { + infoHorizontal.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED, 0, Short.MAX_VALUE).addComponent(helpLabel); + infoVertical.addComponent(helpLabel); + } + + mainPanelLayout.setHorizontalGroup( + mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(infoHorizontal) + .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(stepLabel) + .addComponent(progressBar))); + + mainPanelLayout.setVerticalGroup( + mainPanelLayout.createSequentialGroup() + .addGroup(infoVertical) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(mainPanelLayout.createSequentialGroup() + .addComponent(stepLabel) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(progressBar))); + + JButton cancelButton = new JButton(); + cancelButton.setFont(cancelButton.getFont().deriveFont(cancelButton.getFont().getStyle() & ~java.awt.Font.BOLD)); + cancelButton.setText(messages.getString(BUTTON_CANCEL)); + cancelButton.addActionListener(cancelListener); + cancelButton.setActionCommand(cancelCommand); + + GroupLayout buttonPanelLayout = new GroupLayout(buttonPanel); + buttonPanel.setLayout(buttonPanelLayout); + + buttonPanelLayout.setHorizontalGroup( + buttonPanelLayout.createSequentialGroup() + .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cancelButton, GroupLayout.PREFERRED_SIZE, buttonSize, GroupLayout.PREFERRED_SIZE)); + buttonPanelLayout.setVerticalGroup( + buttonPanelLayout.createSequentialGroup() + .addComponent(cancelButton)); + + contentPanel.validate(); + + } + }); + + } + + @Override + public void incrementProgress() { + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + progressBar.setValue(progressBar.getValue() + 1); + } + }); + + } + + @Override + public void showIdleDialog(final ActionListener cancelListener, final String cancelCommand) { + log.debug("scheduling idle dialog"); + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + + log.debug("show idle dialog"); + + mainPanel.removeAll(); + buttonPanel.removeAll(); + + mainPanel.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + + + JLabel infoLabel = new JLabel(); + infoLabel.setFont(infoLabel.getFont().deriveFont(infoLabel.getFont().getStyle() & ~java.awt.Font.BOLD)); + + if (renderHeaderPanel) { + titleLabel.setText(cardmgmtMessages.getString(TITLE_ACTIVATION)); + infoLabel.setText(cardmgmtMessages.getString(LABEL_ACTIVATION)); + } else { + infoLabel.setText(cardmgmtMessages.getString(TITLE_ACTIVATION)); + } + + helpMouseListener.setHelpTopic(HELP_ACTIVATION); + + progressBar.setIndeterminate(true); + progressBar.setStringPainted(true); + progressBar.setString(""); //not string painted progressbar is smaller + + JLabel stepLabel = new JLabel(); + stepLabel.setFont(stepLabel.getFont().deriveFont(stepLabel.getFont().getStyle() & ~java.awt.Font.BOLD, stepLabel.getFont().getSize()-2)); + stepLabel.setText(cardmgmtMessages.getString(LABEL_ACTIVATION_IDLE)); + + GroupLayout mainPanelLayout = new GroupLayout(mainPanel); + mainPanel.setLayout(mainPanelLayout); + + GroupLayout.SequentialGroup infoHorizontal = mainPanelLayout.createSequentialGroup().addComponent(infoLabel); + GroupLayout.ParallelGroup infoVertical = mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(infoLabel); + + if (!renderHeaderPanel) { + infoHorizontal.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED, 0, Short.MAX_VALUE).addComponent(helpLabel); + infoVertical.addComponent(helpLabel); + } + + mainPanelLayout.setHorizontalGroup( + mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(infoHorizontal) + .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(stepLabel) + .addComponent(progressBar))); + + mainPanelLayout.setVerticalGroup( + mainPanelLayout.createSequentialGroup() + .addGroup(infoVertical) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(mainPanelLayout.createSequentialGroup() + .addComponent(stepLabel) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(progressBar))); + + JButton cancelButton = new JButton(); + cancelButton.setFont(cancelButton.getFont().deriveFont(cancelButton.getFont().getStyle() & ~java.awt.Font.BOLD)); + cancelButton.setText(messages.getString(BUTTON_CANCEL)); + cancelButton.addActionListener(cancelListener); + cancelButton.setActionCommand(cancelCommand); + + GroupLayout buttonPanelLayout = new GroupLayout(buttonPanel); + buttonPanel.setLayout(buttonPanelLayout); + + buttonPanelLayout.setHorizontalGroup( + buttonPanelLayout.createSequentialGroup() + .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(cancelButton, GroupLayout.PREFERRED_SIZE, buttonSize, GroupLayout.PREFERRED_SIZE)); + buttonPanelLayout.setVerticalGroup( + buttonPanelLayout.createSequentialGroup() + .addComponent(cancelButton)); + + contentPanel.validate(); + + } + }); + + } +} diff --git a/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ActivationGUIFacade.java b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ActivationGUIFacade.java new file mode 100644 index 00000000..3fc14d04 --- /dev/null +++ b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ActivationGUIFacade.java @@ -0,0 +1,34 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import at.gv.egiz.bku.gui.*; +import java.awt.event.ActionListener; + +/** + * + * @author Clemens Orthacker + */ +public interface ActivationGUIFacade extends BKUGUIFacade { + + public void showActivationProgressDialog(int currentStep, int maxProgress, ActionListener cancelListener, String cancelCommand); + + public void incrementProgress(); + + public void showIdleDialog(ActionListener cancelListener, String cancelCommand); + +} diff --git a/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/CardMgmtGUI.java b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/CardMgmtGUI.java new file mode 100644 index 00000000..98f44d55 --- /dev/null +++ b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/CardMgmtGUI.java @@ -0,0 +1,73 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import at.gv.egiz.bku.gui.viewer.FontProvider; +import java.awt.Container; +import java.net.URL; +import java.util.Locale; +import java.util.ResourceBundle; + +/** + * Common superclass for Activation and PinManagement GUIs + * + * @author Clemens Orthacker + */ +public class CardMgmtGUI extends BKUGUIImpl { + + public static final String CARDMGMT_MESSAGES_BUNDLE = "at/gv/egiz/bku/gui/ActivationMessages"; + + protected ResourceBundle cardmgmtMessages; + + public CardMgmtGUI(Container contentPane, + Locale locale, + Style guiStyle, + URL backgroundImgURL, + FontProvider fontProvider, + AbstractHelpListener helpListener, + SwitchFocusListener switchFocusListener) { + super(contentPane, locale, guiStyle, backgroundImgURL, fontProvider, helpListener, switchFocusListener); + + } + + @Override + protected void loadMessageBundle(Locale locale) { + super.loadMessageBundle(locale); + + if (locale != null) { + Locale lang = new Locale(locale.getLanguage().substring(0,2)); + log.debug("loading applet resources for language: " + lang.toString()); + cardmgmtMessages = ResourceBundle.getBundle(CARDMGMT_MESSAGES_BUNDLE, lang); + } else { + cardmgmtMessages = ResourceBundle.getBundle(CARDMGMT_MESSAGES_BUNDLE); + } + } + + @Override + protected String getMessage(String key) { + if (super.hasMessage(key)) { + return super.getMessage(key); + } + return cardmgmtMessages.getString(key); + } + + @Override + protected boolean hasMessage(String key) { + return (cardmgmtMessages.containsKey(key) || super.hasMessage(key)); + } +} diff --git a/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ComparePinDocument.java b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ComparePinDocument.java new file mode 100644 index 00000000..623f6fad --- /dev/null +++ b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ComparePinDocument.java @@ -0,0 +1,102 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.swing.JButton; +import javax.swing.text.AttributeSet; +import javax.swing.text.BadLocationException; +import javax.swing.text.Document; +import javax.swing.text.PlainDocument; + +/** + * Checks if the pin confirmation (compareTo) corresponds to this pin. + * Additionally, checks if currentPIN (optional) meets the requirements before enabling the OK button. + * @author clemens + */ +class ComparePinDocument extends PlainDocument { + + private static final long serialVersionUID = 1L; + protected Pattern pinPattern; + protected int minLength; + protected int maxLength; + protected JButton enterButton; + protected Document compareTo; + protected Document currentPIN; + + /** + * Constructor without compareTo Document parameter (allow null and set later to avoid cyclic dependencies) + */ + public ComparePinDocument(int minLength, int maxLength, String pattern, JButton enterButton) { + if (enterButton == null) { + throw new NullPointerException("OK button null"); + } + if (pattern != null) { + pinPattern = Pattern.compile(pattern); + } else { + pinPattern = Pattern.compile("."); + } + this.minLength = minLength; + this.maxLength = maxLength; + this.enterButton = enterButton; + } + + /** + * @param compareTo should not be null (allow null and set later to avoid cyclic dependencies) + */ + public ComparePinDocument(int minLength, int maxLength, String pattern, + JButton enterButton, Document compareTo) { + this(minLength, maxLength, pattern, enterButton); + this.compareTo = compareTo; + } + + public ComparePinDocument(int minLength, int maxLength, String pattern, + JButton enterButton, Document compareTo, Document currentPIN) { + this(minLength, maxLength, pattern, enterButton, compareTo); + this.currentPIN = currentPIN; + } + + @Override + public void insertString(int offs, String str, AttributeSet a) throws BadLocationException { + if (maxLength < 0 || maxLength >= (getLength() + str.length())) { + boolean matches = true; + for (int i = 0; i < str.length(); i++) { + Matcher m = pinPattern.matcher(str.substring(i, i + 1)); + if (!m.matches()) { + matches = false; + } + } + if (matches) { + super.insertString(offs, str, a); + enterButton.setEnabled( + getLength() >= minLength + && (currentPIN == null || currentPIN.getLength() >= minLength) + && compareTo.getText(0, compareTo.getLength()).equals(getText(0, getLength()))); + } + } + } + + @Override + public void remove(int offs, int len) throws BadLocationException { + super.remove(offs, len); + enterButton.setEnabled( + getLength() >= minLength + && (currentPIN == null || currentPIN.getLength() >= minLength) + && compareTo.getText(0, compareTo.getLength()).equals(getText(0, getLength()))); + } +} diff --git a/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ExtendedPinDocument.java b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ExtendedPinDocument.java new file mode 100644 index 00000000..3a0d7a66 --- /dev/null +++ b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ExtendedPinDocument.java @@ -0,0 +1,108 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.swing.JButton; +import javax.swing.text.AttributeSet; +import javax.swing.text.BadLocationException; +import javax.swing.text.Document; +import javax.swing.text.PlainDocument; + +/** + * This PINDocument also checks if the additional (optional) pinDocuments also meet the requirements + * to enable the OK button. + * Checks if (optional) newPIN and confirmPIN correspond + * + * @author clemens + */ +class ExtendedPinDocument extends PlainDocument { + + private static final long serialVersionUID = 1L; + protected Pattern pinPattern; + protected int minLength; + protected int maxLength; + protected JButton enterButton; + protected Document newPIN; + protected Document confirmPIN; + + public ExtendedPinDocument(int minLength, int maxLength, String pattern, JButton enterButton) { + if (enterButton == null) { + throw new NullPointerException("OK Button null"); + } + if (pattern != null) { + pinPattern = Pattern.compile(pattern); + } else { + pinPattern = Pattern.compile("."); + } + this.minLength = minLength; + this.maxLength = maxLength; + this.enterButton = enterButton; + } + + /** + * @param pinSpec + * @param enterButton + * @param newPIN, confirmPIN + */ + public ExtendedPinDocument(int minLength, int maxLength, String pattern, JButton enterButton, Document newPIN, Document confirmPIN) { + this(minLength, maxLength, pattern, enterButton); + this.newPIN = newPIN; + this.confirmPIN = confirmPIN; + } + + @Override + public void insertString(int offs, String str, AttributeSet a) throws BadLocationException { + if (maxLength < 0 || maxLength >= (getLength() + str.length())) { + boolean matches = true; + for (int i = 0; i < str.length(); i++) { + Matcher m = pinPattern.matcher(str.substring(i, i + 1)); + if (!m.matches()) { + matches = false; + } + } + if (matches) { + super.insertString(offs, str, a); + enterButton.setEnabled( + getLength() >= minLength + && (newPIN == null || newPIN.getLength() >= minLength) + && (confirmPIN == null || compare())); + } + } + } + + @Override + public void remove(int offs, int len) throws BadLocationException { + super.remove(offs, len); + enterButton.setEnabled( + getLength() >= minLength + && (newPIN == null || newPIN.getLength() >= minLength) + && (confirmPIN == null || compare())); + } + + /** + * assume confirmPIN != null + * @return + */ + private boolean compare() throws BadLocationException { + if (newPIN != null) { + return confirmPIN.getText(0, confirmPIN.getLength()).equals(newPIN.getText(0, newPIN.getLength())); + } + return false; + } +} diff --git a/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINManagementGUI.java b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINManagementGUI.java new file mode 100644 index 00000000..4dcc388f --- /dev/null +++ b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINManagementGUI.java @@ -0,0 +1,761 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import at.gv.egiz.bku.gui.viewer.FontProvider; +import at.gv.egiz.smcc.PINSpec; +import java.awt.Container; +import java.awt.Cursor; +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.net.URL; +import java.text.MessageFormat; +import java.util.Locale; +import java.util.Map; +import javax.swing.GroupLayout; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JPasswordField; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.LayoutStyle; +import javax.swing.ListSelectionModel; +import javax.swing.SwingUtilities; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * TODO pull out ResourceBundle to common superclass for activationGUI and pinMgmtGUI + * @author Clemens Orthacker + */ +public class PINManagementGUI extends CardMgmtGUI implements PINManagementGUIFacade { + + protected static final Log log = LogFactory.getLog(PINManagementGUI.class); + + /** remember the pinfield to return to worker */ + protected JPasswordField oldPinField; + /** remember the pinSpec to return to worker */ + protected PINSpec pinSpec; + + public PINManagementGUI(Container contentPane, + Locale locale, + Style guiStyle, + URL backgroundImgURL, + FontProvider fontProvider, + AbstractHelpListener helpListener, + SwitchFocusListener switchFocusListener) { + super(contentPane, locale, guiStyle, backgroundImgURL, fontProvider, helpListener, switchFocusListener); + } + + @Override + public char[] getOldPin() { + if (oldPinField != null) { + char[] pin = oldPinField.getPassword(); + oldPinField = null; + return pin; + } + return null; + } + + @Override + public PINSpec getSelectedPINSpec() { + return pinSpec; + } + + @Override + public void showPINManagementDialog(final Map pins, + final ActionListener activateListener, + final String activateCmd, + final String changeCmd, + final String unblockCmd, + final String verifyCmd, + final ActionListener cancelListener, + final String cancelCmd) { + + log.debug("scheduling PIN managment dialog"); + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + log.debug("show PIN management dialog"); + + mainPanel.removeAll(); + buttonPanel.removeAll(); + + helpMouseListener.setHelpTopic(HELP_PINMGMT); + helpKeyListener.setHelpTopic(HELP_PINMGMT); + + + JLabel mgmtLabel = new JLabel(); + mgmtLabel.setFont(mgmtLabel.getFont().deriveFont(mgmtLabel.getFont().getStyle() & ~java.awt.Font.BOLD)); + + if (renderHeaderPanel) { + titleLabel.setText(getMessage(TITLE_PINMGMT)); + String infoPattern = getMessage(MESSAGE_PINMGMT); + mgmtLabel.setText(MessageFormat.format(infoPattern, pins.size())); + } else { + mgmtLabel.setText(getMessage(TITLE_PINMGMT)); + } + + final PINStatusTableModel tableModel = new PINStatusTableModel(pins); + final JTable pinStatusTable = new JTable(tableModel); + pinStatusTable.setDefaultRenderer(PINSpec.class, new PINSpecRenderer()); + pinStatusTable.setDefaultRenderer(STATUS.class, new PINStatusRenderer(cardmgmtMessages)); + pinStatusTable.setTableHeader(null); + pinStatusTable.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); +// pinStatusTable.addMouseMotionListener(new MouseMotionAdapter() { +// +// @Override +// public void mouseMoved(MouseEvent e) { +// if (pinStatusTable.columnAtPoint(e.getPoint()) == 0) { +// pinStatusTable.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); +// } else { +// pinStatusTable.setCursor(Cursor.getDefaultCursor()); +// } +// } +// }); + + final JButton activateButton = new JButton(); + activateButton.setFont(activateButton.getFont().deriveFont(activateButton.getFont().getStyle() & ~java.awt.Font.BOLD)); + activateButton.addActionListener(activateListener); + + pinStatusTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + pinStatusTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { + + @Override + public void valueChanged(final ListSelectionEvent e) { + //invoke later to allow thread to paint selection background + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + ListSelectionModel lsm = (ListSelectionModel) e.getSource(); + int selectionIdx = lsm.getMinSelectionIndex(); + if (selectionIdx >= 0) { + pinSpec = (PINSpec) tableModel.getValueAt(selectionIdx, 0); + STATUS status = (STATUS) tableModel.getValueAt(selectionIdx, 1); + + if (status == STATUS.NOT_ACTIV) { + activateButton.setText(getMessage(BUTTON_ACTIVATE)); + activateButton.setEnabled(true); + activateButton.setActionCommand(activateCmd); + } else if (status == STATUS.BLOCKED) { + activateButton.setText(getMessage(BUTTON_UNBLOCK)); + activateButton.setEnabled(true); + activateButton.setActionCommand(unblockCmd); + } else if (status == STATUS.ACTIV) { + activateButton.setText(getMessage(BUTTON_CHANGE)); + activateButton.setEnabled(true); + activateButton.setActionCommand(changeCmd); + } else if (status == STATUS.UNKNOWN) { + activateButton.setText(getMessage(BUTTON_VERIFY)); + activateButton.setEnabled(true); + activateButton.setActionCommand(verifyCmd); + } + } + } + }); + } + }); + + //select first entry + pinStatusTable.getSelectionModel().setSelectionInterval(0, 0); + + JScrollPane pinStatusScrollPane = new JScrollPane(pinStatusTable); + + GroupLayout mainPanelLayout = new GroupLayout(mainPanel); + mainPanel.setLayout(mainPanelLayout); + + GroupLayout.SequentialGroup messageHorizontal = mainPanelLayout.createSequentialGroup() + .addComponent(mgmtLabel); + GroupLayout.Group messageVertical = mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(mgmtLabel); + if (!renderHeaderPanel) { + messageHorizontal + .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED, 0, Short.MAX_VALUE) + .addComponent(switchFocusDummyLabel) + .addComponent(helpLabel); + messageVertical + .addComponent(switchFocusDummyLabel) + .addComponent(helpLabel); + } + + mainPanelLayout.setHorizontalGroup( + mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(messageHorizontal) + .addComponent(pinStatusScrollPane, 0, 0, Short.MAX_VALUE)); + + mainPanelLayout.setVerticalGroup( + mainPanelLayout.createSequentialGroup() + .addGroup(messageVertical) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(pinStatusScrollPane, 0, 0, pinStatusTable.getPreferredSize().height+3)); + + JButton cancelButton = new JButton(); + cancelButton.setFont(cancelButton.getFont().deriveFont(cancelButton.getFont().getStyle() & ~java.awt.Font.BOLD)); + cancelButton.setText(getMessage(BUTTON_CLOSE)); + cancelButton.setActionCommand(cancelCmd); + cancelButton.addActionListener(cancelListener); + + GroupLayout buttonPanelLayout = new GroupLayout(buttonPanel); + buttonPanel.setLayout(buttonPanelLayout); + + GroupLayout.SequentialGroup buttonHorizontal = buttonPanelLayout.createSequentialGroup() + .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(activateButton, GroupLayout.PREFERRED_SIZE, buttonSize, GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cancelButton, GroupLayout.PREFERRED_SIZE, buttonSize, GroupLayout.PREFERRED_SIZE); + + GroupLayout.Group buttonVertical = buttonPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(activateButton) + .addComponent(cancelButton); + + buttonPanelLayout.setHorizontalGroup(buttonHorizontal); + buttonPanelLayout.setVerticalGroup(buttonVertical); + + helpLabel.requestFocus(); + contentPanel.validate(); + } + }); + } + + @Override + public void showModifyPINDirect(DIALOG type, PINSpec pinSpec, int retries) { + String title, msg; + Object[] params; + if (retries < 0) { + params = new Object[2]; + if (shortText) { + params[0] = "PIN"; + } else { + params[0] = pinSpec.getLocalizedName(); + } + params[1] = pinSpec.getLocalizedLength(); + if (type == DIALOG.CHANGE) { + log.debug("show change pin dialog"); + title = TITLE_CHANGE_PIN; + msg = MESSAGE_CHANGE_PINPAD_DIREKT; + } else if (type == DIALOG.ACTIVATE) { + log.debug("show activate pin dialog"); + title = TITLE_ACTIVATE_PIN; + msg = MESSAGE_ACTIVATE_PINPAD_DIREKT; + } else if (type == DIALOG.VERIFY) { + log.debug("show verify pin dialog"); + title = TITLE_VERIFY_PINPAD; + msg = MESSAGE_ENTERPIN_PINPAD_DIRECT; + } else { + log.debug("show unblock pin dialog"); + title = TITLE_UNBLOCK_PIN; + msg = MESSAGE_UNBLOCK_PINPAD_DIREKT; + } + + } else { + log.debug("show retry pin dialog"); + title = TITLE_RETRY; + msg = (retries < 2) ? + MESSAGE_LAST_RETRY : MESSAGE_RETRIES; + params = new Object[] {String.valueOf(retries)}; + } + showMessageDialog(title, msg, params); + } + + @Override + public void showPINDialog(DIALOG type, PINSpec pinSpec, int retries, + ActionListener okListener, String okCommand, + ActionListener cancelListener, String cancelCommand) { + showPINDialog(type, pinSpec, retries, false, + okListener, okCommand, cancelListener, cancelCommand); + } + + + private void showPINDialog(final DIALOG type, final PINSpec pinSpec, + final int retries, final boolean pinpad, + final ActionListener okListener, final String okCommand, + final ActionListener cancelListener, final String cancelCommand) { + + log.debug("scheduling pin dialog"); + + SwingUtilities.invokeLater(new Runnable() { + + @Override + public void run() { + + String HELP_TOPIC, TITLE, MESSAGE_MGMT, MESSAGE_MGMT_PARAM; + HELP_TOPIC = HELP_PINMGMT; + + if (retries < 0) { + if (type == DIALOG.CHANGE) { + log.debug("show change pin dialog"); + TITLE = TITLE_CHANGE_PIN; + MESSAGE_MGMT = MESSAGE_CHANGE_PIN; + } else if (type == DIALOG.ACTIVATE) { + log.debug("show activate pin dialog"); + TITLE = TITLE_ACTIVATE_PIN; + MESSAGE_MGMT = MESSAGE_ACTIVATE_PIN; + oldPinField = null; + } else if (type == DIALOG.VERIFY) { + log.debug("show verify pin dialog"); + TITLE = TITLE_VERIFY_PIN; + MESSAGE_MGMT = MESSAGE_ENTERPIN; + } else { + log.debug("show unblock pin dialog"); + TITLE = TITLE_UNBLOCK_PIN; + MESSAGE_MGMT = MESSAGE_UNBLOCK_PIN; + } + if (shortText) { + MESSAGE_MGMT_PARAM = "PIN"; + } else { + MESSAGE_MGMT_PARAM = pinSpec.getLocalizedName(); + } + } else { + log.debug("show retry pin dialog"); + TITLE = TITLE_RETRY; + MESSAGE_MGMT = (retries < 2) ? + MESSAGE_LAST_RETRY : MESSAGE_RETRIES; + MESSAGE_MGMT_PARAM = String.valueOf(retries); + } + + mainPanel.removeAll(); + buttonPanel.removeAll(); + + helpMouseListener.setHelpTopic(HELP_TOPIC); + helpKeyListener.setHelpTopic(HELP_TOPIC); + + JLabel mgmtLabel = new JLabel(); + if (retries < 0) { + mgmtLabel.setFont(mgmtLabel.getFont().deriveFont(mgmtLabel.getFont().getStyle() & ~Font.BOLD)); + } else { + mgmtLabel.setFont(mgmtLabel.getFont().deriveFont(mgmtLabel.getFont().getStyle() | Font.BOLD)); + mgmtLabel.setForeground(ERROR_COLOR); + helpMouseListener.setHelpTopic(HELP_RETRY); + helpKeyListener.setHelpTopic(HELP_RETRY); + } + + if (renderHeaderPanel) { + titleLabel.setText(getMessage(TITLE)); + String mgmtPattern = getMessage(MESSAGE_MGMT); + mgmtLabel.setText(MessageFormat.format(mgmtPattern, MESSAGE_MGMT_PARAM)); + } else { + mgmtLabel.setText(getMessage(TITLE)); + } + + //////////////////////////////////////////////////////////////// + // COMMON LAYOUT SECTION + //////////////////////////////////////////////////////////////// + + GroupLayout mainPanelLayout = new GroupLayout(mainPanel); + mainPanel.setLayout(mainPanelLayout); + + GroupLayout.SequentialGroup infoHorizontal = mainPanelLayout.createSequentialGroup() + .addComponent(mgmtLabel); + GroupLayout.ParallelGroup infoVertical = mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(mgmtLabel); + + if (!renderHeaderPanel) { + infoHorizontal + .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED, 0, Short.MAX_VALUE) + .addComponent(switchFocusDummyLabel) + .addComponent(helpLabel); + infoVertical + .addComponent(switchFocusDummyLabel) + .addComponent(helpLabel); + } + + GroupLayout.ParallelGroup pinHorizontal; + GroupLayout.SequentialGroup pinVertical; + + if (pinpad) { + JLabel pinpadLabel = new JLabel(); + pinpadLabel.setFont(mgmtLabel.getFont().deriveFont(mgmtLabel.getFont().getStyle() & ~Font.BOLD)); + String pinpadPattern = getMessage(MESSAGE_ENTERPIN_PINPAD); + pinpadLabel.setText(MessageFormat.format(pinpadPattern, + new Object[] { pinSpec.getLocalizedName(), pinSpec.getLocalizedLength() })); + + pinHorizontal = mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(pinpadLabel); + pinVertical = mainPanelLayout.createSequentialGroup() + .addComponent(pinpadLabel); + } else { + + final JButton okButton = new JButton(); + okButton.setFont(okButton.getFont().deriveFont(okButton.getFont().getStyle() & ~Font.BOLD)); + okButton.setText(getMessage(BUTTON_OK)); + okButton.setEnabled(pinSpec.getMinLength() <= 0); + okButton.setActionCommand(okCommand); + okButton.addActionListener(okListener); + + JLabel oldPinLabel = null; + JLabel repeatPinLabel = null; + JLabel pinLabel = new JLabel(); + pinLabel.setFont(pinLabel.getFont().deriveFont(pinLabel.getFont().getStyle() & ~Font.BOLD)); + String pinLabelPattern = (type == DIALOG.CHANGE || type == DIALOG.UNBLOCK) ? getMessage(LABEL_NEW_PIN) : getMessage(LABEL_PIN); + pinLabel.setText(MessageFormat.format(pinLabelPattern, new Object[]{pinSpec.getLocalizedName()})); + + final JPasswordField repeatPinField = new JPasswordField(); + pinField = new JPasswordField(); + pinField.setText(""); + pinField.setActionCommand(okCommand); + pinField.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + if (pinField.getPassword().length >= pinSpec.getMinLength()) { + if (type == DIALOG.VERIFY) { + okListener.actionPerformed(e); + } else { + repeatPinField.requestFocusInWindow(); + } + } + } + }); + + if (type != DIALOG.VERIFY) { + repeatPinLabel = new JLabel(); + repeatPinLabel.setFont(pinLabel.getFont()); + String repeatPinLabelPattern = getMessage(LABEL_REPEAT_PIN); + repeatPinLabel.setText(MessageFormat.format(repeatPinLabelPattern, new Object[]{pinSpec.getLocalizedName()})); + + repeatPinField.setText(""); + repeatPinField.setActionCommand(okCommand); + repeatPinField.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + if (okButton.isEnabled()) { + okListener.actionPerformed(e); + } + } + }); + + if (type == DIALOG.CHANGE || type == DIALOG.UNBLOCK) { + oldPinLabel = new JLabel(); + oldPinLabel.setFont(oldPinLabel.getFont().deriveFont(oldPinLabel.getFont().getStyle() & ~java.awt.Font.BOLD)); + String oldPinLabelPattern = getMessage((type == DIALOG.CHANGE) ? LABEL_OLD_PIN : LABEL_PUK); + oldPinLabel.setText(MessageFormat.format(oldPinLabelPattern, new Object[]{pinSpec.getLocalizedName()})); + + oldPinField = new JPasswordField(); + oldPinField.setText(""); + oldPinField.setActionCommand(okCommand); + oldPinField.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + if (oldPinField.getPassword().length >= pinSpec.getMinLength()) { + pinField.requestFocusInWindow(); + } + } + }); + + ExtendedPinDocument oldPinDocument = + new ExtendedPinDocument(pinSpec.getMinLength(), pinSpec.getMaxLength(), + pinSpec.getRexepPattern(), okButton); + ComparePinDocument newPinDocument = + new ComparePinDocument(pinSpec.getRecMinLength(), pinSpec.getRecMaxLength(), pinSpec.getRexepPattern(), + okButton); + ComparePinDocument confirmPinDocument = + new ComparePinDocument(pinSpec.getRecMinLength(), pinSpec.getRecMaxLength(), pinSpec.getRexepPattern(), + okButton); + + oldPinDocument.newPIN = newPinDocument; + oldPinDocument.confirmPIN = confirmPinDocument; + + newPinDocument.compareTo = confirmPinDocument; + newPinDocument.currentPIN = oldPinDocument; + confirmPinDocument.compareTo = newPinDocument; + confirmPinDocument.currentPIN = oldPinDocument; + + oldPinField.setDocument(oldPinDocument); + pinField.setDocument(newPinDocument); + repeatPinField.setDocument(confirmPinDocument); + + } else { + // else -> ACTIVATE (not verify, not change) + ComparePinDocument newPinDocument = + new ComparePinDocument(pinSpec.getRecMinLength(), pinSpec.getRecMaxLength(), pinSpec.getRexepPattern(), + okButton); + ComparePinDocument confirmPinDocument = + new ComparePinDocument(pinSpec.getRecMinLength(), pinSpec.getRecMaxLength(), pinSpec.getRexepPattern(), + okButton); + + newPinDocument.compareTo = confirmPinDocument; + confirmPinDocument.compareTo = newPinDocument; + + pinField.setDocument(newPinDocument); + repeatPinField.setDocument(confirmPinDocument); + } + } else { + // VERIFY + pinField.setDocument( + new PINDocument(pinSpec.getMinLength(), pinSpec.getMaxLength(), pinSpec.getRexepPattern(), okButton)); + } + + JLabel pinsizeLabel = new JLabel(); + pinsizeLabel.setFont(pinsizeLabel.getFont().deriveFont(pinsizeLabel.getFont().getStyle() & ~Font.BOLD, pinsizeLabel.getFont().getSize()-2)); + String pinsizePattern = getMessage(LABEL_PINSIZE); + pinsizeLabel.setText(MessageFormat.format(pinsizePattern, pinSpec.getLocalizedLength())); + + //////////////////////////////////////////////////////////////// + // NON-PINPAD SPECIFIC LAYOUT SECTION + //////////////////////////////////////////////////////////////// + + pinHorizontal = mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING); + pinVertical = mainPanelLayout.createSequentialGroup(); + +// if (pinLabelPos == PinLabelPosition.ABOVE) { +// if (changePin) { +// pinHorizontal +// .addComponent(oldPinLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) +// .addComponent(oldPinField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE); +// pinVertical +// .addComponent(oldPinLabel) +// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) +// .addComponent(oldPinField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) +// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED); +// } +// pinHorizontal +// .addComponent(pinLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) +// .addComponent(pinField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) +// .addComponent(repeatPinLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) +// .addComponent(repeatPinField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) +// .addGroup(mainPanelLayout.createSequentialGroup() +// .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED, 0, Short.MAX_VALUE) +// .addComponent(pinsizeLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)); +// pinVertical +// .addComponent(pinLabel) +// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) +// .addComponent(pinField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) +// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) +// .addComponent(repeatPinLabel) +// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) +// .addComponent(repeatPinField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) +// .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) +// .addComponent(pinsizeLabel); +// } else { + + + if (type == DIALOG.CHANGE || type == DIALOG.UNBLOCK) { + pinHorizontal + .addGroup(mainPanelLayout.createSequentialGroup() + .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(oldPinLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addComponent(pinLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addComponent(repeatPinLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(oldPinField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(pinField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(repeatPinField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); + + pinVertical + .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(oldPinLabel) + .addComponent(oldPinField)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(pinLabel) + .addComponent(pinField)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(repeatPinLabel) + .addComponent(repeatPinField)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED); + } else if (type == DIALOG.ACTIVATE) { + pinHorizontal + .addGroup(mainPanelLayout.createSequentialGroup() + .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(pinLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addComponent(repeatPinLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addComponent(pinField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(repeatPinField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))); + + pinVertical + .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(pinLabel) + .addComponent(pinField)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(repeatPinLabel) + .addComponent(repeatPinField)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED); + } else { // VERIFY + pinHorizontal + .addGroup(mainPanelLayout.createSequentialGroup() + .addComponent(pinLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(pinField, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)); + + pinVertical + .addGroup(mainPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(pinLabel) + .addComponent(pinField)) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED); + } + pinHorizontal + .addGroup(mainPanelLayout.createSequentialGroup() + .addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED, 0, Short.MAX_VALUE) + .addComponent(pinsizeLabel, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)); + pinVertical + .addComponent(pinsizeLabel); + + GroupLayout buttonPanelLayout = new GroupLayout(buttonPanel); + buttonPanel.setLayout(buttonPanelLayout); + + GroupLayout.SequentialGroup buttonHorizontal = buttonPanelLayout.createSequentialGroup() + .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(okButton, GroupLayout.PREFERRED_SIZE, buttonSize, GroupLayout.PREFERRED_SIZE); + GroupLayout.Group buttonVertical; + + JButton cancelButton = new JButton(); + cancelButton.setFont(cancelButton.getFont().deriveFont(cancelButton.getFont().getStyle() & ~java.awt.Font.BOLD)); + cancelButton.setText(getMessage(BUTTON_CANCEL)); + cancelButton.setActionCommand(cancelCommand); + cancelButton.addActionListener(cancelListener); + + buttonHorizontal + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cancelButton, GroupLayout.PREFERRED_SIZE, buttonSize, GroupLayout.PREFERRED_SIZE); + buttonVertical = buttonPanelLayout.createParallelGroup(GroupLayout.Alignment.BASELINE) + .addComponent(okButton) + .addComponent(cancelButton); + + buttonPanelLayout.setHorizontalGroup(buttonHorizontal); + buttonPanelLayout.setVerticalGroup(buttonVertical); + + if (oldPinField != null) { + oldPinField.requestFocusInWindow(); + } else { + pinField.requestFocusInWindow(); + } + + } // END NON-PINPAD SECTION + + mainPanelLayout.setHorizontalGroup( + mainPanelLayout.createParallelGroup(GroupLayout.Alignment.LEADING) + .addGroup(infoHorizontal) + .addGroup(pinHorizontal)); + + mainPanelLayout.setVerticalGroup( + mainPanelLayout.createSequentialGroup() + .addGroup(infoVertical) + .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED) + .addGroup(pinVertical)); + + helpLabel.requestFocus(); + contentPanel.validate(); + + } + }); + } + + @Override + protected int initButtonSize() { + int bs = super.initButtonSize(); + + JButton b = new JButton(); + b.setText(getMessage(BUTTON_ACTIVATE)); + if (b.getPreferredSize().width > bs) { + bs = b.getPreferredSize().width; + } + b.setText(getMessage(BUTTON_CHANGE)); + if (b.getPreferredSize().width > bs) { + bs = b.getPreferredSize().width; + } + b.setText(getMessage(BUTTON_UNBLOCK)); + if (b.getPreferredSize().width > bs) { + bs = b.getPreferredSize().width; + } + b.setText(getMessage(BUTTON_CANCEL)); + if (b.getPreferredSize().width > bs) { + bs = b.getPreferredSize().width; + } + + return bs; + } + + @Override + public void showEnterCurrentPIN(DIALOG type, PINSpec pinSpec, int retries) { + String title, message; +// Object[] params = null; + + if (type == PINManagementGUIFacade.DIALOG.VERIFY) { + title = PINManagementGUIFacade.TITLE_VERIFY_PINPAD; + message = BKUGUIFacade.MESSAGE_ENTERPIN_PINPAD; +// params = new Object[]{pinSpec.getLocalizedName(), pinSpec.getLocalizedLength()}; + } else if (type == PINManagementGUIFacade.DIALOG.ACTIVATE) { + title = PINManagementGUIFacade.TITLE_ACTIVATE_PIN; + message = PINManagementGUIFacade.MESSAGE_ACTIVATE_PINPAD_CURRENT; +// params = new Object[]{pinSpec.getLocalizedName(), pinSpec.getLocalizedLength()}; + } else if (type == PINManagementGUIFacade.DIALOG.CHANGE) { + title = PINManagementGUIFacade.TITLE_CHANGE_PIN; + message = PINManagementGUIFacade.MESSAGE_CHANGE_PINPAD_CURRENT; +// params = new Object[]{pinSpec.getLocalizedName(), pinSpec.getLocalizedLength()}; + } else { //if (type == DIALOG.UNBLOCK) { + title = PINManagementGUIFacade.TITLE_UNBLOCK_PIN; + message = PINManagementGUIFacade.MESSAGE_UNBLOCK_PINPAD_CURRENT; +// params = new Object[]{pinSpec.getLocalizedName(), pinSpec.getLocalizedLength()}; + } + showEnterPIN(pinSpec, retries, title, message, null); + } + + @Override + public void showEnterNewPIN(DIALOG type, PINSpec pinSpec) { + String title, message; + if (type == PINManagementGUIFacade.DIALOG.ACTIVATE) { + title = PINManagementGUIFacade.TITLE_ACTIVATE_PIN; + message = PINManagementGUIFacade.MESSAGE_ACTIVATE_PINPAD_NEW; + } else if (type == PINManagementGUIFacade.DIALOG.CHANGE) { + title = PINManagementGUIFacade.TITLE_CHANGE_PIN; + message = PINManagementGUIFacade.MESSAGE_CHANGE_PINPAD_NEW; + } else if (type == DIALOG.UNBLOCK) { + title = PINManagementGUIFacade.TITLE_UNBLOCK_PIN; + message = PINManagementGUIFacade.MESSAGE_UNBLOCK_PINPAD_NEW; + } else { + log.error("enterNewPIN not supported for dialog type " + type); + showErrorDialog(ERR_UNKNOWN, null); + return; + } + showEnterPIN(pinSpec, -1, title, message, null); + } + + @Override + public void showConfirmNewPIN(DIALOG type, PINSpec pinSpec) { + String title, message; + if (type == PINManagementGUIFacade.DIALOG.ACTIVATE) { + title = PINManagementGUIFacade.TITLE_ACTIVATE_PIN; + message = PINManagementGUIFacade.MESSAGE_ACTIVATE_PINPAD_CONFIRM; + } else if (type == PINManagementGUIFacade.DIALOG.CHANGE) { + title = PINManagementGUIFacade.TITLE_CHANGE_PIN; + message = PINManagementGUIFacade.MESSAGE_CHANGE_PINPAD_CONFIRM; + } else if (type == DIALOG.UNBLOCK) { + title = PINManagementGUIFacade.TITLE_UNBLOCK_PIN; + message = PINManagementGUIFacade.MESSAGE_UNBLOCK_PINPAD_CONFIRM; + } else { + log.error("enterNewPIN not supported for dialog type " + type); + showErrorDialog(ERR_UNKNOWN, null); + return; + } + showEnterPIN(pinSpec, -1, title, message, null); + } + +} diff --git a/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINManagementGUIFacade.java b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINManagementGUIFacade.java new file mode 100644 index 00000000..46ae18b9 --- /dev/null +++ b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINManagementGUIFacade.java @@ -0,0 +1,129 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import at.gv.egiz.smcc.PINSpec; +import java.awt.event.ActionListener; +import java.util.Map; + +/** + * + * @author Clemens Orthacker + */ +public interface PINManagementGUIFacade extends BKUGUIFacade { + + public static final String HELP_PINMGMT = "help.pin.mgmt"; +// public static final String HELP_VERIFY_PIN = "help.pin.verify"; + public static final String TITLE_PINMGMT = "title.pin.mgmt"; + public static final String TITLE_ACTIVATE_PIN = "title.activate.pin"; + public static final String TITLE_CHANGE_PIN = "title.change.pin"; +// public static final String TITLE_VERIFY_PIN = "title.verify.pin"; + public static final String TITLE_UNBLOCK_PIN = "title.unblock.pin"; + public static final String TITLE_ACTIVATE_SUCCESS = "title.activate.success"; + public static final String TITLE_UNBLOCK_SUCCESS = "title.unblock.success"; + public static final String TITLE_CHANGE_SUCCESS = "title.change.success"; + + // removed message.* prefix to reuse keys as help keys + public static final String MESSAGE_ACTIVATE_SUCCESS = "activate.success"; + public static final String MESSAGE_CHANGE_SUCCESS = "change.success"; + public static final String MESSAGE_UNBLOCK_SUCCESS = "unblock.success"; + public static final String MESSAGE_PINMGMT = "pin.mgmt"; +// public static final String MESSAGE_PINPAD = "pinpad"; + + public static final String MESSAGE_ACTIVATE_PIN = "activate.pin"; + public static final String MESSAGE_CHANGE_PIN = "change.pin"; + public static final String MESSAGE_UNBLOCK_PIN = "unblock.pin"; + + public static final String MESSAGE_ACTIVATE_PINPAD_CURRENT = "activate.pinpad.current"; + public static final String MESSAGE_CHANGE_PINPAD_CURRENT = "change.pinpad.current"; + public static final String MESSAGE_UNBLOCK_PINPAD_CURRENT = "unblock.pinpad.current"; + public static final String MESSAGE_ACTIVATE_PINPAD_NEW = "activate.pinpad.new"; + public static final String MESSAGE_CHANGE_PINPAD_NEW = "change.pinpad.new"; + public static final String MESSAGE_UNBLOCK_PINPAD_NEW = "unblock.pinpad.new"; + public static final String MESSAGE_ACTIVATE_PINPAD_CONFIRM = "activate.pinpad.confirm"; + public static final String MESSAGE_CHANGE_PINPAD_CONFIRM = "change.pinpad.confirm"; + public static final String MESSAGE_UNBLOCK_PINPAD_CONFIRM = "unblock.pinpad.confirm"; + + public static final String MESSAGE_ACTIVATE_PINPAD_DIREKT = "activate.pinpad.direct"; + public static final String MESSAGE_CHANGE_PINPAD_DIREKT = "change.pinpad.direct"; + public static final String MESSAGE_UNBLOCK_PINPAD_DIREKT = "unblock.pinpad.direct"; + + public static final String LABEL_OLD_PIN = "label.old.pin"; + public static final String LABEL_PUK = "label.puk"; + public static final String LABEL_NEW_PIN = "label.new.pin"; + public static final String LABEL_REPEAT_PIN = "label.repeat.pin"; + + public static final String ERR_STATUS = "err.status"; + public static final String ERR_ACTIVATE = "err.activate"; + public static final String ERR_CHANGE = "err.change"; + public static final String ERR_UNBLOCK = "err.unblock"; + public static final String ERR_VERIFY = "err.verify"; + public static final String ERR_RETRIES = "err.retries"; + public static final String ERR_LOCKED = "err.locked"; + public static final String ERR_NOT_ACTIVE = "err.not.active"; + public static final String ERR_PIN_FORMAT = "err.pin.format"; + public static final String ERR_PIN_CONFIRMATION = "err.pin.confirmation"; + public static final String ERR_PIN_OPERATION_ABORTED = "err.pin.operation.aborted"; + public static final String ERR_UNSUPPORTED_CARD = "err.unsupported.card"; + + public static final String BUTTON_ACTIVATE = "button.activate"; + public static final String BUTTON_UNBLOCK = "button.unblock"; + public static final String BUTTON_CHANGE = "button.change"; + public static final String BUTTON_VERIFY = "button.verify"; + + public static final String STATUS_ACTIVE = "status.active"; + public static final String STATUS_BLOCKED = "status.blocked"; + public static final String STATUS_NOT_ACTIVE = "status.not.active"; + public static final String STATUS_UNKNOWN = "status.unknown"; + + public enum STATUS { ACTIV, NOT_ACTIV, BLOCKED, UNKNOWN }; + public enum DIALOG { VERIFY, ACTIVATE, CHANGE, UNBLOCK }; + + /** + * list pins + */ + public void showPINManagementDialog(Map pins, + ActionListener activateListener, String activateCmd, String changeCmd, String unblockCmd, String verifyCmd, + ActionListener cancelListener, String cancelCmd); + + /** + * "software" pin-entry dialog (activate, change, unblock, verify) + */ + public void showPINDialog(DIALOG type, PINSpec pinSpec, int retries, + ActionListener okListener, String okCmd, + ActionListener cancelListener, String cancelCmd); + + /** + * direct pinpad pin-entry dialog + */ + public void showModifyPINDirect(DIALOG type, PINSpec pinSpec, int retries); + + /** + * start/finish pinpad pin-entry dialog + */ + public void showEnterCurrentPIN(DIALOG type, PINSpec pinSpec, int retries); + + public void showEnterNewPIN(DIALOG type, PINSpec pinSpec); + + public void showConfirmNewPIN(DIALOG type, PINSpec pinSpec); + + + public char[] getOldPin(); + + public PINSpec getSelectedPINSpec(); +} diff --git a/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINSpecRenderer.java b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINSpecRenderer.java new file mode 100644 index 00000000..e3d73e1f --- /dev/null +++ b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINSpecRenderer.java @@ -0,0 +1,39 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import at.gv.egiz.smcc.PINSpec; +import javax.swing.table.DefaultTableCellRenderer; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author Clemens Orthacker + */ +public class PINSpecRenderer extends DefaultTableCellRenderer { + + private static final Log log = LogFactory.getLog(PINSpecRenderer.class); + + @Override + protected void setValue(Object value) { + PINSpec pinSpec = (PINSpec) value; + super.setText(pinSpec.getLocalizedName()); + } + +} diff --git a/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINStatusRenderer.java b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINStatusRenderer.java new file mode 100644 index 00000000..83ff74f2 --- /dev/null +++ b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINStatusRenderer.java @@ -0,0 +1,61 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import at.gv.egiz.bku.gui.PINManagementGUIFacade.STATUS; +import java.awt.Color; +import java.awt.Font; +import java.util.ResourceBundle; +import javax.swing.table.DefaultTableCellRenderer; + +/** + * + * @author Clemens Orthacker + */ +public class PINStatusRenderer extends DefaultTableCellRenderer { + +// private static final Log log = LogFactory.getLog(PINStatusRenderer.class); + + public static final Color RED = new Color(0.9f, 0.0f, 0.0f); + public static final Color GREEN = new Color(0.0f, 0.8f, 0.0f); + protected ResourceBundle messages; + + public PINStatusRenderer(ResourceBundle messages) { + this.messages = messages; + } + + @Override + protected void setValue(Object value) { + STATUS pinStatus = (STATUS) value; + super.setFont(super.getFont().deriveFont(super.getFont().getStyle() | Font.BOLD)); + + if (pinStatus == STATUS.NOT_ACTIV) { + super.setForeground(RED); + super.setText("" + messages.getString(PINManagementGUIFacade.STATUS_NOT_ACTIVE) + ""); + } else if (pinStatus == STATUS.ACTIV) { + super.setForeground(GREEN); + super.setText("" + messages.getString(PINManagementGUIFacade.STATUS_ACTIVE) + ""); + } else if (pinStatus == STATUS.BLOCKED) { + super.setForeground(RED); + super.setText("" + messages.getString(PINManagementGUIFacade.STATUS_BLOCKED) + ""); + } else { + super.setForeground(Color.BLACK); + super.setText("" + messages.getString(PINManagementGUIFacade.STATUS_UNKNOWN) + ""); + } + } +} diff --git a/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINStatusTableModel.java b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINStatusTableModel.java new file mode 100644 index 00000000..052c13b2 --- /dev/null +++ b/mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINStatusTableModel.java @@ -0,0 +1,58 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import at.gv.egiz.bku.gui.PINManagementGUIFacade.STATUS; +import at.gv.egiz.smcc.PINSpec; +import java.util.Map; +import javax.swing.table.DefaultTableModel; + +/** + * + * @author Clemens Orthacker + */ +public class PINStatusTableModel extends DefaultTableModel { + +// protected static final Log log = LogFactory.getLog(PINStatusTableModel.class); + protected Class[] types; + + public PINStatusTableModel(Map pinStatuses) { + super(0, 2); + if (pinStatuses == null) { + throw new RuntimeException("pinStatuses must not be null"); + } +// log.trace(pinStatuses.size() + " PINs"); + types = new Class[] { PINSpec.class, STATUS.class }; + for (PINSpec pinSpec : pinStatuses.keySet()) { + addRow(new Object[] { pinSpec, pinStatuses.get(pinSpec) }); + } +// PINSpec activePIN = new PINSpec(0, 1, null, "active-PIN", (byte) 0x01); +// PINSpec blockedPIN = new PINSpec(0, 1, null, "blocked-PIN", (byte) 0x01); +// addRow(new Object[] { activePIN, PINStatusProvider.STATUS.ACTIV }); +// addRow(new Object[] { blockedPIN, PINStatusProvider.STATUS.BLOCKED }); + } + + @Override + public Class getColumnClass(int columnIndex) { + return types[columnIndex]; + } + + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return false; + } +} diff --git a/mocca-1.2.11/BKUGuiExt/src/main/resources/at/gv/egiz/bku/gui/ActivationMessages.properties b/mocca-1.2.11/BKUGuiExt/src/main/resources/at/gv/egiz/bku/gui/ActivationMessages.properties new file mode 100644 index 00000000..5ef3edee --- /dev/null +++ b/mocca-1.2.11/BKUGuiExt/src/main/resources/at/gv/egiz/bku/gui/ActivationMessages.properties @@ -0,0 +1,83 @@ +# Copyright 2008 Federal Chancellery Austria and +# Graz University of Technology +# +# 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. + +title.activation=Aktivierung +title.pin.mgmt=PIN Verwaltung +title.activate.pin=PIN aktivieren +title.change.pin=PIN \u00E4ndern +title.unblock.pin=PIN entsperren +#title.verify.pin=PIN Eingeben +title.activate.success=Erfolg +title.change.success=Erfolg +title.unblock.success=Erfolg + +# removed message.* prefix to reuse keys as help keys +pin.mgmt=Die Karte verf\u00FCgt \u00FCber {0} PINs +# software pin-entry messages +activate.pin={0} eingeben und best\u00E4tigen +change.pin={0} eingeben und best\u00E4tigen +unblock.pin=PUK zu {0} eingeben +# start/finish pin-entry messages +activate.pinpad.current=Transport-PIN am Kartenleser eingeben +activate.pinpad.new=Neue PIN am Kartenleser eingeben +activate.pinpad.confirm=Neue PIN am Kartenleser best\u00E4tigen +change.pinpad.current=Alte PIN am Kartenleser eingeben +change.pinpad.new=Neue PIN am Kartenleser eingeben +change.pinpad.confirm=Neue PIN am Kartenleser best\u00E4tigen +unblock.pinpad.current=PUK am Kartenleser eingeben +unblock.pinpad.new=Neue PIN am Kartenleser eingeben +unblock.pinpad.confirm=Neue PIN am Kartenleser best\u00E4tigen +# direct pin-entry messages +activate.pinpad.direct={0} ({1} stellig) am Kartenleser eingeben und wiederholen (jeweils best\u00E4tigen). +change.pinpad.direct=Alte {0} ({1} stellig) am Kartenleser eingeben, danach neue {0} eingeben und wiederholen (jeweils best\u00E4tigen). +unblock.pinpad.direct={0} ({1} stellig) am Kartenleser eingeben (und best\u00E4tigen). +# response messages +activate.success={0} wurde erfolgreich aktiviert +change.success={0} wurde erfolgreich ge\u00E4ndert +unblock.success={0} wurde erfolgreich entsperrt + +label.activation=e-card Aktivierungsprozess +label.activation.step=Schritt {0} +label.activation.idle=Warte auf Server... +label.old.pin=Alte {0}: +label.puk={0} PUK: +label.new.pin=Neue {0}: +label.repeat.pin=Best\u00E4tigung: + +button.activate=Aktivieren +button.change=\u00C4ndern +button.unblock=Entsperren +button.verify=Abfragen + +help.activation=help.activation +help.pin.mgmt=help.pin.mgmt + +err.status=Der Status der PINs konnte nicht \u00FCberpr\u00FCft werden. +err.activate=Beim Aktivieren der {0} trat ein Fehler auf. +err.change=Beim \u00C4ndern der {0} trat ein Fehler auf. +err.unblock=Das Entsperren der {0} wird nicht unterst\u00FCtzt. +err.verify=VERIFY ERROR (TODO) +err.retries=Falsche {0}, noch {1} Versuche +err.locked={0} gesperrt. +err.not.active={0} nicht aktiviert. +err.pin.format=Ung\u00FCltige {0} L\u00E4nge, verlangt sind {1} Stellen. +err.pin.confirmation={0} und Best\u00E4tigung stimmen nicht \u00FCberein. +err.pin.operation.aborted=Der Vorgang f\u00FCr {0} wurde abgebrochen. +err.unsupported.card=Die Karte wird nicht unterst\u00FCtzt + +status.not.active=NICHT AKTIV +status.active=AKTIV +status.blocked=GESPERRT +status.unknown=UNBEKANNT diff --git a/mocca-1.2.11/BKUGuiExt/src/main/resources/at/gv/egiz/bku/gui/ActivationMessages_en.properties b/mocca-1.2.11/BKUGuiExt/src/main/resources/at/gv/egiz/bku/gui/ActivationMessages_en.properties new file mode 100644 index 00000000..87e3f181 --- /dev/null +++ b/mocca-1.2.11/BKUGuiExt/src/main/resources/at/gv/egiz/bku/gui/ActivationMessages_en.properties @@ -0,0 +1,82 @@ +# Copyright 2008 Federal Chancellery Austria and +# Graz University of Technology +# +# 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. + +title.activation=Activation +title.pin.mgmt=PIN Management +title.activate.pin=Activate PIN +#title.verify.pin=Enter PIN +title.change.pin=Change PIN +title.unblock.pin=Unblock PIN +title.activate.success=Success +title.change.success=Success +title.unblock.success=Success + +# removed message.* prefix to reuse keys as help keys +pin.mgmt={0} PINs available +# software pin-entry messages +activate.pin=Enter and confirm {0} +change.pin=Enter and confirm {0} +unblock.pin=Enter PUK for {0} +# start/finish pin-entry messages +activate.pinpad.current=Enter transport-PIN on cardreader +activate.pinpad.new=Enter new PIN on cardreader +activate.pinpad.confirm=Confirm new PIN on cardreader +change.pinpad.current=Enter old PIN on cardreader +change.pinpad.new=Enter new PIN on cardreader +change.pinpad.confirm=Confirm new PIN on cardreader +unblock.pinpad.current=Enter PUK on cardreader +unblock.pinpad.new=Enter new PIN on cardreader +unblock.pinpad.confirm=Confirm new PIN on cardreader +# direct pin-entry messages +activate.pinpad.direct=Enter {0} ({1} digits) on cardreader and repeat (confirm in each case) +change.pinpad.direct=Enter old {0} ({1} digits) on cardreader, then enter new {0} and repeat (confirm in each case) +unblock.pinpad.direct=Enter {0} ({1} digits) on cardreader, then enter new {0} and repeat (confirm in each case) +# response messages +activate.success={0} successfully activated +change.success={0} successfully changed +unblock.success={0} successfully unblocked + +label.activation=e-card activation process +label.activation.step=Step {0} +label.activation.idle=Wait for server... +label.old.pin=Old {0}: +label.puk={0} PUK: +label.new.pin=New {0}: +label.repeat.pin=Confirmation: + +button.activate=Activate +button.change=Change +button.unblock=Unblock +button.verify=Query + +help.activation=help.activation +help.pin.mgmt=help.pin.mgmt + +err.status=PIN statuses could not be read. +err.activate=An error occured during the activation of {0}. +err.change=An error occured during the changing of {0}. +err.unblock=Unblocking of {0} is not supported. +err.retries=Wrong {0}, {1} tries remaining +err.locked={0} locked +err.not.active={0} not activated. +err.pin.format=Invalid {0} length, {1} digit(s) required. +err.pin.confirmation={0} and confirmation do not match. +err.pin.operation.aborted=The operation on {0} was aborted. +err.unsupported.card=This card is not supported + +status.not.active=NOT ACTIVE +status.active=ACTIVE +status.blocked=BLOCKED +status.unknown=UNKNOWN diff --git a/mocca-1.2.11/BKUGuiExt/src/test/java/at/gv/egiz/bku/gui/ActivationGuiTest.java b/mocca-1.2.11/BKUGuiExt/src/test/java/at/gv/egiz/bku/gui/ActivationGuiTest.java new file mode 100644 index 00000000..cb05e5f1 --- /dev/null +++ b/mocca-1.2.11/BKUGuiExt/src/test/java/at/gv/egiz/bku/gui/ActivationGuiTest.java @@ -0,0 +1,62 @@ +/* +* Copyright 2008 Federal Chancellery Austria and +* Graz University of Technology +* +* 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. +*/ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package at.gv.egiz.bku.gui; + +import java.awt.Container; +import java.awt.Dimension; +import javax.swing.JFrame; +import org.junit.Ignore; +import org.junit.Test; + + +/** + * + * @author clemens + */ +@Ignore +public class ActivationGuiTest { + + @Test + public void testBKUGUI() { + JFrame testFrame = new JFrame("BKUGUITest"); + Container contentPane = testFrame.getContentPane(); + contentPane.setPreferredSize(new Dimension(152, 145)); +// contentPane.setPreferredSize(new Dimension(300, 190)); + ActivationGUIFacade gui = new ActivationGUI(contentPane, null, BKUGUIFacade.Style.tiny, null, new DummyFontLoader(), null, null); + BKUGUIWorker worker = new BKUGUIWorker(); + worker.init(gui); + testFrame.pack(); + testFrame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + testFrame.setVisible(true); + new Thread(worker).start(); + + while(true) ; + } + + @Test + public void dummyTest() { + } + +// public static void main(String[] args) { +// new BKUGUITest().testBKUGUI(); +// } +} diff --git a/mocca-1.2.11/BKUGuiExt/src/test/java/at/gv/egiz/bku/gui/BKUGUIWorker.java b/mocca-1.2.11/BKUGuiExt/src/test/java/at/gv/egiz/bku/gui/BKUGUIWorker.java new file mode 100644 index 00000000..b9c0e5f8 --- /dev/null +++ b/mocca-1.2.11/BKUGuiExt/src/test/java/at/gv/egiz/bku/gui/BKUGUIWorker.java @@ -0,0 +1,206 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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. + */ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package at.gv.egiz.bku.gui; + +import at.gv.egiz.smcc.PINSpec; +import at.gv.egiz.stal.HashDataInput; +import at.gv.egiz.stal.impl.ByteArrayHashDataInput; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.List; + +/** + * + * @author clemens + */ +public class BKUGUIWorker implements Runnable { + + ActivationGUIFacade gui; + + public void init(ActivationGUIFacade gui) { + this.gui = gui; + } + + @Override + public void run() { + try { + + final PINSpec signPinSpec = new PINSpec(6, 10, "[0-9]", "Signatur-PIN", (byte)0x00, null); + + + final ActionListener cancelListener = new ActionListener() { + + public void actionPerformed(ActionEvent e) { + System.out.println("CANCEL EVENT OCCURED: " + e); + } + }; + ActionListener okListener = new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + System.out.println("OK EVENT OCCURED: " + e); + } + }; + final ActionListener signListener = new ActionListener() { + + public void actionPerformed(ActionEvent e) { + System.out.println("SIGN EVENT OCCURED: " + e); + } + }; + ActionListener hashdataListener = new ActionListener() { + + public void actionPerformed(ActionEvent e) { + System.out.println("HASHDATA EVENT OCCURED: " + e); + ActionListener returnListener = new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + gui.showSignaturePINDialog(signPinSpec, -1, signListener, "sign", cancelListener, "cancel", null, "hashdata"); + } + }; + HashDataInput signedRef1 = new ByteArrayHashDataInput( + "Ich bin ein einfacher Text mit Umlauten: öäüßéç@€\n123\n456\n\tHello, world!\n\nlkjsd\nnksdjf".getBytes(), + "ref-id-0000000000000000000000001", + "text/plain", + "UTF-8", + "filename.txt"); + + HashDataInput signedRef2 = new ByteArrayHashDataInput( + "HashDataInput_002".getBytes(), + "ref-id-000000002", + "application/xhtml+xml", + "UTF-8", + "filename.xhtml"); + + HashDataInput signedRef3 = new ByteArrayHashDataInput( + "HashDataInput_003".getBytes(), + "ref-id-000000003", + "application/xhtml+xml", + "UTF-8", + "filename.xhtml"); + + HashDataInput signedRef4 = new ByteArrayHashDataInput( + "HashDataInput_004".getBytes(), + "ref-id-000000004", + "text/xml", + "UTF-8", + "filename.xml"); + + // + List signedRefs = new ArrayList(); + signedRefs.add(signedRef1); + signedRefs.add(signedRef2); + signedRefs.add(signedRef3); + signedRefs.add(signedRef4); +// signedRefs.add(signedRef4); +// signedRefs.add(signedRef4); +// signedRefs.add(signedRef4); +// signedRefs.add(signedRef4); +// signedRefs = Collections.singletonList(signedRef1); + gui.showSecureViewer(signedRefs, returnListener, "return"); + } + }; + + + +// gui.showWelcomeDialog(); +// +// Thread.sleep(2000); +// +// gui.showWaitDialog(null); +// +// Thread.sleep(1000); +// +// gui.showWaitDialog("test"); +// +// Thread.sleep(1000); +// +// +// gui.showInsertCardDialog(cancelListener, "cancel"); +// +// Thread.sleep(2000); +// +// gui.showCardNotSupportedDialog(cancelListener, "cancel"); +// +// Thread.sleep(2000); +// +// PINSpec cardPinSpec = new PINSpec(4, 4, "[0-9]", "Karten-PIN"); +// +// gui.showCardPINDialog(cardPinSpec, okListener, "ok", cancelListener, "cancel"); +// +// Thread.sleep(2000); +// +// gui.showSignaturePINDialog(signPinSpec, signListener, "sign", cancelListener, "cancel", hashdataListener, "hashdata"); +// +// Thread.sleep(4000); +// + +// gui.showErrorDialog(BKUGUIFacade.ERR_NO_PCSC, null, null, null); + +// gui.showSignaturePINRetryDialog(signPinSpec, 2, signListener, "sign", cancelListener, "cancel", hashdataListener, "hashdata"); +// +// Thread.sleep(2000); +// +// gui.showErrorDialog(BKUGUIFacade.ERR_UNKNOWN, new Object[] {"Testfehler"}, null, null); +// +// Thread.sleep(2000); +// +// gui.showErrorDialog("error.test", new Object[] {"Testfehler", "noch ein TestFehler"}); +// +// Thread.sleep(2000); +// +// gui.showErrorDialog("error.no.hashdata", null); +// +// Thread.sleep(2000); +// +// gui.showErrorDialog(BKUGUIFacade.ERR_UNKNOWN, new Object[] {"Testfehler"}); +// +// Thread.sleep(2000); +// +// gui.showErrorDialog("error.unknown", null); + + gui.showActivationProgressDialog(1, 3, null, null); + + gui.incrementProgress(); + + Thread.sleep(1000); + + gui.incrementProgress(); + + Thread.sleep(1000); + + gui.incrementProgress(); + + + Thread.sleep(1000); + + gui.showIdleDialog(null, null); + +// gui.showTextPlainHashDataInput("hallo,\n welt!", "12345", null, "cancel", null, "save"); +// gui.showTextPlainHashDataInput("hallo,\n welt!", "12345", null, "cancel", null, "save"); +// Thread.sleep(2000); + + } catch (InterruptedException ex) { + ex.printStackTrace(); + } + } +} diff --git a/mocca-1.2.11/BKUGuiExt/src/test/java/at/gv/egiz/bku/gui/DummyFontLoader.java b/mocca-1.2.11/BKUGuiExt/src/test/java/at/gv/egiz/bku/gui/DummyFontLoader.java new file mode 100644 index 00000000..87d67adc --- /dev/null +++ b/mocca-1.2.11/BKUGuiExt/src/test/java/at/gv/egiz/bku/gui/DummyFontLoader.java @@ -0,0 +1,35 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.gui; + +import at.gv.egiz.bku.gui.viewer.FontProviderException; +import at.gv.egiz.bku.gui.viewer.FontProvider; +import java.awt.Font; + +/** + * + * @author Clemens Orthacker + */ +public class DummyFontLoader implements FontProvider { + + @Override + public Font getFont() throws FontProviderException { + return new Font("monospaced", Font.PLAIN, 10); + } + +} diff --git a/mocca-1.2.11/BKUHelp/pom.xml b/mocca-1.2.11/BKUHelp/pom.xml new file mode 100644 index 00000000..7122df96 --- /dev/null +++ b/mocca-1.2.11/BKUHelp/pom.xml @@ -0,0 +1,19 @@ + + 4.0.0 + + bku + at.gv.egiz + 1.2.11 + + at.gv.egiz + BKUHelp + 1.2.11 + BKU Help + + + + src/main/webapp + + + + \ No newline at end of file diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/chip16.ico b/mocca-1.2.11/BKUHelp/src/main/webapp/help/chip16.ico new file mode 100644 index 00000000..42175127 Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/chip16.ico differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/cardnotsupported.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/cardnotsupported.html new file mode 100644 index 00000000..097586fd --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/cardnotsupported.html @@ -0,0 +1,48 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

Die Karte wird nicht unterstützt

+

Die im Kartenleser gesteckte Chipkarte wird nicht unterstützt.

+

Bitte stecken Sie eine unterstützte Chipkarte (Bürgerkarte) in den Kartenleser. Derzeit werden die folgenden Chipkarten unterstützt:

+ +

Sind mehrere unterstützte Kartenleser angeschlossen, stecken sie eine unterstützte Chipkarte (Bürgerkarte) in einen der angeschlossenen Kartenleser. Wird die Chipkarte erkannt wechselt die Bildschirmanzeige. Wird die Chipkarte nicht erkannt, wird der Kartenleser möglicherweise nicht unterstützt. Stecken Sie die Chipkarte daher in einen anderen Kartenleser.

+


+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/cardnotsupported.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/cardnotsupported.png new file mode 100644 index 00000000..c3b7ce6b Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/cardnotsupported.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.locked.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.locked.html new file mode 100644 index 00000000..166dfc04 --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.locked.html @@ -0,0 +1,47 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

Fehler: Bürgerkarte ist gesperrt

+

Die Bürgerkartenfunktion auf der gesteckten Chipkarte ist gesperrt. Es stehen keine weiteren Versuche zur Eingabe einer PIN zur Verfügung, da zu oft eine falsche PIN eingegeben wurde.

+

Bitte wenden sie sich an den Aussteller der Karte.

+ +


+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.locked.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.locked.png new file mode 100644 index 00000000..3e50661a Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.locked.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.notactivated.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.notactivated.html new file mode 100644 index 00000000..9fb4d6da --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.notactivated.html @@ -0,0 +1,44 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

Fehler: Bürgerkartenfunktion ist nicht aktiviert.

+

Die im Kartenleser gesteckte Chipkarte wird unterstützt, jedoch ist die Bürgerkartenfunktion auf der Chipkarte noch nicht aktiviert.

+

Um die gesteckte Chipkarte als Bürgerkarte verwenden zu können, + muss zuerst die + Bürgerkartenfunktion aktiviert werden. Für Informationen dazu siehe Aktivierung der Bürgerkartenfunktion auf www.buergerkarte.at.

+


+

+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.notactivated.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.notactivated.png new file mode 100644 index 00000000..5761a110 Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.notactivated.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.cardterminal.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.cardterminal.html new file mode 100644 index 00000000..f5dc4e72 --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.cardterminal.html @@ -0,0 +1,43 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

Fehler: Es konnte kein Kartenleser gefunden werden.

+

Für den Zugriff auf die Bürgerkarte ist ein Chipkartenleser erforderlich. Es werden grundsätzlich alle Kartenleser unterstützt, die über die PC/SC-Schnittstelle angesprochen werden können und im Betriebssystem erfolgreich installiert wurden. Es können mehrere unterstützte Kartenleser gleichzeitig angeschlossen werden.

+

Kartenleser die, die nicht über die PC/SC-Schnittstelle angesprochen werden können (z.B. Kartenleser für die nur CT-API-Treiber verfügbar sind) werden nicht unterstützt.

+ +


+

+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.cardterminal.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.cardterminal.png new file mode 100644 index 00000000..1a7c8c70 Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.cardterminal.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pcsc.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pcsc.html new file mode 100644 index 00000000..dcba991e --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pcsc.html @@ -0,0 +1,52 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

Fehler: Es konnte keine PC/SC-Schnittstelle gefunden werden

+

Die Software für den Zugriff auf die Bürgerkarte konnte keine PC/SC-Schnittstelle für den Zugriff auf Kartenleser erkennen. + Das Betriebssystem scheint keine PC/SC-Schnittstelle zur Verfügung zu stellen.

+

Häufige Ursachen für dieses Problem sind +

    +
  • Der PC/SC Dienst läuft nicht
  • +
  • Die entsprechende PC/SC Bibliothek kann von Java nicht gefunden werden + (weitere Informationen).
  • +
+

+

Unter Betriebssystemen die PCSC-Lite verwenden (Linux u.a.) tritt dieses Problem auch auf, + wenn kein Kartenleser angeschlossen ist und daher der entsprechende Dienst nicht gestartet wurde. +
+

+


+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pcsc.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pcsc.png new file mode 100644 index 00000000..cc022615 Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pcsc.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pin.timeout.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pin.timeout.html new file mode 100644 index 00000000..7c0ff4d5 --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pin.timeout.html @@ -0,0 +1,45 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

Fehler: Zeitüberschreitung bei der PIN-Eingabe am Kartenleser.

+

Bei sicheren Kartenlesern mit integrierter PIN-Eingabe wird der Signaturvorgang aus Sicherheitsgründen nach Ablauf einer definierten Zeitspanne abgebrochen. + Diese beträgt im Normalfall eine Minute bis zur Eingabe der ersten Stelle des PINs. + Für die Eingabe jeder weiteren Stelle ist diese Zeitspanne jedoch - abhängig vom verwendeten Kartenleser - kürzer. +

+ +


+

+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pin.timeout.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pin.timeout.png new file mode 100644 index 00000000..961d58da Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pin.timeout.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.ws.unreachable.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.ws.unreachable.html new file mode 100644 index 00000000..cd335f17 --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.ws.unreachable.html @@ -0,0 +1,40 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

Fehler: Der Server ist nicht erreichbar

+

Die Software zum Zugriff auf die Bürgerkarte konnte den Server nicht erreichen. Möglicherweise besteht derzeit ein Problem mit dem Dienst. Probieren Sie es daher zu einem späteren Zeitpunkt nochmal. Sollte das Problem dauerhaft bestehen, wenden Sie sich bitte an den Betreiber der Anwendung.

+


+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.ws.unreachable.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.ws.unreachable.png new file mode 100644 index 00000000..80019733 Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.ws.unreachable.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.activate.pin.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.activate.pin.html new file mode 100644 index 00000000..ed4f4e1b --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.activate.pin.html @@ -0,0 +1,47 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

Aktivieren der PIN

+

Noch nicht aktivierte PINs werden als NICHT AKTIV angeführt + und können über die Schaltfläche 'Aktivieren' gesetzt werden. +

+

Bildschirmfoto

+

Geben Sie dazu die gewünschte PIN im dafür vorgesehenen Feld ein und wiederholen Sie diese im Feld 'Bestätigung'. +

+

Bildschirmfoto

+ +


+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.cardpin.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.cardpin.html new file mode 100644 index 00000000..3e36dbf8 --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.cardpin.html @@ -0,0 +1,42 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

Lesen von Informationen von der Chipkarte

+

Sie werden aufgefordert ihre Karten-PIN bzw. Infobox-PIN (abhängig von der verwendeten Bürgerkarte) einzugeben um das Auslesen von Informationen zur Identifikation (Personenbindung) bzw. Vollmachten zu ermöglichen.

+

Details zu den auf der Bürgerkarte gespeicherten Informationen finden sie auf www.buergerkarte.at.

+


+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.cardpin1.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.cardpin1.png new file mode 100644 index 00000000..1bceccf5 Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.cardpin1.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.cardpin2.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.cardpin2.png new file mode 100644 index 00000000..12d17be0 Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.cardpin2.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.change.pin.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.change.pin.html new file mode 100644 index 00000000..3978ad63 --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.change.pin.html @@ -0,0 +1,48 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

Ändern der PIN

+

Bereits aktivierte PINs werden als AKTIV angeführt + und können über die Schaltfläche 'Ändern' geändert werden. +

+

Bildschirmfoto

+

Geben Sie dazu die alte und neue PIN im jeweils dafür vorgesehenen Feld ein und wiederholen Sie die + neue PIN im Feld 'Bestätigung'. +

+

Bildschirmfoto

+ +


+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.hashdataviewer.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.hashdataviewer.html new file mode 100644 index 00000000..8c35dfdc --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.hashdataviewer.html @@ -0,0 +1,42 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

Anzeige der Signaturdaten

+

Dieses Fenster zeigt die zu signierenden Daten an. Dies können entweder reine Textdaten oder XHTML sein. Im Falle von XHML erhalten Sie den Hinweis, dass es sich bei den dargestellten Daten nur um eine Voransicht handelt. Um die Daten standardkonform darzustellen, müssen diese abgespeichert und mit einem geeigneten XHTML Betrachter geöffnen werden.

+

In jedem Fall können die zu signierenden abgespeichert werden.

+

Bildschirmfoto des Applets

+


+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.hashdataviewer.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.hashdataviewer.png new file mode 100644 index 00000000..83004322 Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.hashdataviewer.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.install.cacert.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.install.cacert.html new file mode 100644 index 00000000..25c546f0 --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.install.cacert.html @@ -0,0 +1,58 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Installation des CA Zertifikats

+

Die Bürgerkartenumgebung authentifiziert sich mittels eines TLS Zertifikats ausgestellt auf + CN=127.0.0.1, O=MOCCA, OU=MOCCA TLS Server. + Beim Aufruf der Bürgerkartenumgebung (zum Beispiel bei einem Anmeldevorgang mit Bürgerkarte) + wird dieses Zertifikat vom Web-Browser überprüft. + Um diese Überprüfung zu ermöglichen ist es notwendig das Ausstellerzertifikat, lautend auf + O=MOCCA, OU=MOCCA TLS Server CA, im Web-Browser zu installieren. +

+ +

Achtung: Eine automatische Installation des CA Zertifikats als 'Vertrauenswürdiges Stammzertifikat' im Microsoft Zertifikatsspeicher ist in Windows Vista leider nicht möglich. + Sollten Sie Internet Explorer oder Safari in Windows Vista oder 7 benutzen, dann wählen Sie bei der Installation des Zertifikats ausdrücklich 'zu vertrauenswürdigen Stammzertifizierungsstellen hinzufügen'. +

+ +

+ Klicken Sie dazu auf die Verknüpfung CA Zertifikat installieren + und wählen Sie im angezeigten Dialog die Option 'Dieser CA vertrauen um Websites zu identifizieren'. + (Anmerkung: Der genaue Wortlaut hängt vom verwendeten Web-Browser ab). +

+

Bildschirmfoto des Zertifikatsinstallationsdialogs

+

Hinweis: Der tatsächliche Dialog kann vom oben dargestellten abweichen und hängt vom verwendeten Web-Browser ab.

+

Kopieren Sie diese Verknüpfung und rufen Sie sie in weiteren Web-Browsern ihrer Wahl auf um das Zertifikat auch dort zu installieren.

+ +

Das CA Zertifikat wird ausschließlich zur Identifikation der lokalen Bürgerkartenumgebung verwendet + und kann bei der Deinstallation der Bürgerkartenumgebung aus dem Web-Browser entfernt werden.

+


+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.install.cacert.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.install.cacert.png new file mode 100644 index 00000000..0c1b2564 Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.install.cacert.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.activate.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.activate.png new file mode 100644 index 00000000..4790cdf6 Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.activate.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.change.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.change.png new file mode 100644 index 00000000..a0fa8643 Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.change.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-1.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-1.png new file mode 100644 index 00000000..b17b3b40 Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-1.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-2.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-2.png new file mode 100644 index 00000000..429c87eb Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-2.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-3.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-3.png new file mode 100644 index 00000000..76b11f69 Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-3.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-4.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-4.png new file mode 100644 index 00000000..5be7c709 Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-4.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt.html new file mode 100644 index 00000000..6423e5cf --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt.html @@ -0,0 +1,78 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

PIN Verwaltung

+

Mit Hilfe der PIN Verwaltung können Sie Karten-PINs aktivieren, ändern und entsperren, + wobei der unterstützte Funktionsumfang vom Typ und Zustand der verwendeten Karte abhängt. +

+

Ändern der PIN

+

Bereits aktivierte PINs werden als AKTIV angeführt + und können über die Schaltfläche 'Ändern' geändert werden. +

+

Bildschirmfoto

+

Geben Sie dazu die alte und neue PIN im jeweils dafür vorgesehenen Feld ein und wiederholen Sie die + neue PIN im Feld 'Bestätigung'. +

+

Bildschirmfoto

+

Bei Karten mit dem ACOS Betriebssystem müssen die PINs verifiziert werden um ihren Status zu ermitteln. + Den Status dieser als UNBEKANNT angeführten PINs können Sie über die Schaltfläche 'Abfragen' verifizieren. +

+

Bildschirmfoto

+

+ Geben Sie dazu die PIN im dafür vorgesehenen Feld ein. +

+

Bildschirmfoto

+ +

Aktivieren der PIN

+

Noch nicht aktivierte PINs werden als NICHT AKTIV angeführt + und können über die Schaltfläche 'Aktivieren' gesetzt werden. +

+

Bildschirmfoto

+

Geben Sie dazu die gewünschte PIN im dafür vorgesehenen Feld ein und wiederholen Sie diese im Feld 'Bestätigung'. +

+

Bildschirmfoto

+ +

Entsperren der PIN

+

Durch mehrmalige falsche Eingabe gesperrte PINs werden als GESPERRT angeführt + und können über die Schaltfläche 'Entsperren' mit einer PUK neu gesetzt werden. + Das Entsperren wird nur von Karten mit dem ACOS Betriebssystem unterstützt. +

+

Bildschirmfoto

+

Momentan wird das Entsperren von PINs noch nicht unterstützt. +

+ +


+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt.png new file mode 100644 index 00000000..44ad3398 Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.verify.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.verify.png new file mode 100644 index 00000000..0c7a7852 Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.verify.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.retry.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.retry.html new file mode 100644 index 00000000..4360b4ae --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.retry.html @@ -0,0 +1,41 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

Falsche PIN

+

Die eingegebene PIN war falsch. Bitte geben Sie die korrekte PIN ein.

+

Die Anzahl der noch möglichen Versuche wird angezeigt.

+


+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.retry.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.retry.png new file mode 100644 index 00000000..00716afb Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.retry.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.signpin-1.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.signpin-1.png new file mode 100644 index 00000000..1c5c8570 Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.signpin-1.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.signpin.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.signpin.html new file mode 100644 index 00000000..35afd5ec --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.signpin.html @@ -0,0 +1,46 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

Erstellen einer elektronischen Signatur

+

Sie werden aufgefordert die Signatur-PIN einzugeben, um eine elektronische Signatur zu erstellen.

+

Bildschirmfoto

+
    +
  1. Klicken Sie auf 'Signaturdaten anzeigen' um die zu signierenden Daten anzuzeigen.
  2. +
  3. Geben Sie im Formularfeld die Signatur-PIN ein.
  4. +
  5. Klicken Sie auf die Schaltfläche 'Signieren' um die elektronische Signatur zu erstellen.
  6. +
+


+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.signpin.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.signpin.png new file mode 100644 index 00000000..37bef2d5 Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.signpin.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.unblock.pin.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.unblock.pin.html new file mode 100644 index 00000000..eb2b1c33 --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.unblock.pin.html @@ -0,0 +1,47 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

Entsperren der PIN

+

Durch mehrmalige falsche Eingabe gesperrte PINs werden als GESPERRT angeführt + und können über die Schaltfläche 'Entsperren' mit einer PUK neu gesetzt werden. + Das Entsperren wird nur von Karten mit dem ACOS Betriebssystem unterstützt. +

+

Bildschirmfoto

+

Momentan wird das Entsperren von PINs noch nicht unterstützt. +

+ +


+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.unsupported.mimetype.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.unsupported.mimetype.html new file mode 100644 index 00000000..09440dc2 --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.unsupported.mimetype.html @@ -0,0 +1,41 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

Signaturdaten können nicht dargestellt werden

+

Die Signaturdatenanzeige unterstützt reine Textdaten sowie XHTML, andere MIME-Typen können nicht angezeigt werden. + Um die Daten standardkonform darzustellen, müssen diese abgespeichert und mit einem geeigneten externen Betrachter geöffnen werden.

+


+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.verify.pin.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.verify.pin.html new file mode 100644 index 00000000..e4d8502f --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.verify.pin.html @@ -0,0 +1,51 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

PIN Abfragen

+

Bei Karten mit dem ACOS Betriebssystem müssen die PINs verifiziert werden um ihren Status zu ermitteln. + Den Status dieser als UNBEKANNT angeführten PINs können Sie über die Schaltfläche 'Abfragen' verifizieren. +

+

Bildschirmfoto

+

+ Geben Sie dazu die PIN im dafür vorgesehenen Feld ein. +

+

Bildschirmfoto

+

Nach erfolgreicher Eingabe wird die PIN entsprechend ihrem Status als AKTIV, NICHT AKTIV oder GESPERRT angeführt. +

+

Bildschirmfoto

+ +


+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/insertcard.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/insertcard.html new file mode 100644 index 00000000..17902252 --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/insertcard.html @@ -0,0 +1,43 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

Bitte die Bürgerkarte in den Kartenleser stecken

+

Die Software für den Zugriff auf die Bürgerkarte hat einen oder mehrere unterstützte Kartenleser gefunden.

+

Bitte stecken Sie nun ihre Bürgerkarte in den Kartenleser. Wird die Karte erkannt, welchselt die Bildschirmanzeige.

+

Sollten Sie mehrere Kartenleser angeschlossen haben, wählen Sie einen beliebigen aus. Wird die Karte im ausgewählten Kartenleser nicht erkannt, wird dieser Kartenleser eventuell nicht unterstützt. Probieren Sie es daher in einem anderen Kartenleser nochmal. +

+


+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/insertcard.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/insertcard.png new file mode 100644 index 00000000..62a22975 Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/insertcard.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/wait.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/wait.html new file mode 100644 index 00000000..c5fe9ad2 --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/wait.html @@ -0,0 +1,40 @@ + + + + +Untitled Document + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

Bitte warten ...

+

Die Software für den Zugriff auf die Bürgerkarte ist damit beschäftigt, einen Befehl auszuführen bzw. auf einen neuen Befehl vom Server zu warten.

+


+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/wait.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/wait.png new file mode 100644 index 00000000..63a38fbf Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/wait.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/welcome.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/welcome.html new file mode 100644 index 00000000..8e9d2a5b --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/welcome.html @@ -0,0 +1,41 @@ + + + + +Bürgerkarte - Hilfe + + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hinweis: Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.

+
+
+

Willkommen

+

Die Anzeige "Willkommen" erfolgt unmittelbar nachdem die Software für den Zugriff auf die Bürgerkarte erfolgreich im Browser geladen wurde.

+

Die Software versucht nun eine Verbindung mit dem Server aufzunehmen um Befehle für den Zugriff auf die Bürgerkarte zu erhalten.

+


+
+ +
+ + diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/welcome.png b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/welcome.png new file mode 100644 index 00000000..78133b4d Binary files /dev/null and b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/welcome.png differ diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/help.css b/mocca-1.2.11/BKUHelp/src/main/webapp/help/help.css new file mode 100644 index 00000000..28f9767b --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/help.css @@ -0,0 +1,81 @@ +@charset "UTF-8"; +body { + font: 100% Verdana, Arial, Helvetica, sans-serif; + background: #666666; + margin: 0; /* it's good practice to zero the margin and padding of the body element to account for differing browser defaults */ + padding: 0; + text-align: center; /* this centers the container in IE 5* browsers. The text is then set to the left aligned default in the #container selector */ + color: #000000; +} + +/* Tips for Elastic layouts +1. Since the elastic layouts overall sizing is based on the user's default fonts size, they are more unpredictable. Used correctly, they are also more accessible for those that need larger fonts size since the line length remains proportionate. +2. Sizing of divs in this layout are based on the 100% font size in the body element. If you decrease the text size overall by using a font-size: 80% on the body element or the #container, remember that the entire layout will downsize proportionately. You may want to increase the widths of the various divs to compensate for this. +3. If font sizing is changed in differing amounts on each div instead of on the overall design (ie: #sidebar1 is given a 70% font size and #mainContent is given an 85% font size), this will proportionately change each of the divs overall size. You may want to adjust based on your final font sizing. +*/ +.twoColElsLtHdr #container { + width: 46em; /* this width will create a container that will fit in an 800px browser window if text is left at browser default font sizes */ + background: #FFFFFF; + margin: 0 auto; /* the auto margins (in conjunction with a width) center the page */ + border: 1px solid #000000; + text-align: left; /* this overrides the text-align: center on the body element. */ +} +.twoColElsLtHdr #header { + background: #DDDDDD; + padding: 0 10px; /* this padding matches the left alignment of the elements in the divs that appear beneath it. If an image is used in the #header instead of text, you may want to remove the padding. */ +} +.twoColElsLtHdr #header h1 { + margin: 0; /* zeroing the margin of the last element in the #header div will avoid margin collapse - an unexplainable space between divs. If the div has a border around it, this is not necessary as that also avoids the margin collapse */ + padding: 10px 0; /* using padding instead of margin will allow you to keep the element away from the edges of the div */ +} + +/* Tips for sidebar1: +1. Be aware that if you set a font-size value on this div, the overall width of the div will be adjusted accordingly. +2. Since we are working in ems, it's best not to use padding on the sidebar itself. It will be added to the width for standards compliant browsers creating an unknown actual width. +3. Space between the side of the div and the elements within it can be created by placing a left and right margin on those elements as seen in the ".twoColElsLtHdr #sidebar1 p" rule. +*/ +.twoColElsLtHdr #sidebar1 { + float: left; + width: 210px; + padding: 15px 0; /* top and bottom padding create visual space within this div */ + background-color: #FFFFFF; +} +.twoColElsLtHdr #sidebar1 h3, .twoColElsLtHdr #sidebar1 p { + margin-left: 10px; /* the left and right margin should be given to every element that will be placed in the side columns */ + margin-right: 10px; +} + +/* Tips for mainContent: +1. If you give this #mainContent div a font-size value different than the #sidebar1 div, the margins of the #mainContent div will be based on its font-size and the width of the #sidebar1 div will be based on its font-size. You may wish to adjust the values of these divs. +2. The space between the mainContent and sidebar1 is created with the left margin on the mainContent div. No matter how much content the sidebar1 div contains, the column space will remain. You can remove this left margin if you want the #mainContent div's text to fill the #sidebar1 space when the content in #sidebar1 ends. +3. To avoid float drop, you may need to test to determine the approximate maximum image/element size since this layout is based on the user's font sizing combined with the values you set. However, if the user has their browser font size set lower than normal, less space will be available in the #mainContent div than you may see on testing. +4. In the Internet Explorer Conditional Comment below, the zoom property is used to give the mainContent "hasLayout." This avoids several IE-specific bugs that may occur. +*/ +.twoColElsLtHdr #mainContent { + margin: 0 1.5em 0 15em; /* the right margin can be given in ems or pixels. It creates the space down the right side of the page. */ + padding: 0 10px; +} +.twoColElsLtHdr #footer { + padding: 0 10px; /* this padding matches the left alignment of the elements in the divs that appear above it. */ + background:#DDDDDD; +} +.twoColElsLtHdr #footer p { + margin: 0; /* zeroing the margins of the first element in the footer will avoid the possibility of margin collapse - a space between divs */ + padding: 10px 0; /* padding on this element will create space, just as the the margin would have, without the margin collapse issue */ +} + +/* Miscellaneous classes for reuse */ +.fltrt { /* this class can be used to float an element right in your page. The floated element must precede the element it should be next to on the page. */ + float: right; + margin-left: 8px; +} +.fltlft { /* this class can be used to float an element left in your page */ + float: left; + margin-right: 8px; +} +.clearfloat { /* this class should be placed on a div or break element and should be the final element before the close of a container that should fully contain a float */ + clear:both; + height:0; + font-size: 1px; + line-height: 0px; +} \ No newline at end of file diff --git a/mocca-1.2.11/BKUHelp/src/main/webapp/help/index.html b/mocca-1.2.11/BKUHelp/src/main/webapp/help/index.html new file mode 100644 index 00000000..3cb6354d --- /dev/null +++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/index.html @@ -0,0 +1,48 @@ + + + + + Bürgerkarte - Hilfe + + + + + + +
+ +
+

Bildschirmfoto des Applets

+

Hilfe-Icon rechts oben im Bürgerkartendialog

+
+
+

Hilfe zur Bürgerkartenumgebung

+

Die Bürgerkartenumgebung bietet eine kontextabhängige Hilfe, + die jederzeit über das Hilfe-Icon rechts oben im Bürgerkartendialog abrufbar ist. + Alternativ können die einzelnen Hilfeseiten auch direkt in jedem Browser angezeigt - und zu den Lesezeichen hinzugefügt - werden. +

+

Häufige gestellte Fragen werden in den folgenden Hilfeseiten behandelt:

+ + +


+
+ +
+ + diff --git a/mocca-1.2.11/BKULocal/pom.xml b/mocca-1.2.11/BKULocal/pom.xml new file mode 100644 index 00000000..66b4e1d0 --- /dev/null +++ b/mocca-1.2.11/BKULocal/pom.xml @@ -0,0 +1,136 @@ + + + bku + at.gv.egiz + 1.2.11 + + 4.0.0 + at.gv.egiz + BKULocal + war + BKU Local + 1.2.11 + + + scm:svn:svn://svn.egovlabs.gv.at/svnroot/mocca/tags/mocca-1.2.11/BKULocal + scm:svn:svn://svn.egovlabs.gv.at/svnroot/mocca/tags/mocca-1.2.11/BKULocal + scm:svn:svn://svn.egovlabs.gv.at/svnroot/mocca/tags/mocca-1.2.11/BKULocal + + + + + maven-war-plugin + + + true + + + + ${project.version}-r${buildNumber} + + + + + + org.codehaus.mojo + maven-buildnumber-plugin + + + validate + + create + + + + + false + false + + + + maven-dependency-plugin + org.apache.maven.plugins + + + copy-help + + unpack-dependencies + + + BKUHelp + at.gv.egiz + META-INF/ + ${project.build.directory}/${project.build.finalName} + + + + + + + + + + at.gv.egiz + STAL + 1.2.11 + + + at.gv.egiz + bkucommon + 1.2.11 + + + at.gv.egiz + smcc + 1.2.11 + + + at.gv.egiz + smccSTAL + 1.2.11 + + + at.gv.egiz + BKUGuiExt + 1.2.11 + + + at.gv.egiz + smccSTALExt + 1.2.11 + + + at.gv.egiz + BKUViewer + 1.2.11 + + + BKUHelp + at.gv.egiz + 1.2.11 + + + org.springframework + spring-core + + + javax.servlet + servlet-api + 2.5 + provided + + + org.springframework + spring-web + 2.5.5 + + + commons-logging + commons-logging + + + + + Tomcat60 + + diff --git a/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/accesscontroller/SpringSecurityManager.java b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/accesscontroller/SpringSecurityManager.java new file mode 100644 index 00000000..3f50fc78 --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/accesscontroller/SpringSecurityManager.java @@ -0,0 +1,65 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.local.accesscontroller; + +import java.io.IOException; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.context.ResourceLoaderAware; +import org.springframework.core.io.Resource; +import org.springframework.core.io.ResourceLoader; + +import at.gv.egiz.bku.accesscontroller.SecurityManagerFacade; +import at.gv.egiz.bku.conf.Configurator; + +public class SpringSecurityManager extends SecurityManagerFacade implements + ResourceLoaderAware { + + private ResourceLoader resourceLoader; + + private static Log log = LogFactory.getLog(SpringSecurityManager.class); + + protected Configurator config; + + public void setConfig(Configurator config) { + this.config = config; + } + + public void init() { + String noMatch = config.getProperty("AccessController.acceptNoMatch"); + if (noMatch != null) { + log.debug("Setting allow now match to: " + noMatch); + setAllowUnmatched(Boolean.getBoolean(noMatch)); + } + String policy = config.getProperty("AccessController.policyResource"); + policy = policy.replace("${user.home}", System.getProperty("user.home")); + log.info("Loading resource: " + policy); + try { + Resource res = resourceLoader.getResource(policy); + init(res.getInputStream()); + } catch (IOException e) { + log.error(e); + } + } + + @Override + public void setResourceLoader(ResourceLoader loader) { + this.resourceLoader = loader; + } + +} diff --git a/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/conf/SpringConfigurator.java b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/conf/SpringConfigurator.java new file mode 100644 index 00000000..7b2641ff --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/conf/SpringConfigurator.java @@ -0,0 +1,142 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.local.conf; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.context.ResourceLoaderAware; +import org.springframework.core.io.Resource; +import org.springframework.core.io.ResourceLoader; + +import at.gv.egiz.bku.conf.Configurator; +import at.gv.egiz.bku.local.webapp.SpringBKUServlet; +import at.gv.egiz.bku.slexceptions.SLRuntimeException; + +public class SpringConfigurator extends Configurator implements + ResourceLoaderAware { + + private final static Log log = LogFactory.getLog(SpringConfigurator.class); + + private ResourceLoader resourceLoader; + + public SpringConfigurator() { + // File configDir = new File(System.getProperty("user.home") + + // "/.bku/conf"); + // if (configDir.exists()) { + // log.debug("Found existing config directory: " + configDir); + // } else { + // log.info("Config dir not existing, creating new"); + // if (!configDir.mkdirs()) { + // log.error("Cannot create directory: " + configDir); + // } + // } + } + + public void setResource(Resource resource) { + log.debug("Loading config from: " + resource); + if (resource != null) { + Properties props = new Properties(); + try { + props.load(resource.getInputStream()); + super.setConfiguration(props); + } catch (IOException e) { + log.error("Cannot load config", e); + } + } else { + log.warn("Cannot load properties, resource: " + resource); + } + } + + @Override + public void configure() { + if (properties == null) { + defaultInit(); + } + super.configure(); + SpringBKUServlet.setConfigurator(this); + } + + public void defaultInit() { + Properties props = new Properties(); + try { + props.load(new FileInputStream(System.getProperty("user.home") + + "/.mocca/war/mocca.war")); + super.setConfiguration(props); + } catch (IOException e) { + log.error("Cannot load config", e); + } + } + + @Override + public void setResourceLoader(ResourceLoader loader) { + this.resourceLoader = loader; + } + + private File getDirectory(String property) { + property = property + .replace("${user.home}", System.getProperty("user.home")); + if (property != null) { + Resource certDirRes = resourceLoader.getResource(property); + File certDir; + try { + certDir = certDirRes.getFile(); + } catch (IOException e) { + log.error("Cannot get cert directory", e); + throw new SLRuntimeException(e); + } + if (!certDir.isDirectory()) { + log.error("Expecting directory as SSL.certDirectory parameter"); + throw new SLRuntimeException( + "Expecting directory as SSL.certDirectory parameter"); + } + return certDir; + } + return null; + + } + + @Override + protected File getCADir() { + String caDirectory = getProperty("SSL.caDirectory"); + return getDirectory(caDirectory); + } + + @Override + protected File getCertDir() { + String certDirectory = getProperty("SSL.certDirectory"); + return getDirectory(certDirectory); + } + + @Override + protected InputStream getManifest() { + Resource r = resourceLoader.getResource("META-INF/MANIFEST.MF"); + if ((r != null) && r.isReadable()) { + try { + return r.getInputStream(); + } catch (IOException e) { + log.error("Cannot read manifest data: " + e); + } + } + return null; + } +} \ No newline at end of file diff --git a/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/gui/GUIProxy.java b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/gui/GUIProxy.java new file mode 100644 index 00000000..38dd04d9 --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/gui/GUIProxy.java @@ -0,0 +1,55 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.local.gui; + +import at.gv.egiz.bku.gui.BKUGUIFacade; +import java.lang.reflect.InvocationHandler; +import java.lang.reflect.Method; +import javax.swing.JFrame; + +/** + * + * @author Clemens Orthacker + */ +public class GUIProxy implements InvocationHandler { + + JFrame frame; + BKUGUIFacade delegate; + + static public Object newInstance(BKUGUIFacade gui, JFrame frame, Class[] interfaces) { + return java.lang.reflect.Proxy.newProxyInstance(gui.getClass().getClassLoader(), + interfaces, + new GUIProxy(gui, frame)); + } + + private GUIProxy(BKUGUIFacade delegate, JFrame frame) { + this.frame = frame; + this.delegate = delegate; + } + + @Override + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + + if (method.getName().startsWith("show")) { + frame.setVisible(true); + frame.toFront(); + return method.invoke(delegate, args); + } else { //if (method.getName().startsWith("get")) { + return method.invoke(delegate, args); + } + } +} diff --git a/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/gui/LocalHelpListener.java b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/gui/LocalHelpListener.java new file mode 100644 index 00000000..c957e132 --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/gui/LocalHelpListener.java @@ -0,0 +1,61 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.local.gui; + +import at.gv.egiz.bku.gui.AbstractHelpListener; +import at.gv.egiz.bku.gui.DefaultHelpListener; +import java.awt.Desktop; +import java.io.IOException; +import java.net.URISyntaxException; +import java.net.URL; +import java.util.Locale; + +/** + * Open help document in browser, fallback to default (swing dialog) if Java Desktop API not supported. + * + * @author Clemens Orthacker + */ +public class LocalHelpListener extends AbstractHelpListener { + + protected Desktop desktop; + protected DefaultHelpListener fallback; + + public LocalHelpListener(URL baseURL, Locale locale) { + super(baseURL, locale); + if (Desktop.isDesktopSupported()) { + desktop = Desktop.getDesktop(); + } else { + log.info("Java Desktop API not available on current platform (libgnome installed?), falling back to DefaultHelpListener"); + fallback = new DefaultHelpListener(baseURL, locale); + } + } + + @Override + public void showDocument(URL helpDocument, String helpTopic) throws IOException, URISyntaxException { + if (desktop != null) { + if (!desktop.isSupported(Desktop.Action.BROWSE)) { + log.error("Failed to open default browser: The system provides the Desktop API, but does not support the BROWSE action"); + } else { + Desktop.getDesktop().browse(helpDocument.toURI()); + } + } else if (fallback != null) { + fallback.showDocument(helpDocument, helpTopic); + } else { + log.error("failed to display help document"); + } + } +} diff --git a/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalBKUWorker.java b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalBKUWorker.java new file mode 100644 index 00000000..1e3f9a1d --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalBKUWorker.java @@ -0,0 +1,64 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.local.stal; + +import at.gv.egiz.bku.gui.BKUGUIFacade; +import at.gv.egiz.bku.smccstal.AbstractBKUWorker; +import at.gv.egiz.bku.smccstal.PINManagementRequestHandler; +import at.gv.egiz.stal.QuitRequest; +import at.gv.egiz.stal.STALRequest; +import at.gv.egiz.stal.STALResponse; +import at.gv.egiz.stal.SignRequest; + +import at.gv.egiz.stal.ext.PINManagementRequest; +import java.util.List; +import javax.swing.JFrame; + +/** + * + * @author Clemens Orthacker + */ +public class LocalBKUWorker extends AbstractBKUWorker { + + private JFrame container; + + public LocalBKUWorker(BKUGUIFacade gui, JFrame container) { + super(gui); + this.container = container; + addRequestHandler(SignRequest.class, + new LocalSignRequestHandler(new LocalSecureViewer(gui))); + addRequestHandler(PINManagementRequest.class, new PINManagementRequestHandler()); + } + + /** does not change container's visibility (use quit request to close) */ + @Override + public List handleRequest(List requestList) { + signatureCard = null; + List responses = super.handleRequest(requestList); + container.setVisible(false); + return responses; + } + + /** overrides handle quit from abstract bku worker, make container invisible */ + @Override + public STALResponse handleRequest(STALRequest request) { + if (request instanceof QuitRequest) { + container.setVisible(false); + } + return null; + } +} diff --git a/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSTALFactory.java b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSTALFactory.java new file mode 100644 index 00000000..44322a07 --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSTALFactory.java @@ -0,0 +1,126 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.local.stal; + +import at.gv.egiz.bku.viewer.ResourceFontLoader; +import java.awt.Dimension; +import java.awt.Toolkit; +import java.net.MalformedURLException; +import java.util.Locale; + + +import at.gv.egiz.bku.gui.BKUGUIFacade; +import at.gv.egiz.bku.gui.BKUIcons; +import at.gv.egiz.bku.gui.PINManagementGUI; +import at.gv.egiz.bku.gui.PINManagementGUIFacade; +import at.gv.egiz.bku.local.gui.GUIProxy; +import at.gv.egiz.bku.local.gui.LocalHelpListener; +import at.gv.egiz.stal.STAL; +import at.gv.egiz.stal.STALFactory; +import java.net.URL; +import javax.swing.JFrame; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Creates a PINManagementGUI and a LocalBKUWorker, which in turn registers + * PINManagementRequestHandler from smccSTALExt. + * The RequestHandler expects PINManagementGUIFacade, therefore BKUGUIProxy has to implement the extended GUI. + * @author clemens + */ +public class LocalSTALFactory implements STALFactory { + + protected static final Log log = LogFactory.getLog(LocalSTALFactory.class); + protected static final Dimension PREFERRED_SIZE = new Dimension(318, 200); + protected String helpURL; + protected Locale locale; + + @Override + public STAL createSTAL() { + + LocalBKUWorker stal; + //http://java.sun.com/docs/books/tutorial/uiswing/misc/focus.html + // use undecorated JFrame instead of JWindow, + // which creates an invisible owning frame and therefore cannot getFocusInWindow() + JFrame dialog = new JFrame("Bürgerkarte"); + if (log.isTraceEnabled()) { + log.debug("alwaysOnTop supported: " + dialog.isAlwaysOnTopSupported()); + } + // [#439] make mocca dialog alwaysOnTop + dialog.setAlwaysOnTop(true); + dialog.setIconImages(BKUIcons.icons); + dialog.setUndecorated(true); +// dialog.getRootPane().setWindowDecorationStyle(JRootPane.NONE); +// dialog.addWindowListener(new WindowAdapter() { +// +// @Override +// public void windowClosing(WindowEvent e) { +// super.windowClosing(e); +// log.debug("closing window ********************"); +// } +// +// }); + if (locale != null) { + dialog.setLocale(locale); + } + LocalHelpListener helpListener = null; + try { + if (helpURL != null) { + helpListener = new LocalHelpListener(new URL(helpURL), locale); + } else { + log.warn("no HELP URL configured, help system disabled"); + } + } catch (MalformedURLException ex) { + log.error("failed to configure help listener: " + ex.getMessage(), ex); + } + PINManagementGUIFacade gui = new PINManagementGUI(dialog.getContentPane(), + dialog.getLocale(), + BKUGUIFacade.Style.advanced, + null, + new ResourceFontLoader(), + helpListener, + null); + BKUGUIFacade proxy = (BKUGUIFacade) GUIProxy.newInstance(gui, dialog, new Class[] { PINManagementGUIFacade.class} ); + stal = new LocalBKUWorker(proxy, dialog); + dialog.setPreferredSize(PREFERRED_SIZE); + dialog.pack(); + Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); + Dimension frameSize = dialog.getSize(); + if (frameSize.height > screenSize.height) { + frameSize.height = screenSize.height; + } + if (frameSize.width > screenSize.width) { + frameSize.width = screenSize.width; + } + dialog.setLocation((screenSize.width - frameSize.width) / 2, + (screenSize.height - frameSize.height) / 2); + return stal; + } + + @Override + public void setLocale(Locale locale) { + this.locale = locale; + } + + public String getHelpURL() { + return helpURL; + } + + public void setHelpURL(String helpURL) { + this.helpURL = helpURL; + } +} diff --git a/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSecureViewer.java b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSecureViewer.java new file mode 100644 index 00000000..ae58526c --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSecureViewer.java @@ -0,0 +1,129 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.local.stal; + +import at.gv.egiz.bku.slcommands.impl.DataObjectHashDataInput; +import at.gv.egiz.bku.smccstal.SecureViewer; +import java.io.IOException; +import java.util.ArrayList; + +import at.gv.egiz.bku.gui.BKUGUIFacade; +import at.gv.egiz.stal.HashDataInput; +import at.gv.egiz.stal.impl.ByteArrayHashDataInput; +import at.gv.egiz.stal.signedinfo.ReferenceType; +import at.gv.egiz.stal.signedinfo.SignedInfoType; +import java.awt.event.ActionListener; +import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import java.util.Collections; +import java.util.List; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author Clemens Orthacker + */ +public class LocalSecureViewer implements SecureViewer { + + private static final Log log = LogFactory.getLog(LocalSignRequestHandler.class); + private List hashDataInputs = Collections.EMPTY_LIST; + + protected BKUGUIFacade gui; + + public LocalSecureViewer(BKUGUIFacade gui) { + this.gui = gui; + } + + public void setDataToBeSigned(List dataToBeSigned) { + this.hashDataInputs = dataToBeSigned; + } + + /** + * + * @param dsigReferences + * @throws java.lang.Exception + */ + @Override + public void displayDataToBeSigned(SignedInfoType signedInfo, + ActionListener okListener, String okCommand) + throws Exception { + if (signedInfo.getReference().size() == 0) { + log.error("No hashdata input selected to be displayed: null"); + throw new Exception("No HashData Input selected to be displayed"); + } + + ArrayList selectedHashDataInputs = new ArrayList(); + for (ReferenceType dsigRef : signedInfo.getReference()) { + // don't get Manifest, QualifyingProperties, ... + if (dsigRef.getType() == null) { + String dsigRefId = dsigRef.getId(); + if (dsigRefId != null) { + boolean hdiAvailable = false; + for (HashDataInput hashDataInput : hashDataInputs) { + if (dsigRefId.equals(hashDataInput.getReferenceId())) { + log.debug("display hashdata input for dsig:SignedReference " + + dsigRefId); + selectedHashDataInputs.add( + ensureCachedHashDataInput(hashDataInput)); + hdiAvailable = true; + break; + } + } + if (!hdiAvailable) { + log.error("no hashdata input for dsig:SignedReference " + dsigRefId); + throw new Exception( + "No HashDataInput available for dsig:SignedReference " + dsigRefId); + } + } else { + throw new Exception( + "Cannot get HashDataInput for dsig:Reference without Id attribute"); + } + } + } + + if (selectedHashDataInputs.size() < 1) { + log.error("dsig:SignedInfo does not contain a data reference"); + throw new Exception("dsig:SignedInfo does not contain a data reference"); + } + gui.showSecureViewer(selectedHashDataInputs, okListener, okCommand); + } + + + private HashDataInput ensureCachedHashDataInput(HashDataInput hashDataInput) + throws IOException { + if (!(hashDataInput instanceof DataObjectHashDataInput)) { + + log.warn("expected DataObjectHashDataInput for LocalSignRequestHandler, got " + + hashDataInput.getClass().getName()); + + InputStream hdIs = hashDataInput.getHashDataInput(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(hdIs.available()); + int b; + while ((b = hdIs.read()) != -1) { + baos.write(b); + } + hashDataInput = new ByteArrayHashDataInput(baos.toByteArray(), + hashDataInput.getReferenceId(), + hashDataInput.getMimeType(), + hashDataInput.getEncoding(), + hashDataInput.getFilename()); + } + return hashDataInput; + } + +} diff --git a/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSignRequestHandler.java b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSignRequestHandler.java new file mode 100644 index 00000000..9ae1d9b9 --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSignRequestHandler.java @@ -0,0 +1,63 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.local.stal; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import at.gv.egiz.bku.smccstal.SignRequestHandler; +import at.gv.egiz.stal.ErrorResponse; +import at.gv.egiz.stal.STALRequest; +import at.gv.egiz.stal.STALResponse; +import at.gv.egiz.stal.SignRequest; + +/** + * + * @author Clemens Orthacker + */ +public class LocalSignRequestHandler extends SignRequestHandler { + + private static final Log log = LogFactory.getLog(LocalSignRequestHandler.class); + + public LocalSignRequestHandler(LocalSecureViewer secureViewer) { + super(secureViewer); + } + + /** + * If the request is a SIGN request, it contains a list of DataObjectHashDataInput + * providing the pre-digested input stream (that can be obtained repeatedly) if + * reference caching is enabled (or null otherwise). + * @param request + * @return + */ + @SuppressWarnings("unchecked") + @Override + public STALResponse handleRequest(STALRequest request) + throws InterruptedException { + + if (request instanceof SignRequest) { + SignRequest signReq = (SignRequest) request; + ((LocalSecureViewer) secureViewer).setDataToBeSigned(signReq.getHashDataInput()); + return super.handleRequest(request); + } else { + log.fatal("Got unexpected STAL request: " + request); + return new ErrorResponse(1000); + } + + + } +} diff --git a/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/BKURequestHandler.java b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/BKURequestHandler.java new file mode 100644 index 00000000..98be4047 --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/BKURequestHandler.java @@ -0,0 +1,113 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.local.webapp; + +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Locale; +import java.util.Map; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import at.gv.egiz.bku.binding.HTTPBindingProcessor; +import at.gv.egiz.bku.binding.HttpUtil; +import at.gv.egiz.bku.conf.Configurator; +import at.gv.egiz.org.apache.tomcat.util.http.AcceptLanguage; + +public class BKURequestHandler extends SpringBKUServlet { + + public final static String ENCODING = "UTF-8"; + + protected Log log = LogFactory.getLog(BKURequestHandler.class); + + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, java.io.IOException { + + log.debug("Received SecurityLayer request"); + + String acceptLanguage = req.getHeader("Accept-Language"); + Locale locale = AcceptLanguage.getLocale(acceptLanguage); + log.debug("Accept-Language locale: " + locale); + + HTTPBindingProcessor bindingProcessor; + bindingProcessor = (HTTPBindingProcessor) getBindingProcessorManager() + .createBindingProcessor(req.getRequestURL().toString(), null, locale); + Map headerMap = new HashMap(); + for (Enumeration headerName = req.getHeaderNames(); headerName + .hasMoreElements();) { + String header = headerName.nextElement(); + if (header != null) { + headerMap.put(header, req.getHeader(header)); + } + } + String charset = req.getCharacterEncoding(); + String contentType = req.getContentType(); + if (charset != null) { + contentType += ";" + charset; + } + headerMap.put(HttpUtil.HTTP_HEADER_CONTENT_TYPE, contentType); + bindingProcessor.setHTTPHeaders(headerMap); + bindingProcessor.consumeRequestStream(req.getInputStream()); + + // fixxme just for testing + bindingProcessor.run(); + if (bindingProcessor.getRedirectURL() != null) { + resp.sendRedirect(bindingProcessor.getRedirectURL()); + return; + } + resp.setStatus(bindingProcessor.getResponseCode()); + for (Iterator it = bindingProcessor.getResponseHeaders().keySet() + .iterator(); it.hasNext();) { + String header = it.next(); + resp.setHeader(header, bindingProcessor.getResponseHeaders().get(header)); + } + String version = configurator.getProperty(Configurator.SIGNATURE_LAYOUT); + if ((version != null) && (!"".equals(version.trim()))) { + log.debug("setting SignatureLayout header to " + version); + resp.setHeader(Configurator.SIGNATURE_LAYOUT, version); + } else { + log.debug("do not set SignatureLayout header"); + } + + if (configurator.getProperty(Configurator.USERAGENT_CONFIG_P) != null) { + resp.setHeader(HttpUtil.HTTP_HEADER_SERVER, configurator + .getProperty(Configurator.USERAGENT_CONFIG_P)); + } else { + resp.setHeader(HttpUtil.HTTP_HEADER_SERVER, + Configurator.USERAGENT_DEFAULT); + } + + resp.setContentType(bindingProcessor.getResultContentType()); + resp.setCharacterEncoding(ENCODING); + bindingProcessor.writeResultTo(resp.getOutputStream(), ENCODING); + req.getInputStream().close(); + resp.getOutputStream().flush(); + resp.getOutputStream().close(); + log.debug("Finished Request"); + } + + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, java.io.IOException { + doPost(req, resp); + } +} diff --git a/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/PINManagementServlet.java b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/PINManagementServlet.java new file mode 100644 index 00000000..0c35f1c9 --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/PINManagementServlet.java @@ -0,0 +1,114 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.local.webapp; + +import at.gv.egiz.bku.local.stal.LocalSTALFactory; +import at.gv.egiz.stal.QuitRequest; +import at.gv.egiz.stal.STAL; +import at.gv.egiz.stal.STALResponse; +import at.gv.egiz.stal.ext.PINManagementRequest; +import java.io.IOException; +import java.net.URL; +import java.util.Collections; +import java.util.List; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * PINManagementBKUWorker for non-applet version + * @author Clemens Orthacker + */ +public class PINManagementServlet extends HttpServlet { + + private static final Log log = LogFactory.getLog(PINManagementServlet.class); + + LocalSTALFactory stalFactory; + + public PINManagementServlet() { + stalFactory = new LocalSTALFactory(); + stalFactory.setHelpURL("http://localhost:3495/help/"); + } + + /** + * Processes requests for both HTTP GET and POST methods. + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + protected void processRequest(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + STAL pinMgmtSTAL = stalFactory.createSTAL(); + List stalResps = pinMgmtSTAL.handleRequest(Collections.singletonList(new PINManagementRequest())); + if (log.isDebugEnabled()) { + log.debug("received STAL reponse " + stalResps.get(0).getClass()); + } + pinMgmtSTAL.handleRequest(Collections.singletonList(new QuitRequest())); + + String redirect = request.getParameter("redirect"); + if (redirect != null) { + String referer = request.getHeader("Referer"); + if (referer != null) { + redirect = new URL(new URL(referer), redirect).toExternalForm(); + } + response.sendRedirect(redirect); + } else { + response.setStatus(HttpServletResponse.SC_OK); + } + } + + // + /** + * Handles the HTTP GET method. + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + } + + /** + * Handles the HTTP POST method. + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + } + + /** + * Returns a short description of the servlet. + * @return a String containing servlet description + */ + @Override + public String getServletInfo() { + return "Short description"; + }// +} diff --git a/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/SpringBKUServlet.java b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/SpringBKUServlet.java new file mode 100644 index 00000000..3bd50ba7 --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/SpringBKUServlet.java @@ -0,0 +1,39 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.local.webapp; + +import javax.servlet.http.HttpServlet; + +import at.gv.egiz.bku.binding.BindingProcessorManager; +import at.gv.egiz.bku.conf.Configurator; + +public abstract class SpringBKUServlet extends HttpServlet { + + public final static String BEAN_NAME = "bindingProcessorManager"; + + protected static Configurator configurator; + + protected BindingProcessorManager getBindingProcessorManager() { + return (BindingProcessorManager) getServletContext() + .getAttribute(BEAN_NAME); + } + + public static void setConfigurator(Configurator conf) { + configurator = conf; + } + +} diff --git a/mocca-1.2.11/BKULocal/src/main/resources/at/gv/egiz/bku/local/conf/accessControlConfig.xml b/mocca-1.2.11/BKULocal/src/main/resources/at/gv/egiz/bku/local/conf/accessControlConfig.xml new file mode 100644 index 00000000..586a8190 --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/resources/at/gv/egiz/bku/local/conf/accessControlConfig.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + allow + + confirm + + + + + + + + + anonymous + + allow + + confirm + + + anonymous + + Command + + + + + + + + certified + + IdentityLink + derived + + + allow + + confirm + + + anonymous + 127.0.0.1 + + IdentityLink + derived + + + allow + + confirm + + + anonymous + + IdentityLink + + + deny + + info + + + + allow + + + + + + diff --git a/mocca-1.2.11/BKULocal/src/main/resources/at/gv/egiz/bku/local/conf/defaultConf.properties b/mocca-1.2.11/BKULocal/src/main/resources/at/gv/egiz/bku/local/conf/defaultConf.properties new file mode 100644 index 00000000..8ae5bf6d --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/resources/at/gv/egiz/bku/local/conf/defaultConf.properties @@ -0,0 +1,61 @@ +# +# Copyright 2008 Federal Chancellery Austria and +# Graz University of Technology +# +# 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. +# + + +# Configuration for online CCE + +# security manager configuration +AccessController.acceptUnmatched=false +AccessController.policyResource=classpath:at/gv/egiz/bku/local/conf/accessControlConfig.xml + +# ------------BEGIN SSL Config -------------------- +# SSL configuration for connections to external +# resources (e.g. data urls) + +# directory where certificates for +# chain constructions can be placed +SSL.certDirectory=classpath:at/gv/egiz/bku/local/conf/certs/certStore + +# a LDAP repository +SSL.ldapServer= +SSL.ldapPort=389 + +# Directory where trusted CA +# certificates are placed +SSL.caDirectory=classpath:at/gv/egiz/bku/local/conf/certs/CACerts + +SSL.doRevocationChecking=true +SSL.sslProtocol=TLS + +SSL.cache.lifetime=3600 +# use authority info access extension to find ca certs. +SSL.useAIA=true + +# Don't set to true in production environments +# Attention flag only used for debugging +SSL.disableAllChecks=false +# ------------ END SSL Config -------------------- + +ValidateHashDataInputs=true +AppletTimeout=300000 + +#HTTPProxyHost= +#HTTPProxyPort= +#DefaultSocketTimeout=200 + + + diff --git a/mocca-1.2.11/BKULocal/src/main/resources/commons-logging.properties b/mocca-1.2.11/BKULocal/src/main/resources/commons-logging.properties new file mode 100644 index 00000000..0d497b1b --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/resources/commons-logging.properties @@ -0,0 +1,16 @@ +# Copyright 2008 Federal Chancellery Austria and +# Graz University of Technology +# +# 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. + +org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger diff --git a/mocca-1.2.11/BKULocal/src/main/resources/log4j.properties b/mocca-1.2.11/BKULocal/src/main/resources/log4j.properties new file mode 100644 index 00000000..a56f2683 --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/resources/log4j.properties @@ -0,0 +1,34 @@ +# Copyright 2008 Federal Chancellery Austria and +# Graz University of Technology +# +# 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. + +# assume log4j to be configured by servlet container (java web start) +# loglever DEBUG, appender STDOUT +log4j.rootLogger=DEBUG, STDOUT + +log4j.logger.at.gv.egiz.smcc=TRACE + +# STDOUT appender +log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender +log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout +#log4j.appender.STDOUT.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %20c | %10t | %m%n +#log4j.appender.STDOUT.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n +log4j.appender.STDOUT.layout.ConversionPattern=%-5p |%d | %t | %c %x- %m%n + +### FILE appender +log4j.appender.file=org.apache.log4j.DailyRollingFileAppender +log4j.appender.file.datePattern='.'yyyy-MM-dd +log4j.appender.file.File=${user.home}/.bku/logs/bku.log +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n \ No newline at end of file diff --git a/mocca-1.2.11/BKULocal/src/main/webapp/META-INF/MANIFEST.MF b/mocca-1.2.11/BKULocal/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 00000000..5e949512 --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/mocca-1.2.11/BKULocal/src/main/webapp/META-INF/context.xml b/mocca-1.2.11/BKULocal/src/main/webapp/META-INF/context.xml new file mode 100644 index 00000000..fd2fac1f --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/webapp/META-INF/context.xml @@ -0,0 +1,2 @@ + + diff --git a/mocca-1.2.11/BKULocal/src/main/webapp/WEB-INF/applicationContext.xml b/mocca-1.2.11/BKULocal/src/main/webapp/WEB-INF/applicationContext.xml new file mode 100644 index 00000000..e96bd088 --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/webapp/WEB-INF/applicationContext.xml @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mocca-1.2.11/BKULocal/src/main/webapp/WEB-INF/web.xml b/mocca-1.2.11/BKULocal/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 00000000..c4ea1e54 --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,64 @@ + + + + http-security-layer-request + + + + contextConfigLocation + /WEB-INF/applicationContext.xml + + + + org.springframework.web.context.ContextLoaderListener + + + + + + + BKUServlet + at.gv.egiz.bku.local.webapp.BKURequestHandler + + + PINManagementServlet + at.gv.egiz.bku.local.webapp.PINManagementServlet + + + BKUServlet + /http-security-layer-request + + + BKUServlet + /https-security-layer-request + + + + + PINManagementServlet + /PINManagement + + + index.html + index.htm + index.jsp + default.html + default.htm + default.jsp + + diff --git a/mocca-1.2.11/BKULocal/src/main/webapp/errorresponse.css b/mocca-1.2.11/BKULocal/src/main/webapp/errorresponse.css new file mode 100644 index 00000000..41402e71 --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/webapp/errorresponse.css @@ -0,0 +1,12 @@ +@CHARSET "UTF-8"; +sl\:ErrorResponse {margin: 0.5em; display: block;} +sl\:ErrorCode {display: inline;} +sl\:Info {display: inline;} + +ErrorResponse:lang(de):before {content: "Bei der Verarbeitung der Anfrage durch die Bürgerkartenumgebung ist ein Fehler aufgetreten: "; font-weight: bolder;} +ErrorResponse:before {content: "An error has occoured upon request processing by the citizen card software: "; font-weight: bold;} +ErrorResponse {margin: 0.5em; display: block;} +ErrorCode:lang(de):before {content: "Fehler-Code: ";} +ErrorCode:before {content: "Error Code: ";} +ErrorCode {display: block;} +Info {display: block;} \ No newline at end of file diff --git a/mocca-1.2.11/BKULocal/src/main/webapp/img/chip16.ico b/mocca-1.2.11/BKULocal/src/main/webapp/img/chip16.ico new file mode 100644 index 00000000..42175127 Binary files /dev/null and b/mocca-1.2.11/BKULocal/src/main/webapp/img/chip16.ico differ diff --git a/mocca-1.2.11/BKULocal/src/main/webapp/img/chip48.png b/mocca-1.2.11/BKULocal/src/main/webapp/img/chip48.png new file mode 100644 index 00000000..491fbcac Binary files /dev/null and b/mocca-1.2.11/BKULocal/src/main/webapp/img/chip48.png differ diff --git a/mocca-1.2.11/BKULocal/src/main/webapp/index.html b/mocca-1.2.11/BKULocal/src/main/webapp/index.html new file mode 100644 index 00000000..c6d6c747 --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/main/webapp/index.html @@ -0,0 +1,64 @@ + + + + + + Bürgerkarte - Willkommen + + + + + + +
+ +
+
+ Logo +
+

Sie haben die Bürgerkartenumgebung MOCCA erfolgreich installiert. + Um diese zu verwenden installieren Sie bitte noch das + CA Zertifikat¹ in ihrem Browser. +

+ +

Weiters können Sie

+ + +


+ +

+ ¹Eine automatisierte Installation ist mit Microsoft Internet Explorer in Windows Vista oder 7 leider nicht möglich, + siehe dazu Hilfe. +

+ +
+ +
+ + + diff --git a/mocca-1.2.11/BKULocal/src/test/java/at/gv/egiz/bku/local/stal/TestSignRequest.java b/mocca-1.2.11/BKULocal/src/test/java/at/gv/egiz/bku/local/stal/TestSignRequest.java new file mode 100644 index 00000000..c6b69781 --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/test/java/at/gv/egiz/bku/local/stal/TestSignRequest.java @@ -0,0 +1,55 @@ +/* +* Copyright 2008 Federal Chancellery Austria and +* Graz University of Technology +* +* 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 at.gv.egiz.bku.local.stal; + +import java.io.ByteArrayOutputStream; +import java.util.ArrayList; +import java.util.List; + +import org.junit.Ignore; + +import at.gv.egiz.bku.utils.StreamUtil; +import at.gv.egiz.smcc.SignatureCard; +import at.gv.egiz.stal.STALRequest; +import at.gv.egiz.stal.SignRequest; + +@Ignore +public class TestSignRequest { + + public void test() throws Exception { + ByteArrayOutputStream os = new ByteArrayOutputStream(); + StreamUtil.copyStream(getClass().getClassLoader().getResourceAsStream("at/gv/egiz/bku/local/stal/sigInfo.xml"), os); + byte[] signedInfo = os.toByteArray(); + SignRequest sr = new SignRequest(); + sr.setSignedInfo(signedInfo); + sr.setKeyIdentifier(SignatureCard.KeyboxName.SECURE_SIGNATURE_KEYPAIR.getKeyboxName()); + List reqList = new ArrayList(1); + reqList.add(sr); + System.out.println((new LocalSTALFactory()).createSTAL().handleRequest(reqList)); + } + + public static void main(String[] args) { + TestSignRequest tsr = new TestSignRequest(); + try { + tsr.test(); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + +} diff --git a/mocca-1.2.11/BKULocal/src/test/resources/at/gv/egiz/bku/local/stal/sigInfo.xml b/mocca-1.2.11/BKULocal/src/test/resources/at/gv/egiz/bku/local/stal/sigInfo.xml new file mode 100644 index 00000000..623a78bc --- /dev/null +++ b/mocca-1.2.11/BKULocal/src/test/resources/at/gv/egiz/bku/local/stal/sigInfo.xml @@ -0,0 +1,79 @@ + + + + + + + <xsl:value-of select="/xa:Antrag/xa:Titel"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+

+

Absender/in
Vorname + +
Familienname + + +
Geburtsdatum + +
Geburtsort + +
E-Mail zur Kontaktaufnahme + +
Dieser Antrag ergeht an:
Adressat + +
Hauptwohnsitz des Antragsstellers (laut ZMR):
Strasse + +
Hausnummer + + + / + + / +
Postleitzahl + +
Ort + +
Staat + +
GPYZB80vaYfGObhjlfu4lLLpAHs=
8DWtjO0ki1U/lxn+Y34We6GsfxU=
\ No newline at end of file diff --git a/mocca-1.2.11/BKUOnline/catalog.xml b/mocca-1.2.11/BKUOnline/catalog.xml new file mode 100644 index 00000000..38c98894 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/catalog.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/mocca-1.2.11/BKUOnline/nb-configuration.xml b/mocca-1.2.11/BKUOnline/nb-configuration.xml new file mode 100644 index 00000000..4bfb3c58 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/nb-configuration.xml @@ -0,0 +1,15 @@ + + +This file contains additional configuration written by modules in the NetBeans IDE. +The configuration is intended to be shared among all the users of project and +therefore it is assumed to be part of version control checkout. +Without this configuration present, some functionality in the IDE may be limited or fail altogether. + + + + + src/main/webapp/WEB-INF/applicationContext.xml + + + + diff --git a/mocca-1.2.11/BKUOnline/nbactions.xml b/mocca-1.2.11/BKUOnline/nbactions.xml new file mode 100644 index 00000000..e09cc3da --- /dev/null +++ b/mocca-1.2.11/BKUOnline/nbactions.xml @@ -0,0 +1,13 @@ + + + + CUSTOM-Package_skipTest + Package_skipTest + + package + + + true + + + diff --git a/mocca-1.2.11/BKUOnline/pom.xml b/mocca-1.2.11/BKUOnline/pom.xml new file mode 100644 index 00000000..fa3fa191 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/pom.xml @@ -0,0 +1,324 @@ + + + + bku + at.gv.egiz + 1.2.11 + + 4.0.0 + at.gv.egiz + BKUOnline + war + BKU Online + 1.2.11 + + + + tlc + TLC Repository + http://commons.ucalgary.ca/pub/m2 + + + + + + log4j + log4j + + + at.gv.egiz + bkucommon + 1.2.11 + + + at.gv.egiz + BKUViewer + 1.2.11 + + + BKUCertificates + at.gv.egiz + 1.1 + + + BKUHelp + at.gv.egiz + 1.2.11 + + + commons-logging + commons-logging + + + org.springframework + spring-core + + + javax.servlet + servlet-api + 2.5 + provided + + + org.springframework + spring-web + 2.5.5 + + + at.gv.egiz + STALService + 1.2.11 + compile + + + at.gv.egiz + STALService + 1.2.11 + + + + at.gv.egiz + STALXService + 1.2.11 + + + + com.sun.xml.ws + jaxws-rt + + + + woodstox + wstx-asl + + + + + + sjsxp + com.sun.xml.stream + 1.0.1 + + + + at.gv.egiz + BKUApplet + 1.2.11 + provided + + + at.gv.egiz + BKUAppletExt + 1.2.11 + provided + + + + iaik + iaik_jce_me4se + provided + + + + + scm:svn:svn://svn.egovlabs.gv.at/svnroot/mocca/tags/mocca-1.2.11/BKUOnline + scm:svn:svn://svn.egovlabs.gv.at/svnroot/mocca/tags/mocca-1.2.11/BKUOnline + scm:svn:svn://svn.egovlabs.gv.at/svnroot/mocca/tags/mocca-1.2.11/BKUOnline + + + + + maven-dependency-plugin + org.apache.maven.plugins + + + copy-applet + + copy-dependencies + + + ${project.build.directory}/${project.build.finalName}/applet + at.gv.egiz,commons-logging,iaik + BKUApplet,BKUAppletExt,commons-logging,iaik_jce_me4se + true + true + + + + unpack-fonts + + unpack-dependencies + + + ${project.build.directory}/${project.build.finalName}/applet + at.gv.egiz + BKUFonts + META-INF/,LICENSE + false + + + + copy-certificates + + + unpack-dependencies + + + BKUCertificates + at.gv.egiz + META-INF/ + ${project.build.directory}/${project.build.finalName}/WEB-INF/classes + + + + copy-help + + unpack-dependencies + + + BKUHelp + at.gv.egiz + META-INF/ + ${project.build.directory}/${project.build.finalName} + + + + + + + maven-war-plugin + + + true + + + + ${project.version}-r${buildNumber} + + + + + + org.codehaus.mojo + maven-buildnumber-plugin + + + validate + + create + + + + + false + false + + + + + + + jaxb-generate-stal + + + + org.codehaus.mojo + jaxws-maven-plugin + + + + wsimport + + + + + true + ${basedir}/src/main/custom-binding + + stalservice-custom.xml + staltypes-custom.xml + cardchannel-custom.xml + + + ${basedir}/src/main/wsdl + + stal-service.wsdl + + ${project.build.directory}/generated-sources/wsimport + ${project.build.directory}/generated-sources/wsimport/.staleFlag + + + + + + + include-webstart + + + + maven-dependency-plugin + org.apache.maven.plugins + + + copy-webstart + + unpack-dependencies + + + at.gv.egiz + BKUWebStart + ${project.build.directory}/${project.build.finalName}/webstart + + + + + + + + + + + at.gv.egiz + BKUWebStart + provided + zip + + + + + + Tomcat60 + + diff --git a/mocca-1.2.11/BKUOnline/private/cache/retriever/catalog.xml b/mocca-1.2.11/BKUOnline/private/cache/retriever/catalog.xml new file mode 100644 index 00000000..c40b0d50 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/private/cache/retriever/catalog.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/mocca-1.2.11/BKUOnline/private/cache/retriever/java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd b/mocca-1.2.11/BKUOnline/private/cache/retriever/java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd new file mode 100644 index 00000000..f9a884c0 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/private/cache/retriever/java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd @@ -0,0 +1,362 @@ + + + + Schema for JAXB 2.0 binding declarations. + + + +Model group that represents a binding declaration. Each new binding +declaration added to the jaxb namespace that is not restricted to +globalBindings should be added as a child element to this model group. + + + + + + + + + + + + + + + + + +Used to specify the version of the binding schema on the schema element for +inline annotations or jaxb:bindings for external binding. + + + + +Attributes used for property customization. The attribute group can be +referenced either from the globalBindings declaration or from the +property declaration. The following defaults are defined by the JAXB +specification in global scope only. Thus they apply when the +propertyAttributes group is referenced from the globalBindings declaration +but not when referenced from the property declaration. + collectionType a class that implements java.util.List. + fixedAttributeAsConstantProperty false + enableFailFastCheck false + generateIsSetMethod false + optionalProperty wrapper + generateElementProperty false + attachmentRef default + + + + + + + + + + + + + + + + + + + + + + + + + + + Customize XMLNames to Java id mapping + + + + + + + + + + Customization values defined in global scope. + + + + + + allows extension binding declarations to be specified. + + + + + + + + + + + + + + + + + + + + + + + Customization values with schema scope + + + + + + + + + Customize interface and implementation class. + + + + + + Java class name without package prefix. + + + Implementation class name including package prefix. + + + Default value derived from [jaxb:globalBindings]@generateValueClass. + + + + + Customize property. + + + + + + + + + + + Data type conversions; overriding builtins + + + name of the java type to which xml type is to be bound. + + + xml type to which java datatype has to be bound.Must be present when javaType is scoped to globalBindings + + + + + +If true, the parsMethod and printMethod must reference a method +signtature that has a second parameter of type NamespaceContext. + + + + + + Bind to a type safe enumeration class. + + + + + + + + + + + Enumeration member name in a type safe enumeration class. + + + + + + + + + + + + + + + + + +The name attribute for [baseType] enables more precise control over the actual base type for a JAXB property. This customization enables specifying a more general base type than the property's default base type. The name attribute value must be a fully qualified Java class name. Additionally, this Java class must be a super interface/class of the default Java base type for the property. When the default base type is a primitive type, consider the default Java base type to be the Java wrapper class of that primitive type.This customization is useful to enable simple type substitution for a JAXB property representing with too restrictive of a default base type. + + + + + + + + + + + + + + Treate underscore in XML Name to Java identifier mapping. + + + + + + + +XML types or types derived from them which have enumeration facet(s) which are be mapped to typesafeEnumClass by default. The following types cannot be specified in this list: "xsd:QName", "xsd:base64Binary", "xsd:hexBinary", "xsd:date", "xsd:time", "xsd:dateTime", "xsd:duration","xsd:gDay", "xsd:gMonth", "xsd:Year", "xsd:gMonthDay", "xsd:YearMonth", "xsd:ID", "xsd:IDREF", "xsd:NOTATION" + + + + + Used to customize how to handle name collisions. + + + + + + + + Placeholder type to indicate Legal Java identifier. + + + + Rule to transform an Xml name into another Xml name + + prepend the string to QName. + + + Append the string to QName. + + + + Allows transforming an xml name into another xml name. Use case UDDI 2.0 schema. + + + Mapping rule for type definitions. + + + Mapping rule for elements + + + Mapping rule for model group + + + Mapping rule for class names generated for an anonymous type. + + + + + +A binding compiler only processes this attribute when it occurs on an +an instance of xs:schema element. The value of this attribute is a +whitespace-separated list of namespace prefixes. The namespace bound +to each of the prefixes is designated as a customization declaration +namespace. + + + + + + +Binding declaration(s) for a remote schema. +If attribute node is set, the binding declaraions +are associated with part of the remote schema +designated by schemaLocation attribute. The node +attribute identifies the node in the remote schema +to associate the binding declaration(s) with. + + + + + + + + + + + +Location of the remote schema to associate binding declarations with. + + + + +The value of the string is an XPATH 1.0 compliant string that +resolves to a node in a remote schema to associate +binding declarations with. The remote schema is specified +by the schemaLocation attribute occuring in the current +element or in a parent of this element. + + + + +Used to indicate the version of binding declarations. Only valid on root level bindings element. Either this or "jaxb:version" attribute but not both may be specified. + + + + +Used to indicate the version of binding declarations. Only valid on root level bindings element. Either this attribute or "version" attribute but not both may be specified. + + + + + + + + + + + + + + + + + + + Specify DOM API to bind to JAXB property to. + + + + + Disable MTOM/XOP encoding for this binary data. Annotation can be placed on a type defintion that derives from a W3C XSD binary data type or on an element that has a type that is or derives from a W3C XSD binary data type. + + + + + + + + + diff --git a/mocca-1.2.11/BKUOnline/private/cache/retriever/www.w3.org/2001/XMLSchema.xsd b/mocca-1.2.11/BKUOnline/private/cache/retriever/www.w3.org/2001/XMLSchema.xsd new file mode 100644 index 00000000..2e9a2729 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/private/cache/retriever/www.w3.org/2001/XMLSchema.xsd @@ -0,0 +1,2534 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]> + + + + Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp + Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp + + + + + + The schema corresponding to this document is normative, + with respect to the syntactic constraints it expresses in the + XML Schema language. The documentation (within <documentation> elements) + below, is not normative, but rather highlights important aspects of + the W3C Recommendation of which this is a part + + + + + The simpleType element and all of its members are defined + towards the end of this schema document + + + + + + Get access to the xml: attribute groups for xml:lang + as declared on 'schema' and 'documentation' below + + + + + + + + This type is extended by almost all schema types + to allow attributes from other namespaces to be + added to user schemas. + + + + + + + + + + + + + This type is extended by all types which allow annotation + other than <schema> itself + + + + + + + + + + + + + + + + This group is for the + elements which occur freely at the top level of schemas. + All of their types are based on the "annotated" type by extension. + + + + + + + + + + + + + This group is for the + elements which can self-redefine (see <redefine> below). + + + + + + + + + + + + + A utility type, not for public use + + + + + + + + + + + A utility type, not for public use + + + + + + + + + + + A utility type, not for public use + + #all or (possibly empty) subset of {extension, restriction} + + + + + + + + + + + + + + + + + A utility type, not for public use + + + + + + + + + + + + + A utility type, not for public use + + #all or (possibly empty) subset of {extension, restriction, list, union} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + for maxOccurs + + + + + + + + + + + + for all particles + + + + + + + for element, group and attributeGroup, + which both define and reference + + + + + + + + 'complexType' uses this + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This branch is short for + <complexContent> + <restriction base="xs:anyType"> + ... + </restriction> + </complexContent> + + + + + + + + + + + + + + + Will be restricted to required or forbidden + + + + + + Not allowed if simpleContent child is chosen. + May be overriden by setting on complexContent child. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This choice is added simply to + make this a valid restriction per the REC + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Overrides any setting on complexType parent. + + + + + + + + + + + + + + + This choice is added simply to + make this a valid restriction per the REC + + + + + + + + + + + + + + + + + No typeDefParticle group reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A utility type, not for public use + + #all or (possibly empty) subset of {substitution, extension, + restriction} + + + + + + + + + + + + + + + + + + + + + + + + + The element element can be used either + at the top level to define an element-type binding globally, + or within a content model to either reference a globally-defined + element or type or declare an element-type binding locally. + The ref form is not allowed at the top level. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + group type for explicit groups, named top-level groups and + group references + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + group type for the three kinds of group + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This choice with min/max is here to + avoid a pblm with the Elt:All/Choice/Seq + Particle derivation constraint + + + + + + + + + + restricted max/min + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Only elements allowed inside + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + simple type for the value of the 'namespace' attr of + 'any' and 'anyAttribute' + + + + Value is + ##any - - any non-conflicting WFXML/attribute at all + + ##other - - any non-conflicting WFXML/attribute from + namespace other than targetNS + + ##local - - any unqualified non-conflicting WFXML/attribute + + one or - - any non-conflicting WFXML/attribute from + more URI the listed namespaces + references + (space separated) + + ##targetNamespace or ##local may appear in the above list, to + refer to the targetNamespace of the enclosing + schema or an absent targetNamespace respectively + + + + + + A utility type, not for public use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A subset of XPath expressions for use +in selectors + A utility type, not for public +use + + + + The following pattern is intended to allow XPath + expressions per the following EBNF: + Selector ::= Path ( '|' Path )* + Path ::= ('.//')? Step ( '/' Step )* + Step ::= '.' | NameTest + NameTest ::= QName | '*' | NCName ':' '*' + child:: is also allowed + + + + + + + + + + + + + + + + + + + + + + + A subset of XPath expressions for use +in fields + A utility type, not for public +use + + + + The following pattern is intended to allow XPath + expressions per the same EBNF as for selector, + with the following change: + Path ::= ('.//')? ( Step '/' )* ( Step | '@' NameTest ) + + + + + + + + + + + + + + + + + + + + + + + + + + + The three kinds of identity constraints, all with + type of or derived from 'keybase'. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A utility type, not for public use + + A public identifier, per ISO 8879 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + notations for use within XML Schema schemas + + + + + + + + + Not the real urType, but as close an approximation as we can + get in the XML representation + + + + + + + + + + First the built-in primitive datatypes. These definitions are for + information only, the real built-in definitions are magic. + + + + For each built-in datatype in this schema (both primitive and + derived) can be uniquely addressed via a URI constructed + as follows: + 1) the base URI is the URI of the XML Schema namespace + 2) the fragment identifier is the name of the datatype + + For example, to address the int datatype, the URI is: + + http://www.w3.org/2001/XMLSchema#int + + Additionally, each facet definition element can be uniquely + addressed via a URI constructed as follows: + 1) the base URI is the URI of the XML Schema namespace + 2) the fragment identifier is the name of the facet + + For example, to address the maxInclusive facet, the URI is: + + http://www.w3.org/2001/XMLSchema#maxInclusive + + Additionally, each facet usage in a built-in datatype definition + can be uniquely addressed via a URI constructed as follows: + 1) the base URI is the URI of the XML Schema namespace + 2) the fragment identifier is the name of the datatype, followed + by a period (".") followed by the name of the facet + + For example, to address the usage of the maxInclusive facet in + the definition of int, the URI is: + + http://www.w3.org/2001/XMLSchema#int.maxInclusive + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NOTATION cannot be used directly in a schema; rather a type + must be derived from it by specifying at least one enumeration + facet whose value is the name of a NOTATION declared in the + schema. + + + + + + + + + + Now the derived primitive types + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + pattern specifies the content of section 2.12 of XML 1.0e2 + and RFC 3066 (Revised version of RFC 1766). + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + pattern matches production 7 from the XML spec + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + pattern matches production 5 from the XML spec + + + + + + + + + + + + + + + pattern matches production 4 from the Namespaces in XML spec + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A utility type, not for public use + + + + + + + + + + + + + + + + + + + + + + #all or (possibly empty) subset of {restriction, union, list} + + + A utility type, not for public use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Can be restricted to required or forbidden + + + + + + + + + + + + + + + + + + Required at the top level + + + + + + + + + + + + + + + + + + + Forbidden when nested + + + + + + + + + + + + + + + + + + + We should use a substitution group for facets, but + that's ruled out because it would allow users to + add their own, which we're not ready for yet. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + base attribute and simpleType child are mutually + exclusive, but one or other is required + + + + + + + + + + + + + + + + itemType attribute and simpleType child are mutually + exclusive, but one or other is required + + + + + + + + + + + + + + + + + + memberTypes attribute must be non-empty or there must be + at least one simpleType child + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocca-1.2.11/BKUOnline/src/main/custom-binding/cardchannel-custom.xml b/mocca-1.2.11/BKUOnline/src/main/custom-binding/cardchannel-custom.xml new file mode 100644 index 00000000..b46aa6a8 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/custom-binding/cardchannel-custom.xml @@ -0,0 +1,40 @@ + + + + + + + + + + diff --git a/mocca-1.2.11/BKUOnline/src/main/custom-binding/stalservice-custom.xml b/mocca-1.2.11/BKUOnline/src/main/custom-binding/stalservice-custom.xml new file mode 100644 index 00000000..7c5f604d --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/custom-binding/stalservice-custom.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + true + false + + + + + + + Initial connection, get the first request. + + + + + + + true + false + + + + + + Fetch the next request. + + + + + + + true + false + + + + + + Fetch the signed references corresponding to the previous SignatureRequest. + + + + + + + true + false + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mocca-1.2.11/BKUOnline/src/main/custom-binding/staltypes-custom.xml b/mocca-1.2.11/BKUOnline/src/main/custom-binding/staltypes-custom.xml new file mode 100644 index 00000000..2925fb91 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/custom-binding/staltypes-custom.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + diff --git a/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/accesscontroller/SpringSecurityManager.java b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/accesscontroller/SpringSecurityManager.java new file mode 100644 index 00000000..5795478b --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/accesscontroller/SpringSecurityManager.java @@ -0,0 +1,63 @@ +/* +* Copyright 2008 Federal Chancellery Austria and +* Graz University of Technology +* +* 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 at.gv.egiz.bku.online.accesscontroller; + +import java.io.IOException; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.context.ResourceLoaderAware; +import org.springframework.core.io.Resource; +import org.springframework.core.io.ResourceLoader; + +import at.gv.egiz.bku.accesscontroller.SecurityManagerFacade; +import at.gv.egiz.bku.conf.Configurator; + +public class SpringSecurityManager extends SecurityManagerFacade implements + ResourceLoaderAware { + + private ResourceLoader resourceLoader; + + private static Log log = LogFactory.getLog(SpringSecurityManager.class); + + protected Configurator config; + + public void setConfig(Configurator config) { + this.config = config; + } + + public void init() { + String noMatch = config.getProperty("AccessController.acceptNoMatch"); + if (noMatch != null) { + log.debug("Setting allow now match to: " + noMatch); + setAllowUnmatched(Boolean.getBoolean(noMatch)); + } + String policy = config.getProperty("AccessController.policyResource"); + log.info("Loading resource: " + policy); + try { + Resource res = resourceLoader.getResource(policy); + init(res.getInputStream()); + } catch (IOException e) { + log.error(e); + } + } + + @Override + public void setResourceLoader(ResourceLoader loader) { + this.resourceLoader = loader; + } +} diff --git a/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/conf/SpringConfigurator.java b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/conf/SpringConfigurator.java new file mode 100644 index 00000000..6030c1c0 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/conf/SpringConfigurator.java @@ -0,0 +1,127 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.online.conf; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.util.Properties; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.context.ResourceLoaderAware; +import org.springframework.core.io.Resource; +import org.springframework.core.io.ResourceLoader; + +import at.gv.egiz.bku.conf.Configurator; +import at.gv.egiz.bku.online.webapp.SpringBKUServlet; +import at.gv.egiz.bku.slexceptions.SLRuntimeException; +import at.gv.egiz.stal.service.impl.RequestBrokerSTALFactory; + +public class SpringConfigurator extends Configurator implements + ResourceLoaderAware { + + private final static Log log = LogFactory.getLog(SpringConfigurator.class); + + private ResourceLoader resourceLoader; + + public void setResource(Resource resource) { + log.debug("Loading config from: " + resource); + if (resource != null) { + Properties props = new Properties(); + try { + props.load(resource.getInputStream()); + super.setConfiguration(props); + } catch (IOException e) { + log.error("Cannot load config", e); + } + } else { + log.warn("Cannot load properties, resource: " + resource); + } + } + + public void configureNetwork() { + super.configureNetwork(); + String appletTimeout = getProperty("AppletTimeout"); + if ((appletTimeout != null)) { + try { + long ato = Long.parseLong(appletTimeout); + log.debug("Setting applet timeout to:"+ato); + RequestBrokerSTALFactory.setTimeout(ato); + } catch (NumberFormatException nfe) { + log.error("Cannot set Applettimeout", nfe); + } + + } + } + + public void configure() { + super.configure(); + SpringBKUServlet.setConfigurator(this); + } + + @Override + public void setResourceLoader(ResourceLoader loader) { + this.resourceLoader = loader; + } + + private File getDirectory(String property) { + if (property != null) { + Resource certDirRes = resourceLoader.getResource(property); + File certDir; + try { + certDir = certDirRes.getFile(); + } catch (IOException e) { + log.error("Cannot get cert directory", e); + throw new SLRuntimeException(e); + } + if (!certDir.isDirectory()) { + log.error("Expecting directory as SSL.certDirectory parameter"); + throw new SLRuntimeException( + "Expecting directory as SSL.certDirectory parameter"); + } + return certDir; + } + return null; + + } + + @Override + protected File getCADir() { + String caDirectory = getProperty("SSL.caDirectory"); + return getDirectory(caDirectory); + } + + @Override + protected File getCertDir() { + String certDirectory = getProperty("SSL.certDirectory"); + return getDirectory(certDirectory); + } + + @Override + protected InputStream getManifest() { + Resource r = resourceLoader.getResource("META-INF/MANIFEST.MF"); + if (r != null) { + try { + return r.getInputStream(); + } catch (IOException e) { + log.error("Cannot read manifest data:", e); + } + } + return null; + } +} \ No newline at end of file diff --git a/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/AppletDispatcher.java b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/AppletDispatcher.java new file mode 100644 index 00000000..24938cd5 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/AppletDispatcher.java @@ -0,0 +1,113 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.online.webapp; + +import java.io.IOException; +import java.util.regex.Pattern; +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * prevent applet caching, + * could be removed once applet is loaded via jnlp + * + * @author Clemens Orthacker + */ +public class AppletDispatcher extends HttpServlet { + + protected final static Log log = LogFactory.getLog(AppletDispatcher.class); + + public static final String DISPATCH_CTX = "dispatch/"; + public static final String RAND_PREFIX = "__"; + public static final String RAND_ATTRIBUTE = "rand"; + public static final Pattern ctxPattern = Pattern.compile(DISPATCH_CTX); + public static final Pattern archivePattern = Pattern.compile(RAND_PREFIX + "[a-zA-Z0-9]*\\.jar$"); + + /** + * Processes requests for both HTTP GET and POST methods. + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + protected void processRequest(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + + String uri = request.getRequestURI(); +// log.trace("request URI " + uri); + + uri = uri.substring(request.getContextPath().length()); +// log.trace("removing contextPath " + uri); + + uri = ctxPattern.matcher(uri).replaceAll(""); +// log.trace("removing dispatch context " + uri); + + uri = archivePattern.matcher(uri).replaceAll(".jar"); +// log.trace("removing random suffix " + uri); + + if (log.isTraceEnabled()) { + log.trace("dispatching request URI " + request.getRequestURI() + + " to " + uri); + } + + RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(uri); + dispatcher.forward(request, response); + } + + // + /** + * Handles the HTTP GET method. + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + } + + /** + * Handles the HTTP POST method. + * @param request servlet request + * @param response servlet response + * @throws ServletException if a servlet-specific error occurs + * @throws IOException if an I/O error occurs + */ + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + processRequest(request, response); + } + + /** + * Returns a short description of the servlet. + * @return a String containing servlet description + */ + @Override + public String getServletInfo() { + return "Short description"; + }// + +} diff --git a/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/BKURequestHandler.java b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/BKURequestHandler.java new file mode 100644 index 00000000..7dfec211 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/BKURequestHandler.java @@ -0,0 +1,317 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.online.webapp; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.net.URLEncoder; +import java.util.Arrays; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; +import java.util.regex.Pattern; + +import javax.servlet.RequestDispatcher; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import at.gv.egiz.bku.binding.BindingProcessor; +import at.gv.egiz.bku.binding.HTTPBindingProcessor; +import at.gv.egiz.bku.binding.HttpUtil; +import at.gv.egiz.bku.binding.IdFactory; +import at.gv.egiz.bku.utils.StreamUtil; +import at.gv.egiz.org.apache.tomcat.util.http.AcceptLanguage; + +/** + * Handles SL requests and instantiates BindingProcessors + * + */ +public class BKURequestHandler extends SpringBKUServlet { + + private static final long serialVersionUID = 1L; + + public static final String APPLET_PAGE_P = "appletPage"; + public static final String APPLET_PAGE_DEFAULT = "BKUApplet"; + + public static final String PARAM_APPLET_WIDTH = "appletWidth"; + public static final String ATTR_APPLET_WIDTH = "appletWidth"; + + public static final String PARAM_APPLET_HEIGHT = "appletHeight"; + public static final String ATTR_APPLET_HEIGHT = "appletHeight"; + + public static final String PARAM_APPLET_BACKGROUND = "appletBackground"; + public static final String ATTR_APPLET_BACKGROUND = "appletBackground"; + + public static final String PARAM_APPLET_BACKGROUND_COLOR = "appletBackgroundColor"; + public static final String ATTR_APPLET_BACKGROUND_COLOR = "appletBackgroundColor"; + public static final Pattern PATTERM_APPLET_BACKGROUND_COLOR = Pattern.compile("\\#[0-9a-fA-F]{6}"); + + public static final String PARAM_APPLET_GUI_STYLE = "appletGuiStyle"; + public static final String ATTR_APPLET_GUI_STYLE = "appletGuiStyle"; + public static final String[] VALUES_APPLET_GUI_STYLE = new String[] {"tiny", "simple", "advanced"}; + + public static final String PARAM_APPLET_EXTENSION = "appletExtension"; + public static final String ATTR_APPLET_EXTENSION = "appletExtension"; + public static final String[] VALUES_APPLET_EXTENSION = new String[] {"pin", "activation"}; + + public static final String PARAM_LOCALE = "locale"; + public static final String ATTR_LOCALE = "locale"; + public static final Pattern PATTERN_LOCALE = Pattern.compile("[a-zA-Z][a-zA-Z](_[a-zA-Z][a-zA-Z]){0,2}"); + + public final static String REDIRECT_URL_SESSION_ATTRIBUTE = "redirectUrl"; + + protected Log log = LogFactory.getLog(BKURequestHandler.class); + + private static String getStringFromStream(InputStream is, String encoding) + throws IOException { + if (is == null) { + return null; + } + if (encoding == null) { + encoding = HttpUtil.DEFAULT_CHARSET; + } + ByteArrayOutputStream os = new ByteArrayOutputStream(); + StreamUtil.copyStream(is, os); + return new String(os.toByteArray(), encoding); + } + + @Override + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, java.io.IOException { + log.debug("Received SecurityLayer request"); + + HttpSession session = req.getSession(false); + if (session != null) { + log.warn("Already a session with id: " + session.getId() + + " active, trying to get Bindingprocessor"); + BindingProcessor bp = getBindingProcessorManager().getBindingProcessor( + IdFactory.getInstance().createId(session.getId())); + if (bp != null) { + log.debug("Found binding processor, using this one"); + String appletPage = getStringFromStream( + ((HTTPBindingProcessor) bp).getFormData(APPLET_PAGE_P), + req.getCharacterEncoding()); + getDispatcher(appletPage).forward(req, resp); + return; + } + log.debug("Did not find a binding processor, creating new ..."); + } + session = req.getSession(true); + if (log.isDebugEnabled()) { + log.debug("Using session id: " + session.getId()); + } + + String acceptLanguage = req.getHeader("Accept-Language"); + Locale locale = AcceptLanguage.getLocale(acceptLanguage); + log.debug("Accept-Language locale: " + locale); + + HTTPBindingProcessor bindingProcessor; + bindingProcessor = (HTTPBindingProcessor) getBindingProcessorManager() + .createBindingProcessor(req.getRequestURL().toString(), + session.getId(), locale); + + Map headerMap = new HashMap(); + for (Enumeration headerName = req.getHeaderNames(); headerName + .hasMoreElements();) { + String header = headerName.nextElement(); + if (header != null) { + headerMap.put(header, req.getHeader(header)); + } + } + String charset = req.getCharacterEncoding(); + String contentType = req.getContentType(); + if (charset != null) { + contentType += ";" + charset; + } + headerMap.put(HttpUtil.HTTP_HEADER_CONTENT_TYPE, contentType); + bindingProcessor.setHTTPHeaders(headerMap); + bindingProcessor.consumeRequestStream(req.getInputStream()); + req.getInputStream().close(); + getBindingProcessorManager().process(bindingProcessor); + + log.trace("Trying to find applet parameters in request"); + + // appletWidth + String width = getStringFromStream(bindingProcessor + .getFormData(PARAM_APPLET_WIDTH), charset); + if (width != null) { + try { + // must be a valid integer + session.setAttribute(ATTR_APPLET_WIDTH, Integer.parseInt(width)); + log.trace("Found parameter " + PARAM_APPLET_WIDTH + "='" + width +"'."); + } catch (NumberFormatException nfe) { + log.warn("Applet parameter " + PARAM_APPLET_WIDTH + + " does not contain a valid value.", nfe); + } + } + + // appletHeight + String height = getStringFromStream(bindingProcessor + .getFormData(PARAM_APPLET_HEIGHT), charset); + if (height != null) { + try { + // must be a valid integer + session.setAttribute(ATTR_APPLET_HEIGHT, Integer.parseInt(height)); + log.trace("Found parameter " + PARAM_APPLET_HEIGHT + "='" + height + "'."); + } catch (NumberFormatException nfe) { + log.warn("Applet parameter " + PARAM_APPLET_HEIGHT + + " does not contain a valid value.", nfe); + } + } + + // appletBackground + String background = getStringFromStream(bindingProcessor + .getFormData(PARAM_APPLET_BACKGROUND), charset); + if (background != null) { + session.setAttribute(ATTR_APPLET_BACKGROUND, background); + try { + // must be a valid http or https URL + URI backgroundURL = new URI(background); + if ("http".equals(backgroundURL.getScheme()) + || "https".equals(backgroundURL.getScheme())) { + session.setAttribute(ATTR_APPLET_BACKGROUND, backgroundURL.toASCIIString()); + log.trace("Found parameter " + PARAM_APPLET_BACKGROUND + "='" + + backgroundURL.toASCIIString() + "'."); + } else { + log.warn("Applet parameter " + PARAM_APPLET_BACKGROUND + "='" + + background + "' is not a valid http/https URL."); + } + } catch (URISyntaxException e) { + log.warn("Applet parameter " + PARAM_APPLET_BACKGROUND + "='" + + background + "' is not a valid http/https URL.", e); + } + } + + // appletBackgroundColor + String backgroundColor = getStringFromStream(bindingProcessor + .getFormData(PARAM_APPLET_BACKGROUND_COLOR), charset); + if (backgroundColor != null) { + // must be a valid color definition + if (PATTERM_APPLET_BACKGROUND_COLOR.matcher(backgroundColor).matches()) { + session.setAttribute(ATTR_APPLET_BACKGROUND_COLOR, backgroundColor); + log.trace("Faund parameter " + PARAM_APPLET_BACKGROUND_COLOR + "='" + + backgroundColor + "'."); + } else { + log.warn("Applet parameter " + PARAM_APPLET_BACKGROUND_COLOR + "='" + + backgroundColor + "' is not a valid color definition (must be of form '#hhhhhh')."); + } + } + + // appletGuiStyle + String guiStyle = getStringFromStream(bindingProcessor + .getFormData(PARAM_APPLET_GUI_STYLE), charset); + if (guiStyle != null) { + // must be one of VALUES_APPLET_GUI_STYLE + String style = guiStyle.toLowerCase(); + if (Arrays.asList(VALUES_APPLET_GUI_STYLE).contains(style)) { + session.setAttribute(ATTR_APPLET_GUI_STYLE, style); + log.trace("Found parameter " + PARAM_APPLET_GUI_STYLE + "='" + + style + "'."); + } else { + StringBuilder sb = new StringBuilder(); + sb.append("Applet parameter ").append(PARAM_APPLET_GUI_STYLE).append( + "='").append(guiStyle).append("' is not valid (must be one of ") + .append(Arrays.toString(VALUES_APPLET_GUI_STYLE)).append(")."); + log.warn(sb); + } + } + + // appletExtension + String extension = getStringFromStream(bindingProcessor + .getFormData(PARAM_APPLET_EXTENSION), charset); + if (extension != null) { + // must be one of VALUES_APPLET_EXTENSION + String ext = extension.toLowerCase(); + if (Arrays.asList(VALUES_APPLET_EXTENSION).contains(ext)) { + session.setAttribute(ATTR_APPLET_EXTENSION, ext); + log.trace("Found parameter " + PARAM_APPLET_EXTENSION + "='" + + ext + "'."); + } else { + StringBuilder sb = new StringBuilder(); + sb.append("Applet parameter ").append(PARAM_APPLET_EXTENSION).append( + "='").append(extension).append("' is not valid (must be one of ") + .append(Arrays.toString(VALUES_APPLET_EXTENSION)).append(")."); + log.warn(sb); + } + } + + // locale + String localeFormParam = getStringFromStream(bindingProcessor + .getFormData(PARAM_LOCALE), charset); + if (localeFormParam != null) { + // must be a valid locale + if (PATTERN_LOCALE.matcher(localeFormParam).matches()) { + locale = new Locale(localeFormParam); + log.debug("Overrule accept-language header locale " + locale + + " with form param " + localeFormParam + "."); + } else { + log.warn("Parameter " + PARAM_LOCALE + "='" + localeFormParam + + "' is not a valid locale definition."); + } + } + if (locale != null) { + log.debug("Using locale " + locale); + session.setAttribute(ATTR_LOCALE, locale.toString()); + } + + // handle server side redirect url after processing + String redirectUrl = bindingProcessor.getRedirectURL(); + if ( redirectUrl != null) { + log.info("Got redirect URL "+redirectUrl+". Deferring browser redirect."); + session.setAttribute(REDIRECT_URL_SESSION_ATTRIBUTE, redirectUrl); + } + + String appletPage = getStringFromStream(bindingProcessor + .getFormData(APPLET_PAGE_P), charset); + getDispatcher(appletPage).forward(req, resp); + } + + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, java.io.IOException { + doPost(req, resp); + } + + private RequestDispatcher getDispatcher(String appletPage) { + RequestDispatcher dispatcher = null; + if (appletPage != null) { + log.trace("requested appletPage " + appletPage); + dispatcher = getServletContext().getNamedDispatcher(appletPage); + } + if (dispatcher == null) { + log.debug("no appletPage requested or appletPage not configured, using default"); + appletPage = APPLET_PAGE_DEFAULT; + dispatcher = getServletContext().getNamedDispatcher(appletPage); + } +// session.setAttribute(APPLET_PAGE_P, appletPage); + log.debug("forward to applet " + appletPage); + + return dispatcher; + } + +} diff --git a/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/ResultServlet.java b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/ResultServlet.java new file mode 100644 index 00000000..5ffe2399 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/ResultServlet.java @@ -0,0 +1,154 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.online.webapp; + +import java.io.IOException; +import java.util.Iterator; + +import javax.servlet.ServletConfig; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import at.gv.egiz.bku.binding.HTTPBindingProcessor; +import at.gv.egiz.bku.binding.HttpUtil; +import at.gv.egiz.bku.binding.IdFactory; +import at.gv.egiz.bku.conf.Configurator; +import at.gv.egiz.bku.utils.NullOutputStream; + +/** + * Delivers the result to the browser + * + */ +public class ResultServlet extends SpringBKUServlet { + + private final static Log log = LogFactory.getLog(ResultServlet.class); + + private String encoding = "UTF-8"; + private String expiredPage = "./expiredError.jsp"; + + public ResultServlet() { + } + + private void myInit() { + String enc = getServletContext().getInitParameter("responseEncoding"); + if (enc != null) { + log.debug("Init default encoding to: " + enc); + encoding = enc; + } + String expP = getServletConfig().getInitParameter("expiredPage"); + if (expP != null) { + log.debug("Init expired page to: " + expP); + expiredPage = expP; + } + } + + @Override + public void init() throws ServletException { + super.init(); + myInit(); + } + + @Override + public void init(ServletConfig config) throws ServletException { + super.init(config); + myInit(); + } + + protected void doPost(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, IOException { + doGet(req, resp); + } + + protected void doGet(HttpServletRequest req, HttpServletResponse resp) + throws ServletException, java.io.IOException { + String version = configurator.getProperty(Configurator.SIGNATURE_LAYOUT); + if ((version != null) && (!"".equals(version.trim()))) { + log.debug("setting SignatureLayout header to " + version); + resp.setHeader(Configurator.SIGNATURE_LAYOUT, version); + } else { + log.debug("do not set SignatureLayout header"); + } + + if (configurator.getProperty(Configurator.USERAGENT_CONFIG_P) != null) { + resp.setHeader(HttpUtil.HTTP_HEADER_SERVER, configurator + .getProperty(Configurator.USERAGENT_CONFIG_P)); + } else { + resp.setHeader(HttpUtil.HTTP_HEADER_SERVER, + Configurator.USERAGENT_DEFAULT); + } + + HttpSession session = req.getSession(false); + if (session == null) { + resp.sendRedirect(expiredPage); + return; + } + String sessionId = session.getId(); + if (sessionId == null) { + resp.sendRedirect(expiredPage); + return; + } + log.debug("Got a result request for session: " + sessionId); + HTTPBindingProcessor bp = (HTTPBindingProcessor) getBindingProcessorManager() + .getBindingProcessor(IdFactory.getInstance().createId(sessionId)); + if (bp == null) { + session.invalidate(); + resp.sendRedirect(expiredPage); + return; + } + String redirectUrl = (String) session + .getAttribute(BKURequestHandler.REDIRECT_URL_SESSION_ATTRIBUTE); + if (redirectUrl == null) { + redirectUrl = bp.getRedirectURL(); + } + if (redirectUrl != null) { + try { + bp.writeResultTo(new NullOutputStream(), encoding); + getBindingProcessorManager().removeBindingProcessor(bp.getId()); + } finally { + log.info("Executing deferred browser redirect to: " + redirectUrl); + resp.sendRedirect(redirectUrl); + session.invalidate(); + } + return; + } + + log.trace("setting response code: " + bp.getResponseCode()); + resp.setStatus(bp.getResponseCode()); + resp.setHeader("Cache-Control", "no-store"); // HTTP 1.1 + resp.setHeader("Pragma", "no-cache"); // HTTP 1.0 + resp.setDateHeader("Expires", 0); + for (Iterator it = bp.getResponseHeaders().keySet().iterator(); it + .hasNext();) { + String header = it.next(); + if (log.isTraceEnabled()) { + log.trace("setting response header " + header + ": " + bp.getResponseHeaders().get(header)); + } + resp.setHeader(header, bp.getResponseHeaders().get(header)); + } + resp.setContentType(bp.getResultContentType()); + resp.setCharacterEncoding(encoding); + bp.writeResultTo(resp.getOutputStream(), encoding); + resp.getOutputStream().flush(); + session.invalidate(); + getBindingProcessorManager().removeBindingProcessor(bp.getId()); + } +} diff --git a/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/SessionTimeout.java b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/SessionTimeout.java new file mode 100644 index 00000000..2b56166c --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/SessionTimeout.java @@ -0,0 +1,49 @@ +/* +* Copyright 2008 Federal Chancellery Austria and +* Graz University of Technology +* +* 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 at.gv.egiz.bku.online.webapp; + +import javax.servlet.http.HttpSessionEvent; +import javax.servlet.http.HttpSessionListener; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import at.gv.egiz.bku.binding.BindingProcessorManager; +import at.gv.egiz.bku.binding.IdFactory; + +/** + * Session listener to trigger the removal of the BindingProcessor + * + */ +public class SessionTimeout implements HttpSessionListener { + + private static Log log = LogFactory.getLog(SessionTimeout.class); + + @Override + public void sessionCreated(HttpSessionEvent arg0) { + // TODO Auto-generated method stub + + } + + @Override + public void sessionDestroyed(HttpSessionEvent event) { + BindingProcessorManager manager = (BindingProcessorManager) event.getSession().getServletContext().getAttribute(SpringBKUServlet.BEAN_NAME); + log.info("Removing session: "+event.getSession().getId()); + manager.removeBindingProcessor(IdFactory.getInstance().createId(event.getSession().getId())); + } + +} diff --git a/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/ShutdownHandler.java b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/ShutdownHandler.java new file mode 100644 index 00000000..741b5e32 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/ShutdownHandler.java @@ -0,0 +1,48 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.bku.online.webapp; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.springframework.context.ApplicationEvent; +import org.springframework.context.ApplicationListener; +import org.springframework.context.event.ContextClosedEvent; + +import at.gv.egiz.bku.binding.BindingProcessorManager; + +public class ShutdownHandler implements ApplicationListener { + + private static Log log = LogFactory.getLog(ShutdownHandler.class); + + private BindingProcessorManager bindingProcessorManager; + + public void setBindingProcessorManager( + BindingProcessorManager bindingProcessorManager) { + this.bindingProcessorManager = bindingProcessorManager; + } + + @Override + public void onApplicationEvent(ApplicationEvent event) { + if (event instanceof ContextClosedEvent) { + log.info("Shutting down BKU"); + bindingProcessorManager.shutdownNow(); + } + + } + +} diff --git a/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/SpringBKUServlet.java b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/SpringBKUServlet.java new file mode 100644 index 00000000..2c6f522e --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/SpringBKUServlet.java @@ -0,0 +1,37 @@ +/* +* Copyright 2008 Federal Chancellery Austria and +* Graz University of Technology +* +* 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 at.gv.egiz.bku.online.webapp; + +import javax.servlet.http.HttpServlet; + +import at.gv.egiz.bku.binding.BindingProcessorManager; +import at.gv.egiz.bku.conf.Configurator; + +public abstract class SpringBKUServlet extends HttpServlet { + + public final static String BEAN_NAME="bindingProcessorManager"; + + protected static Configurator configurator; + + protected BindingProcessorManager getBindingProcessorManager() { + return (BindingProcessorManager) getServletContext().getAttribute(BEAN_NAME); + } + + public static void setConfigurator(Configurator conf) { + configurator = conf; + } +} diff --git a/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/RequestBrokerSTALFactory.java b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/RequestBrokerSTALFactory.java new file mode 100644 index 00000000..305d8c1c --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/RequestBrokerSTALFactory.java @@ -0,0 +1,45 @@ +/* +* Copyright 2008 Federal Chancellery Austria and +* Graz University of Technology +* +* 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 at.gv.egiz.stal.service.impl; + +import java.util.Locale; + +import at.gv.egiz.stal.STAL; +import at.gv.egiz.stal.STALFactory; + +/** + * + * @author clemens + */ +public class RequestBrokerSTALFactory implements STALFactory { + + private static long timeout = -1; + + @Override + public STAL createSTAL() { + return new STALRequestBrokerImpl(timeout); + } + + @Override + public void setLocale(Locale locale) { + } + + public static void setTimeout(long millisec) { + timeout = millisec; + } +} diff --git a/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALRequestBroker.java b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALRequestBroker.java new file mode 100644 index 00000000..b77f7660 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALRequestBroker.java @@ -0,0 +1,41 @@ +/* +* Copyright 2008 Federal Chancellery Austria and +* Graz University of Technology +* +* 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 at.gv.egiz.stal.service.impl; + +import at.gv.egiz.stal.HashDataInput; +import at.gv.egiz.stal.STAL; +import at.gv.egiz.stal.service.types.RequestType; +import at.gv.egiz.stal.service.types.ResponseType; +import java.util.List; +import javax.xml.bind.JAXBElement; + +/** + * + * @author clemens + */ +public interface STALRequestBroker extends STAL { + + public static final int ERR_4500 = 4500; + public static final long DEFAULT_TIMEOUT_MS = 1000*60*5; //5mn + + public List> connect(); + + public List> nextRequest(List> responses); + + public List getHashDataInput(); +} diff --git a/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALRequestBrokerImpl.java b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALRequestBrokerImpl.java new file mode 100644 index 00000000..a2447ab7 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALRequestBrokerImpl.java @@ -0,0 +1,324 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.stal.service.impl; + +import at.gv.egiz.stal.ErrorResponse; +import at.gv.egiz.stal.HashDataInput; +import at.gv.egiz.stal.QuitRequest; +import at.gv.egiz.stal.STALRequest; +import at.gv.egiz.stal.STALResponse; +import at.gv.egiz.stal.SignRequest; +import at.gv.egiz.stal.service.translator.STALTranslator; +import at.gv.egiz.stal.service.translator.TranslationException; +import at.gv.egiz.stal.service.types.ObjectFactory; +import at.gv.egiz.stal.service.types.QuitRequestType; +import at.gv.egiz.stal.service.types.RequestType; +import at.gv.egiz.stal.service.types.ResponseType; +import at.gv.egiz.stalx.service.translator.STALXTranslationHandler; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import javax.xml.bind.JAXBElement; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * An instance of STALRequestBroker is shared between a producer thread (SLCommand) + * and multiple consumer threads (STALService). + * This implementation assures that handleRequest is executed only once the previous invocation returned. + * The BindingProcessor assures that a new SLCommand calls handleRequest() only once + * the bindingProcessor called handleRequest(QUIT) after the previous SLCommand's handleRequest() returned. + * + * Multiple STALService threads might call nextRequest()/getSignedReferences() in any order. + * + * @author clemens + */ +public class STALRequestBrokerImpl implements STALRequestBroker { + + private static final Log log = LogFactory.getLog(STALRequestBrokerImpl.class); + + private ObjectFactory of = new ObjectFactory(); + private STALTranslator translator = new STALTranslator(); + + private boolean interrupted = false; + + protected final ArrayList> requests; + protected final ArrayList> responses; + + protected ArrayList hashDataInputs; + + private long timeout; + + public STALRequestBrokerImpl(long timeoutMillisec) { + if (timeoutMillisec <= 0) + timeoutMillisec = DEFAULT_TIMEOUT_MS; + timeout = timeoutMillisec; + requests = new ArrayList>(); + responses = new ArrayList>(); + hashDataInputs = new ArrayList(); + + // register handler for STAL-X + translator.registerTranslationHandler(new STALXTranslationHandler()); + } + + /** + * Produce requests (and HashDataInputCallback) and wait for responses. + * This method is not thread safe, since every bindingprocessor thread possesses it's own instance. + * It however assures cooperation with STAL webservice threads consuming the requests and producing responses. + * + * @param requests + * @return + * + * @pre requests: either single SignRequest, QuitRequest or multiple ReadInfoboxRequests + */ + @Override + public List handleRequest(List stalRequests) { + if (interrupted) { + return null; + } + try { + synchronized (requests) { + log.trace("produce request"); + + requests.clear(); + hashDataInputs.clear(); + + for (STALRequest stalRequest : stalRequests) { + try { + JAXBElement request = translator.translate(stalRequest); + requests.add(request); + if (stalRequest instanceof SignRequest) { + //TODO refactor SignRequestType to keep HDI + // and getHashDataInput() accesses request obj + // (requests are cleared only when we receive the response) + // DataObjectHashDataInput with reference caching enabled DataObject + hashDataInputs.addAll(((SignRequest) stalRequest).getHashDataInput()); + } else if (stalRequest instanceof QuitRequest) { + log.trace("Received QuitRequest, do not wait for responses."); + log.trace("notifying request consumers"); + requests.notify(); + return new ArrayList(); + } + } catch (TranslationException ex) { + log.error(ex.getMessage() + ", send QUIT"); + requests.clear(); + QuitRequestType reqT = of.createQuitRequestType(); + JAXBElement req = of.createGetNextRequestResponseTypeQuitRequest(reqT); + requests.add(req); + log.trace("notifying request consumers"); + requests.notify(); + return new ArrayList(); + } + } + + +// if (stalRequest instanceof SignRequest) { +// log.trace("Received SignRequest, keep HashDataInput."); +// SignRequestType reqT = of.createSignRequestType(); +// reqT.setKeyIdentifier(((SignRequest) stalRequest).getKeyIdentifier()); +// reqT.setSignedInfo(((SignRequest) stalRequest).getSignedInfo()); +// JAXBElement req = of.createGetNextRequestResponseTypeSignRequest(reqT); +// requests.add(req); +// //DataObjectHashDataInput with reference caching enabled DataObject +// hashDataInputs.addAll(((SignRequest) stalRequest).getHashDataInput()); +// break; +// } else if (stalRequest instanceof InfoboxReadRequest) { +// log.trace("Received InfoboxReadRequest"); +// InfoboxReadRequestType reqT = new InfoboxReadRequestType(); +// reqT.setInfoboxIdentifier(((InfoboxReadRequest) stalRequest).getInfoboxIdentifier()); +// reqT.setDomainIdentifier(((InfoboxReadRequest) stalRequest).getDomainIdentifier()); +// JAXBElement req = of.createGetNextRequestResponseTypeInfoboxReadRequest(reqT); +// requests.add(req); +// } else if (stalRequest instanceof QuitRequest) { +// log.trace("Received QuitRequest, do not wait for responses."); +// QuitRequestType reqT = of.createQuitRequestType(); +// JAXBElement req = of.createGetNextRequestResponseTypeQuitRequest(reqT); +// requests.add(req); +// log.trace("notifying request consumers"); +// requests.notify(); +// return new ArrayList(); +// } else { +// log.error("Received unsupported STAL request: " + stalRequest.getClass().getName() + ", send QUIT"); +// requests.clear(); +// QuitRequestType reqT = of.createQuitRequestType(); +// JAXBElement req = of.createGetNextRequestResponseTypeQuitRequest(reqT); +// requests.add(req); +// log.trace("notifying request consumers"); +// requests.notify(); +// return new ArrayList(); +// } +// } + log.trace("notifying request consumers"); + requests.notify(); + } + + synchronized (responses) { + long beforeWait = System.currentTimeMillis(); + while (responses.isEmpty()) { + log.trace("waiting to consume response"); + responses.wait(timeout); + if (System.currentTimeMillis() - beforeWait >= timeout) { + log.warn("timeout while waiting to consume response, cleanup requests"); + requests.clear(); + hashDataInputs.clear(); + return Collections.singletonList((STALResponse) new ErrorResponse(ERR_4500)); + } + } + log.trace("consuming responses"); + List stalResponses = new ArrayList(); + try { + for (JAXBElement resp : responses) { + STALResponse stalResp = translator.translate(resp); + stalResponses.add(stalResp); + } + } catch (TranslationException ex) { + log.error(ex.getMessage() + ", return ErrorResponse (4000)"); + ErrorResponse stalResp = new ErrorResponse(4000); + stalResp.setErrorMessage(ex.getMessage()); + stalResponses = Collections.singletonList((STALResponse) stalResp); + } + + responses.clear(); + log.trace("notifying response producers"); + responses.notify(); + + return stalResponses; + } + } catch (InterruptedException ex) { + log.warn("interrupt in handleRequest(): " + ex.getMessage()); + interrupted = true; + return null; + } + } + + @Override + public List> connect() { + if (interrupted) { + return null; + } + try { + synchronized (requests) { + long beforeWait = System.currentTimeMillis(); + while (requests.isEmpty()) { + log.trace("waiting to consume request"); + requests.wait(timeout); + if (System.currentTimeMillis() - beforeWait >= timeout) { + log.warn("timeout while waiting to consume request"); + return createSingleQuitRequest(); + } + } + log.trace("don't consume request now, leave for further connect calls"); + return requests; + } + } catch (InterruptedException ex) { + log.warn("interrupt in nextRequest(): " + ex.getMessage()); + interrupted = true; + return null; + } + } + + /** + * This method is thread-safe, except for + * an 'initial' call to nextRequest(null) followed by a + * 'zombie' call to nextRequest(notNull). + * This case (per design) leads to a timeout of the original call. + * (synchronizing the entire method does not + * hinder the zombie to interrupt two consecutive nextRequest() calls.) + * + * @param responses + * @return QUIT if expected responses are not provided + */ + @Override + public List> nextRequest(List> resps) { + if (interrupted) { + return null; + } + try { + synchronized (requests) { + log.trace("received responses, now consume request"); + if (requests.size() != 0) { + requests.clear(); + } else { + log.warn("requests queue is empty, response might have already been produced previously "); + // return QUIT? + } + } + + synchronized (responses) { + if (resps != null && resps.size() > 0) { + long beforeWait = System.currentTimeMillis(); + while (!responses.isEmpty()) { + log.trace("waiting to produce response"); + responses.wait(timeout); + if (System.currentTimeMillis() - beforeWait >= timeout) { + log.warn("timeout while waiting to produce response"); + return createSingleQuitRequest(); + } + } + log.trace("produce response"); + responses.addAll(resps); + //reset HashDataInputCallback iff SignResponse + if (log.isTraceEnabled()) { + for (JAXBElement response : resps) { + log.trace("Received STAL response: " + response.getValue().getClass().getName()); + } + } + log.trace("notifying response consumers"); + responses.notify(); + } else { + log.error("Received NextRequest without responses, return QUIT"); + return createSingleQuitRequest(); + } + } + + synchronized (requests) { + long beforeWait = System.currentTimeMillis(); + while (requests.isEmpty()) { + log.trace("waiting to consume request"); + requests.wait(timeout); + if (System.currentTimeMillis() - beforeWait >= timeout) { + log.warn("timeout while waiting to consume request"); + return createSingleQuitRequest(); + } + } + log.trace("don't consume request now, but on next response delivery"); + return requests; + } + } catch (InterruptedException ex) { + log.warn("interrupt in nextRequest(): " + ex.getMessage()); + interrupted = true; + return null; + } + } + + @Override + public List getHashDataInput() { + synchronized (requests) { + log.trace("return " + hashDataInputs.size() + " current HashDataInput(s) "); + return hashDataInputs; + } + } + + private List> createSingleQuitRequest() { + QuitRequestType quitT = of.createQuitRequestType(); + JAXBElement quit = of.createGetNextRequestResponseTypeQuitRequest(quitT); + ArrayList> l = new ArrayList>(); + l.add(quit); + return l; + } +} diff --git a/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALServiceImpl.java b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALServiceImpl.java new file mode 100644 index 00000000..c8ab280f --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALServiceImpl.java @@ -0,0 +1,386 @@ + /* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.stal.service.impl; + +import at.buergerkarte.namespaces.cardchannel.service.CommandAPDUType; +import at.buergerkarte.namespaces.cardchannel.service.ScriptType; +import at.gv.egiz.bku.binding.BindingProcessor; +import at.gv.egiz.bku.binding.BindingProcessorManager; +import at.gv.egiz.bku.binding.Id; +import at.gv.egiz.bku.binding.IdFactory; + +import at.gv.egiz.stal.HashDataInput; +import at.gv.egiz.stal.service.GetHashDataInputFault; +import at.gv.egiz.stal.service.STALPortType; +import at.gv.egiz.stal.service.types.ErrorResponseType; +import at.gv.egiz.stal.service.types.GetHashDataInputFaultType; +import at.gv.egiz.stal.service.types.GetHashDataInputResponseType; +import at.gv.egiz.stal.service.types.GetHashDataInputType; +import at.gv.egiz.stal.service.types.GetNextRequestResponseType; +import at.gv.egiz.stal.service.types.GetNextRequestType; +import at.gv.egiz.stal.service.types.InfoboxReadRequestType; +import at.gv.egiz.stal.service.types.QuitRequestType; +import at.gv.egiz.stal.service.types.RequestType; +import at.gv.egiz.stal.service.types.ResponseType; +import at.gv.egiz.stal.service.types.SignRequestType; +import at.gv.egiz.stal.service.types.GetHashDataInputType.Reference; +//import at.gv.egiz.stal.service.types.GetHashDataInputResponseType.Reference; + +import com.sun.xml.ws.developer.UsesJAXBContext; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.Charset; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import javax.annotation.Resource; +import javax.jws.WebService; +import javax.servlet.ServletContext; +import javax.xml.bind.JAXBElement; +import javax.xml.ws.WebServiceContext; +import javax.xml.ws.handler.MessageContext; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author clemens + */ +@WebService(endpointInterface = "at.gv.egiz.stal.service.STALPortType", portName="STALPort", serviceName="STALService", targetNamespace="http://www.egiz.gv.at/wsdl/stal", wsdlLocation="WEB-INF/wsdl/stal.wsdl") +@UsesJAXBContext(STALXJAXBContextFactory.class) +public class STALServiceImpl implements STALPortType { + + public static final String BINDING_PROCESSOR_MANAGER = "bindingProcessorManager"; + public static final Id TEST_SESSION_ID = IdFactory.getInstance().createId("TestSession"); + protected static final Log log = LogFactory.getLog(STALServiceImpl.class); + + + static { + if (log.isTraceEnabled()) { + log.trace("enabling webservice communication dump"); + System.setProperty("com.sun.xml.ws.transport.http.HttpAdapter.dump", "true"); + } else { + System.setProperty("com.sun.xml.ws.fault.SOAPFaultBuilder.disableCaptureStackTrace", "false"); + } + } + @Resource + protected WebServiceContext wsContext; + protected IdFactory idF = IdFactory.getInstance(); + /** JAXB ObjectFactories */ + private at.gv.egiz.stal.service.types.ObjectFactory stalObjFactory = new at.gv.egiz.stal.service.types.ObjectFactory(); + /** don't confuse with at.buergerkarte.namespaces.cardchannel */ + private at.buergerkarte.namespaces.cardchannel.service.ObjectFactory ccObjFactory = new at.buergerkarte.namespaces.cardchannel.service.ObjectFactory(); + + @Override + public GetNextRequestResponseType connect(String sessId) { + + if (sessId == null) { + throw new NullPointerException("No session id provided"); + } + + Id sessionId = idF.createId(sessId); + + if (log.isDebugEnabled()) { + log.debug("Received Connect [" + sessionId + "]"); + } + + if (TEST_SESSION_ID.equals(sessionId)) { + return getTestSessionNextRequestResponse(null); + } + + GetNextRequestResponseType response = new GetNextRequestResponseType(); + response.setSessionId(sessionId.toString()); + + STALRequestBroker stal = getStal(sessionId); + + if (stal != null) { + + List> requestsOut = ((STALRequestBroker) stal).connect(); + response.getInfoboxReadRequestOrSignRequestOrQuitRequest().addAll(requestsOut); + + if (log.isDebugEnabled()) { + StringBuilder sb = new StringBuilder("Returning initial GetNextRequestResponse ["); + sb.append(sessionId.toString()); + sb.append("] containing "); + sb.append(requestsOut.size()); + sb.append(" requests: "); + for (JAXBElement reqOut : requestsOut) { + sb.append(reqOut.getValue().getClass()); + sb.append(' '); + } + log.debug(sb.toString()); + } + } else { + log.error("Failed to get STAL for session " + sessionId + ", returning QuitRequest"); + QuitRequestType quitT = stalObjFactory.createQuitRequestType(); + JAXBElement quit = stalObjFactory.createGetNextRequestResponseTypeQuitRequest(quitT); + response.getInfoboxReadRequestOrSignRequestOrQuitRequest().add(quit); + } + return response; + } + + @Override + public GetNextRequestResponseType getNextRequest(GetNextRequestType request) { + + if (request.getSessionId() == null) { + throw new NullPointerException("No session id provided"); + } + + Id sessionId = idF.createId(request.getSessionId()); + + List> responsesIn = request.getInfoboxReadResponseOrSignResponseOrErrorResponse(); +// List responsesIn = request.getInfoboxReadResponseOrSignResponseOrErrorResponse();//getResponse(); + + if (log.isDebugEnabled()) { + StringBuilder sb = new StringBuilder("Received GetNextRequest ["); + sb.append(sessionId.toString()); + sb.append("] containing "); + sb.append(responsesIn.size()); + sb.append(" responses: "); + for (JAXBElement respIn : responsesIn) { + sb.append(respIn.getValue().getClass()); + sb.append(' '); + } + log.debug(sb.toString()); + } + + if (TEST_SESSION_ID.equals(sessionId)) { + return getTestSessionNextRequestResponse(responsesIn); + } + + GetNextRequestResponseType response = new GetNextRequestResponseType(); + response.setSessionId(sessionId.toString()); + + STALRequestBroker stal = getStal(sessionId); + + if (stal != null) { + + List> requestsOut = ((STALRequestBroker) stal).nextRequest(responsesIn); + response.getInfoboxReadRequestOrSignRequestOrQuitRequest().addAll(requestsOut); + + if (log.isDebugEnabled()) { + StringBuilder sb = new StringBuilder("Returning GetNextRequestResponse ["); + sb.append(sessionId.toString()); + sb.append("] containing "); + sb.append(requestsOut.size()); + sb.append(" requests: "); + for (JAXBElement reqOut : requestsOut) { + sb.append(reqOut.getValue().getClass()); + sb.append(' '); + } + log.debug(sb.toString()); + } + } else { + log.error("Failed to get STAL for session " + sessionId + ", returning QuitRequest"); + QuitRequestType quitT = stalObjFactory.createQuitRequestType(); + JAXBElement quit = stalObjFactory.createGetNextRequestResponseTypeQuitRequest(quitT); + response.getInfoboxReadRequestOrSignRequestOrQuitRequest().add(quit); + } + return response; + } + + @Override + public GetHashDataInputResponseType getHashDataInput(GetHashDataInputType request) throws GetHashDataInputFault { + + if (request.getSessionId() == null) { + throw new NullPointerException("No session id provided"); + } + + Id sessionId = idF.createId(request.getSessionId()); + + if (log.isDebugEnabled()) { + log.debug("Received GetHashDataInputRequest for session " + sessionId + " containing " + request.getReference().size() + " reference(s)"); + } + + if (TEST_SESSION_ID.equals(sessionId)) { + return getTestSessionHashDataInputResponse(request.getReference()); + } + + GetHashDataInputResponseType response = new GetHashDataInputResponseType(); + response.setSessionId(sessionId.toString()); + + STALRequestBroker stal = getStal(sessionId); + + if (stal != null) { + List hashDataInputs = stal.getHashDataInput(); + + if (hashDataInputs != null) { + + Map hashDataIdMap = new HashMap(); + for (HashDataInput hdi : hashDataInputs) { + if (log.isTraceEnabled()) { + log.trace("Provided HashDataInput for reference " + hdi.getReferenceId()); + } + hashDataIdMap.put(hdi.getReferenceId(), hdi); + } + + List reqRefs = request.getReference(); + for (GetHashDataInputType.Reference reqRef : reqRefs) { + String reqRefId = reqRef.getID(); + HashDataInput reqHdi = hashDataIdMap.get(reqRefId); + if (reqHdi == null) { + String msg = "Failed to resolve HashDataInput for reference " + reqRefId; + log.error(msg); + GetHashDataInputFaultType faultInfo = new GetHashDataInputFaultType(); + faultInfo.setErrorCode(1); + faultInfo.setErrorMessage(msg); + throw new GetHashDataInputFault(msg, faultInfo); + } + + InputStream hashDataIS = reqHdi.getHashDataInput(); + if (hashDataIS == null) { + //HashDataInput not cached? + String msg = "Failed to obtain HashDataInput for reference " + reqRefId + ", reference not cached"; + log.error(msg); + GetHashDataInputFaultType faultInfo = new GetHashDataInputFaultType(); + faultInfo.setErrorCode(1); + faultInfo.setErrorMessage(msg); + throw new GetHashDataInputFault(msg, faultInfo); + } + ByteArrayOutputStream baos = null; + try { + if (log.isDebugEnabled()) { + log.debug("Resolved HashDataInput " + reqRefId + " (" + reqHdi.getMimeType() + ";charset=" + reqHdi.getEncoding() + ")"); + } + baos = new ByteArrayOutputStream(hashDataIS.available()); + int c; + while ((c = hashDataIS.read()) != -1) { + baos.write(c); + } + GetHashDataInputResponseType.Reference ref = new GetHashDataInputResponseType.Reference(); + ref.setID(reqRefId); + ref.setMimeType(reqHdi.getMimeType()); + ref.setEncoding(reqHdi.getEncoding()); + ref.setFilename(reqHdi.getFilename()); + ref.setValue(baos.toByteArray()); + response.getReference().add(ref); + } catch (IOException ex) { + String msg = "Failed to get HashDataInput for reference " + reqRefId; + log.error(msg, ex); + GetHashDataInputFaultType faultInfo = new GetHashDataInputFaultType(); + faultInfo.setErrorCode(1); + faultInfo.setErrorMessage(msg); + throw new GetHashDataInputFault(msg, faultInfo, ex); + } finally { + try { + baos.close(); + } catch (IOException ex) { + } + } + } + return response; + } else { + String msg = "Failed to resolve any HashDataInputs for session " + sessionId; + log.error(msg); + GetHashDataInputFaultType faultInfo = new GetHashDataInputFaultType(); + faultInfo.setErrorCode(1); + faultInfo.setErrorMessage(msg); + throw new GetHashDataInputFault(msg, faultInfo); + } + } else { + String msg = "Session timeout"; //Failed to get STAL for session " + sessionId; + log.error(msg + " " + sessionId); + GetHashDataInputFaultType faultInfo = new GetHashDataInputFaultType(); + faultInfo.setErrorCode(1); + faultInfo.setErrorMessage(msg); + throw new GetHashDataInputFault(msg, faultInfo); + } + } + + private STALRequestBroker getStal(Id sessionId) { + if (log.isTraceEnabled()) { + log.trace("resolve STAL for session " + sessionId); + } + MessageContext mCtx = wsContext.getMessageContext(); + ServletContext sCtx = (ServletContext) mCtx.get(MessageContext.SERVLET_CONTEXT); + BindingProcessorManager bpMgr = (BindingProcessorManager) sCtx.getAttribute(BINDING_PROCESSOR_MANAGER); + BindingProcessor bp = bpMgr.getBindingProcessor(sessionId); + return (bp == null) ? null : (bp.isFinished() ? null : (STALRequestBroker) bp.getSTAL()); + } + + private GetNextRequestResponseType getTestSessionNextRequestResponse(List> responsesIn) { + GetNextRequestResponseType response = new GetNextRequestResponseType(); + response.setSessionId(TEST_SESSION_ID.toString()); + + List> reqs = response.getInfoboxReadRequestOrSignRequestOrQuitRequest(); + + if (responsesIn == null) { + log.info("[TestSession] CONNECT"); +// addTestCardChannelRequest(reqs); +// addTestInfoboxReadRequest("IdentityLink", reqs); +// addTestInfoboxReadRequest("SecureSignatureKeypair", reqs); +// addTestInfoboxReadRequest("CertifiedKeypair", reqs); + addTestSignatureRequests("SecureSignatureKeypair", reqs); + } else if (responsesIn != null && responsesIn.size() > 0 && responsesIn.get(0).getValue() instanceof ErrorResponseType) { + log.info("[TestSession] received ErrorResponse, return QUIT request"); + QuitRequestType quitT = stalObjFactory.createQuitRequestType(); + reqs.add(stalObjFactory.createGetNextRequestResponseTypeQuitRequest(quitT)); + } else { + log.info("[TestSession] received " + responsesIn.size() + " response(s), return QUIT" ); + QuitRequestType quitT = stalObjFactory.createQuitRequestType(); + reqs.add(stalObjFactory.createGetNextRequestResponseTypeQuitRequest(quitT)); + } + return response; + } + + + private GetHashDataInputResponseType getTestSessionHashDataInputResponse(List references) { + log.debug("[TestSession] received GET_HASHDATAINPUT"); + + GetHashDataInputResponseType response = new GetHashDataInputResponseType(); + response.setSessionId(TEST_SESSION_ID.toString()); + + for (Reference reference : references) { + String refId = reference.getID(); + log.debug("[TestSession] adding hashdata input for " + refId); + GetHashDataInputResponseType.Reference ref = new GetHashDataInputResponseType.Reference(); + ref.setID(refId); + ref.setMimeType(TestSignatureData.HASHDATA_MIMETYPES.get(refId)); //todo resolve from TestSignatureData + ref.setValue(TestSignatureData.HASHDATA_INPUT.get(refId)); + ref.setEncoding(TestSignatureData.ENCODING); + response.getReference().add(ref); + } + return response; + } + + private void addTestCardChannelRequest(List> requestList) { + log.info("[TestSession] add CARDCHANNEL request"); + ScriptType scriptT = ccObjFactory.createScriptType(); + CommandAPDUType cmd = ccObjFactory.createCommandAPDUType(); + cmd.setValue("TestSession CardChannelCMD 1234".getBytes()); + scriptT.getResetOrCommandAPDUOrVerifyAPDU().add(cmd); + requestList.add(ccObjFactory.createScript(scriptT)); + } + + private void addTestInfoboxReadRequest(String infoboxIdentifier, List> requestList) { + log.info("[TestSession] add READ "+ infoboxIdentifier + " request"); + InfoboxReadRequestType ibrT = stalObjFactory.createInfoboxReadRequestType(); + ibrT.setInfoboxIdentifier(infoboxIdentifier); + requestList.add(stalObjFactory.createGetNextRequestResponseTypeInfoboxReadRequest(ibrT)); + } + + private void addTestSignatureRequests(String keyIdentifier, List> reqs) { + log.info("[TestSession] add SIGN " + keyIdentifier + " request"); + SignRequestType sigT = stalObjFactory.createSignRequestType(); + sigT.setKeyIdentifier(keyIdentifier); + sigT.setSignedInfo(TestSignatureData.SIGNED_INFO.get(1)); //select! + reqs.add(stalObjFactory.createGetNextRequestResponseTypeSignRequest(sigT)); + } + +} diff --git a/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALXJAXBContextFactory.java b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALXJAXBContextFactory.java new file mode 100644 index 00000000..9caf950f --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALXJAXBContextFactory.java @@ -0,0 +1,61 @@ +/* + * Copyright 2008 Federal Chancellery Austria and + * Graz University of Technology + * + * 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 at.gv.egiz.stal.service.impl; + +import com.sun.xml.bind.api.JAXBRIContext; +import com.sun.xml.bind.api.TypeReference; +import com.sun.xml.ws.api.model.SEIModel; +import com.sun.xml.ws.developer.JAXBContextFactory; +import java.util.ArrayList; +import java.util.List; +import javax.xml.bind.JAXBException; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * + * @author Clemens Orthacker + */ +public class STALXJAXBContextFactory implements JAXBContextFactory { + + private static final Log log = LogFactory.getLog(STALXJAXBContextFactory.class); + + @Override + public JAXBRIContext createJAXBContext(SEIModel sei, List classesToBind, List typeReferences) throws JAXBException { + if (log.isTraceEnabled()) { + log.trace("JAXBContext seed for SEI " + sei.getTargetNamespace() + ":"); + for (Class class1 : classesToBind) { + log.trace(" " + class1); + } + for (TypeReference typeReference : typeReferences) { + log.trace(" typeRef " + typeReference.tagName + " -> " + typeReference.type); + } + } + List classes = new ArrayList(); + classes.addAll(classesToBind); + Class ccOF = at.buergerkarte.namespaces.cardchannel.service.ObjectFactory.class; + if (!classes.contains(ccOF)) { + log.debug("adding " + ccOF + " to JAXBContext seed"); + classes.add(ccOF); + } + + //TODO add typeReference? + + return JAXBRIContext.newInstance(classes.toArray(new Class[classes.size()]), + typeReferences, null, sei.getTargetNamespace(), false, null); + } +} diff --git a/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/TestSignatureData.java b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/TestSignatureData.java new file mode 100644 index 00000000..2f58bb3d --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/TestSignatureData.java @@ -0,0 +1,47 @@ +package at.gv.egiz.stal.service.impl; + +import java.io.UnsupportedEncodingException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +public final class TestSignatureData { + + protected final static Log log = LogFactory.getLog(TestSignatureData.class); + + public static final String[] ID = new String[] {"signed-data-reference-0-1214921968-27971781-24309", "signed-data-reference-1"}; + public static final String ENCODING = "UTF-8"; + + public static final Map HASHDATA_INPUT = new HashMap(); + static { + try { + HASHDATA_INPUT.put(ID[0], "Ich bin ein einfacher Text. lläöü߀".getBytes(ENCODING)); + HASHDATA_INPUT.put(ID[1], "2te referenz".getBytes(ENCODING)); + } catch (UnsupportedEncodingException ex) { + log.error("failed to init signature test data", ex); + } + } + public static final Map HASHDATA_MIMETYPES = new HashMap(); + static { + HASHDATA_MIMETYPES.put(ID[0], "text/plain"); + HASHDATA_MIMETYPES.put(ID[1], "any/mime-type"); + } + +// private static final byte[] signedInfo = " id('signed-data-object-0-1214921968-27971781-13578')/node() H1IePEEfGQ2SG03H6LTzw1TpCuM=yV6Q+I60buqR4mMaxA7fi+CV35A=".getBytes(); +// private static final byte[] signedInfo2Ref = " id('signed-data-object-0-1214921968-27971781-13578')/node() H1IePEEfGQ2SG03H6LTzw1TpCuM= id('signed-data-object-1')/node() H1IePEEfGQ2SG03H6LTzw1TpCuM=yV6Q+I60buqR4mMaxA7fi+CV35A=".getBytes(); +// private static final String signedInfo2Ref = " id('signed-data-object-1')/node() H1IePEEfGQ2SG03H6LTzw1TpCuM="; + /** + * SIGNED_INFO[0] contains reference ID[0] + * SIGNED_INFO[1] contains reference ID[0] and ID[1] + */ + public static final List SIGNED_INFO = new ArrayList(); + static { + SIGNED_INFO.add(" id('signed-data-object-0-1214921968-27971781-13578')/node() H1IePEEfGQ2SG03H6LTzw1TpCuM=yV6Q+I60buqR4mMaxA7fi+CV35A=".getBytes()); + SIGNED_INFO.add(" id('signed-data-object-0-1214921968-27971781-13578')/node() H1IePEEfGQ2SG03H6LTzw1TpCuM= id('signed-data-object-1')/node() H1IePEEfGQ2SG03H6LTzw1TpCuM=yV6Q+I60buqR4mMaxA7fi+CV35A=".getBytes()); + } + +} diff --git a/mocca-1.2.11/BKUOnline/src/main/policy/50mocca.policy b/mocca-1.2.11/BKUOnline/src/main/policy/50mocca.policy new file mode 100644 index 00000000..2d6bc13d --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/policy/50mocca.policy @@ -0,0 +1,319 @@ +// Copyright 2008 Federal Chancellery Austria and +// Graz University of Technology +// +// 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. +// +// +// ========================================================================= +// || IMPORTANT: REVIEW AND ADAPT TO YOUR NEEDS PRIOR TO INSTALLATION +// ========================================================================= +// +// (set -Djava.security.debug=access,failure and search for "FAILED") +// +// +// ========== MOCCA CODE PERMISSIONS ======================================= +// +// replace ${catalina.base}/webapps/bkuonline +// with ${catalina.base}/webapps/ +// replace ${catalina.base}/work/Catalina/localhost/bkuonline +// with ${catalina.base}/work/Catalina/localhost/ (the path to the compiled JSPs, excl. package dir: org/apache/jsp/) +// replace version info in utils-1.2.10.jar and bkucommon-1.2.10.jar +// with current version +// replace apps.egiz.gv.at +// with +// replace localhost:8080 +// with +// replace www.xslt-stylesheet-include-url.org:80 +// with +// replace ../conf/secret.xml +// with +// +// replace www.a-trust.at and ksp.ecard.sozialversicherung.gv.at +// with +// replace ldap.a-trust.at:389 and ocsp.ecard.sozialversicherung.at:80 +// with (OCSP, CRLs) +// + +// =========== container grants required by MOCCA +// +grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" { + permission java.lang.RuntimePermission "accessClassInPackage.sun.util.logging.resources"; + permission java.io.FilePermission "${catalina.base}/webapps/bkuonline/WEB-INF/classes/logging.properties", "read"; +}; + +grant codeBase "file:${catalina.base}/work/Catalina/localhost/bkuonline" { + permission java.io.FilePermission "/helpfiles/-", "read"; + permission java.lang.RuntimePermission "defineClassInPackage.org.apache.jasper.runtime"; +}; + +// =========== MOCCA grants +// +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/classes/-" { + permission java.security.AllPermission; +// permission java.io.FilePermission "${catalina.base}/logs", "read, write"; +// permission java.io.FilePermission "${catalina.base}/logs/*", "read, write"; +// permission java.io.FilePermission "${catalina.base}/logs/*", "delete"; +// permission java.util.PropertyPermission "com.sun.xml.ws.fault.SOAPFaultBuilder.disableCaptureStackTrace", "write"; +// permission java.util.PropertyPermission "com.sun.xml.ws.transport.http.HttpAdapter.dump", "write"; +}; + +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/-" { + // the log4j configuration might want to write logs to ${catalina.base}/logs/bkuonline.log + permission java.io.FilePermission "${catalina.base}/logs", "read, write"; + permission java.io.FilePermission "${catalina.base}/logs/*", "read, write"; + permission java.io.FilePermission "${catalina.base}/logs/*", "delete"; + +}; + +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/utils-1.2.10.jar" { + permission java.util.PropertyPermission "*", "read"; + permission java.net.SocketPermission "www.a-trust.at:80", "connect, resolve"; + permission java.net.SocketPermission "ksp.ecard.sozialversicherung.gv.at:80", "connect,resolve"; +// permission java.net.SocketPermission "localhost:8080", "connect, resolve"; + permission java.net.SocketPermission "www.xslt-stylesheet-include-url.org:80", "connect, resolve"; + permission java.lang.RuntimePermission "accessDeclaredMembers"; + permission java.lang.reflect.ReflectPermission "suppressAccessChecks"; +}; + +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/bkucommon-1.2.10.jar" { + permission java.io.FilePermission "${catalina.base}/webapps/bkuonline/WEB-INF/classes/at/gv/egiz/bku/certs/certStore", "write"; + permission java.io.FilePermission "${catalina.base}/webapps/bkuonline/WEB-INF/classes/at/gv/egiz/bku/certs/certStore/-", "write"; + permission java.io.FilePermission "${catalina.base}/webapps/bkuonline/WEB-INF/classes/at/gv/egiz/bku/certs/certStore/toBeAdded/-", "delete"; + permission java.io.FilePermission "../conf/secret.xml", "read"; + permission java.net.SocketPermission "apps.egiz.gv.at:443", "connect, resolve"; + permission java.net.SocketPermission "www.a-trust.at:80", "connect, resolve"; + permission java.net.SocketPermission "ksp.ecard.sozialversicherung.gv.at:80", "connect,resolve"; + permission java.net.SocketPermission "ldap.a-trust.at:389", "connect, resolve"; + permission java.net.SocketPermission "ocsp.ecard.sozialversicherung.at:80", "connect, resolve"; +// permission java.net.SocketPermission "localhost:8080", "connect, resolve"; + permission java.net.SocketPermission "www.xslt-stylesheet-include-url.org:80", "connect, resolve"; + permission java.net.NetPermission "specifyStreamHandler"; + permission java.util.PropertyPermission "*", "read, write"; + permission java.security.SecurityPermission "insertProvider.IAIK"; + permission java.security.SecurityPermission "putProviderProperty.IAIK"; + permission java.security.SecurityPermission "removeProvider.IAIK"; + permission java.security.SecurityPermission "insertProvider.IAIK_ECC"; + permission java.security.SecurityPermission "putProviderProperty.IAIK_ECC"; + permission java.security.SecurityPermission "insertProvider.XSECT"; + permission java.security.SecurityPermission "putProviderProperty.XSECT"; + permission java.security.SecurityPermission "insertProvider.STAL"; + permission java.security.SecurityPermission "putProviderProperty.STAL"; + // XMLDSig is moved backwards by XSECT + permission java.security.SecurityPermission "insertProvider.XMLDSig"; + permission java.security.SecurityPermission "removeProvider.XMLDSig"; + permission java.lang.RuntimePermission "accessDeclaredMembers"; + permission java.lang.RuntimePermission "setFactory"; + permission java.lang.RuntimePermission "getProtectionDomain"; + permission java.lang.RuntimePermission "accessClassInPackage.sun.net.www.protocol.ldap"; + permission java.lang.RuntimePermission "modifyThread"; + permission java.lang.reflect.ReflectPermission "suppressAccessChecks"; +}; + +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/iaik_jce_full_signed-3.16.jar" { + permission java.util.PropertyPermission "*", "read, write"; + permission java.security.SecurityPermission "insertProvider.IAIK"; + permission java.security.SecurityPermission "putProviderProperty.IAIK"; + permission java.security.SecurityPermission "removeProvider.IAIK"; + permission java.net.SocketPermission "ldap.a-trust.at:389", "connect, resolve"; + permission java.net.SocketPermission "ocsp.ecard.sozialversicherung.at:80", "connect, resolve"; +}; + +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/iaik_ecc_signed-2.15.jar" { + permission java.security.SecurityPermission "insertProvider.IAIK_ECC"; + permission java.security.SecurityPermission "putProviderProperty.IAIK_ECC"; +}; + +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/iaik_xsect-1.14.jar" { + permission java.util.PropertyPermission "*", "read, write"; + permission java.security.SecurityPermission "insertProvider.IAIK"; + permission java.security.SecurityPermission "putProviderProperty.IAIK"; + permission java.security.SecurityPermission "removeProvider.IAIK"; + permission java.security.SecurityPermission "insertProvider.XSECT"; + permission java.security.SecurityPermission "putProviderProperty.XSECT"; + permission java.security.SecurityPermission "insertProvider.XMLDSig"; + permission java.security.SecurityPermission "removeProvider.XMLDSig"; +}; + +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/iaik_pki-1.0-MOCCA.jar" { + permission java.io.FilePermission "${catalina.base}/webapps/bkuonline/WEB-INF/classes/at/gv/egiz/bku/certs/certStore", "write"; + permission java.io.FilePermission "${catalina.base}/webapps/bkuonline/WEB-INF/classes/at/gv/egiz/bku/certs/certStore/-", "write"; + permission java.io.FilePermission "${catalina.base}/webapps/bkuonline/WEB-INF/classes/at/gv/egiz/bku/certs/certStore/toBeAdded/-", "delete"; + permission java.net.SocketPermission "www.a-trust.at:80", "connect, resolve"; + permission java.net.SocketPermission "ldap.a-trust.at:389", "connect, resolve"; + permission java.net.SocketPermission "ocsp.ecard.sozialversicherung.at:80", "connect, resolve"; + permission java.net.NetPermission "specifyStreamHandler"; + permission java.lang.RuntimePermission "accessClassInPackage.sun.net.www.protocol.ldap"; +}; + +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/xalan-2.7.1.jar" { + permission java.io.FilePermission "${java.home}/lib/xalan.properties", "read"; + permission java.util.PropertyPermission "*", "read"; + permission java.lang.RuntimePermission "getClassLoader"; +}; + +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/serializer-2.7.1.jar" { + permission java.util.PropertyPermission "*", "read"; + permission java.lang.RuntimePermission "getClassLoader"; +}; + +// allow xsl:include from the specified URL +grant codeBase "jar:file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/xalan-2.7.1.jar!/org/apache/xalan/processor/-" { + permission java.net.SocketPermission "www.xslt-stylesheet-include-url.org:80", "connect, resolve"; +}; + +// allow XSLT document function to reference the specified URL +grant codeBase "jar:file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/xalan-2.7.1.jar!/org/apache/xalan/xsltc/dom/LoadDocument.class" { + permission java.io.FilePermission "../conf/secret.xml", "read"; +}; + +// use tomcat/jre endorsed xerces instead +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/xercesImpl-2.9.1.jar" { + permission java.io.FilePermission "${java.home}/lib/xerces.properties", "read"; +// permission java.io.FilePermission "../conf/secret.xml", "read"; +// permission java.net.SocketPermission "www.xslt-stylesheet-include-url.org:80", "connect, resolve"; + permission java.util.PropertyPermission "*", "read"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina"; + permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.*"; + permission java.lang.RuntimePermission "getClassLoader"; + permission java.lang.RuntimePermission "accessDeclaredMembers"; +}; + +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/commons-logging-1.1.1.jar" { + permission java.util.PropertyPermission "org.apache.commons.logging.*", "read"; + permission java.util.PropertyPermission "log4j.*", "read"; + permission java.util.PropertyPermission "catalina.base", "read"; + permission java.lang.RuntimePermission "getClassLoader"; + permission java.lang.RuntimePermission "defineClassInPackage.java.lang"; +}; + +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/log4j-1.2.12.jar" { + permission java.io.FilePermission "${catalina.base}/webapps/bkuonline/WEB-INF/classes/log4j.properties", "read"; + // allow log4j to read its own properties + permission java.util.PropertyPermission "log4j.*", "read"; + permission java.util.PropertyPermission "catalina.base", "read"; + permission java.lang.RuntimePermission "defineClassInPackage.java.lang"; +}; + +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/spring-core-2.5.5.jar" { + permission java.lang.RuntimePermission "accessDeclaredMembers"; + permission java.lang.RuntimePermission "modifyThread"; +}; +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/spring-web-2.5.5.jar" { + permission java.io.FilePermission "${catalina.base}/webapps/bkuonline/WEB-INF/classes/at/gv/egiz/bku/certs/certStore", "write"; + permission java.io.FilePermission "${catalina.base}/webapps/bkuonline/WEB-INF/classes/at/gv/egiz/bku/certs/certStore/-", "write"; + permission java.io.FilePermission "${catalina.base}/webapps/bkuonline/WEB-INF/classes/at/gv/egiz/bku/certs/certStore/toBeAdded/-", "delete"; + permission java.security.SecurityPermission "insertProvider.IAIK"; + permission java.security.SecurityPermission "putProviderProperty.IAIK"; + permission java.security.SecurityPermission "removeProvider.IAIK"; + permission java.security.SecurityPermission "insertProvider.IAIK_ECC"; + permission java.security.SecurityPermission "putProviderProperty.IAIK_ECC"; + permission java.security.SecurityPermission "insertProvider.XSECT"; + permission java.security.SecurityPermission "putProviderProperty.XSECT"; + permission java.security.SecurityPermission "insertProvider.STAL"; + permission java.security.SecurityPermission "putProviderProperty.STAL"; + permission java.security.SecurityPermission "insertProvider.XMLDSig"; + permission java.security.SecurityPermission "removeProvider.XMLDSig"; + permission java.util.PropertyPermission "*", "read, write"; + permission java.lang.RuntimePermission "accessDeclaredMembers"; + permission java.lang.RuntimePermission "modifyThread"; + permission java.lang.RuntimePermission "setFactory"; + permission java.lang.RuntimePermission "getProtectionDomain"; + permission java.lang.RuntimePermission "defineClassInPackage.java.lang"; + permission java.lang.reflect.ReflectPermission "suppressAccessChecks"; +}; +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/spring-beans-2.5.5.jar" { + permission java.io.FilePermission "${catalina.base}/webapps/bkuonline/WEB-INF/classes/at/gv/egiz/bku/certs/certStore", "write"; + permission java.io.FilePermission "${catalina.base}/webapps/bkuonline/WEB-INF/classes/at/gv/egiz/bku/certs/certStore/-", "write"; + permission java.io.FilePermission "${catalina.base}/webapps/bkuonline/WEB-INF/classes/at/gv/egiz/bku/certs/certStore/toBeAdded/-", "delete"; + permission java.security.SecurityPermission "insertProvider.IAIK"; + permission java.security.SecurityPermission "putProviderProperty.IAIK"; + permission java.security.SecurityPermission "removeProvider.IAIK"; + permission java.security.SecurityPermission "insertProvider.IAIK_ECC"; + permission java.security.SecurityPermission "putProviderProperty.IAIK_ECC"; + permission java.security.SecurityPermission "insertProvider.XSECT"; + permission java.security.SecurityPermission "putProviderProperty.XSECT"; + permission java.security.SecurityPermission "insertProvider.STAL"; + permission java.security.SecurityPermission "putProviderProperty.STAL"; + permission java.security.SecurityPermission "insertProvider.XMLDSig"; + permission java.security.SecurityPermission "removeProvider.XMLDSig"; + permission java.util.PropertyPermission "*", "read, write"; + permission java.lang.RuntimePermission "accessDeclaredMembers"; + permission java.lang.RuntimePermission "setFactory"; + permission java.lang.RuntimePermission "getProtectionDomain"; + permission java.lang.RuntimePermission "defineClassInPackage.java.lang"; + permission java.lang.reflect.ReflectPermission "suppressAccessChecks"; +}; +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/spring-context-2.5.5.jar" { + permission java.io.FilePermission "${catalina.base}/webapps/bkuonline/WEB-INF/classes/at/gv/egiz/bku/certs/certStore", "write"; + permission java.io.FilePermission "${catalina.base}/webapps/bkuonline/WEB-INF/classes/at/gv/egiz/bku/certs/certStore/-", "write"; + permission java.io.FilePermission "${catalina.base}/webapps/bkuonline/WEB-INF/classes/at/gv/egiz/bku/certs/certStore/toBeAdded/-", "delete"; + permission java.security.SecurityPermission "insertProvider.IAIK"; + permission java.security.SecurityPermission "putProviderProperty.IAIK"; + permission java.security.SecurityPermission "removeProvider.IAIK"; + permission java.security.SecurityPermission "insertProvider.IAIK_ECC"; + permission java.security.SecurityPermission "putProviderProperty.IAIK_ECC"; + permission java.security.SecurityPermission "insertProvider.XSECT"; + permission java.security.SecurityPermission "putProviderProperty.XSECT"; + permission java.security.SecurityPermission "insertProvider.STAL"; + permission java.security.SecurityPermission "putProviderProperty.STAL"; + permission java.security.SecurityPermission "insertProvider.XMLDSig"; + permission java.security.SecurityPermission "removeProvider.XMLDSig"; + permission java.util.PropertyPermission "*", "read, write"; + permission java.lang.RuntimePermission "accessDeclaredMembers"; + permission java.lang.RuntimePermission "modifyThread"; + permission java.lang.RuntimePermission "setFactory"; + permission java.lang.RuntimePermission "getProtectionDomain"; + permission java.lang.RuntimePermission "defineClassInPackage.java.lang"; + permission java.lang.reflect.ReflectPermission "suppressAccessChecks"; +}; + +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/jaxws-rt-2.1.5.jar" { + // need write access to set disableCaptureStackTrace and HttpAdapter.dump + permission java.util.PropertyPermission "com.sun.xml.ws.*", "read, write"; + permission java.util.PropertyPermission "com.sun.xml.bind.*", "read"; + permission java.util.PropertyPermission "javax.xml.soap.*", "read"; + permission java.util.PropertyPermission "javax.activation.*", "read"; + permission java.util.PropertyPermission "xml.catalog.*", "read"; + permission java.util.PropertyPermission "user.dir", "read"; + permission java.util.PropertyPermission "user.home", "read"; + permission java.io.FilePermission "${java.home}/lib/jaxm.properties", "read"; + permission java.io.FilePermission "${java.home}/lib/mailcap", "read"; + permission java.io.FilePermission "${user.home}/.mailcap", "read"; + permission java.io.FilePermission "basename", "read"; + permission java.io.FilePermission "${catalina.home}/bin/xcatalog", "read"; + permission java.lang.reflect.ReflectPermission "suppressAccessChecks"; + permission java.lang.RuntimePermission "accessDeclaredMembers"; + permission java.lang.RuntimePermission "accessClassInPackage.sun.util.logging.resources"; + permission java.lang.RuntimePermission "setContextClassLoader"; + permission javax.management.MBeanServerPermission "createMBeanServer"; + permission javax.management.MBeanPermission "com.sun.xml.ws.*", "registerMBean"; + permission javax.management.MBeanTrustPermission "register"; + permission java.lang.reflect.ReflectPermission "suppressAccessChecks"; +}; + +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/jaxb-impl-2.1.9.jar" { + permission java.lang.reflect.ReflectPermission "suppressAccessChecks"; + permission java.lang.RuntimePermission "accessDeclaredMembers"; + permission java.util.PropertyPermission "com.sun.xml.bind.v2.*", "read"; + permission java.util.PropertyPermission "user.dir", "read"; +}; + +grant codeBase "file:${catalina.base}/webapps/bkuonline/WEB-INF/lib/commons-httpclient-3.1.jar" { + permission java.util.PropertyPermission "*", "read"; +}; + +// ======== NETBEANS + +//grant codeBase "file:${catalina.base}/nblib/-" { +// permission java.security.AllPermission; +//}; \ No newline at end of file diff --git a/mocca-1.2.11/BKUOnline/src/main/resources/at/gv/egiz/bku/online/conf/accessControlConfig.xml b/mocca-1.2.11/BKUOnline/src/main/resources/at/gv/egiz/bku/online/conf/accessControlConfig.xml new file mode 100644 index 00000000..f8d1411c --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/resources/at/gv/egiz/bku/online/conf/accessControlConfig.xml @@ -0,0 +1,84 @@ + + + + + + + + + + + allow + + confirm + + + + + + + + + certifiedGovAgency + + allow + + confirm + + + anonymous + + Command + + + + + + + + certified + + IdentityLink + derived + + + allow + + confirm + + + anonymous + + IdentityLink + + + deny + + info + + + + allow + + + + + + diff --git a/mocca-1.2.11/BKUOnline/src/main/resources/at/gv/egiz/bku/online/conf/defaultConf.properties b/mocca-1.2.11/BKUOnline/src/main/resources/at/gv/egiz/bku/online/conf/defaultConf.properties new file mode 100644 index 00000000..b4ecfd86 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/resources/at/gv/egiz/bku/online/conf/defaultConf.properties @@ -0,0 +1,56 @@ +# +# Copyright 2008 Federal Chancellery Austria and +# Graz University of Technology +# +# 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. +# + + +# Configuration for online CCE + +# security manager configuration +AccessController.acceptUnmatched=false +AccessController.policyResource=classpath:at/gv/egiz/bku/online/conf/accessControlConfig.xml + +# ------------BEGIN SSL Config -------------------- +# SSL configuration for connections to external +# resources (e.g. data urls) + +# directory where certificates for +# chain constructions can be placed +#SSL.certDirectory=classpath:at/gv/egiz/bku/online/conf/certs/certStore +SSL.certDirectory=classpath:at/gv/egiz/bku/certs/certStore + + +# Directory where trusted CA +# certificates are placed +SSL.caDirectory=classpath:at/gv/egiz/bku/certs/trustStore +SSL.sslProtocol=TLS + +# warning do not set the following property to true +# its intended for debugging and testing only +SSL.disableAllChecks=false +#SSL.disableHostnameVerification=true + +# ------------ END SSL Config -------------------- + +#UserAgent=citizen-card-environment/1.2 MOCCA/1.2 +#UserAgent=citizen-card-environment/1.2 trustDeskbasic/2.8.1 + +ValidateHashDataInputs=true +AppletTimeout=300000 + +#HTTPProxyHost=taranis.iaik.tugraz.at +#HTTPProxyPort=8888 +DefaultSocketTimeout=200 +#SignatureLayout= \ No newline at end of file diff --git a/mocca-1.2.11/BKUOnline/src/main/resources/commons-logging.properties b/mocca-1.2.11/BKUOnline/src/main/resources/commons-logging.properties new file mode 100644 index 00000000..0d497b1b --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/resources/commons-logging.properties @@ -0,0 +1,16 @@ +# Copyright 2008 Federal Chancellery Austria and +# Graz University of Technology +# +# 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. + +org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger diff --git a/mocca-1.2.11/BKUOnline/src/main/resources/log4j.properties b/mocca-1.2.11/BKUOnline/src/main/resources/log4j.properties new file mode 100644 index 00000000..d4a03fe7 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/resources/log4j.properties @@ -0,0 +1,36 @@ +# Copyright 2008 Federal Chancellery Austria and +# Graz University of Technology +# +# 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. + + +#log4j.rootLogger=DEBUG, STDOUT, file +log4j.rootLogger=INFO, file +#log4j.logger.at.gv=TRACE + + +# STDOUT appender +log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender +log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout +#log4j.appender.STDOUT.layout.ConversionPattern=%5p | %d{dd HH:mm:ss,SSS} | %20c | %10t | %m%n +#log4j.appender.STDOUT.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n +log4j.appender.STDOUT.layout.ConversionPattern=%-5p | %t | %c %x - %m%n + +# FILE appender +log4j.appender.file=org.apache.log4j.RollingFileAppender +log4j.appender.file.maxFileSize=500KB +log4j.appender.file.maxBackupIndex=9 +log4j.appender.file.File=${catalina.base}/logs/bkuonline.log +log4j.appender.file.threshold=trace +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p | %t | %c{1}:%L - %m%n \ No newline at end of file diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/META-INF/MANIFEST.MF b/mocca-1.2.11/BKUOnline/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 00000000..ae3f7b68 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,6 @@ +Manifest-Version: 1.0 +Archiver-Version: Plexus Archiver +Created-By: Apache Maven +Built-By: clemens +Build-Jdk: 1.6.0_10 +Implementation-Build: 1.1.1-SNAPSHOT-r1 diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/META-INF/context.xml b/mocca-1.2.11/BKUOnline/src/main/webapp/META-INF/context.xml new file mode 100644 index 00000000..f38215a1 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/webapp/META-INF/context.xml @@ -0,0 +1,19 @@ + + + + diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/PINManagement.jsp b/mocca-1.2.11/BKUOnline/src/main/webapp/PINManagement.jsp new file mode 100644 index 00000000..e48b8405 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/webapp/PINManagement.jsp @@ -0,0 +1,111 @@ + +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8" + import="at.gv.egiz.org.apache.tomcat.util.http.AcceptLanguage"%> + + + + + + MOCCA PIN Management + + + + + + + + + <% + String locale = request.getParameter("locale"); + if (locale == null) { + String acceptLanguage = request.getHeader("Accept-Language"); + locale = AcceptLanguage.getLocale(acceptLanguage).toString(); + } + String widthP = request.getParameter("appletWidth"); + String heightP = request.getParameter("appletHeight"); + int width = (widthP == null) ? 295 + : Integer.parseInt(widthP); + int height = (heightP == null) ? 200 + : Integer.parseInt(heightP); + String guiStyle = request.getParameter("appletGuiStyle"); + if (guiStyle == null) { + guiStyle = "advanced"; + } + String backgroundImg = request.getParameter("appletBackground"); + %> + + + + + + + diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/SLRequestForm.html b/mocca-1.2.11/BKUOnline/src/main/webapp/SLRequestForm.html new file mode 100644 index 00000000..2de652a7 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/webapp/SLRequestForm.html @@ -0,0 +1,215 @@ + + + + + Security-Layer v1.2 Request Formular + + + + + + + + +

Security-Layer v1.2 Request Formular

+

+

+ +
Enter XML Request +

+ + + +
+
Request Parameters +

+ + tiny + simple + advanced +

+ +

+

+

+

+

+ +

+ + Default + Alternative +

+ + + + +
+
+
+ + + diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/applicationContext.xml b/mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/applicationContext.xml new file mode 100644 index 00000000..fb3cae63 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/applicationContext.xml @@ -0,0 +1,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/mocca-conf.xml b/mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/mocca-conf.xml new file mode 100644 index 00000000..5c96dc58 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/mocca-conf.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/sun-jaxws.xml b/mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/sun-jaxws.xml new file mode 100644 index 00000000..02d632eb --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/sun-jaxws.xml @@ -0,0 +1,36 @@ + + + + + + + + + + diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/web.xml b/mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 00000000..41cd400f --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,129 @@ + + + + http-security-layer-request + + + + contextConfigLocation + /WEB-INF/applicationContext.xml + + + org.springframework.web.context.ContextLoaderListener + + + + + + at.gv.egiz.bku.online.webapp.SessionTimeout + + + com.sun.xml.ws.transport.http.servlet.WSServletContextListener + + + BKUServlet + at.gv.egiz.bku.online.webapp.BKURequestHandler + + + ResultServlet + at.gv.egiz.bku.online.webapp.ResultServlet + + responseEncoding + UTF-8 + + + expiredPage + + expired.html + + + + BKUApplet + /applet.jsp + + + STALService + com.sun.xml.ws.transport.http.servlet.WSServlet + 1 + + + BKUServlet + /http-security-layer-request + + + BKUServlet + /https-security-layer-request + + + ResultServlet + /bkuResult + + + + + + + + + + + + + STALService + /stal + + + 5 + + + index.html + index.jsp + + diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/wsdl/stal.wsdl b/mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/wsdl/stal.wsdl new file mode 100644 index 00000000..dc7ad8f1 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/wsdl/stal.wsdl @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/wsdl/stal.xsd b/mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/wsdl/stal.xsd new file mode 100644 index 00000000..a420035f --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/wsdl/stal.xsd @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/applet.jsp b/mocca-1.2.11/BKUOnline/src/main/webapp/applet.jsp new file mode 100644 index 00000000..582bee7e --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/webapp/applet.jsp @@ -0,0 +1,111 @@ + +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8" + import="at.gv.egiz.bku.online.webapp.AppletDispatcher, org.apache.commons.lang.RandomStringUtils, org.apache.commons.lang.StringEscapeUtils" %> + + + + + + MOCCA Applet + + + + + + + + + <% + String locale = StringEscapeUtils.escapeJavaScript( + (String) session.getAttribute("locale")); + + int width = session.getAttribute("appletWidth") == null ? 190 + : (Integer) session.getAttribute("appletWidth"); + int height = session.getAttribute("appletHeight") == null ? 130 + : (Integer) session.getAttribute("appletHeight"); + String backgroundImg = StringEscapeUtils.escapeJavaScript( + session.getAttribute("appletBackground") == null + ? "../img/chip32.png" + : (String) session.getAttribute("appletBackground")); + String backgroundColor = StringEscapeUtils.escapeJavaScript( + (String) session.getAttribute("appletBackgroundColor")); + String guiStyle = StringEscapeUtils.escapeJavaScript( + (String) session.getAttribute("appletGuiStyle")); + + String sessionId = StringEscapeUtils.escapeJavaScript(session.getId()); + + String extension = (String) session.getAttribute("appletExtension"); + String appletClass, appletArchive; + if ("activation".equalsIgnoreCase(extension)) { + appletArchive = "BKUAppletExt"; + appletClass = "at.gv.egiz.bku.online.applet.ActivationApplet.class"; + } else if ("pin".equalsIgnoreCase(extension)) { + appletArchive = "BKUAppletExt"; + appletClass = "at.gv.egiz.bku.online.applet.PINManagementApplet.class"; + } else { + appletArchive = "BKUApplet"; + appletClass = "at.gv.egiz.bku.online.applet.BKUApplet.class"; + } + + // disable applet caching + boolean disableAppletCaching = false; + String codebase = "applet"; + + if (disableAppletCaching) { + // run in AppletDispatcher context and + // append random alphanumeric string to avoid applet caching + // TODO prepend ../ to all xxxURL applet paramaters + codebase += "/" + AppletDispatcher.DISPATCH_CTX; + String rand = AppletDispatcher.RAND_PREFIX + + RandomStringUtils.randomAlphanumeric(16); + appletArchive += rand; + } + + %> + + + + diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/css/applet.css b/mocca-1.2.11/BKUOnline/src/main/webapp/css/applet.css new file mode 100644 index 00000000..d2c734a1 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/webapp/css/applet.css @@ -0,0 +1,15 @@ +root { + display: block; +} + +body { + background: #ffffff; + /*background-image: url(../img/mocca-t_s.png);*/ + padding: 0; + margin: 0; + border-style: none; + /* + width:<%=width%> + */ +} + diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/css/appletAlternative.css b/mocca-1.2.11/BKUOnline/src/main/webapp/css/appletAlternative.css new file mode 100644 index 00000000..ce11f1b2 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/webapp/css/appletAlternative.css @@ -0,0 +1,12 @@ +root { + display: block; +} + +body { + background: #ffffff; + background-image: url(../img/mocca-t_s.png); + padding: 0; + margin: 0; + border-style: none; +} + diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/css/main.css b/mocca-1.2.11/BKUOnline/src/main/webapp/css/main.css new file mode 100644 index 00000000..b6d6e906 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/webapp/css/main.css @@ -0,0 +1,55 @@ +/* +Document : main +Created on : 27.02.2009, 10:24:41 +Author : clemens +Description: +Purpose of the stylesheet follows. +*/ + +/* +TODO customize this sample style +Syntax recommendation http://www.w3.org/TR/REC-CSS2/ +*/ + +root { + display: block; +} + +body { + font-family: sans-serif; + font-size: 14px; +} + +h1 { + font-size: 16px; +} + +.disabled { + /* for IE */ + filter:alpha(opacity=60); + /* CSS3 standard */ + opacity:0.4; +} + +.box { + margin-top: 10px; + color: #292929; + width: 250px; + border: 1px solid #BABABA; + background-color: #ddd; + padding-left: 10px; + padding-right: 10px; + margin-left: 10px; + margin-bottom: 1em; + -o-border-radius: 10px; + -moz-border-radius: 12px; + -webkit-border-radius: 10px; + -webkit-box-shadow: 0px 3px 7px #adadad; + border-radius: 10px; + -moz-box-sizing: border-box; + -opera-sizing: border-box; + -webkit-box-sizing: border-box; + -khtml-box-sizing: border-box; + box-sizing: border-box; + overflow: hidden; +} \ No newline at end of file diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/errorresponse.css b/mocca-1.2.11/BKUOnline/src/main/webapp/errorresponse.css new file mode 100644 index 00000000..41402e71 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/webapp/errorresponse.css @@ -0,0 +1,12 @@ +@CHARSET "UTF-8"; +sl\:ErrorResponse {margin: 0.5em; display: block;} +sl\:ErrorCode {display: inline;} +sl\:Info {display: inline;} + +ErrorResponse:lang(de):before {content: "Bei der Verarbeitung der Anfrage durch die Bürgerkartenumgebung ist ein Fehler aufgetreten: "; font-weight: bolder;} +ErrorResponse:before {content: "An error has occoured upon request processing by the citizen card software: "; font-weight: bold;} +ErrorResponse {margin: 0.5em; display: block;} +ErrorCode:lang(de):before {content: "Fehler-Code: ";} +ErrorCode:before {content: "Error Code: ";} +ErrorCode {display: block;} +Info {display: block;} \ No newline at end of file diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/expired.html b/mocca-1.2.11/BKUOnline/src/main/webapp/expired.html new file mode 100644 index 00000000..2bb961f5 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/webapp/expired.html @@ -0,0 +1,29 @@ + + + + + +Session Expired + + +

+ Ihre Sitzung ist abgelaufen. + +

+ + \ No newline at end of file diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/img/chip16.ico b/mocca-1.2.11/BKUOnline/src/main/webapp/img/chip16.ico new file mode 100644 index 00000000..42175127 Binary files /dev/null and b/mocca-1.2.11/BKUOnline/src/main/webapp/img/chip16.ico differ diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/img/chip32.png b/mocca-1.2.11/BKUOnline/src/main/webapp/img/chip32.png new file mode 100644 index 00000000..e7efb020 Binary files /dev/null and b/mocca-1.2.11/BKUOnline/src/main/webapp/img/chip32.png differ diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/img/webstart.png b/mocca-1.2.11/BKUOnline/src/main/webapp/img/webstart.png new file mode 100644 index 00000000..87d1cf7b Binary files /dev/null and b/mocca-1.2.11/BKUOnline/src/main/webapp/img/webstart.png differ diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/index.html b/mocca-1.2.11/BKUOnline/src/main/webapp/index.html new file mode 100644 index 00000000..b39dafb7 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/webapp/index.html @@ -0,0 +1,59 @@ + + + + + MOCCA + + + + + + + +
+

+

MOCCA Online

+

+ Security Layer Request (demo request form) +

+

+ PIN Management (pin management applet) +

+

+ STAL Service (web service endpoint) +

+

+
+ + +
+

+

MOCCA Web Start

+

+

+

MOCCA JNLP File (requires MIME-type association)

+

Java Cache Viewer (local installation)

+

+
+ + diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/js/deployJava.js b/mocca-1.2.11/BKUOnline/src/main/webapp/js/deployJava.js new file mode 100644 index 00000000..e25902c0 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/webapp/js/deployJava.js @@ -0,0 +1,925 @@ +/* + * Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Sun Microsystems nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Added by EGIZ: + * This file contains workarounds to + * [#423] Firefox 3.0.11 bug #498132 causes applet loading failure + * (lines 95-99) + * [#424] Web Start loading via java plugin (Sun deployment script) fails on WinXP/Vista + * (lines 501-506) + * + * features: + * [#425] Disable WebStart Launch Button for MacOS + * (lines 492-504) + * + */ + +/* + * deployJava.js + * + * This file is part of the Deployment Toolkit. It provides functions for web + * pages to detect the presence of a JRE, install the latest JRE, and easily run + * applets or Web Start programs. Usage guide may be found at http:///. + * + * The "live" copy of this file may be found at + * http://java.com/js/deployJava.js. + * You are encouraged to link directly to the live copy of the file. + * + * @version @(#)deployJava.js 1.13 08/10/28 + */ + +var deployJava = { + debug: null, + + myInterval: null, + preInstallJREList: null, + returnPage: null, + brand: null, + locale: null, + installType: null, + + EAInstallEnabled: false, + EarlyAccessURL: null, + + // GetJava page + getJavaURL: 'http://java.sun.com/webapps/getjava/BrowserRedirect?host=java.com', + + // Apple redirect page + appleRedirectPage: 'http://www.apple.com/support/downloads/', + + // mime-type of the DeployToolkit plugin object + mimeType: 'application/npruntime-scriptable-plugin;DeploymentToolkit', + + // location of the Java Web Start launch button graphic + launchButtonPNG: 'img/webstart.png', + + /** + * Returns an array of currently-installed JRE version strings. + * Version strings are of the form #.#[.#[_#]], with the function returning + * as much version information as it can determine, from just family + * versions ("1.4.2", "1.5") through the full version ("1.5.0_06"). + * + * Detection is done on a best-effort basis. Under some circumstances + * only the highest installed JRE version will be detected, and + * JREs older than 1.4.2 will not always be detected. + */ + getJREs: function() { + var list = new Array(); + if (deployJava.isPluginInstalled()) { + var plugin = deployJava.getPlugin(); + //[#423] Firefox 3.0.11 bug #498132 causes applet loading failure + var jvms = plugin.jvms; + for (var i = 0; i < jvms.getLength(); i++) { + list[i] = jvms.get(i).version; + } + } else { + var browser = deployJava.getBrowser(); + + if (browser == 'MSIE') { + if (deployJava.testUsingActiveX('1.8.0')) { + list[0] = '1.8.0'; + } else if (deployJava.testUsingActiveX('1.7.0')) { + list[0] = '1.7.0'; + } else if (deployJava.testUsingActiveX('1.6.0')) { + list[0] = '1.6.0'; + } else if (deployJava.testUsingActiveX('1.5.0')) { + list[0] = '1.5.0'; + } else if (deployJava.testUsingActiveX('1.4.2')) { + list[0] = '1.4.2'; + } else if (deployJava.testForMSVM()) { + list[0] = '1.1'; + } + } + else if (browser == 'Netscape Family') { + if (deployJava.testUsingMimeTypes('1.8')) { + list[0] = '1.8.0'; + } else if (deployJava.testUsingMimeTypes('1.7')) { + list[0] = '1.7.0'; + } else if (deployJava.testUsingMimeTypes('1.6')) { + list[0] = '1.6.0'; + } else if (deployJava.testUsingMimeTypes('1.5')) { + list[0] = '1.5.0'; + } else if (deployJava.testUsingMimeTypes('1.4.2')) { + list[0] = '1.4.2'; + } + } else if (browser == 'Safari') { + if (deployJava.testUsingPluginsArray('1.8.0')) { + list[0] = '1.8.0'; + } else if (deployJava.testUsingPluginsArray('1.7.0')) { + list[0] = '1.7.0'; + } else if (deployJava.testUsingPluginsArray('1.6.0')) { + list[0] = '1.6.0'; + } else if (deployJava.testUsingPluginsArray('1.5.0')) { + list[0] = '1.5.0'; + } else if (deployJava.testUsingPluginsArray('1.4.2')) { + list[0] = '1.4.2'; + } + } + } + + if (deployJava.debug) { + for (var i = 0; i < list.length; ++i) { + alert('We claim to have detected Java SE ' + list[i]); + } + } + + return list; + }, + + /** + * Triggers a JRE installation. The exact effect of triggering an + * installation varies based on platform, browser, and if the + * Deployment Toolkit plugin is installed. + * + * The requestVersion string is of the form #[.#[.#[_#]]][+|*], + * which includes strings such as "1.4", "1.5.0*", and "1.6.0_02+". + * A star (*) means "any version starting within this family" and + * a plus (+) means "any version greater or equal to this". + * "1.5.0*" * matches 1.5.0_06 but not 1.6.0_01, whereas + * "1.5.0+" matches both. + * + * If the Deployment Toolkit plugin is not present, this will just call + * deployJava.installLatestJRE(). + */ + installJRE: function(requestVersion) { + var ret = false; + if (deployJava.isPluginInstalled()) { + if (deployJava.getPlugin().installJRE(requestVersion)) { + deployJava.refresh(); + if (deployJava.returnPage != null) { + document.location = deployJava.returnPage; + } + return true; + } else { + return false; + } + } else { + return deployJava.installLatestJRE(); + } + }, + + + /** + * Triggers a JRE installation. The exact effect of triggering an + * installation varies based on platform, browser, and if the + * Deployment Toolkit plugin is installed. + * + * In the simplest case, the browser window will be redirected to the + * java.com JRE installation page, and (if possible) a redirect back to + * the current URL upon successful installation. The return redirect is + * not always possible, as the JRE installation may require the browser to + * be restarted. + * + * In the best case (when the Deployment Toolkit plugin is present), this + * function will immediately cause a progress dialog to be displayed + * as the JRE is downloaded and installed. + */ + installLatestJRE: function() { + if (deployJava.isPluginInstalled()) { + if (deployJava.getPlugin().installLatestJRE()) { + deployJava.refresh(); + if (deployJava.returnPage != null) { + document.location = deployJava.returnPage; + } + return true; + } else { + return false; + } + } else { + var browser = deployJava.getBrowser(); + var platform = navigator.platform.toLowerCase(); + if ((deployJava.EAInstallEnabled == 'true') && + (platform.indexOf('win') != -1) && + (deployJava.EarlyAccessURL != null)) { + + deployJava.preInstallJREList = deployJava.getJREs(); + if (deployJava.returnPage != null) { + deployJava.myInterval = + setInterval("deployJava.poll()", 3000); + } + + location.href = deployJava.EarlyAccessURL; + + // we have to return false although there may be an install + // in progress now, when complete it may go to return page + return false; + } else { + if (browser == 'MSIE') { + return deployJava.IEInstall(); + } else if ((browser == 'Netscape Family') && + (platform.indexOf('win32') != -1)) { + return deployJava.FFInstall(); + } else { + location.href = deployJava.getJavaURL + + ((deployJava.returnPage != null) ? + ('&returnPage=' + deployJava.returnPage) : '') + + ((deployJava.locale != null) ? + ('&locale=' + deployJava.locale) : '') + + ((deployJava.brand != null) ? + ('&brand=' + deployJava.brand) : ''); + } + // we have to return false although there may be an install + // in progress now, when complete it may go to return page + return false; + } + } + }, + + + /** + * Ensures that an appropriate JRE is installed and then runs an applet. + * minimumVersion is of the form #[.#[.#[_#]]], and is the minimum + * JRE version necessary to run this applet. minimumVersion is optional, + * defaulting to the value "1.1" (which matches any JRE). + * If an equal or greater JRE is detected, runApplet() will call + * writeAppletTag(attributes, parameters) to output the applet tag, + * otherwise it will call installJRE(minimumVersion + '+'). + * + * After installJRE() is called, the script will attempt to detect that the + * JRE installation has completed and begin running the applet, but there + * are circumstances (such as when the JRE installation requires a browser + * restart) when this cannot be fulfilled. + * + * As with writeAppletTag(), this function should only be called prior to + * the web page being completely rendered. Note that version wildcards + * (star (*) and plus (+)) are not supported, and including them in the + * minimumVersion will result in an error message. + */ + runApplet: function(attributes, parameters, minimumVersion) { + if (minimumVersion == 'undefined' || minimumVersion == null) { + minimumVersion = '1.1'; + } + + var regex = "^(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:_(\\d+))?)?)?$"; + + var matchData = minimumVersion.match(regex); + + if (deployJava.returnPage == null) { + // if there is an install, come back here and run the applet + deployJava.returnPage = document.location; + } + + if (matchData != null) { + var browser = deployJava.getBrowser(); + if ((browser != '?') && (browser != 'Safari')) { + if (deployJava.versionCheck(minimumVersion + '+')) { + deployJava.writeAppletTag(attributes, parameters); + } else if (deployJava.installJRE(minimumVersion + '+')) { + // after successfull install we need to refresh page to pick + // pick up new plugin + deployJava.refresh(); + location.href = document.location; + deployJava.writeAppletTag(attributes, parameters); + } + } else { + // for unknown or Safari - just try to show applet + deployJava.writeAppletTag(attributes, parameters); + } + } else { + if (deployJava.debug) { + alert('Invalid minimumVersion argument to runApplet():' + + minimumVersion); + } + } + }, + + + /** + * Outputs an applet tag with the specified attributes and parameters, where + * both attributes and parameters are associative arrays. Each key/value + * pair in attributes becomes an attribute of the applet tag itself, while + * key/value pairs in parameters become tags. No version checking + * or other special behaviors are performed; the tag is simply written to + * the page using document.writeln(). + * + * As document.writeln() is generally only safe to use while the page is + * being rendered, you should never call this function after the page + * has been completed. + */ + writeAppletTag: function(attributes, parameters) { + var s = '<' + 'applet '; + for (var attribute in attributes) { + s += (' ' + attribute + '="' + attributes[attribute] + '"'); + } + s += '>'; + document.write(s); + + if (parameters != 'undefined' && parameters != null) { + var codebaseParam = false; + for (var parameter in parameters) { + if (parameter == 'codebase_lookup') { + codebaseParam = true; + } + s = ''; + document.write(s); + } + if (!codebaseParam) { + document.write(''); + } + } + document.write('<' + '/' + 'applet' + '>'); + }, + + + /** + * Returns true if there is a matching JRE version currently installed + * (among those detected by getJREs()). The versionPattern string is + * of the form #[.#[.#[_#]]][+|*], which includes strings such as "1.4", + * "1.5.0*", and "1.6.0_02+". + * A star (*) means "any version within this family" and a plus (+) means + * "any version greater or equal to the specified version". "1.5.0*" + * matches 1.5.0_06 but not 1.6.0_01, whereas "1.5.0+" matches both. + * + * If the versionPattern does not include all four version components + * but does not end with a star or plus, it will be treated as if it + * ended with a star. "1.5" is exactly equivalent to "1.5*", and will + * match any version number beginning with "1.5". + * + * If getJREs() is unable to detect the precise version number, a match + * could be ambiguous. For example if getJREs() detects "1.5", there is + * no way to know whether the JRE matches "1.5.0_06+". versionCheck() + * compares only as much of the version information as could be detected, + * so versionCheck("1.5.0_06+") would return true in in this case. + * + * Invalid versionPattern will result in a JavaScript error alert. + * versionPatterns which are valid but do not match any existing JRE + * release (e.g. "32.65+") will always return false. + */ + versionCheck: function(versionPattern) + { + var index = 0; + var regex = "^(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:_(\\d+))?)?)?(\\*|\\+)?$"; + + var matchData = versionPattern.match(regex); + + if (matchData != null) { + var familyMatch = true; + + var patternArray = new Array(); + + for (var i = 1; i < matchData.length; ++i) { + // browser dependency here. + // Fx sets 'undefined', IE sets '' string for unmatched groups + if ((typeof matchData[i] == 'string') && (matchData[i] != '')) { + patternArray[index] = matchData[i]; + index++; + } + } + + if (patternArray[patternArray.length-1] == '+') { + familyMatch = false; + patternArray.length--; + } else { + if (patternArray[patternArray.length-1] == '*') { + patternArray.length--; + } + } + + var list = deployJava.getJREs(); + for (var i = 0; i < list.length; ++i) { + if (deployJava.compareVersionToPattern(list[i], patternArray, + familyMatch)) { + return true; + } + } + + return false; + } else { + alert('Invalid versionPattern passed to versionCheck: ' + + versionPattern); + return false; + } + }, + + + /** + * Returns true if an installation of Java Web Start of the specified + * minimumVersion can be detected. minimumVersion is optional, and + * if not specified, '1.4.2' will be used. + * (Versions earlier than 1.4.2 may not be detected.) + */ + isWebStartInstalled: function(minimumVersion) { + + var browser = deployJava.getBrowser(); + if ((browser == '?') || (browser == 'Safari')) { + // we really don't know - better to try to use it than reinstall + return true; + } + + if (minimumVersion == 'undefined' || minimumVersion == null) { + minimumVersion = '1.4.2'; + } + + var retval = false; + var regex = "^(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:_(\\d+))?)?)?$"; + var matchData = minimumVersion.match(regex); + + if (matchData != null) { + retval = deployJava.versionCheck(minimumVersion + '+'); + } else { + if (deployJava.debug) { + alert('Invalid minimumVersion argument to isWebStartInstalled(): ' + minimumVersion); + } + retval = deployJava.versionCheck('1.4.2+'); + } + return retval; + }, + + + /** + * Outputs a launch button for the specified JNLP URL. When clicked, the + * button will ensure that an appropriate JRE is installed and then launch + * the JNLP application. minimumVersion is of the form #[.#[.#[_#]]], and + * is the minimum JRE version necessary to run this JNLP application. + * minimumVersion is optional, and if it is not specified, '1.4.2' + * will be used. + * If an appropriate JRE or Web Start installation is detected, + * the JNLP application will be launched, otherwise installLatestJRE() + * will be called. + * + * After installLatestJRE() is called, the script will attempt to detect + * that the JRE installation has completed and launch the JNLP application, + * but there are circumstances (such as when the JRE installation + * requires a browser restart) when this cannot be fulfilled. + */ + createWebStartLaunchButton: function(jnlp, minimumVersion) { + + if (deployJava.returnPage == null) { + // if there is an install, come back and run the jnlp file + deployJava.returnPage = jnlp; + } + + var url = 'javascript:' + + 'if (!deployJava.isWebStartInstalled("' + + minimumVersion + '")) {' + + 'if (deployJava.installLatestJRE()) {' + + 'if (deployJava.launch("' + jnlp + '")) {}' + + '}' + + '} else {' + + 'if (deployJava.launch("' + jnlp + '")) {}' + + '}'; + + // [#425] Disable WebStart Launch Button for MacOS + if (navigator.appVersion.toLowerCase().indexOf("mac")!=-1 && + navigator.userAgent.toLowerCase().indexOf("os x 10_6")==-1 && + navigator.userAgent.toLowerCase().indexOf("os x 10.6")==-1 ) + { + document.write('<' + 'a disabled="disabled"' + + ' onMouseOver="window.status=\'\'; ' + + 'return true;"><' + 'img class="disabled"' + + 'src="' + deployJava.launchButtonPNG + '" ' + + 'border="0" /><' + '/' + 'a' + '>'); + } else { + document.write('<' + 'a href="' + url + + '" onMouseOver="window.status=\'\'; ' + + 'return true;"><' + 'img ' + + 'src="' + deployJava.launchButtonPNG + '" ' + + 'border="0" /><' + '/' + 'a' + '>'); + } + }, + + + /** + * Launch a JNLP application, (using the plugin if available) + */ + launch: function(jnlp) { + //[#424] Web Start loading via java plugin (Sun deployment script) fails on WinXP +// if (deployJava.isPluginInstalled()) { +// return deployJava.getPlugin().launch(jnlp); +// } else { + document.location=jnlp; + return true; +// } + }, + + + /* + * returns true if the ActiveX or XPI plugin is installed + */ + isPluginInstalled: function() { + var plugin = deployJava.getPlugin(); + if (plugin && plugin.jvms) { + return true; + } else { + return false; + } + }, + + /* + * returns true if the plugin is installed and AutoUpdate is enabled + */ + isAutoUpdateEnabled: function() { + if (deployJava.isPluginInstalled()) { + return deployJava.getPlugin().isAutoUpdateEnabled(); + } + return false; + }, + + /* + * sets AutoUpdate on if plugin is installed + */ + setAutoUpdateEnabled: function() { + if (deployJava.isPluginInstalled()) { + return deployJava.getPlugin().setAutoUpdateEnabled(); + } + return false; + }, + + /* + * sets the preferred install type : null, online, kernel + */ + setInstallerType: function(type) { + deployJava.installType = type; + if (deployJava.isPluginInstalled()) { + return deployJava.getPlugin().setInstallerType(type); + } + return false; + }, + + /* + * sets additional package list - to be used by kernel installer + */ + setAdditionalPackages: function(packageList) { + if (deployJava.isPluginInstalled()) { + return deployJava.getPlugin().setAdditionalPackages( + packageList); + } + return false; + }, + + /* + * sets preference to install Early Access versions if available + */ + setEarlyAccess: function(enabled) { + deployJava.EAInstallEnabled = enabled; + }, + + /* + * Determines if the next generation plugin (Plugin II) is default + */ + isPlugin2: function() { + if (deployJava.isPluginInstalled()) { + try { + return deployJava.getPlugin().isPlugin2(); + } catch (err) { + // older plugin w/o isPlugin2() function - just fall through + } + } + return false; + }, + + + getPlugin: function() { + deployJava.refresh(); + var ret = document.getElementById('deployJavaPlugin'); + return ret; + }, + + compareVersionToPattern: function(version, patternArray, familyMatch) { + var regex = "^(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:_(\\d+))?)?)?$"; + var matchData = version.match(regex); + + if (matchData != null) { + var index = 0; + var result = new Array(); + + for (var i = 1; i < matchData.length; ++i) { + if ((typeof matchData[i] == 'string') && (matchData[i] != '')) + { + result[index] = matchData[i]; + index++; + } + } + + var l = Math.min(result.length, patternArray.length); + + if (familyMatch) { + for (var i = 0; i < l; ++i) { + if (result[i] != patternArray[i]) return false; + } + + return true; + } else { + for (var i = 0; i < l; ++i) { + if (result[i] < patternArray[i]) { + return false; + } else if (result[i] > patternArray[i]) { + return true; + } + } + + return true; + } + } else { + return false; + } + }, + + + getBrowser: function() { + var browser = navigator.userAgent.toLowerCase(); + + if (deployJava.debug) { + alert('userAgent -> ' + browser); + } + + if ((navigator.vendor) && + (navigator.vendor.toLowerCase().indexOf('apple') != -1) && + (browser.indexOf('safari') != -1)) { + if (deployJava.debug) { + alert('We claim to have detected "Safari".'); + } + return 'Safari'; + } else if (browser.indexOf('msie') != -1) { + if (deployJava.debug) { + alert('We claim to have detected "IE".'); + } + return 'MSIE'; +// } else if ((browser.indexOf('konqueror') != -1)) { +// if (deployJava.debug) { +// alert('We claim to have detected "Konqueror".'); +// } + } else if ((browser.indexOf('mozilla') != -1) || + (browser.indexOf('firefox') != -1)) { + if (deployJava.debug) { + alert('We claim to have detected a Netscape family browser.'); + } + return 'Netscape Family'; + } else { + if (deployJava.debug) { + alert('We claim to have failed to detect a browser.'); + } + return '?'; + } + }, + + + testUsingActiveX: function(version) { + var objectName = 'JavaWebStart.isInstalled.' + version + '.0'; + + if (!ActiveXObject) { + if (deployJava.debug) { + alert ('Browser claims to be IE, but no ActiveXObject object?'); + } + return false; + } + + try { + return (new ActiveXObject(objectName) != null); + } catch (exception) { + return false; + } + }, + + + testForMSVM: function() { + var clsid = '{08B0E5C0-4FCB-11CF-AAA5-00401C608500}'; + + if (typeof oClientCaps != 'undefined') { + var v = oClientCaps.getComponentVersion(clsid, "ComponentID"); + if ((v == '') || (v == '5,0,5000,0')) { + return false; + } else { + return true; + } + } else { + return false; + } + }, + + + testUsingMimeTypes: function(version) { + if (!navigator.mimeTypes) { + if (deployJava.debug) { + alert ('Browser claims to be Netscape family, but no mimeTypes[] array?'); + } + return false; + } + + for (var i = 0; i < navigator.mimeTypes.length; ++i) { + s = navigator.mimeTypes[i].type; + var m = s.match(/^application\/x-java-applet\x3Bversion=(1\.8|1\.7|1\.6|1\.5|1\.4\.2)$/); + if (m != null) { + if (deployJava.compareVersions(m[1], version)) { + return true; + } + } + } + return false; + }, + + + testUsingPluginsArray: function(version) { + if ((!navigator.plugins) || (!navigator.plugins.length)) { + if (deployJava.debug) { + alert ('Browser claims to be Safari, but no plugins[] array?'); + } + return false; + } + + for (var i = 0; i < navigator.plugins.length; ++i) { + s = navigator.plugins[i].description; + + if (s.search(/^Java Switchable Plug-in/) != -1) { + return true; + } + + m = s.match(/^Java (1\.4\.2|1\.5|1\.6|1\.7).* Plug-in/); + if (m != null) { + if (deployJava.compareVersions(m[1], version)) return true; + } + } + return false; + }, + + IEInstall: function() { + + location.href = deployJava.getJavaURL + + ((deployJava.returnPage != null) ? + ('&returnPage=' + deployJava.returnPage) : '') + + ((deployJava.locale != null) ? + ('&locale=' + deployJava.locale) : '') + + ((deployJava.brand != null) ? ('&brand=' + deployJava.brand) : '') + + ((deployJava.installType != null) ? + ('&type=' + deployJava.installType) : ''); + + // should not actually get here + return false; + }, + + done: function (name, result) { + }, + + FFInstall: function() { + + location.href = deployJava.getJavaURL + + ((deployJava.returnPage != null) ? + ('&returnPage=' + deployJava.returnPage) : '') + + ((deployJava.locale != null) ? + ('&locale=' + deployJava.locale) : '') + + ((deployJava.brand != null) ? ('&brand=' + deployJava.brand) : '') + + ((deployJava.installType != null) ? + ('&type=' + deployJava.installType) : ''); + + // should not actually get here + return false; + }, + + // return true if 'installed' (considered as a JRE version string) is + // greater than or equal to 'required' (again, a JRE version string). + compareVersions: function(installed, required) { + + var a = installed.split('.'); + var b = required.split('.'); + + for (var i = 0; i < a.length; ++i) { + a[i] = Number(a[i]); + } + for (var i = 0; i < b.length; ++i) { + b[i] = Number(b[i]); + } + if (a.length == 2) { + a[2] = 0; + } + + if (a[0] > b[0]) return true; + if (a[0] < b[0]) return false; + + if (a[1] > b[1]) return true; + if (a[1] < b[1]) return false; + + if (a[2] > b[2]) return true; + if (a[2] < b[2]) return false; + + return true; + }, + + + enableAlerts: function() { + deployJava.debug = true; + }, + + poll: function() { + + deployJava.refresh(); + var postInstallJREList = deployJava.getJREs(); + + if ((deployJava.preInstallJREList.length == 0) && + (postInstallJREList.length != 0)) { + clearInterval(deployJava.myInterval); + if (deployJava.returnPage != null) { + location.href = deployJava.returnPage; + }; + } + + if ((deployJava.preInstallJREList.length != 0) && + (postInstallJREList.length != 0) && + (deployJava.preInstallJREList[0] != postInstallJREList[0])) { + clearInterval(deployJava.myInterval); + if (deployJava.returnPage != null) { + location.href = deployJava.returnPage; + } + } + + }, + + writePluginTag: function() { + var browser = deployJava.getBrowser(); + if (browser == 'MSIE') { + document.write('<' + + 'object classid="clsid:CAFEEFAC-DEC7-0000-0000-ABCDEFFEDCBA" ' + + 'id="deployJavaPlugin" width="0" height="0">' + + '<' + '/' + 'object' + '>'); + } else if (browser == 'Netscape Family') { + if (navigator.mimeTypes != null) for (var i=0; + i < navigator.mimeTypes.length; i++) { + if (navigator.mimeTypes[i].type == deployJava.mimeType) { + if (navigator.mimeTypes[i].enabledPlugin) { + document.write('<' + + 'embed id="deployJavaPlugin" type="' + + deployJava.mimeType + '" hidden="true" />'); + } + } + } + } + }, + + refresh: function() { + navigator.plugins.refresh(false); + + var browser = deployJava.getBrowser(); + if (browser == 'Netscape Family') { + var plugin = document.getElementById('deployJavaPlugin'); + // only do this again if no plugin + if (plugin == null) { + if (navigator.mimeTypes != null) for (var i=0; + i < navigator.mimeTypes.length; i++) { + if (navigator.mimeTypes[i].type == deployJava.mimeType) { + if (navigator.mimeTypes[i].enabledPlugin) { + document.write('<' + + 'embed id="deployJavaPlugin" type="' + + deployJava.mimeType + '" hidden="true" />'); + } + } + } + } + } + }, + + do_initialize: function() { + deployJava.writePluginTag(); + if (deployJava.locale == null) { + var loc = null; + + if (loc == null) try { + loc = navigator.userLanguage; + } catch (err) { } + + if (loc == null) try { + loc = navigator.systemLanguage; + } catch (err) { } + + if (loc == null) try { + loc = navigator.language; + } catch (err) { } + + if (loc != null) { + loc.replace("-","_") + deployJava.locale = loc; + } + } + } + +}; +deployJava.do_initialize(); + diff --git a/mocca-1.2.11/BKUOnline/src/main/webapp/js/deployJava_orig.js b/mocca-1.2.11/BKUOnline/src/main/webapp/js/deployJava_orig.js new file mode 100644 index 00000000..316fa278 --- /dev/null +++ b/mocca-1.2.11/BKUOnline/src/main/webapp/js/deployJava_orig.js @@ -0,0 +1,725 @@ +/* + * Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Sun Microsystems nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * Added by EGIZ: + * This file contains workarounds to + * [#423] Firefox 3.0.11 bug #498132 causes applet loading failure + * (lines 95-99) + * [#424] Web Start loading via java plugin (Sun deployment script) fails on WinXP/Vista + * (lines 501-506) + * + * features: + * [#425] Disable WebStart Launch Button for MacOS + * (lines 492-504) + * + */ + +/* + * deployJava.js + * + * This file is part of the Deployment Toolkit. It provides functions for web + * pages to detect the presence of a JRE, install the latest JRE, and easily run + * applets or Web Start programs. Usage guide may be found at http:///. + * + * The "live" copy of this file may be found at + * http://java.com/js/deployJava.js. + * You are encouraged to link directly to the live copy of the file. + * + * @version @(#)deployJava.js XXXXX + */ + +var deployJava={ + debug:null, + + myInterval:null, + preInstallJREList:null, + returnPage:null, + brand:null, + locale:null, + installType:null, + + EAInstallEnabled:false, + EarlyAccessURL:null, + + // GetJava page + getJavaURL:'http://java.sun.com/webapps/getjava/BrowserRedirect?host=java.com', + + // Apple redirect page + appleRedirectPage:'http://www.apple.com/support/downloads/', + oldMimeType:'application/npruntime-scriptable-plugin;DeploymentToolkit', + mimeType:'application/java-deployment-toolkit', + launchButtonPNG:'http://java.sun.com/products/jfc/tsc/articles/swing2d/webstart.png', + + getJREs:function(){ + var list=new Array(); + if(deployJava.isPluginInstalled()){ + var plugin=deployJava.getPlugin(); + var VMs=plugin.jvms; + for(var i=0;i'; + document.write(s); + } + if(!codebaseParam){ + document.write(''); + } + } + document.write('<'+'/'+'applet'+'>'); + }, + + versionCheck:function(versionPattern) + + { + var index=0; + var regex="^(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:_(\\d+))?)?)?(\\*|\\+)?$"; + + var matchData=versionPattern.match(regex); + + if(matchData!=null){ + var familyMatch=true; + + var patternArray=new Array(); + + for(var i=1;i<'+'img '+'src="'+deployJava.launchButtonPNG+'" '+'border="0" /><'+'/'+'a'+'>'); + }, + + launch:function(jnlp){ + if(deployJava.isPluginInstalled()){ + return deployJava.getPlugin().launch(jnlp); + }else{ + document.location=jnlp;return true; + } + }, + + isPluginInstalled:function(){ + var plugin=deployJava.getPlugin(); + if(plugin&&plugin.jvms){ + return true; + }else{ + return false; + } + }, + + isAutoUpdateEnabled:function(){ + if(deployJava.isPluginInstalled()){ + return deployJava.getPlugin().isAutoUpdateEnabled(); + } + return false; + }, + + setAutoUpdateEnabled:function(){ + if(deployJava.isPluginInstalled()){ + return deployJava.getPlugin().setAutoUpdateEnabled(); + } + return false; + }, + + setInstallerType:function(type){ + deployJava.installType=type; + if(deployJava.isPluginInstalled()){ + return deployJava.getPlugin().setInstallerType(type); + } + return false; + }, + + setAdditionalPackages:function(packageList){ + if(deployJava.isPluginInstalled()){ + return deployJava.getPlugin().setAdditionalPackages( + packageList); + } + return false; + }, + + setEarlyAccess:function(enabled){ + deployJava.EAInstallEnabled=enabled; + }, + + isPlugin2:function(){ + if(deployJava.isPluginInstalled()){ + if(deployJava.versionCheck('1.6.0_10+')){ + try{ + return deployJava.getPlugin().isPlugin2(); + }catch(err){ + + } + } + } + return false; + }, + + + getPlugin:function(){ + deployJava.refresh(); + var ret=document.getElementById('deployJavaPlugin'); + return ret; + }, + + compareVersionToPattern:function(version,patternArray,familyMatch){ + var regex="^(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:_(\\d+))?)?)?$"; + var matchData=version.match(regex); + + if(matchData!=null){ + var index=0; + var result=new Array(); + + for(var i=1;ipatternArray[i]){ + return true; + } + } + + return true; + } + }else{ + return false; + } + }, + + + getBrowser:function(){ + var browser=navigator.userAgent.toLowerCase(); + + if(deployJava.debug){ + alert('userAgent -> '+browser); + } + + if((navigator.vendor)&& + (navigator.vendor.toLowerCase().indexOf('apple')!=-1)&& + (browser.indexOf('safari')!=-1)){ + if(deployJava.debug){ + alert('We claim to have detected "Safari".'); + } + return'Safari'; + }else if(browser.indexOf('msie')!=-1){ + if(deployJava.debug){ + alert('We claim to have detected "IE".'); + } + return'MSIE'; + }else if((browser.indexOf('mozilla')!=-1)|| + (browser.indexOf('firefox')!=-1)){ + if(deployJava.debug){ + alert('We claim to have detected a Netscape family browser.'); + } + return'Netscape Family'; + }else{ + if(deployJava.debug){ + alert('We claim to have failed to detect a browser.'); + } + return'?'; + } + }, + + + testUsingActiveX:function(version){ + var objectName='JavaWebStart.isInstalled.'+version+'.0'; + + if(!ActiveXObject){ + if(deployJava.debug){ + alert('Browser claims to be IE, but no ActiveXObject object?'); + } + return false; + } + + try{ + return(new ActiveXObject(objectName)!=null); + }catch(exception){ + return false; + } + }, + + + testForMSVM:function(){ + var clsid='{08B0E5C0-4FCB-11CF-AAA5-00401C608500}'; + + if(typeof oClientCaps!='undefined'){ + var v=oClientCaps.getComponentVersion(clsid,"ComponentID"); + if((v=='')||(v=='5,0,5000,0')){ + return false; + }else{ + return true; + } + }else{ + return false; + } + }, + + + testUsingMimeTypes:function(version){ + if(!navigator.mimeTypes){ + if(deployJava.debug){ + alert('Browser claims to be Netscape family, but no mimeTypes[] array?'); + } + return false; + } + + for(var i=0;ib[0])return true; + if(a[0]b[1])return true; + if(a[1]b[2])return true; + if(a[2]'+ + '<'+'/'+'object'+'>'); + }else if(browser=='Netscape Family'){ + deployJava.writeEmbedTag(); + } + }, + + refresh:function(){ + navigator.plugins.refresh(false);var browser=deployJava.getBrowser();if(browser=='Netscape Family'){ + var plugin=document.getElementById('deployJavaPlugin');if(plugin==null){ + deployJava.writeEmbedTag(); + } + } + }, + + writeEmbedTag:function(){ + var written=false;if(navigator.mimeTypes!=null){ + for(var i=0;i