summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormcentner <mcentner@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4>2010-01-26 16:22:56 +0000
committermcentner <mcentner@8a26b1a7-26f0-462f-b9ef-d0e30c41f5a4>2010-01-26 16:22:56 +0000
commitd89f36b67ea1d838a78523538a24e044518f3587 (patch)
tree6a8f6195d36ffa4971d47616ee674439a7e8a16d
parentf550e15e55aff5c2cd813e8be90efc9b1120bb13 (diff)
downloadmocca-d89f36b67ea1d838a78523538a24e044518f3587.tar.gz
mocca-d89f36b67ea1d838a78523538a24e044518f3587.tar.bz2
mocca-d89f36b67ea1d838a78523538a24e044518f3587.zip
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
-rw-r--r--mocca-1.2.11/BKUApplet/keystore.ksbin0 -> 5635 bytes
-rw-r--r--mocca-1.2.11/BKUApplet/pom.xml144
-rw-r--r--mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/AppletBKUWorker.java224
-rw-r--r--mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/AppletSecureViewer.java237
-rw-r--r--mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/BKUApplet.java359
-rw-r--r--mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/InternalSSLSocketFactory.java157
-rw-r--r--mocca-1.2.11/BKUApplet/src/main/java/at/gv/egiz/bku/online/applet/viewer/URLFontLoader.java82
-rw-r--r--mocca-1.2.11/BKUApplet/src/main/resources/commons-logging.properties16
-rw-r--r--mocca-1.2.11/BKUApplet/src/main/resources/simplelog.properties25
-rw-r--r--mocca-1.2.11/BKUApplet/src/test/java/at/gv/egiz/stal/client/STALServiceTest.java100
-rw-r--r--mocca-1.2.11/BKUApplet/src/test/resources/DejaVuLGCSansMono.ttfbin0 -> 282704 bytes
-rw-r--r--mocca-1.2.11/BKUApplet/src/test/resources/appletTest.html40
-rw-r--r--mocca-1.2.11/BKUApplet/src/test/resources/appletviewer.policy3
-rw-r--r--mocca-1.2.11/BKUAppletExt/keystore.ksbin0 -> 5635 bytes
-rw-r--r--mocca-1.2.11/BKUAppletExt/nbactions.xml13
-rw-r--r--mocca-1.2.11/BKUAppletExt/pom.xml147
-rw-r--r--mocca-1.2.11/BKUAppletExt/src/main/java/at/gv/egiz/bku/online/applet/ActivationApplet.java94
-rw-r--r--mocca-1.2.11/BKUAppletExt/src/main/java/at/gv/egiz/bku/online/applet/PINManagementApplet.java55
-rw-r--r--mocca-1.2.11/BKUAppletExt/src/main/java/at/gv/egiz/bku/online/applet/PINManagementBKUWorker.java91
-rw-r--r--mocca-1.2.11/BKUAppletExt/src/test/resources/appletTest.html34
-rw-r--r--mocca-1.2.11/BKUCertificates/pom.xml35
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-CERT GLOBALTRUST.cerbin0 -> 1561 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Light CA.crtbin0 -> 700 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Medium CA.crtbin0 -> 704 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Premium CA.crtbin0 -> 734 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Strong CA.crtbin0 -> 704 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-SignProjects.crtbin0 -> 806 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust Premium-Sig-01.crtbin0 -> 1217 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMark-Enc-01_CA.crtbin0 -> 919 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMark-Sig-01_CA.crtbin0 -> 919 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Enc-01.crtbin0 -> 930 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Enc-01a.crtbin0 -> 1028 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Enc-01b.crtbin0 -> 997 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Sig-01.cerbin0 -> 930 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Sig-01a.cerbin0 -> 933 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Sig-01b.cerbin0 -> 997 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Enc-01.crtbin0 -> 1018 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Sig-01_CA.crtbin0 -> 924 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Sig-01a.cerbin0 -> 1237 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Sig-01b.crtbin0 -> 1333 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust a-sign-Premium-Enc-01.crtbin0 -> 1057 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust a-sign-Premium-Enc-01a.crtbin0 -> 1057 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-0120041213.cerbin0 -> 1111 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-01_CA.crtbin0 -> 901 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-01_cACertificate1.crtbin0 -> 1110 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-01_cACertificate2.crtbin0 -> 1110 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-03.crtbin0 -> 975 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-TrustSign-Sig-01c.crtbin0 -> 1333 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-developer-02.cerbin0 -> 1155 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-token-enc-02.cerbin0 -> 1155 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-token-sig-02.cerbin0 -> 1155 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-uni.cerbin0 -> 786 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-01_cACertificate1.crtbin0 -> 860 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-01a.cerbin0 -> 864 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-01b.cerbin0 -> 861 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-03.cerbin0 -> 979 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-trust-Qual-02.cerbin0 -> 975 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-GSig-1.cerbin0 -> 1366 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-System-2.cerbin0 -> 1579 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-VPSig-1.cerbin0 -> 1367 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-VPSig-2.cerbin0 -> 1367 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-VSig-1.cerbin0 -> 1366 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-root-1.cerbin0 -> 1747 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-system-1.cerbin0 -> 1571 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Cybertrust Educational CA.crtbin0 -> 1094 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CA 1 2008_PN.cerbin0 -> 1287 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CA 2 2008_PN.cerbin0 -> 1287 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CA 3 2008_PN.cerbin0 -> 1287 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CRL-Signer 2 2008_PN.cerbin0 -> 1289 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CRL-Signer 3 2008_PN.cerbin0 -> 1289 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CRL-Signer CA 1 2008_PN.cerbin0 -> 1295 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified Root CA 1 2008_PN.cerbin0 -> 1256 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified Root CA 2 2008_PN.cerbin0 -> 1256 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified Root CA 3 2008_PN.cerbin0 -> 1256 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_CA_1_2006.crtbin0 -> 1321 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_CA_2_2006.crtbin0 -> 1321 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_CA_3_2007.crtbin0 -> 1290 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_Root_CA_1_2006.crtbin0 -> 1294 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_Root_CA_2_2006.crtbin0 -> 1290 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_Root_CA_3_2007.crtbin0 -> 1259 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax Secure Global eBusiness CA-1.crtbin0 -> 660 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax Secure eBusiness CA-1.crtbin0 -> 646 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax Secure eBusiness CA-2.crtbin0 -> 804 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax_Secure_Certificate_Authority_DER.cerbin0 -> 804 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/GTE CyberTrust Global Root.cerbin0 -> 606 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Halcom CA PO 2.crtbin0 -> 541 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterApplication.cerbin0 -> 946 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterEncryption.cerbin0 -> 949 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterExtern.cerbin0 -> 939 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterNet.cerbin0 -> 937 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterRoot.cerbin0 -> 836 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterSigner.cerbin0 -> 941 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TC TrustCenter Class 3 CA.crtbin0 -> 864 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TC TrustCenter Class 3 L1 CA V.crtbin0 -> 1300 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TCTrustCenter-Class2-CA.cerbin0 -> 864 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Thawte Premium Server CA.crtbin0 -> 811 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Thwate-ServerCA.cerbin0 -> 791 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMark-VSC-01.crtbin0 -> 1087 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMark-WebServer-01.crtbin0 -> 932 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMark-WebServer-01a.crtbin0 -> 999 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMarkToken-Enc-01.crtbin0 -> 1097 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMarkToken-Sig-01.crtbin0 -> 1097 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustSign-Enc-01_cACertificate1.crtbin0 -> 1087 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustSign-Enc-01_cACertificate2.crtbin0 -> 990 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/VeriSign Class 3 Secure Server CA.crtbin0 -> 1184 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Verisign-SecureServerCertificationAuthority.cerbin0 -> 568 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-cert-advanced.cerbin0 -> 1751 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-cert-government.cerbin0 -> 1563 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Inhouse-03.crtbin0 -> 1155 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Enc-03.crtbin0 -> 1163 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Sig-01.crtbin0 -> 1313 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Sig-02.cerbin0 -> 1159 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Sig-03.crtbin0 -> 1159 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-SSL-03.cerbin0 -> 1147 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-03.cerbin0 -> 1151 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Enc-01.crtbin0 -> 1053 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Enc-01a.crtbin0 -> 1053 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Sig-01.crtbin0 -> 1053 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Sig-01a.crtbin0 -> 1053 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-company-root-03.cerbin0 -> 1165 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-03.cerbin0 -> 1159 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-01.cerbin0 -> 1066 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-01.crtbin0 -> 1167 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-02.cerbin0 -> 1167 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-03.cerbin0 -> 1171 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-medium-01.cerbin0 -> 1068 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-medium-02.cerbin0 -> 1169 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-strong-01.cerbin0 -> 1068 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-strong-02.cerbin0 -> 1169 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-developer-01.cerbin0 -> 1054 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-01.cerbin0 -> 1046 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-01.crtbin0 -> 1045 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-01a.crtbin0 -> 1045 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-02.cerbin0 -> 1147 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-03.cerbin0 -> 1151 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-limited-03.crtbin0 -> 1155 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-premium-enc-01.cerbin0 -> 1058 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-premium-enc-02.cerbin0 -> 1159 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-premium-sig-01.crt.cerbin0 -> 1218 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-token-enc-01.cerbin0 -> 1054 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-token-sig-01.cerbin0 -> 1054 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-trust-nQual-0120041213.cerbin0 -> 865 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature Advanced.crtbin0 -> 1359 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature Basic med.crtbin0 -> 1563 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature Basic.crtbin0 -> 1412 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature SSL.crtbin0 -> 1333 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/mobilkom_A1-Signatur_20060912-20110912_SerNo027866.cerbin0 -> 1141 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/telekom-control-kommission-top-1.cerbin0 -> 1052 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMark-VSC-01.cerbin0 -> 991 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMark-WebServer-01.cerbin0 -> 1003 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMarkToken-Enc-01.cerbin0 -> 1001 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMarkToken-sig-01.cerbin0 -> 1001 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustSign-Enc-01.cerbin0 -> 991 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustSign-Sig-01.cerbin0 -> 1238 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/verisign.cerbin0 -> 903 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/versignc3.cerbin0 -> 576 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/www.buergerkarte.at.crtbin0 -> 1188 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Light CA.crtbin0 -> 700 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Medium CA.crtbin0 -> 704 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Premium CA.crtbin0 -> 734 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Strong CA.crtbin0 -> 704 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-SignProjects.crtbin0 -> 806 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-0120041213.cerbin0 -> 1111 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-01_CA.crtbin0 -> 901 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-01_cACertificate1.crtbin0 -> 1110 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-01_cACertificate2.crtbin0 -> 1110 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-03.crtbin0 -> 975 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-a-sign-uni.cerbin0 -> 786 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-01_cACertificate1.crtbin0 -> 860 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-01a.cerbin0 -> 864 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-01b.cerbin0 -> 861 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-03.cerbin0 -> 979 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-trust-Qual-02.cerbin0 -> 975 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/CA-root-1.cerbin0 -> 1747 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST Qualified Root CA 1 2008_PN.cerbin0 -> 1256 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST Qualified Root CA 2 2008_PN.cerbin0 -> 1256 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST Qualified Root CA 3 2008_PN.cerbin0 -> 1256 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST_Qualified_Root_CA_1_2006.crtbin0 -> 1294 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST_Qualified_Root_CA_2_2006.crtbin0 -> 1290 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST_Qualified_Root_CA_3_2007.crtbin0 -> 1259 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax Secure Global eBusiness CA-1.crtbin0 -> 660 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax Secure eBusiness CA-1.crtbin0 -> 646 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax Secure eBusiness CA-2.crtbin0 -> 804 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax_Secure_Certificate_Authority_DER.cerbin0 -> 804 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/GTE CyberTrust Global Root.cerbin0 -> 606 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Halcom CA PO 2.crtbin0 -> 541 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/StadtWienTrustcenterRoot.cerbin0 -> 836 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/TC TrustCenter Class 3 CA.crtbin0 -> 864 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/TCTrustCenter-Class2-CA.cerbin0 -> 864 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Thawte Premium Server CA.crtbin0 -> 811 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Thwate-ServerCA.cerbin0 -> 791 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Verisign-SecureServerCertificationAuthority.cerbin0 -> 568 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/a-cert-advanced.cerbin0 -> 1751 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/a-trust-nQual-0120041213.cerbin0 -> 865 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/eSignature Advanced.crtbin0 -> 1359 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/eSignature Basic.crtbin0 -> 1412 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/eSignature SSL.crtbin0 -> 1333 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/versignc3.cerbin0 -> 576 bytes
-rw-r--r--mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/www.buergerkarte.at.crtbin0 -> 1188 bytes
-rw-r--r--mocca-1.2.11/BKUCommonGUI/pom.xml43
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/META-INF/MANIFEST.MF3
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/AbstractHelpListener.java103
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUGUIFacade.java176
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUGUIImpl.java1665
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/BKUIcons.java57
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/DefaultHelpListener.java81
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HashDataTableModel.java63
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpKeyListener.java46
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpLinkFocusManager.java138
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpMouseListener.java54
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HelpViewer.java218
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/HyperlinkRenderer.java54
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/ImagePanel.java50
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/PinDocument.java74
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SecureViewerDialog.java360
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SwitchFocusFocusListener.java38
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/SwitchFocusListener.java44
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/html/RestrictedHTMLEditorKit.java49
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/html/RestrictedImageView.java67
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/FontProvider.java40
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/FontProviderException.java29
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/MimeFilter.java65
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/MimeTypes.java53
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/bku/gui/viewer/SecureViewerSaveDialog.java121
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/java/at/gv/egiz/stal/impl/ByteArrayHashDataInput.java107
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages.properties109
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/Messages_en.properties107
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip128.pngbin0 -> 7775 bytes
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip16.pngbin0 -> 787 bytes
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip24.pngbin0 -> 1227 bytes
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip32.pngbin0 -> 1753 bytes
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip48.pngbin0 -> 2771 bytes
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chiperling105.pngbin0 -> 4035 bytes
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/help.pngbin0 -> 441 bytes
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/help_focus.pngbin0 -> 343 bytes
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/BKUGUITest.java62
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/BKUGUIWorker.java199
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/DummyFontLoader.java41
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/test/java/at/gv/egiz/bku/gui/SecureViewerDialogTest.java167
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/test/resources/commons-logging.properties1
-rw-r--r--mocca-1.2.11/BKUCommonGUI/src/test/resources/log4j.properties19
-rw-r--r--mocca-1.2.11/BKUFonts/.classpath8
-rw-r--r--mocca-1.2.11/BKUFonts/.project36
-rw-r--r--mocca-1.2.11/BKUFonts/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--mocca-1.2.11/BKUFonts/.settings/org.eclipse.wst.common.component6
-rw-r--r--mocca-1.2.11/BKUFonts/.settings/org.eclipse.wst.common.project.facet.core.xml5
-rw-r--r--mocca-1.2.11/BKUFonts/.settings/org.maven.ide.eclipse.prefs9
-rw-r--r--mocca-1.2.11/BKUFonts/pom.xml41
-rw-r--r--mocca-1.2.11/BKUFonts/src/main/fonts/DejaVuLGCSans.ttfbin0 -> 498636 bytes
-rw-r--r--mocca-1.2.11/BKUFonts/src/main/fonts/DejaVuLGCSansMono.ttfbin0 -> 282704 bytes
-rw-r--r--mocca-1.2.11/BKUFonts/src/main/fonts/DejaVuLGCSerif.ttfbin0 -> 304924 bytes
-rw-r--r--mocca-1.2.11/BKUFonts/src/main/fonts/LICENSE99
-rw-r--r--mocca-1.2.11/BKUFonts/src/main/fonts/META-INF/services/at.gv.egiz.bku.gui.SecureFontProvider3
-rw-r--r--mocca-1.2.11/BKUGuiExt/pom.xml24
-rw-r--r--mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ActivationGUI.java251
-rw-r--r--mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ActivationGUIFacade.java34
-rw-r--r--mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/CardMgmtGUI.java73
-rw-r--r--mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ComparePinDocument.java102
-rw-r--r--mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/ExtendedPinDocument.java108
-rw-r--r--mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINManagementGUI.java761
-rw-r--r--mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINManagementGUIFacade.java129
-rw-r--r--mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINSpecRenderer.java39
-rw-r--r--mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINStatusRenderer.java61
-rw-r--r--mocca-1.2.11/BKUGuiExt/src/main/java/at/gv/egiz/bku/gui/PINStatusTableModel.java58
-rw-r--r--mocca-1.2.11/BKUGuiExt/src/main/resources/at/gv/egiz/bku/gui/ActivationMessages.properties83
-rw-r--r--mocca-1.2.11/BKUGuiExt/src/main/resources/at/gv/egiz/bku/gui/ActivationMessages_en.properties82
-rw-r--r--mocca-1.2.11/BKUGuiExt/src/test/java/at/gv/egiz/bku/gui/ActivationGuiTest.java62
-rw-r--r--mocca-1.2.11/BKUGuiExt/src/test/java/at/gv/egiz/bku/gui/BKUGUIWorker.java206
-rw-r--r--mocca-1.2.11/BKUGuiExt/src/test/java/at/gv/egiz/bku/gui/DummyFontLoader.java35
-rw-r--r--mocca-1.2.11/BKUHelp/pom.xml19
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/chip16.icobin0 -> 1150 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/cardnotsupported.html48
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/cardnotsupported.pngbin0 -> 2120 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.locked.html47
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.locked.pngbin0 -> 2727 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.notactivated.html44
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.notactivated.pngbin0 -> 3116 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.cardterminal.html43
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.cardterminal.pngbin0 -> 3362 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pcsc.html52
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pcsc.pngbin0 -> 3488 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pin.timeout.html45
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pin.timeout.pngbin0 -> 3866 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.ws.unreachable.html40
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.ws.unreachable.pngbin0 -> 2853 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.activate.pin.html47
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.cardpin.html42
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.cardpin1.pngbin0 -> 3163 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.cardpin2.pngbin0 -> 3189 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.change.pin.html48
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.hashdataviewer.html42
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.hashdataviewer.pngbin0 -> 11310 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.install.cacert.html58
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.install.cacert.pngbin0 -> 25299 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.activate.pngbin0 -> 6227 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.change.pngbin0 -> 6359 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-1.pngbin0 -> 8206 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-2.pngbin0 -> 7764 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-3.pngbin0 -> 8923 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-4.pngbin0 -> 8503 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt.html78
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt.pngbin0 -> 7478 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.verify.pngbin0 -> 5422 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.retry.html41
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.retry.pngbin0 -> 3729 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.signpin-1.pngbin0 -> 12818 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.signpin.html46
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.signpin.pngbin0 -> 4043 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.unblock.pin.html47
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.unsupported.mimetype.html41
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.verify.pin.html51
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/insertcard.html43
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/insertcard.pngbin0 -> 2270 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/wait.html40
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/wait.pngbin0 -> 1542 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/welcome.html41
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/de/welcome.pngbin0 -> 1537 bytes
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/help.css81
-rw-r--r--mocca-1.2.11/BKUHelp/src/main/webapp/help/index.html48
-rw-r--r--mocca-1.2.11/BKULocal/pom.xml136
-rw-r--r--mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/accesscontroller/SpringSecurityManager.java65
-rw-r--r--mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/conf/SpringConfigurator.java142
-rw-r--r--mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/gui/GUIProxy.java55
-rw-r--r--mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/gui/LocalHelpListener.java61
-rw-r--r--mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalBKUWorker.java64
-rw-r--r--mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSTALFactory.java126
-rw-r--r--mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSecureViewer.java129
-rw-r--r--mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/stal/LocalSignRequestHandler.java63
-rw-r--r--mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/BKURequestHandler.java113
-rw-r--r--mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/PINManagementServlet.java114
-rw-r--r--mocca-1.2.11/BKULocal/src/main/java/at/gv/egiz/bku/local/webapp/SpringBKUServlet.java39
-rw-r--r--mocca-1.2.11/BKULocal/src/main/resources/at/gv/egiz/bku/local/conf/accessControlConfig.xml96
-rw-r--r--mocca-1.2.11/BKULocal/src/main/resources/at/gv/egiz/bku/local/conf/defaultConf.properties61
-rw-r--r--mocca-1.2.11/BKULocal/src/main/resources/commons-logging.properties16
-rw-r--r--mocca-1.2.11/BKULocal/src/main/resources/log4j.properties34
-rw-r--r--mocca-1.2.11/BKULocal/src/main/webapp/META-INF/MANIFEST.MF3
-rw-r--r--mocca-1.2.11/BKULocal/src/main/webapp/META-INF/context.xml2
-rw-r--r--mocca-1.2.11/BKULocal/src/main/webapp/WEB-INF/applicationContext.xml109
-rw-r--r--mocca-1.2.11/BKULocal/src/main/webapp/WEB-INF/web.xml64
-rw-r--r--mocca-1.2.11/BKULocal/src/main/webapp/errorresponse.css12
-rw-r--r--mocca-1.2.11/BKULocal/src/main/webapp/img/chip16.icobin0 -> 1150 bytes
-rw-r--r--mocca-1.2.11/BKULocal/src/main/webapp/img/chip48.pngbin0 -> 2771 bytes
-rw-r--r--mocca-1.2.11/BKULocal/src/main/webapp/index.html64
-rw-r--r--mocca-1.2.11/BKULocal/src/test/java/at/gv/egiz/bku/local/stal/TestSignRequest.java55
-rw-r--r--mocca-1.2.11/BKULocal/src/test/resources/at/gv/egiz/bku/local/stal/sigInfo.xml79
-rw-r--r--mocca-1.2.11/BKUOnline/catalog.xml4
-rw-r--r--mocca-1.2.11/BKUOnline/nb-configuration.xml15
-rw-r--r--mocca-1.2.11/BKUOnline/nbactions.xml13
-rw-r--r--mocca-1.2.11/BKUOnline/pom.xml324
-rw-r--r--mocca-1.2.11/BKUOnline/private/cache/retriever/catalog.xml5
-rw-r--r--mocca-1.2.11/BKUOnline/private/cache/retriever/java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd362
-rw-r--r--mocca-1.2.11/BKUOnline/private/cache/retriever/www.w3.org/2001/XMLSchema.xsd2534
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/custom-binding/cardchannel-custom.xml40
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/custom-binding/stalservice-custom.xml116
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/custom-binding/staltypes-custom.xml47
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/accesscontroller/SpringSecurityManager.java63
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/conf/SpringConfigurator.java127
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/AppletDispatcher.java113
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/BKURequestHandler.java317
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/ResultServlet.java154
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/SessionTimeout.java49
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/ShutdownHandler.java48
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/bku/online/webapp/SpringBKUServlet.java37
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/RequestBrokerSTALFactory.java45
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALRequestBroker.java41
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALRequestBrokerImpl.java324
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALServiceImpl.java386
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/STALXJAXBContextFactory.java61
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/java/at/gv/egiz/stal/service/impl/TestSignatureData.java47
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/policy/50mocca.policy319
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/resources/at/gv/egiz/bku/online/conf/accessControlConfig.xml84
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/resources/at/gv/egiz/bku/online/conf/defaultConf.properties56
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/resources/commons-logging.properties16
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/resources/log4j.properties36
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/META-INF/MANIFEST.MF6
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/META-INF/context.xml19
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/PINManagement.jsp111
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/SLRequestForm.html215
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/applicationContext.xml134
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/mocca-conf.xml51
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/sun-jaxws.xml36
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/web.xml129
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/wsdl/stal.wsdl105
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/WEB-INF/wsdl/stal.xsd168
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/applet.jsp111
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/css/applet.css15
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/css/appletAlternative.css12
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/css/main.css55
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/errorresponse.css12
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/expired.html29
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/img/chip16.icobin0 -> 1150 bytes
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/img/chip32.pngbin0 -> 1753 bytes
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/img/webstart.pngbin0 -> 4643 bytes
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/index.html59
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/js/deployJava.js925
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/webapp/js/deployJava_orig.js725
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/wsdl/CardChannel.xsd148
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/wsdl/stal-service.wsdl114
-rw-r--r--mocca-1.2.11/BKUOnline/src/main/wsdl/stal-service.xsd183
-rw-r--r--mocca-1.2.11/BKUOnline/src/test/java/at/gv/egiz/bku/online/conf/SSLConfigTest.java40
-rw-r--r--mocca-1.2.11/BKUOnline/src/test/java/at/gv/egiz/stal/service/STALRequestBrokerTest.java534
-rw-r--r--mocca-1.2.11/BKUOnline/src/test/resources/appletTest.html29
-rw-r--r--mocca-1.2.11/BKUOnline/src/test/resources/applicationContext.xml55
-rw-r--r--mocca-1.2.11/BKUOnline/src/test/resources/commons-logging.properties16
-rw-r--r--mocca-1.2.11/BKUOnline/src/test/resources/log4j.properties29
-rw-r--r--mocca-1.2.11/BKUViewer/pom.xml48
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/SLXHTMLValidator.java273
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CSSValidatorSLXHTML.java95
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBackgroundColorSLXHTML.java57
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBackgroundSLXHTML.java93
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderBottomColorSLXHTML.java57
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderColorSLXHTML.java81
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderLeftColorSLXHTML.java57
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderRightColorSLXHTML.java57
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderSLXHTML.java85
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderTopColorSLXHTML.java57
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssColorSLXHTML.java99
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssFontSLXHTML.java59
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssLetterSpacingSLXHTML.java54
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginBottomSLXHTML.java60
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginLeftSLXHTML.java61
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginRightSLXHTML.java60
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginSLXHTML.java101
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginTopSLXHTML.java61
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingBottomSLXHTML.java60
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingLeftSLXHTML.java60
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingRightSLXHTML.java60
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingSLXHTML.java102
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingTopSLXHTML.java61
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssTextDecorationSLXHTML.java51
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssWordSpacingSLXHTML.java54
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/SLXHTMLInvalidParamException.java71
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/SLXHTMLStyle.java22
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/TableLayoutSLXHTML.java45
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/text/TextValidator.java91
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/META-INF/services/at.gv.egiz.bku.viewer.Validator2
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml-model-1.xsd473
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml-modules-1.xsd259
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml.xsd77
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-attribs-1.xsd77
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkphras-1.xsd161
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkpres-1.xsd37
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkstruct-1.xsd49
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-datatypes-1.xsd177
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-framework-1.xsd66
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-image-1.xsd45
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlphras-1.xsd163
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlpres-1.xsd39
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlstruct-1.xsd50
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-list-1.xsd99
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-pres-1.xsd51
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-struct-1.xsd130
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-style-1.xsd53
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-table-1.xsd272
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-text-1.xsd67
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xml.xsd145
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/org/w3c/css/properties/Config.properties32
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/org/w3c/css/properties/ProfilesProperties.properties30
-rw-r--r--mocca-1.2.11/BKUViewer/src/main/resources/org/w3c/css/properties/SLXHTMLProperties.properties641
-rw-r--r--mocca-1.2.11/BKUViewer/src/test/java/at/gv/egiz/bku/slxhtml/ValidatorTest.java67
-rw-r--r--mocca-1.2.11/BKUViewer/src/test/java/at/gv/egiz/bku/slxhtml/css/CssValidatorTest.java75
-rw-r--r--mocca-1.2.11/BKUViewer/src/test/java/at/gv/egiz/bku/text/TestTextValidator.java218
-rw-r--r--mocca-1.2.11/BKUViewer/src/test/resources/at/gv/egiz/bku/slxhtml/test.xhtml10
-rw-r--r--mocca-1.2.11/BKUViewer/src/test/resources/at/gv/egiz/bku/slxhtml/zugang.xhtml17
-rw-r--r--mocca-1.2.11/BKUViewer/src/test/resources/commons-logging.properties1
-rw-r--r--mocca-1.2.11/BKUViewer/src/test/resources/log4j.properties19
-rw-r--r--mocca-1.2.11/BKUWebStart/pom.xml301
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Configurator.java440
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Container.java264
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Launcher.java391
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/LogSecurityManager.java443
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/TLSServerCA.java142
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/AboutDialog.form139
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/AboutDialog.java165
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/BKUControllerInterface.java23
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/PINManagementInvoker.java72
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/jnlp/keystore.ksbin0 -> 5635 bytes
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip128.pngbin0 -> 7775 bytes
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip16.pngbin0 -> 787 bytes
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip24.pngbin0 -> 1227 bytes
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip32.pngbin0 -> 1753 bytes
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip48.pngbin0 -> 2771 bytes
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/splash.pngbin0 -> 41455 bytes
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/version.xml52
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/player.jnlp3
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/jnlp/template-local.xml40
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/jnlp/template-unstable.xml49
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/jnlp/template.xml49
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip16.pngbin0 -> 787 bytes
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip24.pngbin0 -> 1227 bytes
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip32.pngbin0 -> 1753 bytes
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip48.pngbin0 -> 2771 bytes
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chiperling96.pngbin0 -> 7378 bytes
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/conf/conf.zipbin0 -> 3045 bytes
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/messages.properties38
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/splash.pngbin0 -> 41455 bytes
-rw-r--r--mocca-1.2.11/BKUWebStart/src/main/resources/log4j.properties27
-rw-r--r--mocca-1.2.11/BKUWebStart/src/test/java/at/gv/egiz/bku/webstart/ConfiguratorTest.java197
-rw-r--r--mocca-1.2.11/BKUWebStart/src/test/resources/commons-logging.properties1
-rw-r--r--mocca-1.2.11/BKUWebStart/src/test/resources/log4j.properties35
-rw-r--r--mocca-1.2.11/BKUWebStartPackage/nbactions.xml10
-rw-r--r--mocca-1.2.11/BKUWebStartPackage/pom.xml160
-rw-r--r--mocca-1.2.11/BKUWebStartPackage/src/main/assemblies/zip-webstart.xml35
-rw-r--r--mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/keystore.ksbin0 -> 5635 bytes
-rw-r--r--mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip128.pngbin0 -> 7775 bytes
-rw-r--r--mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip16.pngbin0 -> 787 bytes
-rw-r--r--mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip24.pngbin0 -> 1227 bytes
-rw-r--r--mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip32.pngbin0 -> 1753 bytes
-rw-r--r--mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip48.pngbin0 -> 2771 bytes
-rw-r--r--mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/splash.pngbin0 -> 41455 bytes
-rw-r--r--mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/version.xml52
-rw-r--r--mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/player.jnlp3
-rw-r--r--mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/template-local.xml41
-rw-r--r--mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/template.xml49
-rw-r--r--mocca-1.2.11/LICENSE.txt202
-rw-r--r--mocca-1.2.11/NOTICE.txt17
-rw-r--r--mocca-1.2.11/STAL/catalog.xml4
-rw-r--r--mocca-1.2.11/STAL/pom.xml59
-rw-r--r--mocca-1.2.11/STAL/private/cache/retriever/catalog.xml5
-rw-r--r--mocca-1.2.11/STAL/private/cache/retriever/java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd362
-rw-r--r--mocca-1.2.11/STAL/private/cache/retriever/www.w3.org/2001/XMLSchema.xsd2534
-rw-r--r--mocca-1.2.11/STAL/src/main/java/META-INF/MANIFEST.MF3
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/ErrorResponse.java112
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/HashDataInput.java38
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/InfoboxReadRequest.java112
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/InfoboxReadResponse.java78
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/QuitRequest.java48
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STAL.java43
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STALFactory.java24
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STALRequest.java56
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STALResponse.java90
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/SignRequest.java114
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/SignResponse.java78
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/StatusRequest.java32
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/StatusResponse.java60
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/CanonicalizationMethodType.java125
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/DigestMethodType.java127
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/ObjectFactory.java178
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/ReferenceType.java230
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/SignatureMethodType.java125
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/SignedInfoType.java183
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/TransformsType.java88
-rw-r--r--mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/package-info.java25
-rw-r--r--mocca-1.2.11/STALExt/pom.xml20
-rw-r--r--mocca-1.2.11/STALExt/src/main/java/META-INF/MANIFEST.MF3
-rw-r--r--mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/APDUScriptRequest.java72
-rw-r--r--mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/APDUScriptResponse.java91
-rw-r--r--mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/PINManagementRequest.java31
-rw-r--r--mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/PINManagementResponse.java28
-rw-r--r--mocca-1.2.11/STALService/META-INF/MANIFEST.MF3
-rw-r--r--mocca-1.2.11/STALService/pom.xml26
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/GetHashDataInputFault.java55
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/STALPortType.java73
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/STALService.java72
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/translator/STALTranslator.java294
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/translator/TranslationException.java42
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/ErrorResponseType.java84
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetHashDataInputFaultType.java82
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetHashDataInputResponseType.java267
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetHashDataInputType.java156
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetNextRequestResponseType.java115
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetNextRequestType.java114
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/InfoboxReadRequestType.java102
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/InfoboxReadResponseType.java62
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/ObjectFactory.java316
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/QuitRequestType.java32
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/RequestType.java39
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/ResponseType.java38
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/SignRequestType.java97
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/SignResponseType.java62
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/StatusRequestType.java32
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/StatusResponseType.java60
-rw-r--r--mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/package-info.java2
-rw-r--r--mocca-1.2.11/STALService/src/test/java/at/gv/egiz/stal/service/translator/STALTranslatorTest.java146
-rw-r--r--mocca-1.2.11/STALXService/pom.xml25
-rw-r--r--mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ATRType.java100
-rw-r--r--mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/AttributeList.java71
-rw-r--r--mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/AttributeType.java264
-rw-r--r--mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/CommandAPDUType.java154
-rw-r--r--mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ObjectFactory.java172
-rw-r--r--mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ResetType.java64
-rw-r--r--mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ResponseAPDUType.java161
-rw-r--r--mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ResponseType.java82
-rw-r--r--mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ScriptType.java85
-rw-r--r--mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/VerifyAPDUType.java266
-rw-r--r--mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/package-info.java2
-rw-r--r--mocca-1.2.11/STALXService/src/main/java/at/gv/egiz/stalx/service/STALPortType.java45
-rw-r--r--mocca-1.2.11/STALXService/src/main/java/at/gv/egiz/stalx/service/STALService.java73
-rw-r--r--mocca-1.2.11/STALXService/src/main/java/at/gv/egiz/stalx/service/translator/STALXTranslationHandler.java217
-rw-r--r--mocca-1.2.11/STALXService/src/main/resources/wsdl/CardChannel.xsd148
-rw-r--r--mocca-1.2.11/STALXService/src/main/resources/wsdl/stal.xsd162
-rw-r--r--mocca-1.2.11/STALXService/src/main/resources/wsdl/stalx.wsdl123
-rw-r--r--mocca-1.2.11/STALXService/src/test/java/at/gv/egiz/stalx/service/ClientJAXBContextFactory.java52
-rw-r--r--mocca-1.2.11/STALXService/src/test/java/at/gv/egiz/stalx/service/STALServiceTest.java112
-rw-r--r--mocca-1.2.11/addResources/eclipseFormatter.xml267
-rw-r--r--mocca-1.2.11/bkucommon/pom.xml112
-rw-r--r--mocca-1.2.11/bkucommon/private/cache/retriever/www.w3.org/2000/09/xmldsig7
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/META-INF/MANIFEST.MF6
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/AccessControl.java79
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Action.java114
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Chain.java115
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Chains.java86
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Command.java116
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/ObjectFactory.java135
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Param.java109
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Rule.java285
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Rules.java86
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessChecker.java23
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessCheckerContext.java43
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessControllerFactory.java153
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/Action.java35
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AuthenticationClass.java37
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AuthenticationClassifier.java110
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/ChainChecker.java91
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/ChainResult.java49
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/CommandParamChecker.java68
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/InfoboxParamChecker.java74
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/RuleChecker.java203
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/RuleResult.java32
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/SecurityManagerFacade.java118
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/UserAction.java36
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/AbstractBindingProcessor.java89
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessor.java78
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManager.java107
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManagerImpl.java330
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrl.java111
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnection.java82
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionImpl.java539
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionSPI.java64
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlResponse.java98
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/ExpiryRemover.java67
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FixedFormParameters.java28
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameter.java39
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameterImpl.java93
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameterStore.java146
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/HTTPBindingProcessor.java844
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/HttpUtil.java79
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/Id.java31
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/IdFactory.java106
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/IdImpl.java83
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/InputDecoder.java41
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/InputDecoderFactory.java89
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/MultiPartFormDataInputDecoder.java133
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/ProcessingContext.java59
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/RemovalStrategy.java26
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/SLCommandInvokerImpl.java95
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/XWWWFormUrlInputDecoder.java58
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/XWWWFormUrlInputIterator.java386
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/InputStreamPartSource.java61
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/SLResultPart.java71
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/CertValidator.java13
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/CertValidatorImpl.java107
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/Configuration.java100
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/Configurator.java467
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/IAIKCommonsLog.java144
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/IAIKCommonsLogFactory.java59
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/AccessControlInvocation.java21
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/CreateXMLSignatureCommand.java25
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/CreateXMLSignatureResult.java20
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/ErrorResult.java20
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/GetStatusCommand.java26
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/GetStatusResult.java26
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxReadCommand.java28
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxReadResult.java20
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxUpdateCommand.java23
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxUpdateResult.java21
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InvocationStrategy.java20
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/NullOperationCommand.java20
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/NullOperationResult.java20
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommand.java31
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandContext.java55
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandFactory.java395
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandInvoker.java46
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLMarshallerFactory.java172
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLResult.java45
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLSourceContext.java64
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLTargetContext.java51
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractAssocArrayInfobox.java299
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractBinaryFileInfobox.java66
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractInfoboxCommandImpl.java83
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractInfoboxImpl.java45
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AssocArrayInfobox.java27
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/BinaryFileInfobox.java27
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CardChannelInfoboxImpl.java235
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CertificatesInfoboxImpl.java112
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureCommandImpl.java219
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureResultImpl.java107
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/DataObjectHashDataInput.java59
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/ErrorResultImpl.java67
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/GetStatusCommandImpl.java77
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/GetStatusResultImpl.java52
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/IdentityLinkInfoboxImpl.java290
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/Infobox.java70
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxFactory.java90
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadCommandImpl.java96
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadResultFileImpl.java160
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadResultImpl.java64
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxUpdateCommandImpl.java74
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxUpdateResultImpl.java43
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/NullOperationCommandImpl.java43
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/NullOperationResultImpl.java48
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SLCommandImpl.java81
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SLResultImpl.java297
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/STALHelper.java242
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SVPersonendatenInfoboxImpl.java323
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/AlgorithmMethodFactory.java79
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/AlgorithmMethodFactoryImpl.java172
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/ByteArrayDereferencer.java65
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/DataObject.java1289
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/IdValueFactory.java37
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/IdValueFactoryImpl.java127
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/LocRefDereferencer.java112
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALPrivateKey.java128
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALProvider.java71
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignature.java184
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignatureException.java92
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/Signature.java995
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureContext.java129
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureLocation.java235
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SimpleDOMErrorHandler.java98
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/URIDereferncerAdapter.java103
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTReference.java112
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTTransforms.java124
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLBindingException.java31
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLCanceledException.java26
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLCommandException.java30
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLException.java88
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLExceptionMessages.java56
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLRequestException.java30
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLRuntimeException.java37
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLVersionException.java28
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLViewerException.java28
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ResourceFontLoader.java61
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidationException.java38
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/Validator.java25
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidatorFactory.java178
-rw-r--r--mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/accesscontrol/config/AccessControl.xsd128
-rw-r--r--mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/Core-1.2.xsd877
-rw-r--r--mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/Core.20020225.xsd33
-rw-r--r--mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/Core.20020831.xsd10
-rw-r--r--mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/xml.xsd145
-rw-r--r--mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/xmldsig-core-schema.xsd308
-rw-r--r--mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/xmldsig-transforms.xsd41
-rw-r--r--mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slexceptions/SLExceptionMessages.properties104
-rw-r--r--mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slexceptions/SLExceptionMessages_en.properties102
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/accesscontroller/AuthenticationClassifierTest.java28
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/accesscontroller/ConfigTest.java104
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/accesscontroller/RuleCheckerTest.java87
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/BindingProcessorManagerTest.java51
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/DataUrlConnectionTest.java178
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/DummyStalFactory.java38
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/EmptyMultipartSLRequestTest.java98
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/ExpiryRemoverTest.java70
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/HttpBindingProcessorTest.java328
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/IdFactoryTest.java63
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/InputDecoderFactoryTest.java96
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/MultiTestDataUrlConnection.java49
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/MultipartSLRequestTest.java59
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/NullOperationTest.java54
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/RequestFactory.java116
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/SSLDataUrlConnectionTest.java40
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/TestDataUrlConnection.java150
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/XWWWFormUrlInputIteratorTest.java299
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/conf/CertValidatorTest.java35
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/conf/DummyConfiguration.java32
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/SLCommandFactoryTest.java90
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureComandImplTest.java103
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/ErrorResultImplTest.java46
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadComandImplTest.java104
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/NullOperationResultImplTest.java42
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/SVPersonendatenInfoboxImplTest.java146
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureTest.java853
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/stal/dummy/DummySTAL.java154
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/MOASPClient.java276
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/SLClient.java175
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/SLException.java40
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/TestCreateAndVerifySignature.java163
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/AllSignatoriesType.java64
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/AnyChildrenType.java96
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CMSContentBaseType.java51
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CMSDataObjectOptionalMetaType.java106
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CanonicalizationMethodType.java118
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CheckResultType.java114
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentBaseType.java139
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentExLocRefBaseType.java56
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentOptionalRefType.java84
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentRequiredRefType.java54
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateSignatureEnvironmentProfile.java115
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateSignatureLocationType.java109
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateTransformsInfoProfile.java115
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateXMLSignatureRequest.java50
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateXMLSignatureRequestType.java466
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateXMLSignatureResponseType.java160
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/DSAKeyValueType.java236
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/DataObjectInfoType.java211
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/DigestMethodType.java120
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ErrorResponseType.java107
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/FinalDataMetaInfoType.java82
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/InputDataType.java120
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/KeyInfoType.java151
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/KeyStorageType.java67
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/KeyValueType.java101
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/MOAFault.java70
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ManifestRefsCheckResultInfoType.java53
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ManifestRefsCheckResultType.java52
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ManifestType.java120
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/MetaInfoType.java151
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ObjectFactory.java1032
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ObjectType.java180
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/PGPDataType.java114
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/PublicAuthorityType.java78
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/RSAKeyValueType.java102
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ReferenceType.java223
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ReferencesCheckResultInfoType.java52
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ReferencesCheckResultType.java52
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/RetrievalMethodType.java136
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SPKIDataType.java92
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureMethodType.java124
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignaturePropertiesType.java120
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignaturePropertyType.java153
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureType.java204
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureValueType.java108
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureVerificationPortType.java57
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureVerificationService.java87
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignedInfoType.java176
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformParameterType.java226
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformType.java125
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformsInfoType.java106
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformsType.java85
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyCMSSignatureRequest.java85
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyCMSSignatureRequestType.java171
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyCMSSignatureResponseType.java95
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyTransformsDataType.java91
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyTransformsInfoProfile.java115
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyXMLSignatureRequestType.java439
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyXMLSignatureResponseType.java263
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/X509DataType.java109
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/X509IssuerSerialType.java107
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/XMLContentType.java79
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/XMLDataObjectAssociationType.java106
-rw-r--r--mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/package-info.java18
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/MOA-SPSS-1.3.wsdl57
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/MOA-SPSS-1.3.xsd469
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/accesscontroller/AccessControlConfig.xml78
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/accesscontroller/SimpleChainTest.xml39
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/accesscontroller/www.a-trust.at.crt28
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Multipart.txt.bin337
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/MultipartEmpty.txt17
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/MultipartFromTutorial.txt37
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/NOPMultipartDataUrl.txt47
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Nulloperation.xml1
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/NulloperationRequest.txt.bin1
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Statemachine1.txt36
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Stylesheet.txt56
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/XWWWFormUrlEncoded1.txt1
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/XWWWFormUrlEncoded2.txt1
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/stylesheet.xslt16
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-Qual-01a.cerbin0 -> 1111 bytes
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-Qual-02a.cerbin0 -> 975 bytes
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-Qual-03a.cerbin0 -> 975 bytes
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-nQual-01a.cerbin0 -> 865 bytes
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-nQual-03.cerbin0 -> 979 bytes
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-Qual-01a.cerbin0 -> 1111 bytes
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-Qual-02a.cerbin0 -> 975 bytes
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-Qual-03a.cerbin0 -> 975 bytes
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-nQual-01a.cerbin0 -> 865 bytes
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-nQual-03.cerbin0 -> 979 bytes
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-SSL-03.cer26
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-03.cer27
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-light-01a.cer21
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-light-02a.cer27
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-light-03.cer27
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-medium-01a.cer21
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-medium-02a.cer27
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/testCerts/www.a-trust.at.derbin0 -> 1230 bytes
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/createxmlsignaturerequest/CreateXMLSignatureRequest.xml23
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/Cert.p12bin0 -> 4158 bytes
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObject1.bin6
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObject1.txt1
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObject1.xml6
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Base64Content_1.xml13
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Detached_1.xml11
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Detached_Base64Content.xml13
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Detached_LocRefContent.xml13
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_LocRefContent_1.xml11
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_LocRefContent_2.xml13
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Reference_1.xml13
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_XMLContent_1.xml14
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_XMLContent_2.xml17
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/Document.dtd3
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureEnvironment1.xml6
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Base64_1.xml23
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Base64_2.xml18
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Base64_3.xml20
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Reference_1.xml11
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_XMLContent_1.xml13
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/TransformsInfo_1.xml304
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/TransformsInfo_2.xml397
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/XMLDocument.xsd15
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.Invalid-1.xml1
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.Invalid-2.xml1
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.xml1
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/testApplicationContext.xml53
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/commons-logging.properties1
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/log4j.properties19
-rw-r--r--mocca-1.2.11/bkucommon/src/test/resources/moaspss/CreateXMLSignatureRequest.xml16
-rw-r--r--mocca-1.2.11/htdocs/index.php127
-rw-r--r--mocca-1.2.11/htdocs/mocca-t_s.pngbin0 -> 8976 bytes
-rw-r--r--mocca-1.2.11/htdocs/mocca_s.pngbin0 -> 3952 bytes
-rw-r--r--mocca-1.2.11/nbactions.xml27
-rw-r--r--mocca-1.2.11/pom.xml258
-rw-r--r--mocca-1.2.11/smcc/keystore.ksbin0 -> 5635 bytes
-rw-r--r--mocca-1.2.11/smcc/pom.xml46
-rw-r--r--mocca-1.2.11/smcc/src/main/java/META-INF/MANIFEST.MF3
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java805
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/AbstractSignatureCard.java121
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/BELPICCard.java284
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/CancelledException.java39
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/CardNotSupportedException.java62
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ChangeReferenceDataAPDUSpec.java95
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ExclSignatureCardProxy.java110
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/Exclusive.java28
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/FileNotFoundException.java38
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ITCard.java298
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/LockedException.java38
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/LogCardChannel.java129
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/NewReferenceDataAPDUSpec.java60
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/NotActivatedException.java44
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINConfirmationException.java26
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINFormatException.java26
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINMgmtSignatureCard.java44
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINOperationAbortedException.java45
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINSpec.java239
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ResetRetryCounterAPDUSpec.java38
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/STARCOSCard.java888
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SWCard.java396
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SecurityStatusNotSatisfiedException.java38
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SignatureCard.java125
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SignatureCardException.java65
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SignatureCardFactory.java401
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/TimeoutException.java39
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/VerificationFailedException.java65
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/VerifyAPDUSpec.java200
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/conf/SMCCConfiguration.java45
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/ModifyPINGUI.java36
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/ModifyPINProvider.java48
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/PINGUI.java42
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/PINProvider.java51
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/CardReader.java92
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/DefaultCardReader.java106
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/PinpadCardReader.java703
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/ReaderFactory.java125
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/ISO7816Utils.java368
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/SMCCHelper.java150
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/SmartCardIO.java204
-rw-r--r--mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/TransparentFileInputStream.java194
-rw-r--r--mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/ACOSCard.properties24
-rw-r--r--mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/BELPICCard.properties3
-rw-r--r--mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/ITCard.properties3
-rw-r--r--mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/STARCOSCard.properties22
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/AbstractAppl.java57
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardAppl.java43
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardChannelEmul.java52
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardEmul.java106
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardTerminalEmul.java64
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardTest.java222
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardTestSuite.java29
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/File.java38
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/PIN.java45
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/TransparentFileInputStreamTest.java208
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03ApplDEC.java151
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03ApplSIG.java77
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03CardChannelEmul.java98
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03CardEmul.java31
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03CardTest.java92
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04ApplDEC.java296
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04ApplSIG.java87
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04CardChannelEmul.java75
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04CardEmul.java32
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04CardTest.java143
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSAppl.java79
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSApplDEC.java334
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSApplSIG.java302
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardChannelEmul.java261
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardEmul.java38
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java230
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTestSuite.java27
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/CancelChangePINProvider.java39
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/CancelPINProvider.java29
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/ChangePINProvider.java49
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/DummyChangePINGUI.java68
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/DummyPINGUI.java48
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/InterruptPINProvider.java34
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/InvalidChangePINProvider.java56
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/InvalidPINProvider.java48
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/SMCCTestPINProvider.java43
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSAppl.java72
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSApplGewoehnlicheSignatur.java349
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSApplInfobox.java165
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSApplSichereSignatur.java375
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSCardChannelEmul.java434
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSCardEmul.java54
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSCardTest.java346
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSG3CardChannelEmul.java46
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSG3CardEmul.java57
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSG3CardTest.java119
-rw-r--r--mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/util/ISO7816UtilsTest.java175
-rw-r--r--mocca-1.2.11/smcc/src/test/resources/IdentityLink.binbin0 -> 395 bytes
-rw-r--r--mocca-1.2.11/smcc/src/test/resources/log4j.properties19
-rw-r--r--mocca-1.2.11/smccSTAL/pom.xml48
-rw-r--r--mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/AbstractPINProvider.java60
-rw-r--r--mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/SignPINGUI.java136
-rw-r--r--mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/SignPINProvider.java105
-rw-r--r--mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/VerifyPINGUI.java76
-rw-r--r--mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/VerifyPINProvider.java72
-rw-r--r--mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/AbstractBKUWorker.java206
-rw-r--r--mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/AbstractRequestHandler.java86
-rw-r--r--mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/AbstractSMCCSTAL.java192
-rw-r--r--mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/DomainIdConverter.java85
-rw-r--r--mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/HashDataInputDisplay.java46
-rw-r--r--mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/InfoBoxReadRequestHandler.java141
-rw-r--r--mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/SMCCSTALRequestHandler.java33
-rw-r--r--mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/STALMessageConsumer.java21
-rw-r--r--mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/SecureViewer.java43
-rw-r--r--mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/SignRequestHandler.java136
-rw-r--r--mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/StatusRequestHandler.java72
-rw-r--r--mocca-1.2.11/smccSTAL/src/test/java/at/gv/egiz/smcc/ASN1Test.java105
-rw-r--r--mocca-1.2.11/smccSTAL/src/test/java/at/gv/egiz/smcc/AbstractSMCCSTALTest.java126
-rw-r--r--mocca-1.2.11/smccSTAL/src/test/resources/log4j.properties19
-rw-r--r--mocca-1.2.11/smccSTALExt/pom.xml24
-rw-r--r--mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/pin/gui/ManagementPINGUI.java88
-rw-r--r--mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/pin/gui/ManagementPINProvider.java89
-rw-r--r--mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/CardMgmtRequestHandler.java177
-rw-r--r--mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/GetPINStatusException.java41
-rw-r--r--mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/PINManagementRequestHandler.java371
-rw-r--r--mocca-1.2.11/src/main/site/apt/index.apt104
-rw-r--r--mocca-1.2.11/src/main/site/apt/notes.apt4
-rw-r--r--mocca-1.2.11/src/main/site/site.xml30
-rw-r--r--mocca-1.2.11/utils/pom.xml77
-rw-r--r--mocca-1.2.11/utils/src/main/java/META-INF/MANIFEST.MF3
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ATRType.java100
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/AttributeList.java71
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/AttributeType.java264
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/CommandAPDUType.java154
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ObjectFactory.java171
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ResetType.java64
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ResponseAPDUType.java161
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ResponseType.java78
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ScriptType.java80
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/VerifyAPDUType.java266
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/package-info.java2
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/personenbindung/_20020506_/CompressedIdentityLinkType.java310
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/personenbindung/_20020506_/ObjectFactory.java76
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/personenbindung/_20020506_/package-info.java25
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AccessAuthorizationType.java112
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AllSignatoriesType.java71
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AnyChildrenType.java98
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AnyMixedChildrenType.java102
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AuthenticationClassType.java80
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64ContentType.java87
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64OptRefContentType.java85
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLContentType.java116
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLLocRefContentType.java147
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLLocRefOptRefContentType.java85
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLLocRefReqRefContentType.java85
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLOptRefContentType.java85
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/BindingType.java88
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSDataObjectOptionalMetaType.java117
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSDataObjectRequiredMetaType.java59
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSEncryptedContentType.java113
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSRecipientPublicKeyType.java83
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSToBeEncryptedType.java113
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CheckResultType.java116
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateCMSSignatureRequestType.java151
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateCMSSignatureResponseType.java83
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashInfoRequestType.java163
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashInfoResponseType.java169
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashRequestType.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashResponseType.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateXMLSignatureRequestType.java151
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateXMLSignatureResponseType.java88
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DataObjectAssociationType.java113
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DataObjectInfoType.java188
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptCMSRequestType.java143
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptCMSResponseType.java83
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptXMLRequestType.java180
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptXMLResponseType.java265
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptCMSRequestType.java152
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptCMSResponseType.java83
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptXMLRequest.java57
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptXMLRequestType.java157
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptXMLResponseType.java189
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptedDataType.java110
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptionInfoType.java243
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ErrorResponseType.java105
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetPropertiesRequest.java57
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetPropertiesRequestType.java57
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetPropertiesResponseType.java265
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetStatusRequestType.java116
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetStatusResponseType.java85
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/HashDataType.java113
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxAssocArrayPairType.java83
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxAvailableRequestType.java53
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxAvailableResponseType.java95
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxCreateRequestType.java284
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxCreateResponseType.java53
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxDeleteRequestType.java88
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxDeleteResponseType.java53
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadDataAssocArrayType.java132
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadParamsAssocArrayType.java450
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadParamsBinaryFileType.java85
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadRequestType.java174
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadResponseType.java113
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxTypeType.java74
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxUpdateParamsAssocArrayType.java297
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxUpdateRequestType.java174
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxUpdateResponseType.java53
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ManifestRefsCheckResultInfoType.java109
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ManifestRefsCheckResultType.java116
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/MetaInfoType.java152
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/NullOperationRequestType.java53
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/NullOperationResponseType.java53
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ObjectFactory.java1265
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/QualifiedBoxIdentifierType.java124
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ReferencesCheckResultInfoType.java103
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ReferencesCheckResultType.java116
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/RequesterIDType.java110
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ReturnResultType.java77
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/SignatureInfoCreationType.java148
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/SignatureInfoVerificationType.java118
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/SignatureLocationType.java117
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ToBeEncryptedType.java325
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/TokenStatusType.java74
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/TransformsInfoType.java123
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/UserConfirmationSimpleType.java80
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/UserConfirmationType.java102
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerificationResultType.java105
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyCMSSignatureRequestType.java177
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyCMSSignatureResponseType.java103
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyHashInfoRequestType.java169
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyHashRequestType.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyHashResponseType.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyXMLSignatureRequestType.java151
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyXMLSignatureResponseType.java205
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLContentType.java86
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLRecipientPublicKeyType.java112
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLToBeEncryptedNewContentType.java85
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLToBeEncryptedNewType.java175
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/package-info.java25
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020225_/ErrorResponseType.java98
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020225_/ObjectFactory.java280
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020225_/package-info.java9
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020831_/ObjectFactory.java112
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/AbstractAddressType.java159
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/AbstractPersonType.java159
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/CorporateBodyType.java260
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/DefinedAlternativeNameTypeType.java83
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/DefinedRelationType.java95
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/IdentificationType.java333
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/InternetAddressType.java158
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/MaritalStatusType.java80
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/MobileTelcomNumberType.java83
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/ObjectFactory.java436
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PersonDataType.java262
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PersonNameType.java636
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PhysicalPersonType.java565
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PostalAddressType.java627
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/SexType.java77
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TelcomNumberListType.java197
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TelcomNumberType.java225
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TelephoneAddressType.java162
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TypedPostalAddressType.java157
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/package-info.java25
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/DebugOutputStream.java48
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/DebugReader.java58
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/DebugWriter.java55
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/HexDump.java75
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/NullOutputStream.java10
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/StreamUtil.java101
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/URLEncodingInputStream.java62
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/URLEncodingOutputStream.java134
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/URLEncodingWriter.java57
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/binding/Protocol.java41
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/FormDataURLSupplier.java26
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/HTTPURLProtocolHandlerImpl.java119
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/SimpleFormDataContextImpl.java41
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/StreamData.java61
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URIResolverAdapter.java96
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URLDereferencer.java108
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URLDereferencerContext.java27
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URLProtocolHandler.java39
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/dom/DOMUtils.java115
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/CompressedIdentityLinkFactory.java416
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/IdentityLinkFactory.java428
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/IdentityLinkTransformer.java188
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/CitizenPublicKey.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/IdentityLink.java315
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/PersonData.java91
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/PhysicalPersonData.java143
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/marshal/MarshallerFactory.java60
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/marshal/NamespacePrefixMapperImpl.java76
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/org/apache/tomcat/util/http/AcceptLanguage.java151
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/NamespaceContextCallback.java41
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/RedirectCallback.java42
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/RedirectEventFilter.java263
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/RedirectUnmarshallerListener.java68
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/impl/SignatureLocationType.java50
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/impl/TransformsInfoType.java79
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/impl/XMLContentType.java69
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/validation/ReportingValidationEventHandler.java64
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/xades/QualifyingPropertiesException.java40
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/xades/QualifyingPropertiesFactory.java230
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/xmldsig/KeyTypeNotSupportedException.java65
-rw-r--r--mocca-1.2.11/utils/src/main/java/at/gv/egiz/xmldsig/KeyValueFactory.java279
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ActionType.java96
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AdviceType.java89
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AnyType.java87
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AssertionType.java318
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AttributeDesignatorType.java98
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AttributeStatementType.java78
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AttributeType.java78
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AudienceRestrictionConditionType.java80
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AuthenticationStatementType.java165
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AuthorityBindingType.java123
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AuthorizationDecisionStatementType.java163
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ConditionAbstractType.java41
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ConditionsType.java141
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/DecisionType.java61
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/EvidenceType.java82
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/NameIdentifierType.java123
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ObjectFactory.java418
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/StatementAbstractType.java41
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectConfirmationType.java135
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectLocalityType.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectStatementAbstractType.java77
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectType.java96
-rw-r--r--mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/package-info.java9
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/AnyType.java119
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLIdentifierType.java174
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLRefType.java113
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLRefsType.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLValuesType.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertIDListType.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertIDType.java114
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertificateValuesType.java133
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertifiedRolesListType.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/ClaimedRolesListType.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CommitmentTypeIndicationType.java180
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CommitmentTypeQualifiersListType.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CompleteCertificateRefsType.java120
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CompleteRevocationRefsType.java176
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CounterSignatureType.java86
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/DataObjectFormatType.java200
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/DigestAlgAndValueType.java112
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/DocumentationReferencesType.java94
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/EncapsulatedPKIDataType.java115
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/HashDataInfoType.java116
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/IdentifierType.java112
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/IntegerListType.java93
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/NoticeReferenceType.java113
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPIdentifierType.java145
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPRefType.java113
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPRefsType.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPValuesType.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/ObjectFactory.java755
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/ObjectIdentifierType.java141
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OtherCertStatusRefsType.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OtherCertStatusValuesType.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/QualifierType.java74
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/QualifyingPropertiesReferenceType.java149
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/QualifyingPropertiesType.java176
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/RevocationValuesType.java176
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SPUserNoticeType.java113
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SigPolicyQualifiersListType.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignaturePolicyIdType.java170
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignaturePolicyIdentifierType.java144
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignatureProductionPlaceType.java169
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignedDataObjectPropertiesType.java191
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignedPropertiesType.java148
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignedSignaturePropertiesType.java200
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignerRoleType.java113
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/TimeStampType.java150
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/UnsignedDataObjectPropertiesType.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/UnsignedPropertiesType.java148
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/UnsignedSignaturePropertiesType.java338
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/package-info.java25
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/CanonicalizationMethodType.java125
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/DSAKeyValueType.java243
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/DigestMethodType.java127
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/KeyInfoType.java158
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/KeyValueType.java108
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ManifestType.java127
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ObjectFactory.java576
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ObjectType.java187
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/PGPDataType.java121
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/RSAKeyValueType.java109
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ReferenceType.java230
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/RetrievalMethodType.java143
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SPKIDataType.java99
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignatureMethodType.java131
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignaturePropertiesType.java127
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignaturePropertyType.java160
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignatureType.java211
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignatureValueType.java115
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignedInfoType.java183
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/TransformType.java132
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/TransformsType.java92
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/X509DataType.java116
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/X509IssuerSerialType.java114
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/package-info.java25
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/BasePointParamsType.java145
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/CharTwoFieldElemType.java88
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/CharTwoFieldParamsType.java95
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/CurveParamsType.java146
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/DomainParamsType.java175
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ECDSAKeyValueType.java113
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ECPointType.java113
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ExplicitParamsType.java141
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/FieldElemType.java59
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/FieldParamsType.java59
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ObjectFactory.java180
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/OddCharExtensionFieldElemType.java86
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/OddCharExtensionFieldParamsType.java119
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/PnBFieldParamsType.java148
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/PrimeFieldElemType.java86
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/PrimeFieldParamsType.java90
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/TnBFieldParamsType.java90
-rw-r--r--mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/package-info.java25
-rw-r--r--mocca-1.2.11/utils/src/test/cardchannel/marshalled.xml1
-rw-r--r--mocca-1.2.11/utils/src/test/cardchannel/script.xml6
-rw-r--r--mocca-1.2.11/utils/src/test/java/at/gv/egiz/bku/utils/HexDumpTest.java49
-rw-r--r--mocca-1.2.11/utils/src/test/java/at/gv/egiz/bku/utils/URLEncodingOutputStreamTest.java147
-rw-r--r--mocca-1.2.11/utils/src/test/java/at/gv/egiz/idlink/CompressIdentityLink.java54
-rw-r--r--mocca-1.2.11/utils/src/test/java/at/gv/egiz/idlink/IdentityLink.java153
-rw-r--r--mocca-1.2.11/utils/src/test/java/at/gv/egiz/slbinding/RedirectTest.java219
-rw-r--r--mocca-1.2.11/utils/src/test/java/at/gv/egiz/urldereferencer/FormDataTest.java96
-rw-r--r--mocca-1.2.11/utils/src/test/java/cardchannel/UnmarshalTest.java71
-rw-r--r--mocca-1.2.11/utils/src/test/java/saml/KeyValueAttributeTypeTest.java129
-rw-r--r--mocca-1.2.11/utils/src/test/requests/CreateCMSSignatureRequest01.xml14
-rw-r--r--mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest01.xml27
-rw-r--r--mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest01_bound.xml3
-rw-r--r--mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest01_redirect.xml5
-rw-r--r--mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest02.xml304
-rw-r--r--mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest02.xml_bound.xml1
-rw-r--r--mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest02.xml_redirect.txt165
-rw-r--r--mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest03.xml10
-rw-r--r--mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest03.xml_bound.xml1
-rw-r--r--mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest03.xml_redirect.txt3
-rw-r--r--mocca-1.2.11/utils/src/test/resources/BigRequest.xml1060
-rw-r--r--mocca-1.2.11/utils/src/test/resources/at/gv/egiz/idlink/IdentityLinkTest.p12bin0 -> 4222 bytes
-rw-r--r--mocca-1.2.11/utils/src/test/resources/at/gv/egiz/idlink/certified.cerbin0 -> 1279 bytes
-rw-r--r--mocca-1.2.11/utils/src/test/resources/at/gv/egiz/idlink/secure.cerbin0 -> 1269 bytes
-rw-r--r--mocca-1.2.11/utils/src/test/resources/commons-logging.properties1
-rw-r--r--mocca-1.2.11/utils/src/test/resources/log4j.properties19
1354 files changed, 133002 insertions, 0 deletions
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
--- /dev/null
+++ b/mocca-1.2.11/BKUApplet/keystore.ks
Binary files 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 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUApplet</artifactId>
+ <name>BKU Applet</name>
+ <version>1.2.11</version>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>unpack</id>
+ <goals>
+ <goal>unpack-dependencies</goal>
+ </goals>
+ <configuration>
+ <includeGroupIds>at.gv.egiz</includeGroupIds>
+ <!-- don't include transitive dependency BKUFonts [runtime] from BKUCommonGUI -->
+ <excludeTransitive>true</excludeTransitive>
+ <outputDirectory>${project.build.outputDirectory}</outputDirectory>
+ <excludes>META-INF\/</excludes>
+ </configuration>
+ </execution>
+ <execution>
+ <!-- appletviewer target/test-classes/appletTest.html
+ | commons-logging and iaik_jce_me4se are transitive dependencies
+ |-->
+ <id>copy_testapplet</id>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${project.build.directory}/test-classes</outputDirectory>
+ <includeGroupIds>at.gv.egiz,commons-logging,iaik</includeGroupIds>
+ <includeArtifactIds>commons-logging,iaik_jce_me4se</includeArtifactIds>
+ <stripVersion>true</stripVersion>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>maven-buildnumber-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>create</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <doCheck>false</doCheck>
+ <doUpdate>false</doUpdate>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>sign</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <archive>
+ <addMavenDescriptor>false</addMavenDescriptor>
+ <index>false</index>
+ <manifest>
+ <addClasspath>false</addClasspath>
+ <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+ </manifest>
+ <manifestEntries>
+ <Implementation-Build>${project.version}-r${buildNumber}</Implementation-Build>
+ </manifestEntries>
+ </archive>
+ <alias>test-applet signer</alias>
+ <keystore>./keystore.ks</keystore>
+ <!-- attention: configuration inherited by pkcs11-sign, uncomment!
+ (removed in maven-jar-pluging-2.2-mocca) -->
+ <storepass>storepass</storepass>
+ <keypass>keypass</keypass>
+ <verify>true</verify>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <profiles>
+ <profile>
+ <id>pkcs11-sign</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <version>2.2-mocca</version>
+ <configuration>
+ <keystore>NONE</keystore>
+ <type>PKCS11</type>
+ <providerClass>iaik.pkcs.pkcs11.provider.IAIKPkcs11</providerClass>
+ <alias>a-sit</alias>
+ <storepass>${pkcs11-pass}</storepass>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+ <dependencies>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>smcc</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>STAL</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>STALService</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>smccSTAL</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUCommonGUI</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ </dependencies>
+</project> \ 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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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<JAXBElement<? extends RequestType>> requests;
+ List<JAXBElement<? extends ResponseType>> responses = new ArrayList<JAXBElement<? extends ResponseType>>();
+
+ 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<? extends RequestType> r : requests) {
+ sb.append(r.getValue().getClass());
+ sb.append(' ');
+ }
+ log.info(sb.toString());
+ }
+
+ List<STALRequest> stalRequests = new ArrayList<STALRequest>();
+ for (JAXBElement<? extends RequestType> 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<STALResponse> 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<? extends ResponseType> 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<STALRequest> 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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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<HashDataInput> 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<GetHashDataInputResponseType.Reference> 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<GetHashDataInputResponseType.Reference> getHashDataInput(List<ReferenceType> signedReferences)
+ throws GetHashDataInputFault, Exception {
+ GetHashDataInputType request = new GetHashDataInputType();
+ request.setSessionId(sessId);
+
+// HashMap<String, ReferenceType> idSignedRefMap = new HashMap<String, ReferenceType>();
+ 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<HashDataInput> verifyHashDataInput(List<ReferenceType> signedReferences, List<GetHashDataInputResponseType.Reference> hashDataInputs)
+ throws DigestException, NoSuchAlgorithmException, Exception {
+
+ ArrayList<HashDataInput> verifiedHashDataInputs = new ArrayList<HashDataInput>();
+
+ 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<List<?>> 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 <clemens.orthacker@iaik.tugraz.at>
+ */
+public class URLFontLoader extends SwingWorker<Font, Object> 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<? extends RequestType> 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
--- /dev/null
+++ b/mocca-1.2.11/BKUApplet/src/test/resources/DejaVuLGCSansMono.ttf
Binary files 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 @@
+<!--
+ 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.
+-->
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <title>MOCCA Applet</title>
+ <link rel="shortcut icon" href="img/chip16.ico" type="image/x-icon">
+ </head>
+ <body>
+ <p>Run applet test with appletviewer (-J-d32) -J-Djava.security.policy=appletviewer.policy appletTest.html</p>
+ <applet code="at.gv.egiz.bku.online.applet.BKUApplet.class"
+ archive="../BKUApplet-1.2.8-SNAPSHOT.jar, commons-logging.jar , iaik_jce_me4se.jar"
+ width=190 height=130 name="moccaapplet" id="moccaapplet">
+ <param name="GuiStyle" value="simple"/>
+ <param name="Locale" value="ja_JA"/>
+ <!--param name="Background" value="jar:file:/home/clemens/workspace/mocca/BKUApplet/target/BKUApplet-1.0-SNAPSHOT.jar!/images/help.png"/-->
+ <!--param name="Background" value="http://localhost:3495/img/BackgroundChipperling.png"/-->
+ <param name="BackgroundColor" value="#ff0000"/>
+ <param name="WSDL_URL" value="http://localhost:8080/BKUOnline/stal?wsdl"/>
+ <param name="HelpURL" value="http://localhost:8080/BKUOnline/help/"/>
+ <param name="SessionId" value="TestSession"/>
+ <param name="RedirectURL" value="http://www.google.com/bkuResult"/>
+ <param name="RedirectTarget" value="_parent"/>
+ </applet>
+ </body>
+</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
--- /dev/null
+++ b/mocca-1.2.11/BKUAppletExt/keystore.ks
Binary files 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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+ <action>
+ <actionName>CUSTOM-PackageNoTests</actionName>
+ <displayName>PackageNoTests</displayName>
+ <goals>
+ <goal>package</goal>
+ </goals>
+ <properties>
+ <maven.test.skip>true</maven.test.skip>
+ </properties>
+ </action>
+ </actions>
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 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUAppletExt</artifactId>
+ <name>BKU Applet Extension</name>
+ <version>1.2.11</version>
+ <description />
+ <dependencies>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>STALExt</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>STALXService</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>smccSTAL</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUApplet</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUGuiExt</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>smccSTALExt</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>maven-buildnumber-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>create</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <doCheck>false</doCheck>
+ <doUpdate>false</doUpdate>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>sign</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <archive>
+ <addMavenDescriptor>false</addMavenDescriptor>
+ <index>false</index>
+ <manifest>
+ <addClasspath>false</addClasspath>
+ <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+ </manifest>
+ <manifestEntries>
+ <Implementation-Build>${project.version}-r${buildNumber}</Implementation-Build>
+ </manifestEntries>
+ </archive>
+ <alias>test-applet signer</alias>
+ <keystore>./keystore.ks</keystore>
+ <storepass>storepass</storepass>
+ <keypass>keypass</keypass>
+ <verify>true</verify>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>unpack</id>
+ <goals>
+ <goal>unpack-dependencies</goal>
+ </goals>
+ <configuration>
+ <includeGroupIds>at.gv.egiz</includeGroupIds>
+ <excludeTransitive>true</excludeTransitive>
+ <outputDirectory>${project.build.outputDirectory}</outputDirectory>
+ <excludes>META-INF\/</excludes>
+ </configuration>
+ </execution>
+ <execution>
+ <!-- appletviewer target/test-classes/appletTest.html
+ | commons-logging and iaik_jce_me4se are transitive dependencies
+ |-->
+ <id>copy_testapplet</id>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${project.build.directory}/test-classes</outputDirectory>
+ <includeGroupIds>commons-logging,iaik</includeGroupIds>
+ <includeArtifactIds>commons-logging,iaik_jce_me4se</includeArtifactIds>
+ <stripVersion>true</stripVersion>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <profiles>
+ <profile>
+ <id>pkcs11-sign</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <version>2.2-mocca</version>
+ <configuration>
+ <keystore>NONE</keystore>
+ <type>PKCS11</type>
+ <providerClass>iaik.pkcs.pkcs11.provider.IAIKPkcs11</providerClass>
+ <alias>a-sit</alias>
+ <storepass>${pkcs11-pass}</storepass>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+</project> \ 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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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<STALResponse> 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 @@
+<!--
+ 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.
+-->
+<html>
+ <body>
+ <center>
+ <applet code="at.gv.egiz.bku.online.applet.PINManagementApplet.class"
+ archive="../BKUAppletExt-1.0.2-SNAPSHOT.jar, commons-logging.jar , iaik_jce_me4se.jar"
+ width=270 height=180>
+ <param name="GuiStyle" value="simple"/>
+ <param name="Locale" value="ja_JA"/>
+ <!--param name="Background" value="jar:file:/home/clemens/workspace/mocca/BKUApplet/target/BKUApplet-1.0-SNAPSHOT.jar!/images/help.png"/-->
+ <!--param name="Background" value="http://localhost:3495/img/BackgroundChipperling.png"/-->
+ <param name="WSDL_URL" value="https://danu.gv.at:3496/stal?wsdl"/>
+ <param name="HelpURL" value="http://apps.egiz.gv.at/bkuonline/help/"/>
+ <param name="SessionId" value="TestSession"/>
+ <param name="RedirectURL" value="http://localhost:3495/bkuResult"/>
+ </applet>
+ </center>
+ </body>
+</html> \ 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 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUCertificates</artifactId>
+ <!-- DON'T CHANGE VERSION UNLESS THE INCLUDED CERTIFICATES CHANGED
+ | DON'T MAKE -SNAPSHOT VERSIONS HERE, THE RELEASE-PLUGIN WILL THEN TRY TO UPDATE -->
+ <version>1.1</version>
+ <name>BKU Certificates</name>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <configuration>
+ <archive>
+ <!--index>true</index-->
+ <manifest>
+ <!-- BKUWebStart requires Implementation-Version attribute
+ | BKUWebStart assumes certs to be under at/gv/egiz/bku/certs
+ |-->
+ <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+ </manifest>
+ </archive>
+ <verbose>true</verbose>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project> \ 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-CERT GLOBALTRUST.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Light CA.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Medium CA.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Premium CA.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Sign Strong CA.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-SignProjects.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust Premium-Sig-01.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMark-Enc-01_CA.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMark-Sig-01_CA.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Enc-01.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Enc-01a.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Enc-01b.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Sig-01.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Sig-01a.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustMarkToken-Sig-01b.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Enc-01.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Sig-01_CA.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Sig-01a.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust TrustSign-Sig-01b.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust a-sign-Premium-Enc-01.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust a-sign-Premium-Enc-01a.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-0120041213.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-01_CA.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-01_cACertificate1.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-01_cACertificate2.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-Qual-03.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-TrustSign-Sig-01c.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-developer-02.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-token-enc-02.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-token-sig-02.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-a-sign-uni.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-01_cACertificate1.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-01a.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-01b.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-Trust-nQual-03.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/A-trust-Qual-02.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-GSig-1.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-System-2.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-VPSig-1.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-VPSig-2.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-VSig-1.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-root-1.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/CA-system-1.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Cybertrust Educational CA.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CA 1 2008_PN.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CA 2 2008_PN.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST Qualified CA 3 2008_PN.cer
Binary files 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
--- /dev/null
+++ 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
Binary files 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
--- /dev/null
+++ 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
Binary files 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
--- /dev/null
+++ 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
Binary files 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
--- /dev/null
+++ 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
Binary files 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
--- /dev/null
+++ 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
Binary files 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
--- /dev/null
+++ 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
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_CA_1_2006.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_CA_2_2006.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_CA_3_2007.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_Root_CA_1_2006.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_Root_CA_2_2006.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/D-TRUST_Qualified_Root_CA_3_2007.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax Secure Global eBusiness CA-1.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax Secure eBusiness CA-1.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax Secure eBusiness CA-2.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Equifax_Secure_Certificate_Authority_DER.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/GTE CyberTrust Global Root.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Halcom CA PO 2.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterApplication.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterEncryption.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterExtern.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterNet.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterRoot.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/StadtWienTrustcenterSigner.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TC TrustCenter Class 3 CA.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TC TrustCenter Class 3 L1 CA V.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TCTrustCenter-Class2-CA.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Thawte Premium Server CA.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Thwate-ServerCA.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMark-VSC-01.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMark-WebServer-01.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMark-WebServer-01a.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMarkToken-Enc-01.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustMarkToken-Sig-01.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustSign-Enc-01_cACertificate1.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/TrustSign-Enc-01_cACertificate2.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/VeriSign Class 3 Secure Server CA.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/Verisign-SecureServerCertificationAuthority.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-cert-advanced.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-cert-government.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Inhouse-03.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Enc-03.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Sig-01.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Sig-02.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Premium-Sig-03.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-SSL-03.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-03.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Enc-01.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Enc-01a.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Sig-01.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-Token-Sig-01a.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-company-root-03.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-03.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-01.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-01.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-02.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-light-03.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-medium-01.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-medium-02.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-strong-01.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-corporate-strong-02.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-developer-01.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-01.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-01.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-01a.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-02.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-light-03.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-limited-03.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-premium-enc-01.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-premium-enc-02.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-premium-sig-01.crt.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-token-enc-01.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-sign-token-sig-01.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/a-trust-nQual-0120041213.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature Advanced.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature Basic med.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature Basic.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/eSignature SSL.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/mobilkom_A1-Signatur_20060912-20110912_SerNo027866.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/telekom-control-kommission-top-1.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMark-VSC-01.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMark-WebServer-01.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMarkToken-Enc-01.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustMarkToken-sig-01.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustSign-Enc-01.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/trustSign-Sig-01.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/verisign.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/versignc3.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/certStore/toBeAdded/www.buergerkarte.at.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Light CA.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Medium CA.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Premium CA.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Sign Strong CA.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-SignProjects.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-0120041213.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-01_CA.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-01_cACertificate1.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-01_cACertificate2.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-Qual-03.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-a-sign-uni.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-01_cACertificate1.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-01a.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-01b.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-Trust-nQual-03.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/A-trust-Qual-02.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/CA-root-1.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST Qualified Root CA 1 2008_PN.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST Qualified Root CA 2 2008_PN.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST Qualified Root CA 3 2008_PN.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST_Qualified_Root_CA_1_2006.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST_Qualified_Root_CA_2_2006.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/D-TRUST_Qualified_Root_CA_3_2007.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax Secure Global eBusiness CA-1.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax Secure eBusiness CA-1.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax Secure eBusiness CA-2.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Equifax_Secure_Certificate_Authority_DER.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/GTE CyberTrust Global Root.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Halcom CA PO 2.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/StadtWienTrustcenterRoot.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/TC TrustCenter Class 3 CA.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/TCTrustCenter-Class2-CA.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Thawte Premium Server CA.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Thwate-ServerCA.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/Verisign-SecureServerCertificationAuthority.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/a-cert-advanced.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/a-trust-nQual-0120041213.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/eSignature Advanced.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/eSignature Basic.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/eSignature SSL.crt
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/versignc3.cer
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCertificates/src/main/resources/at/gv/egiz/bku/certs/trustStore/www.buergerkarte.at.crt
Binary files 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 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUCommonGUI</artifactId>
+ <name>BKU GUI</name>
+ <version>1.2.11</version>
+ <dependencies>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>smcc</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>STAL</artifactId>
+ <version>1.2.11</version>
+ <scope>compile</scope>
+ </dependency>
+ <!-- see BKUFonts.pom
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUFonts</artifactId>
+ <version>1.0</version>
+ <scope>runtime</scope>
+ </dependency-->
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <configuration>
+ <debug>false</debug>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project> \ 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.
+ * <br/>
+ * The help URL is build as [baseURL]/[locale]/[helpTopic].html
+ * (note that no session information is contained).
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+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<HashDataInput> 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<HashDataInput> 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<HashDataInput> 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<HashDataInput> signedReferences;
+ ActionListener backListener;
+ String backCommand;
+
+ public SignedReferencesSelectionListener(List<HashDataInput> 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<HashDataInput> sr;
+ ActionListener bl;
+ String bc;
+
+ public SignedReferencesListDisplayer(List<HashDataInput> 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 <clemens.orthacker@iaik.tugraz.at>
+ */
+public class BKUIcons {
+
+ protected static final Log log = LogFactory.getLog(BKUIcons.class);
+
+ /** 16x16, 24x24, 32x32, 48x48, 128x128 pixels */
+ public static final ArrayList<Image> icons = new ArrayList<Image>();
+
+ 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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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<HashDataInput> hashDataInputs;
+
+ public HashDataTableModel(List<HashDataInput> 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 <thomas.zefferer@iaik.tugraz.at>
+ */
+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 <thomas.zefferer@iaik.tugraz.at>
+ */
+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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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("<html><u>" + hrefText + "</u></html>");
+ 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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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<String> SUPPORTED_MIME_TYPES = new ArrayList<String>();
+ 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 <thomas.zefferer@iaik.tugraz.at>
+ */
+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 <thomas.zefferer@iaik.tugraz.at>
+ */
+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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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 <clemens.orthacker@iaik.tugraz.at>
+ */
+/**
+ * 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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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<String , String> FILE_EXTENSIONS = new HashMap<String, String>() {{
+ 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<String , String> DESCRIPTIONS = new HashMap<String, String>() {{
+ 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=<html>Willkommen</html>
+title.insertcard=<html>Keine B\u00FCrgerkarte gefunden</html>
+title.cardnotsupported=<html>Die Karte wird nicht unterst\u00FCtzt</html>
+title.verify.pin=<html>Karte wird gelesen</html>
+title.sign=<html>Signatur erstellen</html>
+title.verify.pinpad=<html>PIN eingeben
+title.error=<html>Fehler</html>
+title.warning=<html>Achtung
+title.entry.timeout=<html>Zeit\u00FCberschreitung</html>
+title.retry=<html>Falsche PIN</html>
+title.wait=<html>Bitte warten</html>
+title.signature.data=<html>Signaturdaten</html>
+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=<html>Bitte warten...</html>
+wait=<html>Bitte warten...</html>
+cardnotsupported=<html>Bitte die B\u00FCrgerkarte in den Kartenleser stecken</html>
+insertcard=<html>Bitte die B\u00FCrgerkarte in den Kartenleser stecken</html>
+enterpin=<html>{0} eingeben</html>
+enterpin.pinpad=<html>PIN am Kartenleser eingeben</html>
+enterpin.pinpad.direct=<html>{0} ({1} stellig) am Kartenleser eingeben</html>
+hashdatalink=<html><a href=\"anzeige\">Signaturdaten anzeigen</a></html>
+hashdatalink.tiny=<html><a href=\"anzeige\">Signaturdaten</a></html>
+hashdatalink.focus=<html><a href=\"anzeige\">[Signaturdaten anzeigen]</a></html>
+hashdatalink.tiny.focus=<html><a href=\"anzeige\">[Signaturdaten]</a></html>
+#message.hashdata=<html>Hinweis: Dies ist eine Voransicht des zu signierenden Inhalts. F\u00FCr eine standardkonforme Darstellung siehe Hilfe (i).</html>
+#message.hashdata=<html>Dies ist eine Voransicht des zu signierenden Inhaltes. F\u00FCr Details siehe Hilfe (i).</html>
+#verwenden sie bitte die von ihrem System zur Verf\u00FCgung gestellte {0} Anwendung.
+hashdatalist=<html>{0} Signaturdaten:</html>
+hashdata.viewer=<html>Signaturdaten werden im Betrachter angezeigt
+unsupported.mimetype=<html>Signaturdaten k\u00F6nnen nicht angezeigt werden
+retries.last=<html>Letzter Versuch!</html>
+retries=<html>Noch {0} Versuche</html>
+retries.pinpad.last=<html>Eingabe wiederholen, letzter Versuch!</html>
+retries.pinpad=<html>Eingabe wiederholen, noch {0} Versuche</html>
+overwrite=<html>M\u00F6chten Sie das existierende Dokument {0} \u00FCberschreiben?</html>
+help=<html>Hilfe zu {0}</html>
+
+warning.xhtml=<html>Hinweis: Dies ist eine Voransicht des zu signierenden Inhalts. F\u00FCr eine standardkonforme Darstellung siehe Hilfe (i).</html>
+label.pin=<html>{0}:</html>
+label.pinsize=<html>({0} stellig)</html>
+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=<html>Keine Signaturdaten verf\u00FCgbar: {0}</html>
+error.display.hashdata=<html>Signaturdaten konnten nicht dargestellt werden: {0}</html>
+error.write.hashdata=<html>Die Signaturdaten konnten nicht gespeichert werden: {0}</html>
+error.invalid.hash=<html>Die Signaturdaten sind ung\u00FCltig: {0}</html>
+error.ws.unreachable=<html>Der Server ist nicht erreichbar</html>
+#error.ws.unreachable=<html>Das Web-Service ist nicht erreichbar: {0}</html>
+error.pcsc=<html>Es konnte keine PC/SC Schnittstelle gefunden werden</html>
+error.cardterminal=<html>Es konnte kein Smartcard-Leser gefunden werden</html>
+error.unknown.param=<html>Ein Fehler trat auf: {0}</html>
+error.unknown=<html>Ein Fehler trat auf</html>
+error.test=<html>Fehler1 {0} - Fehler2 {1}</html>
+error.card.locked=<html>B\u00FCrgerkarte ist gesperrt</html>
+error.card.notactivated=<html>Die B\u00FCrgerkarte ist nicht aktiviert</html>
+error.pin.timeout=<html>Zeit\u00FCberschreitung bei Eingabe der PIN</html>
+error.viewer=<html>Der Inhalt kann nicht dargestellt werden: {0}
+error.external.link=<html>Externer Link {0} wird nicht ge\u00F6ffnet</html>
+error.config=<html>Fehlerhafte Konfiguration des Systems: {0}</html>
+
+# 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=<html>Welcome</html>
+title.insertcard=<html>No citizen card found</html>
+title.cardnotsupported=<html>This card is not supported</html>
+title.verify.pin=<html>Reading card</html>
+title.sign=<html>Create signature</html>
+title.verify.pinpad=<html>Enter PIN
+title.error=<html>Error</html>
+title.warning=<html>Warning
+title.entry.timeout=<html>Timeout</html>
+title.retry=<html>Wrong PIN</html>
+title.wait=<html>Please wait</html>
+title.signature.data=<html>Signature data</html>
+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=<html>Please wait...</html>
+wait=<html>Please wait...</html>
+insertcard=<html>Please insert your citizen card into the reader</html>
+cardnotsupported=<html>Please insert your citizen card into the reader</html>
+enterpin=<html>Enter {0}</html>
+enterpin.pinpad=<html>Enter PIN on card reader pinpad</html>
+enterpin.pinpad.direct=<html>Enter {0} ({1} digits) on card reader pinpad</html>
+hashdatalink=<html><a href=\"anzeige\">Display signature data</a></html>
+hashdatalink.tiny=<html><a href=\"anzeige\">signature data</a></html>
+hashdatalink.focus=<html><a href=\"anzeige\">[Display signature data]</a></html>
+hashdatalink.tiny.focus=<html><a href=\"anzeige\">[signature data]</a></html>
+#message.hashdata=<html>Remark: This is a preview of the data to-be signed. For standards compliant display see help.</html>
+hashdatalist=<html>{0} signature data objects:</html>
+hashdata.viewer=<html>Signature data is being displayed in viewer
+unsupported.mimetype=<html>Signature data cannot be displayed
+retries.last=<html>Last try!</html>
+retries=<html>{0} tries left</html>
+retries.pinpad.last=<html>Re-enter pin, last try!</html>
+retries.pinpad=<html>Re-enter pin, {0} tries left</html>
+overwrite=<html>Overwrite {0}?</html>
+help=<html>Help topic {0}</html>
+
+warning.xhtml=<html>Remark: This is a preview of the data to-be signed. For standard-compliant display see help.</html>
+label.pin=<html>{0}:</html>
+label.pinsize=<html>({0} digits)</html>
+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=<html>No signature data available: {0}</html>
+error.display.hashdata=<html>Could not display signature data: {0}</html>
+error.write.hashdata=<html>Could not save signature data: {0}</html>
+error.invalid.hash=<html>Invalid signature data: {0}</html>
+error.ws.unreachable=<html>Server unreachable</html>
+#error.ws.unreachable=<html>Web-service unreachable: {0}</html>
+error.pcsc=<html>No PC/SC interface for smartcard access provided</html>
+error.cardterminal=<html>Could not find smartcard reader</html>
+error.unknown.param=<html>An error occured: {0}</html>
+error.unknown=<html>An error occured</html>
+error.test=<html>Error1 {0} - Error2 {1}</html>
+error.card.locked=<html>Citizen card is locked</html>
+error.card.notactivated=<html>Citizen card not activated</html>
+error.pin.timeout=<html>Timeout during PIN entry</html>
+error.viewer=<html>Failed to display contents: {0}
+error.external.link=<html>Cannot open external link {0}</html>
+error.config=<html>Incorrect system configuration: {0}</html>
+
+# 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip128.png
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip16.png
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip24.png
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip32.png
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chip48.png
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/chiperling105.png
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/help.png
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUCommonGUI/src/main/resources/at/gv/egiz/bku/gui/help_focus.png
Binary files 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(
+ "<xml>HashDataInput_002</xml>".getBytes(),
+ "ref-id-000000002",
+ "application/xhtml+xml",
+ "UTF-8",
+ "file.xhtml");
+
+ HashDataInput signedRef3 = new ByteArrayHashDataInput(
+ "<xml>HashDataInput_003</xml>".getBytes(),
+ "ref-id-000000003",
+ "application/xhtml+xml",
+ "UTF-8",
+ "file2.xhtml");
+
+ HashDataInput signedRef4 = new ByteArrayHashDataInput(
+ "<xml>HashDataInput_004</xml>".getBytes(),
+ "ref-id-000000004",
+ "text/xml",
+ "UTF-8",
+ "file.xml");
+
+ //
+ List<HashDataInput> 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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry excluding="**" kind="src" output="target/classes" path="src/main/fonts"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
+ <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
+ <classpathentry kind="output" path="target/classes"/>
+</classpath>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>BKUFonts</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.wst.common.project.facet.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.wst.validation.validationbuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.maven.ide.eclipse.maven2Builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+ <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.maven.ide.eclipse.maven2Nature</nature>
+ <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+ </natures>
+</projectDescription>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-modules id="moduleCoreId" project-version="1.5.0">
+ <wb-module deploy-name="BKUFonts">
+ <wb-resource deploy-path="/" source-path="/src/main/fonts"/>
+ </wb-module>
+</project-modules>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<faceted-project>
+ <installed facet="jst.java" version="6.0"/>
+ <installed facet="jst.utility" version="1.0"/>
+</faceted-project>
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 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUFonts</artifactId>
+ <version>1.2</version>
+ <name>BKU Fonts</name>
+ <description>
+ 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
+
+ </description>
+ <build>
+ <resources>
+ <resource>
+ <directory>src/main/fonts</directory>
+ </resource>
+ </resources>
+ </build>
+</project> \ 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
--- /dev/null
+++ b/mocca-1.2.11/BKUFonts/src/main/fonts/DejaVuLGCSans.ttf
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUFonts/src/main/fonts/DejaVuLGCSansMono.ttf
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUFonts/src/main/fonts/DejaVuLGCSerif.ttf
Binary files 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 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUGuiExt</artifactId>
+ <version>1.2.11</version>
+ <name>BKU GUI Extension</name>
+ <dependencies>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>STALXService</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>smccSTAL</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ </dependencies>
+</project> \ 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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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<PINSpec, STATUS> 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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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<PINSpec, STATUS> 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);
+
+ /**
+ * <b>direct</b> pinpad pin-entry dialog
+ */
+ public void showModifyPINDirect(DIALOG type, PINSpec pinSpec, int retries);
+
+ /**
+ * <b>start/finish</b> 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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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("<html>" + messages.getString(PINManagementGUIFacade.STATUS_NOT_ACTIVE) + "</html>");
+ } else if (pinStatus == STATUS.ACTIV) {
+ super.setForeground(GREEN);
+ super.setText("<html>" + messages.getString(PINManagementGUIFacade.STATUS_ACTIVE) + "</html>");
+ } else if (pinStatus == STATUS.BLOCKED) {
+ super.setForeground(RED);
+ super.setText("<html>" + messages.getString(PINManagementGUIFacade.STATUS_BLOCKED) + "</html>");
+ } else {
+ super.setForeground(Color.BLACK);
+ super.setText("<html>" + messages.getString(PINManagementGUIFacade.STATUS_UNKNOWN) + "</html>");
+ }
+ }
+}
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 <clemens.orthacker@iaik.tugraz.at>
+ */
+public class PINStatusTableModel extends DefaultTableModel {
+
+// protected static final Log log = LogFactory.getLog(PINStatusTableModel.class);
+ protected Class[] types;
+
+ public PINStatusTableModel(Map<PINSpec, STATUS> 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=<html>Aktivierung</html>
+title.pin.mgmt=<html>PIN Verwaltung</html>
+title.activate.pin=<html>PIN aktivieren</html>
+title.change.pin=<html>PIN \u00E4ndern</html>
+title.unblock.pin=<html>PIN entsperren</html>
+#title.verify.pin=<html>PIN Eingeben</html>
+title.activate.success=<html>Erfolg</html>
+title.change.success=<html>Erfolg</html>
+title.unblock.success=<html>Erfolg</html>
+
+# removed message.* prefix to reuse keys as help keys
+pin.mgmt=<html>Die Karte verf\u00FCgt \u00FCber {0} PINs</html>
+# software pin-entry messages
+activate.pin=<html>{0} eingeben und best\u00E4tigen</html>
+change.pin=<html>{0} eingeben und best\u00E4tigen</html>
+unblock.pin=<html>PUK zu {0} eingeben</html>
+# start/finish pin-entry messages
+activate.pinpad.current=<html>Transport-PIN am Kartenleser eingeben
+activate.pinpad.new=<html>Neue PIN am Kartenleser eingeben
+activate.pinpad.confirm=<html>Neue PIN am Kartenleser best\u00E4tigen
+change.pinpad.current=<html>Alte PIN am Kartenleser eingeben
+change.pinpad.new=<html>Neue PIN am Kartenleser eingeben
+change.pinpad.confirm=<html>Neue PIN am Kartenleser best\u00E4tigen
+unblock.pinpad.current=<html>PUK am Kartenleser eingeben
+unblock.pinpad.new=<html>Neue PIN am Kartenleser eingeben
+unblock.pinpad.confirm=<html>Neue PIN am Kartenleser best\u00E4tigen
+# direct pin-entry messages
+activate.pinpad.direct=<html>{0} ({1} stellig) am Kartenleser eingeben und wiederholen (jeweils best\u00E4tigen).</html>
+change.pinpad.direct=<html>Alte {0} ({1} stellig) am Kartenleser eingeben, danach neue {0} eingeben und wiederholen (jeweils best\u00E4tigen). </html>
+unblock.pinpad.direct=<html>{0} ({1} stellig) am Kartenleser eingeben (und best\u00E4tigen).</html>
+# response messages
+activate.success=<html>{0} wurde erfolgreich aktiviert
+change.success=<html>{0} wurde erfolgreich ge\u00E4ndert
+unblock.success=<html>{0} wurde erfolgreich entsperrt
+
+label.activation=<html>e-card Aktivierungsprozess</html>
+label.activation.step=<html>Schritt {0}</html>
+label.activation.idle=<html>Warte auf Server...</html>
+label.old.pin=<html>Alte {0}:</html>
+label.puk=<html>{0} PUK:</html>
+label.new.pin=<html>Neue {0}:</html>
+label.repeat.pin=<html>Best\u00E4tigung:</html>
+
+button.activate=Aktivieren
+button.change=\u00C4ndern
+button.unblock=Entsperren
+button.verify=Abfragen
+
+help.activation=help.activation
+help.pin.mgmt=help.pin.mgmt
+
+err.status=<html>Der Status der PINs konnte nicht \u00FCberpr\u00FCft werden.</html>
+err.activate=<html>Beim Aktivieren der {0} trat ein Fehler auf.</html>
+err.change=<html>Beim \u00C4ndern der {0} trat ein Fehler auf.</html>
+err.unblock=<html>Das Entsperren der {0} wird nicht unterst\u00FCtzt.</html>
+err.verify=<html>VERIFY ERROR (TODO)</html>
+err.retries=<html>Falsche {0}, noch {1} Versuche</html>
+err.locked=<html>{0} gesperrt.</html>
+err.not.active=<html>{0} nicht aktiviert.</html>
+err.pin.format=<html>Ung\u00FCltige {0} L\u00E4nge, verlangt sind {1} Stellen.</html>
+err.pin.confirmation=<html>{0} und Best\u00E4tigung stimmen nicht \u00FCberein.</html>
+err.pin.operation.aborted=<html>Der Vorgang f\u00FCr {0} wurde abgebrochen.</html>
+err.unsupported.card=<html>Die Karte wird nicht unterst\u00FCtzt</html>
+
+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=<html>Activation</html>
+title.pin.mgmt=<html>PIN Management</html>
+title.activate.pin=<html>Activate PIN</html>
+#title.verify.pin=<html>Enter PIN</html>
+title.change.pin=<html>Change PIN</html>
+title.unblock.pin=<html>Unblock PIN</html>
+title.activate.success=<html>Success</html>
+title.change.success=<html>Success</html>
+title.unblock.success=<html>Success</html>
+
+# removed message.* prefix to reuse keys as help keys
+pin.mgmt=<html>{0} PINs available
+# software pin-entry messages
+activate.pin=<html>Enter and confirm {0}
+change.pin=<html>Enter and confirm {0}
+unblock.pin=<html>Enter PUK for {0}
+# start/finish pin-entry messages
+activate.pinpad.current=<html>Enter transport-PIN on cardreader
+activate.pinpad.new=<html>Enter new PIN on cardreader
+activate.pinpad.confirm=<html>Confirm new PIN on cardreader
+change.pinpad.current=<html>Enter old PIN on cardreader
+change.pinpad.new=<html>Enter new PIN on cardreader
+change.pinpad.confirm=<html>Confirm new PIN on cardreader
+unblock.pinpad.current=<html>Enter PUK on cardreader
+unblock.pinpad.new=<html>Enter new PIN on cardreader
+unblock.pinpad.confirm=<html>Confirm new PIN on cardreader
+# direct pin-entry messages
+activate.pinpad.direct=<html>Enter {0} ({1} digits) on cardreader and repeat (confirm in each case)
+change.pinpad.direct=<html>Enter old {0} ({1} digits) on cardreader, then enter new {0} and repeat (confirm in each case)
+unblock.pinpad.direct=<html>Enter {0} ({1} digits) on cardreader, then enter new {0} and repeat (confirm in each case)
+# response messages
+activate.success=<html>{0} successfully activated</html>
+change.success=<html>{0} successfully changed</html>
+unblock.success=<html>{0} successfully unblocked
+
+label.activation=<html>e-card activation process</html>
+label.activation.step=<html>Step {0}</html>
+label.activation.idle=<html>Wait for server...</html>
+label.old.pin=<html>Old {0}:</html>
+label.puk=<html>{0} PUK:</html>
+label.new.pin=<html>New {0}:</html>
+label.repeat.pin=<html>Confirmation:</html>
+
+button.activate=Activate
+button.change=Change
+button.unblock=Unblock
+button.verify=Query
+
+help.activation=help.activation
+help.pin.mgmt=help.pin.mgmt
+
+err.status=<html>PIN statuses could not be read.</html>
+err.activate=<html>An error occured during the activation of {0}.</html>
+err.change=<html>An error occured during the changing of {0}.</html>
+err.unblock=<html>Unblocking of {0} is not supported.</html>
+err.retries=<html>Wrong {0}, {1} tries remaining</html>
+err.locked=<html>{0} locked</html>
+err.not.active=<html>{0} not activated.</html>
+err.pin.format=<html>Invalid {0} length, {1} digit(s) required.</html>
+err.pin.confirmation=<html>{0} and confirmation do not match.</html>
+err.pin.operation.aborted=<html>The operation on {0} was aborted.</html>
+err.unsupported.card=<html>This card is not supported</html>
+
+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(
+ "<xml>HashDataInput_002</xml>".getBytes(),
+ "ref-id-000000002",
+ "application/xhtml+xml",
+ "UTF-8",
+ "filename.xhtml");
+
+ HashDataInput signedRef3 = new ByteArrayHashDataInput(
+ "<xml>HashDataInput_003</xml>".getBytes(),
+ "ref-id-000000003",
+ "application/xhtml+xml",
+ "UTF-8",
+ "filename.xhtml");
+
+ HashDataInput signedRef4 = new ByteArrayHashDataInput(
+ "<xml>HashDataInput_004</xml>".getBytes(),
+ "ref-id-000000004",
+ "text/xml",
+ "UTF-8",
+ "filename.xml");
+
+ //
+ List<HashDataInput> 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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUHelp</artifactId>
+ <version>1.2.11</version>
+ <name>BKU Help</name>
+ <build>
+ <resources>
+ <resource>
+ <directory>src/main/webapp</directory>
+ </resource>
+ </resources>
+ </build>
+</project> \ 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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/chip16.ico
Binary files 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="cardnotsupported.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1> Die Karte wird nicht unterstützt</h1>
+ <p>Die im Kartenleser gesteckte Chipkarte wird nicht unterstützt.</p>
+ <p>Bitte stecken Sie eine unterstützte Chipkarte (Bürgerkarte) in den Kartenleser. Derzeit werden die folgenden Chipkarten unterstützt:</p>
+ <ul>
+ <li><strong>e-card</strong> <br />
+ Chipkarte der <a href="http://www.sozialversicherung.at">Österreichischen Sozialversicherung</a></li>
+ <li><strong>a-sign premium</strong> <br />
+ Chipkarte der <a href="http://www.a-trust.at">A-Trust GmbH</a> bzw. diverse andere Chipkarten mit der Aufschrift 'a-sign premium'.</li>
+ </ul>
+ <p>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.</p>
+ <p><br class="clearfloat" /></p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/cardnotsupported.png
Binary files 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="error.card.locked.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1> Fehler: Bürgerkarte ist gesperrt</h1>
+ <p>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.</p>
+ <p>Bitte wenden sie sich an den Aussteller der Karte.</p>
+<ul>
+ <li><strong>e-card</strong> <br />
+ Chipkarte der <a href="http://www.sozialversicherung.at">Österreichischen Sozialversicherung</a></li>
+ <li><strong>a-sign premium</strong> <br />
+ Chipkarte der <a href="http://www.a-trust.at">A-Trust GmbH</a> bzw. diverse andere Chipkarten mit der Aufschrift 'a-sign premium'.</li>
+ </ul>
+ <p><br class="clearfloat" /></p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.locked.png
Binary files 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="error.card.notactivated.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1> Fehler: Bürgerkartenfunktion ist nicht aktiviert.</h1>
+ <p>Die im Kartenleser gesteckte Chipkarte wird unterstützt, jedoch ist die Bürgerkartenfunktion auf der Chipkarte noch nicht aktiviert.</p>
+ <p>Um die gesteckte Chipkarte als Bürgerkarte verwenden zu können,
+ muss zuerst die
+ Bürgerkartenfunktion aktiviert werden. Für Informationen dazu siehe <a href="http://www.buergerkarte.at/de/aktivieren/">Aktivierung der Bürgerkartenfunktion</a> auf <a href="http://www.buergerkarte.at">www.buergerkarte.at</a>.</p>
+ <p><br class="clearfloat" />
+ </p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.card.notactivated.png
Binary files 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="error.cardterminal.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1> Fehler: Es konnte kein Kartenleser gefunden werden.</h1>
+ <p>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.</p>
+ <p>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.</p>
+
+ <p><br class="clearfloat" />
+ </p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.cardterminal.png
Binary files 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="error.pcsc.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1> Fehler: Es konnte keine PC/SC-Schnittstelle gefunden werden</h1>
+ <p>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.</p>
+ <p>Häufige Ursachen für dieses Problem sind
+ <ul>
+ <li>Der PC/SC Dienst läuft nicht</li>
+ <li>Die entsprechende PC/SC Bibliothek kann von Java nicht gefunden werden
+ (<a href="http://java.sun.com/javase/6/docs/technotes/guides/security/SunProviders.html#SunPCSCProvider">weitere Informationen</a>).</li>
+ </ul>
+ </p>
+ <p>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.
+ <br class="clearfloat" />
+ </p>
+ <p><br class="clearfloat" /></p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pcsc.png
Binary files 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="error.pin.timeout.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1> Fehler: Zeitüberschreitung bei der PIN-Eingabe am Kartenleser.</h1>
+ <p>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.
+ </p>
+
+ <p><br class="clearfloat" />
+ </p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.pin.timeout.png
Binary files 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="error.ws.unreachable.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1> Fehler: Der Server ist nicht erreichbar</h1>
+ <p>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.</p>
+ <p><br class="clearfloat" /></p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/error.ws.unreachable.png
Binary files 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="help.pin.mgmt.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1>Aktivieren der PIN</h1>
+ <p>Noch nicht aktivierte PINs werden als <em style="color:red; font-weight:bold">NICHT AKTIV</em> angeführt
+ und können über die Schaltfläche 'Aktivieren' gesetzt werden.
+ </p>
+ <p style="text-align: center"><img src="help.pin.mgmt-1.png" alt="Bildschirmfoto" width="295" height="200" /></p>
+ <p>Geben Sie dazu die gewünschte PIN im dafür vorgesehenen Feld ein und wiederholen Sie diese im Feld 'Bestätigung'.
+ </p>
+ <p style="text-align: center"><img src="help.pin.activate.png" alt="Bildschirmfoto" width="295" height="200" /></p>
+
+ <p><br class="clearfloat" /></p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="help.cardpin1.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p><img src="help.cardpin2.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1> Lesen von Informationen von der Chipkarte</h1>
+ <p>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.</p>
+ <p><a href="http://www.buergerkarte.at/de/datenschutz-sicherheit/">Details</a> zu den auf der Bürgerkarte gespeicherten Informationen finden sie auf <a href="http://www.buergerkarte.at">www.buergerkarte.at</a>.</p>
+ <p><br class="clearfloat" /></p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.cardpin1.png
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.cardpin2.png
Binary files 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="help.pin.mgmt.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1>Ändern der PIN</h1>
+ <p>Bereits aktivierte PINs werden als <em style="color:green; font-weight:bold">AKTIV</em> angeführt
+ und können über die Schaltfläche 'Ändern' geändert werden.
+ </p>
+ <p style="text-align: center"><img src="help.pin.mgmt.png" alt="Bildschirmfoto" width="295" height="200" /></p>
+ <p>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'.
+ </p>
+ <p style="text-align: center"><img src="help.pin.change.png" alt="Bildschirmfoto" width="295" height="200" /></p>
+
+ <p><br class="clearfloat" /></p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="help.hashdataviewer.png" alt="Bildschirmfoto des Applets" height="130" width="150"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1> Anzeige der Signaturdaten </h1>
+ <p>Dieses Fenster zeigt die zu signierenden Daten an. Dies k&ouml;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&uuml;ssen diese abgespeichert und mit einem geeigneten XHTML Betrachter ge&ouml;ffnen werden.</p>
+ <p>In jedem Fall k&ouml;nnen die zu signierenden abgespeichert werden.</p>
+ <p><img src="help.hashdataviewer.png" alt="Bildschirmfoto des Applets" height="300" width="353"/></p>
+ <p><br class="clearfloat" /></p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.hashdataviewer.png
Binary files 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="mainContent" style="margin: 1.5em 1.5em 0 1.5em">
+ <h1>Installation des CA Zertifikats</h1>
+ <p>Die Bürgerkartenumgebung authentifiziert sich mittels eines TLS Zertifikats ausgestellt auf
+ <code>CN=127.0.0.1, O=MOCCA, OU=MOCCA TLS Server</code>.
+ 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
+ <code>O=MOCCA, OU=MOCCA TLS Server CA</code>, im Web-Browser zu installieren.
+ </p>
+
+ <p><strong>Achtung:</strong> 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'.
+ </p>
+
+ <p>
+ Klicken Sie dazu auf die Verknüpfung <a href="../../ca.crt">CA Zertifikat installieren</a>
+ 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).
+ </p>
+ <p><img src="help.install.cacert.png" alt="Bildschirmfoto des Zertifikatsinstallationsdialogs" height="287" width="565"/></p>
+ <p style="font-size:70%;"><strong>Hinweis:</strong> Der tatsächliche Dialog kann vom oben dargestellten abweichen und hängt vom verwendeten Web-Browser ab.</p>
+ <p>Kopieren Sie diese Verknüpfung und rufen Sie sie in weiteren Web-Browsern ihrer Wahl auf um das Zertifikat auch dort zu installieren.</p>
+
+ <p>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.</p>
+ <p><br class="clearfloat" /></p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.install.cacert.png
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.activate.png
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.change.png
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-1.png
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-2.png
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-3.png
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt-4.png
Binary files 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="help.pin.mgmt.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1>PIN Verwaltung</h1>
+ <p>Mit Hilfe der PIN Verwaltung können Sie Karten-PINs <a href="#activate">aktivieren</a>, <a href="#change">ändern</a> und <a href="#unblock">entsperren</a>,
+ wobei der unterstützte Funktionsumfang vom Typ und Zustand der verwendeten Karte abhängt.
+ </p>
+ <h3><a name="change">Ändern der PIN</a></h3>
+ <p>Bereits aktivierte PINs werden als <em style="color:green; font-weight:bold">AKTIV</em> angeführt
+ und können über die Schaltfläche 'Ändern' geändert werden.
+ </p>
+ <p style="text-align: center"><img src="help.pin.mgmt.png" alt="Bildschirmfoto" width="295" height="200" /></p>
+ <p>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'.
+ </p>
+ <p style="text-align: center"><img src="help.pin.change.png" alt="Bildschirmfoto" width="295" height="200" /></p>
+ <p>Bei Karten mit dem ACOS Betriebssystem müssen die PINs verifiziert werden um ihren Status zu ermitteln.
+ Den Status dieser als <em style="color:black; font-weight:bold">UNBEKANNT</em> angeführten PINs können Sie über die Schaltfläche 'Abfragen' verifizieren.
+ </p>
+ <p style="text-align: center"><img src="help.pin.mgmt-3.png" alt="Bildschirmfoto" width="295" height="200" /></p>
+ <p>
+ Geben Sie dazu die PIN im dafür vorgesehenen Feld ein.
+ </p>
+ <p style="text-align: center"><img src="help.pin.verify.png" alt="Bildschirmfoto" width="295" height="200" /></p>
+
+ <h3><a name="activate">Aktivieren der PIN</a></h3>
+ <p>Noch nicht aktivierte PINs werden als <em style="color:red; font-weight:bold">NICHT AKTIV</em> angeführt
+ und können über die Schaltfläche 'Aktivieren' gesetzt werden.
+ </p>
+ <p style="text-align: center"><img src="help.pin.mgmt-1.png" alt="Bildschirmfoto" width="295" height="200" /></p>
+ <p>Geben Sie dazu die gewünschte PIN im dafür vorgesehenen Feld ein und wiederholen Sie diese im Feld 'Bestätigung'.
+ </p>
+ <p style="text-align: center"><img src="help.pin.activate.png" alt="Bildschirmfoto" width="295" height="200" /></p>
+
+ <h3><a name="unblock">Entsperren der PIN</a></h3>
+ <p>Durch mehrmalige falsche Eingabe gesperrte PINs werden als <em style="color:red; font-weight:bold">GESPERRT</em> 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.
+ </p>
+ <p style="text-align: center"><img src="help.pin.mgmt-2.png" alt="Bildschirmfoto" width="295" height="200" /></p>
+ <p>Momentan wird das Entsperren von PINs noch nicht unterstützt.
+ </p>
+
+ <p><br class="clearfloat" /></p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.mgmt.png
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.pin.verify.png
Binary files 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="help.retry.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1> Falsche PIN</h1>
+ <p>Die eingegebene PIN war falsch. Bitte geben Sie die korrekte PIN ein.</p>
+ <p>Die Anzahl der noch möglichen Versuche wird angezeigt.</p>
+ <p><br class="clearfloat" /></p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.retry.png
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.signpin-1.png
Binary files 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="help.signpin.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1> Erstellen einer elektronischen Signatur</h1>
+ <p>Sie werden aufgefordert die Signatur-PIN einzugeben, um eine elektronische Signatur zu erstellen.</p>
+ <p style="text-align: center"><img src="help.signpin-1.png" alt="Bildschirmfoto" width="278" height="146" /></p>
+ <ol>
+ <li>Klicken Sie auf 'Signaturdaten anzeigen' um die zu signierenden Daten anzuzeigen.</li>
+ <li>Geben Sie im Formularfeld die Signatur-PIN ein.</li>
+ <li>Klicken Sie auf die Schaltfläche 'Signieren' um die elektronische Signatur zu erstellen.</li>
+ </ol>
+ <p><br class="clearfloat" /></p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/help.signpin.png
Binary files 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="help.pin.mgmt.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1>Entsperren der PIN</h1>
+ <p>Durch mehrmalige falsche Eingabe gesperrte PINs werden als <em style="color:red; font-weight:bold">GESPERRT</em> 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.
+ </p>
+ <p style="text-align: center"><img src="help.pin.mgmt-2.png" alt="Bildschirmfoto" width="295" height="200" /></p>
+ <p>Momentan wird das Entsperren von PINs noch nicht unterstützt.
+ </p>
+
+ <p><br class="clearfloat" /></p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="help.unsupported.mimetype.png" alt="Bildschirmfoto des Applets" height="130" width="150"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1>Signaturdaten können nicht dargestellt werden</h1>
+ <p>Die Signaturdatenanzeige unterstützt reine Textdaten sowie XHTML, andere MIME-Typen k&ouml;nnen nicht angezeigt werden.
+ Um die Daten standardkonform darzustellen, m&uuml;ssen diese abgespeichert und mit einem geeigneten externen Betrachter ge&ouml;ffnen werden.</p>
+ <p><br class="clearfloat" /></p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="help.pin.mgmt.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1>PIN Abfragen</h1>
+ <p>Bei Karten mit dem ACOS Betriebssystem müssen die PINs verifiziert werden um ihren Status zu ermitteln.
+ Den Status dieser als <em style="color:black; font-weight:bold">UNBEKANNT</em> angeführten PINs können Sie über die Schaltfläche 'Abfragen' verifizieren.
+ </p>
+ <p style="text-align: center"><img src="help.pin.mgmt-3.png" alt="Bildschirmfoto" width="295" height="200" /></p>
+ <p>
+ Geben Sie dazu die PIN im dafür vorgesehenen Feld ein.
+ </p>
+ <p style="text-align: center"><img src="help.pin.verify.png" alt="Bildschirmfoto" width="295" height="200" /></p>
+ <p>Nach erfolgreicher Eingabe wird die PIN entsprechend ihrem Status als <em style="color:green; font-weight:bold">AKTIV</em>, <em style="color:red; font-weight:bold">NICHT AKTIV</em> oder <em style="color:red; font-weight:bold">GESPERRT</em> angeführt.
+ </p>
+ <p style="text-align: center"><img src="help.pin.mgmt-4.png" alt="Bildschirmfoto" width="295" height="200" /></p>
+
+ <p><br class="clearfloat" /></p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="insertcard.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1> Bitte die Bürgerkarte in den Kartenleser stecken</h1>
+ <p>Die Software für den Zugriff auf die Bürgerkarte hat einen oder mehrere unterstützte Kartenleser gefunden.</p>
+ <p>Bitte stecken Sie nun ihre Bürgerkarte in den Kartenleser. Wird die Karte erkannt, welchselt die Bildschirmanzeige.</p>
+ <p>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.
+ </p>
+ <p><br class="clearfloat" /></p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/insertcard.png
Binary files 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Untitled Document</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="wait.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1> Bitte warten ...</h1>
+ <p>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. </p>
+ <p><br class="clearfloat" /></p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/wait.png
Binary files 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title>Bürgerkarte - Hilfe</title>
+<link href="../help.css" rel="stylesheet" type="text/css" />
+<link rel="shortcut icon" href="../chip16.ico" type="image/x-icon"/>
+<!--[if IE]>
+<style type="text/css">
+/* place css fixes for all versions of IE in this conditional comment */
+.twoColElsLtHdr #sidebar1 { padding-top: 30px; }
+.twoColElsLtHdr #mainContent { zoom: 1; padding-top: 15px; }
+/* the above proprietary zoom property gives IE the hasLayout it needs to avoid several bugs */
+</style>
+<![endif]-->
+</head>
+
+<body class="twoColElsLtHdr">
+
+<div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="welcome.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p><strong>Hinweis:</strong> Das Bildschirmfoto oben kann von der Darstellung in der Webseite abweichen.</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1> Willkommen </h1>
+ <p>Die Anzeige &quot;Willkommen&quot; erfolgt unmittelbar nachdem die Software für den Zugriff auf die Bürgerkarte erfolgreich im Browser geladen wurde.</p>
+ <p>Die Software versucht nun eine Verbindung mit dem Server aufzunehmen um Befehle für den Zugriff auf die Bürgerkarte zu erhalten.</p>
+ <p><br class="clearfloat" /></p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+<!-- end #container --></div>
+</body>
+</html>
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
--- /dev/null
+++ b/mocca-1.2.11/BKUHelp/src/main/webapp/help/de/welcome.png
Binary files 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 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Bürgerkarte - Hilfe</title>
+ <link href="help.css" rel="stylesheet" type="text/css" />
+ <link rel="shortcut icon" href="chip16.ico" type="image/x-icon"/>
+ </head>
+
+ <body class="twoColElsLtHdr">
+
+ <div id="container">
+ <div id="header">
+ <h1>Online-Hilfe</h1>
+ <!-- end #header --></div>
+ <div id="sidebar1">
+ <p><img src="de/welcome.png" alt="Bildschirmfoto des Applets" width="190" height="130"/></p>
+ <p>Hilfe-Icon rechts oben im Bürgerkartendialog</p>
+ <!-- end #sidebar1 --></div>
+ <div id="mainContent">
+ <h1> Hilfe zur Bürgerkartenumgebung </h1>
+ <p>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.
+ </p>
+ <p>Häufige gestellte Fragen werden in den folgenden Hilfeseiten behandelt:</p>
+ <ul>
+ <li><a href="de/help.install.cacert.html">Installation des CA Zertifikats</a></li>
+ <li><a href="de/error.pcsc.html">Fehler bei der PC/SC Installation</a></li>
+ <li><a href="de/cardnotsupported.html">Unterstützte Signaturkarten</a></li>
+ <li><a href="de/help.cardpin.html">Auslesen der Daten auf der Bürgerkarte</a></li>
+ <li><a href="de/help.signpin.html">Erstellen einer elektronischen Signatur</a></li>
+ <li><a href="de/help.retry.html">Falsche PIN</a></li>
+ <li><a href="de/help.hashdataviewer.html">Anzeige der Signaturdaten</a></li>
+ <li><a href="de/help.pin.mgmt.html">PIN Verwaltung</a></li>
+ <li><a href="de/help.change.pin.html">Ändern der PIN</a></li>
+ </ul>
+
+ <p><br class="clearfloat" /></p>
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+ <!-- end #container --></div>
+ </body>
+</html>
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 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKULocal</artifactId>
+ <packaging>war</packaging>
+ <name>BKU Local</name>
+ <version>1.2.11</version>
+
+ <scm>
+ <developerConnection>scm:svn:svn://svn.egovlabs.gv.at/svnroot/mocca/tags/mocca-1.2.11/BKULocal</developerConnection>
+ <connection>scm:svn:svn://svn.egovlabs.gv.at/svnroot/mocca/tags/mocca-1.2.11/BKULocal</connection>
+ <url>scm:svn:svn://svn.egovlabs.gv.at/svnroot/mocca/tags/mocca-1.2.11/BKULocal</url>
+ </scm>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-war-plugin</artifactId>
+ <configuration>
+ <manifest>
+ <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+ </manifest>
+ <archive>
+ <manifestEntries>
+ <Implementation-Build>${project.version}-r${buildNumber}</Implementation-Build>
+ </manifestEntries>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>maven-buildnumber-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>create</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <doCheck>false</doCheck>
+ <doUpdate>false</doUpdate>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <executions>
+ <execution>
+ <id>copy-help</id>
+ <goals>
+ <goal>unpack-dependencies</goal>
+ </goals>
+ <configuration>
+ <includeArtifactIds>BKUHelp</includeArtifactIds>
+ <includeGroupIds>at.gv.egiz</includeGroupIds>
+ <excludes>META-INF/</excludes>
+ <outputDirectory>${project.build.directory}/${project.build.finalName}</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencies>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>STAL</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>bkucommon</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>smcc</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>smccSTAL</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUGuiExt</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>smccSTALExt</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUViewer</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <artifactId>BKUHelp</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.5</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ <version>2.5.5</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
+ </dependencies>
+
+ <properties>
+ <netbeans.hint.deploy.server>Tomcat60</netbeans.hint.deploy.server>
+ </properties>
+</project>
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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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<STALResponse> handleRequest(List<? extends STALRequest> requestList) {
+ signatureCard = null;
+ List<STALResponse> 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 <clemens.orthacker@iaik.tugraz.at>
+ */
+public class LocalSecureViewer implements SecureViewer {
+
+ private static final Log log = LogFactory.getLog(LocalSignRequestHandler.class);
+ private List<HashDataInput> hashDataInputs = Collections.EMPTY_LIST;
+
+ protected BKUGUIFacade gui;
+
+ public LocalSecureViewer(BKUGUIFacade gui) {
+ this.gui = gui;
+ }
+
+ public void setDataToBeSigned(List<HashDataInput> 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<HashDataInput> selectedHashDataInputs = new ArrayList<HashDataInput>();
+ 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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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<String, String> headerMap = new HashMap<String, String>();
+ for (Enumeration<String> 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<String> 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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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 <code>GET</code> and <code>POST</code> 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<STALResponse> 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);
+ }
+ }
+
+ // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
+ /**
+ * Handles the HTTP <code>GET</code> 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 <code>POST</code> 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";
+ }// </editor-fold>
+}
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+ -->
+<AccessControl>
+ <Chains>
+ <!--
+ The input chain defines filters that are applied before command
+ execution
+ -->
+ <Chain Id="InputChain">
+ <Rules>
+ <!-- there is no command implemented that requires input filtering -->
+ <Rule Id="InputChain-AllowAll">
+ <Action>
+ <RuleAction>allow</RuleAction>
+ </Action>
+ <UserInteraction>confirm</UserInteraction>
+ </Rule>
+ </Rules>
+ </Chain>
+
+ <!--
+ The output chain defines filters that are applied after command
+ execution
+ -->
+ <Chain Id="OutputChain">
+ <Rules>
+ <Rule Id="OutputChain-Egov">
+ <AuthClass>anonymous</AuthClass>
+ <Action>
+ <RuleAction>allow</RuleAction>
+ </Action>
+ <UserInteraction>confirm</UserInteraction>
+ </Rule>
+ <Rule Id="OutputChain-Command">
+ <AuthClass>anonymous</AuthClass>
+ <Action>
+ <ChainRef>Command</ChainRef>
+ </Action>
+ </Rule>
+ </Rules>
+ </Chain>
+ <Chain Id="Command">
+ <Rules>
+ <Rule Id="cmd-rule-1">
+ <AuthClass>certified</AuthClass>
+ <Command Name="Infobox.*">
+ <Param Name="InfoboxIdentifier">IdentityLink</Param>
+ <Param Name="PersonIdentifier">derived</Param>
+ </Command>
+ <Action>
+ <RuleAction>allow</RuleAction>
+ </Action>
+ <UserInteraction>confirm</UserInteraction>
+ </Rule>
+ <Rule Id="cmd-rule-localhost">
+ <AuthClass>anonymous</AuthClass>
+ <IPv4Address>127.0.0.1</IPv4Address>
+ <Command Name="Infobox.*">
+ <Param Name="InfoboxIdentifier">IdentityLink</Param>
+ <Param Name="PersonIdentifier">derived</Param>
+ </Command>
+ <Action>
+ <RuleAction>allow</RuleAction>
+ </Action>
+ <UserInteraction>confirm</UserInteraction>
+ </Rule>
+ <Rule Id="cmd-rule-2">
+ <AuthClass>anonymous</AuthClass>
+ <Command Name="Infobox.*">
+ <Param Name="InfoboxIdentifier">IdentityLink</Param>
+ </Command>
+ <Action>
+ <RuleAction>deny</RuleAction>
+ </Action>
+ <UserInteraction>info</UserInteraction>
+ </Rule>
+ <Rule Id="cmd-rule-3">
+ <Action>
+ <RuleAction>allow</RuleAction>
+ </Action>
+ </Rule>
+ </Rules>
+ </Chain>
+ </Chains>
+</AccessControl>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Context path=""/>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
+ <bean id="STALFactory" class="at.gv.egiz.bku.local.stal.LocalSTALFactory"
+ scope="singleton">
+ <property name="helpURL" value="http://localhost:3495/help/"/>
+ </bean>
+
+
+ <bean id="bindingProcessorManager" class="at.gv.egiz.bku.binding.BindingProcessorManagerImpl"
+ scope="singleton">
+ <constructor-arg ref="STALFactory"></constructor-arg>
+ <constructor-arg ref="commandInvoker"></constructor-arg>
+ <constructor-arg ref="configuration"></constructor-arg>
+ </bean>
+ <bean
+ class="org.springframework.web.context.support.ServletContextAttributeExporter">
+ <property name="attributes">
+ <map>
+ <entry key="bindingProcessorManager">
+ <ref bean="bindingProcessorManager" />
+ </entry>
+ </map>
+ </property>
+ </bean>
+
+ <bean id="accessController" class="at.gv.egiz.bku.local.accesscontroller.SpringSecurityManager"
+ scope="singleton" init-method="init">
+ <property name="config" ref="configurator"/>
+ </bean>
+
+ <bean id="commandInvoker" class="at.gv.egiz.bku.binding.SLCommandInvokerImpl">
+ <property name="securityManager" ref="accessController" />
+ </bean>
+
+ <bean id="slCommandFactory" class="at.gv.egiz.bku.slcommands.SLCommandFactory"
+ factory-method="getInstance">
+ <property name="commandImpl">
+ <map>
+ <entry
+ key="http://www.buergerkarte.at/namespaces/securitylayer/1.2#:NullOperationRequest"
+ value="at.gv.egiz.bku.slcommands.impl.NullOperationCommandImpl" />
+ <entry
+ key="http://www.buergerkarte.at/namespaces/securitylayer/1.2#:InfoboxReadRequest"
+ value="at.gv.egiz.bku.slcommands.impl.InfoboxReadCommandImpl" />
+ <entry
+ key="http://www.buergerkarte.at/namespaces/securitylayer/1.2#:InfoboxUpdateRequest"
+ value="at.gv.egiz.bku.slcommands.impl.InfoboxUpdateCommandImpl" />
+ <entry
+ key="http://www.buergerkarte.at/namespaces/securitylayer/1.2#:CreateXMLSignatureRequest"
+ value="at.gv.egiz.bku.slcommands.impl.CreateXMLSignatureCommandImpl" />
+ </map>
+ </property>
+ </bean>
+
+ <bean id="infoboxFactory" class="at.gv.egiz.bku.slcommands.impl.InfoboxFactory"
+ factory-method="getInstance">
+ <property name="infoboxImpl">
+ <map>
+ <entry
+ key="Certificates"
+ value="at.gv.egiz.bku.slcommands.impl.CertificatesInfoboxImpl" />
+ <entry
+ key="IdentityLink"
+ value="at.gv.egiz.bku.slcommands.impl.IdentityLinkInfoboxImpl" />
+ <entry
+ key="CardChannel"
+ value="at.gv.egiz.bku.slcommands.impl.CardChannelInfoboxImpl" />
+ <entry
+ key="SV-Personendaten"
+ value="at.gv.egiz.bku.slcommands.impl.SVPersonendatenInfoboxImpl" />
+ </map>
+ </property>
+ </bean>
+
+ <!-- Configure Configuration -->
+ <bean id="certValidator" class="at.gv.egiz.bku.conf.CertValidatorImpl"></bean>
+
+ <bean id="configurator" class="at.gv.egiz.bku.local.conf.SpringConfigurator"
+ init-method="configure">
+ <!-- <property name="resource" value="classpath:at/gv/egiz/bku/local/conf/defaultConf.properties"/> -->
+ <property name="resource" value="file:${user.home}/.mocca/conf/defaultConf.properties"/>
+ <property name="certValidator" ref="certValidator"></property>
+ </bean>
+
+ <!-- Begin MOCCA Configuration [REFACTORED]
+ | Configuration beans (no conf properties file) should be injected directly to module configurators.
+ | Currently, only the ReaderFactory configuration is considered.
+ |-->
+ <import resource="file:${user.home}/.mocca/conf/mocca-conf.xml"/>
+
+</beans> \ 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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<web-app id="bkulocal" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+ <display-name>http-security-layer-request</display-name>
+
+ <!-- Begin Spring Config -->
+ <context-param>
+ <param-name>contextConfigLocation</param-name>
+ <param-value>/WEB-INF/applicationContext.xml</param-value>
+ </context-param>
+ <listener>
+ <listener-class>
+ org.springframework.web.context.ContextLoaderListener
+ </listener-class>
+ </listener>
+ <!-- End Spring Config -->
+
+ <!-- Begin BKU Config -->
+ <servlet>
+ <servlet-name>BKUServlet</servlet-name>
+ <servlet-class>at.gv.egiz.bku.local.webapp.BKURequestHandler</servlet-class>
+ </servlet>
+ <servlet>
+ <servlet-name>PINManagementServlet</servlet-name>
+ <servlet-class>at.gv.egiz.bku.local.webapp.PINManagementServlet</servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>BKUServlet</servlet-name>
+ <url-pattern>/http-security-layer-request</url-pattern>
+ </servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>BKUServlet</servlet-name>
+ <url-pattern>/https-security-layer-request</url-pattern>
+ </servlet-mapping>
+ <!-- Begin BKU Config -->
+
+ <servlet-mapping>
+ <servlet-name>PINManagementServlet</servlet-name>
+ <url-pattern>/PINManagement</url-pattern>
+ </servlet-mapping>
+ <welcome-file-list>
+ <welcome-file>index.html</welcome-file>
+ <welcome-file>index.htm</welcome-file>
+ <welcome-file>index.jsp</welcome-file>
+ <welcome-file>default.html</welcome-file>
+ <welcome-file>default.htm</welcome-file>
+ <welcome-file>default.jsp</welcome-file>
+ </welcome-file-list>
+</web-app>
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
--- /dev/null
+++ b/mocca-1.2.11/BKULocal/src/main/webapp/img/chip16.ico
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKULocal/src/main/webapp/img/chip48.png
Binary files 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 @@
+<!--
+ 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.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title>Bürgerkarte - Willkommen</title>
+ <link href="help/help.css" rel="stylesheet" type="text/css" />
+ <link rel="shortcut icon" href="img/chip16.ico" type="image/x-icon"/>
+ </head>
+
+ <body class="twoColElsLtHdr">
+
+ <div id="container">
+ <div id="header">
+ <h1>Willkommen</h1>
+ <!-- end #header --></div>
+ <div id="mainContent" style="margin: 1.5em 1.5em 0 1.5em">
+ <div style="float:left; margin-right:1em">
+ <img src="img/chip48.png" alt="Logo" width="48" height="48"/>
+ </div>
+ <p>Sie haben die Bürgerkartenumgebung MOCCA erfolgreich installiert.
+ Um diese zu verwenden installieren Sie bitte noch das
+ <a href="ca.crt">CA Zertifikat</a>&sup1; in ihrem Browser.
+ </p>
+
+ <p style="clear:left; margin-top:1.5em">Weiters können Sie</p>
+ <ul>
+ <li>die <a href="help">Hilfe durchsehen</a>,</li>
+ <li>die <a href="PINManagement?redirect=./index.html">PIN Verwaltung starten</a> oder </li>
+ <li>das <a href="ca.crt">CA Zertifikat installieren</a> (rufen Sie diesen Link aus anderen Web-Browsern auf um auch dort das CA Zertifikat zu installieren).</li>
+ </ul>
+
+ <p><br class="clearfloat" /></p>
+
+ <p style="font-size:80%">
+ &sup1;Eine automatisierte Installation ist mit Microsoft Internet Explorer in Windows Vista oder 7 leider nicht möglich,
+ siehe dazu <a href="help/de/help.install.cacert.html">Hilfe</a>.
+ </p>
+
+ </div>
+ <div id="footer">
+ <p>
+ <a href="http://www.buergerkarte.at">Österreichische Bürgerkarte</a> | <a href="http://mocca.egovlabs.gv.at">Bürgerkartensoftware MOCCA</a>
+ </p>
+ </div>
+ <!-- end #container --></div>
+ </body>
+</html>
+
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<STALRequest> reqList = new ArrayList<STALRequest>(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 @@
+<dsig:SignedInfo xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><dsig:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"/><dsig:Reference Id="signed-data-reference-0-1214921265-27289015-14960" URI=""><dsig:Transforms><dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116"><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:pr="http://reference.e-government.gv.at/namespace/persondata/20020228#" xmlns:xa="http://www.egiz.gv.at/namespaces/20060713#">
+ <xsl:output method="xml"/>
+ <xsl:template match="/">
+ <html xmlns="http://www.w3.org/1999/xhtml" xmlns:etsi="http://uri.etsi.org/01903/v1.1.1#">
+ <head>
+ <title>
+ <xsl:value-of select="/xa:Antrag/xa:Titel"/></title></head>
+ <body>
+ <table align="left" border="0" width="100%">
+ <tr>
+ <td align="left" colspan="3">
+ <h2>
+ <xsl:value-of select="/xa:Antrag/xa:Titel"/></h2></td></tr>
+ <tr>
+ <td bgcolor="silver" colspan="3" text="black">Absender/in</td></tr>
+ <tr>
+ <td align="right" width="17%">Vorname</td>
+ <td width="3%"/>
+ <td width="80%">
+ <xsl:value-of select="/xa:Antrag/xa:Antragssteller/pr:PersonData/pr:PhysicalPerson/pr:Name/pr:GivenName"/></td></tr>
+ <tr>
+ <td align="right" width="17%">Familienname</td>
+ <td width="3%"/>
+ <td width="80%">
+ <xsl:value-of select="Von/Title"/>
+ <xsl:value-of select="/xa:Antrag/xa:Antragssteller/pr:PersonData/pr:PhysicalPerson/pr:Name/pr:FamilyName"/></td></tr>
+ <tr>
+ <td align="right" width="17%">Geburtsdatum</td>
+ <td width="3%"/>
+ <td width="80%">
+ <xsl:value-of select="/xa:Antrag/xa:Antragssteller/pr:PersonData/pr:PhysicalPerson/pr:DateOfBirth"/></td></tr>
+ <tr>
+ <td align="right" width="17%">Geburtsort</td>
+ <td width="3%"/>
+ <td width="80%">
+ <xsl:value-of select="/xa:Antrag/xa:Antragssteller/pr:PersonData/pr:PhysicalPerson/pr:PlaceOfBirth"/></td></tr>
+ <tr>
+ <td align="right" width="17%">E-Mail zur Kontaktaufnahme</td>
+ <td width="3%"/>
+ <td width="80%">
+ <xsl:value-of select="/xa:Antrag/xa:Antragssteller/pr:PersonData/pr:InternetAddress/pr:Address"/></td></tr>
+ <tr>
+ <td bgcolor="silver" colspan="3" text="black">Dieser Antrag ergeht an:</td></tr>
+ <tr>
+ <td align="right" width="17%">Adressat</td>
+ <td width="3%"/>
+ <td width="80%">
+ <xsl:value-of select="/xa:Antrag/xa:Empfaenger/pr:PersonData/pr:CorporateBody/pr:FullName"/></td></tr>
+ <tr>
+ <td bgcolor="silver" colspan="3" text="black">Hauptwohnsitz des Antragsstellers (laut ZMR):</td></tr>
+ <tr>
+ <td align="right" width="17%">Strasse</td>
+ <td nowrap="nowrap" valign="middle" width="3%"/>
+ <td width="80%">
+ <xsl:value-of select="/xa:Antrag/xa:Antragssteller/pr:PersonData/pr:CompactPostalAddress/pr:DeliveryAddress/pr:StreetName"/></td></tr>
+ <tr>
+ <td align="right" width="17%">Hausnummer</td>
+ <td nowrap="nowrap" valign="middle" width="3%"/>
+ <td width="80%">
+ <xsl:value-of select="/xa:Antrag/xa:Antragssteller/pr:PersonData/pr:CompactPostalAddress/pr:DeliveryAddress/pr:BuildingNumber"/>
+ <xsl:if test="/xa:Antrag/xa:Antragssteller/pr:PersonData/pr:CompactPostalAddress/pr:DeliveryAddress/pr:Unit != ''">/
+ <xsl:value-of select="/xa:Antrag/xa:Antragssteller/pr:PersonData/pr:CompactPostalAddress/pr:DeliveryAddress/pr:Unit"/></xsl:if>
+ <xsl:if test="/xa:Antrag/xa:Antragssteller/pr:PersonData/pr:CompactPostalAddress/pr:DeliveryAddress/pr:DoorNumber != ''">/
+ <xsl:value-of select="/xa:Antrag/xa:Antragssteller/pr:PersonData/pr:CompactPostalAddress/pr:DeliveryAddress/pr:DoorNumber"/></xsl:if></td></tr>
+ <tr>
+ <td align="right" width="17%">Postleitzahl</td>
+ <td nowrap="nowrap" valign="middle" width="3%"/>
+ <td width="80%">
+ <xsl:value-of select="/xa:Antrag/xa:Antragssteller/pr:PersonData/pr:CompactPostalAddress/pr:PostalCode"/></td></tr>
+ <tr>
+ <td align="right" width="17%">Ort</td>
+ <td nowrap="nowrap" valign="middle" width="3%"/>
+ <td width="80%">
+ <xsl:value-of select="/xa:Antrag/xa:Antragssteller/pr:PersonData/pr:CompactPostalAddress/pr:Municipality"/></td></tr>
+ <tr>
+ <td align="right" width="17%">Staat</td>
+ <td nowrap="nowrap" valign="middle" width="3%"/>
+ <td width="80%">
+ <xsl:value-of select="/xa:Antrag/xa:Antragssteller/pr:PersonData/pr:CompactPostalAddress/pr:CountryName"/></td></tr></table></body></html></xsl:template></xsl:stylesheet></dsig:Transform><dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>GPYZB80vaYfGObhjlfu4lLLpAHs=</dsig:DigestValue></dsig:Reference><dsig:Reference Id="etsi-data-reference-0-1214921265-27289015-29753" Type="http://uri.etsi.org/01903/v1.1.1#SignedProperties" URI="#xmlns(etsi=http://uri.etsi.org/01903/v1.1.1%23)%20xpointer(id('etsi-data-object-0-1214921265-27289015-3533')/child::etsi:QualifyingProperties/child::etsi:SignedProperties)"><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><dsig:DigestValue>8DWtjO0ki1U/lxn+Y34We6GsfxU=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo> \ 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 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="system">
+ <nextCatalog catalog="private/cache/retriever/catalog.xml"/>
+</catalog> \ 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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-shared-configuration>
+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.
+
+
+<spring-data xmlns="http://www.netbeans.org/ns/spring-data/1">
+ <config-files>
+ <config-file>src/main/webapp/WEB-INF/applicationContext.xml</config-file>
+ </config-files>
+ <config-file-groups/>
+ </spring-data>
+</project-shared-configuration>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+ <action>
+ <actionName>CUSTOM-Package_skipTest</actionName>
+ <displayName>Package_skipTest</displayName>
+ <goals>
+ <goal>package</goal>
+ </goals>
+ <properties>
+ <maven.test.skip>true</maven.test.skip>
+ </properties>
+ </action>
+ </actions>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUOnline</artifactId>
+ <packaging>war</packaging>
+ <name>BKU Online</name>
+ <version>1.2.11</version>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>tlc</id>
+ <name>TLC Repository</name>
+ <url>http://commons.ucalgary.ca/pub/m2</url>
+ </pluginRepository>
+ </pluginRepositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>bkucommon</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUViewer</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <artifactId>BKUCertificates</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.1</version>
+ </dependency>
+ <dependency>
+ <artifactId>BKUHelp</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.5</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-web</artifactId>
+ <version>2.5.5</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>STALService</artifactId>
+ <version>1.2.11</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>STALService</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <!--
+ | TODO move at.buergerkarte.namespaces.cardchannel.service out from STALXService
+ | so that BKUOnline does not have to depend on STALXService
+ |-->
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>STALXService</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <!--
+ | see https://wsit.dev.java.net/issues/show_bug.cgi?id=970
+ -->
+ <dependency>
+ <groupId>com.sun.xml.ws</groupId>
+ <artifactId>jaxws-rt</artifactId>
+ <!-- use JAX-WS RI with SJSXP instead of Woodstox -->
+ <exclusions>
+ <exclusion>
+ <groupId>woodstox</groupId>
+ <artifactId>wstx-asl</artifactId>
+ </exclusion>
+ </exclusions>
+ <!--
+ conflict with SAAJ from java 6 ? <exclusions> <exclusion>
+ <groupId>javax.xml.soap</groupId> <artifactId>saaj-api</artifactId>
+ </exclusion> <exclusion>
+ <groupId>com.sun.xml.messaging.saaj</groupId>
+ <artifactId>saaj-impl</artifactId> </exclusion> </exclusions -->
+ </dependency>
+ <dependency>
+ <artifactId>sjsxp</artifactId>
+ <groupId>com.sun.xml.stream</groupId>
+ <version>1.0.1</version>
+ </dependency>
+ <!--
+ | Applet-only dependencies (put in provided scope)
+ | list to make them known to maven-dependency plugin
+ | and make sure BKUApplet(Ext) is built prior to BKUOnline
+ |-->
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUApplet</artifactId>
+ <version>1.2.11</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUAppletExt</artifactId>
+ <version>1.2.11</version>
+ <scope>provided</scope>
+ </dependency>
+ <!--
+ | Transitive dependency from BKUViewer,
+ | set excludeTransitive=false in unpack-fonts
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUFonts</artifactId>
+ <version>1.0</version>
+ <scope>provided</scope>
+ </dependency-->
+ <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_jce_me4se</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ </dependencies>
+ <scm>
+ <developerConnection>scm:svn:svn://svn.egovlabs.gv.at/svnroot/mocca/tags/mocca-1.2.11/BKUOnline</developerConnection>
+ <connection>scm:svn:svn://svn.egovlabs.gv.at/svnroot/mocca/tags/mocca-1.2.11/BKUOnline</connection>
+ <url>scm:svn:svn://svn.egovlabs.gv.at/svnroot/mocca/tags/mocca-1.2.11/BKUOnline</url>
+ </scm>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <executions>
+ <execution>
+ <id>copy-applet</id>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${project.build.directory}/${project.build.finalName}/applet</outputDirectory>
+ <includeGroupIds>at.gv.egiz,commons-logging,iaik</includeGroupIds>
+ <includeArtifactIds>BKUApplet,BKUAppletExt,commons-logging,iaik_jce_me4se</includeArtifactIds>
+ <excludeTransitive>true</excludeTransitive>
+ <stripVersion>true</stripVersion>
+ </configuration>
+ </execution>
+ <execution>
+ <id>unpack-fonts</id>
+ <goals>
+ <goal>unpack-dependencies</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${project.build.directory}/${project.build.finalName}/applet</outputDirectory>
+ <includeGroupIds>at.gv.egiz</includeGroupIds>
+ <includeArtifactIds>BKUFonts</includeArtifactIds>
+ <excludes>META-INF/,LICENSE</excludes>
+ <excludeTransitive>false</excludeTransitive>
+ </configuration>
+ </execution>
+ <execution>
+ <id>copy-certificates</id>
+ <goals>
+ <!-- unpack does not work with release:prepare -->
+ <goal>unpack-dependencies</goal>
+ </goals>
+ <configuration>
+ <includeArtifactIds>BKUCertificates</includeArtifactIds>
+ <includeGroupIds>at.gv.egiz</includeGroupIds>
+ <excludes>META-INF/</excludes>
+ <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
+ </configuration>
+ </execution>
+ <execution>
+ <id>copy-help</id>
+ <goals>
+ <goal>unpack-dependencies</goal>
+ </goals>
+ <configuration>
+ <includeArtifactIds>BKUHelp</includeArtifactIds>
+ <includeGroupIds>at.gv.egiz</includeGroupIds>
+ <excludes>META-INF/</excludes>
+ <outputDirectory>${project.build.directory}/${project.build.finalName}</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-war-plugin</artifactId>
+ <configuration>
+ <manifest>
+ <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+ </manifest>
+ <archive>
+ <manifestEntries>
+ <Implementation-Build>${project.version}-r${buildNumber}</Implementation-Build>
+ </manifestEntries>
+ </archive>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>maven-buildnumber-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>create</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <doCheck>false</doCheck>
+ <doUpdate>false</doUpdate>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <profiles>
+ <profile>
+ <id>jaxb-generate-stal</id>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jaxws-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <verbose>true</verbose>
+ <bindingDirectory>${basedir}/src/main/custom-binding</bindingDirectory>
+ <bindingFiles>
+ <bindingFile>stalservice-custom.xml</bindingFile>
+ <bindingFile>staltypes-custom.xml</bindingFile>
+ <bindingFile>cardchannel-custom.xml</bindingFile>
+ </bindingFiles>
+ <!-- wsdlDirectory>${basedir}/src/main/webapp/WEB-INF/wsdl</wsdlDirectory-->
+ <wsdlDirectory>${basedir}/src/main/wsdl</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>stal-service.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/generated-sources/wsimport</sourceDestDir>
+ <staleFile>${project.build.directory}/generated-sources/wsimport/.staleFlag</staleFile>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>include-webstart</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <executions>
+ <execution>
+ <id>copy-webstart</id>
+ <goals>
+ <goal>unpack-dependencies</goal>
+ </goals>
+ <configuration>
+ <includeGroupIds>at.gv.egiz</includeGroupIds>
+ <includeArtifactIds>BKUWebStart</includeArtifactIds>
+ <outputDirectory>${project.build.directory}/${project.build.finalName}/webstart</outputDirectory>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <!-- not yet available in IBIBLIO, install locally
+ | NOT REQUIRED FOR BASIC DOWNLOAD PROTOCOL
+ |
+ <dependency>
+ <groupId>org.codehaus.mojo.webstart</groupId>
+ <artifactId>webstart-jnlp-servlet</artifactId>
+ <version>1.0-6.0.02_ea_b02.1-SNAPSHOT</version>
+ </dependency-->
+ <!-- dependency to ensure BKUWebStart is build prior to BKUOnline;
+ | transitive dependencies shall not be included in WEB-INF/lib
+ | and are provided in the BKUWebStart zip
+ | (version defined in super-pom dependencyManagement, version won't be adjusted by release:prepare) -->
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUWebStart</artifactId>
+ <scope>provided</scope>
+ <type>zip</type>
+ </dependency>
+ </dependencies>
+ </profile>
+ </profiles>
+ <properties>
+ <netbeans.hint.deploy.server>Tomcat60</netbeans.hint.deploy.server>
+ </properties>
+</project>
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 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="system">
+ <system systemId="http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd" uri="java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"/>
+ <system systemId="http://www.w3.org/2001/XMLSchema.xsd" uri="www.w3.org/2001/XMLSchema.xsd"/>
+</catalog> \ 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 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+<xs:schema
+ targetNamespace = "http://java.sun.com/xml/ns/jaxb"
+ xmlns:jaxb = "http://java.sun.com/xml/ns/jaxb"
+ xmlns:xs = "http://www.w3.org/2001/XMLSchema"
+ elementFormDefault = "qualified"
+ attributeFormDefault = "unqualified">
+ <xs:annotation><xs:documentation>
+ Schema for JAXB 2.0 binding declarations.
+ </xs:documentation></xs:annotation>
+ <xs:group name = "declaration">
+ <xs:annotation><xs:documentation>
+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.
+ </xs:documentation></xs:annotation>
+ <!-- each new binding declaration, not restricted to
+ globalBindings, should be added here -->
+ <xs:choice>
+ <xs:element ref = "jaxb:globalBindings"/>
+ <xs:element ref = "jaxb:schemaBindings"/>
+ <xs:element ref = "jaxb:class"/>
+ <xs:element ref = "jaxb:property"/>
+ <xs:element ref = "jaxb:typesafeEnumClass"/>
+ <xs:element ref = "jaxb:typesafeEnumMember"/>
+ <xs:element ref = "jaxb:javaType"/>
+ <xs:element ref = "jaxb:dom"/>
+ <xs:element ref = "jaxb:inlineBinaryData"/>
+ <xs:any namespace = "##other" processContents = "lax"/>
+ </xs:choice>
+ </xs:group>
+ <xs:attribute name = "version" type="xs:token" >
+ <xs:annotation><xs:documentation>
+Used to specify the version of the binding schema on the schema element for
+inline annotations or jaxb:bindings for external binding.
+ </xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attributeGroup name = "propertyAttributes">
+ <xs:annotation><xs:documentation>
+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
+ </xs:documentation></xs:annotation>
+ <xs:attribute name = "collectionType" type="jaxb:referenceCollectionType"/>
+ <xs:attribute name = "fixedAttributeAsConstantProperty" type = "xs:boolean"/>
+ <xs:attribute name = "enableFailFastCheck" type = "xs:boolean"/>
+ <xs:attribute name = "generateIsSetMethod" type = "xs:boolean"/>
+ <xs:attribute name = "optionalProperty">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="wrapper"/>
+ <xs:enumeration value="primitive"/>
+ <xs:enumeration value="isSet"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name = "generateElementProperty" type="xs:boolean"/>
+ <xs:attribute name = "attachmentRef">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="resolve"/>
+ <xs:enumeration value="doNotResolve"/>
+ <xs:enumeration value="default"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name = "XMLNameToJavaIdMappingDefaults">
+ <xs:annotation><xs:documentation>Customize XMLNames to Java id mapping
+ </xs:documentation></xs:annotation>
+ <xs:attribute name = "underscoreBinding" default = "asWordSeparator" type = "jaxb:underscoreBindingType"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name = "typesafeEnumClassDefaults">
+ <xs:attribute name = "typesafeEnumMemberName" default = "skipGeneration" type = "jaxb:typesafeEnumMemberNameType"/>
+ <xs:attribute name = "typesafeEnumBase" default = "xs:string" type = "jaxb:typesafeEnumBaseType"/>
+ <xs:attribute name = "typesafeEnumMaxMembers" type="xs:int" default="256"/>
+ </xs:attributeGroup>
+ <xs:element name = "globalBindings">
+ <xs:annotation><xs:documentation>Customization values defined in global scope.</xs:documentation></xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs = "0">
+ <xs:element ref = "jaxb:javaType" minOccurs = "0" maxOccurs = "unbounded"/>
+ <xs:element ref = "jaxb:serializable" minOccurs = "0"/>
+ <xs:any namespace = "##other" processContents = "lax">
+ <xs:annotation> <xs:documentation>allows extension binding declarations to be specified.</xs:documentation></xs:annotation>
+ </xs:any>
+ </xs:sequence>
+ <xs:attributeGroup ref = "jaxb:XMLNameToJavaIdMappingDefaults"/>
+ <xs:attributeGroup ref = "jaxb:typesafeEnumClassDefaults"/>
+ <xs:attributeGroup ref = "jaxb:propertyAttributes"/>
+ <xs:attribute name="generateValueClass" type="xs:boolean"
+ default= "true"/>
+ <xs:attribute name="generateElementClass" type="xs:boolean"
+ default= "false"/>
+ <xs:attribute name="mapSimpleTypeDef" type="xs:boolean"
+ default= "false"/>
+ <xs:attribute name="localScoping" default= "nested">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="nested"/>
+ <xs:enumeration value="toplevel"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name = "enableJavaNamingConventions" default = "true" type = "xs:boolean"/>
+<!-- Removed from JAXB 2.0
+ <xs:attribute name = "bindingStyle" default = "elementBinding" type = "jaxb:bindingStyleType"/>
+-->
+ <xs:attribute name = "choiceContentProperty" default = "false" type = "xs:boolean"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name = "schemaBindings">
+ <xs:annotation><xs:documentation>Customization values with schema scope</xs:documentation></xs:annotation>
+ <xs:complexType>
+ <xs:all>
+ <xs:element name = "package" type = "jaxb:packageType" minOccurs = "0"/>
+ <xs:element name = "nameXmlTransform" type = "jaxb:nameXmlTransformType" minOccurs = "0"/>
+ </xs:all>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name = "class">
+ <xs:annotation><xs:documentation>Customize interface and implementation class.</xs:documentation></xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name = "javadoc" type = "xs:string" minOccurs = "0"/>
+ </xs:sequence>
+ <xs:attribute name = "name" type = "jaxb:javaIdentifierType">
+ <xs:annotation><xs:documentation>Java class name without package prefix.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name = "implClass" type = "jaxb:javaIdentifierType">
+ <xs:annotation><xs:documentation>Implementation class name including package prefix.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="generateValueClass" type="xs:boolean">
+ <xs:annotation><xs:documentation>Default value derived from [jaxb:globalBindings]@generateValueClass.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name = "property">
+ <xs:annotation><xs:documentation>Customize property.</xs:documentation></xs:annotation>
+ <xs:complexType>
+ <xs:all>
+ <xs:element name = "javadoc" type = "xs:string" minOccurs="0"/>
+ <xs:element name = "baseType" type="jaxb:propertyBaseType" minOccurs="0"/>
+ </xs:all>
+ <xs:attribute name = "name" type = "jaxb:javaIdentifierType"/>
+ <xs:attributeGroup ref = "jaxb:propertyAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name = "javaType">
+ <xs:annotation><xs:documentation>Data type conversions; overriding builtins</xs:documentation></xs:annotation>
+ <xs:complexType>
+ <xs:attribute name = "name" use = "required" type = "jaxb:javaIdentifierType">
+ <xs:annotation><xs:documentation>name of the java type to which xml type is to be bound.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name = "xmlType" type = "xs:QName">
+ <xs:annotation><xs:documentation> xml type to which java datatype has to be bound.Must be present when javaType is scoped to globalBindings</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name = "parseMethod" type = "jaxb:javaIdentifierType"/>
+ <xs:attribute name = "printMethod" type = "jaxb:javaIdentifierType"/>
+ <xs:attribute name = "hasNsContext" default = "false" type = "xs:boolean" >
+ <xs:annotation><xs:documentation>
+If true, the parsMethod and printMethod must reference a method
+signtature that has a second parameter of type NamespaceContext.
+ </xs:documentation></xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name = "typesafeEnumClass">
+ <xs:annotation><xs:documentation> Bind to a type safe enumeration class.</xs:documentation></xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name = "javadoc" type = "xs:string" minOccurs = "0"/>
+ <xs:element ref = "jaxb:typesafeEnumMember" minOccurs = "0" maxOccurs = "unbounded"/>
+ </xs:sequence>
+ <xs:attribute name = "name" type = "jaxb:javaIdentifierType"/>
+ <xs:attribute name = "map" type = "xs:boolean" default = "true"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name = "typesafeEnumMember">
+ <xs:annotation><xs:documentation> Enumeration member name in a type safe enumeration class.</xs:documentation></xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name = "javadoc" type = "xs:string" minOccurs = "0"/>
+ </xs:sequence>
+ <xs:attribute name = "value" type="xs:anySimpleType"/>
+ <xs:attribute name = "name" use = "required" type = "jaxb:javaIdentifierType"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- TYPE DEFINITIONS -->
+
+ <xs:complexType name = "propertyBaseType">
+ <xs:all>
+ <xs:element ref = "jaxb:javaType" minOccurs = "0"/>
+ </xs:all>
+ <xs:attribute name = "name" type = "jaxb:javaIdentifierType">
+ <xs:annotation><xs:documentation>
+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.
+ </xs:documentation></xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+<!-- Removed in JAXB 2.0. modelGroupBinding no longer exists.
+ <xs:simpleType name = "bindingStyleType">
+ <xs:annotation><xs:documentation>Allows selection of a binding algorithm</xs:documentation></xs:annotation>
+ <xs:restriction base = "xs:string">
+ <xs:enumeration value = "elementBinding"/>
+ <xs:enumeration value = "modelGroupBinding"/>
+ </xs:restriction>
+ </xs:simpleType>
+-->
+
+ <xs:complexType name = "packageType">
+ <xs:sequence>
+ <xs:element name = "javadoc" type = "xs:string" minOccurs = "0"/>
+ </xs:sequence>
+ <xs:attribute name = "name" type = "jaxb:javaIdentifierType"/>
+ </xs:complexType>
+ <xs:simpleType name = "underscoreBindingType">
+ <xs:annotation><xs:documentation>Treate underscore in XML Name to Java identifier mapping.</xs:documentation></xs:annotation>
+ <xs:restriction base = "xs:string">
+ <xs:enumeration value = "asWordSeparator"/>
+ <xs:enumeration value = "asCharInWord"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name = "typesafeEnumBaseType">
+ <xs:annotation><xs:documentation>
+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"
+ </xs:documentation></xs:annotation>
+ <xs:list itemType = "xs:QName"/>
+ </xs:simpleType>
+ <xs:simpleType name = "typesafeEnumMemberNameType">
+ <xs:annotation><xs:documentation>Used to customize how to handle name collisions.</xs:documentation></xs:annotation>
+ <xs:restriction base = "xs:string">
+ <xs:enumeration value = "generateName"/>
+ <xs:enumeration value = "generateError"/>
+ <xs:enumeration value = "skipGeneration"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name = "javaIdentifierType">
+ <xs:annotation><xs:documentation>Placeholder type to indicate Legal Java identifier.</xs:documentation></xs:annotation>
+ <xs:list itemType = "xs:NCName"/>
+ </xs:simpleType>
+ <xs:complexType name = "nameXmlTransformRule">
+ <xs:annotation><xs:documentation>Rule to transform an Xml name into another Xml name</xs:documentation></xs:annotation>
+ <xs:attribute name = "prefix" type = "xs:string">
+ <xs:annotation><xs:documentation>prepend the string to QName.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name = "suffix" type = "xs:string">
+ <xs:annotation><xs:documentation>Append the string to QName.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name = "nameXmlTransformType">
+ <xs:annotation><xs:documentation>Allows transforming an xml name into another xml name. Use case UDDI 2.0 schema.</xs:documentation></xs:annotation>
+ <xs:all>
+ <xs:element name = "typeName" type = "jaxb:nameXmlTransformRule" minOccurs = "0">
+ <xs:annotation><xs:documentation>Mapping rule for type definitions.</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name = "elementName" type = "jaxb:nameXmlTransformRule" minOccurs = "0">
+ <xs:annotation><xs:documentation>Mapping rule for elements</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name = "modelGroupName" type = "jaxb:nameXmlTransformRule" minOccurs = "0">
+ <xs:annotation><xs:documentation>Mapping rule for model group</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name = "anonymousTypeName" type = "jaxb:nameXmlTransformRule" minOccurs = "0">
+ <xs:annotation><xs:documentation>Mapping rule for class names generated for an anonymous type.</xs:documentation></xs:annotation>
+ </xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:attribute name = "extensionBindingPrefixes">
+ <xs:annotation><xs:documentation>
+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.</xs:documentation></xs:annotation>
+ <xs:simpleType>
+ <xs:list itemType = "xs:normalizedString"/>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:element name = "bindings">
+ <xs:annotation><xs:documentation>
+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.
+ </xs:documentation></xs:annotation>
+ <!-- a <bindings> element can contain arbitrary number of binding declarations or nested <bindings> elements -->
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs = "0" maxOccurs = "unbounded">
+ <xs:group ref = "jaxb:declaration"/>
+ <xs:element ref = "jaxb:bindings"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attribute name = "schemaLocation" type = "xs:anyURI">
+ <xs:annotation><xs:documentation>
+Location of the remote schema to associate binding declarations with.
+ </xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name = "node" type = "xs:string">
+ <xs:annotation><xs:documentation>
+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.
+ </xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name = "version" type = "xs:token">
+ <xs:annotation><xs:documentation>
+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.
+ </xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute ref = "jaxb:version">
+ <xs:annotation><xs:documentation>
+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.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:simpleType name="referenceCollectionType">
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="indexed"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="jaxb:javaIdentifierType"/>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ <xs:element name="dom">
+ <xs:complexType>
+ <xs:attribute name = "type" type="xs:NCName" default="w3c">
+ <xs:annotation><xs:documentation>Specify DOM API to bind to JAXB property to.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="inlineBinaryData">
+ <xs:annotation><xs:documentation>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.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name = "serializable">
+ <xs:complexType>
+ <xs:attribute name="uid" type="xs:long" default="1"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
+
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 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- XML Schema schema for XML Schemas: Part 1: Structures -->
+<!-- Note this schema is NOT the normative structures schema. -->
+<!-- The prose copy in the structures REC is the normative -->
+<!-- version (which shouldn't differ from this one except for -->
+<!-- this comment and entity expansions, but just in case -->
+<!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd" [
+
+<!-- provide ID type information even for parsers which only read the
+ internal subset -->
+<!ATTLIST xs:schema id ID #IMPLIED>
+<!ATTLIST xs:complexType id ID #IMPLIED>
+<!ATTLIST xs:complexContent id ID #IMPLIED>
+<!ATTLIST xs:simpleContent id ID #IMPLIED>
+<!ATTLIST xs:extension id ID #IMPLIED>
+<!ATTLIST xs:element id ID #IMPLIED>
+<!ATTLIST xs:group id ID #IMPLIED>
+<!ATTLIST xs:all id ID #IMPLIED>
+<!ATTLIST xs:choice id ID #IMPLIED>
+<!ATTLIST xs:sequence id ID #IMPLIED>
+<!ATTLIST xs:any id ID #IMPLIED>
+<!ATTLIST xs:anyAttribute id ID #IMPLIED>
+<!ATTLIST xs:attribute id ID #IMPLIED>
+<!ATTLIST xs:attributeGroup id ID #IMPLIED>
+<!ATTLIST xs:unique id ID #IMPLIED>
+<!ATTLIST xs:key id ID #IMPLIED>
+<!ATTLIST xs:keyref id ID #IMPLIED>
+<!ATTLIST xs:selector id ID #IMPLIED>
+<!ATTLIST xs:field id ID #IMPLIED>
+<!ATTLIST xs:include id ID #IMPLIED>
+<!ATTLIST xs:import id ID #IMPLIED>
+<!ATTLIST xs:redefine id ID #IMPLIED>
+<!ATTLIST xs:notation id ID #IMPLIED>
+<!--
+ keep this schema XML1.0 DTD valid
+ -->
+ <!ENTITY % schemaAttrs 'xmlns:hfp CDATA #IMPLIED'>
+
+ <!ELEMENT hfp:hasFacet EMPTY>
+ <!ATTLIST hfp:hasFacet
+ name NMTOKEN #REQUIRED>
+
+ <!ELEMENT hfp:hasProperty EMPTY>
+ <!ATTLIST hfp:hasProperty
+ name NMTOKEN #REQUIRED
+ value CDATA #REQUIRED>
+<!--
+ Make sure that processors that do not read the external
+ subset will know about the various IDs we declare
+ -->
+ <!ATTLIST xs:simpleType id ID #IMPLIED>
+ <!ATTLIST xs:maxExclusive id ID #IMPLIED>
+ <!ATTLIST xs:minExclusive id ID #IMPLIED>
+ <!ATTLIST xs:maxInclusive id ID #IMPLIED>
+ <!ATTLIST xs:minInclusive id ID #IMPLIED>
+ <!ATTLIST xs:totalDigits id ID #IMPLIED>
+ <!ATTLIST xs:fractionDigits id ID #IMPLIED>
+ <!ATTLIST xs:length id ID #IMPLIED>
+ <!ATTLIST xs:minLength id ID #IMPLIED>
+ <!ATTLIST xs:maxLength id ID #IMPLIED>
+ <!ATTLIST xs:enumeration id ID #IMPLIED>
+ <!ATTLIST xs:pattern id ID #IMPLIED>
+ <!ATTLIST xs:appinfo id ID #IMPLIED>
+ <!ATTLIST xs:documentation id ID #IMPLIED>
+ <!ATTLIST xs:list id ID #IMPLIED>
+ <!ATTLIST xs:union id ID #IMPLIED>
+ ]>
+<xs:schema targetNamespace="http://www.w3.org/2001/XMLSchema" blockDefault="#all" elementFormDefault="qualified" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="EN" xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty">
+ <xs:annotation>
+ <xs:documentation>
+ 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
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html">
+ The schema corresponding to this document is normative,
+ with respect to the syntactic constraints it expresses in the
+ XML Schema language. The documentation (within &lt;documentation> elements)
+ below, is not normative, but rather highlights important aspects of
+ the W3C Recommendation of which this is a part</xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>
+ The simpleType element and all of its members are defined
+ towards the end of this schema document</xs:documentation>
+ </xs:annotation>
+
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Get access to the xml: attribute groups for xml:lang
+ as declared on 'schema' and 'documentation' below
+ </xs:documentation>
+ </xs:annotation>
+ </xs:import>
+
+ <xs:complexType name="openAttrs">
+ <xs:annotation>
+ <xs:documentation>
+ This type is extended by almost all schema types
+ to allow attributes from other namespaces to be
+ added to user schemas.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:anyType">
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="annotated">
+ <xs:annotation>
+ <xs:documentation>
+ This type is extended by all types which allow annotation
+ other than &lt;schema&gt; itself
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="schemaTop">
+ <xs:annotation>
+ <xs:documentation>
+ 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.</xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:group ref="xs:redefinable"/>
+ <xs:element ref="xs:element"/>
+ <xs:element ref="xs:attribute"/>
+ <xs:element ref="xs:notation"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="redefinable">
+ <xs:annotation>
+ <xs:documentation>
+ This group is for the
+ elements which can self-redefine (see &lt;redefine> below).</xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element ref="xs:simpleType"/>
+ <xs:element ref="xs:complexType"/>
+ <xs:element ref="xs:group"/>
+ <xs:element ref="xs:attributeGroup"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:simpleType name="formChoice">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="qualified"/>
+ <xs:enumeration value="unqualified"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="reducedDerivationControl">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="derivationSet">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {extension, restriction}</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list itemType="xs:reducedDerivationControl"/>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:simpleType name="typeDerivationControl">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ <xs:enumeration value="list"/>
+ <xs:enumeration value="union"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="fullDerivationSet">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {extension, restriction, list, union}</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list itemType="xs:typeDerivationControl"/>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:element name="schema" id="schema">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="xs:include"/>
+ <xs:element ref="xs:import"/>
+ <xs:element ref="xs:redefine"/>
+ <xs:element ref="xs:annotation"/>
+ </xs:choice>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="xs:schemaTop"/>
+ <xs:element ref="xs:annotation" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:attribute name="targetNamespace" type="xs:anyURI"/>
+ <xs:attribute name="version" type="xs:token"/>
+ <xs:attribute name="finalDefault" type="xs:fullDerivationSet" use="optional" default=""/>
+ <xs:attribute name="blockDefault" type="xs:blockSet" use="optional" default=""/>
+ <xs:attribute name="attributeFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
+ <xs:attribute name="elementFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute ref="xml:lang"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:key name="element">
+ <xs:selector xpath="xs:element"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="attribute">
+ <xs:selector xpath="xs:attribute"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="type">
+ <xs:selector xpath="xs:complexType|xs:simpleType"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="group">
+ <xs:selector xpath="xs:group"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="attributeGroup">
+ <xs:selector xpath="xs:attributeGroup"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="notation">
+ <xs:selector xpath="xs:notation"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="identityConstraint">
+ <xs:selector xpath=".//xs:key|.//xs:unique|.//xs:keyref"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ </xs:element>
+
+ <xs:simpleType name="allNNI">
+ <xs:annotation><xs:documentation>
+ for maxOccurs</xs:documentation></xs:annotation>
+ <xs:union memberTypes="xs:nonNegativeInteger">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="unbounded"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:attributeGroup name="occurs">
+ <xs:annotation><xs:documentation>
+ for all particles</xs:documentation></xs:annotation>
+ <xs:attribute name="minOccurs" type="xs:nonNegativeInteger" use="optional" default="1"/>
+ <xs:attribute name="maxOccurs" type="xs:allNNI" use="optional" default="1"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="defRef">
+ <xs:annotation><xs:documentation>
+ for element, group and attributeGroup,
+ which both define and reference</xs:documentation></xs:annotation>
+ <xs:attribute name="name" type="xs:NCName"/>
+ <xs:attribute name="ref" type="xs:QName"/>
+ </xs:attributeGroup>
+
+ <xs:group name="typeDefParticle">
+ <xs:annotation>
+ <xs:documentation>
+ 'complexType' uses this</xs:documentation></xs:annotation>
+ <xs:choice>
+ <xs:element name="group" type="xs:groupRef"/>
+ <xs:element ref="xs:all"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ </xs:choice>
+ </xs:group>
+
+
+
+ <xs:group name="nestedParticle">
+ <xs:choice>
+ <xs:element name="element" type="xs:localElement"/>
+ <xs:element name="group" type="xs:groupRef"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ <xs:element ref="xs:any"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="particle">
+ <xs:choice>
+ <xs:element name="element" type="xs:localElement"/>
+ <xs:element name="group" type="xs:groupRef"/>
+ <xs:element ref="xs:all"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ <xs:element ref="xs:any"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="attribute">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="xs:defRef"/>
+ <xs:attribute name="type" type="xs:QName"/>
+ <xs:attribute name="use" use="optional" default="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="prohibited"/>
+ <xs:enumeration value="optional"/>
+ <xs:enumeration value="required"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="default" type="xs:string"/>
+ <xs:attribute name="fixed" type="xs:string"/>
+ <xs:attribute name="form" type="xs:formChoice"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelAttribute">
+ <xs:complexContent>
+ <xs:restriction base="xs:attribute">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:attribute name="form" use="prohibited"/>
+ <xs:attribute name="use" use="prohibited"/>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="attrDecls">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="attribute" type="xs:attribute"/>
+ <xs:element name="attributeGroup" type="xs:attributeGroupRef"/>
+ </xs:choice>
+ <xs:element ref="xs:anyAttribute" minOccurs="0"/>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:element name="anyAttribute" type="xs:wildcard" id="anyAttribute">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:group name="complexTypeModel">
+ <xs:choice>
+ <xs:element ref="xs:simpleContent"/>
+ <xs:element ref="xs:complexContent"/>
+ <xs:sequence>
+ <xs:annotation>
+ <xs:documentation>
+ This branch is short for
+ &lt;complexContent>
+ &lt;restriction base="xs:anyType">
+ ...
+ &lt;/restriction>
+ &lt;/complexContent></xs:documentation>
+ </xs:annotation>
+ <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="complexType" abstract="true">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:complexTypeModel"/>
+ <xs:attribute name="name" type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation>
+ Will be restricted to required or forbidden</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="mixed" type="xs:boolean" use="optional" default="false">
+ <xs:annotation>
+ <xs:documentation>
+ Not allowed if simpleContent child is chosen.
+ May be overriden by setting on complexContent child.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="final" type="xs:derivationSet"/>
+ <xs:attribute name="block" type="xs:derivationSet"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelComplexType">
+ <xs:complexContent>
+ <xs:restriction base="xs:complexType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:complexTypeModel"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="localComplexType">
+ <xs:complexContent>
+ <xs:restriction base="xs:complexType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:complexTypeModel"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="prohibited"/>
+ <xs:attribute name="abstract" use="prohibited"/>
+ <xs:attribute name="final" use="prohibited"/>
+ <xs:attribute name="block" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="restrictionType">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:group ref="xs:typeDefParticle"/>
+ <xs:group ref="xs:simpleRestrictionModel"/>
+ </xs:choice>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:attribute name="base" type="xs:QName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="complexRestrictionType">
+ <xs:complexContent>
+ <xs:restriction base="xs:restrictionType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>This choice is added simply to
+ make this a valid restriction per the REC</xs:documentation>
+ </xs:annotation>
+ <xs:group ref="xs:typeDefParticle"/>
+ </xs:choice>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="extensionType">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:attribute name="base" type="xs:QName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="complexContent" id="complexContent">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:choice>
+ <xs:element name="restriction" type="xs:complexRestrictionType"/>
+ <xs:element name="extension" type="xs:extensionType"/>
+ </xs:choice>
+ <xs:attribute name="mixed" type="xs:boolean">
+ <xs:annotation>
+ <xs:documentation>
+ Overrides any setting on complexType parent.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="simpleRestrictionType">
+ <xs:complexContent>
+ <xs:restriction base="xs:restrictionType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>This choice is added simply to
+ make this a valid restriction per the REC</xs:documentation>
+ </xs:annotation>
+ <xs:group ref="xs:simpleRestrictionModel"/>
+ </xs:choice>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="simpleExtensionType">
+ <xs:complexContent>
+ <xs:restriction base="xs:extensionType">
+ <xs:sequence>
+ <xs:annotation>
+ <xs:documentation>
+ No typeDefParticle group reference</xs:documentation>
+ </xs:annotation>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="simpleContent" id="simpleContent">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:choice>
+ <xs:element name="restriction" type="xs:simpleRestrictionType"/>
+ <xs:element name="extension" type="xs:simpleExtensionType"/>
+ </xs:choice>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="complexType" type="xs:topLevelComplexType" id="complexType">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType"/>
+ </xs:annotation>
+ </xs:element>
+
+
+ <xs:simpleType name="blockSet">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {substitution, extension,
+ restriction}</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ <xs:enumeration value="substitution"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:complexType name="element" abstract="true">
+ <xs:annotation>
+ <xs:documentation>
+ 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.</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="xs:defRef"/>
+ <xs:attribute name="type" type="xs:QName"/>
+ <xs:attribute name="substitutionGroup" type="xs:QName"/>
+ <xs:attributeGroup ref="xs:occurs"/>
+ <xs:attribute name="default" type="xs:string"/>
+ <xs:attribute name="fixed" type="xs:string"/>
+ <xs:attribute name="nillable" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="final" type="xs:derivationSet"/>
+ <xs:attribute name="block" type="xs:blockSet"/>
+ <xs:attribute name="form" type="xs:formChoice"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelElement">
+ <xs:complexContent>
+ <xs:restriction base="xs:element">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:attribute name="form" use="prohibited"/>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="localElement">
+ <xs:complexContent>
+ <xs:restriction base="xs:element">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="substitutionGroup" use="prohibited"/>
+ <xs:attribute name="final" use="prohibited"/>
+ <xs:attribute name="abstract" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="element" type="xs:topLevelElement" id="element">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="group" abstract="true">
+ <xs:annotation>
+ <xs:documentation>
+ group type for explicit groups, named top-level groups and
+ group references</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:particle" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:attributeGroup ref="xs:defRef"/>
+ <xs:attributeGroup ref="xs:occurs"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="realGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:group">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0" maxOccurs="1">
+ <xs:element ref="xs:all"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="namedGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:realGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="1" maxOccurs="1">
+ <xs:element name="all">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:all">
+ <xs:group ref="xs:allModel"/>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="choice" type="xs:simpleExplicitGroup"/>
+ <xs:element name="sequence" type="xs:simpleExplicitGroup"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="groupRef">
+ <xs:complexContent>
+ <xs:restriction base="xs:realGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="required" type="xs:QName"/>
+ <xs:attribute name="name" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="explicitGroup">
+ <xs:annotation>
+ <xs:documentation>
+ group type for the three kinds of group</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:group">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName" use="prohibited"/>
+ <xs:attribute name="ref" type="xs:QName" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="simpleExplicitGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:explicitGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="allModel">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>This choice with min/max is here to
+ avoid a pblm with the Elt:All/Choice/Seq
+ Particle derivation constraint</xs:documentation>
+ </xs:annotation>
+ <xs:element name="element" type="xs:narrowMaxMin"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+
+
+ <xs:complexType name="narrowMaxMin">
+ <xs:annotation>
+ <xs:documentation>restricted max/min</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:localElement">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="minOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="maxOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:allNNI">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="all">
+ <xs:annotation>
+ <xs:documentation>
+ Only elements allowed inside</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:explicitGroup">
+ <xs:group ref="xs:allModel"/>
+ <xs:attribute name="minOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="maxOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:allNNI">
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="all" id="all" type="xs:all">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="choice" type="xs:explicitGroup" id="choice">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="sequence" type="xs:explicitGroup" id="sequence">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="group" type="xs:namedGroup" id="group">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="wildcard">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="namespace" type="xs:namespaceList" use="optional" default="##any"/>
+ <xs:attribute name="processContents" use="optional" default="strict">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="skip"/>
+ <xs:enumeration value="lax"/>
+ <xs:enumeration value="strict"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="any" id="any">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:wildcard">
+ <xs:attributeGroup ref="xs:occurs"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ simple type for the value of the 'namespace' attr of
+ 'any' and 'anyAttribute'</xs:documentation>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ 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</xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="namespaceList">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="##any"/>
+ <xs:enumeration value="##other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:anyURI">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="##targetNamespace"/>
+ <xs:enumeration value="##local"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:element name="attribute" type="xs:topLevelAttribute" id="attribute">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="attributeGroup" abstract="true">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:attrDecls"/>
+ <xs:attributeGroup ref="xs:defRef"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="namedAttributeGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:attributeGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="attributeGroupRef">
+ <xs:complexContent>
+ <xs:restriction base="xs:attributeGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="required" type="xs:QName"/>
+ <xs:attribute name="name" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="attributeGroup" type="xs:namedAttributeGroup" id="attributeGroup">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="include" id="include">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="redefine" id="redefine">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="xs:annotation"/>
+ <xs:group ref="xs:redefinable"/>
+ </xs:choice>
+ <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="import" id="import">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="namespace" type="xs:anyURI"/>
+ <xs:attribute name="schemaLocation" type="xs:anyURI"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="selector" id="selector">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="xpath" use="required">
+ <xs:simpleType>
+ <xs:annotation>
+ <xs:documentation>A subset of XPath expressions for use
+in selectors</xs:documentation>
+ <xs:documentation>A utility type, not for public
+use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:annotation>
+ <xs:documentation>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
+ </xs:documentation>
+ </xs:annotation>
+ <xs:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="field" id="field">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="xpath" use="required">
+ <xs:simpleType>
+ <xs:annotation>
+ <xs:documentation>A subset of XPath expressions for use
+in fields</xs:documentation>
+ <xs:documentation>A utility type, not for public
+use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:annotation>
+ <xs:documentation>The following pattern is intended to allow XPath
+ expressions per the same EBNF as for selector,
+ with the following change:
+ Path ::= ('.//')? ( Step '/' )* ( Step | '@' NameTest )
+ </xs:documentation>
+ </xs:annotation>
+ <xs:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*">
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="keybase">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element ref="xs:selector"/>
+ <xs:element ref="xs:field" minOccurs="1" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="identityConstraint">
+ <xs:annotation>
+ <xs:documentation>The three kinds of identity constraints, all with
+ type of or derived from 'keybase'.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element ref="xs:unique"/>
+ <xs:element ref="xs:key"/>
+ <xs:element ref="xs:keyref"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:element name="unique" type="xs:keybase" id="unique">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="key" type="xs:keybase" id="key">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="keyref" id="keyref">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:keybase">
+ <xs:attribute name="refer" type="xs:QName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="notation" id="notation">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ <xs:attribute name="public" type="xs:public"/>
+ <xs:attribute name="system" type="xs:anyURI"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:simpleType name="public">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ A public identifier, per ISO 8879</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token"/>
+ </xs:simpleType>
+
+ <xs:element name="appinfo" id="appinfo">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"/>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:any processContents="lax"/>
+ </xs:sequence>
+ <xs:attribute name="source" type="xs:anyURI"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="documentation" id="documentation">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation"/>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:any processContents="lax"/>
+ </xs:sequence>
+ <xs:attribute name="source" type="xs:anyURI"/>
+ <xs:attribute ref="xml:lang"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="annotation" id="annotation">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="xs:appinfo"/>
+ <xs:element ref="xs:documentation"/>
+ </xs:choice>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ notations for use within XML Schema schemas</xs:documentation>
+ </xs:annotation>
+
+ <xs:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+ <xs:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+
+ <xs:complexType name="anyType" mixed="true">
+ <xs:annotation>
+ <xs:documentation>
+ Not the real urType, but as close an approximation as we can
+ get in the XML representation</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+ </xs:sequence>
+ <xs:anyAttribute processContents="lax"/>
+ </xs:complexType>
+
+ <xs:annotation>
+ <xs:documentation>
+ First the built-in primitive datatypes. These definitions are for
+ information only, the real built-in definitions are magic.
+ </xs:documentation>
+
+ <xs:documentation>
+ 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
+
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="string" id="string">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#string"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="preserve" id="string.preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="boolean" id="boolean">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#boolean"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="boolean.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="float" id="float">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="total"/>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ <hfp:hasProperty name="numeric" value="true"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#float"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="float.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="double" id="double">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="total"/>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ <hfp:hasProperty name="numeric" value="true"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#double"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="double.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="decimal" id="decimal">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="totalDigits"/>
+ <hfp:hasFacet name="fractionDigits"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="total"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="true"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#decimal"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="decimal.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="duration" id="duration">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#duration"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="duration.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="dateTime" id="dateTime">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="dateTime.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="time" id="time">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#time"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="time.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="date" id="date">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#date"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="date.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gYearMonth" id="gYearMonth">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#gYearMonth"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="gYearMonth.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gYear" id="gYear">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#gYear"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="gYear.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gMonthDay" id="gMonthDay">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#gMonthDay"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="gMonthDay.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gDay" id="gDay">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#gDay"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="gDay.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gMonth" id="gMonth">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#gMonth"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="gMonth.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="hexBinary" id="hexBinary">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#binary"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="hexBinary.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="base64Binary" id="base64Binary">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#base64Binary"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="base64Binary.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="anyURI" id="anyURI">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#anyURI"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="anyURI.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="QName" id="QName">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#QName"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="QName.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NOTATION" id="NOTATION">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#NOTATION"/>
+ <xs:documentation>
+ 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.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="NOTATION.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:annotation>
+ <xs:documentation>
+ Now the derived primitive types
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="normalizedString" id="normalizedString">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#normalizedString"/>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:whiteSpace value="replace"
+ id="normalizedString.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="token" id="token">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#token"/>
+ </xs:annotation>
+ <xs:restriction base="xs:normalizedString">
+ <xs:whiteSpace value="collapse" id="token.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="language" id="language">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#language"/>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:pattern
+ value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"
+ id="language.pattern">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.ietf.org/rfc/rfc3066.txt">
+ pattern specifies the content of section 2.12 of XML 1.0e2
+ and RFC 3066 (Revised version of RFC 1766).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="IDREFS" id="IDREFS">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#IDREFS"/>
+ </xs:annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list itemType="xs:IDREF"/>
+ </xs:simpleType>
+ <xs:minLength value="1" id="IDREFS.minLength"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="ENTITIES" id="ENTITIES">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#ENTITIES"/>
+ </xs:annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list itemType="xs:ENTITY"/>
+ </xs:simpleType>
+ <xs:minLength value="1" id="ENTITIES.minLength"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NMTOKEN" id="NMTOKEN">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN"/>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="\c+" id="NMTOKEN.pattern">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/REC-xml#NT-Nmtoken">
+ pattern matches production 7 from the XML spec
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NMTOKENS" id="NMTOKENS">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS"/>
+ </xs:annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list itemType="xs:NMTOKEN"/>
+ </xs:simpleType>
+ <xs:minLength value="1" id="NMTOKENS.minLength"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="Name" id="Name">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#Name"/>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="\i\c*" id="Name.pattern">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/REC-xml#NT-Name">
+ pattern matches production 5 from the XML spec
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NCName" id="NCName">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#NCName"/>
+ </xs:annotation>
+ <xs:restriction base="xs:Name">
+ <xs:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/REC-xml-names/#NT-NCName">
+ pattern matches production 4 from the Namespaces in XML spec
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="ID" id="ID">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#ID"/>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="IDREF" id="IDREF">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#IDREF"/>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="ENTITY" id="ENTITY">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#ENTITY"/>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="integer" id="integer">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#integer"/>
+ </xs:annotation>
+ <xs:restriction base="xs:decimal">
+ <xs:fractionDigits value="0" fixed="true" id="integer.fractionDigits"/>
+ <xs:pattern value="[\-+]?[0-9]+"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="nonPositiveInteger" id="nonPositiveInteger">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:integer">
+ <xs:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="negativeInteger" id="negativeInteger">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#negativeInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:nonPositiveInteger">
+ <xs:maxInclusive value="-1" id="negativeInteger.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="long" id="long">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#long"/>
+ </xs:annotation>
+ <xs:restriction base="xs:integer">
+ <xs:minInclusive value="-9223372036854775808" id="long.minInclusive"/>
+ <xs:maxInclusive value="9223372036854775807" id="long.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="int" id="int">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#int"/>
+ </xs:annotation>
+ <xs:restriction base="xs:long">
+ <xs:minInclusive value="-2147483648" id="int.minInclusive"/>
+ <xs:maxInclusive value="2147483647" id="int.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="short" id="short">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#short"/>
+ </xs:annotation>
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="-32768" id="short.minInclusive"/>
+ <xs:maxInclusive value="32767" id="short.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="byte" id="byte">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#byte"/>
+ </xs:annotation>
+ <xs:restriction base="xs:short">
+ <xs:minInclusive value="-128" id="byte.minInclusive"/>
+ <xs:maxInclusive value="127" id="byte.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="nonNegativeInteger" id="nonNegativeInteger">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:integer">
+ <xs:minInclusive value="0" id="nonNegativeInteger.minInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedLong" id="unsignedLong">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#unsignedLong"/>
+ </xs:annotation>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:maxInclusive value="18446744073709551615"
+ id="unsignedLong.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedInt" id="unsignedInt">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#unsignedInt"/>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedLong">
+ <xs:maxInclusive value="4294967295"
+ id="unsignedInt.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedShort" id="unsignedShort">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#unsignedShort"/>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedInt">
+ <xs:maxInclusive value="65535"
+ id="unsignedShort.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedByte" id="unsignedByte">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#unsignedByte"/>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedShort">
+ <xs:maxInclusive value="255" id="unsignedByte.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="positiveInteger" id="positiveInteger">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#positiveInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:minInclusive value="1" id="positiveInteger.minInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="derivationControl">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="substitution"/>
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ <xs:enumeration value="list"/>
+ <xs:enumeration value="union"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:group name="simpleDerivation">
+ <xs:choice>
+ <xs:element ref="xs:restriction"/>
+ <xs:element ref="xs:list"/>
+ <xs:element ref="xs:union"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:simpleType name="simpleDerivationSet">
+ <xs:annotation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {restriction, union, list}
+ </xs:documentation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="list"/>
+ <xs:enumeration value="union"/>
+ <xs:enumeration value="restriction"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:complexType name="simpleType" abstract="true">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:simpleDerivation"/>
+ <xs:attribute name="final" type="xs:simpleDerivationSet"/>
+ <xs:attribute name="name" type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation>
+ Can be restricted to required or forbidden
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelSimpleType">
+ <xs:complexContent>
+ <xs:restriction base="xs:simpleType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:simpleDerivation"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"
+ type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation>
+ Required at the top level
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="localSimpleType">
+ <xs:complexContent>
+ <xs:restriction base="xs:simpleType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:simpleDerivation"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="prohibited">
+ <xs:annotation>
+ <xs:documentation>
+ Forbidden when nested
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="final" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="simpleType" type="xs:topLevelSimpleType" id="simpleType">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:group name="facets">
+ <xs:annotation>
+ <xs:documentation>
+ 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.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element ref="xs:minExclusive"/>
+ <xs:element ref="xs:minInclusive"/>
+ <xs:element ref="xs:maxExclusive"/>
+ <xs:element ref="xs:maxInclusive"/>
+ <xs:element ref="xs:totalDigits"/>
+ <xs:element ref="xs:fractionDigits"/>
+ <xs:element ref="xs:length"/>
+ <xs:element ref="xs:minLength"/>
+ <xs:element ref="xs:maxLength"/>
+ <xs:element ref="xs:enumeration"/>
+ <xs:element ref="xs:whiteSpace"/>
+ <xs:element ref="xs:pattern"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="simpleRestrictionModel">
+ <xs:sequence>
+ <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+ <xs:group ref="xs:facets" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:element name="restriction" id="restriction">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-restriction">
+ base attribute and simpleType child are mutually
+ exclusive, but one or other is required
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:simpleRestrictionModel"/>
+ <xs:attribute name="base" type="xs:QName" use="optional"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="list" id="list">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-list">
+ itemType attribute and simpleType child are mutually
+ exclusive, but one or other is required
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="simpleType" type="xs:localSimpleType"
+ minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="itemType" type="xs:QName" use="optional"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="union" id="union">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-union">
+ memberTypes attribute must be non-empty or there must be
+ at least one simpleType child
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="simpleType" type="xs:localSimpleType"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="memberTypes" use="optional">
+ <xs:simpleType>
+ <xs:list itemType="xs:QName"/>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="facet">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="value" use="required"/>
+ <xs:attribute name="fixed" type="xs:boolean" use="optional"
+ default="false"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="noFixedFacet">
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="fixed" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="minExclusive" id="minExclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="minInclusive" id="minInclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="maxExclusive" id="maxExclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="maxInclusive" id="maxInclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="numFacet">
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" type="xs:nonNegativeInteger" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="totalDigits" id="totalDigits">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:numFacet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" type="xs:positiveInteger" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="fractionDigits" id="fractionDigits" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="length" id="length" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-length"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="minLength" id="minLength" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-minLength"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="maxLength" id="maxLength" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-maxLength"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="enumeration" id="enumeration" type="xs:noFixedFacet">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-enumeration"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="whiteSpace" id="whiteSpace">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="preserve"/>
+ <xs:enumeration value="replace"/>
+ <xs:enumeration value="collapse"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="pattern" id="pattern">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-pattern"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:noFixedFacet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" type="xs:string" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<!--
+ Binding customization for STAL schema (stal.xsd)
+ Use JAXB version 2.1 which supports "schema component designator" (SCD, http://www.w3.org/TR/xmlschema-ref/)
+
+ All request/response types are generated to at.gv.egiz.stal
+ and renamed (...Type suffix removed),
+ except for the base types of the modified implClasses ErrorResponse and SignRequest
+
+ IMPORTANT: WHEN REGENERATING CLASSES MAKE SURE TO BACKUP MODIFIED IMPLCLASSES (ErrorResponse and SignRequest)
+-->
+<bindings xmlns='http://java.sun.com/xml/ns/jaxb' version='2.1'
+ xmlns:xs='http://www.w3.org/2001/XMLSchema'
+ xmlns:xjc='http://java.sun.com/xml/ns/jaxb/xjc'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
+ schemaLocation='../wsdl/CardChannel.xsd'
+ xsi:schemaLocation='http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd
+ http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd'>
+
+ <!-- cannot use scd, CardChannel.xsd has no namespace?! -->
+ <schemaBindings>
+ <package name="at.buergerkarte.namespaces.cardchannel.service"/>
+ </schemaBindings>
+</bindings>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<!--
+ Binding customization for STAL service (stal.wsdl)
+ JAX-WS does not yet support "schema component designator"s (SCD, http://www.w3.org/TR/xmlschema-ref/)
+-->
+<bindings xmlns="http://java.sun.com/xml/ns/jaxws"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ wsdlLocation="../wsdl/stal-service.wsdl">
+
+
+ <!-- default settings
+ <enableWrapperStyle>true</enableWrapperStyle>
+ <enableAsyncMapping>false</enableAsyncMapping-->
+ <package name="at.gv.egiz.stal.service" />
+
+ <!-- wsdl:portType customization -->
+ <bindings node="wsdl:definitions/wsdl:portType[@name='STALPortType']">
+ <!-- change generated SEI class -->
+ <!--class name="STALServiceI" /-->
+
+ <!-- override default settings -->
+ <enableWrapperStyle>true</enableWrapperStyle>
+ <enableAsyncMapping>false</enableAsyncMapping>
+ </bindings>
+
+ <!-- wsdl:portType operation customization -->
+ <bindings node="wsdl:definitions/wsdl:portType[@name='STALPortType']/wsdl:operation[@name='connect']">
+ <!-- rename method name -->
+ <method name="connect">
+ <javadoc>Initial connection, get the first request.</javadoc>
+ </method>
+
+ <!-- rename method params -->
+ <parameter part="wsdl:definitions/wsdl:message[@name='ConnectRequest']/wsdl:part[@name='part1']" name="sessionId" />
+
+ <!-- override default settings -->
+ <enableWrapperStyle>true</enableWrapperStyle>
+ <enableAsyncMapping>false</enableAsyncMapping>
+ </bindings>
+
+ <bindings node="wsdl:definitions/wsdl:portType[@name='STALPortType']/wsdl:operation[@name='nextRequest']">
+ <!-- rename method name -->
+ <method name="getNextRequest">
+ <javadoc>Fetch the next request.</javadoc>
+ </method>
+
+ <!-- rename method params -->
+ <parameter part="wsdl:definitions/wsdl:message[@name='NextRequestRequest']/wsdl:part[@name='part1']" name="request" />
+
+ <!-- override default settings -->
+ <enableWrapperStyle>true</enableWrapperStyle>
+ <enableAsyncMapping>false</enableAsyncMapping>
+ </bindings>
+
+ <bindings node="wsdl:definitions/wsdl:portType[@name='STALPortType']/wsdl:operation[@name='getHashDataInput']">
+ <!-- rename method name -->
+ <method name="getHashDataInput">
+ <javadoc>Fetch the signed references corresponding to the previous SignatureRequest.</javadoc>
+ </method>
+
+ <!-- rename method params -->
+ <parameter part="wsdl:definitions/wsdl:message[@name='GetHashDataInputRequest']/wsdl:part[@name='part1']" name="request" />
+
+ <!-- override default settings -->
+ <enableWrapperStyle>true</enableWrapperStyle>
+ <enableAsyncMapping>false</enableAsyncMapping>
+ </bindings>
+
+ <!-- wsdl:service customization -->
+ <!--bindings node="wsdl:definitions/wsdl:service[@name='STALService']">
+ <class name="STALService"/>
+ </bindings-->
+
+ <!-- change the port accessor method -->
+ <!-- bindings node="wsdl:definitions/wsdl:service[@name='STALService']/wsdl:port[@name='STALPort']">
+ <method name="getSTALServicePort"/>
+ </bindings -->
+
+ <!-- INLINED SCHEMA CUSTOMIZATION
+ <bindings node="wsdl:definitions/wsdl:types/xsd:schema[@targetNamespace='http://danu.iaik.tugraz.at/xml']">
+ <jaxb:schemaBindings>
+ <jaxb:package name="iaik.ws.sample.sandbox.generated.service.jaxb" />
+ </jaxb:schemaBindings>
+ </bindings-->
+
+ <!-- EXTERNAL SCHEMA CUSTOMIZATION in custom-jaxb.xml -->
+
+ <!--bindings node="wsdl:definitions" xmlns:jws="http://java.sun.com/xml/ns/javaee">
+ <jws:handler-chains>
+ <jws:handler-chain>
+ <jws:handler>
+ <jws:handler-class>fromwsdlhandler.common.LoggingHandler</jws:handler-class>
+ </jws:handler>
+ </jws:handler-chain>
+ </jws:handler-chains>
+ </bindings-->
+
+</bindings> \ 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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<!--
+ Binding customization for STAL schema (stal.xsd)
+ Use JAXB version 2.1 which supports "schema component designator" (SCD, http://www.w3.org/TR/xmlschema-ref/)
+
+ All request/response types are generated to at.gv.egiz.stal
+ and renamed (...Type suffix removed),
+ except for the base types of the modified implClasses ErrorResponse and SignRequest
+
+ IMPORTANT: WHEN REGENERATING CLASSES MAKE SURE TO BACKUP MODIFIED IMPLCLASSES (ErrorResponse and SignRequest)
+-->
+<bindings xmlns='http://java.sun.com/xml/ns/jaxb' version='2.1'
+ xmlns:xs='http://www.w3.org/2001/XMLSchema'
+ xmlns:stal="http://www.egiz.gv.at/stal"
+ xmlns:xjc='http://java.sun.com/xml/ns/jaxb/xjc'
+ xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
+ xsi:schemaLocation='http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd
+ http://www.w3.org/2001/XMLSchema http://www.w3.org/2001/XMLSchema.xsd'>
+ <bindings scd="x-schema::stal" xmlns:stal="http://www.egiz.gv.at/stal">
+ <schemaBindings>
+ <!-- generate all classes to at.gv.egiz.stal, then move service-only classes to at.gv.egiz.stal.service -->
+ <package name="at.gv.egiz.stal.service.types"/>
+ </schemaBindings>
+ </bindings>
+ <!--bindings scd="/type::stal:RequestType">
+ <class name="STALRequest"/>
+ </bindings>
+ <bindings scd="/type::stal:ResponseType">
+ <class name="STALResponse"/>
+ </bindings-->
+</bindings>
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 <clemens.orthacker@iaik.tugraz.at>
+ */
+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 <code>GET</code> and <code>POST</code> 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);
+ }
+
+ // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
+ /**
+ * Handles the HTTP <code>GET</code> 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 <code>POST</code> 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";
+ }// </editor-fold>
+
+}
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<String, String> headerMap = new HashMap<String, String>();
+ for (Enumeration<String> 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<String> 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<JAXBElement<? extends RequestType>> connect();
+
+ public List<JAXBElement<? extends RequestType>> nextRequest(List<JAXBElement<? extends ResponseType>> responses);
+
+ public List<HashDataInput> 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<JAXBElement<? extends RequestType>> requests;
+ protected final ArrayList<JAXBElement<? extends ResponseType>> responses;
+
+ protected ArrayList<HashDataInput> hashDataInputs;
+
+ private long timeout;
+
+ public STALRequestBrokerImpl(long timeoutMillisec) {
+ if (timeoutMillisec <= 0)
+ timeoutMillisec = DEFAULT_TIMEOUT_MS;
+ timeout = timeoutMillisec;
+ requests = new ArrayList<JAXBElement<? extends RequestType>>();
+ responses = new ArrayList<JAXBElement<? extends ResponseType>>();
+ hashDataInputs = new ArrayList<HashDataInput>();
+
+ // 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<STALResponse> handleRequest(List<? extends STALRequest> stalRequests) {
+ if (interrupted) {
+ return null;
+ }
+ try {
+ synchronized (requests) {
+ log.trace("produce request");
+
+ requests.clear();
+ hashDataInputs.clear();
+
+ for (STALRequest stalRequest : stalRequests) {
+ try {
+ JAXBElement<? extends RequestType> 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<STALResponse>();
+ }
+ } catch (TranslationException ex) {
+ log.error(ex.getMessage() + ", send QUIT");
+ requests.clear();
+ QuitRequestType reqT = of.createQuitRequestType();
+ JAXBElement<QuitRequestType> req = of.createGetNextRequestResponseTypeQuitRequest(reqT);
+ requests.add(req);
+ log.trace("notifying request consumers");
+ requests.notify();
+ return new ArrayList<STALResponse>();
+ }
+ }
+
+
+// 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<SignRequestType> 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<InfoboxReadRequestType> 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<QuitRequestType> req = of.createGetNextRequestResponseTypeQuitRequest(reqT);
+// requests.add(req);
+// log.trace("notifying request consumers");
+// requests.notify();
+// return new ArrayList<STALResponse>();
+// } else {
+// log.error("Received unsupported STAL request: " + stalRequest.getClass().getName() + ", send QUIT");
+// requests.clear();
+// QuitRequestType reqT = of.createQuitRequestType();
+// JAXBElement<QuitRequestType> req = of.createGetNextRequestResponseTypeQuitRequest(reqT);
+// requests.add(req);
+// log.trace("notifying request consumers");
+// requests.notify();
+// return new ArrayList<STALResponse>();
+// }
+// }
+ 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<STALResponse> stalResponses = new ArrayList<STALResponse>();
+ try {
+ for (JAXBElement<? extends ResponseType> 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<JAXBElement<? extends RequestType>> 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<JAXBElement<? extends RequestType>> nextRequest(List<JAXBElement<? extends ResponseType>> 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<? extends ResponseType> 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<HashDataInput> getHashDataInput() {
+ synchronized (requests) {
+ log.trace("return " + hashDataInputs.size() + " current HashDataInput(s) ");
+ return hashDataInputs;
+ }
+ }
+
+ private List<JAXBElement<? extends RequestType>> createSingleQuitRequest() {
+ QuitRequestType quitT = of.createQuitRequestType();
+ JAXBElement<QuitRequestType> quit = of.createGetNextRequestResponseTypeQuitRequest(quitT);
+ ArrayList<JAXBElement<? extends RequestType>> l = new ArrayList<JAXBElement<? extends RequestType>>();
+ 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<JAXBElement<? extends RequestType>> 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<? extends RequestType> 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<QuitRequestType> 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<JAXBElement<? extends ResponseType>> responsesIn = request.getInfoboxReadResponseOrSignResponseOrErrorResponse();
+// List<ResponseType> 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<? extends ResponseType> 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<JAXBElement<? extends RequestType>> 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<? extends RequestType> 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<QuitRequestType> 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<HashDataInput> hashDataInputs = stal.getHashDataInput();
+
+ if (hashDataInputs != null) {
+
+ Map<String, HashDataInput> hashDataIdMap = new HashMap<String, HashDataInput>();
+ for (HashDataInput hdi : hashDataInputs) {
+ if (log.isTraceEnabled()) {
+ log.trace("Provided HashDataInput for reference " + hdi.getReferenceId());
+ }
+ hashDataIdMap.put(hdi.getReferenceId(), hdi);
+ }
+
+ List<GetHashDataInputType.Reference> 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<JAXBElement<? extends ResponseType>> responsesIn) {
+ GetNextRequestResponseType response = new GetNextRequestResponseType();
+ response.setSessionId(TEST_SESSION_ID.toString());
+
+ List<JAXBElement<? extends RequestType>> 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<Reference> 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<JAXBElement<? extends RequestType>> 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<JAXBElement<? extends RequestType>> 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<JAXBElement<? extends RequestType>> 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 <clemens.orthacker@iaik.tugraz.at>
+ */
+public class STALXJAXBContextFactory implements JAXBContextFactory {
+
+ private static final Log log = LogFactory.getLog(STALXJAXBContextFactory.class);
+
+ @Override
+ public JAXBRIContext createJAXBContext(SEIModel sei, List<Class> classesToBind, List<TypeReference> 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<Class> classes = new ArrayList<Class>();
+ 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<String, byte[]> HASHDATA_INPUT = new HashMap<String, byte[]>();
+ 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<String, String> HASHDATA_MIMETYPES = new HashMap<String, String>();
+ static {
+ HASHDATA_MIMETYPES.put(ID[0], "text/plain");
+ HASHDATA_MIMETYPES.put(ID[1], "any/mime-type");
+ }
+
+// private static final byte[] signedInfo = "<dsig:SignedInfo xmlns:dsig=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:xpf=\"http://www.w3.org/2002/06/xmldsig-filter2\"><dsig:CanonicalizationMethod Algorithm=\"http://www.w3.org/TR/2001/REC-xml-c14n-20010315\" /> <dsig:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1\" /> <dsig:Reference Id=\"signed-data-reference-0-1214921968-27971781-24309\" URI=\"#signed-data-object-0-1214921968-27971781-13578\"><dsig:Transforms> <dsig:Transform Algorithm=\"http://www.w3.org/2002/06/xmldsig-filter2\"> <xpf:XPath xmlns:xpf=\"http://www.w3.org/2002/06/xmldsig-filter2\" Filter=\"intersect\">id('signed-data-object-0-1214921968-27971781-13578')/node()</xpf:XPath></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\" /> <dsig:DigestValue>H1IePEEfGQ2SG03H6LTzw1TpCuM=</dsig:DigestValue></dsig:Reference><dsig:Reference Id=\"etsi-data-reference-0-1214921968-27971781-25439\" Type=\"http://uri.etsi.org/01903/v1.1.1#SignedProperties\" URI=\"#xmlns(etsi=http://uri.etsi.org/01903/v1.1.1%23)%20xpointer(id('etsi-data-object-0-1214921968-27971781-3095')/child::etsi:QualifyingProperties/child::etsi:SignedProperties)\"><dsig:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\" /><dsig:DigestValue>yV6Q+I60buqR4mMaxA7fi+CV35A=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo>".getBytes();
+// private static final byte[] signedInfo2Ref = "<dsig:SignedInfo xmlns:dsig=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:xpf=\"http://www.w3.org/2002/06/xmldsig-filter2\"><dsig:CanonicalizationMethod Algorithm=\"http://www.w3.org/TR/2001/REC-xml-c14n-20010315\" /> <dsig:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1\" /> <dsig:Reference Id=\"signed-data-reference-0-1214921968-27971781-24309\" URI=\"#signed-data-object-0-1214921968-27971781-13578\"><dsig:Transforms> <dsig:Transform Algorithm=\"http://www.w3.org/2002/06/xmldsig-filter2\"> <xpf:XPath xmlns:xpf=\"http://www.w3.org/2002/06/xmldsig-filter2\" Filter=\"intersect\">id('signed-data-object-0-1214921968-27971781-13578')/node()</xpf:XPath></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\" /> <dsig:DigestValue>H1IePEEfGQ2SG03H6LTzw1TpCuM=</dsig:DigestValue></dsig:Reference><dsig:Reference Id=\"signed-data-reference-1\" URI=\"#signed-data-object-0-1214921968-27971781-13578\"><dsig:Transforms> <dsig:Transform Algorithm=\"http://www.w3.org/2002/06/xmldsig-filter2\"> <xpf:XPath xmlns:xpf=\"http://www.w3.org/2002/06/xmldsig-filter2\" Filter=\"intersect\">id('signed-data-object-1')/node()</xpf:XPath></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\" /> <dsig:DigestValue>H1IePEEfGQ2SG03H6LTzw1TpCuM=</dsig:DigestValue></dsig:Reference><dsig:Reference Id=\"etsi-data-reference-0-1214921968-27971781-25439\" Type=\"http://uri.etsi.org/01903/v1.1.1#SignedProperties\" URI=\"#xmlns(etsi=http://uri.etsi.org/01903/v1.1.1%23)%20xpointer(id('etsi-data-object-0-1214921968-27971781-3095')/child::etsi:QualifyingProperties/child::etsi:SignedProperties)\"><dsig:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\" /><dsig:DigestValue>yV6Q+I60buqR4mMaxA7fi+CV35A=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo>".getBytes();
+// private static final String signedInfo2Ref = "<dsig:Reference Id=\"signed-data-reference-1\" URI=\"#signed-data-object-0-1214921968-27971781-13578\"><dsig:Transforms> <dsig:Transform Algorithm=\"http://www.w3.org/2002/06/xmldsig-filter2\"> <xpf:XPath xmlns:xpf=\"http://www.w3.org/2002/06/xmldsig-filter2\" Filter=\"intersect\">id('signed-data-object-1')/node()</xpf:XPath></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\" /> <dsig:DigestValue>H1IePEEfGQ2SG03H6LTzw1TpCuM=</dsig:DigestValue></dsig:Reference>";
+ /**
+ * SIGNED_INFO[0] contains reference ID[0]
+ * SIGNED_INFO[1] contains reference ID[0] and ID[1]
+ */
+ public static final List<byte[]> SIGNED_INFO = new ArrayList<byte[]>();
+ static {
+ SIGNED_INFO.add("<dsig:SignedInfo xmlns:dsig=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:xpf=\"http://www.w3.org/2002/06/xmldsig-filter2\"><dsig:CanonicalizationMethod Algorithm=\"http://www.w3.org/TR/2001/REC-xml-c14n-20010315\" /> <dsig:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1\" /> <dsig:Reference Id=\"signed-data-reference-0-1214921968-27971781-24309\" URI=\"#signed-data-object-0-1214921968-27971781-13578\"><dsig:Transforms> <dsig:Transform Algorithm=\"http://www.w3.org/2002/06/xmldsig-filter2\"> <xpf:XPath xmlns:xpf=\"http://www.w3.org/2002/06/xmldsig-filter2\" Filter=\"intersect\">id('signed-data-object-0-1214921968-27971781-13578')/node()</xpf:XPath></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\" /> <dsig:DigestValue>H1IePEEfGQ2SG03H6LTzw1TpCuM=</dsig:DigestValue></dsig:Reference><dsig:Reference Id=\"etsi-data-reference-0-1214921968-27971781-25439\" Type=\"http://uri.etsi.org/01903/v1.1.1#SignedProperties\" URI=\"#xmlns(etsi=http://uri.etsi.org/01903/v1.1.1%23)%20xpointer(id('etsi-data-object-0-1214921968-27971781-3095')/child::etsi:QualifyingProperties/child::etsi:SignedProperties)\"><dsig:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\" /><dsig:DigestValue>yV6Q+I60buqR4mMaxA7fi+CV35A=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo>".getBytes());
+ SIGNED_INFO.add("<dsig:SignedInfo xmlns:dsig=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:xpf=\"http://www.w3.org/2002/06/xmldsig-filter2\"><dsig:CanonicalizationMethod Algorithm=\"http://www.w3.org/TR/2001/REC-xml-c14n-20010315\" /> <dsig:SignatureMethod Algorithm=\"http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1\" /> <dsig:Reference Id=\"signed-data-reference-0-1214921968-27971781-24309\" URI=\"#signed-data-object-0-1214921968-27971781-13578\"><dsig:Transforms> <dsig:Transform Algorithm=\"http://www.w3.org/2002/06/xmldsig-filter2\"> <xpf:XPath xmlns:xpf=\"http://www.w3.org/2002/06/xmldsig-filter2\" Filter=\"intersect\">id('signed-data-object-0-1214921968-27971781-13578')/node()</xpf:XPath></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\" /> <dsig:DigestValue>H1IePEEfGQ2SG03H6LTzw1TpCuM=</dsig:DigestValue></dsig:Reference><dsig:Reference Id=\"signed-data-reference-1\" URI=\"#signed-data-object-0-1214921968-27971781-13578\"><dsig:Transforms> <dsig:Transform Algorithm=\"http://www.w3.org/2002/06/xmldsig-filter2\"> <xpf:XPath xmlns:xpf=\"http://www.w3.org/2002/06/xmldsig-filter2\" Filter=\"intersect\">id('signed-data-object-1')/node()</xpf:XPath></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\" /> <dsig:DigestValue>H1IePEEfGQ2SG03H6LTzw1TpCuM=</dsig:DigestValue></dsig:Reference><dsig:Reference Id=\"etsi-data-reference-0-1214921968-27971781-25439\" Type=\"http://uri.etsi.org/01903/v1.1.1#SignedProperties\" URI=\"#xmlns(etsi=http://uri.etsi.org/01903/v1.1.1%23)%20xpointer(id('etsi-data-object-0-1214921968-27971781-3095')/child::etsi:QualifyingProperties/child::etsi:SignedProperties)\"><dsig:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\" /><dsig:DigestValue>yV6Q+I60buqR4mMaxA7fi+CV35A=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo>".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/<mocca_context>
+// replace ${catalina.base}/work/Catalina/localhost/bkuonline
+// with ${catalina.base}/work/Catalina/localhost/<mocca_context> (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 <DataURL_host:DataURL_port>
+// replace localhost:8080
+// with <StylesheetURL_host:StylesheetURL_port>
+// replace www.xslt-stylesheet-include-url.org:80
+// with <XSL_include_URL>
+// replace ../conf/secret.xml
+// with <any_resource_you_would_like_to_grant_XSLTs_document()_function_access_to>
+//
+// replace www.a-trust.at and ksp.ecard.sozialversicherung.gv.at
+// with <idLink_template_download_URL>
+// replace ldap.a-trust.at:389 and ocsp.ecard.sozialversicherung.at:80
+// with <certificate_revocation_authority_endpoint> (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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+ -->
+<AccessControl>
+ <Chains>
+ <!--
+ The input chain defines filters that are applied before command
+ execution
+ -->
+ <Chain Id="InputChain">
+ <Rules>
+ <!-- there is no command implemented that requires input filtering -->
+ <Rule Id="InputChain-AllowAll">
+ <Action>
+ <RuleAction>allow</RuleAction>
+ </Action>
+ <UserInteraction>confirm</UserInteraction>
+ </Rule>
+ </Rules>
+ </Chain>
+
+ <!--
+ The output chain defines filters that are applied after command
+ execution
+ -->
+ <Chain Id="OutputChain">
+ <Rules>
+ <Rule Id="OutputChain-Egov">
+ <AuthClass>certifiedGovAgency</AuthClass>
+ <Action>
+ <RuleAction>allow</RuleAction>
+ </Action>
+ <UserInteraction>confirm</UserInteraction>
+ </Rule>
+ <Rule Id="OutputChain-Command">
+ <AuthClass>anonymous</AuthClass>
+ <Action>
+ <ChainRef>Command</ChainRef>
+ </Action>
+ </Rule>
+ </Rules>
+ </Chain>
+ <Chain Id="Command">
+ <Rules>
+ <Rule Id="cmd-rule-1">
+ <AuthClass>certified</AuthClass>
+ <Command Name="Infobox.*">
+ <Param Name="InfoboxIdentifier">IdentityLink</Param>
+ <Param Name="PersonIdentifier">derived</Param>
+ </Command>
+ <Action>
+ <RuleAction>allow</RuleAction>
+ </Action>
+ <UserInteraction>confirm</UserInteraction>
+ </Rule>
+ <Rule Id="cmd-rule-2">
+ <AuthClass>anonymous</AuthClass>
+ <Command Name="Infobox.*">
+ <Param Name="InfoboxIdentifier">IdentityLink</Param>
+ </Command>
+ <Action>
+ <RuleAction>deny</RuleAction>
+ </Action>
+ <UserInteraction>info</UserInteraction>
+ </Rule>
+ <Rule Id="cmd-rule-3">
+ <Action>
+ <RuleAction>allow</RuleAction>
+ </Action>
+ </Rule>
+ </Rules>
+ </Chain>
+ </Chains>
+</AccessControl>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<!--Context path="/bkuonline"/-->
+<Context path=""/>
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 @@
+<!--
+ 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.
+-->
+<%@ page language="java" contentType="text/html; charset=UTF-8"
+ pageEncoding="UTF-8"
+ import="at.gv.egiz.org.apache.tomcat.util.http.AcceptLanguage"%>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <title>MOCCA PIN Management</title>
+ <link rel="shortcut icon" href="img/chip16.ico" type="image/x-icon">
+ <script type="text/javascript" src="js/deployJava.js"></script>
+ <style type="text/css" media="all">@import "css/applet.css";</style>
+
+ <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
+ <META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 22 Jul 2002 11:12:01 GMT">
+ <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
+ </head>
+ <%
+ 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");
+ %>
+ <body id="appletpage" style="width:<%=width%>" onFocus="focusToApplet()">
+ <script>
+
+ // avoid selection of applet before it is completely loaded
+ var allowSelectionByJS = false;
+
+ if (!deployJava.versionCheck('1.6.0_04+')) {
+ document
+ .write('<b>Diese Anwendung benötigt die Java Platform Version 1.6.0_04 oder höher.</b>' + '<input type="submit" value="Java Platform 1.6.0_02 installieren" onclick="deployJava.installLatestJRE();">');
+ } else {
+ var attributes = {
+ codebase :'applet',
+ code : 'at.gv.egiz.bku.online.applet.PINManagementApplet.class',
+ archive : 'BKUAppletExt.jar, commons-logging.jar, iaik_jce_me4se.jar',
+ width : <%=width%>,
+ height :<%=height%>,
+ name : 'moccaapplet',
+ id : 'moccaapplet'
+ };
+ var parameters = {
+ GuiStyle : '<%=guiStyle%>',
+ Locale : '<%=locale%>',
+ Background : '<%=backgroundImg%>',
+ HelpURL : '../help/',
+ SessionID : '<%=request.getSession().getId()%>',
+ RedirectURL : '../',
+ RedirectTarget: '_parent',
+ EnforceRecommendedPINLength: 'true'
+ };
+ var version = '1.6.0_04';
+ deployJava.runApplet(attributes, parameters, version);
+ }
+ </script>
+ </body>
+
+ <script>
+
+ function focusToApplet() {
+
+ //alert('try to set focus to applet');
+ if (document != null && document.moccaapplet != null && allowSelectionByJS) {
+
+ //alert('set focus to applet.');
+ document.moccaapplet.getFocusFromBrowser();
+ return true;
+ }
+ allowSelectionByJS = true;
+ }
+
+ function focusToBrowser() {
+
+ // put focus to window
+ // focus can be assigned to an arbitrary focusable field on the embedding website as well
+ self.focus();
+
+ }
+
+ </script>
+
+</html>
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 @@
+<!--
+ 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.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+ <head>
+ <title>Security-Layer v1.2 Request Formular</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <link rel="shortcut icon" href="img/chip16.ico" type="image/x-icon">
+ <script language="JavaScript" type="text/javascript">
+ <!--
+ function setAppletDimension(width, height)
+ {
+ document.forms.slform.appletWidth.value=width;
+ document.forms.slform.appletHeight.value=height;
+ }
+ function setNOPRequest() {
+ document.forms.slform.XMLRequest.value='<?xml version="1.0" encoding="UTF-8"?><NullOperationRequest xmlns="http://www.buergerkarte.at/namespaces/securitylayer/1.2#"/>';
+ }
+
+ //-->
+ </script>
+ <style type="text/css" media="all">@import "css/main.css";</style>
+ <style type="text/css">
+ fieldset {
+ padding: 1em;
+ margin: 1em;
+ font: 80%/ 1 sans-serif;
+ background-color: #F2EFE9;
+ padding-left: 5em;
+ }
+
+ fieldset.submit {
+ float: none;
+ width: auto;
+ border: 0 none #FFF;
+ padding-left: 14em;
+ border-style: none;
+ background-color: transparent;
+ }
+
+ label {
+ float: left;
+ width: 8em;
+ margin-right: 0.5em;
+ padding-top: 0.2em;
+ text-align: right;
+ font-weight: bold;
+ color: #000;
+ padding-top: 0.2em;
+ }
+
+ legend {
+ border: 1px solid;
+ padding: 2px 6px
+ }
+ </style>
+
+ </head>
+ <body>
+ <h1>Security-Layer v1.2 Request Formular</h1>
+ <p>
+ <form action="./http-security-layer-request" method="Post"
+ enctype="application/x-www-form-urlencoded" name="slform">
+ <!--input name="locale" value="es_MX" type="hidden" /-->
+ <fieldset><legend>Enter XML Request</legend>
+ <p><label for="XMLRequest">XML Request</label> <textarea
+ name="XMLRequest" rows=15 cols="60" id="XMLRequest">
+<?xml version="1.0" encoding="UTF-8"?>
+<sl:CreateXMLSignatureRequest
+ xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#">
+<sl:KeyboxIdentifier>SecureSignatureKeypair</sl:KeyboxIdentifier>
+ <sl:DataObjectInfo Structure="detached">
+ <sl:DataObject Reference="test.txt">
+ <sl:XMLContent>Ich bin ein einfacher Text.</sl:XMLContent>
+ </sl:DataObject>
+ <sl:TransformsInfo>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>text/plain</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ </sl:DataObjectInfo>
+</sl:CreateXMLSignatureRequest>
+ </textarea></p>
+ <!--
+<?xml version="1.0" encoding="UTF-8" ?>
+<sl:InfoboxReadRequest
+ xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#">
+ <sl:InfoboxIdentifier>IdentityLink</sl:InfoboxIdentifier>
+ <sl:BinaryFileParameters ContentIsXMLEntity="true" />
+</sl:InfoboxReadRequest>
+-->
+<!--
+<?xml version="1.0" encoding="UTF-8"?>
+<sl:CreateXMLSignatureRequest
+ xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#">
+ <sl:KeyboxIdentifier>SecureSignatureKeypair</sl:KeyboxIdentifier>
+ <sl:DataObjectInfo Structure="enveloping">
+ <sl:DataObject>
+ <sl:XMLContent>Ich bin ein einfacher Text. llöäü߀</sl:XMLContent>
+ </sl:DataObject>
+ <sl:TransformsInfo>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>text/plain</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ </sl:DataObjectInfo>
+ <sl:DataObjectInfo Structure="enveloping">
+ <sl:DataObject>
+ <sl:XMLContent>
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>TestXHTML</title>
+ <style type="text/css" media="screen">
+ .heading { font-size: large; font-weight: bold; }
+ .content1 { }
+ .content2 { font-style: italic; }
+ .content3 { font-family: serif; }
+ .footer { font-size: small; }
+ </style>
+ </head>
+ <body>
+ <h3 class="heading">Heading3 large bold llöäü߀</h3>
+ <p class="content1">Ich bin ein einfacher Text. llöäü߀</p>
+ <p class="content2">Ich bin ein einfacher Text. llöäü߀</p>
+ <p class="content3">Ich bin ein einfacher Text. llöäü߀</p>
+ <p class="footer">Ich bin ein einfacher Text. llöäü߀</p>
+ </body>
+</html>
+ </sl:XMLContent>
+ </sl:DataObject>
+ <sl:TransformsInfo>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>application/xhtml+xml</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ </sl:DataObjectInfo>
+</sl:CreateXMLSignatureRequest>
+-->
+<!--
+<?xml version='1.0' encoding='UTF-8'?>
+<sl10:InfoboxUpdateRequest xmlns:sl10='http://www.buergerkarte.at/namespaces/securitylayer/1.2#'>
+ <sl10:InfoboxIdentifier>CardChannel</sl10:InfoboxIdentifier>
+ <sl10:BinaryFileParameters>
+ <sl10:XMLContent>
+ <Script>
+ <Reset cold='true' />
+ <CommandAPDU sequence='1' of='2' expectedSW='9000'>00A4000C023F00</CommandAPDU>
+ <CommandAPDU sequence='2' of='2' expectedSW='9000'>00B0820000</CommandAPDU>
+ </Script>
+ </sl10:XMLContent>
+ </sl10:BinaryFileParameters>
+</sl10:InfoboxUpdateRequest>
+-->
+ </fieldset>
+ <fieldset><legend>Request Parameters</legend>
+ <p>
+ <label for="appletGuiStyle">GUI Style</label>
+ <input type="radio" name="appletGuiStyle" value="tiny" onclick="setAppletDimension(152, 145)">tiny
+ <input type="radio" name="appletGuiStyle" value="simple" checked="checked" onclick="setAppletDimension(190,130)">simple
+ <input type="radio" name="appletGuiStyle" value="advanced" onclick="setAppletDimension(300, 180)">advanced
+ </p>
+
+ <p><label for="appletWidth">Applet Width</label> <input
+ name="appletWidth" value="190" id="appletWidth">
+ <p><label for="appletHeight">Applet Height</label> <input
+ name="appletHeight" value="130" id="appletHeight">
+ <p><label for="appletBackground">Applet Background</label> <input
+ name="appletBackground" value="" id="appletBackground">
+ <p><label for="appletBackgroundColor">Applet Background Color</label> <input
+ name="appletBackgroundColor" value="" id="appletBackgroundColor">
+ </p>
+
+ <p>
+ <label for="appletPage">Applet Page</label>
+ <input type="radio" name="appletPage" value="BKUApplet" checked="checked">Default
+ <input type="radio" name="appletPage" value="BKUAppletAlternative">Alternative
+ </p>
+<!--
+ <p>
+ <label for="appletExtension">Extension</label>
+ <input type="radio" name="appletExtension" value="activation" onclick="setInfoboxUpdateRequest()">Activation
+ <input type="radio" name="appletExtension" value="pin" onclick="setAppletDimension(400, 200)">PIN Management
+ </p>
+-->
+
+<!--
+ <p><label for="RedirectURL">RedirectURL</label> <input
+ name="RedirectURL" value="" id="RedirectURL"></p>
+ <p><label for="DataURL">DataURL</label> <input name="DataURL"
+ value="" id="DataURL"></p>
+ <p><label for="StylesheetURL">StylesheetURL</label> <input
+ name="StylesheetURL" value="" id="StylesheetURL"></p>
+ <p>
+-->
+
+ </fieldset>
+ <fieldset class="submit"><input type="submit" class="submit"/></fieldset>
+ </form>
+
+ </body>
+</html>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ 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.
+ -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
+
+ <bean id="STALFactory" class="at.gv.egiz.stal.service.impl.RequestBrokerSTALFactory"
+ scope="singleton" />
+
+ <bean id="accessController"
+ class="at.gv.egiz.bku.online.accesscontroller.SpringSecurityManager"
+ scope="singleton" init-method="init">
+ <property name="config" ref="configurator" />
+ </bean>
+
+ <bean id="commandInvoker" class="at.gv.egiz.bku.binding.SLCommandInvokerImpl">
+ <property name="securityManager" ref="accessController" />
+ </bean>
+
+ <bean id="slCommandFactory" class="at.gv.egiz.bku.slcommands.SLCommandFactory"
+ factory-method="getInstance">
+ <property name="concreteFactories">
+ <map>
+ <entry key-ref="nullOperationRequest" value-ref="nullOperationCommandFactory"/>
+ <entry key-ref="infoboxReadRequest" value-ref="infoboxReadCommandFactory"/>
+ <entry key-ref="infoboxUpdateRequest" value-ref="infoboxUpdateCommandFactory"/>
+ <entry key-ref="createXMLSignatureRequest" value-ref="createXMLSignatureCommandFactory"/>
+ <entry key-ref="getStatusRequest" value-ref="getStatusCommandFactory"/>
+ </map>
+ </property>
+ </bean>
+
+ <bean id="nullOperationCommandFactory" class="at.gv.egiz.bku.slcommands.impl.NullOperationCommandFactory"/>
+ <bean id="nullOperationRequest" class="javax.xml.namespace.QName">
+ <constructor-arg value="http://www.buergerkarte.at/namespaces/securitylayer/1.2#"/>
+ <constructor-arg value="NullOperationRequest"/>
+ </bean>
+ <bean id="infoboxReadCommandFactory" class="at.gv.egiz.bku.slcommands.impl.InfoboxReadCommandFactory">
+ <property name="infoboxFactory" ref="infoboxFactory"/>
+ </bean>
+ <bean id="infoboxReadRequest" class="javax.xml.namespace.QName">
+ <constructor-arg value="http://www.buergerkarte.at/namespaces/securitylayer/1.2#"/>
+ <constructor-arg value="InfoboxReadRequest"/>
+ </bean>
+ <bean id="infoboxUpdateCommandFactory" class="at.gv.egiz.bku.slcommands.impl.InfoboxUpdateCommandFactory">
+ <property name="infoboxFactory" ref="infoboxFactory"/>
+ </bean>
+ <bean id="infoboxUpdateRequest" class="javax.xml.namespace.QName">
+ <constructor-arg value="http://www.buergerkarte.at/namespaces/securitylayer/1.2#"/>
+ <constructor-arg value="InfoboxUpdateRequest"/>
+ </bean>
+ <bean id="createXMLSignatureCommandFactory" class="at.gv.egiz.bku.slcommands.impl.CreateXMLSignatureCommandFactory"/>
+ <bean id="createXMLSignatureRequest" class="javax.xml.namespace.QName">
+ <constructor-arg value="http://www.buergerkarte.at/namespaces/securitylayer/1.2#"/>
+ <constructor-arg value="CreateXMLSignatureRequest"/>
+ </bean>
+ <bean id="getStatusCommandFactory" class="at.gv.egiz.bku.slcommands.impl.GetStatusCommandFactory"/>
+ <bean id="getStatusRequest" class="javax.xml.namespace.QName">
+ <constructor-arg value="http://www.buergerkarte.at/namespaces/securitylayer/1.2#"/>
+ <constructor-arg value="GetStatusRequest"/>
+ </bean>
+
+ <bean id="infoboxFactory" class="at.gv.egiz.bku.slcommands.impl.InfoboxFactory">
+ <property name="infoboxFactories">
+ <map>
+ <entry key="Certificates" value-ref="certificatesInfoboxFactory"/>
+ <entry key="IdentityLink" value-ref="identityLinkInfoboxFactory"/>
+ <entry key="CardChannel" value-ref="cardChannelInfoboxFactory"/>
+ <entry key="SV-Personendaten" value-ref="svPersonendatenInfoboxFactory"/>
+ </map>
+ </property>
+ </bean>
+
+ <bean id="certificatesInfoboxFactory" class="at.gv.egiz.bku.slcommands.impl.CertificatesInfoboxFactory"/>
+ <bean id="identityLinkInfoboxFactory" class="at.gv.egiz.bku.slcommands.impl.IdentityLinkInfoboxFactory"/>
+ <bean id="cardChannelInfoboxFactory" class="at.gv.egiz.bku.slcommands.impl.CardChannelInfoboxFactory"/>
+ <bean id="svPersonendatenInfoboxFactory" class="at.gv.egiz.bku.slcommands.impl.SVPersonendatenInfoboxFactory"/>
+
+
+ <bean id="bindingProcessorManager" class="at.gv.egiz.bku.binding.BindingProcessorManagerImpl"
+ scope="singleton">
+ <constructor-arg ref="STALFactory"></constructor-arg>
+ <constructor-arg ref="commandInvoker"></constructor-arg>
+ <constructor-arg ref="configuration"></constructor-arg>
+ </bean>
+
+ <!-- TODO DataURL bean with configuration injected -->
+
+ <bean
+ class="org.springframework.web.context.support.ServletContextAttributeExporter">
+ <property name="attributes">
+ <map>
+ <entry key="bindingProcessorManager">
+ <ref bean="bindingProcessorManager" />
+ </entry>
+ </map>
+ </property>
+ </bean>
+
+ <!-- Configure Configuration -->
+ <bean id="certValidator" class="at.gv.egiz.bku.conf.CertValidatorImpl"></bean>
+
+
+ <bean id="configurator" class="at.gv.egiz.bku.online.conf.SpringConfigurator"
+ init-method="configure" scope="singleton">
+ <property name="resource"
+ value="classpath:at/gv/egiz/bku/online/conf/defaultConf.properties" />
+ <property name="certValidator" ref="certValidator"></property>
+ </bean>
+
+ <!-- Shutdown Event handler -->
+ <bean id="shutdown" class="at.gv.egiz.bku.online.webapp.ShutdownHandler">
+ <property name="bindingProcessorManager" ref="bindingProcessorManager"></property>
+ </bean>
+
+ <!-- Begin MOCCA Configuration [REFACTORED]
+ | Configuration beans (no conf properties file) should be injected directly
+ | to module configurators (at.gv.egiz.bku.X.conf.Configuration).
+ | Currently, only configuration items are considered.
+ |-->
+ <import resource="mocca-conf.xml"/>
+
+</beans> \ 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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<!--
+ | User configuration file. (defaultConf.properties is migrated to this file)
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+ http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
+
+ <!-- BKU Common (ie. main) Configuration -->
+ <bean id="configuration" class="at.gv.egiz.bku.conf.Configuration">
+ <property name="maxDataUrlHops" value="50"/>
+
+ <!-- TODO refactor DataURL and inject this bkuCommonConfig to DataURL -->
+ <!-- TODO inject bkuCommonConfig to SpringBKUServlet and SpringSecurityManager
+ | and replace SpringConfigurator -->
+ <!-- used to construct the User-Agent HTTP header
+ <property name="implementationName" value="MOCCA"/>
+ <property name="implementationVersion" value="1.0"/-->
+ </bean>
+
+ <!--
+ | ReaderFactory configuration not available in Applet
+ |
+ <bean id="smccConfiguration" class="at.gv.egiz.smcc.conf.SMCCConfiguration">
+ <property name="disablePinpad" value="true"/>
+ </bean>
+
+ <bean id="readerFactory" class="at.gv.egiz.smcc.reader.ReaderFactory">
+ <property name="configuration" ref="smccConfiguration"/>
+ </bean>
+ |-->
+
+</beans>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<!--
+ Description: tomcat deployement
+-->
+
+<endpoints
+ xmlns="http://java.sun.com/xml/ns/jax-ws/ri/runtime"
+ version="2.0">
+
+ <endpoint
+ name="STALService"
+ interface="at.gv.egiz.stal.service.STALPortType"
+ implementation="at.gv.egiz.stal.service.impl.STALServiceImpl"
+ wsdl="WEB-INF/wsdl/stal.wsdl"
+ service="{http://www.egiz.gv.at/wsdl/stal}STALService"
+ port="{http://www.egiz.gv.at/wsdl/stal}STALPort"
+ url-pattern="/stal" />
+
+</endpoints>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+ -->
+<web-app id="bkuonline" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+ <display-name>http-security-layer-request</display-name>
+
+ <!-- Begin Spring Config -->
+ <context-param>
+ <param-name>contextConfigLocation</param-name>
+ <param-value>/WEB-INF/applicationContext.xml</param-value>
+ </context-param>
+ <listener>
+ <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
+ </listener>
+ <!-- End Spring Config -->
+
+ <!-- Begin BKU Config -->
+ <listener>
+ <listener-class>at.gv.egiz.bku.online.webapp.SessionTimeout</listener-class>
+ </listener>
+ <listener>
+ <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
+ </listener>
+ <servlet>
+ <servlet-name>BKUServlet</servlet-name>
+ <servlet-class>at.gv.egiz.bku.online.webapp.BKURequestHandler</servlet-class>
+ </servlet>
+ <servlet>
+ <servlet-name>ResultServlet</servlet-name>
+ <servlet-class>at.gv.egiz.bku.online.webapp.ResultServlet</servlet-class>
+ <init-param>
+ <param-name>responseEncoding</param-name>
+ <param-value>UTF-8</param-value>
+ </init-param>
+ <init-param>
+ <param-name>expiredPage</param-name>
+ <!-- FIXME -->
+ <param-value>expired.html</param-value>
+ </init-param>
+ </servlet>
+ <servlet>
+ <servlet-name>BKUApplet</servlet-name>
+ <jsp-file>/applet.jsp</jsp-file>
+ </servlet>
+ <servlet>
+ <servlet-name>STALService</servlet-name>
+ <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>BKUServlet</servlet-name>
+ <url-pattern>/http-security-layer-request</url-pattern>
+ </servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>BKUServlet</servlet-name>
+ <url-pattern>/https-security-layer-request</url-pattern>
+ </servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>ResultServlet</servlet-name>
+ <url-pattern>/bkuResult</url-pattern>
+ </servlet-mapping>
+
+ <!--
+ | Configure alternative applet pages that may be requested
+ | via the 'appletPage' form parameter (cf. SLRequestForm.html)
+ <servlet>
+ <servlet-name>BKUAppletAlternative</servlet-name>
+ <jsp-file>/appletAlternative.jsp</jsp-file>
+ </servlet-->
+
+ <!--
+ | To disable applet caching load the applet via the AppletDispatcher
+ | (cf. applet.jsp)
+ <servlet>
+ <servlet-name>AppletDispatcher</servlet-name>
+ <servlet-class>at.gv.egiz.bku.online.webapp.AppletDispatcher</servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>AppletDispatcher</servlet-name>
+ <url-pattern>/applet/dispatch/*</url-pattern>
+ </servlet-mapping-->
+
+ <!-- End BKU Config -->
+
+ <!-- Begin BKU Web Start Config
+ | (activate 'include-webstart' profile)
+ <servlet>
+ <servlet-name>JnlpDownloadServlet</servlet-name>
+ <servlet-class>jnlp.sample.servlet.JnlpDownloadServlet</servlet-class>
+ <init-param>
+ <param-name>logLevel</param-name>
+ <param-value>DEBUG</param-value>
+ </init-param>
+ <init-param>
+ <param-name>logPath</param-name>
+ <param-value>logs/jnlpdownloadservlet.log</param-value>
+ </init-param>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>JnlpDownloadServlet</servlet-name>
+ <url-pattern>/webstart/*</url-pattern>
+ </servlet-mapping>
+ -->
+ <!-- End BKU Web Start Config -->
+
+ <servlet-mapping>
+ <servlet-name>STALService</servlet-name>
+ <url-pattern>/stal</url-pattern>
+ </servlet-mapping>
+ <session-config>
+ <session-timeout>5</session-timeout>
+ </session-config>
+ <welcome-file-list>
+ <welcome-file>index.html</welcome-file>
+ <welcome-file>index.jsp</welcome-file>
+ </welcome-file-list>
+</web-app>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<definitions name="stal" targetNamespace="http://www.egiz.gv.at/wsdl/stal"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://www.egiz.gv.at/wsdl/stal"
+ xmlns:stal="http://www.egiz.gv.at/stal"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+ <types>
+ <xsd:schema targetNamespace="http://www.egiz.gv.at/wsdl/stal">
+ <xsd:import namespace="http://www.egiz.gv.at/stal" schemaLocation="stal.xsd"/>
+ <!--xsd:import namespace="http://www.egiz.gv.at/stal" schemaLocation="stal-extended.xsd"/-->
+ </xsd:schema>
+ <!-- test
+ <xsd:schema targetNamespace="http://www.egiz.gv.at/wsdl/stal-extended">
+ <xsd:import namespace="http://www.buergerkarte.at/cardchannel" schemaLocation="CardChannel.xsd"/>
+ </xsd:schema-->
+ </types>
+ <message name="ConnectRequest">
+ <part name="part1" element="stal:SessionId"/>
+ </message>
+ <message name="NextRequestRequest">
+ <part name="part1" element="stal:GetNextRequest"/>
+ </message>
+ <message name="NextRequestResponse">
+ <part name="part1" element="stal:GetNextRequestResponse"/>
+ </message>
+ <message name="GetHashDataInputRequest">
+ <part name="part1" element="stal:GetHashDataInput"/>
+ </message>
+ <message name="GetHashDataInputResponse">
+ <part name="part1" element="stal:GetHashDataInputResponse"/>
+ </message>
+ <message name="GetHashDataInputFault">
+ <part name="part1" element="stal:GetHashDataInputFault"/>
+ </message>
+ <portType name="STALPortType">
+ <operation name="connect">
+ <input name="input3" message="tns:ConnectRequest"/>
+ <output name="output3" message="tns:NextRequestResponse"/>
+ </operation>
+ <operation name="nextRequest">
+ <input name="input1" message="tns:NextRequestRequest"/>
+ <output name="output1" message="tns:NextRequestResponse"/>
+ </operation>
+ <operation name="getHashDataInput">
+ <input name="input2" message="tns:GetHashDataInputRequest"/>
+ <output name="output2" message="tns:GetHashDataInputResponse"/>
+ <fault name="fault1" message="tns:GetHashDataInputFault"/>
+ </operation>
+ </portType>
+ <binding name="STALBinding" type="tns:STALPortType">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <operation name="connect">
+ <input name="input3">
+ <soap:body use="literal"/>
+ </input>
+ <output name="output3">
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="nextRequest">
+ <soap:operation/>
+ <input name="input1">
+ <soap:body use="literal"/>
+ </input>
+ <output name="output1">
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="getHashDataInput">
+ <soap:operation/>
+ <input name="input2">
+ <soap:body use="literal"/>
+ </input>
+ <output name="output2">
+ <soap:body use="literal"/>
+ </output>
+ <fault name="fault1">
+ <soap:fault name="fault1"/>
+ </fault>
+ </operation>
+ </binding>
+ <service name="STALService">
+ <port name="STALPort" binding="tns:STALBinding">
+ <soap:address location="http://localhost:${HttpDefaultPort}/stal"/>
+ </port>
+ </service>
+</definitions>
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 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.egiz.gv.at/stal"
+ xmlns:tns="http://www.egiz.gv.at/stal"
+ elementFormDefault="qualified">
+ <element name="SessionId" type="string"/>
+ <element name="GetNextRequest" type="tns:GetNextRequestType"/>
+ <element name="GetNextRequestResponse" type="tns:GetNextRequestResponseType"/>
+ <element name="GetHashDataInput" type="tns:GetHashDataInputType"/>
+ <element name="GetHashDataInputResponse" type="tns:GetHashDataInputResponseType"/>
+ <element name="GetHashDataInputFault" type="tns:GetHashDataInputFaultType"/>
+ <complexType name="GetNextRequestType">
+ <!-- abstract Request/Response type not supported by JAX-WS 2.0 (jdk < 1.6.0_04)
+ <sequence>
+ <element name="Response" type="tns:ResponseType" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence-->
+ <choice maxOccurs="unbounded">
+ <element name="InfoboxReadResponse" type="tns:InfoboxReadResponseType"/>
+ <element name="SignResponse" type="tns:SignResponseType"/>
+ <element name="ErrorResponse" type="tns:ErrorResponseType"/>
+ <element name="StatusResponse" type="tns:StatusResponseType"/>
+ </choice>
+ <attribute name="SessionId" type="string"/>
+ </complexType>
+ <complexType name="ResponseType" abstract="true" />
+ <complexType name="InfoboxReadResponseType">
+ <complexContent>
+ <extension base="tns:ResponseType">
+ <sequence>
+ <element name="InfoboxValue" type="base64Binary"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="SignResponseType">
+ <complexContent>
+ <extension base="tns:ResponseType">
+ <sequence>
+ <element name="SignatureValue" type="base64Binary"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="ErrorResponseType">
+ <complexContent>
+ <extension base="tns:ResponseType">
+ <sequence>
+ <element name="ErrorCode" type="int"/>
+ <element name="ErrorMessage" type="string"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="StatusResponseType">
+ <complexContent>
+ <extension base="tns:ResponseType">
+ <attribute name="cardReady" type="boolean" />
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="GetNextRequestResponseType">
+ <!-- abstract Request/Response type not supported by JAX-WS 2.0 (jdk < 1.6.0_04)
+ <sequence>
+ <element name="Request" type="tns:RequestType" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence-->
+ <choice maxOccurs="unbounded">
+ <element name="InfoboxReadRequest" type="tns:InfoboxReadRequestType"/>
+ <element name="SignRequest" type="tns:SignRequestType"/>
+ <element name="QuitRequest" type="tns:QuitRequestType"/>
+ <element name="StatusRequest" type="tns:StatusRequestType"/>
+ </choice>
+ <attribute name="SessionId" type="string"/>
+ </complexType>
+ <complexType name="RequestType" abstract="true"/>
+ <complexType name="InfoboxReadRequestType">
+ <complexContent>
+ <extension base="tns:RequestType">
+ <sequence>
+ <element name="InfoboxIdentifier">
+ <simpleType>
+ <restriction base="string">
+ <enumeration value="Certificates"/>
+ <enumeration value="IdentityLink"/>
+ <enumeration value="Mandates"/>
+ </restriction>
+ </simpleType>
+ </element>
+ <element name="DomainIdentifier" type="anyURI" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="SignRequestType">
+ <complexContent>
+ <extension base="tns:RequestType">
+ <sequence>
+ <element name="KeyIdentifier">
+ <simpleType>
+ <restriction base="string">
+ <enumeration value="SecureSignatureKeypair"/>
+ <enumeration value="CertifiedKeypair"/>
+ </restriction>
+ </simpleType>
+ </element>
+ <element name="SignedInfo" type="base64Binary"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="QuitRequestType">
+ <complexContent>
+ <extension base="tns:RequestType"/>
+ </complexContent>
+ </complexType>
+ <complexType name="StatusRequestType">
+ <complexContent>
+ <extension base="tns:RequestType"/>
+ </complexContent>
+ </complexType>
+ <complexType name="GetHashDataInputType">
+ <sequence>
+ <element name="Reference" maxOccurs="unbounded">
+ <complexType>
+ <attribute name="ID" type="string"/>
+ </complexType>
+ </element>
+ </sequence>
+ <attribute name="SessionId" type="string"/>
+ </complexType>
+ <complexType name="GetHashDataInputResponseType">
+ <sequence>
+ <element name="Reference" maxOccurs="unbounded">
+ <complexType>
+ <simpleContent>
+ <extension base="base64Binary">
+ <attribute name="ID" type="string"/>
+ <attribute name="MimeType" type="string" use="optional"/>
+ <attribute name="Encoding" type="string" use="optional"/>
+ <attribute name="Filename" type="string" use="optional"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </sequence>
+ <attribute name="SessionId" type="string"/>
+ </complexType>
+ <complexType name="GetHashDataInputFaultType">
+ <sequence>
+ <element name="ErrorCode" type="int"/>
+ <element name="ErrorMessage" type="string"/>
+ </sequence>
+ </complexType>
+</schema>
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 @@
+<!--
+ 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.
+-->
+<%@ 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" %>
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <title>MOCCA Applet</title>
+ <link rel="shortcut icon" href="img/chip16.ico" type="image/x-icon">
+ <script type="text/javascript" src="js/deployJava.js"></script>
+ <style type="text/css" media="all">@import "css/applet.css";</style>
+
+ <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
+ <META HTTP-EQUIV="EXPIRES" CONTENT="Mon, 22 Jul 2002 11:12:01 GMT">
+ <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
+ </head>
+ <%
+ 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;
+ }
+
+ %>
+ <body id="appletpage" style="width:<%=width%>px">
+ <script type="text/javascript">
+ if (!deployJava.versionCheck('1.6.0_04+')) {
+ document.write('<p>Diese Anwendung benötigt Version 6 Update 4 oder höher der <a href="" onclick="deployJava.installLatestJRE();">Java&trade; Laufzeitumgebung</a>.</p>');
+ } else {
+ var attributes = {
+ codebase :'<%=codebase%>',
+ code : '<%=appletClass%>',
+ archive : '<%=appletArchive +".jar, commons-logging.jar, iaik_jce_me4se.jar"%>',
+ width : <%=width%>,
+ height :<%=height%>,
+ name : 'moccaapplet',
+ id : 'moccaapplet'
+ };
+ var parameters = {
+ GuiStyle : '<%=guiStyle%>',
+ Locale : '<%=locale%>',
+ Background : '<%=backgroundImg%>',
+ BackgroundColor : '<%=backgroundColor%>',
+ WSDL_URL : '../stal;jsessionid=<%=sessionId%>?wsdl',
+ HelpURL : '../help/',
+ SessionID : '<%=sessionId%>',
+ RedirectURL : '../bkuResult',
+ RedirectTarget: '_parent',
+ EnforceRecommendedPINLength: 'true'
+ };
+ deployJava.runApplet(attributes, parameters, '1.6.0_04');
+ }
+ </script>
+ </body>
+</html>
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 @@
+<!--
+ 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.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Session Expired</title>
+</head>
+<body>
+ <p>
+ Ihre Sitzung ist abgelaufen.
+ <!--Ein neuer BKU request kann im <a href="HTTP-ohne.html">Requestformular</a> erstellt werden.-->
+ </p>
+</body>
+</html> \ 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
--- /dev/null
+++ b/mocca-1.2.11/BKUOnline/src/main/webapp/img/chip16.ico
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUOnline/src/main/webapp/img/chip32.png
Binary files 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
--- /dev/null
+++ b/mocca-1.2.11/BKUOnline/src/main/webapp/img/webstart.png
Binary files 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 @@
+<!--
+ 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.
+-->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+ <head>
+ <title>MOCCA</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <link rel="shortcut icon" href="img/chip16.ico" type="image/x-icon">
+ <link href="css/main.css" rel="stylesheet" type="text/css" />
+ <script src="js/deployJava.js" type="text/javascript"></script>
+ <!--script src="http://java.com/js/deployJava.js" type="text/javascript"></script-->
+ </head>
+ <body>
+ <div id="animDiv" class="box">
+ <p>
+ <h1>MOCCA Online</h1>
+ <p>
+ <a href="SLRequestForm.html">Security Layer Request</a> (demo request form)
+ </p>
+ <p>
+ <a href="PINManagement.jsp">PIN Management</a> (pin management applet)
+ </p>
+ <p>
+ <a href="stal">STAL Service</a> (web service endpoint)
+ </p>
+ </p>
+ </div>
+
+ <!-- MOCCA Web Start
+ | (activate 'include-webstart' profile)
+ -->
+ <div id="animDiv" class="box">
+ <p>
+ <h1>MOCCA Web Start</h1>
+ <p>
+ <script type="text/javascript">
+ var url="webstart/mocca.jnlp"
+ deployJava.createWebStartLaunchButton(url, "1.6")
+ </script></p>
+ <p><a href="webstart/mocca.jnlp">MOCCA JNLP File</a> (requires MIME-type association)</p>
+ <p><a href="webstart/player.jnlp">Java Cache Viewer</a> (local installation)</p>
+ </p>
+ </div>
+ </body>
+</html>
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://<TBD>/.
+ *
+ * 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 <PARAM> 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 = '<param name="' + parameter + '" value="' +
+ parameters[parameter] + '">';
+ document.write(s);
+ }
+ if (!codebaseParam) {
+ document.write('<param name="codebase_lookup" value="false">');
+ }
+ }
+ 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(&quot;' +
+ minimumVersion + '&quot;)) {' +
+ 'if (deployJava.installLatestJRE()) {' +
+ 'if (deployJava.launch(&quot;' + jnlp + '&quot;)) {}' +
+ '}' +
+ '} else {' +
+ 'if (deployJava.launch(&quot;' + jnlp + '&quot;)) {}' +
+ '}';
+
+ // [#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://<TBD>/.
+ *
+ * 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<VMs.getLength();i++){
+ list[i]=VMs.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;
+ },
+
+ 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();
+ }
+ },
+
+ 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;
+ 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):'');
+ }
+ return false;
+ }
+ }
+ },
+
+ 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){
+ 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+'+')){
+ deployJava.refresh();
+ location.href=document.location;
+ deployJava.writeAppletTag(attributes,parameters);
+ }
+ }else{
+ deployJava.writeAppletTag(attributes,parameters);
+ }
+ }else{
+ if(deployJava.debug){
+ alert('Invalid minimumVersion argument to runApplet():'+
+ minimumVersion);
+ }
+ }
+ },
+
+ 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='<param name="'+parameter+'" value="'+
+ parameters[parameter]+'">';
+ document.write(s);
+ }
+ if(!codebaseParam){
+ document.write('<param name="codebase_lookup" value="false">');
+ }
+ }
+ 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<matchData.length;++i){
+ 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;
+ }
+ },
+
+ isWebStartInstalled:function(minimumVersion){
+
+ var browser=deployJava.getBrowser();
+ if((browser=='?')||(browser=='Safari')){
+ 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;
+ },
+
+ createWebStartLaunchButton:function(jnlp,minimumVersion){
+
+ if(deployJava.returnPage==null){
+ deployJava.returnPage=jnlp;
+ }
+ var url='javascript:'+'if (!deployJava.isWebStartInstalled(&quot;'+
+ minimumVersion+'&quot;)) {'+'if (deployJava.installLatestJRE()) {'+'if (deployJava.launch(&quot;'+jnlp+'&quot;)) {}'+'}'+'} else {'+'if (deployJava.launch(&quot;'+jnlp+'&quot;)) {}'+'}';document.write('<'+'a href="'+url+'" onMouseOver="window.status=\'\'; '+'return true;"><'+'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;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('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)){
+ return false;
+ }
+ var platform=navigator.platform.toLowerCase();
+ for(var i=0;i<navigator.plugins.length;++i){
+ s=navigator.plugins[i].description;
+
+ if(s.search(/^Java Switchable Plug-in (Cocoa)/)!=-1){
+ if(deployJava.compareVersions("1.5.0",version)){
+ return true;
+ }
+ }else if(s.search(/^Java/)!=-1){
+ if(platform.indexOf('win')!=-1){
+ if(deployJava.compareVersions("1.5.0",version)||deployJava.compareVersions("1.6.0",version)){
+ return true;
+ }
+ }
+ }
+ }
+ if(deployJava.compareVersions("1.5.0",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):'');
+ 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):'');
+ return false;
+ },
+
+ 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'){
+ 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<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" />');written=true;
+ }
+ }
+ }
+ if(!written)for(var i=0;i<navigator.mimeTypes.length;i++){
+ if(navigator.mimeTypes[i].type==deployJava.oldMimeType){
+ if(navigator.mimeTypes[i].enabledPlugin){
+ document.write('<'+'embed id="deployJavaPlugin" type="'+
+ deployJava.oldMimeType+'" 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/wsdl/CardChannel.xsd b/mocca-1.2.11/BKUOnline/src/main/wsdl/CardChannel.xsd
new file mode 100644
index 00000000..81fd85db
--- /dev/null
+++ b/mocca-1.2.11/BKUOnline/src/main/wsdl/CardChannel.xsd
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.buergerkarte.at/cardchannel"
+ xmlns:tns="http://www.buergerkarte.at/cardchannel"
+ elementFormDefault="qualified"
+ xmlns:stal="http://www.egiz.gv.at/stal">
+
+ <xs:import namespace="http://www.egiz.gv.at/stal" schemaLocation="stal-service.xsd"/>
+
+ <xs:annotation>
+ <xs:documentation>Schema for transparent access to cards using a BKU and the CardChannel
+ infobox</xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="Script" type="tns:ScriptType" substitutionGroup="stal:OtherRequest"/>
+ <xs:element name="Response" type="tns:ResponseType" substitutionGroup="stal:OtherResponse"/>
+ <xs:element name="Grunddaten" type="tns:AttributeList"/>
+ <xs:element name="EHIC" type="tns:AttributeList"/>
+ <xs:element name="Status" type="tns:AttributeList"/>
+ <xs:element name="SV-Personenbindung" type="xs:hexBinary"/>
+
+ <xs:complexType name="ScriptType">
+ <xs:annotation>
+ <xs:documentation>extends abstract stal:RequestType</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="stal:RequestType">
+ <xs:annotation>
+ <xs:documentation>Contains the script to be executed by the BKU</xs:documentation>
+ </xs:annotation>
+ <xs:choice maxOccurs="unbounded" minOccurs="1">
+ <xs:element name="Reset" type="tns:ResetType"/>
+ <xs:element name="CommandAPDU" type="tns:CommandAPDUType"/>
+ <xs:element name="VerifyAPDU" type="tns:VerifyAPDUType"/>
+ </xs:choice>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="ResponseType">
+ <xs:annotation>
+ <xs:documentation>extends abstract stal:ResponseType</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="stal:ResponseType">
+ <xs:annotation>
+ <xs:documentation>Contains the result of the script executed by the
+ BKU</xs:documentation>
+ </xs:annotation>
+ <xs:choice maxOccurs="unbounded" minOccurs="1">
+ <xs:element name="ATR" type="tns:ATRType"/>
+ <xs:element name="ResponseAPDU" type="tns:ResponseAPDUType"/>
+ </xs:choice>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="ResetType">
+ <xs:annotation>
+ <xs:documentation>Reset the icc and sequence counter</xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="cold" type="xs:boolean" default="true"/>
+ </xs:complexType>
+
+ <xs:complexType name="CommandAPDUType">
+ <xs:annotation>
+ <xs:documentation>Contains a sequence of bytes send as command APDU to the
+ icc</xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="xs:hexBinary">
+ <xs:attribute name="sequence" type="xs:positiveInteger" use="required"/>
+ <xs:attribute name="of" type="xs:positiveInteger" use="required"/>
+ <xs:attribute name="expectedSW" type="xs:hexBinary"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="VerifyAPDUType">
+ <xs:annotation>
+ <xs:documentation>Contains a sequence of bytes send as command APDU to the icc after a
+ PIN entered by the user has been incorporated into the APDU</xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="xs:hexBinary">
+ <xs:attribute name="sequence" type="xs:positiveInteger" use="required"/>
+ <xs:attribute name="of" type="xs:positiveInteger" use="required"/>
+ <xs:attribute name="expectedSW" type="xs:hexBinary"/>
+ <xs:attribute name="message" type="xs:string" use="required"/>
+ <xs:attribute name="format" type="xs:hexBinary" use="required"/>
+ <xs:attribute name="offset" type="xs:nonNegativeInteger" use="required"/>
+ <xs:attribute name="timeout" type="xs:nonNegativeInteger" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="ATRType">
+ <xs:annotation>
+ <xs:documentation>Contains the ATR received as reponse to a Reset
+ command</xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="xs:hexBinary">
+ <xs:attribute name="rc" type="xs:integer" default="0"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="ResponseAPDUType">
+ <xs:annotation>
+ <xs:documentation>Contains a sequence of bytes received from the card as response
+ APDU</xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="xs:hexBinary">
+ <xs:attribute name="sequence" type="xs:positiveInteger" use="required"/>
+ <xs:attribute name="rc" type="xs:integer" default="0"/>
+ <xs:attribute name="SW" type="xs:hexBinary" default="9000"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="AttributeList">
+ <xs:annotation>
+ <xs:documentation>Contains a list of attributes</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Attribute" type="tns:AttributeType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="AttributeType">
+ <xs:annotation>
+ <xs:documentation>Contains an attribute converted from ASN.1</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Integer" type="xs:integer" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="Latin1String" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="UTF8String" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="NumericString" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="PrintableString" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="GeneralizedTime" type="xs:dateTime" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="Date" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attribute name="oid" type="xs:string" use="required"/>
+ </xs:complexType>
+
+</xs:schema>
diff --git a/mocca-1.2.11/BKUOnline/src/main/wsdl/stal-service.wsdl b/mocca-1.2.11/BKUOnline/src/main/wsdl/stal-service.wsdl
new file mode 100644
index 00000000..3e6f5730
--- /dev/null
+++ b/mocca-1.2.11/BKUOnline/src/main/wsdl/stal-service.wsdl
@@ -0,0 +1,114 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<!--
+ | This WSDL contains the original WSDL that was used to generate all classes in the STALService module
+ |-->
+<definitions name="stal" targetNamespace="http://www.egiz.gv.at/wsdl/stal"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://www.egiz.gv.at/wsdl/stal"
+ xmlns:stal="http://www.egiz.gv.at/stal"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:cc="http://www.buergerkarte.at/cardchannel">
+ <types>
+ <xsd:schema targetNamespace="http://www.egiz.gv.at/wsdl/stal">
+ <xsd:import namespace="http://www.egiz.gv.at/stal" schemaLocation="stal-service.xsd"/>
+ </xsd:schema>
+ <xsd:schema targetNamespace="http://www.egiz.gv.at/wsdl/stal-extended">
+ <xsd:import namespace="http://www.buergerkarte.at/cardchannel" schemaLocation="CardChannel.xsd"/>
+ </xsd:schema>
+ </types>
+ <message name="ConnectRequest">
+ <part name="part1" element="stal:SessionId"/>
+ </message>
+ <message name="NextRequestRequest">
+ <part name="part1" element="stal:GetNextRequest"/>
+ </message>
+ <message name="NextRequestResponse">
+ <part name="part1" element="stal:GetNextRequestResponse"/>
+ </message>
+ <message name="GetHashDataInputRequest">
+ <part name="part1" element="stal:GetHashDataInput"/>
+ </message>
+ <message name="GetHashDataInputResponse">
+ <part name="part1" element="stal:GetHashDataInputResponse"/>
+ </message>
+ <message name="GetHashDataInputFault">
+ <part name="part1" element="stal:GetHashDataInputFault"/>
+ </message>
+
+ <!--
+ | Comment out the remainder of this WSDL
+ | if placing it into webapp/WEB-INF/wsdl/
+ | in order not to interfere with the actual WSDL stal.wsdl
+ |-->
+ <portType name="STALPortType">
+ <operation name="connect">
+ <input name="input3" message="tns:ConnectRequest"/>
+ <output name="output3" message="tns:NextRequestResponse"/>
+ </operation>
+ <operation name="nextRequest">
+ <input name="input1" message="tns:NextRequestRequest"/>
+ <output name="output1" message="tns:NextRequestResponse"/>
+ </operation>
+ <operation name="getHashDataInput">
+ <input name="input2" message="tns:GetHashDataInputRequest"/>
+ <output name="output2" message="tns:GetHashDataInputResponse"/>
+ <fault name="fault1" message="tns:GetHashDataInputFault"/>
+ </operation>
+ </portType>
+ <binding name="STALBinding" type="tns:STALPortType">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <operation name="connect">
+ <input name="input3">
+ <soap:body use="literal"/>
+ </input>
+ <output name="output3">
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="nextRequest">
+ <soap:operation/>
+ <input name="input1">
+ <soap:body use="literal"/>
+ </input>
+ <output name="output1">
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="getHashDataInput">
+ <soap:operation/>
+ <input name="input2">
+ <soap:body use="literal"/>
+ </input>
+ <output name="output2">
+ <soap:body use="literal"/>
+ </output>
+ <fault name="fault1">
+ <soap:fault name="fault1"/>
+ </fault>
+ </operation>
+ </binding>
+ <service name="STALService">
+ <port name="STALPort" binding="tns:STALBinding">
+ <soap:address location="http://localhost:${HttpDefaultPort}/stal"/>
+ </port>
+ </service>
+</definitions>
diff --git a/mocca-1.2.11/BKUOnline/src/main/wsdl/stal-service.xsd b/mocca-1.2.11/BKUOnline/src/main/wsdl/stal-service.xsd
new file mode 100644
index 00000000..177b9e7f
--- /dev/null
+++ b/mocca-1.2.11/BKUOnline/src/main/wsdl/stal-service.xsd
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.egiz.gv.at/stal"
+ xmlns:tns="http://www.egiz.gv.at/stal"
+ xmlns:cc="http://www.buergerkarte.at/cardchannel"
+ elementFormDefault="qualified">
+
+ <import namespace="http://www.buergerkarte.at/cardchannel" schemaLocation="CardChannel.xsd"/>
+
+ <element name="SessionId" type="string"/>
+ <element name="GetNextRequest" type="tns:GetNextRequestType"/>
+ <element name="GetNextRequestResponse" type="tns:GetNextRequestResponseType"/>
+ <element name="GetHashDataInput" type="tns:GetHashDataInputType"/>
+ <element name="GetHashDataInputResponse" type="tns:GetHashDataInputResponseType"/>
+ <element name="GetHashDataInputFault" type="tns:GetHashDataInputFaultType"/>
+
+ <!-- Abstract Request/Response to be substituted by extending schemata -->
+ <element name="OtherRequest" type="tns:RequestType" abstract="true"/>
+ <element name="OtherResponse" type="tns:ResponseType" abstract="true"/>
+
+ <complexType name="GetNextRequestType">
+ <!-- abstract Request/Response type not supported by JAX-WS 2.0 (jdk < 1.6.0_04)
+ <sequence>
+ <element name="Response" type="tns:ResponseType" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence-->
+ <choice maxOccurs="unbounded">
+ <element name="InfoboxReadResponse" type="tns:InfoboxReadResponseType"/>
+ <element name="SignResponse" type="tns:SignResponseType"/>
+ <element name="ErrorResponse" type="tns:ErrorResponseType"/>
+ <element name="StatusResponse" type="tns:StatusResponseType"/>
+ <element ref="tns:OtherResponse"/>
+ <!-- do not list cc:Script here, JAXB knows about substitution groups
+ <element ref="cc:Script"/-->
+ </choice>
+ <attribute name="SessionId" type="string"/>
+ </complexType>
+ <complexType name="ResponseType" abstract="true" />
+ <complexType name="InfoboxReadResponseType">
+ <complexContent>
+ <extension base="tns:ResponseType">
+ <sequence>
+ <element name="InfoboxValue" type="base64Binary"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="SignResponseType">
+ <complexContent>
+ <extension base="tns:ResponseType">
+ <sequence>
+ <element name="SignatureValue" type="base64Binary"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="ErrorResponseType">
+ <complexContent>
+ <extension base="tns:ResponseType">
+ <sequence>
+ <element name="ErrorCode" type="int"/>
+ <element name="ErrorMessage" type="string"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="StatusResponseType">
+ <complexContent>
+ <extension base="tns:ResponseType">
+ <attribute name="cardReady" type="boolean" />
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="GetNextRequestResponseType">
+ <!-- abstract Request/Response type not supported by JAX-WS 2.0 (jdk < 1.6.0_04)
+ <sequence>
+ <element name="Request" type="tns:RequestType" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence-->
+ <choice maxOccurs="unbounded">
+ <element name="InfoboxReadRequest" type="tns:InfoboxReadRequestType"/>
+ <element name="SignRequest" type="tns:SignRequestType"/>
+ <element name="QuitRequest" type="tns:QuitRequestType"/>
+ <element name="StatusRequest" type="tns:StatusRequestType"/>
+ <element ref="tns:OtherRequest"/>
+ <!-- do not list cc:Response here, JAXB knows about substitution groups
+ <element ref="cc:Response"/-->
+ </choice>
+ <attribute name="SessionId" type="string"/>
+ </complexType>
+ <complexType name="RequestType" abstract="true"/>
+ <complexType name="InfoboxReadRequestType">
+ <complexContent>
+ <extension base="tns:RequestType">
+ <sequence>
+ <element name="InfoboxIdentifier">
+ <simpleType>
+ <restriction base="string">
+ <enumeration value="Certificates"/>
+ <enumeration value="IdentityLink"/>
+ <enumeration value="Mandates"/>
+ </restriction>
+ </simpleType>
+ </element>
+ <element name="DomainIdentifier" type="anyURI" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="SignRequestType">
+ <complexContent>
+ <extension base="tns:RequestType">
+ <sequence>
+ <element name="KeyIdentifier">
+ <simpleType>
+ <restriction base="string">
+ <enumeration value="SecureSignatureKeypair"/>
+ <enumeration value="CertifiedKeypair"/>
+ </restriction>
+ </simpleType>
+ </element>
+ <element name="SignedInfo" type="base64Binary"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="QuitRequestType">
+ <complexContent>
+ <extension base="tns:RequestType"/>
+ </complexContent>
+ </complexType>
+ <complexType name="StatusRequestType">
+ <complexContent>
+ <extension base="tns:RequestType"/>
+ </complexContent>
+ </complexType>
+ <complexType name="GetHashDataInputType">
+ <sequence>
+ <element name="Reference" maxOccurs="unbounded">
+ <complexType>
+ <attribute name="ID" type="string"/>
+ </complexType>
+ </element>
+ </sequence>
+ <attribute name="SessionId" type="string"/>
+ </complexType>
+ <complexType name="GetHashDataInputResponseType">
+ <sequence>
+ <element name="Reference" maxOccurs="unbounded">
+ <complexType>
+ <simpleContent>
+ <extension base="base64Binary">
+ <attribute name="ID" type="string"/>
+ <attribute name="MimeType" type="string" use="optional"/>
+ <attribute name="Encoding" type="string" use="optional"/>
+ <attribute name="Filename" type="string" use="optional"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </sequence>
+ <attribute name="SessionId" type="string"/>
+ </complexType>
+ <complexType name="GetHashDataInputFaultType">
+ <sequence>
+ <element name="ErrorCode" type="int"/>
+ <element name="ErrorMessage" type="string"/>
+ </sequence>
+ </complexType>
+</schema>
diff --git a/mocca-1.2.11/BKUOnline/src/test/java/at/gv/egiz/bku/online/conf/SSLConfigTest.java b/mocca-1.2.11/BKUOnline/src/test/java/at/gv/egiz/bku/online/conf/SSLConfigTest.java
new file mode 100644
index 00000000..eefaf5b6
--- /dev/null
+++ b/mocca-1.2.11/BKUOnline/src/test/java/at/gv/egiz/bku/online/conf/SSLConfigTest.java
@@ -0,0 +1,40 @@
+package at.gv.egiz.bku.online.conf;
+
+import java.net.URL;
+
+import javax.net.ssl.HttpsURLConnection;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+@Ignore
+public class SSLConfigTest {
+
+ private SpringConfigurator cfg;
+ private ApplicationContext ctx;
+
+ @Before
+ public void setUp() throws Exception {
+ ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
+
+ }
+
+ @Ignore
+ @Test
+ public void testConnect() throws Exception {
+ String url = "https://apps.egiz.gv.at/exchange-moa-id-auth/VerifyIdentityLink?MOASessionID=8151862969943601574";
+ URL u = new URL(url);
+ HttpsURLConnection uc = (HttpsURLConnection) u.openConnection();
+ uc.connect();
+ System.out.println(uc.getCipherSuite());
+ }
+
+ @After
+ public void shutDown() {
+
+ }
+}
diff --git a/mocca-1.2.11/BKUOnline/src/test/java/at/gv/egiz/stal/service/STALRequestBrokerTest.java b/mocca-1.2.11/BKUOnline/src/test/java/at/gv/egiz/stal/service/STALRequestBrokerTest.java
new file mode 100644
index 00000000..741974eb
--- /dev/null
+++ b/mocca-1.2.11/BKUOnline/src/test/java/at/gv/egiz/stal/service/STALRequestBrokerTest.java
@@ -0,0 +1,534 @@
+/*
+* 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.service;
+
+import at.gv.egiz.stal.service.impl.STALRequestBrokerImpl;
+import at.gv.egiz.stal.service.impl.RequestBrokerSTALFactory;
+import at.gv.egiz.stal.service.impl.STALRequestBroker;
+import at.gv.egiz.stal.ErrorResponse;
+import at.gv.egiz.stal.HashDataInput;
+import at.gv.egiz.stal.InfoboxReadRequest;
+import at.gv.egiz.stal.InfoboxReadResponse;
+import at.gv.egiz.stal.QuitRequest;
+import at.gv.egiz.stal.STALRequest;
+import at.gv.egiz.stal.STALResponse;
+import at.gv.egiz.stal.SignResponse;
+import at.gv.egiz.stal.SignRequest;
+import at.gv.egiz.stal.service.types.InfoboxReadRequestType;
+import at.gv.egiz.stal.service.types.InfoboxReadResponseType;
+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.stal.service.types.SignRequestType;
+import at.gv.egiz.stal.service.types.SignResponseType;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+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;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author clemens
+ */
+@Ignore
+public class STALRequestBrokerTest {
+
+ private static final Log log = LogFactory.getLog(STALRequestBrokerTest.class);
+ protected static STALRequestBroker stal;
+
+ @BeforeClass
+ public static void setUp() {
+ RequestBrokerSTALFactory fac = new RequestBrokerSTALFactory();
+ stal = (STALRequestBrokerImpl) fac.createSTAL();
+ log.debug("Created STAL " + stal.getClass().getName());
+ }
+
+ @Ignore
+ public void testInfoboxRead() {
+// try {
+
+ log.debug("*************** test ReadInfoboxRequest for two infoboxes");
+ List<STALRequest> requests = new ArrayList<STALRequest>();
+ InfoboxReadRequest r1 = new InfoboxReadRequest();
+ r1.setInfoboxIdentifier("infobox1");
+ requests.add(r1);
+ InfoboxReadRequest r2 = new InfoboxReadRequest();
+ r2.setInfoboxIdentifier("infobox2");
+ requests.add(r2);
+
+ BindingProcessorSimulator bp = new BindingProcessorSimulator();
+ bp.setRequests(Collections.singletonList(requests));
+
+ new Thread(new ServiceSimulator(), "STALService1").start();
+ new Thread(bp, "BindingProcessor").start();
+ new Thread(new ServiceSimulator(), "STALService2").start();
+
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException ex) {
+ log.error("interrupted: " + ex.getMessage());
+ }
+ }
+
+ @Test
+ public void testSign() {
+ log.debug("**************** test SignRequest");
+ List<STALRequest> requests = new ArrayList<STALRequest>();
+ SignRequest r1 = new SignRequest();
+ r1.setKeyIdentifier("keybox1");
+ r1.setSignedInfo("1234".getBytes());
+ HashDataInput hdi = new HashDataInput() {
+
+ @Override
+ public String getReferenceId() {
+ return "refId1234";
+ }
+
+ @Override
+ public String getMimeType() {
+ return "text/plain";
+ }
+
+ @Override
+ public InputStream getHashDataInput() {
+ return new ByteArrayInputStream("hashdatainput1234".getBytes());
+ }
+ @Override
+ public String getEncoding() {
+ return "UTF-8";
+ }
+
+
+ @Override
+ public String getFilename() {
+ return "file.txt";
+ }
+ };
+ r1.setHashDataInput(Collections.singletonList(hdi));
+ requests.add(r1);
+
+ BindingProcessorSimulator bp = new BindingProcessorSimulator();
+ bp.setRequests(Collections.singletonList(requests));
+
+ new Thread(bp, "BindingProcessor").start();
+// new Thread(bp2, "BindingProcessor2").start();
+ new Thread(new ServiceSimulator(), "STALService").start();
+ new Thread(new ZombieServiceSimulator(), "STALServiceZombie").start();
+
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException ex) {
+ log.error("interrupted: " + ex.getMessage());
+ }
+ }
+
+ @Ignore
+ public void testResponseTimeout() {
+ log.debug("**************** test SignRequest with responses timeout");
+ List<STALRequest> requests = new ArrayList<STALRequest>();
+ SignRequest r1 = new SignRequest();
+ r1.setKeyIdentifier("keybox1");
+ r1.setSignedInfo("1234".getBytes());
+ HashDataInput hdi = new HashDataInput() {
+
+ @Override
+ public String getReferenceId() {
+ return "refId1234";
+ }
+
+ @Override
+ public String getMimeType() {
+ return "text/plain";
+ }
+
+ @Override
+ public InputStream getHashDataInput() {
+ return new ByteArrayInputStream("hashdatainput1234".getBytes());
+ }
+ @Override
+ public String getEncoding() {
+ return "UTF-8";
+ }
+
+ @Override
+ public String getFilename() {
+ return "file.txt";
+ }
+ };
+ r1.setHashDataInput(Collections.singletonList(hdi));
+ requests.add(r1);
+
+ BindingProcessorSimulator bp = new BindingProcessorSimulator();
+ bp.setRequests(Collections.singletonList(requests));
+
+ new Thread(bp, "BindingProcessor").start();
+ new Thread(new TimeoutServiceSimulator(), "STALService").start();
+
+ try {
+ Thread.sleep(STALRequestBroker.DEFAULT_TIMEOUT_MS + 1);
+ } catch (InterruptedException ex) {
+ log.error("interrupted: " + ex.getMessage());
+ }
+ }
+
+ @Ignore
+ public void testRequestTimeout() {
+ log.debug("**************** test requests timeout");
+ TimeoutBindingProcessorSimulator bp = new TimeoutBindingProcessorSimulator();
+
+ new Thread(bp, "BindingProcessor").start();
+ new Thread(new ServiceSimulator(), "STALService").start();
+
+ try {
+ Thread.sleep(STALRequestBroker.DEFAULT_TIMEOUT_MS + 1);
+ } catch (InterruptedException ex) {
+ log.error("interrupted: " + ex.getMessage());
+ }
+ }
+
+ @Ignore
+ public void testMultipleServices() {
+ log.debug("**************** test multiple SignRequests");
+ List<STALRequest> requests = new ArrayList<STALRequest>();
+ SignRequest r1 = new SignRequest();
+ r1.setKeyIdentifier("keybox1");
+ r1.setSignedInfo("1234".getBytes());
+ HashDataInput hdi = new HashDataInput() {
+
+ @Override
+ public String getReferenceId() {
+ return "refId1234";
+ }
+
+ @Override
+ public String getMimeType() {
+ return "text/plain";
+ }
+
+ @Override
+ public InputStream getHashDataInput() {
+ return new ByteArrayInputStream("hashdatainput1234".getBytes());
+ }
+ @Override
+ public String getEncoding() {
+ return "UTF-8";
+ }
+
+ @Override
+ public String getFilename() {
+ return "file.txt";
+ }
+ };
+ r1.setHashDataInput(Collections.singletonList(hdi));
+ requests.add(r1);
+
+ List<STALRequest> requests2 = new ArrayList<STALRequest>();
+ SignRequest r2 = new SignRequest();
+ r2.setKeyIdentifier("keybox2");
+ r2.setSignedInfo("6789".getBytes());
+ HashDataInput hdi2 = new HashDataInput() {
+
+ @Override
+ public String getReferenceId() {
+ return "refId6789";
+ }
+
+ @Override
+ public String getMimeType() {
+ return "text/xml";
+ }
+
+ @Override
+ public InputStream getHashDataInput() {
+ return new ByteArrayInputStream("<xml>hashdatainput6789</xml>".getBytes());
+ }
+ @Override
+ public String getEncoding() {
+ return "UTF-8";
+ }
+
+ @Override
+ public String getFilename() {
+ return "file.xml";
+ }
+ };
+ r2.setHashDataInput(Collections.singletonList(hdi2));
+ requests2.add(r2);
+
+ BindingProcessorSimulator bp = new BindingProcessorSimulator();
+ List<List<STALRequest>> requestList = new ArrayList<List<STALRequest>>();
+ requestList.add(requests);
+ requestList.add(requests2);
+ bp.setRequests(requestList);
+
+ new Thread(bp, "BindingProcessor").start();
+// new Thread(bp2, "BindingProcessor2").start();
+ new Thread(new ServiceSimulator(), "STALService1").start();
+ new Thread(new ServiceSimulator(), "STALService2").start();
+
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException ex) {
+ log.error("interrupted: " + ex.getMessage());
+ }
+ }
+
+ class ZombieServiceSimulator implements Runnable {
+
+ @Override
+ public void run() {
+ try {
+ ObjectFactory of= new ObjectFactory();
+
+ log.debug("calling stal.nextRequest(oldResponse)");
+ InfoboxReadResponseType oldResp = of.createInfoboxReadResponseType();
+ ArrayList<JAXBElement<? extends ResponseType>> oldResponses = new ArrayList<JAXBElement<? extends ResponseType>>();
+ oldResponses.add(of.createGetNextRequestTypeInfoboxReadResponse(oldResp));
+
+ List<JAXBElement<? extends RequestType>> requests = stal.nextRequest(oldResponses);
+ log.debug("got " + requests.size() + " requests. processing...");
+ Thread.sleep(1);
+ List<JAXBElement<? extends ResponseType>> responses = new ArrayList<JAXBElement<? extends ResponseType>>();
+ for (JAXBElement<? extends RequestType> requestElt : requests) {
+ RequestType request = requestElt.getValue();
+ if (request instanceof InfoboxReadRequestType) {
+ log.debug("received UNEXPECTED READINFOBOX request");
+
+ InfoboxReadResponseType r = of.createInfoboxReadResponseType();
+ r.setInfoboxValue("dummyInfobox".getBytes());
+ responses.add(of.createGetNextRequestTypeInfoboxReadResponse(r));
+ } else if (request instanceof SignRequestType) {
+
+ log.debug("received UNEXPECTED SIGN request");
+
+ log.debug("calling stal.getCurrentHashDataInputCallback");
+ List<HashDataInput> hdis = stal.getHashDataInput();
+ assertNotNull(hdis);
+ assertEquals(hdis.size(), 1);
+ HashDataInput hdi = hdis.get(0);// cb.getHashDataInput("1234");
+ InputStream hd = hdi.getHashDataInput();
+ byte[] data = new byte[hd.available()];
+ hd.read(data);
+ log.debug("got HashDataInput " + new String(data));
+
+
+ SignResponseType r = of.createSignResponseType();
+ r.setSignatureValue("dummySignature".getBytes());
+ responses.add(of.createGetNextRequestTypeSignResponse(r));
+ } else if (request instanceof QuitRequestType) {
+ log.debug("received EXPECTED QUIT request");
+ return;
+ }
+ }
+
+// if (requests.size() > 0) {
+// log.debug("calling stal.setResponse with " + requests.size() + " responses");
+// stal.setResponse(responses);
+// }
+ log.debug("calling stal.nextRequest with " + responses.size() + " responses");
+ requests = stal.nextRequest(responses);
+ for (JAXBElement<? extends RequestType> requestElt : requests) {
+ RequestType request = requestElt.getValue();
+ if (request instanceof QuitRequestType) {
+ log.debug("got QUIT request");
+ } else {
+ log.debug("expected QUIT request, got " + request.getClass().getName());
+ }
+ }
+ } catch (IOException ex) {
+ log.error(ex.getMessage());
+ } catch (InterruptedException ex) {
+ log.error(ex.getMessage());
+ }
+ }
+
+ }
+
+ class ServiceSimulator implements Runnable {
+
+ @Override
+ public void run() {
+ try {
+ ObjectFactory of = new ObjectFactory();
+ // first call w/ empty response list
+ log.debug("calling stal.nextRequest");
+ List<JAXBElement<? extends RequestType>> requests = stal.nextRequest(null); //new ArrayList<ResponseType>());
+ log.debug("got " + requests.size() + " requests. processing...");
+ Thread.sleep(1);
+ List<JAXBElement<? extends ResponseType>> responses = new ArrayList<JAXBElement<? extends ResponseType>>();
+ for (JAXBElement<? extends RequestType> requestElt : requests) {
+ RequestType request = requestElt.getValue();
+ if (request instanceof InfoboxReadRequestType) {
+ InfoboxReadResponseType r = of.createInfoboxReadResponseType();
+ r.setInfoboxValue("dummyInfobox".getBytes());
+ responses.add(of.createGetNextRequestTypeInfoboxReadResponse(r));
+ } else if (request instanceof SignRequestType) {
+
+ log.debug("calling stal.getCurrentHashDataInputCallback");
+ List<HashDataInput> hdis = stal.getHashDataInput();
+ assertNotNull(hdis);
+ assertEquals(hdis.size(), 1);
+ HashDataInput hdi = hdis.get(0);// cb.getHashDataInput("1234");
+ InputStream hd = hdi.getHashDataInput();
+ byte[] data = new byte[hd.available()];
+ hd.read(data);
+ log.debug("got HashDataInput " + new String(data));
+
+
+ SignResponseType r = of.createSignResponseType();
+ r.setSignatureValue("dummySignature".getBytes());
+ responses.add(of.createGetNextRequestTypeSignResponse(r));
+ } else if (request instanceof QuitRequestType) {
+ log.debug("received UNEXPECTED QUIT request");
+ return;
+ }
+ }
+
+// if (requests.size() > 0) {
+// log.debug("calling stal.setResponse with " + requests.size() + " responses");
+// stal.setResponse(responses);
+// }
+ log.debug("calling stal.nextRequest with " + responses.size() + " responses");
+ requests = stal.nextRequest(responses);
+ for (JAXBElement<? extends RequestType> requestElt : requests) {
+ RequestType request = requestElt.getValue();
+ if (request instanceof QuitRequestType) {
+ log.debug("got QUIT request");
+ } else {
+ log.debug("expected QUIT request, got " + request.getClass().getName());
+ }
+ }
+ } catch (IOException ex) {
+ log.error(ex.getMessage());
+ } catch (InterruptedException ex) {
+ log.error(ex.getMessage());
+ }
+ }
+ }
+
+ class TimeoutServiceSimulator implements Runnable {
+
+ @Override
+ public void run() {
+ try {
+ // first call w/ empty response list
+ log.debug("calling stal.nextRequest");
+ List<JAXBElement<? extends RequestType>> requests = stal.nextRequest(null); //new ArrayList<ResponseType>());
+ log.debug("got " + requests.size() + " requests. processing...");
+ Thread.sleep(1);
+ for (JAXBElement<? extends RequestType> requestElt : requests) {
+ RequestType request = requestElt.getValue();
+// if (request instanceof InfoboxReadRequest) {
+ if (request instanceof SignRequestType) {
+ log.debug("calling stal.getCurrentHashDataInputCallback");
+ List<HashDataInput> hdis = stal.getHashDataInput();
+ assertNotNull(hdis);
+ assertEquals(hdis.size(), 1);
+ HashDataInput hdi = hdis.get(0);// cb.getHashDataInput("1234");
+ InputStream hd = hdi.getHashDataInput();
+ byte[] data = new byte[hd.available()];
+ hd.read(data);
+ log.debug("got HashDataInput " + new String(data));
+ } else if (request instanceof QuitRequestType) {
+ log.debug("received UNEXPECTED QUIT requests");
+ return;
+ }
+ }
+ log.debug("simulating timeout ...");
+ } catch (IOException ex) {
+ log.error(ex.getMessage());
+ } catch (InterruptedException ex) {
+ log.error(ex.getMessage());
+ }
+ }
+ }
+
+ class BindingProcessorSimulator implements Runnable {
+
+ List<List<STALRequest>> requestsLists;
+
+ public void setRequests(List<List<STALRequest>> requests) {
+ this.requestsLists = requests;
+ }
+
+ @Override
+ public void run() {
+
+ //simulate SLCommand execution
+ for (List<STALRequest> requests : requestsLists) {
+ execSLCommand(requests);
+
+ log.debug("SLCommand finished, calling stal.handleReqeusts(QUIT)");
+ stal.handleRequest(Collections.singletonList((STALRequest) new QuitRequest()));
+ log.debug("QUIT returned (waiting for applet reload)");
+ }
+
+ }
+
+ public void execSLCommand(List<STALRequest> requests) {
+ int numReq = requests.size();
+ log.debug("SLCommand calling stal.handleRequests " + numReq + " requests");
+ List<STALResponse> responses = stal.handleRequest(requests);
+ assertEquals(numReq, responses.size());
+ for (int i = 0; i < numReq; i++) {
+ STALRequest request = requests.get(i);
+ STALResponse response = responses.get(i);
+
+ if (response instanceof ErrorResponse) {
+ log.warn("SLCommand received unexpected error response from STAL: " + ((ErrorResponse) response).getErrorCode());
+ } else if (request instanceof InfoboxReadRequest) {
+ assertTrue(response instanceof InfoboxReadResponse);
+ String infobox = new String(((InfoboxReadResponse) response).getInfoboxValue());
+ log.debug("SLCommand received expected InfoboxReadResponse from STAL: " + infobox);
+ } else if (request instanceof SignRequest) {
+ assertTrue(response instanceof SignResponse);
+ String signVal = new String(((SignResponse) response).getSignatureValue());
+ log.debug("SLCommand received expected SignResponse from STAL: " + signVal);
+ } else {
+ log.error("***** RequestType: " + request.getClass() + " TODO");
+ }
+ //TODO
+ }
+
+ }
+ }
+
+ class TimeoutBindingProcessorSimulator implements Runnable {
+
+ @Override
+ public void run() {
+
+ //simulate SLCommand execution
+ log.debug("simulating timeout ...");
+ }
+ }
+}
diff --git a/mocca-1.2.11/BKUOnline/src/test/resources/appletTest.html b/mocca-1.2.11/BKUOnline/src/test/resources/appletTest.html
new file mode 100644
index 00000000..71f09a93
--- /dev/null
+++ b/mocca-1.2.11/BKUOnline/src/test/resources/appletTest.html
@@ -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.
+-->
+<html>
+ <body>
+ <center>
+ <applet code="at.gv.egiz.bku.online.applet.BKUApplet.class"
+ archive="../BKUOnline-1.0-SNAPSHOT/applet/BKUApplet-1.0-SNAPSHOT.jar , ../BKUOnline-1.0-SNAPSHOT/applet/commons-logging-1.1.1.jar , ../BKUOnline-1.0-SNAPSHOT/applet/iaik_jce_me4se-3.04.jar"
+ width=380 height=160>
+ <param name="WSDL_URL" value="http://localhost:3495/BKUOnline-1.0-SNAPSHOT/stal?wsdl"/>
+ <param name="SessionId" value="TestSession"/>
+ <param name="redirectURL" value="http://localhost:3495/BKUOnline-1.0-SNAPSHOT/bkuResult"/>
+ </applet>
+ </center>
+ </body>
+</html> \ No newline at end of file
diff --git a/mocca-1.2.11/BKUOnline/src/test/resources/applicationContext.xml b/mocca-1.2.11/BKUOnline/src/test/resources/applicationContext.xml
new file mode 100644
index 00000000..5f2487bf
--- /dev/null
+++ b/mocca-1.2.11/BKUOnline/src/test/resources/applicationContext.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ 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.
+ -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
+
+ <bean id="STALFactory" class="at.gv.egiz.stal.service.impl.RequestBrokerSTALFactory"
+ scope="singleton" />
+
+ <bean id="accessController" class="at.gv.egiz.bku.online.accesscontroller.SpringSecurityManager"
+ scope="singleton" init-method="init">
+ <property name="config" ref="configurator"/>
+ </bean>
+
+ <bean id="commandInvoker" class="at.gv.egiz.bku.binding.SLCommandInvokerImpl">
+ <property name="securityManager" ref="accessController" />
+ </bean>
+
+ <bean id="bindingProcessorManager" class="at.gv.egiz.bku.binding.BindingProcessorManagerImpl"
+ scope="singleton">
+ <constructor-arg ref="STALFactory"></constructor-arg>
+ <constructor-arg ref="commandInvoker"></constructor-arg>
+ </bean>
+
+ <bean
+ class="org.springframework.web.context.support.ServletContextAttributeExporter">
+ <property name="attributes">
+ <map>
+ <entry key="bindingProcessorManager">
+ <ref bean="bindingProcessorManager" />
+ </entry>
+ </map>
+ </property>
+ </bean>
+
+ <!-- Configure Configuration -->
+ <bean id="certValidator" class="at.gv.egiz.bku.conf.CertValidatorImpl"></bean>
+ <bean id="configurator" class="at.gv.egiz.bku.online.conf.SpringConfigurator"
+ scope="singleton" init-method="configure">
+ <property name="resource" value="classpath:at/gv/egiz/bku/online/conf/defaultConf.properties"/>
+ <property name="certValidator" ref="certValidator"></property>
+ </bean>
+
+</beans> \ No newline at end of file
diff --git a/mocca-1.2.11/BKUOnline/src/test/resources/commons-logging.properties b/mocca-1.2.11/BKUOnline/src/test/resources/commons-logging.properties
new file mode 100644
index 00000000..0d497b1b
--- /dev/null
+++ b/mocca-1.2.11/BKUOnline/src/test/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/test/resources/log4j.properties b/mocca-1.2.11/BKUOnline/src/test/resources/log4j.properties
new file mode 100644
index 00000000..b30aa40a
--- /dev/null
+++ b/mocca-1.2.11/BKUOnline/src/test/resources/log4j.properties
@@ -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.
+
+
+#log4j.rootLogger=INFO, STDOUT, file
+log4j.rootLogger=DEBUG, STDOUT
+log4j.logger.at.gv.egiz.bku.slcommands=TRACE, STDOUT
+log4j.logger.at.gv.egiz.bku.binding=TRACE, STDOUT
+#log4j.logger.at.gv = INFO
+
+
+# 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
diff --git a/mocca-1.2.11/BKUViewer/pom.xml b/mocca-1.2.11/BKUViewer/pom.xml
new file mode 100644
index 00000000..7871b67a
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/pom.xml
@@ -0,0 +1,48 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUViewer</artifactId>
+ <name>BKU Viewer</name>
+ <version>1.2.11</version>
+ <description />
+ <dependencies>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>bkucommon</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.w3c</groupId>
+ <artifactId>css-validator</artifactId>
+ <version>2.1-mocca</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.w3c</groupId>
+ <artifactId>jigsaw</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>tagsoup</groupId>
+ <artifactId>tagsoup</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUFonts</artifactId>
+ <version>1.2</version>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/SLXHTMLValidator.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/SLXHTMLValidator.java
new file mode 100644
index 00000000..a230afa6
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/SLXHTMLValidator.java
@@ -0,0 +1,273 @@
+/*
+* 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.slxhtml;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.nio.charset.Charset;
+import java.nio.charset.IllegalCharsetNameException;
+import java.nio.charset.UnsupportedCharsetException;
+import java.util.Locale;
+
+import javax.xml.XMLConstants;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+import javax.xml.validation.ValidatorHandler;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.xml.sax.Attributes;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+import at.gv.egiz.bku.slxhtml.css.CSSValidatorSLXHTML;
+import at.gv.egiz.bku.viewer.ValidationException;
+
+public class SLXHTMLValidator implements at.gv.egiz.bku.viewer.Validator {
+
+ /**
+ * The schema file for the SLXHTML schema.
+ */
+ private static final String SLXHTML_SCHEMA_FILE = "at/gv/egiz/bku/slxhtml/slxhtml.xsd";
+// public static final String[] SLXHTML_SCHEMA_FILES = new String[]{
+// "at/gv/egiz/bku/slxhtml/slxhtml.xsd",
+// "at/gv/egiz/bku/slxhtml/slxhtml-model-1.xsd",
+// "at/gv/egiz/bku/slxhtml/slxhtml-modules-1.xsd",
+// "at/gv/egiz/bku/slxhtml/xhtml-attribs-1.xsd",
+// "at/gv/egiz/bku/slxhtml/xhtml-blkphras-1.xsd",
+// "at/gv/egiz/bku/slxhtml/xhtml-blkpres-1.xsd",
+// "at/gv/egiz/bku/slxhtml/xhtml-blkstruct-1.xsd",
+// "at/gv/egiz/bku/slxhtml/xhtml-datatypes-1.xsd",
+// "at/gv/egiz/bku/slxhtml/xhtml-framework-1.xsd",
+// "at/gv/egiz/bku/slxhtml/xhtml-image-1.xsd",
+// "at/gv/egiz/bku/slxhtml/xhtml-inlphras-1.xsd",
+// "at/gv/egiz/bku/slxhtml/xhtml-inlpres-1.xsd",
+// "at/gv/egiz/bku/slxhtml/xhtml-inlstruct-1.xsd",
+// "at/gv/egiz/bku/slxhtml/xhtml-list-1.xsd",
+// "at/gv/egiz/bku/slxhtml/xhtml-pres-1.xsd",
+// "at/gv/egiz/bku/slxhtml/xhtml-struct-1.xsd",
+// "at/gv/egiz/bku/slxhtml/xhtml-style-1.xsd",
+// "at/gv/egiz/bku/slxhtml/xhtml-table-1.xsd",
+// "at/gv/egiz/bku/slxhtml/xhtml-text-1.xsd",
+// "at/gv/egiz/bku/slxhtml/xml.xsd"
+// };
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(SLXHTMLValidator.class);
+
+ private static Schema slSchema;
+
+ /**
+ * Initialize the security layer schema.
+ */
+ private synchronized static void ensureSchema() {
+ if (slSchema == null) {
+ try {
+ SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+ ClassLoader cl = SLXHTMLValidator.class.getClassLoader();
+ URL schemaURL = cl.getResource(SLXHTML_SCHEMA_FILE);
+ log.debug("Trying to create SLXHTML schema from URL '" + schemaURL + "'.");
+ long t0 = System.currentTimeMillis();
+ slSchema = schemaFactory.newSchema(schemaURL);
+ long t1 = System.currentTimeMillis();
+ log.debug("SLXHTML schema successfully created in " + (t1 - t0) + "ms.");
+ } catch (SAXException e) {
+ log.error("Failed to load security layer XHTML schema.", e);
+ throw new RuntimeException("Failed to load security layer XHTML schema.", e);
+ }
+
+ }
+ }
+
+ public SLXHTMLValidator() {
+ ensureSchema();
+ }
+
+ public void validate(InputStream is, String charset)
+ throws ValidationException {
+ if (charset == null) {
+ validate(is, (Charset) null);
+ } else {
+ try {
+ validate(is, Charset.forName(charset));
+ } catch (IllegalCharsetNameException e) {
+ throw new ValidationException(e);
+ } catch (UnsupportedCharsetException e) {
+ throw new ValidationException(e);
+ }
+ }
+ }
+
+ public void validate(InputStream is, Charset charset) throws ValidationException {
+
+ SAXParserFactory spf = SAXParserFactory.newInstance();
+ spf.setNamespaceAware(true);
+ spf.setSchema(slSchema);
+ spf.setValidating(true);
+ spf.setXIncludeAware(false);
+
+ SAXParser parser;
+ try {
+ parser = spf.newSAXParser();
+ } catch (ParserConfigurationException e) {
+ log.error("Failed to create SLXHTML parser.", e);
+ throw new RuntimeException("Failed to create SLXHTML parser.", e);
+ } catch (SAXException e) {
+ log.error("Failed to create SLXHTML parser.", e);
+ throw new RuntimeException("Failed to create SLXHTML parser.", e);
+ }
+
+ InputSource source;
+ if (charset != null) {
+ source = new InputSource(new InputStreamReader(is, charset));
+ } else {
+ source = new InputSource(is);
+ }
+
+
+ ValidatorHandler validatorHandler = slSchema.newValidatorHandler();
+
+ DefaultHandler defaultHandler = new ValidationHandler(validatorHandler);
+ try {
+ parser.parse(source, defaultHandler);
+ } catch (SAXException e) {
+ if (e.getException() instanceof ValidationException) {
+ throw (ValidationException) e.getException();
+ } else {
+ throw new ValidationException(e);
+ }
+ } catch (IOException e) {
+ throw new ValidationException(e);
+ }
+
+ }
+
+ private void validateCss(InputStream is) throws ValidationException {
+ CSSValidatorSLXHTML cssValidator = new CSSValidatorSLXHTML();
+ // TODO: use the right locale
+ cssValidator.validate(is, Locale.getDefault(), "SLXHTML", 0);
+ }
+
+ private class ValidationHandler extends DefaultHandler implements ContentHandler {
+
+ private ValidatorHandler validatorHandler;
+
+ private boolean insideStyle = false;
+
+ private StringBuffer style = new StringBuffer();
+
+ private ValidationHandler(ValidatorHandler contentHandler) {
+ this.validatorHandler = contentHandler;
+ }
+
+ @Override
+ public void endDocument() throws SAXException {
+ validatorHandler.endDocument();
+ }
+
+ @Override
+ public void endPrefixMapping(String prefix) throws SAXException {
+ validatorHandler.endPrefixMapping(prefix);
+ }
+
+ @Override
+ public void ignorableWhitespace(char[] ch, int start, int length)
+ throws SAXException {
+ validatorHandler.ignorableWhitespace(ch, start, length);
+ }
+
+ @Override
+ public void processingInstruction(String target, String data)
+ throws SAXException {
+ validatorHandler.processingInstruction(target, data);
+ }
+
+ @Override
+ public void setDocumentLocator(Locator locator) {
+ validatorHandler.setDocumentLocator(locator);
+ }
+
+ @Override
+ public void skippedEntity(String name) throws SAXException {
+ validatorHandler.skippedEntity(name);
+ }
+
+ @Override
+ public void startDocument() throws SAXException {
+ validatorHandler.startDocument();
+ }
+
+ @Override
+ public void startPrefixMapping(String prefix, String uri)
+ throws SAXException {
+ validatorHandler.startPrefixMapping(prefix, uri);
+ }
+
+ @Override
+ public void startElement(String uri, String localName, String name,
+ Attributes attributes) throws SAXException {
+ validatorHandler.startElement(uri, localName, name, attributes);
+
+ System.out.println(uri + ":" + localName);
+
+ if ("http://www.w3.org/1999/xhtml".equals(uri) &&
+ "style".equals(localName)) {
+ insideStyle = true;
+ }
+ }
+
+ @Override
+ public void characters(char[] ch, int start, int length)
+ throws SAXException {
+ validatorHandler.characters(ch, start, length);
+
+ if (insideStyle) {
+ style.append(ch, start, length);
+ }
+
+ }
+
+ @Override
+ public void endElement(String uri, String localName, String name)
+ throws SAXException {
+ validatorHandler.endElement(uri, localName, name);
+
+ if (insideStyle) {
+ insideStyle = false;
+ try {
+ validateCss(new ByteArrayInputStream(style.toString().getBytes(Charset.forName("UTF-8"))));
+ } catch (ValidationException e) {
+ throw new SAXException(e);
+ }
+ }
+ }
+
+ }
+
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CSSValidatorSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CSSValidatorSLXHTML.java
new file mode 100644
index 00000000..7abe4741
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CSSValidatorSLXHTML.java
@@ -0,0 +1,95 @@
+/*
+* 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.slxhtml.css;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Locale;
+
+import org.w3c.css.css.CssParser;
+import org.w3c.css.css.StyleSheet;
+import org.w3c.css.css.StyleSheetParser;
+import org.w3c.css.parser.CssError;
+import org.w3c.css.parser.Errors;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.Util;
+import org.w3c.css.util.Warning;
+import org.w3c.css.util.Warnings;
+
+import at.gv.egiz.bku.viewer.ValidationException;
+
+public class CSSValidatorSLXHTML {
+
+ public void validate(InputStream input, Locale locale, String title, int lineno) throws ValidationException {
+
+ // disable imports
+ Util.importSecurity = true;
+
+ CssParser cssParser = new StyleSheetParser();
+
+ ApplContext ac = new ApplContext(locale.getLanguage());
+ ac.setCssVersion("slxhtml");
+ ac.setMedium("all");
+
+ URL url;
+ try {
+ url = new URL("http://test.xyz");
+ } catch (MalformedURLException e) {
+ throw new RuntimeException(e);
+ }
+
+ cssParser.parseStyleElement(ac, input, title, "all", url, lineno);
+
+ StyleSheet styleSheet = cssParser.getStyleSheet();
+
+ // find conflicts
+ styleSheet.findConflicts(ac);
+
+ boolean valid = true;
+ StringBuilder sb = new StringBuilder().append("CSS:");
+
+ // look for errors
+ Errors errors = styleSheet.getErrors();
+ if (errors.getErrorCount() != 0) {
+ valid = false;
+ CssError[] cssErrors = errors.getErrors();
+ for (CssError cssError : cssErrors) {
+ Exception exception = cssError.getException();
+ sb.append(" ");
+ sb.append(exception.getMessage());
+ }
+ }
+
+ // look for warnings
+ Warnings warnings = styleSheet.getWarnings();
+ if (warnings.getWarningCount() != 0) {
+ valid = false;
+ Warning[] cssWarnings = warnings.getWarnings();
+ for (Warning warning : cssWarnings) {
+ sb.append(" ");
+ sb.append(warning.getWarningMessage());
+ }
+ }
+
+ if (!valid) {
+ throw new ValidationException(sb.toString());
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBackgroundColorSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBackgroundColorSLXHTML.java
new file mode 100644
index 00000000..53191d17
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBackgroundColorSLXHTML.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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssBackgroundColorCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+public class CssBackgroundColorSLXHTML extends CssBackgroundColorCSS2 {
+
+ public CssBackgroundColorSLXHTML() {
+ }
+
+ public CssBackgroundColorSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // A Citizen Card Environment must support all the options for specifying a
+ // colour listed in [CSS 2], section 4.3.6 for a CSS property, if such an
+ // option is available for this property according to [CSS 2].
+
+ // The exceptions are the system colours (cf. [CSS 2], section 18.2); these
+ // must not be used in an instance document so as to prevent dependencies on
+ // the system environment. Otherwise the instance document must be rejected
+ // by the Citizen Card Environment.
+
+ CssValue color = getColor();
+ if (!isSoftlyInherited() && color != null) {
+ if (CssColorSLXHTML.isDisallowedColor(color)) {
+ throw new SLXHTMLInvalidParamException("color", color, getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssBackgroundColorSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ super(ac, expression);
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBackgroundSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBackgroundSLXHTML.java
new file mode 100644
index 00000000..724c8c6a
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBackgroundSLXHTML.java
@@ -0,0 +1,93 @@
+/*
+* 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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssBackgroundCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+/**
+ * @author mcentner
+ *
+ */
+public class CssBackgroundSLXHTML extends CssBackgroundCSS2 {
+
+ public CssBackgroundSLXHTML() {
+ }
+
+ public CssBackgroundSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // A Citizen Card Environment must support all the options for specifying a
+ // colour listed in [CSS 2], section 4.3.6 for a CSS property, if such an
+ // option is available for this property according to [CSS 2].
+
+ // The exceptions are the system colours (cf. [CSS 2], section 18.2); these
+ // must not be used in an instance document so as to prevent dependencies on
+ // the system environment. Otherwise the instance document must be rejected
+ // by the Citizen Card Environment.
+
+ CssValue color = getColor();
+ if (!isSoftlyInherited() && color != null) {
+ if (CssColorSLXHTML.isDisallowedColor(color)) {
+ throw new SLXHTMLInvalidParamException("color", color, getPropertyName(), ac);
+ }
+ }
+
+ // The properties for selecting and controlling an image as background
+ // (background-image, background-repeat, background-position,
+ // background-attachment; cf. [CSS 2], section 14.2.1) must not be contained
+ // in an instance document to prevent content from overlapping. Otherwise
+ // the instance document must be rejected by the Citizen Card Environment.
+ //
+ // The property for the shorthand version of the background properties
+ // (background) should be supported by a Citizen Card Environment. The
+ // recommended values result from the explanations for the background-color
+ // property above (cf. [CSS 2], section 14.2.1). If the property contains
+ // values for selecting and controlling an image as background, the instance
+ // document must be rejected by the Citizen Card Environment.
+
+ if (getImage() != null) {
+ throw new SLXHTMLInvalidParamException("background", "background-image", ac);
+ }
+
+ if (getRepeat() != null) {
+ throw new SLXHTMLInvalidParamException("background", "background-repeat", ac);
+ }
+
+ if (getPosition() != null) {
+ throw new SLXHTMLInvalidParamException("background", "background-position", ac);
+ }
+
+ if (getAttachment() != null) {
+ throw new SLXHTMLInvalidParamException("background", "background-attachment", ac);
+ }
+
+ }
+
+ public CssBackgroundSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderBottomColorSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderBottomColorSLXHTML.java
new file mode 100644
index 00000000..4f5798b0
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderBottomColorSLXHTML.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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssBorderBottomColorCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+public class CssBorderBottomColorSLXHTML extends CssBorderBottomColorCSS2 {
+
+ public CssBorderBottomColorSLXHTML() {
+ }
+
+ public CssBorderBottomColorSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // A Citizen Card Environment must support all the options for specifying a
+ // colour listed in [CSS 2], section 4.3.6 for a CSS property, if such an
+ // option is available for this property according to [CSS 2].
+
+ // The exceptions are the system colours (cf. [CSS 2], section 18.2); these
+ // must not be used in an instance document so as to prevent dependencies on
+ // the system environment. Otherwise the instance document must be rejected
+ // by the Citizen Card Environment.
+
+ CssValue color = getColor();
+ if (!isSoftlyInherited() && color != null) {
+ if (CssColorSLXHTML.isDisallowedColor(color)) {
+ throw new SLXHTMLInvalidParamException("color", color, getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssBorderBottomColorSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderColorSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderColorSLXHTML.java
new file mode 100644
index 00000000..3f5a7319
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderColorSLXHTML.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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssBorderBottomColorCSS2;
+import org.w3c.css.properties.css1.CssBorderColorCSS2;
+import org.w3c.css.properties.css1.CssBorderLeftColorCSS2;
+import org.w3c.css.properties.css1.CssBorderRightColorCSS2;
+import org.w3c.css.properties.css1.CssBorderTopColorCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+public class CssBorderColorSLXHTML extends CssBorderColorCSS2 {
+
+ public CssBorderColorSLXHTML() {
+ }
+
+ public CssBorderColorSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // A Citizen Card Environment must support all the options for specifying a
+ // colour listed in [CSS 2], section 4.3.6 for a CSS property, if such an
+ // option is available for this property according to [CSS 2].
+
+ // The exceptions are the system colours (cf. [CSS 2], section 18.2); these
+ // must not be used in an instance document so as to prevent dependencies on
+ // the system environment. Otherwise the instance document must be rejected
+ // by the Citizen Card Environment.
+
+ CssBorderTopColorCSS2 top = getTop();
+ if (!isSoftlyInherited() && top != null) {
+ if (CssColorSLXHTML.isDisallowedColor(top.getColor())) {
+ throw new SLXHTMLInvalidParamException("color", top.getColor(), getPropertyName(), ac);
+ }
+ }
+
+ CssBorderLeftColorCSS2 left = getLeft();
+ if (!isSoftlyInherited() && left != null) {
+ if (CssColorSLXHTML.isDisallowedColor(left.getColor())) {
+ throw new SLXHTMLInvalidParamException("color", left.getColor(), getPropertyName(), ac);
+ }
+ }
+
+ CssBorderRightColorCSS2 right = getRight();
+ if (!isSoftlyInherited() && right != null) {
+ if (CssColorSLXHTML.isDisallowedColor(right.getColor())) {
+ throw new SLXHTMLInvalidParamException("color", right.getColor(), getPropertyName(), ac);
+ }
+ }
+
+ CssBorderBottomColorCSS2 bottom = getBottom();
+ if (!isSoftlyInherited() && bottom != null) {
+ if (CssColorSLXHTML.isDisallowedColor(bottom.getColor())) {
+ throw new SLXHTMLInvalidParamException("color", bottom.getColor(), getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssBorderColorSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderLeftColorSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderLeftColorSLXHTML.java
new file mode 100644
index 00000000..e2378e99
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderLeftColorSLXHTML.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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssBorderLeftColorCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+public class CssBorderLeftColorSLXHTML extends CssBorderLeftColorCSS2 {
+
+ public CssBorderLeftColorSLXHTML() {
+ }
+
+ public CssBorderLeftColorSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // A Citizen Card Environment must support all the options for specifying a
+ // colour listed in [CSS 2], section 4.3.6 for a CSS property, if such an
+ // option is available for this property according to [CSS 2].
+
+ // The exceptions are the system colours (cf. [CSS 2], section 18.2); these
+ // must not be used in an instance document so as to prevent dependencies on
+ // the system environment. Otherwise the instance document must be rejected
+ // by the Citizen Card Environment.
+
+ CssValue color = getColor();
+ if (!isSoftlyInherited() && color != null) {
+ if (CssColorSLXHTML.isDisallowedColor(color)) {
+ throw new SLXHTMLInvalidParamException("color", color, getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssBorderLeftColorSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderRightColorSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderRightColorSLXHTML.java
new file mode 100644
index 00000000..99d6bae5
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderRightColorSLXHTML.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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssBorderRightColorCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+public class CssBorderRightColorSLXHTML extends CssBorderRightColorCSS2 {
+
+ public CssBorderRightColorSLXHTML() {
+ }
+
+ public CssBorderRightColorSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // A Citizen Card Environment must support all the options for specifying a
+ // colour listed in [CSS 2], section 4.3.6 for a CSS property, if such an
+ // option is available for this property according to [CSS 2].
+
+ // The exceptions are the system colours (cf. [CSS 2], section 18.2); these
+ // must not be used in an instance document so as to prevent dependencies on
+ // the system environment. Otherwise the instance document must be rejected
+ // by the Citizen Card Environment.
+
+ CssValue color = getColor();
+ if (!isSoftlyInherited() && color != null) {
+ if (CssColorSLXHTML.isDisallowedColor(color)) {
+ throw new SLXHTMLInvalidParamException("color", color, getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssBorderRightColorSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderSLXHTML.java
new file mode 100644
index 00000000..ac32670e
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderSLXHTML.java
@@ -0,0 +1,85 @@
+/*
+* 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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssBorderCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+public class CssBorderSLXHTML extends CssBorderCSS2 {
+
+ public CssBorderSLXHTML() {
+ }
+
+ public CssBorderSLXHTML(ApplContext ac, CssExpression value, boolean check)
+ throws InvalidParamException {
+ super(ac, value, check);
+
+ // A Citizen Card Environment must support all the options for specifying a
+ // colour listed in [CSS 2], section 4.3.6 for a CSS property, if such an
+ // option is available for this property according to [CSS 2].
+
+ // The exceptions are the system colours (cf. [CSS 2], section 18.2); these
+ // must not be used in an instance document so as to prevent dependencies on
+ // the system environment. Otherwise the instance document must be rejected
+ // by the Citizen Card Environment.
+
+ if (getTop() != null) {
+ CssValue top = getTop().getColor();
+ if (!isSoftlyInherited() && top != null) {
+ if (CssColorSLXHTML.isDisallowedColor(top)) {
+ throw new SLXHTMLInvalidParamException("color", top, getPropertyName(), ac);
+ }
+ }
+ }
+
+ if (getLeft() != null) {
+ CssValue left = getLeft().getColor();
+ if (!isSoftlyInherited() && left != null) {
+ if (CssColorSLXHTML.isDisallowedColor(left)) {
+ throw new SLXHTMLInvalidParamException("color", left, getPropertyName(), ac);
+ }
+ }
+ }
+
+ if (getRight() != null) {
+ CssValue right = getRight().getColor();
+ if (!isSoftlyInherited() && right != null) {
+ if (CssColorSLXHTML.isDisallowedColor(right)) {
+ throw new SLXHTMLInvalidParamException("color", right, getPropertyName(), ac);
+ }
+ }
+ }
+
+ if (getBottom() != null) {
+ CssValue bottom = getBottom().getColor();
+ if (!isSoftlyInherited() && bottom != null) {
+ if (CssColorSLXHTML.isDisallowedColor(bottom)) {
+ throw new SLXHTMLInvalidParamException("color", bottom, getPropertyName(), ac);
+ }
+ }
+ }
+ }
+
+ public CssBorderSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderTopColorSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderTopColorSLXHTML.java
new file mode 100644
index 00000000..42926479
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssBorderTopColorSLXHTML.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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssBorderTopColorCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+public class CssBorderTopColorSLXHTML extends CssBorderTopColorCSS2 {
+
+ public CssBorderTopColorSLXHTML() {
+ }
+
+ public CssBorderTopColorSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // A Citizen Card Environment must support all the options for specifying a
+ // colour listed in [CSS 2], section 4.3.6 for a CSS property, if such an
+ // option is available for this property according to [CSS 2].
+
+ // The exceptions are the system colours (cf. [CSS 2], section 18.2); these
+ // must not be used in an instance document so as to prevent dependencies on
+ // the system environment. Otherwise the instance document must be rejected
+ // by the Citizen Card Environment.
+
+ CssValue color = getColor();
+ if (!isSoftlyInherited() && color != null) {
+ if (CssColorSLXHTML.isDisallowedColor(color)) {
+ throw new SLXHTMLInvalidParamException("color", color, getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssBorderTopColorSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssColorSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssColorSLXHTML.java
new file mode 100644
index 00000000..a640eb3a
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssColorSLXHTML.java
@@ -0,0 +1,99 @@
+/*
+* 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.slxhtml.css;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+public class CssColorSLXHTML extends org.w3c.css.properties.css1.CssColorCSS2 {
+
+ private static Set<String> SLXHTML_DISSALLOWED_COLORS = new HashSet<String>();
+
+ static {
+
+ SLXHTML_DISSALLOWED_COLORS.add("activeborder");
+ SLXHTML_DISSALLOWED_COLORS.add("activecaption");
+ SLXHTML_DISSALLOWED_COLORS.add("appworkspace");
+ SLXHTML_DISSALLOWED_COLORS.add("background");
+ SLXHTML_DISSALLOWED_COLORS.add("buttonface");
+ SLXHTML_DISSALLOWED_COLORS.add("buttonhighlight");
+ SLXHTML_DISSALLOWED_COLORS.add("buttonshadow");
+ SLXHTML_DISSALLOWED_COLORS.add("buttontext");
+ SLXHTML_DISSALLOWED_COLORS.add("captiontext");
+ SLXHTML_DISSALLOWED_COLORS.add("graytext");
+ SLXHTML_DISSALLOWED_COLORS.add("highlight");
+ SLXHTML_DISSALLOWED_COLORS.add("highlighttext");
+ SLXHTML_DISSALLOWED_COLORS.add("inactiveborder");
+ SLXHTML_DISSALLOWED_COLORS.add("inactivecaption");
+ SLXHTML_DISSALLOWED_COLORS.add("inactivecaptiontext");
+ SLXHTML_DISSALLOWED_COLORS.add("infobackground");
+ SLXHTML_DISSALLOWED_COLORS.add("infotext");
+ SLXHTML_DISSALLOWED_COLORS.add("menu");
+ SLXHTML_DISSALLOWED_COLORS.add("menutext");
+ SLXHTML_DISSALLOWED_COLORS.add("scrollbar");
+ SLXHTML_DISSALLOWED_COLORS.add("threeddarkshadow");
+ SLXHTML_DISSALLOWED_COLORS.add("threedface");
+ SLXHTML_DISSALLOWED_COLORS.add("threedhighlight");
+ SLXHTML_DISSALLOWED_COLORS.add("threedlightshadow");
+ SLXHTML_DISSALLOWED_COLORS.add("threedshadow");
+ SLXHTML_DISSALLOWED_COLORS.add("window");
+ SLXHTML_DISSALLOWED_COLORS.add("windowframe");
+ SLXHTML_DISSALLOWED_COLORS.add("windowtext");
+
+ }
+
+ public static boolean isDisallowedColor(CssValue cssValue) {
+ return SLXHTML_DISSALLOWED_COLORS.contains(cssValue.toString().toLowerCase());
+ }
+
+ public CssColorSLXHTML() {
+ }
+
+ public CssColorSLXHTML(ApplContext ac, CssExpression expression, boolean check)
+ throws InvalidParamException {
+
+ super(ac, expression, check);
+
+ // A Citizen Card Environment must support all the options for specifying a
+ // colour listed in [CSS 2], section 4.3.6 for a CSS property, if such an
+ // option is available for this property according to [CSS 2].
+
+ // The exceptions are the system colours (cf. [CSS 2], section 18.2); these
+ // must not be used in an instance document so as to prevent dependencies on
+ // the system environment. Otherwise the instance document must be rejected
+ // by the Citizen Card Environment.
+
+ CssValue color = getColor();
+ if (!isSoftlyInherited() && color != null) {
+ if (CssColorSLXHTML.isDisallowedColor(color)) {
+ throw new SLXHTMLInvalidParamException("color", color, getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssColorSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssFontSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssFontSLXHTML.java
new file mode 100644
index 00000000..8e5298ec
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssFontSLXHTML.java
@@ -0,0 +1,59 @@
+/*
+* 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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssFontCSS2;
+import org.w3c.css.properties.css1.CssFontConstantCSS2;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+import org.w3c.css.values.CssValue;
+
+public class CssFontSLXHTML extends CssFontCSS2 {
+
+ public CssFontSLXHTML() {
+ }
+
+ public CssFontSLXHTML(ApplContext ac, CssExpression expression, boolean check)
+ throws InvalidParamException {
+ super(ac, checkExpression(expression, ac), check);
+ }
+
+ public CssFontSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+ protected static CssExpression checkExpression(CssExpression expression,
+ ApplContext ac) throws InvalidParamException {
+
+ CssValue value = expression.getValue();
+
+ if (value instanceof CssIdent) {
+ for (String font : CssFontConstantCSS2.FONT) {
+ if (font.equalsIgnoreCase(value.toString())) {
+ throw new SLXHTMLInvalidParamException("font", value.toString(), ac);
+ }
+ }
+ }
+
+ return expression;
+
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssLetterSpacingSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssLetterSpacingSLXHTML.java
new file mode 100644
index 00000000..326a731f
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssLetterSpacingSLXHTML.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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssLetterSpacing;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssLength;
+import org.w3c.css.values.CssNumber;
+
+public class CssLetterSpacingSLXHTML extends CssLetterSpacing {
+
+ public CssLetterSpacingSLXHTML() {
+ }
+
+ public CssLetterSpacingSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ Object value = get();
+ if (value instanceof CssLength) {
+ Object length = ((CssLength) value).get();
+ if (length instanceof Float && ((Float) length).floatValue() < 0) {
+ throw new SLXHTMLInvalidParamException("spacing", length, getPropertyName(), ac);
+ }
+ } else if (value instanceof CssNumber) {
+ if (((CssNumber) value).getValue() < 0) {
+ throw new SLXHTMLInvalidParamException("spacing", value, getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssLetterSpacingSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginBottomSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginBottomSLXHTML.java
new file mode 100644
index 00000000..cac97d06
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginBottomSLXHTML.java
@@ -0,0 +1,60 @@
+/*
+* 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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssMarginBottom;
+import org.w3c.css.properties.css1.CssMarginSide;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+public class CssMarginBottomSLXHTML extends CssMarginBottom {
+
+ public CssMarginBottomSLXHTML() {
+ }
+
+ public CssMarginBottomSLXHTML(CssMarginSide another) {
+ super(another);
+ }
+
+ public CssMarginBottomSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+ public CssMarginBottomSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // The margin-top, margin-bottom, margin-left and margin-right properties
+ // must be supported by a Citizen Card Environment. Values specified as
+ // percentages (cf. section 3.5.1.2) should be supported.
+
+ // The margin property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (CssMarginSLXHTML.isDisallowedMargin(getValue())) {
+ throw new SLXHTMLInvalidParamException("margin", getValue(),
+ getPropertyName(), ac);
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginLeftSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginLeftSLXHTML.java
new file mode 100644
index 00000000..c456af43
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginLeftSLXHTML.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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssMarginLeft;
+import org.w3c.css.properties.css1.CssMarginSide;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+public class CssMarginLeftSLXHTML extends CssMarginLeft {
+
+ public CssMarginLeftSLXHTML() {
+ }
+
+ public CssMarginLeftSLXHTML(CssMarginSide another) {
+ super(another);
+ }
+
+ public CssMarginLeftSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+ public CssMarginLeftSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // TODO Auto-generated constructor stub
+ // The margin-top, margin-bottom, margin-left and margin-right properties
+ // must be supported by a Citizen Card Environment. Values specified as
+ // percentages (cf. section 3.5.1.2) should be supported.
+
+ // The margin property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (CssMarginSLXHTML.isDisallowedMargin(getValue())) {
+ throw new SLXHTMLInvalidParamException("margin", getValue(),
+ getPropertyName(), ac);
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginRightSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginRightSLXHTML.java
new file mode 100644
index 00000000..7f16830d
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginRightSLXHTML.java
@@ -0,0 +1,60 @@
+/*
+* 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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssMarginRight;
+import org.w3c.css.properties.css1.CssMarginSide;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+public class CssMarginRightSLXHTML extends CssMarginRight {
+
+ public CssMarginRightSLXHTML() {
+ }
+
+ public CssMarginRightSLXHTML(CssMarginSide another) {
+ super(another);
+ }
+
+ public CssMarginRightSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+ public CssMarginRightSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // The margin-top, margin-bottom, margin-left and margin-right properties
+ // must be supported by a Citizen Card Environment. Values specified as
+ // percentages (cf. section 3.5.1.2) should be supported.
+
+ // The margin property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (CssMarginSLXHTML.isDisallowedMargin(getValue())) {
+ throw new SLXHTMLInvalidParamException("margin", getValue(),
+ getPropertyName(), ac);
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginSLXHTML.java
new file mode 100644
index 00000000..f478b96a
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginSLXHTML.java
@@ -0,0 +1,101 @@
+/*
+* 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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssMargin;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+public class CssMarginSLXHTML extends CssMargin {
+
+ public CssMarginSLXHTML() {
+ }
+
+ public CssMarginSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ if (getTop() != null) {
+ if (isDisallowedMargin(getTop().getValue())) {
+ throw new SLXHTMLInvalidParamException("margin", getTop().getValue(),
+ getPropertyName(), ac);
+ }
+ }
+
+ if (getRight() != null) {
+ if (isDisallowedMargin(getRight().getValue())) {
+ throw new SLXHTMLInvalidParamException("margin", getRight().getValue(),
+ getPropertyName(), ac);
+ }
+ }
+
+ if (getLeft() != null) {
+ if (isDisallowedMargin(getLeft().getValue())) {
+ throw new SLXHTMLInvalidParamException("margin", getLeft().getValue(),
+ getPropertyName(), ac);
+ }
+ }
+
+ if (getBottom() != null) {
+ if (isDisallowedMargin(getBottom().getValue())) {
+ throw new SLXHTMLInvalidParamException("margin", getBottom().getValue(),
+ getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssMarginSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+ public static boolean isDisallowedMargin(CssValue margin) {
+
+ // The margin-top, margin-bottom, margin-left and margin-right properties
+ // must be supported by a Citizen Card Environment. Values specified as
+ // percentages (cf. section 3.5.1.2) should be supported.
+
+ // The margin property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (margin instanceof CssLength) {
+ Object value = ((CssLength) margin).get();
+ if (value instanceof Float) {
+ return ((Float) value).floatValue() < 0;
+ }
+ } else if (margin instanceof CssPercentage) {
+ Object value = ((CssPercentage) margin).get();
+ if (value instanceof Float) {
+ return ((Float) value).floatValue() < 0;
+ }
+ } else if (margin instanceof CssNumber) {
+ return ((CssNumber) margin).getValue() < 0;
+ }
+
+ return false;
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginTopSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginTopSLXHTML.java
new file mode 100644
index 00000000..06b30c4f
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssMarginTopSLXHTML.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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssMarginSide;
+import org.w3c.css.properties.css1.CssMarginTop;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+public class CssMarginTopSLXHTML extends CssMarginTop {
+
+ public CssMarginTopSLXHTML() {
+ }
+
+ public CssMarginTopSLXHTML(CssMarginSide another) {
+ super(another);
+ }
+
+ public CssMarginTopSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+
+ }
+
+ public CssMarginTopSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // The margin-top, margin-bottom, margin-left and margin-right properties
+ // must be supported by a Citizen Card Environment. Values specified as
+ // percentages (cf. section 3.5.1.2) should be supported.
+
+ // The margin property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (CssMarginSLXHTML.isDisallowedMargin(getValue())) {
+ throw new SLXHTMLInvalidParamException("margin", getValue(),
+ getPropertyName(), ac);
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingBottomSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingBottomSLXHTML.java
new file mode 100644
index 00000000..4bcb0065
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingBottomSLXHTML.java
@@ -0,0 +1,60 @@
+/*
+* 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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssPaddingBottom;
+import org.w3c.css.properties.css1.CssPaddingSide;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+public class CssPaddingBottomSLXHTML extends CssPaddingBottom {
+
+ public CssPaddingBottomSLXHTML() {
+ }
+
+ public CssPaddingBottomSLXHTML(CssPaddingSide another) {
+ super(another);
+ }
+
+ public CssPaddingBottomSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // The padding-top, padding-bottom, padding-left and padding-right
+ // properties must be supported by a Citizen Card Environment. Values
+ // specified as percentages (cf. section 3.5.1.2) should be supported.
+
+ // The padding property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (CssPaddingSLXHTML.isDisallowedValue(getValue())) {
+ throw new SLXHTMLInvalidParamException("padding", getValue(),
+ getPropertyName(), ac);
+ }
+
+ }
+
+ public CssPaddingBottomSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingLeftSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingLeftSLXHTML.java
new file mode 100644
index 00000000..350a5c15
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingLeftSLXHTML.java
@@ -0,0 +1,60 @@
+/*
+* 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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssPaddingLeft;
+import org.w3c.css.properties.css1.CssPaddingSide;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+public class CssPaddingLeftSLXHTML extends CssPaddingLeft {
+
+ public CssPaddingLeftSLXHTML() {
+ }
+
+ public CssPaddingLeftSLXHTML(CssPaddingSide another) {
+ super(another);
+ }
+
+ public CssPaddingLeftSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // The padding-top, padding-bottom, padding-left and padding-right
+ // properties must be supported by a Citizen Card Environment. Values
+ // specified as percentages (cf. section 3.5.1.2) should be supported.
+
+ // The padding property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (CssPaddingSLXHTML.isDisallowedValue(getValue())) {
+ throw new SLXHTMLInvalidParamException("padding", getValue(),
+ getPropertyName(), ac);
+ }
+
+ }
+
+ public CssPaddingLeftSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingRightSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingRightSLXHTML.java
new file mode 100644
index 00000000..d2d62748
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingRightSLXHTML.java
@@ -0,0 +1,60 @@
+/*
+* 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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssPaddingRight;
+import org.w3c.css.properties.css1.CssPaddingSide;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+public class CssPaddingRightSLXHTML extends CssPaddingRight {
+
+ public CssPaddingRightSLXHTML() {
+ }
+
+ public CssPaddingRightSLXHTML(CssPaddingSide another) {
+ super(another);
+ }
+
+ public CssPaddingRightSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // The padding-top, padding-bottom, padding-left and padding-right
+ // properties must be supported by a Citizen Card Environment. Values
+ // specified as percentages (cf. section 3.5.1.2) should be supported.
+
+ // The padding property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (CssPaddingSLXHTML.isDisallowedValue(getValue())) {
+ throw new SLXHTMLInvalidParamException("padding", getValue(),
+ getPropertyName(), ac);
+ }
+
+ }
+
+ public CssPaddingRightSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingSLXHTML.java
new file mode 100644
index 00000000..57d7cf77
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingSLXHTML.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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssPadding;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssLength;
+import org.w3c.css.values.CssNumber;
+import org.w3c.css.values.CssPercentage;
+import org.w3c.css.values.CssValue;
+
+public class CssPaddingSLXHTML extends CssPadding {
+
+ public CssPaddingSLXHTML() {
+ }
+
+ public CssPaddingSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ if (getTop() != null) {
+ if (isDisallowedValue(getTop().getValue())) {
+ throw new SLXHTMLInvalidParamException("padding", getTop().getValue(),
+ getPropertyName(), ac);
+ }
+ }
+
+ if (getRight() != null) {
+ if (isDisallowedValue(getRight().getValue())) {
+ throw new SLXHTMLInvalidParamException("padding", getRight().getValue(),
+ getPropertyName(), ac);
+ }
+ }
+
+ if (getLeft() != null) {
+ if (isDisallowedValue(getLeft().getValue())) {
+ throw new SLXHTMLInvalidParamException("padding", getLeft().getValue(),
+ getPropertyName(), ac);
+ }
+ }
+
+ if (getBottom() != null) {
+ if (isDisallowedValue(getBottom().getValue())) {
+ throw new SLXHTMLInvalidParamException("padding", getBottom().getValue(),
+ getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssPaddingSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+ public static boolean isDisallowedValue(CssValue padding) {
+
+ // The padding-top, padding-bottom, padding-left and padding-right
+ // properties must be supported by a Citizen Card Environment. Values
+ // specified as percentages (cf. section 3.5.1.2) should be supported.
+
+ // The padding property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (padding instanceof CssLength) {
+ Object value = ((CssLength) padding).get();
+ if (value instanceof Float) {
+ return ((Float) value).floatValue() < 0;
+ }
+ } else if (padding instanceof CssPercentage) {
+ Object value = ((CssPercentage) padding).get();
+ if (value instanceof Float) {
+ return ((Float) value).floatValue() < 0;
+ }
+ } else if (padding instanceof CssNumber) {
+ return ((CssNumber) padding).getValue() < 0;
+ }
+
+ return false;
+
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingTopSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingTopSLXHTML.java
new file mode 100644
index 00000000..bc113bfe
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssPaddingTopSLXHTML.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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssPaddingSide;
+import org.w3c.css.properties.css1.CssPaddingTop;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+
+public class CssPaddingTopSLXHTML extends CssPaddingTop {
+
+ public CssPaddingTopSLXHTML() {
+ }
+
+ public CssPaddingTopSLXHTML(CssPaddingSide another) {
+ super(another);
+ }
+
+ public CssPaddingTopSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ // The padding-top, padding-bottom, padding-left and padding-right
+ // properties must be supported by a Citizen Card Environment. Values
+ // specified as percentages (cf. section 3.5.1.2) should be supported.
+
+ // The padding property may be supported by a Citizen Card Environment.
+
+ // An instance document must not contain a negative value in the properties
+ // mentioned above. Otherwise it must be rejected by the Citizen Card
+ // Environment.
+
+ if (CssPaddingSLXHTML.isDisallowedValue(getValue())) {
+ throw new SLXHTMLInvalidParamException("padding", getValue(),
+ getPropertyName(), ac);
+ }
+
+ }
+
+ public CssPaddingTopSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ super(ac, expression);
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssTextDecorationSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssTextDecorationSLXHTML.java
new file mode 100644
index 00000000..16b9780a
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssTextDecorationSLXHTML.java
@@ -0,0 +1,51 @@
+/*
+* 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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssTextDecoration;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssValue;
+
+public class CssTextDecorationSLXHTML extends CssTextDecoration {
+
+ public CssTextDecorationSLXHTML() {
+ }
+
+ public CssTextDecorationSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ if (get() instanceof CssValue) {
+ if ("blink".equalsIgnoreCase(((CssValue) get()).toString())) {
+ throw new SLXHTMLInvalidParamException("text-decoration", "blink", ac);
+ }
+ } else if (get() instanceof String) {
+ if ("blink".equalsIgnoreCase((String) get())) {
+ throw new SLXHTMLInvalidParamException("text-decoration", "blink", ac);
+ }
+ }
+
+ }
+
+ public CssTextDecorationSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssWordSpacingSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssWordSpacingSLXHTML.java
new file mode 100644
index 00000000..a497f4e3
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/CssWordSpacingSLXHTML.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.slxhtml.css;
+
+import org.w3c.css.properties.css1.CssWordSpacing;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssLength;
+import org.w3c.css.values.CssNumber;
+
+public class CssWordSpacingSLXHTML extends CssWordSpacing {
+
+ public CssWordSpacingSLXHTML() {
+ }
+
+ public CssWordSpacingSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ Object value = get();
+ if (value instanceof CssLength) {
+ Object length = ((CssLength) value).get();
+ if (length instanceof Float && ((Float) length).floatValue() < 0) {
+ throw new SLXHTMLInvalidParamException("spacing", length, getPropertyName(), ac);
+ }
+ } else if (value instanceof CssNumber) {
+ if (((CssNumber) value).getValue() < 0) {
+ throw new SLXHTMLInvalidParamException("spacing", value, getPropertyName(), ac);
+ }
+ }
+
+ }
+
+ public CssWordSpacingSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/SLXHTMLInvalidParamException.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/SLXHTMLInvalidParamException.java
new file mode 100644
index 00000000..edac03f4
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/SLXHTMLInvalidParamException.java
@@ -0,0 +1,71 @@
+/*
+* 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.slxhtml.css;
+
+import java.text.MessageFormat;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+import org.w3c.css.util.ApplContext;
+
+public class SLXHTMLInvalidParamException extends
+ org.w3c.css.util.InvalidParamException {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String message;
+
+ public SLXHTMLInvalidParamException() {
+ }
+
+ public SLXHTMLInvalidParamException(String error, ApplContext ac) {
+ setMessage(error, null, ac);
+ }
+
+ public SLXHTMLInvalidParamException(String error, Object message, ApplContext ac) {
+ setMessage(error, new Object[] {message}, ac);
+ }
+
+ public SLXHTMLInvalidParamException(String error, Object message1, Object message2,
+ ApplContext ac) {
+ setMessage(error, new Object[] {message1, message2}, ac);
+ }
+
+ @Override
+ public String getMessage() {
+ return getLocalizedMessage();
+ }
+
+ @Override
+ public String getLocalizedMessage() {
+ return message;
+ }
+
+ protected void setMessage(String error, Object[] arguments, ApplContext ac) {
+ Locale locale = new Locale(ac.getContentLanguage());
+ ResourceBundle bundle = ResourceBundle.getBundle("at/gv/egiz/bku/slxhtml/css/Messages", locale);
+ String pattern;
+ try {
+ pattern = bundle.getString(error);
+ } catch (MissingResourceException e) {
+ pattern = "Can't find error message for : " + error;
+ }
+ message = MessageFormat.format(pattern, arguments);
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/SLXHTMLStyle.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/SLXHTMLStyle.java
new file mode 100644
index 00000000..99448ec4
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/SLXHTMLStyle.java
@@ -0,0 +1,22 @@
+//
+// $Id: Css2Style.java,v 1.2 2005-09-08 12:24:01 ylafon Exp $
+// From Philippe Le Hegaret (Philippe.Le_Hegaret@sophia.inria.fr)
+//
+// (c) COPYRIGHT MIT and INRIA, 1997.
+// Please first read the full copyright statement in file COPYRIGHT.html
+package at.gv.egiz.bku.slxhtml.css;
+
+import org.w3c.css.properties.aural.ACssStyle;
+import org.w3c.css.parser.CssPrinterStyle;
+
+/**
+ * @version $Revision: 1.2 $
+ */
+public class SLXHTMLStyle extends ACssStyle {
+
+ public void print(CssPrinterStyle printer) {
+ super.print(printer);
+ }
+
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/TableLayoutSLXHTML.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/TableLayoutSLXHTML.java
new file mode 100644
index 00000000..50f30cce
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/slxhtml/css/TableLayoutSLXHTML.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.bku.slxhtml.css;
+
+import org.w3c.css.properties.css2.table.TableLayout;
+import org.w3c.css.util.ApplContext;
+import org.w3c.css.util.InvalidParamException;
+import org.w3c.css.values.CssExpression;
+import org.w3c.css.values.CssIdent;
+
+public class TableLayoutSLXHTML extends TableLayout {
+
+ public TableLayoutSLXHTML() {
+ }
+
+ public TableLayoutSLXHTML(ApplContext ac, CssExpression expression,
+ boolean check) throws InvalidParamException {
+ super(ac, expression, check);
+
+ if (new CssIdent("fixed").equals(get())) {
+ throw new SLXHTMLInvalidParamException("table-layout", "fixed", getPropertyName(), ac);
+ }
+
+ }
+
+ public TableLayoutSLXHTML(ApplContext ac, CssExpression expression)
+ throws InvalidParamException {
+ this(ac, expression, false);
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/text/TextValidator.java b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/text/TextValidator.java
new file mode 100644
index 00000000..dee8ff2e
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/java/at/gv/egiz/bku/text/TextValidator.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.text;
+
+import at.gv.egiz.bku.gui.viewer.FontProviderException;
+import at.gv.egiz.bku.viewer.ResourceFontLoader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.UnsupportedEncodingException;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.viewer.ValidationException;
+import at.gv.egiz.bku.viewer.Validator;
+import java.awt.Font;
+
+public class TextValidator implements Validator {
+
+ /**
+ * Logging facility.
+ */
+ protected static Log log = LogFactory.getLog(TextValidator.class);
+
+ protected Font viewerFont;
+
+ public TextValidator() throws FontProviderException {
+ viewerFont = new ResourceFontLoader().getFont();
+ }
+
+ private void invalid(char c) throws ValidationException {
+ log.info("Invalid character (0x" + Integer.toHexString(c) + ") found.");
+ // TODO: localize
+ throw new ValidationException();
+ }
+
+ @Override
+ public void validate(InputStream is, String charset)
+ throws ValidationException {
+
+ InputStreamReader reader;
+ if (charset != null) {
+ try {
+ reader = new InputStreamReader(is, charset);
+ } catch (UnsupportedEncodingException e) {
+ log.info("Charset '" + charset + "' not supported.", e);
+ // TODO: localize
+ throw new ValidationException(e);
+ }
+ } else {
+ reader = new InputStreamReader(is, Charset.forName("UTF-8"));
+ }
+
+ try {
+ char c;
+ CharBuffer cb = CharBuffer.allocate(256);
+ for (int l; (l = reader.read(cb)) != -1;) {
+ cb.flip();
+ for (int i = 0; i < l; i++) {
+ c = cb.get();
+ if (!viewerFont.canDisplay(c)) invalid(c);
+ }
+ }
+ cb.clear();
+ } catch (IOException e) {
+ // TODO: localize
+ throw new ValidationException(e);
+ }
+
+
+
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/META-INF/services/at.gv.egiz.bku.viewer.Validator b/mocca-1.2.11/BKUViewer/src/main/resources/META-INF/services/at.gv.egiz.bku.viewer.Validator
new file mode 100644
index 00000000..0004949b
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/META-INF/services/at.gv.egiz.bku.viewer.Validator
@@ -0,0 +1,2 @@
+application/xhtml+xml at.gv.egiz.bku.slxhtml.SLXHTMLValidator
+text/plain at.gv.egiz.bku.text.TextValidator \ No newline at end of file
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml-model-1.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml-model-1.xsd
new file mode 100644
index 00000000..14df3792
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml-model-1.xsd
@@ -0,0 +1,473 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/">
+ <xs:import
+ namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd"/>
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema module of common content models for SLXHTML.
+ SLXHTML is a profile of XHTML (see W3C copyright notice below).
+
+ @author: Gregor Karlinger gregor.karlinger@cio.gv.at
+ $Id: slxhtml-model-1.xsd,v 1.4 2004/05/12 11:35:31 karlinger Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ XHTML Document Model
+ This module describes the groupings of elements/attributes
+ that make up common content models for XHTML elements.
+ XHTML has following basic content models:
+ xhtml.Inline.mix; character-level elements
+ xhtml.Block.mix; block-like elements, e.g., paragraphs and lists
+ xhtml.Flow.mix; any block or inline elements
+ xhtml.HeadOpts.mix; Head Elements
+ xhtml.InlinePre.mix; Special class for pre content model
+ xhtml.InlineNoAnchor.mix; Content model for Anchor
+
+ Any groups declared in this module may be used to create
+ element content models, but the above are considered 'global'
+ (insofar as that term applies here). XHTML has the
+ following Attribute Groups
+ xhtml.Core.extra.attrib
+ xhtml.I18n.extra.attrib
+ xhtml.Common.extra
+
+ The above attribute Groups are considered Global
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:attributeGroup name="xhtml.I18n.extra.attrib">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: attributeGroup "dir.attrib" removed.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.Common.extra">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: attributeGroup "style.attrib" removed.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.Core.extra.attrib">
+ </xs:attributeGroup>
+
+ <xs:attributeGroup
+ name="xhtml.Global.core.extra.attrib">
+ <xs:annotation>
+ <xs:documentation> Extended Global Core Attributes </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+ <xs:attributeGroup
+ name="xhtml.Global.I18n.extra.attrib">
+ <xs:annotation>
+ <xs:documentation> Extended Global I18n attributes </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+ <xs:attributeGroup
+ name="xhtml.Global.Common.extra">
+ <xs:annotation>
+ <xs:documentation> Extended Global Common Attributes </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+
+ <xs:group name="xhtml.HeadOpts.mix">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: elements "script", "meta", "link", "object" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element
+ name="style"
+ type="xhtml.style.type"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.head.content">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: Only a single instance of element "style" is
+ allowed apart from the obligatory "title" element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element
+ name="title"
+ type="xhtml.title.type"/>
+ <xs:group
+ ref="xhtml.HeadOpts.mix"/>
+ </xs:sequence>
+ </xs:group>
+ <!--
+ ins and del are used to denote editing changes
+ -->
+ <xs:group name="xhtml.Edit.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: elements "ins", "del" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice/>
+ </xs:group>
+ <!--
+ script and noscript are used to contain scripts
+ and alternative content
+ -->
+ <xs:group name="xhtml.Script.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: elements "script", "noscript" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice/>
+ </xs:group>
+ <xs:group name="xhtml.Misc.extra">
+ <xs:sequence/>
+ </xs:group>
+ <!--
+ These elements are neither block nor inline, and can
+ essentially be used anywhere in the document body.
+ -->
+ <xs:group
+ name="xhtml.Misc.class">
+ <xs:choice>
+ <xs:group
+ ref="xhtml.Edit.class"/>
+ <xs:group
+ ref="xhtml.Script.class"/>
+ <xs:group
+ ref="xhtml.Misc.extra"/>
+ </xs:choice>
+ </xs:group>
+ <!-- Inline Elements -->
+ <xs:group
+ name="xhtml.InlStruct.class">
+ <xs:choice>
+ <xs:element
+ name="br"
+ type="xhtml.br.type"/>
+ <xs:element
+ name="span"
+ type="xhtml.span.type"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group
+ name="xhtml.InlPhras.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: elements "dfn", "samp", "kbd", "var", "q" , "abbr" and
+ "acronym" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element
+ name="em"
+ type="xhtml.em.type"/>
+ <xs:element
+ name="strong"
+ type="xhtml.strong.type"/>
+ <xs:element
+ name="code"
+ type="xhtml.code.type"/>
+ <xs:element
+ name="cite"
+ type="xhtml.cite.type"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group
+ name="xhtml.InlPres.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: elements "tt", "i", "b", "big", "small", "sub", "sup" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence/>
+ </xs:group>
+ <xs:group name="xhtml.I18n.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: element "bdo" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence/>
+ </xs:group>
+ <xs:group name="xhtml.Anchor.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: element "a" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence/>
+ </xs:group>
+ <xs:group
+ name="xhtml.InlSpecial.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: elements "map", "object" removed.
+ </xs:documentation>
+ <xs:documentation>
+ MOCCA 1.0: element "img" removed
+ </xs:documentation>
+ </xs:annotation>
+ <!-- <xs:choice>
+ <xs:element
+ name="img"
+ type="xhtml.img.type"/>
+ </xs:choice>-->
+ <xs:sequence/>
+ </xs:group>
+ <xs:group name="xhtml.InlForm.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: elements "input", "select", "textara", "lable", "button" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence/>
+ </xs:group>
+ <xs:group
+ name="xhtml.Inline.extra">
+ <xs:sequence/>
+ </xs:group>
+ <xs:group name="xhtml.Ruby.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: element "ruby" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:sequence/>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.Inline.class">
+ <xs:choice>
+ <xs:group
+ ref="xhtml.InlStruct.class"/>
+ <xs:group
+ ref="xhtml.InlPhras.class"/>
+ <xs:group
+ ref="xhtml.InlPres.class"/>
+ <xs:group
+ ref="xhtml.I18n.class"/>
+ <xs:group
+ ref="xhtml.Anchor.class"/>
+ <xs:group
+ ref="xhtml.InlSpecial.class"/>
+ <xs:group
+ ref="xhtml.InlForm.class"/>
+ <xs:group
+ ref="xhtml.Ruby.class"/>
+ <xs:group
+ ref="xhtml.Inline.extra"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group
+ name="xhtml.InlinePre.mix">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: elements "tt", "i", "b", "script", "map" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:group
+ ref="xhtml.InlStruct.class"/>
+ <xs:group
+ ref="xhtml.InlPhras.class"/>
+ <xs:group
+ ref="xhtml.I18n.class"/>
+ <xs:group
+ ref="xhtml.Anchor.class"/>
+ <xs:group
+ ref="xhtml.Inline.extra"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.Inline.mix">
+ <xs:choice>
+ <xs:group
+ ref="xhtml.Inline.class"/>
+ <xs:group
+ ref="xhtml.Misc.class"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.Heading.class">
+ <xs:choice>
+ <xs:element
+ name="h1"
+ type="xhtml.h1.type"/>
+ <xs:element
+ name="h2"
+ type="xhtml.h2.type"/>
+ <xs:element
+ name="h3"
+ type="xhtml.h3.type"/>
+ <xs:element
+ name="h4"
+ type="xhtml.h4.type"/>
+ <xs:element
+ name="h5"
+ type="xhtml.h5.type"/>
+ <xs:element
+ name="h6"
+ type="xhtml.h6.type"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.List.class">
+ <xs:choice>
+ <xs:element
+ name="ul"
+ type="xhtml.ul.type"/>
+ <xs:element
+ name="ol"
+ type="xhtml.ol.type"/>
+ <xs:element
+ name="dl"
+ type="xhtml.dl.type"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.Table.class">
+ <xs:choice>
+ <xs:element
+ name="table"
+ type="xhtml.table.type"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="xhtml.Form.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: element "form" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice/>
+ </xs:group>
+
+ <xs:group name="xhtml.Fieldset.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: element "fieldset" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice/>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.BlkStruct.class">
+ <xs:choice>
+ <xs:element
+ name="p"
+ type="xhtml.p.type"/>
+ <xs:element
+ name="div"
+ type="xhtml.div.type"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.BlkPhras.class">
+ <xs:annotation>
+ <xs:documentation>
+ SLXHTML 1.2: element "address" removed.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element
+ name="pre"
+ type="xhtml.pre.type"/>
+ <xs:element
+ name="blockquote"
+ type="xhtml.blockquote.type"/>
+ </xs:choice>
+ </xs:group>
+ <xs:group
+ name="xhtml.BlkPres.class">
+ <xs:sequence>
+ <xs:element
+ name="hr"
+ type="xhtml.hr.type"/>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.BlkSpecial.class">
+ <xs:choice>
+ <xs:group
+ ref="xhtml.Table.class"/>
+ <xs:group
+ ref="xhtml.Form.class"/>
+ <xs:group
+ ref="xhtml.Fieldset.class"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.Block.extra">
+ <xs:sequence/>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.Block.class">
+ <xs:choice>
+ <xs:group
+ ref="xhtml.BlkStruct.class"/>
+ <xs:group
+ ref="xhtml.BlkPhras.class"/>
+ <xs:group
+ ref="xhtml.BlkPres.class"/>
+ <xs:group
+ ref="xhtml.BlkSpecial.class"/>
+ <xs:group
+ ref="xhtml.Block.extra"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.Block.mix">
+ <xs:choice>
+ <xs:group
+ ref="xhtml.Heading.class"/>
+ <xs:group
+ ref="xhtml.List.class"/>
+ <xs:group
+ ref="xhtml.Block.class"/>
+ <xs:group
+ ref="xhtml.Misc.class"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group
+ name="xhtml.Flow.mix">
+ <xs:choice>
+ <xs:group
+ ref="xhtml.Heading.class"/>
+ <xs:group
+ ref="xhtml.List.class"/>
+ <xs:group
+ ref="xhtml.Block.class"/>
+ <xs:group
+ ref="xhtml.Inline.class"/>
+ <xs:group
+ ref="xhtml.Misc.class"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:element
+ name="html"
+ type="xhtml.html.type"/>
+</xs:schema> \ No newline at end of file
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml-modules-1.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml-modules-1.xsd
new file mode 100644
index 00000000..b5d779a9
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml-modules-1.xsd
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/">
+
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+ <xs:annotation>
+ <xs:documentation>
+ This XML Schema declares changes to the content models
+ of modules included in SLXHTML 1.2
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>
+ Module Content Model Redefinitions
+
+ This schema describes the changes (Redefinitions) to the
+ content model of individual modules as they are instantiated as part of
+ SLXHTML 1.2 Document
+ </xs:documentation>
+ </xs:annotation>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- Changes to common attributes module -->
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <xs:include schemaLocation="xhtml-attribs-1.xsd"/>
+
+ <!-- WORKAROUND to [#422] Get rid of Xerces 2.9.1 dependency (SLXHTML validation)
+ |
+ <xs:redefine schemaLocation="xhtml-attribs-1.xsd">
+
+ <xs:attributeGroup name="xhtml.I18n.attrib">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2: Removed xml:lang attrib.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.I18n.extra.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.title">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2: Removed title attrib.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+
+ </xs:redefine>
+ |-->
+
+ <xs:include schemaLocation="xhtml-framework-1.xsd"/>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- Changes to block phrasal elements module -->
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <xs:include schemaLocation="xhtml-blkphras-1.xsd"/>
+
+ <!-- WORKAROUND to [#422] Get rid of Xerces 2.9.1 dependency (SLXHTML validation)
+ | xercesImpl < 2.9.1 cannot handle redefinition here while schema is included elsewhere without redefinition
+ |
+ <xs:redefine schemaLocation="xhtml-blkphras-1.xsd">
+
+ <xs:attributeGroup name="xhtml.blockquote.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2: Removed cite attrib.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+
+ </xs:redefine>
+ |-->
+
+ <xs:include schemaLocation="xhtml-text-1.xsd"/>
+
+ <xs:include schemaLocation="xhtml-list-1.xsd"/>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- Changes to Structural Module -->
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <xs:redefine schemaLocation="xhtml-struct-1.xsd">
+
+ <xs:attributeGroup name="xhtml.version.attrib">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2: Change value of the version attrib.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="version" type="xh11d:CDATA" fixed="-//www.buergerkarte.at//DOCUMENT SLXHTML 1.2//DE"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.profile.attrib">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2: Removed profile attrib.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attributeGroup>
+ </xs:redefine>
+
+ <xs:include schemaLocation="xhtml-pres-1.xsd"/>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- Changes to images module -->
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <xs:redefine schemaLocation="xhtml-image-1.xsd">
+
+ <xs:attributeGroup name="xhtml.img.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2: Removed attributes "longdesc", "height", "width".
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="src" type="xh11d:URI" use="required"/>
+ <xs:attribute name="alt" type="xh11d:Text" use="required"/>
+ </xs:attributeGroup>
+
+ </xs:redefine>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- Changes to style module -->
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <xs:redefine schemaLocation="xhtml-style-1.xsd">
+
+ <xs:attributeGroup name="xhtml.style.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute group "title"
+ Removed attribute "xml:space"
+ Fixed value of attribute "type"
+ Fixed value of attribute "media"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.I18n.attrib"/>
+ <xs:attribute name="type" type="xh11d:ContentType" use="required" fixed="text/css"/>
+ <xs:attribute name="media" type="xh11d:MediaDesc" fixed="screen"/>
+ </xs:attributeGroup>
+
+ </xs:redefine>
+
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+ <!-- Changes to table module -->
+ <!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
+
+ <xs:redefine schemaLocation="xhtml-table-1.xsd">
+
+ <xs:attributeGroup name="xhtml.td.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute groups "scope.attrib", "CellHAlign.attrib", "CellVAlign.attrib"
+ Removed attributes "abbr", "axis", "headers"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="rowspan" type="xh11d:Number" default="1"/>
+ <xs:attribute name="colspan" type="xh11d:Number" default="1"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.th.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute groups "scope.attrib", "CellHAlign.attrib", "CellVAlign.attrib"
+ Removed attributes "abbr", "axis", "headers"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="rowspan" type="xh11d:Number" default="1"/>
+ <xs:attribute name="colspan" type="xh11d:Number" default="1"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.tr.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute groups "CellHAlign.attrib", "CellVAlign.attrib"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.col.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute groups "CellHAlign.attrib", "CellVAlign.attrib"
+ Removed attributes "span", "width"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.colgroup.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute groups "CellHAlign.attrib", "CellVAlign.attrib"
+ Removed attributes "span", "width"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.tbody.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute groups "CellHAlign.attrib", "CellVAlign.attrib"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.tfoot.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute groups "CellHAlign.attrib", "CellVAlign.attrib"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.thead.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute groups "CellHAlign.attrib", "CellVAlign.attrib"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="xhtml.table.attlist">
+ <xs:annotation>
+ <xs:documentation>
+ Redefinition by SLXHTML 1.2:
+ Removed attribute groups "frame.attrib", "rules.attrib"
+ Removed attributes "summary", "width", "border", "cellspacing", "cellpadding"
+ </xs:documentation>
+ </xs:annotation>
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ </xs:redefine>
+
+</xs:schema>
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml.xsd
new file mode 100644
index 00000000..b6dceec5
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/slxhtml.xsd
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ | Important note:
+ | WORKAROUND to [#422] Get rid of Xerces 2.9.1 dependency (SLXHTML validation)
+ | requires changes to xhtml-attribs-1.xsd and xhtml-blkphras-1.xsd,
+ | when updating the xhtml schema make sure to re-incorporate the respective changes!
+ |
+-->
+<xs:schema targetNamespace="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml" xmlns:xs="http://www.w3.org/2001/XMLSchema" blockDefault="#all">
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema driver for SLXHTML 1.2.
+ SLXHTML is a profile of XHTML (see W3C copyright notice below).
+
+ @author: Gregor Karlinger gregor.karlinger@cio.gv.at
+ $Id: slxhtml.xsd,v 1.3 2004/05/12 11:35:31 karlinger Exp $
+ </xs:documentation>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ This is the Schema Driver file for SLXHTML 1.2
+ Document Type
+
+ This schema includes
+ + modules for SLXHTML 1.2 Document Type.
+
+ + schema that defines all the named model for
+ the SLXHTML 1.2 Document Type
+
+ + schema that redefines the content model of
+ individual elements defined in the Module
+ implementations.
+
+ SLXHTML 1.2 Document Type includes the following Modules
+
+ XHTML Core modules
+ + text
+ + lists
+ + structure
+
+ Other XHTML modules
+ + Style
+ + Image
+ + Tables
+
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="xml.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ This import brings in the XML namespace attributes
+ The XML attributes are used by various modules
+ </xs:documentation>
+ </xs:annotation>
+ </xs:import>
+
+ <xs:include schemaLocation="slxhtml-model-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ This schema redefines the content model defined by
+ the individual modules for SLXHTML 1.2 Document Type
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include>
+
+ <xs:include schemaLocation="slxhtml-modules-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Document Model module for the SLXHTML 1.2 Document Type.
+ This schema file defines all named models used by XHTML
+ Modularization Framework for SLXHTML 1.2 Document Type
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include>
+</xs:schema>
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-attribs-1.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-attribs-1.xsd
new file mode 100644
index 00000000..43fddc22
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-attribs-1.xsd
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema common attributes module for XHTML
+ $Id: xhtml-attribs-1.xsd,v 1.7 2008/07/05 04:11:00 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_commonatts"/>
+ </xs:annotation>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="xml.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ This import brings in the XML namespace attributes
+ The module itself does not provide the schemaLocation
+ and expects the driver schema to provide the
+ actual SchemaLocation.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:import>
+ <xs:attributeGroup name="xhtml.id">
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.class">
+ <xs:attribute name="class" type="xs:NMTOKENS"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.title">
+ <!-- WORKAROUND to [#422] Get rid of Xerces 2.9.1 dependency (SLXHTML validation)
+ |
+ <xs:attribute name="title" type="xs:string"/> -->
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.Core.attrib">
+ <xs:attribute ref="xml:space"/>
+ <xs:attributeGroup ref="xhtml.id"/>
+ <xs:attributeGroup ref="xhtml.class"/>
+ <xs:attributeGroup ref="xhtml.title"/>
+ <xs:attributeGroup ref="xhtml.Core.extra.attrib"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.I18n.attrib">
+ <!-- WORKAROUND to [#422] Get rid of Xerces 2.9.1 dependency (SLXHTML validation)
+ |
+ <xs:attribute ref="xml:lang" /> -->
+ <xs:attributeGroup ref="xhtml.I18n.extra.attrib"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.Common.attrib">
+ <xs:attributeGroup ref="xhtml.Core.attrib"/>
+ <xs:attributeGroup ref="xhtml.I18n.attrib"/>
+ <xs:attributeGroup ref="xhtml.Common.extra"/>
+ </xs:attributeGroup>
+ <!-- Global attributes -->
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute name="class" type="xs:NMTOKENS"/>
+ <xs:attribute name="title" type="xs:string"/>
+ <xs:attributeGroup name="xhtml.Global.core.attrib">
+ <xs:attribute ref="id"/>
+ <xs:attribute ref="class"/>
+ <xs:attribute ref="title"/>
+ <xs:attributeGroup ref="xhtml.Global.core.extra.attrib" />
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.Global.i18n.attrib">
+ <xs:attribute ref="xml:lang" />
+ <xs:attributeGroup ref="xhtml.Global.I18n.extra.attrib"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.Global.common.attrib">
+ <xs:attributeGroup ref="xhtml.Global.core.attrib"/>
+ <xs:attributeGroup ref="xhtml.Global.i18n.attrib"/>
+ <xs:attributeGroup ref="xhtml.Global.Common.extra"/>
+ </xs:attributeGroup>
+</xs:schema>
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkphras-1.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkphras-1.xsd
new file mode 100644
index 00000000..7e902568
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkphras-1.xsd
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" schemaLocation="xhtml-datatypes-1.xsd" />
+
+ <xs:include schemaLocation="xhtml-attribs-1.xsd" />
+
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema Block Phrasal support module for XHTML
+ $Id: xhtml-blkphras-1.xsd,v 1.7 2008/07/05 04:11:00 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Block Phrasal
+ This module declares the elements and their attributes used to
+ support block-level phrasal markup.
+ This is the XML Schema block phrasal elements module for XHTML
+
+ * address, blockquote, pre, h1, h2, h3, h4, h5, h6
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_textmodule"/>
+ </xs:annotation>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="xml.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ This import brings in the XML namespace attributes
+ The module itself does not provide the schemaLocation
+ and expects the driver schema to provide the
+ actual SchemaLocation.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:import>
+ <!-- address -->
+ <xs:attributeGroup name="xhtml.address.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.address.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.address.type" mixed="true">
+ <xs:group ref="xhtml.address.content"/>
+ <xs:attributeGroup ref="xhtml.address.attlist"/>
+ </xs:complexType>
+ <!-- blockquote -->
+ <xs:attributeGroup name="xhtml.blockquote.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <!-- WORKAROUND to [#422] Get rid of Xerces 2.9.1 dependency (SLXHTML validation)
+ <xs:attribute name="cite" type="xh11d:URI"/> -->
+ </xs:attributeGroup>
+ <xs:group name="xhtml.blockquote.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Block.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.blockquote.type">
+ <xs:group ref="xhtml.blockquote.content"/>
+ <xs:attributeGroup ref="xhtml.blockquote.attlist"/>
+ </xs:complexType>
+ <!-- pre -->
+ <xs:attributeGroup name="xhtml.pre.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.pre.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.InlinePre.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.pre.type" mixed="true">
+ <xs:group ref="xhtml.pre.content"/>
+ <xs:attributeGroup ref="xhtml.pre.attlist"/>
+ </xs:complexType>
+ <!-- Heading Elements -->
+ <xs:attributeGroup name="xhtml.heading.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:complexType name="xhtml.heading.type" mixed="true">
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:attributeGroup ref="xhtml.heading.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.h1.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.h1.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.h1.type" mixed="true">
+ <xs:group ref="xhtml.h1.content"/>
+ <xs:attributeGroup ref="xhtml.h1.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.h2.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.h2.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.h2.type" mixed="true">
+ <xs:group ref="xhtml.h2.content"/>
+ <xs:attributeGroup ref="xhtml.h2.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.h3.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.h3.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.h3.type" mixed="true">
+ <xs:group ref="xhtml.h3.content"/>
+ <xs:attributeGroup ref="xhtml.h3.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.h4.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.h4.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.h4.type" mixed="true">
+ <xs:group ref="xhtml.h4.content"/>
+ <xs:attributeGroup ref="xhtml.h4.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.h5.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.h5.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.h5.type" mixed="true">
+ <xs:group ref="xhtml.h5.content"/>
+ <xs:attributeGroup ref="xhtml.h5.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.h6.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.h6.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.h6.type" mixed="true">
+ <xs:group ref="xhtml.h6.content"/>
+ <xs:attributeGroup ref="xhtml.h6.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkpres-1.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkpres-1.xsd
new file mode 100644
index 00000000..cf42303a
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkpres-1.xsd
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML SchemaBlock presentation element module for XHTML
+ $Id: xhtml-blkpres-1.xsd,v 1.2 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Block Presentational Elements
+
+ * hr
+
+ This module declares the elements and their attributes used to
+ support block-level presentational markup.
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_presentationmodule"/>
+ </xs:annotation>
+ <xs:attributeGroup name="xhtml.hr.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.hr.content">
+ <xs:sequence/>
+ </xs:group>
+ <xs:complexType name="xhtml.hr.type">
+ <xs:group ref="xhtml.hr.content"/>
+ <xs:attributeGroup ref="xhtml.hr.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkstruct-1.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkstruct-1.xsd
new file mode 100644
index 00000000..1e658580
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-blkstruct-1.xsd
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+ <xs:annotation>
+ <xs:documentation>
+ Block Structural
+
+ * div, p
+
+ This module declares the elements and their attributes used to
+ support block-level structural markup.
+
+ This is the XML Schema Block Structural module for XHTML
+ $Id: xhtml-blkstruct-1.xsd,v 1.3 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <!-- div -->
+ <xs:attributeGroup name="xhtml.div.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.div.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.div.type" mixed="true">
+ <xs:group ref="xhtml.div.content"/>
+ <xs:attributeGroup ref="xhtml.div.attlist"/>
+ </xs:complexType>
+ <!-- p -->
+ <xs:attributeGroup name="xhtml.p.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.p.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.p.type" mixed="true">
+ <xs:group ref="xhtml.p.content"/>
+ <xs:attributeGroup ref="xhtml.p.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-datatypes-1.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-datatypes-1.xsd
new file mode 100644
index 00000000..860b1d6e
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-datatypes-1.xsd
@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns="http://www.w3.org/1999/xhtml/datatypes/"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+ targetNamespace="http://www.w3.org/1999/xhtml/datatypes/"
+ elementFormDefault="qualified"
+>
+ <xs:annotation>
+ <xs:documentation>
+ XHTML Datatypes
+ This is the XML Schema datatypes module for XHTML
+
+ Defines containers for the XHTML datatypes, many of
+ these imported from other specifications and standards.
+
+ $Id: xhtml-datatypes-1.xsd,v 1.11 2008/10/07 16:57:03 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstraction.html#s_common_attrtypes"/>
+ </xs:annotation>
+
+ <!-- nn for pixels or nn% for percentage length -->
+ <xs:simpleType name="Length">
+ <xs:union memberTypes="xs:nonNegativeInteger">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="\d+[%]|\d*\.\d+[%]"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ <!-- space-separated list of link types -->
+ <xs:simpleType name="LinkTypes">
+ <xs:list itemType="xs:NMTOKEN"/>
+ </xs:simpleType>
+ <!-- single or comma-separated list of media descriptors -->
+ <xs:simpleType name="MediaDesc">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- pixel, percentage, or relative -->
+ <xs:simpleType name="MultiLength">
+ <xs:union memberTypes="xh11d:Length">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="\d*\*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ <!-- one or more digits (NUMBER) -->
+ <xs:simpleType name="Number">
+ <xs:restriction base="xs:nonNegativeInteger"/>
+ </xs:simpleType>
+ <!-- integer representing length in pixels -->
+ <xs:simpleType name="Pixels">
+ <xs:restriction base="xs:nonNegativeInteger"/>
+ </xs:simpleType>
+ <!-- script expression -->
+ <xs:simpleType name="Script">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- sixteen color names or RGB color expression-->
+ <xs:simpleType name="Color">
+ <xs:union memberTypes="xs:NMTOKEN">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="#[0-9a-fA-F]{3}([0-9a-fA-F]{3})?"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ <!-- textual content -->
+ <xs:simpleType name="Text">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- Imported Datatypes -->
+ <!-- a single character, as per section 2.2 of [XML] -->
+ <xs:simpleType name="Character">
+ <xs:restriction base="xs:string">
+ <xs:length value="1" fixed="true"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <!-- a character encoding, as per [RFC2045] -->
+ <xs:simpleType name="Charset">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- a space separated list of character encodings, as per [RFC2045] -->
+ <xs:simpleType name="Charsets">
+ <xs:list itemType="Charset"/>
+ </xs:simpleType>
+ <!-- media type, as per [RFC2045] -->
+ <xs:simpleType name="ContentType">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- comma-separated list of media types, as per [RFC2045] -->
+ <xs:simpleType name="ContentTypes">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- date and time information. ISO date format -->
+ <xs:simpleType name="Datetime">
+ <xs:restriction base="xs:dateTime"/>
+ </xs:simpleType>
+ <!-- formal public identifier, as per [ISO8879] -->
+ <xs:simpleType name="FPI">
+ <xs:restriction base="xs:normalizedString"/>
+ </xs:simpleType>
+
+ <!-- a window name as used in the target attribute -->
+ <xs:simpleType name="FrameTarget">
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="_blank"/>
+ <xs:enumeration value="_self"/>
+ <xs:enumeration value="_parent"/>
+ <xs:enumeration value="_top"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:pattern value="[a-zA-Z].*"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <!-- a language code, as per [RFC3066] -->
+ <xs:simpleType name="LanguageCode">
+ <xs:restriction base="xs:language"/>
+ </xs:simpleType>
+ <!-- a comma separated list of language ranges -->
+ <xs:simpleType name="LanguageCodes">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- a Uniform Resource Identifier, see [URI] -->
+ <xs:simpleType name="URI">
+ <xs:restriction base="xs:anyURI"/>
+ </xs:simpleType>
+ <!-- a space-separated list of Uniform Resource Identifiers, see [URI] -->
+ <xs:simpleType name="URIs">
+ <xs:list itemType="xs:anyURI"/>
+ </xs:simpleType>
+ <!-- comma-separated list of MultiLength -->
+ <xs:simpleType name="MultiLengths">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- character Data -->
+ <xs:simpleType name="CDATA">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+ <!-- CURIE placeholder datatypes -->
+ <xs:simpleType name="CURIE">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="(([\i-[:]][\c-[:]]*)?:)?.+" />
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="CURIEs">
+ <xs:list itemType="xh11d:CURIE"/>
+ </xs:simpleType>
+ <xs:simpleType name="SafeCURIE">
+ <xs:restriction base="xs:string">
+ <xs:pattern value="\[(([\i-[:]][\c-[:]]*)?:)?.+\]" />
+ <xs:minLength value="3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="SafeCURIEs">
+ <xs:list itemType="xh11d:SafeCURIE"/>
+ </xs:simpleType>
+ <xs:simpleType name="URIorSafeCURIE">
+ <xs:union memberTypes="xs:anyURI xh11d:SafeCURIE" />
+ </xs:simpleType>
+ <xs:simpleType name="URIorSafeCURIEs">
+ <xs:list itemType="xh11d:URIorSafeCURIE"/>
+ </xs:simpleType>
+</xs:schema>
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-framework-1.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-framework-1.xsd
new file mode 100644
index 00000000..05b906d4
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-framework-1.xsd
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+ elementFormDefault="qualified"
+>
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema Modular Framework support module for XHTML
+ $Id: xhtml-framework-1.xsd,v 1.5 2005/09/26 23:37:47 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ XHTML Modular Framework
+ This required module instantiates the necessary modules
+ needed to support the XHTML modularization framework.
+
+ The Schema modules instantiated are:
+ + notations
+ + datatypes
+ + common attributes
+ + character entities
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_commonatts"/>
+ </xs:annotation>
+ <!-- xs:include schemaLocation="xhtml-notations-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Notations module
+ Declares XHTML notations for Attribute data types
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include -->
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/" schemaLocation="xhtml-datatypes-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ This module defines XHTML Attribute DataTypes
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstraction.html#s_common_attrtypes"/>
+ </xs:annotation>
+ </xs:import>
+ <xs:include schemaLocation="xhtml-attribs-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ This module defines Common attributes for XHTML
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_commonatts"/>
+ </xs:annotation>
+ </xs:include>
+ <!-- xs:include schemaLocation="xhtml-charent-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Character entities module
+ Note: Entities are not supported in XML Schema
+ The Schema Module uses DTDs to define Entities
+
+ This module defines
+ + XHTML Latin 1 Character Entities
+ + XHTML Special Characters
+ + XHTML Mathematical, Greek, and Symbolic Characters
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include -->
+</xs:schema>
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-image-1.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-image-1.xsd
new file mode 100644
index 00000000..cd16bc9b
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-image-1.xsd
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+
+ <xs:annotation>
+ <xs:documentation>
+ Images
+ This is the XML Schema Images module for XHTML
+
+ * img
+
+ This module provides markup to support basic image embedding.
+
+ To avoid problems with text-only UAs as well as to make
+ image content understandable and navigable to users of
+ non-visual UAs, you need to provide a description with
+ the 'alt' attribute, and avoid server-side image maps.
+
+
+ $Id: xhtml-image-1.xsd,v 1.2 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_imagemodule"/>
+ </xs:annotation>
+ <xs:attributeGroup name="xhtml.img.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="src" type="xh11d:URI" use="required"/>
+ <xs:attribute name="alt" type="xh11d:Text" use="required"/>
+ <xs:attribute name="longdesc" type="xh11d:URI"/>
+ <xs:attribute name="height" type="xh11d:Length"/>
+ <xs:attribute name="width" type="xh11d:Length"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.img.content">
+ <xs:sequence/>
+ </xs:group>
+ <xs:complexType name="xhtml.img.type">
+ <xs:group ref="xhtml.img.content"/>
+ <xs:attributeGroup ref="xhtml.img.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlphras-1.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlphras-1.xsd
new file mode 100644
index 00000000..919c59de
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlphras-1.xsd
@@ -0,0 +1,163 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema Inline Phrasal support module for XHTML
+ $Id: xhtml-inlphras-1.xsd,v 1.4 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Inline Phrasal.
+ This module declares the elements and their attributes used to
+ support inline-level phrasal markup.
+ This is the XML Schema Inline Phrasal module for XHTML
+
+ * abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
+
+ $Id: xhtml-inlphras-1.xsd,v 1.4 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_textmodule"/>
+ </xs:annotation>
+ <xs:attributeGroup name="xhtml.abbr.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.abbr.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.abbr.type" mixed="true">
+ <xs:group ref="xhtml.abbr.content"/>
+ <xs:attributeGroup ref="xhtml.abbr.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.acronym.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.acronym.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.acronym.type" mixed="true">
+ <xs:group ref="xhtml.acronym.content"/>
+ <xs:attributeGroup ref="xhtml.acronym.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.cite.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.cite.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.cite.type" mixed="true">
+ <xs:group ref="xhtml.cite.content"/>
+ <xs:attributeGroup ref="xhtml.cite.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.code.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.code.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.code.type" mixed="true">
+ <xs:group ref="xhtml.code.content"/>
+ <xs:attributeGroup ref="xhtml.code.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.dfn.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.dfn.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.dfn.type" mixed="true">
+ <xs:group ref="xhtml.dfn.content"/>
+ <xs:attributeGroup ref="xhtml.dfn.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.em.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.em.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.em.type" mixed="true">
+ <xs:group ref="xhtml.em.content"/>
+ <xs:attributeGroup ref="xhtml.em.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.kbd.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.kbd.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.kbd.type" mixed="true">
+ <xs:group ref="xhtml.kbd.content"/>
+ <xs:attributeGroup ref="xhtml.kbd.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.samp.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.samp.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.samp.type" mixed="true">
+ <xs:group ref="xhtml.samp.content"/>
+ <xs:attributeGroup ref="xhtml.samp.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.strong.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.strong.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.strong.type" mixed="true">
+ <xs:group ref="xhtml.strong.content"/>
+ <xs:attributeGroup ref="xhtml.strong.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.var.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.var.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.var.type" mixed="true">
+ <xs:group ref="xhtml.var.content"/>
+ <xs:attributeGroup ref="xhtml.var.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.q.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="cite" type="xh11d:URI"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.q.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.q.type" mixed="true">
+ <xs:group ref="xhtml.q.content"/>
+ <xs:attributeGroup ref="xhtml.q.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlpres-1.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlpres-1.xsd
new file mode 100644
index 00000000..a053447c
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlpres-1.xsd
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema Inline Presentation element module for XHTML
+ $Id: xhtml-inlpres-1.xsd,v 1.2 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Inline Presentational Elements
+
+ * b, big, i, small, sub, sup, tt
+
+ This module declares the elements and their attributes used to
+ support inline-level presentational markup.
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_presentationmodule"/>
+ </xs:annotation>
+ <xs:attributeGroup name="xhtml.InlPres.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.InlPres.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.InlPres.type" mixed="true">
+ <xs:group ref="xhtml.InlPres.content"/>
+ <xs:attributeGroup ref="xhtml.InlPres.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlstruct-1.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlstruct-1.xsd
new file mode 100644
index 00000000..635eb5f1
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-inlstruct-1.xsd
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema Inline Structural support module for XHTML
+ $Id: xhtml-inlstruct-1.xsd,v 1.4 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Inline Structural.
+ This module declares the elements and their attributes
+ used to support inline-level structural markup.
+ This is the XML Schema Inline Structural element module for XHTML
+
+ * br, span
+
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/xhtml-modularization/abstract_modules.html#s_textmodule"/>
+ </xs:annotation>
+ <xs:attributeGroup name="xhtml.br.attlist">
+ <xs:attributeGroup ref="xhtml.Core.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.br.content">
+ <xs:sequence/>
+ </xs:group>
+ <xs:complexType name="xhtml.br.type">
+ <xs:group ref="xhtml.br.content"/>
+ <xs:attributeGroup ref="xhtml.br.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.span.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.span.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.span.type" mixed="true">
+ <xs:group ref="xhtml.span.content"/>
+ <xs:attributeGroup ref="xhtml.span.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-list-1.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-list-1.xsd
new file mode 100644
index 00000000..cc22ba88
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-list-1.xsd
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+ <xs:annotation>
+ <xs:documentation>
+ List Module
+ This is the XML Schema Lists module for XHTML
+ List Module Elements
+
+ * dl, dt, dd, ol, ul, li
+
+ This module declares the list-oriented element types
+ and their attributes.
+ $Id: xhtml-list-1.xsd,v 1.2 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_listmodule"/>
+ </xs:annotation>
+ <xs:attributeGroup name="xhtml.dt.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.dt.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.dt.type" mixed="true">
+ <xs:group ref="xhtml.dt.content"/>
+ <xs:attributeGroup ref="xhtml.dt.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.dd.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.dd.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.dd.type" mixed="true">
+ <xs:group ref="xhtml.dd.content"/>
+ <xs:attributeGroup ref="xhtml.dd.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.dl.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.dl.content">
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element name="dt" type="xhtml.dt.type"/>
+ <xs:element name="dd" type="xhtml.dd.type"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.dl.type">
+ <xs:group ref="xhtml.dl.content"/>
+ <xs:attributeGroup ref="xhtml.dl.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.li.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.li.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.li.type" mixed="true">
+ <xs:group ref="xhtml.li.content"/>
+ <xs:attributeGroup ref="xhtml.li.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.ol.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.ol.content">
+ <xs:sequence>
+ <xs:element name="li" type="xhtml.li.type" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.ol.type">
+ <xs:group ref="xhtml.ol.content"/>
+ <xs:attributeGroup ref="xhtml.ol.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.ul.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.ul.content">
+ <xs:sequence>
+ <xs:element name="li" type="xhtml.li.type" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.ul.type">
+ <xs:group ref="xhtml.ul.content"/>
+ <xs:attributeGroup ref="xhtml.ul.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-pres-1.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-pres-1.xsd
new file mode 100644
index 00000000..bc36fc48
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-pres-1.xsd
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema Presentation module for XHTML
+ This is a REQUIRED module.
+ $Id: xhtml-pres-1.xsd,v 1.2 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Presentational Elements
+
+ This module defines elements and their attributes for
+ simple presentation-related markup.
+
+ Elements defined here:
+
+ * hr
+ * b, big, i, small, sub, sup, tt
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_presentationmodule"/>
+ </xs:annotation>
+ <xs:include schemaLocation="xhtml-blkpres-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Block Presentational module
+ Elements defined here:
+
+ * hr
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include>
+ <xs:include schemaLocation="xhtml-inlpres-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Inline Presentational module
+ Elements defined here:
+
+ * b, big, i, small, sub, sup, tt
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include>
+</xs:schema>
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-struct-1.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-struct-1.xsd
new file mode 100644
index 00000000..39c8055d
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-struct-1.xsd
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/">
+ <xs:import
+ namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd"/>
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema Document Structure module for XHTML
+ Document Structure
+
+ * title, head, body, html
+
+ The Structure Module defines the major structural elements and
+ their attributes.
+
+ $Id: xhtml-struct-1.xsd,v 1.10 2008/07/05 04:11:00 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_structuremodule"/>
+ </xs:annotation>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="xml.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ This import brings in the XML namespace attributes
+ The module itself does not provide the schemaLocation
+ and expects the driver schema to provide the
+ actual SchemaLocation.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:import>
+ <xs:attributeGroup
+ name="xhtml.title.attlist">
+ <xs:attributeGroup
+ ref="xhtml.I18n.attrib"/>
+ <xs:attributeGroup ref="xhtml.id"/>
+ <xs:attribute ref="xml:space"/>
+ </xs:attributeGroup>
+ <xs:group
+ name="xhtml.title.content">
+ <xs:sequence/>
+ </xs:group>
+ <xs:complexType
+ name="xhtml.title.type"
+ mixed="true">
+ <xs:group
+ ref="xhtml.title.content"/>
+ <xs:attributeGroup
+ ref="xhtml.title.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup
+ name="xhtml.profile.attrib">
+ <xs:attribute
+ name="profile"
+ type="xh11d:URI"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup
+ name="xhtml.head.attlist">
+ <xs:attributeGroup
+ ref="xhtml.profile.attrib"/>
+ <xs:attributeGroup
+ ref="xhtml.I18n.attrib"/>
+ <xs:attributeGroup ref="xhtml.id"/>
+ <xs:attribute ref="xml:space"/>
+ </xs:attributeGroup>
+ <xs:complexType
+ name="xhtml.head.type">
+ <xs:group
+ ref="xhtml.head.content"/>
+ <xs:attributeGroup
+ ref="xhtml.head.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup
+ name="xhtml.body.attlist">
+ <xs:attributeGroup
+ ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group
+ name="xhtml.body.content">
+ <xs:sequence>
+ <xs:group
+ ref="xhtml.Block.mix"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType
+ name="xhtml.body.type">
+ <xs:group
+ ref="xhtml.body.content"/>
+ <xs:attributeGroup
+ ref="xhtml.body.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup
+ name="xhtml.version.attrib">
+ <xs:attribute
+ name="version"
+ type="xh11d:CDATA"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup
+ name="xhtml.html.attlist">
+ <xs:attributeGroup
+ ref="xhtml.version.attrib"/>
+ <xs:attributeGroup
+ ref="xhtml.I18n.attrib"/>
+ <xs:attributeGroup ref="xhtml.id"/>
+ <xs:attribute ref="xml:space"/>
+ </xs:attributeGroup>
+ <xs:group
+ name="xhtml.html.content">
+ <xs:sequence>
+ <xs:element
+ name="head"
+ type="xhtml.head.type"/>
+ <xs:element
+ name="body"
+ type="xhtml.body.type"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType
+ name="xhtml.html.type">
+ <xs:group
+ ref="xhtml.html.content"/>
+ <xs:attributeGroup
+ ref="xhtml.html.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-style-1.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-style-1.xsd
new file mode 100644
index 00000000..1b3e7d3b
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-style-1.xsd
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema Stylesheets module for XHTML
+ $Id: xhtml-style-1.xsd,v 1.5 2006/09/11 10:14:57 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Stylesheets
+
+ * style
+
+ This module declares the style element type and its attributes,
+ used to embed stylesheet information in the document head element.
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_stylemodule"/>
+ </xs:annotation>
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="xml.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ This import brings in the XML namespace attributes
+ The module itself does not provide the schemaLocation
+ and expects the driver schema to provide the
+ actual SchemaLocation.
+ </xs:documentation>
+ </xs:annotation>
+ </xs:import>
+ <xs:attributeGroup name="xhtml.style.attlist">
+ <xs:attributeGroup ref="xhtml.id"/>
+ <xs:attributeGroup ref="xhtml.title"/>
+ <xs:attributeGroup ref="xhtml.I18n.attrib"/>
+ <xs:attribute name="type" type="xh11d:ContentType" use="required"/>
+ <xs:attribute name="media" type="xh11d:MediaDesc"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.style.content">
+ <xs:sequence/>
+ </xs:group>
+ <xs:complexType name="xhtml.style.type" mixed="true">
+ <xs:group ref="xhtml.style.content"/>
+ <xs:attributeGroup ref="xhtml.style.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-table-1.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-table-1.xsd
new file mode 100644
index 00000000..ec76db3c
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-table-1.xsd
@@ -0,0 +1,272 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+
+ <xs:annotation>
+ <xs:documentation>
+ This is the XML Schema Tables module for XHTML
+ $Id: xhtml-table-1.xsd,v 1.3 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ Tables
+
+ * table, caption, thead, tfoot, tbody, colgroup, col, tr, th, td
+
+ This module declares element types and attributes used to provide
+ table markup similar to HTML 4.0, including features that enable
+ better accessibility for non-visual user agents.
+ </xs:documentation>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_tablemodule"/>
+ </xs:annotation>
+ <xs:attributeGroup name="xhtml.frame.attrib">
+ <xs:attribute name="frame">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="void"/>
+ <xs:enumeration value="above"/>
+ <xs:enumeration value="below"/>
+ <xs:enumeration value="hsides"/>
+ <xs:enumeration value="lhs"/>
+ <xs:enumeration value="rhs"/>
+ <xs:enumeration value="vsides"/>
+ <xs:enumeration value="box"/>
+ <xs:enumeration value="border"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.rules.attrib">
+ <xs:attribute name="rules">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="none"/>
+ <xs:enumeration value="groups"/>
+ <xs:enumeration value="rows"/>
+ <xs:enumeration value="cols"/>
+ <xs:enumeration value="all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.CellVAlign.attrib">
+ <xs:attribute name="valign">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="top"/>
+ <xs:enumeration value="middle"/>
+ <xs:enumeration value="bottom"/>
+ <xs:enumeration value="baseline"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.CellHAlign.attrib">
+ <xs:attribute name="align">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="left"/>
+ <xs:enumeration value="center"/>
+ <xs:enumeration value="right"/>
+ <xs:enumeration value="justify"/>
+ <xs:enumeration value="char"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="char" type="xh11d:Character"/>
+ <xs:attribute name="charoff" type="xh11d:Length"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.scope.attrib">
+ <xs:attribute name="scope">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="row"/>
+ <xs:enumeration value="col"/>
+ <xs:enumeration value="rowgroup"/>
+ <xs:enumeration value="colgroup"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name="xhtml.td.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="abbr" type="xh11d:Text"/>
+ <xs:attribute name="axis" type="xh11d:CDATA"/>
+ <xs:attribute name="headers" type="xs:IDREFS"/>
+ <xs:attributeGroup ref="xhtml.scope.attrib"/>
+ <xs:attribute name="rowspan" type="xh11d:Number" default="1"/>
+ <xs:attribute name="colspan" type="xh11d:Number" default="1"/>
+ <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.td.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.td.type" mixed="true">
+ <xs:group ref="xhtml.td.content"/>
+ <xs:attributeGroup ref="xhtml.td.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.th.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="abbr" type="xh11d:Text"/>
+ <xs:attribute name="axis" type="xh11d:CDATA"/>
+ <xs:attribute name="headers" type="xs:IDREFS"/>
+ <xs:attributeGroup ref="xhtml.scope.attrib"/>
+ <xs:attribute name="rowspan" type="xh11d:Number" default="1"/>
+ <xs:attribute name="colspan" type="xh11d:Number" default="1"/>
+ <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.th.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Flow.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.th.type" mixed="true">
+ <xs:group ref="xhtml.th.content"/>
+ <xs:attributeGroup ref="xhtml.th.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.tr.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.tr.content">
+ <xs:sequence>
+ <xs:choice maxOccurs="unbounded">
+ <xs:element name="th" type="xhtml.th.type"/>
+ <xs:element name="td" type="xhtml.td.type"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.tr.type">
+ <xs:group ref="xhtml.tr.content"/>
+ <xs:attributeGroup ref="xhtml.tr.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.col.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="span" type="xh11d:Number" default="1"/>
+ <xs:attribute name="width" type="xh11d:MultiLength"/>
+ <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.col.content">
+ <xs:sequence/>
+ </xs:group>
+ <xs:complexType name="xhtml.col.type">
+ <xs:group ref="xhtml.col.content"/>
+ <xs:attributeGroup ref="xhtml.col.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.colgroup.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="span" type="xh11d:Number" default="1"/>
+ <xs:attribute name="width" type="xh11d:MultiLength"/>
+ <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.colgroup.content">
+ <xs:sequence>
+ <xs:element name="col" type="xhtml.col.type" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.colgroup.type">
+ <xs:group ref="xhtml.colgroup.content"/>
+ <xs:attributeGroup ref="xhtml.colgroup.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.tbody.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.tbody.content">
+ <xs:sequence>
+ <xs:element name="tr" type="xhtml.tr.type" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.tbody.type">
+ <xs:group ref="xhtml.tbody.content"/>
+ <xs:attributeGroup ref="xhtml.tbody.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.tfoot.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.tfoot.content">
+ <xs:sequence>
+ <xs:element name="tr" type="xhtml.tr.type" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.tfoot.type">
+ <xs:group ref="xhtml.tfoot.content"/>
+ <xs:attributeGroup ref="xhtml.tfoot.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.thead.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellHAlign.attrib"/>
+ <xs:attributeGroup ref="xhtml.CellVAlign.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.thead.content">
+ <xs:sequence>
+ <xs:element name="tr" type="xhtml.tr.type" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.thead.type">
+ <xs:group ref="xhtml.thead.content"/>
+ <xs:attributeGroup ref="xhtml.thead.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.caption.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.caption.content">
+ <xs:sequence>
+ <xs:group ref="xhtml.Inline.mix" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.caption.type" mixed="true">
+ <xs:group ref="xhtml.caption.content"/>
+ <xs:attributeGroup ref="xhtml.caption.attlist"/>
+ </xs:complexType>
+ <xs:attributeGroup name="xhtml.table.attlist">
+ <xs:attributeGroup ref="xhtml.Common.attrib"/>
+ <xs:attribute name="summary" type="xh11d:Text"/>
+ <xs:attribute name="width" type="xh11d:Length"/>
+ <xs:attribute name="border" type="xh11d:Pixels"/>
+ <xs:attributeGroup ref="xhtml.frame.attrib"/>
+ <xs:attributeGroup ref="xhtml.rules.attrib"/>
+ <xs:attribute name="cellspacing" type="xh11d:Length"/>
+ <xs:attribute name="cellpadding" type="xh11d:Length"/>
+ </xs:attributeGroup>
+ <xs:group name="xhtml.table.content">
+ <xs:sequence>
+ <xs:element name="caption" type="xhtml.caption.type" minOccurs="0"/>
+ <xs:choice>
+ <xs:element name="col" type="xhtml.col.type" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:element name="colgroup" type="xhtml.colgroup.type" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:choice>
+ <xs:choice>
+ <xs:sequence>
+ <xs:element name="thead" type="xhtml.thead.type" minOccurs="0"/>
+ <xs:element name="tfoot" type="xhtml.tfoot.type" minOccurs="0"/>
+ <xs:element name="tbody" type="xhtml.tbody.type" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:choice>
+ <xs:element name="tr" type="xhtml.tr.type" maxOccurs="unbounded"/>
+ </xs:choice>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+ <xs:complexType name="xhtml.table.type">
+ <xs:group ref="xhtml.table.content"/>
+ <xs:attributeGroup ref="xhtml.table.attlist"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-text-1.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-text-1.xsd
new file mode 100644
index 00000000..432bdad7
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xhtml-text-1.xsd
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ xmlns:xh11d="http://www.w3.org/1999/xhtml/datatypes/"
+>
+ <xs:import namespace="http://www.w3.org/1999/xhtml/datatypes/"
+ schemaLocation="xhtml-datatypes-1.xsd" />
+ <xs:annotation>
+ <xs:documentation>
+ Textual Content
+ This is the XML Schema Text module for XHTML
+
+ The Text module includes declarations for all core
+ text container elements and their attributes.
+
+ + block phrasal
+ + block structural
+ + inline phrasal
+ + inline structural
+
+ $Id: xhtml-text-1.xsd,v 1.2 2005/09/26 22:54:53 ahby Exp $
+ </xs:documentation>
+ <xs:documentation source="xhtml-copyright-1.xsd"/>
+ <xs:documentation source="http://www.w3.org/TR/2001/REC-xhtml-modularization-20010410/abstract_modules.html#s_textmodule"/>
+ </xs:annotation>
+ <xs:include schemaLocation="xhtml-blkphras-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Block Phrasal module
+ Elements defined here:
+
+ * address, blockquote, pre, h1, h2, h3, h4, h5, h6
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include>
+ <xs:include schemaLocation="xhtml-blkstruct-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Block Structural module
+ Elements defined here:
+
+ * div, p
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include>
+ <xs:include schemaLocation="xhtml-inlphras-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Inline Phrasal module
+ Elements defined here:
+
+ * abbr, acronym, cite, code, dfn, em, kbd, q, samp, strong, var
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include>
+ <xs:include schemaLocation="xhtml-inlstruct-1.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Inline Structural module
+ Elements defined here:
+
+ * br,span
+ </xs:documentation>
+ </xs:annotation>
+ </xs:include>
+</xs:schema>
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xml.xsd b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xml.xsd
new file mode 100644
index 00000000..eeb9db56
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/at/gv/egiz/bku/slxhtml/xml.xsd
@@ -0,0 +1,145 @@
+<?xml version='1.0'?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
+
+ <xs:annotation>
+ <xs:documentation>
+ See http://www.w3.org/XML/1998/namespace.html and
+ http://www.w3.org/TR/REC-xml for information about this namespace.
+
+ This schema document describes the XML namespace, in a form
+ suitable for import by other schema documents.
+
+ Note that local names in this namespace are intended to be defined
+ only by the World Wide Web Consortium or its subgroups. The
+ following names are currently defined in this namespace and should
+ not be used with conflicting semantics by any Working Group,
+ specification, or document instance:
+
+ base (as an attribute name): denotes an attribute whose value
+ provides a URI to be used as the base for interpreting any
+ relative URIs in the scope of the element on which it
+ appears; its value is inherited. This name is reserved
+ by virtue of its definition in the XML Base specification.
+
+ id (as an attribute name): denotes an attribute whose value
+ should be interpreted as if declared to be of type ID.
+ This name is reserved by virtue of its definition in the
+ xml:id specification.
+
+ lang (as an attribute name): denotes an attribute whose value
+ is a language code for the natural language of the content of
+ any element; its value is inherited. This name is reserved
+ by virtue of its definition in the XML specification.
+
+ space (as an attribute name): denotes an attribute whose
+ value is a keyword indicating what whitespace processing
+ discipline is intended for the content of the element; its
+ value is inherited. This name is reserved by virtue of its
+ definition in the XML specification.
+
+ Father (in any context at all): denotes Jon Bosak, the chair of
+ the original XML Working Group. This name is reserved by
+ the following decision of the W3C XML Plenary and
+ XML Coordination groups:
+
+ In appreciation for his vision, leadership and dedication
+ the W3C XML Plenary on this 10th day of February, 2000
+ reserves for Jon Bosak in perpetuity the XML name
+ xml:Father
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>This schema defines attributes and an attribute group
+ suitable for use by
+ schemas wishing to allow xml:base, xml:lang, xml:space or xml:id
+ attributes on elements they define.
+
+ To enable this, such a schema must import this schema
+ for the XML namespace, e.g. as follows:
+ &lt;schema . . .>
+ . . .
+ &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
+ Subsequently, qualified reference to any of the attributes
+ or the group defined below will have the desired effect, e.g.
+
+ &lt;type . . .>
+ . . .
+ &lt;attributeGroup ref="xml:specialAttrs"/>
+
+ will define a type which will schema-validate an instance
+ element with any of those attributes</xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>In keeping with the XML Schema WG's standard versioning
+ policy, this schema document will persist at
+ http://www.w3.org/2007/08/xml.xsd.
+ At the date of issue it can also be found at
+ http://www.w3.org/2001/xml.xsd.
+ The schema document at that URI may however change in the future,
+ in order to remain compatible with the latest version of XML Schema
+ itself, or with the XML namespace itself. In other words, if the XML
+ Schema or XML namespaces change, the version of this document at
+ http://www.w3.org/2001/xml.xsd will change
+ accordingly; the version at
+ http://www.w3.org/2007/08/xml.xsd will not change.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang">
+ <xs:annotation>
+ <xs:documentation>Attempting to install the relevant ISO 2- and 3-letter
+ codes as the enumerated possible values is probably never
+ going to be a realistic possibility. See
+ RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry
+ at http://www.iana.org/assignments/lang-tag-apps.htm for
+ further information.
+
+ The union allows for the 'un-declaration' of xml:lang with
+ the empty string.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:language">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value=""/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="default"/>
+ <xs:enumeration value="preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="base" type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
+ information about this attribute.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="id" type="xs:ID">
+ <xs:annotation>
+ <xs:documentation>See http://www.w3.org/TR/xml-id/ for
+ information about this attribute.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attributeGroup name="specialAttrs">
+ <xs:attribute ref="xml:base"/>
+ <xs:attribute ref="xml:lang"/>
+ <xs:attribute ref="xml:space"/>
+ <xs:attribute ref="xml:id"/>
+ </xs:attributeGroup>
+
+</xs:schema>
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/org/w3c/css/properties/Config.properties b/mocca-1.2.11/BKUViewer/src/main/resources/org/w3c/css/properties/Config.properties
new file mode 100644
index 00000000..0ece8cda
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/org/w3c/css/properties/Config.properties
@@ -0,0 +1,32 @@
+# configuration file for org.w3c.css.parser.CssFouffa
+# Properties should be in the style directory
+
+# Is the parser should run in CSS2 ?
+extended-parser: true
+
+# the CssStyle to use
+#style for CSS1
+css1: org.w3c.css.properties.css1.Css1Style
+#style for CSS2 (and mobile profile and TV profile)
+css2: org.w3c.css.properties.css2.font.Css2Style
+#style for CSS2.1
+css21: org.w3c.css.properties.css21.Css21Style
+#style for CSS3
+css3: org.w3c.css.properties.css3.Css3Style
+#SVG styles
+svg : org.w3c.css.properties.svg.SVGStyle
+svgbasic : org.w3c.css.properties.svg.SVGBasicStyle
+svgtiny : org.w3c.css.properties.svg.SVGTinyStyle
+#ATSC style
+atsc-tv: org.w3c.css.properties.atsc.ATSCStyle
+#SLXHMTL
+slxhtml: at.gv.egiz.bku.slxhtml.css.SLXHTMLStyle
+
+#media
+media: Media.properties
+
+# file containing the properties files for each profile
+profilesProperties: ProfilesProperties.properties
+
+#default profile
+defaultProfile: css21
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/org/w3c/css/properties/ProfilesProperties.properties b/mocca-1.2.11/BKUViewer/src/main/resources/org/w3c/css/properties/ProfilesProperties.properties
new file mode 100644
index 00000000..8c2aded8
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/org/w3c/css/properties/ProfilesProperties.properties
@@ -0,0 +1,30 @@
+# The list of properties to use
+
+# properties for CSS1
+css1 : CSS1Properties.properties
+
+# properties for CSS2
+css2 : CSS2Properties.properties
+
+# properties for CSS2.1
+css21 : CSS21Properties.properties
+
+# properties for CSS3
+css3 : CSS3Properties.properties
+
+# properties for mobile profile
+mobile : MobileProperties.properties
+
+# properties for ATSC TV profile
+atsc-tv : ATSCProperties.properties
+
+# properties for TV profile
+tv : TVProperties.properties
+
+# properties for SVG profiles
+svg : SVGProperties.properties
+svgbasic : SVGBasicProperties.properties
+svgtiny : SVGTinyProperties.properties
+
+# properties for SLXHTML profile
+slxhtml : SLXHTMLProperties.properties
diff --git a/mocca-1.2.11/BKUViewer/src/main/resources/org/w3c/css/properties/SLXHTMLProperties.properties b/mocca-1.2.11/BKUViewer/src/main/resources/org/w3c/css/properties/SLXHTMLProperties.properties
new file mode 100644
index 00000000..dec68c11
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/main/resources/org/w3c/css/properties/SLXHTMLProperties.properties
@@ -0,0 +1,641 @@
+# All properties for all media
+
+# CSS2 Properties
+
+# Margin spacing
+#
+# The margin-top, margin-bottom, margin-left and margin-right properties
+# must be supported by a Citizen Card Environment. Values specified as percentages
+# (cf. section 3.5.1.2) should be supported.
+#
+# The margin property may be supported by a Citizen Card Environment.
+#
+# An instance document must not contain a negative value in the properties mentioned
+# above. Otherwise it must be rejected by the Citizen Card Environment.
+
+margin-top: at.gv.egiz.bku.slxhtml.css.CssMarginTopSLXHTML
+margin-bottom: at.gv.egiz.bku.slxhtml.css.CssMarginBottomSLXHTML
+margin-left: at.gv.egiz.bku.slxhtml.css.CssMarginLeftSLXHTML
+margin-right: at.gv.egiz.bku.slxhtml.css.CssMarginRightSLXHTML
+margin: at.gv.egiz.bku.slxhtml.css.CssMarginSLXHTML
+
+# Padding spacing
+#
+# The padding-top, padding-bottom, padding-left and padding-right properties must be
+# supported by a Citizen Card Environment. Values specified as percentages (cf. section
+# 3.5.1.2) should be supported.
+#
+# The padding property may be supported by a Citizen Card Environment.
+#
+# An instance document must not contain a negative value in the properties
+# mentioned above. Otherwise it must be rejected by the Citizen Card Environment.
+
+padding-top: at.gv.egiz.bku.slxhtml.css.CssPaddingTopSLXHTML
+padding-bottom: at.gv.egiz.bku.slxhtml.css.CssPaddingBottomSLXHTML
+padding-left: at.gv.egiz.bku.slxhtml.css.CssPaddingLeftSLXHTML
+padding-right: at.gv.egiz.bku.slxhtml.css.CssPaddingRightSLXHTML
+padding: at.gv.egiz.bku.slxhtml.css.CssPaddingSLXHTML
+
+#
+# Borders
+#
+
+# Border width
+#
+# The border-top-width, border-bottom-width, border-left-width, border-right-width
+# and border-width properties should be supported by a Citizen Card Environment. If
+# the properties are supported, the predefined values thin, medium and thick should
+# also be supported (cf. [CSS 2], section 8.5.1).
+
+border-top-width: org.w3c.css.properties.css1.CssBorderTopWidthCSS2
+border-right-width: org.w3c.css.properties.css1.CssBorderRightWidthCSS2
+border-left-width: org.w3c.css.properties.css1.CssBorderLeftWidthCSS2
+border-bottom-width: org.w3c.css.properties.css1.CssBorderBottomWidthCSS2
+
+# Border colour
+#
+# The border-top-color, border-bottom-color, border-left-color, border-right-color
+# and border-color properties should be supported by a Citizen Card Environment. The
+# predefined value transparent for the border-color property may be supported (cf.
+# [CSS 2], section 8.5.2).
+
+border-top-color: at.gv.egiz.bku.slxhtml.css.CssBorderTopColorSLXHTML
+border-right-color: at.gv.egiz.bku.slxhtml.css.CssBorderRightColorSLXHTML
+border-left-color: at.gv.egiz.bku.slxhtml.css.CssBorderLeftColorSLXHTML
+border-bottom-color: at.gv.egiz.bku.slxhtml.css.CssBorderBottomColorSLXHTML
+
+# Border style
+#
+# The border-top-style, border-bottom-style, border-left-style, border-right-style and
+# border-style properties should be supported by a Citizen Card Environment. If the properties
+# are supported, the predefined values none, dashed, dotted, solid and double should also
+# be supported; all other values may be supported (cf. [CSS 2], section 8.5.3).
+
+border-top-style: org.w3c.css.properties.css1.CssBorderTopStyleCSS2
+border-right-style: org.w3c.css.properties.css1.CssBorderRightStyleCSS2
+border-left-style: org.w3c.css.properties.css1.CssBorderLeftStyleCSS2
+border-bottom-style: org.w3c.css.properties.css1.CssBorderBottomStyleCSS2
+
+# Shorthand
+#
+# The properties for the shorthand version of the border properties (border-top,
+# border-bottom, border-left, border-right and border (cf. [CSS 2], section 8.5.4)
+# should be supported by a Citizen Card Environment. The recommended values result
+# from the three previous sections.
+
+border-width: org.w3c.css.properties.css1.CssBorderWidthCSS2
+border-color: at.gv.egiz.bku.slxhtml.css.CssBorderColorSLXHTML
+border-style: org.w3c.css.properties.css1.CssBorderStyleCSS2
+border-top: org.w3c.css.properties.css1.CssBorderTopCSS2
+border-right: org.w3c.css.properties.css1.CssBorderRightCSS2
+border-left: org.w3c.css.properties.css1.CssBorderLeftCSS2
+border-bottom: org.w3c.css.properties.css1.CssBorderBottomCSS2
+border: at.gv.egiz.bku.slxhtml.css.CssBorderSLXHTML
+
+#
+# Positioning of boxes
+#
+
+# Box type
+#
+# The property for controlling the box type (display) may be supported by a Citizen
+# Card Environment (cf. [CSS 2], section 9.2).
+
+display: org.w3c.css.properties.css1.CssDisplayCSS2
+
+# Positioning scheme
+#
+# The property for defining the positioning scheme for a box (position, cf. [CSS 2],
+# section 9.3) must not be contained in an instance document to prevent content
+# from overlapping. Otherwise the instance document must be rejected by the Citizen
+# Card Environment.
+
+#! position: org.w3c.css.properties.css1.CssPosition
+
+# Box spacing
+#
+# The property for defining the positioning scheme for a box (top, bottom, left, right;
+# cf. [CSS 2], section 9.3) must not be contained in an instance document to prevent
+# content from overlapping. Otherwise the instance document must be rejected by the
+# Citizen Card Environment.
+
+#! top: org.w3c.css.properties.css1.CssTop
+#! right: org.w3c.css.properties.css1.CssRight
+#! left: org.w3c.css.properties.css1.CssLeft
+#! bottom: org.w3c.css.properties.css1.CssBottom
+
+# Flow around boxes
+#
+# The properties for defining the flow around boxes (float, clear) may be supported by
+# a Citizen Card Environment (cf. [CSS 2], section 9.5).
+
+float: org.w3c.css.properties.css1.CssFloat
+clear: org.w3c.css.properties.css1.CssClear
+
+# Positioning of boxes on the z-axis
+#
+# The property for defining the positioning of boxes on the z-axis (z-index, cf. [CSS 2],
+# section 9.9) must not be contained in an instance document to prevent content from
+# overlapping. Otherwise the instance document must be rejected by the Citizen Card Environment.
+
+#! z-index: org.w3c.css.properties.css1.CssZIndex
+
+# Text direction
+#
+# The properties for controlling the text direction (direction, unicode-bidi) may be
+# supported by a Citizen Card Environment (cf. [CSS 2], section 9.10).
+
+direction: org.w3c.css.properties.css1.CssDirection
+unicode-bidi: org.w3c.css.properties.css1.CssUnicodeBidi
+
+#
+# Displaying boxes
+#
+
+# Width and height
+#
+# The properties for specifying the width and height of a box (width, height, cf. [CSS 2],
+# sections 10.2 and 10.5) must not be supported by a Citizen Card Environment to prevent
+# content from overlapping. Otherwise the instance document must be rejected by the
+# Citizen Card Environment.
+#
+# The properties for specifying the minimum width and height of a box (min-width, min-height)
+# may be supported by a Citizen Card Environment (cf. [CSS 2], sections 10.4 and 10.7).
+#
+# The properties for specifying the maximum width and height of a box (max-width, max-height,
+# cf. [CSS 2], sections 10.4 and 10.7) must not be supported by a Citizen Card Environment
+# to prevent content from overlapping. Otherwise the instance document must be rejected by
+# the Citizen Card Environment.
+
+#! width: org.w3c.css.properties.css1.CssWidth
+min-width: org.w3c.css.properties.css1.CssMinWidth
+#! max-width: org.w3c.css.properties.css1.CssMaxWidth
+min-height: org.w3c.css.properties.css1.CssMinHeight
+#! max-height: org.w3c.css.properties.css1.CssMaxHeight
+#! height: org.w3c.css.properties.css1.CssHeight
+
+# Line height
+#
+# The properties for specifying the line height (line-height, vertical-align) should be
+# supported by a Citizen Card (cf. [CSS 2], section 10.8). The only exception is the
+# vertical-align property: In this case a Citizen Card Environment must be able to interpret
+# the values sub and super.
+
+line-height: org.w3c.css.properties.css1.CssLineHeightCSS2
+vertical-align: org.w3c.css.properties.css1.CssVerticalAlign
+
+#
+# Visible area in boxes
+#
+
+# The property for specifying the visibility of a box (visibility) may be supported by a
+# Citizen Card Environment (cf. [CSS 2], section 11).
+#
+# The properties for controlling the visible area of a box (overflow, clip; cf. [CSS 2],
+# section 11) must not be contained in an instance document to prevent hidden content. Otherwise
+# the instance document must be rejected by the Citizen Card Environment.
+
+#! overflow: org.w3c.css.properties.css1.CssOverflow
+#! clip: org.w3c.css.properties.css1.CssClip
+visibility: org.w3c.css.properties.css1.CssVisibility
+
+#
+# Generated content, numbering, lists
+#
+
+# Generated content
+#
+# The property for generating content (content) may be supported by a Citizen Card Environment
+# (cf. [CSS 2], section 12.2).
+
+content: org.w3c.css.properties.css1.CssContentCSS2
+
+# Displaying quotation marks
+#
+# The property for displaying quotation marks (quotes) may be supported by a Citizen Card
+# Environment (cf. [CSS 2], section 12.3).
+
+quotes: org.w3c.css.properties.css1.CssQuotes
+
+# Numbering
+#
+# The properties for automatic numbering (counter-reset, counter-increment) may be supported
+# by a Citizen Card Environment (cf. [CSS 2], section 12.5).
+
+counter-reset: org.w3c.css.properties.css1.CssCounterReset
+counter-increment: org.w3c.css.properties.css1.CssCounterIncrement
+
+#
+# Markers and lists
+#
+
+# Marker spacing
+#
+# The property for defining the space between a marker and the associated box
+# (marker-offset) may be supported by a Citizen Card Environment (cf. [CSS 2],
+# section 12.6.1).
+
+marker-offset: org.w3c.css.properties.css1.CssMarkerOffset
+
+# List symbols
+#
+# For the property for selecting the list symbol (list-style-type) a Citizen
+# Card Environment must support the values none, disc, circle, square, decimal,
+# decimal-leading-zero, lower-roman, upper-roman, lower-alpha, lower-latin,
+# upper-alpha and upper-latin. The other values may be supported (cf. [CSS 2],
+# section 12.6.2).
+
+list-style-type: org.w3c.css.properties.css1.CssListStyleTypeCSS2
+
+# Position of the list symbol
+#
+# The property for positioning the list symbol in relation to the associated box
+# (list-style-position) should be supported by a Citizen Card Environment (cf. [CSS 2],
+# section 12.6.2).
+
+list-style-position: org.w3c.css.properties.css1.CssListStylePositionCSS2
+
+# Image as a list symbol
+#
+# The property for selecting an image as a list symbol (list-style-image) may be supported
+# by a Citizen Card Environment (cf. [CSS 2], section 12.6.2). If the Citizen Card Environment
+# supports this property, then it must proceed in respect of the integration of the image
+# in the signature as described in section 2.1.7.
+
+# optional, not supported:
+#! list-style-image: org.w3c.css.properties.css1.CssListStyleImageCSS2
+
+# Shorthand
+#
+# The property for the shorthand version of the list properties (list-style) should be supported
+# by a Citizen Card Environment. The recommended values result from the explanations for the
+# list-style-type, list-style-position and list-style-image properties above (cf. [CSS 2],
+# section 12.6.2).
+
+list-style: org.w3c.css.properties.css1.CssListStyleCSS2
+
+# Page-based media
+#
+# The properties for page-based media may be supported by a Citizen Card Environment (size, marks,
+# page-break-before, page-break-inside, page-break-after, page, orphans and widows (cf. [CSS 2],
+# section 13).
+
+page-break-before: org.w3c.css.properties.paged.PageBreakBefore
+page-break-after: org.w3c.css.properties.paged.PageBreakAfter
+page-break-inside: org.w3c.css.properties.paged.PageBreakInside
+page: org.w3c.css.properties.paged.Page
+orphans: org.w3c.css.properties.paged.Orphans
+widows: org.w3c.css.properties.paged.Widows
+
+@page.size: org.w3c.css.properties.paged.Size
+@page.marks: org.w3c.css.properties.paged.Marks
+@page.page-break-before: org.w3c.css.properties.paged.PageBreakBefore
+@page.page-break-after: org.w3c.css.properties.paged.PageBreakAfter
+@page.page-break-inside: org.w3c.css.properties.paged.PageBreakInside
+@page.page: org.w3c.css.properties.paged.Page
+@page.orphans: org.w3c.css.properties.paged.Orphans
+@page.widows: org.w3c.css.properties.paged.Widows
+
+
+#
+# Colours and background
+#
+
+# A Citizen Card Environment must support all the options for specifying a colour listed in [CSS 2],
+# section 4.3.6 for a CSS property, if such an option is available for this property according to [CSS 2].
+#
+# The exceptions are the system colours (cf. [CSS 2], section 18.2); these must not be used in an
+# instance document so as to prevent dependencies on the system environment. Otherwise the instance
+# document must be rejected by the Citizen Card Environment.
+
+# Colour
+
+# The property for defining the foreground colour of the content of an element (color) must be
+# supported by a Citizen Card Environment (cf. [CSS 2], section 14.1).
+
+color: at.gv.egiz.bku.slxhtml.css.CssColorSLXHTML
+
+# Background
+#
+# The property for defining the background colour of the content of an element (background-color)
+# must be supported by a Citizen Card Environment (cf. [CSS 2], section 14.2.1).
+#
+# The properties for selecting and controlling an image as background (background-image, background-repeat,
+# background-position, background-attachment; cf. [CSS 2], section 14.2.1) must not be contained in an
+# instance document to prevent content from overlapping. Otherwise the instance document must be
+# rejected by the Citizen Card Environment.
+
+# The property for the shorthand version of the background properties (background) should be supported
+# by a Citizen Card Environment. The recommended values result from the explanations for the background-color
+# property above (cf. [CSS 2], section 14.2.1). If the property contains values for selecting and controlling
+# an image as background, the instance document must be rejected by the Citizen Card Environment.
+
+background-color: at.gv.egiz.bku.slxhtml.css.CssBackgroundColorSLXHTML
+#! background-image: org.w3c.css.properties.css1.CssBackgroundImageCSS2
+#! background-repeat: org.w3c.css.properties.css1.CssBackgroundRepeatCSS2
+#! background-attachment: org.w3c.css.properties.css1.CssBackgroundAttachmentCSS2
+#! background-position: org.w3c.css.properties.css1.CssBackgroundPositionCSS2
+background: at.gv.egiz.bku.slxhtml.css.CssBackgroundSLXHTML
+
+#
+# Fonts
+#
+#
+# For the property for selecting a font family (font-family), a Citizen Card Environment must
+# support the predefined values serif, sans-serif and monospaced for the general font families.
+# All other values may be supported by a Citizen Card Environment (cf. [CSS 2], section 15.2.2).
+#
+# If a preferred font family is specified in the instance document that cannot be displayed by the
+# Citizen Card Environment, then the Citizen Card Environment may still display the instance
+# document if another displayable font family has been specified as an alternative. For example,
+# if the specification in the instance document is font-family: "Times New Roman", serif, then the
+# Citizen Card Environment may display the instance document in the secure viewer even if it does
+# not know the Times New Roman font family (as it must always support serif).
+
+font-family: org.w3c.css.properties.css1.CssFontFamilyCSS2
+
+# Font style
+#
+# The properties for defining the font style (font-style) and font weight (font-weight)
+# must be supported by a Citizen Card Environment. The values normal and italic must be supported,
+# while the value oblique should be supported.
+#
+# The property for defining the font variant (font-variant) should be supported by a Citizen Card
+# Environment, while the property for defining the font stretch (font-stretch) may be supported
+# by a Citizen Card Environment (cf. [CSS 2], section 15.2.3).
+
+font-style: org.w3c.css.properties.css1.CssFontStyleCSS2
+font-weight: org.w3c.css.properties.css1.CssFontWeightCSS2
+font-variant: org.w3c.css.properties.css1.CssFontVariantCSS2
+font-stretch: org.w3c.css.properties.css1.CssFontStretchCSS2
+
+# Font size
+#
+# The property for specifying the font size (font-size) must be supported by a Citizen
+# Card Environment. The property for specifying the stretch ratio (font-size-adjust) may
+# be supported by a Citizen Card Environment (cf. [CSS 2], section 15.2.4).
+
+font-size: org.w3c.css.properties.css1.CssFontSizeCSS2
+font-size-adjust: org.w3c.css.properties.css1.CssFontSizeAdjustCSS2
+
+# Shorthand
+#
+# The property for the shorthand version of the font properties (font) should be supported by
+# a Citizen Card Environment (cf. [CSS 2], section 15.2.5). The recommended values result from
+# the explanations above for the font-style, font-variant, font-weight, font-size and font-family
+# properties and the explanations for the line-height property in section 3.5.4.2.
+#
+# The additional, predefined values relating to the system fonts used (caption, icon, etc.) must
+# not be contained in an instance document so as to prevent dependencies on the system environment.
+# Otherwise the instance document must be rejected by the Citizen Card Environment.
+
+font: at.gv.egiz.bku.slxhtml.css.CssFontSLXHTML
+
+#
+# Displaying text
+#
+
+# Non-displayable characters
+#
+# If the text of an instance document contains a character that cannot be displayed by the
+# Citizen Card Environment, then the instance document must be rejected by the Citizen Card
+# Environment. The character must not be represented by a placeholder.
+
+# FIXME: How to implement?!
+
+# Indent
+#
+# The property for indenting the first line of a text block (text-indent) should be supported
+# by a Citizen Card Environment (cf. [CSS 2], section 16.1).
+
+text-indent: org.w3c.css.properties.css1.CssTextIndent
+
+# Alignment
+#
+# For the property for aligning the content of a text block (text-align) a Citizen Card Environment
+# must support the values left, right and center. The value justified should be supported,
+# while the specification of a string value may be supported (cf. [CSS 2], section 16.2).
+
+text-align: org.w3c.css.properties.css1.CssTextAlign
+
+# Text decoration
+#
+# For the property for decorating a text (text-decoration; cf. [CSS 2], section 16.3.1) a
+# Citizen Card Environment must support the values none, underline and line-through.
+#
+# The value blink must not be contained in an instance document. Otherwise the instance
+# document must be rejected by the Citizen Card Environment.
+#
+# The other values may be supported by a Citizen Card Environment.
+
+text-decoration: at.gv.egiz.bku.slxhtml.css.CssTextDecorationSLXHTML
+
+# Shadows
+#
+# The property for specifying a text shadow (text-shadow) may be supported by a Citizen Card
+# Environment (cf. [CSS 2], section 16.3.2).
+
+text-shadow: org.w3c.css.properties.css1.CssTextShadow
+
+# Word and letter spacing
+#
+# The word-spacing and letter-spacing should be supported by a Citizen Card Environment
+# (cf. [CSS 2], section 16.4).
+#
+# An instance document must not contain negative values in order to prevent content from
+# overlapping. Otherwise the instance document must be rejected by the Citizen Card Environment.
+
+word-spacing: at.gv.egiz.bku.slxhtml.css.CssWordSpacingSLXHTML
+letter-spacing: at.gv.egiz.bku.slxhtml.css.CssLetterSpacingSLXHTML
+
+# Capitalisation
+#
+# The property for specifying the capitalisation of the text of an element (text-transform)
+# may be supported by a Citizen Card Environment (cf. [CSS 2], section 16.5).
+
+text-transform: org.w3c.css.properties.css1.CssTextTransform
+
+# White space
+#
+# The property for the handling of white space within the text of an element (white-space) should
+# be supported by a Citizen Card Environment (cf. [CSS 2], section 16.6).
+
+white-space: org.w3c.css.properties.css1.CssWhiteSpace
+
+#
+# Tables
+#
+
+# Position of caption
+#
+# A Citizen Card Environment should support the top and bottom properties for the property for
+# specifying the position when labelling a table (caption-side); the properties left and right
+# may be supported (cf. [CSS 2], section 17.4.1).
+
+caption-side: org.w3c.css.properties.css2.table.CaptionSide
+
+# Layout algorithm
+#
+# The property for defining the layout algorithm for a table (table-layout) may be supported by
+# a Citizen Card Environment (cf. [CSS 2], section 17.5.2).
+#
+# However, the fixed value must not be supported because the layout algorithm selected with it can
+# cause content to overlap.
+#
+# In general, the viewer component of the Citizen Card Environment must use a layout algorithm for a
+# table that does not generate an overflow, in other words with which the content of every table
+# element can be rendered so that it does not extend beyond the confines of the table element.
+# There is an example of such an algorithm in [CSS 2], section 17.5.2, subsection Automatic table layout.
+
+table-layout: at.gv.egiz.bku.slxhtml.css.TableLayoutSLXHTML
+row-span: org.w3c.css.properties.css2.table.RowSpan
+column-span: org.w3c.css.properties.css2.table.ColumnSpan
+
+# Borders
+#
+# The properties for displaying borders in tables (border-collapse, border-spacing, empty-cells) may
+# be supported by a Citizen Card Environment (cf. [CSS 2], section 17.6).
+
+border-collapse: org.w3c.css.properties.css2.table.BorderCollapse
+border-spacing: org.w3c.css.properties.css2.table.BorderSpacing
+empty-cells: org.w3c.css.properties.css2.table.EmptyCells
+
+# Voice output
+#
+# The property for controlling the voice output of the column headers in a table (speak-header) may
+# be supported by a Citizen Card Environment (cf. [CSS 2], section 17.7.1).
+
+speak-header: org.w3c.css.properties.css2.table.SpeakHeader
+
+#
+# User interface
+#
+
+# Cursor format
+#
+# The property for controlling the cursor format (cursor; cf. [CSS 2], section 18.1) must not be
+# contained in an instance document. Otherwise the instance document must be rejected by the Citizen
+# Card Environment.
+
+#! cursor: org.w3c.css.properties.css2.user.CursorCSS2
+
+# Contours
+#
+# The properties for defining element contours (outline-width, outline-style, outline-color and
+# outline; cf. [CSS 2], section 18.4) must not be contained in an instance document. Otherwise the
+# instance document must be rejected by the Citizen Card Environment.
+
+#! outline: org.w3c.css.properties.css2.user.Outline
+#! outline-width: org.w3c.css.properties.css2.user.OutlineWidth
+#! outline-style: org.w3c.css.properties.css2.user.OutlineStyle
+#! outline-color: org.w3c.css.properties.css2.user.OutlineColor
+
+#
+# Aural Properties
+#
+# The properties for the voice output of a document (cf. [CSS 2], section 19) may be supported
+# by a Citizen Card Environment.
+
+volume: org.w3c.css.properties.aural.ACssVolume
+pause-before: org.w3c.css.properties.aural.ACssPauseBefore
+pause-after: org.w3c.css.properties.aural.ACssPauseAfter
+pause: org.w3c.css.properties.aural.ACssPause
+cue-before: org.w3c.css.properties.aural.ACssCueBefore
+cue-after: org.w3c.css.properties.aural.ACssCueAfter
+cue: org.w3c.css.properties.aural.ACssCue
+play-during: org.w3c.css.properties.aural.ACssPlayDuring
+voice-family: org.w3c.css.properties.aural.ACssVoiceFamily
+elevation: org.w3c.css.properties.aural.ACssElevation
+speech-rate: org.w3c.css.properties.aural.ACssSpeechRate
+pitch: org.w3c.css.properties.aural.ACssPitch
+pitch-range: org.w3c.css.properties.aural.ACssPitchRange
+stress: org.w3c.css.properties.aural.ACssStress
+richness: org.w3c.css.properties.aural.ACssRichness
+speak-punctuation: org.w3c.css.properties.aural.ACssSpeakPunctuation
+speak-date: org.w3c.css.properties.aural.ACssSpeakDate
+speak-numeral: org.w3c.css.properties.aural.ACssSpeakNumeral
+speak-time: org.w3c.css.properties.aural.ACssSpeakTime
+speak: org.w3c.css.properties.aural.ACssSpeak
+azimuth: org.w3c.css.properties.aural.ACssAzimuth
+
+#
+# @page
+#
+# The @page rule for defining the page properties for page-based output media may be
+# supported by a Citizen Card Environment (cf. [CSS 2], section 13, and section 3.5.7
+# of this document).
+#
+
+@page.margin-top: org.w3c.css.properties.css1.CssMarginTop
+@page.margin-bottom: org.w3c.css.properties.css1.CssMarginBottom
+@page.margin-left: org.w3c.css.properties.css1.CssMarginLeft
+@page.margin-right: org.w3c.css.properties.css1.CssMarginRight
+@page.margin: org.w3c.css.properties.css1.CssMargin
+@page.padding-top: org.w3c.css.properties.css1.CssPaddingTop
+@page.padding-bottom: org.w3c.css.properties.css1.CssPaddingBottom
+@page.padding-left: org.w3c.css.properties.css1.CssPaddingLeft
+@page.padding-right: org.w3c.css.properties.css1.CssPaddingRight
+@page.padding: org.w3c.css.properties.css1.CssPadding
+@page.border-top-width: org.w3c.css.properties.css1.CssBorderTopWidthCSS2
+@page.border-right-width: org.w3c.css.properties.css1.CssBorderRightWidthCSS2
+@page.border-left-width: org.w3c.css.properties.css1.CssBorderLeftWidthCSS2
+@page.border-bottom-width: org.w3c.css.properties.css1.CssBorderBottomWidthCSS2
+@page.border-top-color: org.w3c.css.properties.css1.CssBorderTopColorCSS2
+@page.border-right-color: org.w3c.css.properties.css1.CssBorderRightColorCSS2
+@page.border-left-color: org.w3c.css.properties.css1.CssBorderLeftColorCSS2
+@page.border-bottom-color: org.w3c.css.properties.css1.CssBorderBottomColorCSS2
+@page.border-top-style: org.w3c.css.properties.css1.CssBorderTopStyleCSS2
+@page.border-right-style: org.w3c.css.properties.css1.CssBorderRightStyleCSS2
+@page.border-left-style: org.w3c.css.properties.css1.CssBorderLeftStyleCSS2
+@page.border-bottom-style: org.w3c.css.properties.css1.CssBorderBottomStyleCSS2
+@page.border-width: org.w3c.css.properties.css1.CssBorderWidthCSS2
+@page.border-color: org.w3c.css.properties.css1.CssBorderColorCSS2
+@page.border-style: org.w3c.css.properties.css1.CssBorderStyleCSS2
+@page.border-top: org.w3c.css.properties.css1.CssBorderTopCSS2
+@page.border-right: org.w3c.css.properties.css1.CssBorderRightCSS2
+@page.border-left: org.w3c.css.properties.css1.CssBorderLeftCSS2
+@page.border-bottom: org.w3c.css.properties.css1.CssBorderBottomCSS2
+@page.border: org.w3c.css.properties.css1.CssBorderCSS2
+@page.display: org.w3c.css.properties.css1.CssDisplayCSS2
+@page.position: org.w3c.css.properties.css1.CssPosition
+@page.z-index: org.w3c.css.properties.css1.CssZIndex
+@page.direction: org.w3c.css.properties.css1.CssDirection
+@page.unicode-bidi: org.w3c.css.properties.css1.CssUnicodeBidi
+@page.top: org.w3c.css.properties.css1.CssTop
+@page.right: org.w3c.css.properties.css1.CssRight
+@page.left: org.w3c.css.properties.css1.CssLeft
+@page.bottom: org.w3c.css.properties.css1.CssBottom
+@page.float: org.w3c.css.properties.css1.CssFloat
+@page.clear: org.w3c.css.properties.css1.CssClear
+
+#
+# @font-face
+#
+# The @font-face rule for describing or referencing additional font families (cf. [CSS 2],
+# section 15.3) must not be used in an instance document. The viewer component of the Citizen
+# Card Environment must reject an instance document containing a @font-face rule.
+
+#! @font-face.font-style: org.w3c.css.properties.css2.font.FontStyle
+#! @font-face.font-variant: org.w3c.css.properties.css2.font.FontVariant
+#! @font-face.font-weight: org.w3c.css.properties.css2.font.FontWeight
+#! @font-face.font-size: org.w3c.css.properties.css2.font.FontSize
+#! @font-face.font-family: org.w3c.css.properties.css2.font.FontFamily
+#! @font-face.font-stretch: org.w3c.css.properties.css2.font.FontStretch
+#! @font-face.unicode-range: org.w3c.css.properties.css2.font.UnicodeRange
+#! @font-face.units-per-em: org.w3c.css.properties.css2.font.UnitsPerEm
+#! @font-face.src: org.w3c.css.properties.css2.font.Src
+#! @font-face.panose-1: org.w3c.css.properties.css2.font.Panose1
+#! @font-face.stemv: org.w3c.css.properties.css2.font.Stemv
+#! @font-face.stemh: org.w3c.css.properties.css2.font.Stemh
+#! @font-face.slope: org.w3c.css.properties.css2.font.Slope
+#! @font-face.cap-height: org.w3c.css.properties.css2.font.CapHeight
+#! @font-face.x-hegiht: org.w3c.css.properties.css2.font.XHeight
+#! @font-face.widths: org.w3c.css.properties.css2.font.Widths
+#! @font-face.ascent: org.w3c.css.properties.css2.font.Ascent
+#! @font-face.descent: org.w3c.css.properties.css2.font.Descent
+#! @font-face.bbox: org.w3c.css.properties.css2.font.Bbox
+#! @font-face.baseline: org.w3c.css.properties.css2.font.Baseline
+#! @font-face.centerline: org.w3c.css.properties.css2.font.Centerline
+#! @font-face.definition-src: org.w3c.css.properties.css2.font.DefinitionSrc
+#! @font-face.mathline: org.w3c.css.properties.css2.font.Mathline
+#! @font-face.topline: org.w3c.css.properties.css2.font.Topline
diff --git a/mocca-1.2.11/BKUViewer/src/test/java/at/gv/egiz/bku/slxhtml/ValidatorTest.java b/mocca-1.2.11/BKUViewer/src/test/java/at/gv/egiz/bku/slxhtml/ValidatorTest.java
new file mode 100644
index 00000000..c5b54a56
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/test/java/at/gv/egiz/bku/slxhtml/ValidatorTest.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.slxhtml;
+
+import static org.junit.Assert.assertNotNull;
+
+import java.io.InputStream;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import at.gv.egiz.bku.viewer.ValidationException;
+import at.gv.egiz.bku.viewer.Validator;
+import at.gv.egiz.bku.viewer.ValidatorFactory;
+
+//@Ignore
+public class ValidatorTest {
+
+ private static Log log = LogFactory.getLog(ValidatorTest.class);
+
+ @Test
+ public void testGetInstance() {
+
+ Validator validator = ValidatorFactory.newValidator("application/xhtml+xml");
+
+ assertNotNull(validator);
+
+ }
+
+ @Test
+ public void testValidate() throws ValidationException {
+
+ String slxhtmlFile = "at/gv/egiz/bku/slxhtml/zugang.xhtml";
+
+ Validator validator = ValidatorFactory.newValidator("application/xhtml+xml");
+
+ ClassLoader cl = ValidatorTest.class.getClassLoader();
+ InputStream slxhtml = cl.getResourceAsStream(slxhtmlFile);
+ long t0 = System.currentTimeMillis();
+ try {
+ validator.validate(slxhtml, null);
+ } catch (ValidationException e) {
+ e.printStackTrace();
+ throw e;
+ }
+ long t1 = System.currentTimeMillis();
+ log.info("Validated SLXHTML file '" + slxhtmlFile + "' in " + (t1 - t0) + "ms.");
+
+ }
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/test/java/at/gv/egiz/bku/slxhtml/css/CssValidatorTest.java b/mocca-1.2.11/BKUViewer/src/test/java/at/gv/egiz/bku/slxhtml/css/CssValidatorTest.java
new file mode 100644
index 00000000..2b4740f9
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/test/java/at/gv/egiz/bku/slxhtml/css/CssValidatorTest.java
@@ -0,0 +1,75 @@
+/*
+* 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.slxhtml.css;
+
+import static org.junit.Assert.*;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.Locale;
+import java.util.Properties;
+import java.util.Set;
+
+import org.junit.Test;
+
+import at.gv.egiz.bku.viewer.ValidationException;
+
+public class CssValidatorTest {
+
+ @Test
+ public void testProperties() throws IOException {
+
+ ClassLoader cs = CssValidatorTest.class.getClassLoader();
+ InputStream is = cs.getResourceAsStream("org/w3c/css/properties/SLXHTMLProperties.properties");
+
+ assertNotNull(is);
+
+ Properties cssProperties = new Properties();
+ cssProperties.load(is);
+
+ Set<String> names = cssProperties.stringPropertyNames();
+ for (String name : names) {
+ String className = cssProperties.getProperty(name);
+ try {
+ Class.forName(className);
+ } catch (ClassNotFoundException e) {
+ fail("Implementation class '" + className + "' for property '" + name + "' not found.");
+ }
+
+ }
+
+ }
+
+ @Test(expected=ValidationException.class)
+ public void testValidator() throws UnsupportedEncodingException, ValidationException {
+
+ String css = "@charset \"ABCDEFG\";\n" +
+ " @import url(http://test.abc/test); * { color: black }";
+ ByteArrayInputStream input = new ByteArrayInputStream(css.getBytes("UTF-8"));
+
+ CSSValidatorSLXHTML validator = new CSSValidatorSLXHTML();
+
+ Locale locale = new Locale("de");
+
+ validator.validate(input, locale, "Test", 10);
+
+ }
+
+
+}
diff --git a/mocca-1.2.11/BKUViewer/src/test/java/at/gv/egiz/bku/text/TestTextValidator.java b/mocca-1.2.11/BKUViewer/src/test/java/at/gv/egiz/bku/text/TestTextValidator.java
new file mode 100644
index 00000000..8db459e7
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/test/java/at/gv/egiz/bku/text/TestTextValidator.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.text;
+
+import static org.junit.Assert.*;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.UnsupportedEncodingException;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+import at.gv.egiz.bku.viewer.ValidationException;
+import at.gv.egiz.bku.viewer.Validator;
+import at.gv.egiz.bku.viewer.ValidatorFactory;
+
+public class TestTextValidator {
+
+ public static byte[] generateText(String encoding) throws UnsupportedEncodingException {
+
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ PrintWriter writer = new PrintWriter(new OutputStreamWriter(bos, encoding));
+
+ writer.write("C0 Controls and Basic Latin 0x0009-0x000A");
+ writer.write("\n");
+ for (char c = '\t'; c <= '\n'; c++) {
+ writer.write(c);
+ }
+ writer.write("\n");
+ // errata: don't include FORM FEED (0x000C)
+ writer.write("C0 Controls and Basic Latin 0x000D");
+ writer.write("\n");
+
+// for (char c = '\f'; c <= '\r'; c++) {
+// writer.write(c);
+// }
+
+ writer.write("\r");
+ writer.write("\n");
+ writer.write("C0 Controls and Basic Latin 0x0020-0x007E");
+ writer.write("\n");
+ for (char c = '\u0020'; c <= '\u007E'; c++) {
+ writer.write(c);
+ }
+ writer.write("\n");
+ writer.write("C1 Controls and Latin-1 Supplement 0x00A1-0x00FF");
+ writer.write("\n");
+ for (char c = '\u00A1'; c <= '\u00FF'; c++) {
+ writer.write(c);
+ }
+ writer.write("\n");
+ writer.write("Latin Extended-A 0x0100-0x017F");
+ writer.write("\n");
+ for (char c = '\u0100'; c <= '\u017F'; c++) {
+ writer.write(c);
+ }
+ writer.write("\n");
+ writer.write("Spacing Modifier Letters 0x02C7");
+ writer.write("\n");
+ writer.write("\u02C7");
+ writer.write("\n");
+ writer.write("Spacing Modifier Letters 0x02D8");
+ writer.write("\n");
+ writer.write("\u02D8");
+ writer.write("\n");
+ writer.write("Spacing Modifier Letters 0x02D9");
+ writer.write("\n");
+ writer.write("\u02D9");
+ writer.write("\n");
+ writer.write("Spacing Modifier Letters 0x02DB");
+ writer.write("\n");
+ writer.write("\u02DB");
+ writer.write("\n");
+ writer.write("Spacing Modifier Letters 0x02DD");
+ writer.write("\n");
+ writer.write("\u02DD");
+ writer.write("\n");
+ writer.write("General Punctuation 0x2015");
+ writer.write("\n");
+ writer.write("\u2015");
+ writer.write("\n");
+ writer.write("Currency Symbols 0x20AC");
+ writer.write("\n");
+ writer.write("\u20AC");
+ writer.flush();
+
+ return bos.toByteArray();
+
+ }
+
+ public void testTextValidation(String encoding) throws ValidationException, UnsupportedEncodingException {
+
+ Validator validator = ValidatorFactory.newValidator("text/plain");
+
+ assertNotNull(validator);
+
+ InputStream is = new ByteArrayInputStream(generateText(encoding));
+
+ assertNotNull(is);
+
+ validator.validate(is, encoding);
+
+ }
+
+ @Test
+ public void testUTF8() throws ValidationException, UnsupportedEncodingException {
+ testTextValidation("UTF-8");
+ }
+
+ @Test
+ public void testISO8859_1() throws ValidationException, UnsupportedEncodingException {
+ testTextValidation("ISO-8859-1");
+ }
+
+ @Test
+ public void testISO8859_2() throws ValidationException, UnsupportedEncodingException {
+ testTextValidation("ISO-8859-2");
+ }
+
+ @Test
+ public void testISO8859_3() throws ValidationException, UnsupportedEncodingException {
+ testTextValidation("ISO-8859-3");
+ }
+
+ @Test
+ public void testISO8859_9() throws ValidationException, UnsupportedEncodingException {
+ testTextValidation("ISO-8859-9");
+ }
+
+ @Ignore
+ @Test
+ public void testISO8859_10() throws ValidationException, UnsupportedEncodingException {
+ testTextValidation("ISO-8859-10");
+ }
+
+ @Test
+ public void testISO8859_15() throws ValidationException, UnsupportedEncodingException {
+ testTextValidation("ISO-8859-15");
+ }
+
+ @Test
+ public void testPerformance() throws UnsupportedEncodingException, ValidationException {
+ Validator validator = ValidatorFactory.newValidator("text/plain");
+
+ assertNotNull(validator);
+
+ //!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÃÂÃÄÅÆÇÈÉÊËÌÃÃŽÃÃÑÒÓÔÕÖ×ØÙÚÛÜÃÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿΎÎÎΑΒΓΔΕΖΗΘΙΚΛΜÎΞΟΠΡΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπÏςστυφχψωϊϋόÏÏŽÏϑϒϓϔϕϖϗϘϙϚϛϜÏϞϟϠϡЀÐЂЃЄЅІЇЈЉЊЋЌÐÐŽÐÐБВГДЕЖЗИЙКЛМÐОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑÑёђѓєѕіїјљњћќÑўџÒÒ‘Ò’Ò“Ò”Ò•Ò–Ò—Ò˜Ò™ÒšÒ›Ò°Ò±Ò²Ò³Ó€ÓÓ‚ÓƒÓ„ÓÓ‘Ó’Ó“Ó”Ó•Ó–Ó—Ó˜Ó™ÓšÓ›ÓœÓÓžÓŸÓ Ó¡Ó¢Ó£Ó¤Ó¥Ó¦Ó§Ó¨Ó©ÓªÓ«Ó¬Ó­Ó®Ó¯Ó°Ó±Ó²Ó³Ó´ÓµÓ¶Ó·Ó¸Ó¹
+
+ StringBuilder data = new StringBuilder();
+ //LATIN
+ for (int i = 0x0021; i <= 0x007e; i++) {
+ data.append((char) i);
+ }
+ //LATIN supplement
+ for (int i = 0x00A1; i <= 0x00FF; i++) {
+ data.append((char) i);
+ }
+ //GREEK
+ for (int i = 0x038e; i <= 0x03a1; i++) {
+ data.append((char) i);
+ }
+ for (int i = 0x03a3; i <= 0x03ce; i++) {
+ data.append((char) i);
+ }
+ for (int i = 0x03d0; i <= 0x03e1; i++) {
+ data.append((char) i);
+ }
+ //CYRILLIC
+ for (int i = 0x0400; i <= 0x045f; i++) {
+ data.append((char) i);
+ }
+ for (int i = 0x0490; i <= 0x049b; i++) {
+ data.append((char) i);
+ }
+ for (int i = 0x04b0; i <= 0x04b3; i++) {
+ data.append((char) i);
+ }
+ for (int i = 0x04c0; i <= 0x04c4; i++) {
+ data.append((char) i);
+ }
+ for (int i = 0x04d0; i <= 0x04f9; i++) {
+ data.append((char) i);
+ }
+
+ StringBuilder aLotOfData = new StringBuilder();
+ for (int i = 0; i < 1000; i++) {
+ aLotOfData.append('\n');
+ aLotOfData.append(data);
+ }
+ String aLotOfText = aLotOfData.toString();
+ System.out.println("validating " + aLotOfText.length() + " weird characters: " + aLotOfText);
+
+ InputStream is = new ByteArrayInputStream(aLotOfText.getBytes("UTF-8"));
+
+ assertNotNull(is);
+
+ validator.validate(is, "UTF-8");
+
+ }
+}
diff --git a/mocca-1.2.11/BKUViewer/src/test/resources/at/gv/egiz/bku/slxhtml/test.xhtml b/mocca-1.2.11/BKUViewer/src/test/resources/at/gv/egiz/bku/slxhtml/test.xhtml
new file mode 100644
index 00000000..cbd29551
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/test/resources/at/gv/egiz/bku/slxhtml/test.xhtml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xhtml:html xmlns:xhtml="http://www.w3.org/1999/xhtml">
+ <xhtml:head>
+ <xhtml:title>Ein einfaches SLXHTML-Dokument</xhtml:title>
+ <xhtml:style type="text/css">@font-face { color: red }; p { color: red; }</xhtml:style>
+ </xhtml:head>
+ <xhtml:body>
+ <xhtml:p>Ich bin ein einfacher Text in rot.</xhtml:p>
+ </xhtml:body>
+</xhtml:html>
diff --git a/mocca-1.2.11/BKUViewer/src/test/resources/at/gv/egiz/bku/slxhtml/zugang.xhtml b/mocca-1.2.11/BKUViewer/src/test/resources/at/gv/egiz/bku/slxhtml/zugang.xhtml
new file mode 100644
index 00000000..9284d9cf
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/src/test/resources/at/gv/egiz/bku/slxhtml/zugang.xhtml
@@ -0,0 +1,17 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Signatur der Anmeldedaten</title>
+ <style media="screen" type="text/css">.boldstyle { font-weight: bold; } .italicstyle { font-style: italic; } .annotationstyle { font-size: small; }</style>
+ </head>
+ <body>
+ <h1>Signatur der Anmeldedaten</h1>
+ <p></p>
+ <h4>Mit meiner elektronischen Signatur beantrage ich, <span class="boldstyle">Horst Rotzstopper</span>, geboren am 12.12.1985, den Zugang zur gesicherten Anwendung.</h4>
+ <p></p>
+ <h4>Datum und Uhrzeit: 07.11.2008, 14:04:18</h4>
+ <h4>wbPK(*): LTpz8VYzns2jrx0J8Gm/R/nAhxA=</h4>
+ <p></p>
+ <hr></hr>
+ <div class="annotationstyle">(*) wbPK: Das <span class="italicstyle">wirtschaftsbereichsspezifische Personenkennzeichen</span> wird aus den jeweiligen Stammzahlen des Bürgers und des Wirtschaftsunternehmens berechnet und ermöglicht eine eindeutige Zuordnung des Bürgers zum Wirtschaftsunternehmen.</div>
+ </body>
+</html> \ No newline at end of file
diff --git a/mocca-1.2.11/BKUViewer/src/test/resources/commons-logging.properties b/mocca-1.2.11/BKUViewer/src/test/resources/commons-logging.properties
new file mode 100644
index 00000000..29292562
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/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/BKUViewer/src/test/resources/log4j.properties b/mocca-1.2.11/BKUViewer/src/test/resources/log4j.properties
new file mode 100644
index 00000000..053eac17
--- /dev/null
+++ b/mocca-1.2.11/BKUViewer/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/BKUWebStart/pom.xml b/mocca-1.2.11/BKUWebStart/pom.xml
new file mode 100644
index 00000000..02e65f53
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/pom.xml
@@ -0,0 +1,301 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUWebStart</artifactId>
+ <packaging>jar</packaging>
+ <name>BKU Web Start</name>
+ <version>1.2.11</version>
+ <url>http://mocca.egovlabs.gv.at/</url>
+ <description>Bürgerkartenumgebung</description>
+
+ <build>
+ <plugins>
+
+ <!-- Include the BKULocal war artifact in the BKUWebStart jar
+ | BKULauncher resolves resource and copies it to jetty's webapp dir
+ |
+ | don't: overlay BKULocal with maven-war-plugin
+ | don't: unpack BKULocal dependency (jetty and webstart classloaders interfere) -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-resources</id>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <configuration>
+ <includeArtifactIds>BKULocal</includeArtifactIds>
+ <includeGroupIds>at.gv.egiz</includeGroupIds>
+ <excludes>META-INF/</excludes>
+ <outputDirectory>${project.build.directory}/classes</outputDirectory>
+ <stripVersion>true</stripVersion>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-buildnumber-plugin</artifactId>
+ <groupId>org.codehaus.mojo</groupId>
+ <executions>
+ <execution>
+ <phase>validate</phase>
+ <goals>
+ <goal>create</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <doCheck>false</doCheck>
+ <doUpdate>false</doUpdate>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <configuration>
+ <archive>
+ <manifest>
+ <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
+ </manifest>
+ <manifestEntries>
+ <Implementation-Build>${project.version}-r${buildNumber}</Implementation-Build>
+ </manifestEntries>
+ </archive>
+ <verbose>true</verbose>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <artifactId>webstart-maven-plugin</artifactId>
+ <groupId>org.codehaus.mojo.webstart</groupId>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>jnlp-inline</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <excludeTransitive>false</excludeTransitive>
+ <jnlp>
+ <inputTemplateResourcePath>${project.basedir}/src/main/jnlp</inputTemplateResourcePath>
+ <inputTemplate>template-unstable.xml</inputTemplate>
+ <outputFile>mocca.jnlp</outputFile>
+ <mainClass>at.gv.egiz.bku.webstart.Launcher</mainClass>
+ </jnlp>
+ <sign>
+ <alias>test-applet signer</alias>
+ <keystore>${project.basedir}/src/main/jnlp/keystore.ks</keystore>
+ <storepass>storepass</storepass>
+ <keypass>keypass</keypass>
+ <verify>true</verify>
+ <keystoreConfig>
+ <delete>false</delete>
+ <gen>false</gen>
+ </keystoreConfig>
+ </sign>
+ <pack200>false</pack200>
+ <gzip>false</gzip>
+ <outputJarVersions>false</outputJarVersions>
+ <unsignAlreadySignedJars>true</unsignAlreadySignedJars>
+ <verbose>true</verbose>
+ </configuration>
+ </plugin>
+
+ </plugins>
+ </build>
+
+ <profiles>
+ <profile>
+ <!-- development profile -->
+ <id>local-webstart</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>webstart-maven-plugin</artifactId>
+ <groupId>org.codehaus.mojo.webstart</groupId>
+ <configuration>
+ <jnlp>
+ <inputTemplate>template-local.xml</inputTemplate>
+ <outputFile>mocca-local.jnlp</outputFile>
+ </jnlp>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
+ <profile>
+ <id>pkcs11-sign</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>webstart-maven-plugin</artifactId>
+ <groupId>org.codehaus.mojo.webstart</groupId>
+ <!-- use pkcs11-patched webstart-maven-plugin-->
+ <version>1.0-beta-1-mocca</version>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>jnlp-inline</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <excludeTransitive>false</excludeTransitive>
+ <jnlp>
+ <inputTemplateResourcePath>${project.basedir}/src/main/jnlp</inputTemplateResourcePath>
+ <inputTemplate>template.xml</inputTemplate>
+ <outputFile>mocca.jnlp</outputFile>
+ <mainClass>at.gv.egiz.bku.webstart.Launcher</mainClass>
+ </jnlp>
+ <sign>
+ <keystore>NONE</keystore>
+ <storetype>PKCS11</storetype>
+ <providerClass>iaik.pkcs.pkcs11.provider.IAIKPkcs11</providerClass>
+ <alias>a-sit</alias>
+ <storepass>${pkcs11-pass}</storepass>
+ <verify>true</verify>
+ <keystoreConfig>
+ <delete>false</delete>
+ <gen>false</gen>
+ </keystoreConfig>
+ </sign>
+ <pack200>false</pack200>
+ <gzip>false</gzip>
+ <outputJarVersions>false</outputJarVersions>
+ <unsignAlreadySignedJars>true</unsignAlreadySignedJars>
+ <verbose>true</verbose>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
+ <profile>
+ <id>non-webstart</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <configuration>
+ <archive>
+ <manifest>
+ <addClasspath>true</addClasspath>
+ <mainClass>at.gv.egiz.bku.webstart.Launcher</mainClass>
+ </manifest>
+ <manifestEntries>
+ <mode>development</mode>
+ <url>${pom.url}</url>
+ <SplashScreen-Image>at/gv/egiz/bku/webstart/splash.png</SplashScreen-Image>
+ </manifestEntries>
+ </archive>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <!-- TODO somehow provide javaws.jar on manifest class-path -->
+ </profile>
+ </profiles>
+
+ <dependencies>
+ <!-- ATTENTION update of application descriptor (jnlp file) is special...
+ | The JNLP Client must use the Last-Modified header field returned by
+ | the Web Server to determine if a newer JNLP file is present on the Web
+ | server.
+ | Don't assume changes to the descriptor (changes in dependencies) to
+ | appear directly on the client descriptor (even if 'update available'
+ | was shown to user).
+ | Note: Download via browser ensures the updated jnlp file is used. -->
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKULocal</artifactId>
+ <version>${project.version}</version>
+ <type>war</type>
+ <!-- make dependency not transitive -->
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUCertificates</artifactId>
+ <version>1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_jce_full_signed</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <!--
+ <dependency>
+ <artifactId>utils</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.7-SNAPSHOT</version>
+ <exclusions>
+ <exclusion>
+ <artifactId>iaik_ecc_signed</artifactId>
+ <groupId>iaik</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
+ -->
+
+ <!-- Jetty 6.1.15+ required, see
+ | http://jira.codehaus.org/browse/JETTY-843
+ |-->
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jetty</artifactId>
+ <version>6.1.19</version>
+ </dependency>
+ <!-- JSP support
+ | http://jira.codehaus.org/browse/JETTY-827
+ | jsp-2.1-jetty-6.1.19 depends on the required jsp-2.1-glassfish jars (?)
+ |
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jsp-2.1-jetty</artifactId>
+ <version>6.1.19</version>
+ </dependency-->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>1.5.8</version>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>1.5.8</version>
+ </dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <scope>compile</scope>
+ </dependency>
+
+ <!-- javax.jnlp.* -->
+ <dependency>
+ <groupId>jre</groupId>
+ <artifactId>javaws</artifactId>
+ <version>6.0</version>
+ <type>jar</type>
+ <scope>system</scope>
+ <systemPath>${java.home}/lib/javaws.jar</systemPath>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Configurator.java b/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Configurator.java
new file mode 100644
index 00000000..37638510
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Configurator.java
@@ -0,0 +1,440 @@
+/*
+ * 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.webstart;
+
+import iaik.asn1.CodingException;
+import iaik.utils.StreamCopier;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.URI;
+import java.net.URL;
+import java.security.GeneralSecurityException;
+import java.security.KeyStore;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.UUID;
+import java.util.jar.Attributes;
+import java.util.jar.Manifest;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+import java.util.zip.ZipOutputStream;
+
+import org.apache.log4j.PropertyConfigurator;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class Configurator {
+
+ /**
+ * MOCCA configuration
+ * configurations with less than this (major) version will be backuped and updated
+ * allowed: MAJOR[.MINOR[.X[-SNAPSHOT]]]
+ */
+ public static final String MIN_CONFIG_VERSION = "1.2.11-SNAPSHOT";
+ public static final String CONFIG_DIR = ".mocca/conf/";
+ public static final String CERTS_DIR = ".mocca/certs/";
+ public static final String VERSION_FILE = ".version";
+ public static final String UNKOWN_VERSION = "unknown";
+ public static final String CONF_TEMPLATE_FILE = "conf-tmp.zip";
+ public static final String CONF_TEMPLATE_RESOURCE = "at/gv/egiz/bku/webstart/conf/conf.zip";
+ public static final String CERTIFICATES_PKG = "at/gv/egiz/bku/certs";
+
+ /**
+ * MOCCA TLS certificate
+ */
+ public static final String KEYSTORE_FILE = "keystore.ks";
+ public static final String PASSWD_FILE = ".secret";
+
+ private static final Logger log = LoggerFactory.getLogger(Configurator.class);
+
+ /** currently installed configuration version */
+ private String version;
+ private String certsVersion;
+ /** whether a new MOCCA TLS cert was created during initialization */
+ private boolean certRenewed = false;
+
+ /**
+ * Checks whether the config directory already exists and creates it otherwise.
+ * @param configDir the config directory to be created
+ * @throws IOException config/certificate creation failed
+ * @throws GeneralSecurityException if MOCCA TLS certificate could not be created
+ * @throws CodingException if MOCCA TLS certificate could not be created
+ */
+ public void ensureConfiguration() throws IOException, CodingException, GeneralSecurityException {
+ File configDir = new File(System.getProperty("user.home") + '/' + CONFIG_DIR);
+ if (configDir.exists()) {
+ if (configDir.isFile()) {
+ log.error("invalid config directory: " + configDir);
+ throw new IOException("invalid config directory: " + configDir);
+ } else {
+ version = readVersion(new File(configDir, VERSION_FILE));
+ if (log.isDebugEnabled()) {
+ log.debug("config directory " + configDir + ", version " + version);
+ }
+ if (updateRequired(version, MIN_CONFIG_VERSION)) {
+ File moccaDir = configDir.getParentFile();
+ File zipFile = new File(moccaDir, "conf-" + version + ".zip");
+ ZipOutputStream zipOS = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile)));
+ log.info("backup configuration to " + zipFile);
+ backupAndDelete(configDir, moccaDir.toURI(), zipOS);
+ zipOS.close();
+ initConfig(configDir);
+ }
+ }
+ } else {
+ initConfig(configDir);
+ }
+ // re-configure logging
+ // TODO: move to appropriate place
+ String log4jconfig = configDir.getPath() + File.separatorChar + "log4j.properties";
+ log.debug("Reconfiguring logging with " + log4jconfig);
+ PropertyConfigurator.configureAndWatch(log4jconfig);
+ }
+
+ /**
+ * To be replaced by TSLs in IAIK-PKI
+ * @throws IOException
+ */
+ public void ensureCertificates() throws IOException {
+ File certsDir = new File(System.getProperty("user.home") + '/' + CERTS_DIR);
+ if (certsDir.exists()) {
+ if (certsDir.isFile()) {
+ log.error("invalid certificate store directory: " + certsDir);
+ throw new IOException("invalid config directory: " + certsDir);
+ } else {
+ certsVersion = readVersion(new File(certsDir, VERSION_FILE));
+ if (log.isDebugEnabled()) {
+ log.debug("certificate-store directory " + certsDir + ", version " + certsVersion);
+ }
+ String newCertsVersion = getCertificatesVersion();
+ if (updateRequired(certsVersion, newCertsVersion)) {
+ File moccaDir = certsDir.getParentFile();
+ File zipFile = new File(moccaDir, "certs-" + certsVersion + ".zip");
+ ZipOutputStream zipOS = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile)));
+ log.info("backup certificates to " + zipFile);
+ backupAndDelete(certsDir, moccaDir.toURI(), zipOS);
+ zipOS.close();
+
+ createCerts(certsDir, newCertsVersion);
+ certsVersion = newCertsVersion;
+ }
+ }
+ } else {
+ String newCertsVersion = getCertificatesVersion();
+ createCerts(certsDir, newCertsVersion);
+ certsVersion = newCertsVersion;
+ }
+ }
+
+ /**
+ *
+ * @return whether a new MOCCA TLS certificate has been created during initialization
+ */
+ public boolean isCertRenewed() {
+ return certRenewed;
+ }
+
+ /**
+ * @return The first valid (not empty, no comment) line of the version file or
+ * "unknown" if version file cannot be read or does not contain such a line.
+ */
+ protected static String readVersion(File versionFile) {
+ if (versionFile.exists() && versionFile.canRead()) {
+ BufferedReader versionReader = null;
+ try {
+ versionReader = new BufferedReader(new FileReader(versionFile));
+ String version;
+ while ((version = versionReader.readLine().trim()) != null) {
+ if (version.length() > 0 && !version.startsWith("#")) {
+ log.trace("configuration version from " + versionFile + ": " + version);
+ return version;
+ }
+ }
+ } catch (IOException ex) {
+ log.error("failed to read configuration version from " + versionFile, ex);
+ } finally {
+ try {
+ versionReader.close();
+ } catch (IOException ex) {
+ }
+ }
+ }
+ log.debug("unknown configuration version");
+ return UNKOWN_VERSION;
+ }
+
+ /**
+ * Temporary workaround, replace with TSLs in IAIK-PKI.
+ * Retrieves version from BKUCertificates.jar Manifest file.
+ * The (remote) resource URL will be handled by the JNLP loader,
+ * and the resource retrieved from the cache.
+ *
+ * @return
+ * @throws IOException
+ */
+ private static String getCertificatesVersion() throws IOException {
+ String certsResourceVersion = null;
+ URL certsURL = Configurator.class.getClassLoader().getResource(CERTIFICATES_PKG);
+ if (certsURL != null) {
+ StringBuilder url = new StringBuilder(certsURL.toExternalForm());
+ url = url.replace(url.length() - CERTIFICATES_PKG.length(), url.length(), "META-INF/MANIFEST.MF");
+ log.trace("retrieve certificates resource version from " + url);
+ certsURL = new URL(url.toString());
+ Manifest certsManifest = new Manifest(certsURL.openStream());
+ Attributes atts = certsManifest.getMainAttributes();
+ if (atts != null) {
+ certsResourceVersion = atts.getValue("Implementation-Version");
+ log.debug("certs resource version: " + certsResourceVersion);
+ }
+ } else {
+ log.error("Failed to retrieve certificates resource " + CERTIFICATES_PKG);
+ throw new IOException("Failed to retrieve certificates resource " + CERTIFICATES_PKG);
+ }
+ return certsResourceVersion;
+ }
+
+ /**
+ * if unknown old, update in any case
+ * if known old and unknown min, don't update
+ * @param oldVersion
+ * @param minVersion
+ * @return
+ */
+ protected static boolean updateRequired(String oldVersion, String minVersion) {
+ log.debug("comparing " + oldVersion + " to " + minVersion);
+ if (oldVersion != null && !UNKOWN_VERSION.equals(oldVersion)) {
+ if (minVersion != null && !UNKOWN_VERSION.equals(minVersion)) {
+ int fromInd = 0;
+ int nextIndOld, nextIndMin;
+ int xOld, xMin;
+
+ // assume dots '.' appear in major version only (not after "-SNAPSHOT")
+ while ((nextIndOld = oldVersion.indexOf('.', fromInd)) > 0) {
+ nextIndMin = minVersion.indexOf('.', fromInd);
+ if (nextIndMin < 0) {
+ log.debug("installed version newer than minimum required (newer minor version)");
+ }
+ xOld = Integer.valueOf(oldVersion.substring(fromInd, nextIndOld));
+ xMin = Integer.valueOf(minVersion.substring(fromInd, nextIndMin));
+ if (xMin > xOld) {
+ log.debug("update required");
+ return true;
+ } else if (xMin < xOld) {
+ log.debug("installed version newer than minimum required");
+ return false;
+ }
+ fromInd = nextIndOld + 1;
+ }
+
+ // compare last digit of major
+ boolean preRelease = true;
+ int majorEndOld = oldVersion.indexOf("-SNAPSHOT");
+ if (majorEndOld < 0) {
+ preRelease = false;
+ majorEndOld = oldVersion.indexOf('-'); // 1.0.10-r439
+ if (majorEndOld < 0) {
+ majorEndOld = oldVersion.length();
+ }
+ }
+
+ boolean releaseRequired = false;
+ int majorEndMin = minVersion.indexOf("-SNAPSHOT");
+ if (majorEndMin < 0) {
+ releaseRequired = true;
+ majorEndMin = minVersion.indexOf('-');
+ if (majorEndMin < 0) {
+ majorEndMin = minVersion.length();
+ }
+ }
+
+ xOld = Integer.valueOf(oldVersion.substring(fromInd, majorEndOld));
+ boolean hasMoreDigitsMin = true;
+ nextIndMin = minVersion.indexOf('.', fromInd);
+ if (nextIndMin < 0) {
+ hasMoreDigitsMin = false;
+ nextIndMin = majorEndMin;
+ }
+ xMin = Integer.valueOf(minVersion.substring(fromInd, nextIndMin));
+ if (xMin > xOld) {
+ log.debug("update required");
+ return true;
+ } else if (xMin < xOld) {
+ log.debug("installed version newer than minimum required");
+ return false;
+ } else if (hasMoreDigitsMin) { // xMin == xOld
+ log.debug("update required (newer minor version required)");
+ return true;
+ } else if (preRelease && releaseRequired) {
+ log.debug("pre-release installed but release required");
+ return true;
+ } else {
+ log.debug("exact match, no updated required");
+ return false;
+ }
+ }
+ log.debug("unknown minimum version, do not update");
+ return false;
+ }
+ log.debug("no old version, update required");
+ return true;
+ }
+
+ protected static void backupAndDelete(File dir, URI relativeTo, ZipOutputStream zip) throws IOException {
+ if (dir.isDirectory()) {
+ File[] subDirs = dir.listFiles();
+ for (File subDir : subDirs) {
+ backupAndDelete(subDir, relativeTo, zip);
+ subDir.delete();
+ }
+ } else {
+ URI relativePath = relativeTo.relativize(dir.toURI());
+ ZipEntry entry = new ZipEntry(relativePath.toString());
+ zip.putNextEntry(entry);
+ BufferedInputStream entryIS = new BufferedInputStream(new FileInputStream(dir));
+ new StreamCopier(entryIS, zip).copyStream();
+ entryIS.close();
+ zip.closeEntry();
+ dir.delete();
+ }
+ }
+
+ /**
+ * set up a new MOCCA local configuration
+ * (not to be called directly, call ensureConfiguration())
+ * @throws IOException config/certificate creation failed
+ * @throws GeneralSecurityException if MOCCA TLS certificate could not be created
+ * @throws CodingException if MOCCA TLS certificate could not be created
+ */
+ protected void initConfig(File configDir) throws IOException, GeneralSecurityException, CodingException {
+ createConfig(configDir, Launcher.version);
+ version = Launcher.version;
+ createKeyStore(configDir);
+ certRenewed = true;
+ }
+
+ private static void createConfig(File configDir, String version) throws IOException {
+ if (log.isDebugEnabled()) {
+ log.debug("creating configuration version " + Launcher.version + " in " + configDir);
+ }
+ configDir.mkdirs();
+ File confTemplateFile = new File(configDir, CONF_TEMPLATE_FILE);
+ InputStream is = Configurator.class.getClassLoader().getResourceAsStream(CONF_TEMPLATE_RESOURCE);
+ OutputStream os = new BufferedOutputStream(new FileOutputStream(confTemplateFile));
+ new StreamCopier(is, os).copyStream();
+ os.close();
+ unzip(confTemplateFile, configDir);
+ confTemplateFile.delete();
+ writeVersionFile(new File(configDir, VERSION_FILE), version);
+ }
+
+ /**
+ * set up a new MOCCA local certStore
+ * @throws IOException config/certificate creation failed
+ * @throws GeneralSecurityException if MOCCA TLS certificate could not be created
+ * @throws CodingException if MOCCA TLS certificate could not be created
+ */
+ private static void createCerts(File certsDir, String certsVersion) throws IOException {
+ if (log.isDebugEnabled()) {
+ log.debug("creating certificate-store " + certsDir + ", version " + certsVersion);
+ }
+ URL certsURL = Configurator.class.getClassLoader().getResource(CERTIFICATES_PKG);
+ if (certsURL != null) {
+ StringBuilder url = new StringBuilder(certsURL.toExternalForm());
+ url = url.replace(url.length() - CERTIFICATES_PKG.length(), url.length(), "META-INF/MANIFEST.MF");
+ log.trace("retrieve certificate resource names from " + url);
+ certsURL = new URL(url.toString());
+ Manifest certsManifest = new Manifest(certsURL.openStream());
+ certsDir.mkdirs();
+ Iterator<String> entries = certsManifest.getEntries().keySet().iterator();
+ while (entries.hasNext()) {
+ String entry = entries.next();
+ if (entry.startsWith(CERTIFICATES_PKG)) {
+ String f = entry.substring(CERTIFICATES_PKG.length()); // "/trustStore/..."
+ new File(certsDir, f.substring(0, f.lastIndexOf('/'))).mkdirs();
+ BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(certsDir, f)));
+ log.debug(f);
+ new StreamCopier(Configurator.class.getClassLoader().getResourceAsStream(entry), bos).copyStream();
+ bos.close();
+ } else {
+ log.trace("ignore " + entry);
+ }
+ }
+ writeVersionFile(new File(certsDir, VERSION_FILE), certsVersion);
+ } else {
+ log.error("Failed to retrieve certificates resource " + CERTIFICATES_PKG);
+ throw new IOException("Failed to retrieve certificates resource " + CERTIFICATES_PKG);
+ }
+ }
+
+ private static void unzip(File zipfile, File toDir) throws IOException {
+ ZipFile zipFile = new ZipFile(zipfile);
+ Enumeration<? extends ZipEntry> entries = zipFile.entries();
+ while (entries.hasMoreElements()) {
+ ZipEntry entry = entries.nextElement();
+ File eF = new File(toDir, entry.getName());
+ if (entry.isDirectory()) {
+ eF.mkdirs();
+ continue;
+ }
+ File f = new File(eF.getParent());
+ f.mkdirs();
+ new StreamCopier(zipFile.getInputStream(entry),
+ new FileOutputStream(eF)).copyStream();
+ }
+ zipFile.close();
+ }
+
+ private static void writeVersionFile(File versionFile, String version) throws IOException {
+ BufferedWriter versionWriter = new BufferedWriter(new FileWriter(versionFile));
+ versionWriter.write("# MOCCA Web Start configuration version\n");
+ versionWriter.write("# DO NOT MODIFY THIS FILE\n\n");
+ versionWriter.write(version);
+ versionWriter.close();
+ }
+
+ private static void createKeyStore(File configDir) throws IOException, GeneralSecurityException, CodingException {
+ char[] password = UUID.randomUUID().toString().toCharArray();
+ File passwdFile = new File(configDir, PASSWD_FILE);
+ FileWriter passwdWriter = new FileWriter(passwdFile);
+ passwdWriter.write(password);
+ passwdWriter.close();
+ if (!passwdFile.setReadable(false, false) || !passwdFile.setReadable(true, true)) {
+ log.error("failed to make " + passwdFile + " owner readable only (certain file-systems do not support owner's permissions)");
+ }
+ TLSServerCA ca = new TLSServerCA();
+ KeyStore ks = ca.generateKeyStore(password);
+ File ksFile = new File(configDir, KEYSTORE_FILE);
+ FileOutputStream fos = new FileOutputStream(ksFile);
+ ks.store(fos, password);
+ fos.close();
+ }
+}
diff --git a/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Container.java b/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Container.java
new file mode 100644
index 00000000..4d1fe658
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Container.java
@@ -0,0 +1,264 @@
+package at.gv.egiz.bku.webstart;
+
+import iaik.utils.StreamCopier;
+
+import java.awt.AWTPermission;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FilePermission;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.lang.reflect.ReflectPermission;
+import java.net.NetPermission;
+import java.net.SocketPermission;
+import java.security.AllPermission;
+import java.security.KeyStore;
+import java.security.Permissions;
+import java.security.SecurityPermission;
+import java.security.cert.Certificate;
+import java.util.PropertyPermission;
+import javax.smartcardio.CardPermission;
+import org.mortbay.jetty.Connector;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.nio.SelectChannelConnector;
+import org.mortbay.jetty.security.SslSocketConnector;
+import org.mortbay.jetty.webapp.WebAppContext;
+import org.mortbay.thread.QueuedThreadPool;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class Container {
+
+ public static final String HTTP_PORT_PROPERTY = "mocca.http.port";
+ public static final String HTTPS_PORT_PROPERTY = "mocca.http.port";
+ private static Logger log = LoggerFactory.getLogger(Container.class);
+
+ static {
+ if (log.isDebugEnabled()) {
+ //Jetty log INFO and WARN, include ignored exceptions
+ //jetty logging may be further restricted by setting level in log4j.properties
+ System.setProperty("VERBOSE", "true");
+ //do not set Jetty DEBUG logging, produces loads of output
+ //System.setProperty("DEBUG", "true");
+ }
+ }
+ private Server server;
+ private WebAppContext webapp;
+ private Certificate caCertificate;
+
+ public void init() throws IOException {
+// System.setProperty("DEBUG", "true");
+ server = new Server();
+ QueuedThreadPool qtp = new QueuedThreadPool();
+ qtp.setMaxThreads(5);
+ qtp.setMinThreads(2);
+ qtp.setLowThreads(0);
+ server.setThreadPool(qtp);
+ server.setStopAtShutdown(true);
+ server.setGracefulShutdown(3000);
+
+ SelectChannelConnector connector = new SelectChannelConnector();
+ connector.setPort(Integer.getInteger(HTTP_PORT_PROPERTY, 3495).intValue());
+ connector.setAcceptors(1);
+ connector.setConfidentialPort(Integer.getInteger(HTTPS_PORT_PROPERTY, 3496).intValue());
+ connector.setHost("127.0.0.1");
+
+ SslSocketConnector sslConnector = new SslSocketConnector();
+ sslConnector.setPort(Integer.getInteger(HTTPS_PORT_PROPERTY, 3496).intValue());
+ sslConnector.setAcceptors(1);
+ sslConnector.setHost("127.0.0.1");
+ File configDir = new File(System.getProperty("user.home") + "/" + Configurator.CONFIG_DIR);
+ File keystoreFile = new File(configDir, Configurator.KEYSTORE_FILE);
+ if (!keystoreFile.canRead()) {
+ log.error("MOCCA keystore file not readable: " + keystoreFile.getAbsolutePath());
+ throw new FileNotFoundException("MOCCA keystore file not readable: " + keystoreFile.getAbsolutePath());
+ }
+ log.debug("loading MOCCA keystore from " + keystoreFile.getAbsolutePath());
+ sslConnector.setKeystore(keystoreFile.getAbsolutePath());
+ String passwd = readPassword(new File(configDir, Configurator.PASSWD_FILE));
+ sslConnector.setPassword(passwd);
+ sslConnector.setKeyPassword(passwd);
+
+ //avoid jetty's ClassCastException: iaik.security.ecc.ecdsa.ECPublicKey cannot be cast to java.security.interfaces.ECPublicKey
+ String[] RFC4492CipherSuites = new String[]{
+ "TLS_ECDH_ECDSA_WITH_NULL_SHA",
+ "TLS_ECDH_ECDSA_WITH_RC4_128_SHA",
+ "TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA",
+ "TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA",
+ "TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA",
+ "TLS_ECDHE_ECDSA_WITH_NULL_SHA",
+ "TLS_ECDHE_ECDSA_WITH_RC4_128_SHA",
+ "TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA",
+ "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA",
+ "TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA",
+ "TLS_ECDH_RSA_WITH_NULL_SHA",
+ "TLS_ECDH_RSA_WITH_RC4_128_SHA",
+ "TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA",
+ "TLS_ECDH_RSA_WITH_AES_128_CBC_SHA",
+ "TLS_ECDH_RSA_WITH_AES_256_CBC_SHA",
+ "TLS_ECDHE_RSA_WITH_NULL_SHA",
+ "TLS_ECDHE_RSA_WITH_RC4_128_SHA",
+ "TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA",
+ "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
+ "TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA",
+ "TLS_ECDH_anon_WITH_NULL_SHA",
+ "TLS_ECDH_anon_WITH_RC4_128_SHA",
+ "TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA",
+ "TLS_ECDH_anon_WITH_AES_128_CBC_SHA",
+ "TLS_ECDH_anon_WITH_AES_256_CBC_SHA"
+ };
+
+ sslConnector.setExcludeCipherSuites(RFC4492CipherSuites);
+
+ server.setConnectors(new Connector[]{connector, sslConnector});
+
+ webapp = new WebAppContext();
+ webapp.setLogUrlOnStart(true);
+ webapp.setContextPath("/");
+ webapp.setExtractWAR(true);
+ webapp.setParentLoaderPriority(false);
+
+ webapp.setWar(copyWebapp(webapp.getTempDirectory()));
+ webapp.setPermissions(getPermissions(webapp.getTempDirectory()));
+
+ server.setHandler(webapp);
+ server.setGracefulShutdown(1000 * 3);
+
+ loadCACertificate(keystoreFile, passwd.toCharArray());
+ }
+
+ /**
+ * @return The first valid (not empty, no comment) line of the passwd file
+ * @throws IOException
+ */
+ protected static String readPassword(File passwdFile) throws IOException {
+ if (passwdFile.exists() && passwdFile.canRead()) {
+ BufferedReader passwdReader = null;
+ try {
+ passwdReader = new BufferedReader(new FileReader(passwdFile));
+ String passwd;
+ while ((passwd = passwdReader.readLine().trim()) != null) {
+ if (passwd.length() > 0 && !passwd.startsWith("#")) {
+ return passwd;
+ }
+ }
+ } catch (IOException ex) {
+ log.error("failed to read password from " + passwdFile, ex);
+ throw ex;
+ } finally {
+ try {
+ passwdReader.close();
+ } catch (IOException ex) {
+ }
+ }
+ }
+ throw new IOException(passwdFile + " not readable");
+ }
+
+ private String copyWebapp(File webappDir) throws IOException {
+ File webapp = new File(webappDir, "BKULocal.war");
+ log.debug("copying BKULocal classpath resource to " + webapp);
+ InputStream is = getClass().getClassLoader().getResourceAsStream("BKULocal.war");
+ OutputStream os = new BufferedOutputStream(new FileOutputStream(webapp));
+ new StreamCopier(is, os).copyStream();
+ os.close();
+ return webapp.getPath();
+ }
+
+ private Permissions getPermissions(File webappDir) {
+ Permissions perms = new Permissions();
+ perms.add(new AllPermission());
+
+
+ if (false) {
+
+ // jetty-webstart (spring?)
+ perms.add(new RuntimePermission("getClassLoader"));
+
+ // standard permissions
+ perms.add(new PropertyPermission("*", "read,write"));
+ perms.add(new RuntimePermission("accessDeclaredMembers"));
+ perms.add(new RuntimePermission("accessClassInPackage.*"));
+ perms.add(new RuntimePermission("defineClassInPackage.*"));
+ perms.add(new RuntimePermission("setFactory"));
+ perms.add(new RuntimePermission("getProtectionDomain"));
+ perms.add(new RuntimePermission("modifyThread"));
+ perms.add(new RuntimePermission("modifyThreadGroup"));
+ perms.add(new RuntimePermission("setFactory"));
+ perms.add(new ReflectPermission("suppressAccessChecks"));
+
+ // MOCCA specific
+ perms.add(new SocketPermission("*", "connect,resolve"));
+ perms.add(new NetPermission("specifyStreamHandler"));
+ perms.add(new SecurityPermission("insertProvider.*"));
+ perms.add(new SecurityPermission("putProviderProperty.*"));
+ perms.add(new SecurityPermission("removeProvider.*"));
+ perms.add(new CardPermission("*", "*"));
+ perms.add(new AWTPermission("*"));
+
+ perms.add(new FilePermission(webappDir.getAbsolutePath() + "/-", "read"));
+ perms.add(new FilePermission(new File(System.getProperty("java.home") + "/lib/xalan.properties").getAbsolutePath(), "read"));
+ perms.add(new FilePermission(new File(System.getProperty("java.home") + "/lib/xerces.properties").getAbsolutePath(), "read"));
+ perms.add(new FilePermission(new File(System.getProperty("user.home")).getAbsolutePath(), "read, write"));
+ perms.add(new FilePermission(new File(System.getProperty("user.home") + "/-").getAbsolutePath(), "read, write"));
+ perms.add(new FilePermission(new File(System.getProperty("user.home") + "/.mocca/logs/*").getAbsolutePath(), "read, write,delete"));
+ perms.add(new FilePermission(new File(System.getProperty("user.home") + "/.mocca/certs/-").getAbsolutePath(), "read, write,delete"));
+
+ //TODO
+// log.trace("granting file read/write permission to MOCCA local");
+// perms.add(new FilePermission("<<ALL FILES>>", "read, write"));
+
+ }
+ return perms;
+ }
+
+ public void start() throws Exception {
+ server.start();
+ // webapp.getBaseResource()
+ File caCertFile = new File(webapp.getTempDirectory(), "webapp/ca.crt");
+ BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(caCertFile));
+ bos.write(caCertificate.getEncoded());
+ bos.flush();
+ bos.close();
+ }
+
+ public boolean isRunning() {
+ return server.isRunning();
+ }
+
+ public void stop() throws Exception {
+ server.stop();
+ }
+
+ public void destroy() {
+ server.destroy();
+ }
+
+ public void join() throws InterruptedException {
+ server.join();
+ }
+
+ private void loadCACertificate(File keystoreFile, char[] passwd) {
+ try {
+ if (log.isTraceEnabled()) {
+ log.trace("local ca certificate from " + keystoreFile);
+ }
+ BufferedInputStream bis = new BufferedInputStream(new FileInputStream(keystoreFile));
+ KeyStore sslKeyStore = KeyStore.getInstance("JKS");
+ sslKeyStore.load(bis, passwd);
+ Certificate[] sslChain = sslKeyStore.getCertificateChain(TLSServerCA.MOCCA_TLS_SERVER_ALIAS);
+ caCertificate = sslChain[sslChain.length - 1];
+ bis.close();
+ } catch (Exception ex) {
+ log.error("Failed to load local ca certificate", ex);
+ log.warn("automated web certificate installation will not be available");
+ }
+ }
+}
diff --git a/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Launcher.java b/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Launcher.java
new file mode 100644
index 00000000..ef7edef1
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/Launcher.java
@@ -0,0 +1,391 @@
+package at.gv.egiz.bku.webstart;
+
+import at.gv.egiz.bku.webstart.gui.AboutDialog;
+import at.gv.egiz.bku.webstart.gui.BKUControllerInterface;
+import at.gv.egiz.bku.webstart.gui.PINManagementInvoker;
+import iaik.asn1.CodingException;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import javax.jnlp.UnavailableServiceException;
+
+import com.sun.javaws.security.JavaWebStartSecurity;
+import java.awt.AWTException;
+import java.awt.Desktop;
+import java.awt.Image;
+import java.awt.MenuItem;
+import java.awt.PopupMenu;
+import java.awt.SplashScreen;
+import java.awt.SystemTray;
+import java.awt.TrayIcon;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.awt.event.WindowAdapter;
+import java.net.BindException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.security.GeneralSecurityException;
+import java.text.MessageFormat;
+import java.util.jar.Attributes;
+import java.util.jar.Manifest;
+import javax.imageio.ImageIO;
+import javax.jnlp.BasicService;
+import javax.jnlp.ServiceManager;
+import javax.swing.JFrame;
+import org.mortbay.util.MultiException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class Launcher implements BKUControllerInterface, ActionListener {
+ public static final String HELP_COMMAND = "help";
+
+ public static final String WEBAPP_RESOURCE = "BKULocal.war";
+ public static final String CERTIFICATES_RESOURCE = "BKUCertificates.jar";
+ public static final String WEBAPP_FILE = "BKULocal.war";
+ /** no leading slash for messages, but for image */
+ public static final String MESSAGES_RESOURCE = "at/gv/egiz/bku/webstart/messages";
+ public static final String TRAYICON_RESOURCE = "/at/gv/egiz/bku/webstart/chip";
+ /** resource bundle messages */
+ public static final String CAPTION_DEFAULT = "tray.caption.default";
+ public static final String CAPTION_ERROR = "tray.caption.error";
+ public static final String MESSAGE_START = "tray.message.start";
+ public static final String MESSAGE_START_OFFLINE = "tray.message.start.offline";
+ public static final String MESSAGE_CONFIG = "tray.message.config";
+ public static final String MESSAGE_CERTS = "tray.message.certs";
+ public static final String MESSAGE_FINISHED = "tray.message.finished";
+ public static final String MESSAGE_SHUTDOWN = "tray.message.shutdown";
+ public static final String ERROR_START = "tray.error.start";
+ public static final String ERROR_CONFIG = "tray.error.config";
+ public static final String ERROR_BIND = "tray.error.bind";
+ public static final String ERROR_PIN = "tray.error.pin.connect";
+ public static final String ERROR_OPEN_URL = "tray.error.open.url";
+ public static final String LABEL_SHUTDOWN = "tray.label.shutdown";
+ public static final String LABEL_PIN = "tray.label.pin";
+ public static final String LABEL_HELP = "tray.label.help";
+ public static final String LABEL_ABOUT = "tray.label.about";
+ public static final String TOOLTIP_DEFAULT = "tray.tooltip.default";
+
+ /** action commands for tray menu */
+ public static final String SHUTDOWN_COMMAND = "shutdown";
+ public static final String PIN_COMMAND = "pin";
+ public static final String ABOUT_COMMAND = "about";
+
+ private static Logger log = LoggerFactory.getLogger(Launcher.class);
+
+
+ /** local bku uri */
+ public static final URL HTTP_SECURITY_LAYER_URL;
+ public static final URL HTTPS_SECURITY_LAYER_URL;
+ public static final URL INSTALL_CERT_URL;
+ public static final URL PIN_MANAGEMENT_URL;
+ public static final URL HELP_URL;
+ static {
+ URL http = null;
+ URL https = null;
+ URL pin = null;
+ URL cert = null;
+ URL help = null;
+ try {
+ http = new URL("http://localhost:" + Integer.getInteger(Container.HTTPS_PORT_PROPERTY, 3495).intValue());
+ https = new URL("https://localhost:" + Integer.getInteger(Container.HTTPS_PORT_PROPERTY, 3496).intValue());
+ pin = new URL(http, "/PINManagement");
+ cert = new URL(http, "/installCertificate");
+ help = new URL(http, "/help");
+ } catch (MalformedURLException ex) {
+ log.error("Failed to create URL.", ex);
+ } finally {
+ HTTP_SECURITY_LAYER_URL = http;
+ HTTPS_SECURITY_LAYER_URL = https;
+ PIN_MANAGEMENT_URL = pin;
+ INSTALL_CERT_URL = cert;
+ HELP_URL = help;
+ }
+ }
+ public static final String version;
+ static {
+ String tmp = Configurator.UNKOWN_VERSION;
+ try {
+ String bkuWebStartJar = Launcher.class.getProtectionDomain().getCodeSource().getLocation().toString();
+ URL manifestURL = new URL("jar:" + bkuWebStartJar + "!/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.info("BKU Web Start " + version);
+ }
+ }
+ private Configurator config;
+ private Container server;
+ private BasicService basicService;
+ private TrayIcon trayIcon;
+ private ResourceBundle messages;
+ private AboutDialog aboutDialog;
+
+
+ public Launcher() {
+ log.info("Initializing Launcher");
+ if (log.isTraceEnabled()) {
+ SecurityManager sm = System.getSecurityManager();
+ if (sm instanceof JavaWebStartSecurity) {
+ System.setSecurityManager(new LogSecurityManager((JavaWebStartSecurity) sm));
+ }
+ }
+ messages = ResourceBundle.getBundle(MESSAGES_RESOURCE, Locale.getDefault());
+ trayIcon = initTrayIcon();
+ }
+
+ public void launch() throws Exception {
+ initStart();
+ try {
+ initConfig();
+ } catch (Exception ex) {
+ log.error("Failed to initialize configuration", ex);
+ trayIcon.displayMessage(messages.getString(CAPTION_ERROR),
+ messages.getString(ERROR_CONFIG), TrayIcon.MessageType.ERROR);
+ throw ex;
+ }
+ try {
+ startServer();
+ initFinished();
+ } catch (BindException ex) {
+ log.error("Failed to launch server, " + ex.getMessage(), ex);
+ trayIcon.displayMessage(messages.getString(CAPTION_ERROR),
+ messages.getString(ERROR_BIND), TrayIcon.MessageType.ERROR);
+ throw ex;
+ } catch (MultiException ex) {
+ log.error("Failed to launch server, " + ex.getMessage(), ex);
+ if (ex.getThrowable(0) instanceof BindException) {
+ trayIcon.displayMessage(messages.getString(CAPTION_ERROR),
+ messages.getString(ERROR_BIND), TrayIcon.MessageType.ERROR);
+ } else {
+ trayIcon.displayMessage(messages.getString(CAPTION_ERROR),
+ messages.getString(ERROR_START), TrayIcon.MessageType.ERROR);
+ }
+ throw ex;
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ log.error("Failed to launch server, " + ex.getMessage(), ex);
+ trayIcon.displayMessage(messages.getString(CAPTION_ERROR),
+ messages.getString(ERROR_START), TrayIcon.MessageType.ERROR);
+ throw ex;
+ }
+ }
+
+ private void browse(URL url) throws IOException, URISyntaxException {
+ // don't use basicService.showDocument(), which causes a java ssl warning dialog
+ if (Desktop.isDesktopSupported()) {
+ Desktop desktop = Desktop.getDesktop();
+ if (desktop.isSupported(Desktop.Action.BROWSE)) {
+ desktop.browse(url.toURI());
+ return;
+ }
+ }
+ throw new IOException("current platform does not support Java Desktop API");
+ }
+
+ private TrayIcon initTrayIcon() {
+ if (SystemTray.isSupported()) {
+ try {
+ // get the SystemTray instance
+ SystemTray tray = SystemTray.getSystemTray();
+ log.debug("TrayIcon size: " + tray.getTrayIconSize());
+
+ String iconResource;
+ if (tray.getTrayIconSize().height < 17) {
+ iconResource = TRAYICON_RESOURCE + "16.png";
+ } else if (tray.getTrayIconSize().height < 25) {
+ iconResource = TRAYICON_RESOURCE + "24.png";
+ } else if (tray.getTrayIconSize().height < 33) {
+ iconResource = TRAYICON_RESOURCE + "32.png";
+ } else {
+ iconResource = TRAYICON_RESOURCE + "48.png";
+ }
+ Image image = ImageIO.read(getClass().getResourceAsStream(iconResource));
+
+ PopupMenu popup = new PopupMenu();
+
+ MenuItem helpItem = new MenuItem(messages.getString(LABEL_HELP));
+ helpItem.addActionListener(this);
+ helpItem.setActionCommand(HELP_COMMAND);
+ popup.add(helpItem);
+
+ MenuItem pinItem = new MenuItem(messages.getString(LABEL_PIN));
+ pinItem.addActionListener(this);
+ pinItem.setActionCommand(PIN_COMMAND);
+ popup.add(pinItem);
+
+ MenuItem shutdownItem = new MenuItem(messages.getString(LABEL_SHUTDOWN));
+ shutdownItem.addActionListener(this);
+ shutdownItem.setActionCommand(SHUTDOWN_COMMAND);
+ popup.add(shutdownItem);
+
+ popup.addSeparator();
+
+ MenuItem aboutItem = new MenuItem(messages.getString(LABEL_ABOUT));
+ aboutItem.setActionCommand(ABOUT_COMMAND);
+ aboutItem.addActionListener(this);
+ popup.add(aboutItem);
+
+ TrayIcon ti = new TrayIcon(image, messages.getString(TOOLTIP_DEFAULT), popup);
+ ti.addActionListener(this);
+ tray.add(ti);
+ return ti;
+ } catch (AWTException ex) {
+ log.error("Failed to init tray icon", ex);
+ } catch (IOException ex) {
+ log.error("Failed to load tray icon image", ex);
+ }
+ } else {
+ log.error("No system tray support");
+ }
+ return null;
+ }
+
+ private void initStart() {
+ try {
+ trayIcon.displayMessage(messages.getString(CAPTION_DEFAULT),
+ messages.getString(MESSAGE_START), TrayIcon.MessageType.INFO);
+ basicService = (BasicService) ServiceManager.lookup("javax.jnlp.BasicService");
+ if (basicService.isOffline()) {
+ log.info("launching MOCCA Web Start offline");
+ trayIcon.displayMessage(messages.getString(CAPTION_DEFAULT),
+ messages.getString(MESSAGE_START_OFFLINE), TrayIcon.MessageType.INFO);
+ } else {
+ log.info("launching MOCCA Web Start online");
+ }
+ } catch (UnavailableServiceException ex) {
+ log.info("Failed to obtain JNLP service: " + ex.getMessage());
+ }
+ }
+
+ private void initConfig() throws IOException, CodingException, GeneralSecurityException {
+ trayIcon.displayMessage(messages.getString(CAPTION_DEFAULT),
+ messages.getString(MESSAGE_CONFIG), TrayIcon.MessageType.INFO);
+ config = new Configurator();
+ config.ensureConfiguration();
+ trayIcon.displayMessage(messages.getString(CAPTION_DEFAULT),
+ messages.getString(MESSAGE_CERTS), TrayIcon.MessageType.INFO);
+ config.ensureCertificates();
+ }
+
+ private void startServer() throws Exception {
+ log.info("init servlet container and MOCCA webapp");
+// trayIcon.displayMessage(messages.getString(CAPTION_DEFAULT),
+// messages.getString(MESSAGE_START), TrayIcon.MessageType.INFO);
+ server = new Container();
+ server.init();
+ server.start();
+ }
+
+ private void initFinished() {
+ try {
+ trayIcon.displayMessage(messages.getString(CAPTION_DEFAULT),
+ messages.getString(MESSAGE_FINISHED), TrayIcon.MessageType.INFO);
+ // standalone (non-webstart) version has splashscreen
+ if (SplashScreen.getSplashScreen() != null) {
+ try {
+ SplashScreen.getSplashScreen().close();
+ } catch (IllegalStateException ex) {
+ log.warn("Failed to close splash screen: " + ex.getMessage());
+ }
+ }
+ if (config.isCertRenewed()) {
+ try {
+ browse(HTTP_SECURITY_LAYER_URL);
+ } catch (Exception ex) {
+ log.error("failed to open system browser, install TLS certificate manually: " + HTTPS_SECURITY_LAYER_URL, ex);
+ }
+ }
+ log.info("BKU successfully started");
+ server.join();
+ } catch (InterruptedException e) {
+ log.warn("failed to join server: " + e.getMessage(), e);
+ }
+ }
+
+ @Override
+ public void shutDown() {
+ log.info("Shutting down server");
+ trayIcon.displayMessage(messages.getString(CAPTION_DEFAULT),
+ messages.getString(MESSAGE_SHUTDOWN), TrayIcon.MessageType.INFO);
+ if ((server != null) && (server.isRunning())) {
+ try {
+ if (server.isRunning()) {
+ server.stop();
+ }
+ } catch (Exception e) {
+ log.debug(e.toString());
+ } finally {
+ if (server.isRunning()) {
+ server.destroy();
+ }
+ }
+ }
+ System.exit(0);
+ }
+
+ /**
+ * Listen for TrayMenu actions (display error messages on trayIcon)
+ * @param e
+ */
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ if (SHUTDOWN_COMMAND.equals(e.getActionCommand())) {
+ log.debug("shutdown requested via tray menu");
+ this.shutDown();
+ } else if (ABOUT_COMMAND.equals(e.getActionCommand())) {
+ log.debug("about dialog requested via tray menu");
+ if (aboutDialog == null) {
+ aboutDialog = new AboutDialog(new JFrame(), true, version);
+ aboutDialog.addWindowListener(new WindowAdapter() {
+
+ @Override
+ public void windowClosing(java.awt.event.WindowEvent e) {
+ aboutDialog.setVisible(false);
+ }
+ });
+ }
+ aboutDialog.setLocationByPlatform(true);
+ aboutDialog.setVisible(true);
+ } else if (PIN_COMMAND.equals(e.getActionCommand())) {
+ log.debug("pin management dialog requested via tray menu");
+
+ new Thread(new PINManagementInvoker(trayIcon, messages)).start();
+ } else if (HELP_COMMAND.equals(e.getActionCommand())) {
+ log.debug("help page requested via tray menu");
+ try {
+ browse(HELP_URL);
+ } catch (Exception ex) {
+ log.error("Failed to open " + HELP_URL, ex);
+ String msg = MessageFormat.format(messages.getString(ERROR_OPEN_URL), HELP_URL);
+ trayIcon.displayMessage(messages.getString(CAPTION_ERROR), msg, TrayIcon.MessageType.ERROR);
+ }
+ } else {
+ log.error("unknown tray menu command: " + e.getActionCommand());
+ }
+ }
+
+ public static void main(String[] args) throws InterruptedException, IOException {
+ try {
+ Launcher launcher = new Launcher();
+ launcher.launch();
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ log.debug("Caught exception " + ex.getMessage(), ex);
+ log.info("waiting to shutdown...");
+ Thread.sleep(5000);
+ log.info("exit");
+ System.exit(-1000);
+ }
+ }
+}
diff --git a/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/LogSecurityManager.java b/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/LogSecurityManager.java
new file mode 100644
index 00000000..d589812e
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/LogSecurityManager.java
@@ -0,0 +1,443 @@
+/*
+ * 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.webstart;
+
+import com.sun.javaws.security.JavaWebStartSecurity;
+import java.io.FileDescriptor;
+import java.net.InetAddress;
+import java.security.Permission;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * JVM argument -Djava.security.debug=access,failure
+ * (passed as attribute to java element in jnlp) is ignored.
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class LogSecurityManager extends SecurityManager {
+
+ protected static final Logger log = LoggerFactory.getLogger(LogSecurityManager.class);
+ JavaWebStartSecurity sm;
+
+ public LogSecurityManager(JavaWebStartSecurity sm) {
+ this.sm = sm;
+// AppPolicy policy = AppPolicy.getInstance();
+// SecurityManager sm = System.getSecurityManager();
+ }
+
+ @Override
+ public void checkAccept(String host, int port) {
+ try {
+ sm.checkAccept(host, port);
+ } catch (SecurityException ex) {
+ log.warn("checkAccept(" + host + ", " + port + "): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkAccess(Thread g) {
+ try {
+ sm.checkAccess(g);
+ } catch (SecurityException ex) {
+ log.warn("checkAccess(" + g + "): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkAccess(ThreadGroup g) {
+ try {
+ sm.checkAccess(g);
+ } catch (SecurityException ex) {
+ log.warn("checkAccess(" + g + "): " + ex.getMessage(), ex);
+ throw ex;
+ }
+
+ }
+
+ @Override
+ public void checkAwtEventQueueAccess() {
+ try {
+ sm.checkAwtEventQueueAccess();
+ } catch (SecurityException ex) {
+ log.warn("checkAwtEventQAccess():" + ex.getMessage(), ex);
+ throw ex;
+ }
+
+ }
+
+ @Override
+ public void checkConnect(String host, int port) {
+ try {
+ sm.checkConnect(host, port);
+ } catch (SecurityException ex) {
+ log.warn("checkConnect(" + host + ", " + port + "): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkConnect(String host, int port, Object context) {
+ try {
+ sm.checkConnect(host, port, context);
+ } catch (SecurityException ex) {
+ log.warn("checkConnect(" + host + ", " + port + ", " + context + "): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkCreateClassLoader() {
+ try {
+ sm.checkCreateClassLoader();
+ } catch (SecurityException ex) {
+ log.warn("checkCreateClassLoader(): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkDelete(String file) {
+ try {
+ sm.checkDelete(file);
+ } catch (SecurityException ex) {
+ log.warn("checkDelete(" + file + "): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkExec(String cmd) {
+ try {
+ sm.checkExec(cmd);
+ } catch (SecurityException ex) {
+ log.warn("checkExec(" + cmd + "): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkExit(int status) {
+ try {
+ sm.checkExit(status);
+ } catch (SecurityException ex) {
+ log.warn("checkExit(" + status + "): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkLink(String lib) {
+ try {
+ sm.checkLink(lib);
+ } catch (SecurityException ex) {
+ log.warn("checkLink(" + lib + "): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkListen(int port) {
+ try {
+ sm.checkListen(port);
+ } catch (SecurityException ex) {
+ log.warn("checkListen(" + port + "): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkMemberAccess(Class<?> clazz, int which) {
+ try {
+ sm.checkMemberAccess(clazz, which);
+ } catch (SecurityException ex) {
+ log.warn("checkMemberAccess(" + clazz + "): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkMulticast(InetAddress maddr) {
+ try {
+ sm.checkMulticast(maddr);
+ } catch (SecurityException ex) {
+ log.warn("checkMulticast(" + maddr + "): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @SuppressWarnings("deprecation")
+ @Override
+ public void checkMulticast(InetAddress maddr, byte ttl) {
+ try {
+ sm.checkMulticast(maddr,ttl);
+ } catch (SecurityException ex) {
+ log.warn("checkMulticast(" + maddr + "," + ttl + "): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkPackageAccess(String pkg) {
+ try {
+ sm.checkPackageAccess(pkg);
+ } catch (SecurityException ex) {
+ log.warn("checkPackageAccess(" + pkg + "): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkPackageDefinition(String pkg) {
+ try {
+ sm.checkPackageDefinition(pkg);
+ } catch (SecurityException ex) {
+ log.warn("checkPackageDefinition(" + pkg + "): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkPermission(Permission perm) {
+ try {
+ sm.checkPermission(perm);
+ } catch (SecurityException ex) {
+ log.warn("checkPermission(" + perm.toString() + "): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkPermission(Permission perm, Object context) {
+ try {
+ sm.checkPermission(perm, context);
+ } catch (SecurityException ex) {
+ log.warn("checkPermission(" + perm.toString() + ", ctx): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkPrintJobAccess() {
+ try {
+ sm.checkPrintJobAccess();
+ } catch (SecurityException ex) {
+ log.info("checkPrintJobAccess(): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ /**
+ * allowed
+ */
+ @Override
+ public void checkPropertiesAccess() {
+ try {
+ sm.checkPropertiesAccess();
+ } catch (SecurityException ex) {
+ log.info("checkPropertiesAccess(): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ /**
+ * access to all properties allowed
+ * @param key
+ */
+ @Override
+ public void checkPropertyAccess(String key) {
+ try {
+ sm.checkPropertyAccess(key);
+ } catch (SecurityException ex) {
+ log.info("checkPropertyAccess(" + key + "): " + ex.getMessage());
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkRead(FileDescriptor fd) {
+ try {
+ sm.checkRead(fd);
+ } catch (SecurityException ex) {
+ log.warn("checkRead(" + fd + ") " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkRead(String file) {
+ try {
+ sm.checkRead(file);
+ } catch (SecurityException ex) {
+ log.warn("checkRead(" + file + ") " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkRead(String file, Object context) {
+ try {
+ sm.checkRead(file, context);
+ } catch (SecurityException ex) {
+ log.warn("checkRead(" + file + ") " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkSecurityAccess(String target) {
+ try {
+ sm.checkSecurityAccess(target);
+ } catch (SecurityException ex) {
+ log.info("checkSecurityAccess(" + target + "): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public void checkSetFactory() {
+ log.info("checkSetFactory() ");
+ try {
+ sm.checkSetFactory();
+ } catch (SecurityException ex) {
+ log.warn("checkSetFactroy(): " + ex.getMessage(), ex);
+ throw ex;
+ }
+
+ }
+
+ @Override
+ public void checkSystemClipboardAccess() {
+ try {
+ sm.checkSystemClipboardAccess();
+ } catch (SecurityException ex) {
+ log.info("checkSystemClipboardAccess(): " + ex.getMessage(), ex);
+ throw ex;
+ }
+ }
+
+ @Override
+ public boolean checkTopLevelWindow(Object window) {
+ log.info("checkTopLevelWindow(Object window)");
+ try {
+ return sm.checkTopLevelWindow(window);
+ } catch (SecurityException ex) {
+ log.warn("checkTopLevelWindow(" + window + "): " + ex.getMessage(), ex);
+ throw ex;
+ }
+
+ }
+
+ @Override
+ public void checkWrite(FileDescriptor fd) {
+ try {
+ sm.checkWrite(fd);
+ } catch (SecurityException ex) {
+ log.info("checkWrite(" + fd + "): " + ex.getMessage(), ex);
+ }
+ }
+
+ @Override
+ public void checkWrite(String file) {
+ try {
+ sm.checkWrite(file);
+ } catch (SecurityException ex) {
+ log.info("checkWrite(" + file + "): " + ex.getMessage(), ex);
+ }
+ }
+
+// @Override
+// protected int classDepth(String name) {
+// log.info("classDepth(String name)"); return this.classDepth(name);
+// }
+//
+// @Override
+// protected int classLoaderDepth() {
+// log.info("classLoaderDepth"); return sm.classLoaderDepth();
+// }
+//
+// @Override
+// protected Object clone() throws CloneNotSupportedException {
+// log.info("clone"); return sm.clone();
+// }
+//
+// @Override
+// protected ClassLoader currentClassLoader() {
+// log.info("currentClassLoader"); return sm.currentClassLoader();
+// }
+//
+// @Override
+// protected Class<?> currentLoadedClass() {
+// log.info("currentLoadedClass"); return sm.currentLoadedClass();
+// }
+ @Override
+ public boolean equals(Object obj) {
+ log.info("equals");
+ return sm.equals(obj);
+ }
+
+// @Override
+// protected void finalize() throws Throwable {
+// log.info("finalize"); sm.finalize();
+// }
+// @Override
+// protected Class[] getClassContext() {
+// log.info("getClassContext"); return sm.getClassContext();
+// }
+ @SuppressWarnings("deprecation")
+ @Override
+ public boolean getInCheck() {
+ log.info("getInCheck");
+ return sm.getInCheck();
+ }
+
+ @Override
+ public Object getSecurityContext() {
+ log.info("getSecurityContext");
+ return sm.getSecurityContext();
+ }
+
+ @Override
+ public ThreadGroup getThreadGroup() {
+ log.info("getThreadGroup");
+ return sm.getThreadGroup();
+ }
+
+ @Override
+ public int hashCode() {
+ log.info("hashCode");
+ return sm.hashCode();
+ }
+
+// @Override
+// protected boolean inClass(String name) {
+// log.info("inClass"); return sm.inClass(name);
+// }
+//
+// @Override
+// protected boolean inClassLoader() {
+// log.info(""); return sm.inClassLoader();
+// }
+ @Override
+ public String toString() {
+ log.info("toString");
+ return sm.toString();
+ }
+}
diff --git a/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/TLSServerCA.java b/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/TLSServerCA.java
new file mode 100644
index 00000000..745042f8
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/TLSServerCA.java
@@ -0,0 +1,142 @@
+package at.gv.egiz.bku.webstart;
+
+import iaik.asn1.CodingException;
+import iaik.asn1.ObjectID;
+import iaik.asn1.structures.AlgorithmID;
+import iaik.asn1.structures.GeneralName;
+import iaik.asn1.structures.GeneralNames;
+import iaik.asn1.structures.Name;
+import iaik.x509.X509Certificate;
+import iaik.x509.extensions.AuthorityKeyIdentifier;
+import iaik.x509.extensions.BasicConstraints;
+import iaik.x509.extensions.ExtendedKeyUsage;
+import iaik.x509.extensions.KeyUsage;
+
+import iaik.x509.extensions.SubjectAltName;
+import iaik.x509.extensions.SubjectKeyIdentifier;
+import java.io.IOException;
+import java.math.BigInteger;
+import java.security.GeneralSecurityException;
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.KeyStore;
+import java.security.NoSuchAlgorithmException;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.Random;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+public class TLSServerCA {
+ public static final int CA_VALIDITY_Y = 3;
+ public static final String MOCCA_TLS_SERVER_ALIAS = "server";
+ public static final int SERVER_VALIDITY_Y = 3;
+ private final static Logger log = LoggerFactory.getLogger(TLSServerCA.class);
+
+ private KeyPair caKeyPair;
+ private X509Certificate caCert;
+
+ private KeyPair serverKeyPair;
+ private X509Certificate serverCert;
+
+ private KeyPair generateKeyPair() throws NoSuchAlgorithmException {
+ KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA");
+ gen.initialize(2048);
+ return gen.generateKeyPair();
+ }
+
+ private void generateCACert() throws GeneralSecurityException, CodingException {
+ log.debug("generating MOCCA CA certificate");
+ Name subject = new Name();
+ subject.addRDN(ObjectID.country, "AT");
+ subject.addRDN(ObjectID.organization, "MOCCA");
+ subject.addRDN(ObjectID.organizationalUnit, "MOCCA TLS Server CA");
+
+ caKeyPair = generateKeyPair();
+ caCert = new X509Certificate();
+ caCert.setSerialNumber(new BigInteger(20, new Random()));
+ caCert.setSubjectDN(subject);
+ caCert.setPublicKey(caKeyPair.getPublic());
+ caCert.setIssuerDN(subject);
+
+ caCert.addExtension(new SubjectKeyIdentifier(caKeyPair.getPublic()));
+
+ BasicConstraints bc = new BasicConstraints(true);
+ bc.setCritical(true);
+ caCert.addExtension(bc);
+ KeyUsage ku = new KeyUsage(KeyUsage.keyCertSign | KeyUsage.cRLSign
+ | KeyUsage.digitalSignature);
+ ku.setCritical(true);
+ caCert.addExtension(ku);
+
+ GregorianCalendar date = new GregorianCalendar();
+ date.add(Calendar.HOUR_OF_DAY, -1);
+ caCert.setValidNotBefore(date.getTime());
+ date.add(Calendar.YEAR, CA_VALIDITY_Y);
+ caCert.setValidNotAfter(date.getTime());
+ caCert.sign(AlgorithmID.sha1WithRSAEncryption, caKeyPair.getPrivate());
+
+ log.debug("successfully generated MOCCA TLS Server CA certificate " + caCert.getSubjectDN());
+ }
+
+ private void generateServerCert() throws GeneralSecurityException, CodingException {
+ log.debug("generating MOCCA server certificate");
+ Name subject = new Name();
+ subject.addRDN(ObjectID.country, "AT");
+ subject.addRDN(ObjectID.organization, "MOCCA");
+ subject.addRDN(ObjectID.organizationalUnit, "MOCCA TLS Server");
+ subject.addRDN(ObjectID.commonName, "localhost");
+ subject.addRDN(ObjectID.commonName, "127.0.0.1");
+
+ serverKeyPair = generateKeyPair();
+ serverCert = new X509Certificate();
+ serverCert.setSerialNumber(new BigInteger(20, new Random()));
+ serverCert.setSubjectDN(subject);
+ serverCert.setPublicKey(serverKeyPair.getPublic());
+ serverCert.setIssuerDN(caCert.getSubjectDN());
+
+ serverCert.addExtension(new SubjectKeyIdentifier(serverKeyPair.getPublic()));
+ byte[] aki = new SubjectKeyIdentifier(caCert.getPublicKey()).get();
+ serverCert.addExtension(new AuthorityKeyIdentifier(aki));
+
+ serverCert.addExtension(new ExtendedKeyUsage(ExtendedKeyUsage.serverAuth));
+
+ GeneralNames altNames = new GeneralNames();
+ altNames.addName(new GeneralName(GeneralName.dNSName, "localhost"));
+ altNames.addName(new GeneralName(GeneralName.dNSName, "127.0.0.1"));
+ altNames.addName(new GeneralName(GeneralName.iPAddress, "127.0.0.1"));
+ serverCert.addExtension(new SubjectAltName(altNames));
+
+ serverCert.addExtension(new BasicConstraints(false));
+ serverCert.addExtension(new KeyUsage(KeyUsage.keyEncipherment
+ | KeyUsage.digitalSignature));
+
+ GregorianCalendar date = new GregorianCalendar();
+ date.add(Calendar.HOUR_OF_DAY, -1);
+ serverCert.setValidNotBefore(date.getTime());
+ date.add(Calendar.YEAR,SERVER_VALIDITY_Y);
+ date.add(Calendar.HOUR_OF_DAY, -1);
+ serverCert.setValidNotAfter(date.getTime());
+ serverCert.sign(AlgorithmID.sha1WithRSAEncryption, caKeyPair.getPrivate());
+
+ log.debug("successfully generated MOCCA TLS Server certificate " + serverCert.getSubjectDN());
+ caKeyPair = null;
+ }
+
+ public KeyStore generateKeyStore(char[] password) throws GeneralSecurityException, IOException, CodingException {
+// try {
+ generateCACert();
+ generateServerCert();
+ KeyStore ks = KeyStore.getInstance("JKS");
+ ks.load(null, null);
+ ks.setKeyEntry(MOCCA_TLS_SERVER_ALIAS, serverKeyPair.getPrivate(), password, new X509Certificate[]{serverCert, caCert});
+ return ks;
+// } catch (Exception e) {
+// log.error("Cannot generate certificate", e);
+// }
+// return null;
+ }
+
+}
diff --git a/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/AboutDialog.form b/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/AboutDialog.form
new file mode 100644
index 00000000..548893a7
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/AboutDialog.form
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
+ <Properties>
+ <Property name="defaultCloseOperation" type="int" value="2"/>
+ <Property name="title" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+ <ResourceString bundle="at/gv/egiz/bku/webstart/messages.properties" key="about.frame.title" replaceFormat="java.util.ResourceBundle.getBundle(&quot;{bundleNameSlashes}&quot;).getString(&quot;{key}&quot;)"/>
+ </Property>
+ </Properties>
+ <SyntheticProperties>
+ <SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+ </SyntheticProperties>
+ <AuxValues>
+ <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
+ <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
+ <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
+ <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
+ <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
+ <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
+ </AuxValues>
+
+ <Layout>
+ <DimensionLayout dim="0">
+ <Group type="103" groupAlignment="0" attributes="0">
+ <Group type="102" attributes="0">
+ <EmptySpace max="-2" attributes="0"/>
+ <Group type="103" groupAlignment="0" attributes="0">
+ <Component id="jPanel1" alignment="1" max="32767" attributes="0"/>
+ <Component id="jPanel3" alignment="1" max="32767" attributes="0"/>
+ </Group>
+ <EmptySpace max="-2" attributes="0"/>
+ </Group>
+ </Group>
+ </DimensionLayout>
+ <DimensionLayout dim="1">
+ <Group type="103" groupAlignment="0" attributes="0">
+ <Group type="102" alignment="0" attributes="0">
+ <EmptySpace max="-2" attributes="0"/>
+ <Component id="jPanel1" min="-2" max="-2" attributes="0"/>
+ <EmptySpace max="32767" attributes="0"/>
+ <Component id="jPanel3" min="-2" max="-2" attributes="0"/>
+ <EmptySpace max="-2" attributes="0"/>
+ </Group>
+ </Group>
+ </DimensionLayout>
+ </Layout>
+ <SubComponents>
+ <Container class="javax.swing.JPanel" name="jPanel1">
+
+ <Layout>
+ <DimensionLayout dim="0">
+ <Group type="103" groupAlignment="0" attributes="0">
+ <Group type="102" alignment="0" attributes="0">
+ <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
+ <EmptySpace type="unrelated" max="-2" attributes="0"/>
+ <Group type="103" groupAlignment="0" attributes="0">
+ <Component id="jLabel3" min="-2" max="-2" attributes="0"/>
+ <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
+ </Group>
+ <EmptySpace max="32767" attributes="0"/>
+ </Group>
+ </Group>
+ </DimensionLayout>
+ <DimensionLayout dim="1">
+ <Group type="103" groupAlignment="0" attributes="0">
+ <Component id="jLabel1" min="-2" max="-2" attributes="0"/>
+ <Group type="102" alignment="0" attributes="0">
+ <EmptySpace max="-2" attributes="0"/>
+ <Component id="jLabel3" min="-2" max="-2" attributes="0"/>
+ <EmptySpace max="-2" attributes="0"/>
+ <Component id="jLabel2" min="-2" max="-2" attributes="0"/>
+ </Group>
+ </Group>
+ </DimensionLayout>
+ </Layout>
+ <SubComponents>
+ <Component class="javax.swing.JLabel" name="jLabel1">
+ <Properties>
+ <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
+ <Image iconType="3" name="/at/gv/egiz/bku/webstart/chiperling96.png"/>
+ </Property>
+ </Properties>
+ </Component>
+ <Component class="javax.swing.JLabel" name="jLabel2">
+ <Properties>
+ <Property name="text" type="java.lang.String" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
+ <Connection code="getVersionText(bundle)" type="code"/>
+ </Property>
+ </Properties>
+ </Component>
+ <Component class="javax.swing.JLabel" name="jLabel3">
+ <Properties>
+ <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+ <ResourceString bundle="at/gv/egiz/bku/webstart/messages.properties" key="about.title" replaceFormat="java.util.ResourceBundle.getBundle(&quot;{bundleNameSlashes}&quot;).getString(&quot;{key}&quot;)"/>
+ </Property>
+ </Properties>
+ </Component>
+ </SubComponents>
+ </Container>
+ <Container class="javax.swing.JPanel" name="jPanel3">
+
+ <Layout>
+ <DimensionLayout dim="0">
+ <Group type="103" groupAlignment="0" attributes="0">
+ <Group type="102" alignment="1" attributes="0">
+ <EmptySpace pref="163" max="32767" attributes="0"/>
+ <Component id="jButton1" min="-2" max="-2" attributes="0"/>
+ <EmptySpace max="-2" attributes="0"/>
+ </Group>
+ </Group>
+ </DimensionLayout>
+ <DimensionLayout dim="1">
+ <Group type="103" groupAlignment="0" attributes="0">
+ <Group type="102" alignment="0" attributes="0">
+ <EmptySpace max="-2" attributes="0"/>
+ <Component id="jButton1" min="-2" max="-2" attributes="0"/>
+ <EmptySpace max="32767" attributes="0"/>
+ </Group>
+ </Group>
+ </DimensionLayout>
+ </Layout>
+ <SubComponents>
+ <Component class="javax.swing.JButton" name="jButton1">
+ <Properties>
+ <Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
+ <ResourceString bundle="at/gv/egiz/bku/webstart/messages.properties" key="button.close" replaceFormat="java.util.ResourceBundle.getBundle(&quot;{bundleNameSlashes}&quot;).getString(&quot;{key}&quot;)"/>
+ </Property>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
+ </Events>
+ </Component>
+ </SubComponents>
+ </Container>
+ </SubComponents>
+</Form>
diff --git a/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/AboutDialog.java b/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/AboutDialog.java
new file mode 100644
index 00000000..ba2c007d
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/AboutDialog.java
@@ -0,0 +1,165 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+/*
+ * AboutDialog.java
+ *
+ * Created on 18.08.2009, 11:54:44
+ */
+
+package at.gv.egiz.bku.webstart.gui;
+
+import java.text.MessageFormat;
+import java.util.ResourceBundle;
+
+/**
+ *
+ * @author clemens
+ */
+public class AboutDialog extends javax.swing.JDialog {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ /** Creates new form AboutDialog */
+ public AboutDialog(java.awt.Frame parent, boolean modal, String version) {
+ super(parent, modal);
+ this.version = version;
+ initComponents();
+ }
+
+ /** This method is called from within the constructor to
+ * initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is
+ * always regenerated by the Form Editor.
+ */
+ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ jPanel1 = new javax.swing.JPanel();
+ jLabel1 = new javax.swing.JLabel();
+ jLabel2 = new javax.swing.JLabel();
+ jLabel3 = new javax.swing.JLabel();
+ jPanel3 = new javax.swing.JPanel();
+ jButton1 = new javax.swing.JButton();
+
+ setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("at/gv/egiz/bku/webstart/messages"); // NOI18N
+ setTitle(bundle.getString("about.frame.title")); // NOI18N
+
+ jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/at/gv/egiz/bku/webstart/chiperling96.png"))); // NOI18N
+
+ jLabel2.setText(getVersionText(bundle));
+
+ jLabel3.setText(bundle.getString("about.title")); // NOI18N
+
+ javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
+ jPanel1.setLayout(jPanel1Layout);
+ jPanel1Layout.setHorizontalGroup(
+ jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(jLabel1)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jLabel3)
+ .addComponent(jLabel2))
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+ jPanel1Layout.setVerticalGroup(
+ jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jLabel1)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jLabel3)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jLabel2))
+ );
+
+ jButton1.setText(bundle.getString("button.close")); // NOI18N
+ jButton1.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jButton1ActionPerformed(evt);
+ }
+ });
+
+ javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
+ jPanel3.setLayout(jPanel3Layout);
+ jPanel3Layout.setHorizontalGroup(
+ jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
+ .addContainerGap(163, Short.MAX_VALUE)
+ .addComponent(jButton1)
+ .addContainerGap())
+ );
+ jPanel3Layout.setVerticalGroup(
+ jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel3Layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jButton1)
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
+ getContentPane().setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jPanel3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addContainerGap())
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap())
+ );
+
+ pack();
+ }// </editor-fold>//GEN-END:initComponents
+
+ private String getVersionText(ResourceBundle bundle) {
+ return MessageFormat.format(bundle.getString("about.version"), version);
+ }
+ private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
+ // TODO add your handling code here:
+ setVisible(false);
+ }//GEN-LAST:event_jButton1ActionPerformed
+
+ /**
+ * @param args the command line arguments
+ */
+ public static void main(String args[]) {
+ java.awt.EventQueue.invokeLater(new Runnable() {
+ public void run() {
+ AboutDialog dialog = new AboutDialog(new javax.swing.JFrame(), true, "1.2.3");
+ dialog.addWindowListener(new java.awt.event.WindowAdapter() {
+ public void windowClosing(java.awt.event.WindowEvent e) {
+ System.exit(0);
+ }
+ });
+ dialog.setVisible(true);
+ }
+ });
+ }
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton jButton1;
+ private javax.swing.JLabel jLabel1;
+ private javax.swing.JLabel jLabel2;
+ private javax.swing.JLabel jLabel3;
+ private javax.swing.JPanel jPanel1;
+ private javax.swing.JPanel jPanel3;
+ // End of variables declaration//GEN-END:variables
+
+ private String version;
+}
diff --git a/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/BKUControllerInterface.java b/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/BKUControllerInterface.java
new file mode 100644
index 00000000..886b55f7
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/BKUControllerInterface.java
@@ -0,0 +1,23 @@
+/*
+* 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.webstart.gui;
+
+public interface BKUControllerInterface {
+
+ public void shutDown();
+
+}
diff --git a/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/PINManagementInvoker.java b/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/PINManagementInvoker.java
new file mode 100644
index 00000000..1f14d751
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/java/at/gv/egiz/bku/webstart/gui/PINManagementInvoker.java
@@ -0,0 +1,72 @@
+/*
+ * 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.webstart.gui;
+
+import at.gv.egiz.bku.webstart.Launcher;
+import java.awt.TrayIcon;
+import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.util.ResourceBundle;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * GUI is painted using SwingUtilities.invokeLater, but TrayIcon ActionListener Thread (== webstart thread) joined Jetty Thread
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class PINManagementInvoker implements Runnable {
+
+ private static final Logger log = LoggerFactory.getLogger(PINManagementInvoker.class);
+
+ TrayIcon trayIcon;
+ ResourceBundle messages;
+
+ public PINManagementInvoker(TrayIcon trayIcon, ResourceBundle messages) {
+ this.trayIcon = trayIcon;
+ this.messages = messages;
+ }
+
+ @Override
+ public void run() {
+ HttpURLConnection connection = null;
+ try {
+ log.debug("Connecting to: " + Launcher.PIN_MANAGEMENT_URL);
+
+ connection = (HttpURLConnection) Launcher.PIN_MANAGEMENT_URL.openConnection();
+
+ connection.setRequestMethod("GET");
+ connection.setReadTimeout(0);
+ connection.connect();
+
+ if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
+ log.debug("pin management dialog returned");
+ } else {
+ log.error("unexpected response from pin management: " + connection.getResponseMessage());
+ }
+ } catch (IOException ex) {
+ log.error("Failed to connect to PIN Management", ex);
+ trayIcon.displayMessage(messages.getString(Launcher.CAPTION_ERROR),
+ messages.getString(Launcher.ERROR_PIN), TrayIcon.MessageType.ERROR);
+ } finally {
+ if (connection != null) {
+ connection.disconnect();
+ }
+ }
+ }
+}
diff --git a/mocca-1.2.11/BKUWebStart/src/main/jnlp/keystore.ks b/mocca-1.2.11/BKUWebStart/src/main/jnlp/keystore.ks
new file mode 100644
index 00000000..824c3a40
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/jnlp/keystore.ks
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip128.png b/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip128.png
new file mode 100644
index 00000000..c36d8079
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip128.png
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip16.png b/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip16.png
new file mode 100644
index 00000000..96b580e9
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip16.png
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip24.png b/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip24.png
new file mode 100644
index 00000000..efd6dbeb
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip24.png
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip32.png b/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip32.png
new file mode 100644
index 00000000..e7efb020
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip32.png
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip48.png b/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip48.png
new file mode 100644
index 00000000..491fbcac
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/chip48.png
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/splash.png b/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/splash.png
new file mode 100644
index 00000000..597fbc60
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/splash.png
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/version.xml b/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/version.xml
new file mode 100644
index 00000000..5e160beb
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/img/version.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jnlp-versions>
+ <resource>
+ <pattern>
+ <name>chip16.png</name>
+ <version-id>2.0</version-id>
+ </pattern>
+ <file>chip16.png</file>
+ </resource>
+ <resource>
+ <pattern>
+ <name>chip24.png</name>
+ <version-id>2.0</version-id>
+ </pattern>
+ <file>chip24.png</file>
+ </resource>
+ <resource>
+ <pattern>
+ <name>chip32.png</name>
+ <version-id>2.0</version-id>
+ </pattern>
+ <file>chip32.png</file>
+ </resource>
+ <resource>
+ <pattern>
+ <name>chip48.png</name>
+ <version-id>2.0</version-id>
+ </pattern>
+ <file>chip48.png</file>
+ </resource>
+ <resource>
+ <pattern>
+ <name>chip64.png</name>
+ <version-id>2.0</version-id>
+ </pattern>
+ <file>chip64.png</file>
+ </resource>
+ <resource>
+ <pattern>
+ <name>chip128.png</name>
+ <version-id>2.0</version-id>
+ </pattern>
+ <file>chip128.png</file>
+ </resource>
+ <resource>
+ <pattern>
+ <name>splash.png</name>
+ <version-id>2.0</version-id>
+ </pattern>
+ <file>splash.png</file>
+ </resource>
+</jnlp-versions>
diff --git a/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/player.jnlp b/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/player.jnlp
new file mode 100644
index 00000000..da08ebc2
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/jnlp/resources/player.jnlp
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Jump specific JNL file for launching the player -->
+<player/> \ No newline at end of file
diff --git a/mocca-1.2.11/BKUWebStart/src/main/jnlp/template-local.xml b/mocca-1.2.11/BKUWebStart/src/main/jnlp/template-local.xml
new file mode 100644
index 00000000..f9a7d917
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/jnlp/template-local.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<jnlp spec="$jnlpspec" codebase="file:${project.build.directory}/jnlp" href="$outputFile">
+
+ <information>
+ <title>MOCCA Developement</title>
+ <vendor>E-Government Innovationszentrum (EGIZ)</vendor>
+ <homepage href="${project.Url}"/>
+ <description>${project.Description} (BKU) MOCCA Web Start - Developement Version</description>
+ <description kind="short">${project.Description}</description>
+ <icon kind="shortcut" href="img/chip16.png" width="16" height="16"/>
+ <icon kind="shortcut" href="img/chip24.png" width="24" height="24"/>
+ <icon kind="shortcut" href="img/chip32.png" width="32" height="32"/>
+ <icon kind="shortcut" href="img/chip48.png" width="48" height="48"/>
+ <icon kind="default" href="img/chip16.png" width="16" height="16"/>
+ <icon kind="default" href="img/chip24.png" width="24" height="24"/>
+ <icon kind="default" href="img/chip32.png" width="32" height="32"/>
+ <icon kind="default" href="img/chip48.png" width="48" height="48"/>
+ <icon kind="splash" href="img/splash.png"/>
+ <shortcut online="true">
+ <desktop/>
+ <menu submenu="e-Government"/>
+ </shortcut>
+
+ <offline-allowed/>
+
+ </information>
+
+ <security>
+ <all-permissions/>
+ </security>
+
+ <update check="timeout" policy="prompt-update"/>
+
+ <resources>
+ <java version="1.6+" java-vm-args="-Djava.security.debug=access,failure"/>
+ $dependencies
+ </resources>
+
+ <application-desc main-class="$mainClass"/>
+</jnlp> \ No newline at end of file
diff --git a/mocca-1.2.11/BKUWebStart/src/main/jnlp/template-unstable.xml b/mocca-1.2.11/BKUWebStart/src/main/jnlp/template-unstable.xml
new file mode 100644
index 00000000..b6574715
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/jnlp/template-unstable.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ | To strip versions from jar filenames do
+ | for JAR in *jar; do mv JAR {JAR/-[0-9]*/.jar}; done
+ |-->
+<jnlp spec="$jnlpspec" codebase="http://localhost:8080/webstart/" context="http://localhost:8080/" href="$outputFile">
+
+ <information>
+ <title>MOCCA Unstable</title>
+ <vendor>E-Government Innovationszentrum (EGIZ)</vendor>
+ <homepage href="${project.Url}"/>
+ <description>MOCCA Web Start - Unstable Build</description>
+ <description kind="short">MOCCA Web Start - Unstable Build</description>
+ <icon kind="shortcut" href="img/chip16.png" width="16" height="16"/>
+ <icon kind="shortcut" href="img/chip24.png" width="24" height="24"/>
+ <icon kind="shortcut" href="img/chip32.png" width="32" height="32"/>
+ <icon kind="shortcut" href="img/chip48.png" width="48" height="48"/>
+ <icon kind="default" href="img/chip16.png" width="16" height="16"/>
+ <icon kind="default" href="img/chip24.png" width="24" height="24"/>
+ <icon kind="default" href="img/chip32.png" width="32" height="32"/>
+ <icon kind="default" href="img/chip48.png" width="48" height="48"/>
+ <icon kind="splash" href="img/splash.png"/>
+ <shortcut online="true">
+ <desktop/>
+ <menu submenu="e-Government"/>
+ </shortcut>
+
+ <offline-allowed/>
+
+ </information>
+
+ <security>
+ <all-permissions/>
+ </security>
+
+ <update check="timeout" policy="prompt-update"/>
+
+ <resources os="Mac OS X">
+ <java version="1.6+" java-vm-args="-d32"/>
+ $dependencies
+ </resources>
+
+ <resources>
+ <java version="1.6+"/>
+ $dependencies
+ </resources>
+
+ <application-desc main-class="$mainClass"/>
+</jnlp> \ No newline at end of file
diff --git a/mocca-1.2.11/BKUWebStart/src/main/jnlp/template.xml b/mocca-1.2.11/BKUWebStart/src/main/jnlp/template.xml
new file mode 100644
index 00000000..887e2f10
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/jnlp/template.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ | To strip versions from jar filenames do
+ | for JAR in *jar; do mv JAR {JAR/-[0-9]*/.jar}; done
+ |-->
+<jnlp spec="$jnlpspec" codebase="http://localhost/webstart/" context="http://localhost/" href="$outputFile">
+
+ <information>
+ <title>${project.Description}</title>
+ <vendor>E-Government Innovationszentrum (EGIZ)</vendor>
+ <homepage href="${project.Url}"/>
+ <description>${project.Description} (BKU) MOCCA Web Start</description>
+ <description kind="short">${project.Description}</description>
+ <icon kind="shortcut" href="img/chip16.png" width="16" height="16"/>
+ <icon kind="shortcut" href="img/chip24.png" width="24" height="24"/>
+ <icon kind="shortcut" href="img/chip32.png" width="32" height="32"/>
+ <icon kind="shortcut" href="img/chip48.png" width="48" height="48"/>
+ <icon kind="default" href="img/chip16.png" width="16" height="16"/>
+ <icon kind="default" href="img/chip24.png" width="24" height="24"/>
+ <icon kind="default" href="img/chip32.png" width="32" height="32"/>
+ <icon kind="default" href="img/chip48.png" width="48" height="48"/>
+ <icon kind="splash" href="img/splash.png"/>
+ <shortcut online="true">
+ <desktop/>
+ <menu submenu="e-Government"/>
+ </shortcut>
+
+ <offline-allowed/>
+
+ </information>
+
+ <security>
+ <all-permissions/>
+ </security>
+
+ <update check="timeout" policy="prompt-update"/>
+
+ <resources os="Mac OS X">
+ <java version="1.6+" java-vm-args="-d32"/>
+ $dependencies
+ </resources>
+
+ <resources>
+ <java version="1.6+"/>
+ $dependencies
+ </resources>
+
+ <application-desc main-class="$mainClass"/>
+</jnlp> \ No newline at end of file
diff --git a/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip16.png b/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip16.png
new file mode 100644
index 00000000..96b580e9
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip16.png
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip24.png b/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip24.png
new file mode 100644
index 00000000..efd6dbeb
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip24.png
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip32.png b/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip32.png
new file mode 100644
index 00000000..e7efb020
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip32.png
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip48.png b/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip48.png
new file mode 100644
index 00000000..491fbcac
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chip48.png
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chiperling96.png b/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chiperling96.png
new file mode 100644
index 00000000..477d4fb5
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/chiperling96.png
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/conf/conf.zip b/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/conf/conf.zip
new file mode 100644
index 00000000..3a3eb26d
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/conf/conf.zip
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/messages.properties b/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/messages.properties
new file mode 100644
index 00000000..9ba359be
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/messages.properties
@@ -0,0 +1,38 @@
+# 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.
+
+tray.caption.default=B\u00FCrgerkarte
+tray.caption.error=Fehler
+tray.message.start=B\u00FCrgerkartenumgebung wird gestartet...
+tray.message.start.offline=B\u00FCrgerkartenumgebung wird offline gestartet...
+tray.message.config=Konfiguration wird geladen
+tray.message.certs=Zertifikate werden geladen
+tray.message.finished=B\u00FCrgerkartenumgebung erfolgreich gestartet
+tray.message.shutdown=B\u00FCrgerkartenumgebung wird beendet
+tray.error.start=B\u00FCrgerkartenumgebung konnte nicht gestartet werden
+tray.error.config=Konfiguration konnte nicht initialisiert werden, B\u00FCrberkartenumgebung wird nicht gestartet
+tray.error.bind=Die f\u00FCr die B\u00FCrgerkartenumgebung reservierte Adresse wird bereits von einem anderen Dienst verwendet
+tray.error.pin.connect=Verbindung zur PIN Verwaltung konnte nicht hergestellt werden
+tray.error.open.url=Verbindung zu {0} konnte nicht hergestellt werden
+tray.label.shutdown=Beenden
+tray.label.pin=PIN Verwaltung
+tray.label.help=Hilfe
+tray.label.about=\u00DCber...
+tray.tooltip.default=B\u00FCrgerkartenumgebung
+about.frame.title=B\u00FCrgerkarte
+about.title=<html>B\u00FCrgerkartenumgebung
+about.version=<html>Version: {0}
+button.ok=Best\u00E4tigen
+button.close=Schlie\u00DFen
diff --git a/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/splash.png b/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/splash.png
new file mode 100644
index 00000000..597fbc60
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/resources/at/gv/egiz/bku/webstart/splash.png
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStart/src/main/resources/log4j.properties b/mocca-1.2.11/BKUWebStart/src/main/resources/log4j.properties
new file mode 100644
index 00000000..81832418
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/main/resources/log4j.properties
@@ -0,0 +1,27 @@
+# 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.
+
+# root log level INFO, appender file
+log4j.rootLogger=INFO, file
+
+# jetty's log level
+log4j.logger.org.mortbay.log=INFO
+
+# file appender
+log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.file.datePattern='.'yyyy-MM-dd
+log4j.appender.file.File=${user.home}/.mocca/logs/webstart.log
+log4j.appender.file.layout=org.apache.log4j.PatternLayout
+log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %-5p %c{2} - %m%n \ No newline at end of file
diff --git a/mocca-1.2.11/BKUWebStart/src/test/java/at/gv/egiz/bku/webstart/ConfiguratorTest.java b/mocca-1.2.11/BKUWebStart/src/test/java/at/gv/egiz/bku/webstart/ConfiguratorTest.java
new file mode 100644
index 00000000..4f5798d5
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/test/java/at/gv/egiz/bku/webstart/ConfiguratorTest.java
@@ -0,0 +1,197 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package at.gv.egiz.bku.webstart;
+
+import java.io.File;
+import java.net.URI;
+import java.util.zip.ZipOutputStream;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author clemens
+ */
+public class ConfiguratorTest {
+
+
+ public ConfiguratorTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test of ensureConfiguration method, of class Configurator.
+ */
+ @Ignore
+ @Test
+ public void testEnsureConfiguration() throws Exception {
+ System.out.println("ensureConfiguration");
+ Configurator instance = new Configurator();
+ instance.ensureConfiguration();
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of ensureCertificates method, of class Configurator.
+ */
+ @Ignore
+ @Test
+ public void testEnsureCertificates() throws Exception {
+ System.out.println("ensureCertificates");
+ Configurator instance = new Configurator();
+ instance.ensureCertificates();
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of isCertRenewed method, of class Configurator.
+ */
+ @Ignore
+ @Test
+ public void testIsCertRenewed() {
+ System.out.println("isCertRenewed");
+ Configurator instance = new Configurator();
+ boolean expResult = false;
+ boolean result = instance.isCertRenewed();
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of readVersion method, of class Configurator.
+ */
+ @Ignore
+ @Test
+ public void testReadVersion() {
+ System.out.println("readVersion");
+ File versionFile = null;
+ String expResult = "";
+ String result = Configurator.readVersion(versionFile);
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of updateRequired method, of class Configurator.
+ */
+ @Test
+ public void testUpdateRequired() {
+ System.out.println("updateRequired");
+ String oldVersion = "1.0.9-SNAPSHOT-r123";
+ String minVersion = "1.0.9-SNAPSHOT";
+ boolean expResult = false;
+ boolean result = Configurator.updateRequired(oldVersion, minVersion);
+ assertEquals(expResult, result);
+
+ oldVersion = "1.0.9-SNAPSHOT-r123";
+ minVersion = "1.0.9";
+ expResult = true;
+ result = Configurator.updateRequired(oldVersion, minVersion);
+ assertEquals(expResult, result);
+
+ oldVersion = "1.0.9-SNAPSHOT-r123";
+ minVersion = "1.0.10-r432";
+ expResult = true;
+ result = Configurator.updateRequired(oldVersion, minVersion);
+ assertEquals(expResult, result);
+
+ oldVersion = "1.0.9-r123";
+ minVersion = "1.0.10-SNAPSHOT";
+ expResult = true;
+ result = Configurator.updateRequired(oldVersion, minVersion);
+ assertEquals(expResult, result);
+
+ oldVersion = "1.0.9-r123";
+ minVersion = "1.0.9-SNAPSHOT";
+ expResult = false;
+ result = Configurator.updateRequired(oldVersion, minVersion);
+ assertEquals(expResult, result);
+
+ oldVersion = "1.0.9-SNAPSHOT";
+ minVersion = "1.0.9-r349";
+ expResult = true;
+ result = Configurator.updateRequired(oldVersion, minVersion);
+ assertEquals(expResult, result);
+
+ oldVersion = "1.0.9-SNAPSHOT-r123";
+ minVersion = "1.0.10-SNAPSHOT";
+ expResult = true;
+ result = Configurator.updateRequired(oldVersion, minVersion);
+ assertEquals(expResult, result);
+
+ oldVersion = "1.0.9";
+ minVersion = "1.0.9.1-SNAPSHOT";
+ expResult = true;
+ result = Configurator.updateRequired(oldVersion, minVersion);
+ assertEquals(expResult, result);
+
+ oldVersion = "1.0.9";
+ minVersion = "1.0.8.99-SNAPSHOT";
+ expResult = false;
+ result = Configurator.updateRequired(oldVersion, minVersion);
+ assertEquals(expResult, result);
+
+ oldVersion = "1";
+ minVersion = "2";
+ expResult = true;
+ result = Configurator.updateRequired(oldVersion, minVersion);
+ assertEquals(expResult, result);
+ }
+
+ /**
+ * Test of backupAndDelete method, of class Configurator.
+ */
+ @Ignore
+ @Test
+ public void testBackupAndDelete() throws Exception {
+ System.out.println("backupAndDelete");
+ File dir = null;
+ URI relativeTo = null;
+ ZipOutputStream zip = null;
+ Configurator.backupAndDelete(dir, relativeTo, zip);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of initConfig method, of class Configurator.
+ */
+ @Ignore
+ @Test
+ public void testInitConfig() throws Exception {
+ System.out.println("initConfig");
+ File configDir = null;
+ Configurator instance = new Configurator();
+ instance.initConfig(configDir);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/BKUWebStart/src/test/resources/commons-logging.properties b/mocca-1.2.11/BKUWebStart/src/test/resources/commons-logging.properties
new file mode 100644
index 00000000..29292562
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/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/BKUWebStart/src/test/resources/log4j.properties b/mocca-1.2.11/BKUWebStart/src/test/resources/log4j.properties
new file mode 100644
index 00000000..ea08c51d
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStart/src/test/resources/log4j.properties
@@ -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.
+
+# loglever DEBUG, appender STDOUT
+log4j.rootLogger=TRACE, STDOUT
+log4j.logger.org.mortbay.log=INFO
+log4j.logger.pki=INFO
+
+#log4j.additivity.pki=false
+
+# 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}/.mocca/logs/webstart.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/BKUWebStartPackage/nbactions.xml b/mocca-1.2.11/BKUWebStartPackage/nbactions.xml
new file mode 100644
index 00000000..b3a586c0
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStartPackage/nbactions.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+ <action>
+ <actionName>CUSTOM-assembly</actionName>
+ <displayName>assembly</displayName>
+ <goals>
+ <goal>assembly:assembly</goal>
+ </goals>
+ </action>
+ </actions>
diff --git a/mocca-1.2.11/BKUWebStartPackage/pom.xml b/mocca-1.2.11/BKUWebStartPackage/pom.xml
new file mode 100644
index 00000000..0b226785
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStartPackage/pom.xml
@@ -0,0 +1,160 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.7-SNAPSHOT</version>
+ </parent>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUWebStartPackage</artifactId>
+ <version>1.2.7-SNAPSHOT</version>
+ <packaging>pom</packaging>
+ <name>BKU Web Start Package</name>
+ <description>Bürgerkartenumgebung</description>
+ <url>http://mocca.egovlabs.gv.at/</url>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>webstart-maven-plugin</artifactId>
+ <groupId>org.codehaus.mojo.webstart</groupId>
+ <executions>
+ <execution>
+ <phase>process-resources</phase>
+ <goals>
+ <goal>jnlp-single</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <outputDirectoryName>webstart</outputDirectoryName>
+
+ <excludeTransitive>false</excludeTransitive>
+
+ <jnlpFiles>
+ <jnlpFile>
+ <templateFilename>template.xml</templateFilename>
+ <outputFilename>mocca.jnlp</outputFilename>
+ <jarResources>
+ <jarResource>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUWebStart</artifactId>
+ <version>${project.version}</version>
+ <mainClass>at.gv.egiz.bku.webstart.Launcher</mainClass>
+ </jarResource>
+ </jarResources>
+ </jnlpFile>
+ </jnlpFiles>
+
+ <sign>
+ <alias>test-applet signer</alias>
+ <keystore>${project.basedir}/src/main/jnlp/keystore.ks</keystore>
+ <storepass>storepass</storepass>
+ <keypass>keypass</keypass>
+ <verify>true</verify>
+ <keystoreConfig>
+ <delete>false</delete>
+ <gen>false</gen>
+ </keystoreConfig>
+ </sign>
+
+ <unsign>true</unsign>
+ <verifyjar>false</verifyjar>
+
+ <pack200>false</pack200>
+ <gzip>false</gzip>
+ <outputJarVersions>false</outputJarVersions>
+ <verbose>true</verbose>
+
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <descriptors>
+ <descriptor>${basedir}/src/main/assemblies/zip-webstart.xml</descriptor>
+ </descriptors>
+ </configuration>
+ </plugin>
+
+ </plugins>
+ </build>
+
+ <dependencies>
+ <dependency>
+ <artifactId>BKUWebStart</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+
+ <profiles>
+ <profile>
+ <id>pkcs11-sign</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>webstart-maven-plugin</artifactId>
+ <groupId>org.codehaus.mojo.webstart</groupId>
+ <!-- use pkcs11-patched webstart-maven-plugin-->
+ <version>1.0-beta-1-mocca</version>
+ <configuration>
+ <sign>
+ <keystore>NONE</keystore>
+ <storetype>PKCS11</storetype>
+ <providerClass>iaik.pkcs.pkcs11.provider.IAIKPkcs11</providerClass>
+ <alias>a-sit</alias>
+ <storepass>${pkcs11-pass}</storepass>
+ <verify>true</verify>
+ <keystoreConfig>
+ <delete>false</delete>
+ <gen>false</gen>
+ </keystoreConfig>
+ </sign>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
+ <profile>
+ <!-- development profile -->
+ <id>local-webstart</id>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>webstart-maven-plugin</artifactId>
+ <groupId>org.codehaus.mojo.webstart</groupId>
+ <configuration>
+ <jnlpFiles>
+ <jnlpFile>
+ <templateFilename>template-local.xml</templateFilename>
+ <outputFilename>mocca-local.jnlp</outputFilename>
+ <jarResources>
+ <jarResource>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUWebStart</artifactId>
+ <version>${project.version}</version>
+ <mainClass>at.gv.egiz.bku.webstart.Launcher</mainClass>
+ </jarResource>
+ </jarResources>
+ </jnlpFile>
+ </jnlpFiles>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+
+ </profiles>
+</project> \ No newline at end of file
diff --git a/mocca-1.2.11/BKUWebStartPackage/src/main/assemblies/zip-webstart.xml b/mocca-1.2.11/BKUWebStartPackage/src/main/assemblies/zip-webstart.xml
new file mode 100644
index 00000000..fa39bdf0
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStartPackage/src/main/assemblies/zip-webstart.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+
+<assembly>
+ <formats>
+ <format>zip</format>
+ </formats>
+ <includeBaseDirectory>false</includeBaseDirectory>
+ <fileSets>
+ <fileSet>
+ <directory>${project.build.directory}/${project.build.finalName}/</directory>
+ <includes>
+ <include>webstart/**</include>
+ </includes>
+ <outputDirectory>/</outputDirectory>
+ </fileSet>
+ </fileSets>
+</assembly>
+
+
diff --git a/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/keystore.ks b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/keystore.ks
new file mode 100644
index 00000000..824c3a40
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/keystore.ks
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip128.png b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip128.png
new file mode 100644
index 00000000..c36d8079
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip128.png
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip16.png b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip16.png
new file mode 100644
index 00000000..96b580e9
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip16.png
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip24.png b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip24.png
new file mode 100644
index 00000000..efd6dbeb
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip24.png
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip32.png b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip32.png
new file mode 100644
index 00000000..e7efb020
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip32.png
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip48.png b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip48.png
new file mode 100644
index 00000000..491fbcac
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/chip48.png
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/splash.png b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/splash.png
new file mode 100644
index 00000000..597fbc60
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/splash.png
Binary files differ
diff --git a/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/version.xml b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/version.xml
new file mode 100644
index 00000000..5e160beb
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/img/version.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jnlp-versions>
+ <resource>
+ <pattern>
+ <name>chip16.png</name>
+ <version-id>2.0</version-id>
+ </pattern>
+ <file>chip16.png</file>
+ </resource>
+ <resource>
+ <pattern>
+ <name>chip24.png</name>
+ <version-id>2.0</version-id>
+ </pattern>
+ <file>chip24.png</file>
+ </resource>
+ <resource>
+ <pattern>
+ <name>chip32.png</name>
+ <version-id>2.0</version-id>
+ </pattern>
+ <file>chip32.png</file>
+ </resource>
+ <resource>
+ <pattern>
+ <name>chip48.png</name>
+ <version-id>2.0</version-id>
+ </pattern>
+ <file>chip48.png</file>
+ </resource>
+ <resource>
+ <pattern>
+ <name>chip64.png</name>
+ <version-id>2.0</version-id>
+ </pattern>
+ <file>chip64.png</file>
+ </resource>
+ <resource>
+ <pattern>
+ <name>chip128.png</name>
+ <version-id>2.0</version-id>
+ </pattern>
+ <file>chip128.png</file>
+ </resource>
+ <resource>
+ <pattern>
+ <name>splash.png</name>
+ <version-id>2.0</version-id>
+ </pattern>
+ <file>splash.png</file>
+ </resource>
+</jnlp-versions>
diff --git a/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/player.jnlp b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/player.jnlp
new file mode 100644
index 00000000..da08ebc2
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/resources/player.jnlp
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Jump specific JNL file for launching the player -->
+<player/> \ No newline at end of file
diff --git a/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/template-local.xml b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/template-local.xml
new file mode 100644
index 00000000..d17c2782
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/template-local.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<jnlp spec="$jnlpspec" codebase="file:/home/clemens/workspace/bku/BKUWebStart/target/jnlp" href="$outputFile">
+
+ <information>
+ <title>${project.Description}</title>
+ <vendor>E-Government Innovationszentrum (EGIZ)</vendor>
+ <homepage href="${project.Url}"/>
+ <description>${project.Description} (BKU) MOCCA Web Start</description>
+ <description kind="short">${project.Description}</description>
+ <icon kind="shortcut" href="img/chip16.png" width="16" height="16"/>
+ <icon kind="shortcut" href="img/chip24.png" width="24" height="24"/>
+ <icon kind="shortcut" href="img/chip32.png" width="32" height="32"/>
+ <icon kind="shortcut" href="img/chip48.png" width="48" height="48"/>
+ <icon kind="default" href="img/chip16.png" width="16" height="16"/>
+ <icon kind="default" href="img/chip24.png" width="24" height="24"/>
+ <icon kind="default" href="img/chip32.png" width="32" height="32"/>
+ <icon kind="default" href="img/chip48.png" width="48" height="48"/>
+ <icon kind="splash" href="img/splash.png"/>
+ <shortcut online="true">
+ <desktop/>
+ <menu submenu="e-Government"/>
+ </shortcut>
+
+ <offline-allowed/>
+
+ </information>
+
+ <security>
+ <all-permissions/>
+ </security>
+
+ <update check="timeout" policy="prompt-update"/>
+
+ <resources>
+ <java version="1.6+" java-vm-args="-Djava.security.debug=access,failure"/>
+ <property name="jnlp.versionEnabled" value="false"/>
+ $dependencies
+ </resources>
+
+ <application-desc main-class="$mainClass"/>
+</jnlp> \ No newline at end of file
diff --git a/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/template.xml b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/template.xml
new file mode 100644
index 00000000..06b024ec
--- /dev/null
+++ b/mocca-1.2.11/BKUWebStartPackage/src/main/jnlp/template.xml
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ | To strip versions from jar filenames do
+ | for JAR in *jar; do mv JAR {JAR/-[0-9]*/.jar}; done
+ |-->
+<jnlp spec="$jnlpspec" codebase="$$codebase" context="$$context" href="$$name">
+
+ <information>
+ <title>${project.Description}</title>
+ <vendor>E-Government Innovationszentrum (EGIZ)</vendor>
+ <homepage href="${project.Url}"/>
+ <description>${project.Description} (BKU) MOCCA Web Start</description>
+ <description kind="short">${project.Description}</description>
+ <icon kind="shortcut" href="img/chip16.png" width="16" height="16"/>
+ <icon kind="shortcut" href="img/chip24.png" width="24" height="24"/>
+ <icon kind="shortcut" href="img/chip32.png" width="32" height="32"/>
+ <icon kind="shortcut" href="img/chip48.png" width="48" height="48"/>
+ <icon kind="default" href="img/chip16.png" width="16" height="16"/>
+ <icon kind="default" href="img/chip24.png" width="24" height="24"/>
+ <icon kind="default" href="img/chip32.png" width="32" height="32"/>
+ <icon kind="default" href="img/chip48.png" width="48" height="48"/>
+ <icon kind="splash" href="img/splash.png"/>
+ <shortcut online="true">
+ <desktop/>
+ <menu submenu="e-Government"/>
+ </shortcut>
+
+ <offline-allowed/>
+
+ </information>
+
+ <security>
+ <all-permissions/>
+ </security>
+
+ <update check="timeout" policy="prompt-update"/>
+
+ <resources os="Mac OS X">
+ <java version="1.6+" java-vm-args="-d32"/>
+ $dependencies
+ </resources>
+
+ <resources>
+ <java version="1.6+"/>
+ $dependencies
+ </resources>
+
+ <application-desc main-class="$mainClass"/>
+</jnlp> \ No newline at end of file
diff --git a/mocca-1.2.11/LICENSE.txt b/mocca-1.2.11/LICENSE.txt
new file mode 100644
index 00000000..d6456956
--- /dev/null
+++ b/mocca-1.2.11/LICENSE.txt
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ 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.
diff --git a/mocca-1.2.11/NOTICE.txt b/mocca-1.2.11/NOTICE.txt
new file mode 100644
index 00000000..2f25af7d
--- /dev/null
+++ b/mocca-1.2.11/NOTICE.txt
@@ -0,0 +1,17 @@
+MOCCA Project
+Copyright 2008 Federal Chancellery Austria and Graz University of Technology
+
+This product includes software developed at
+E-Government Innovation Center (www.egiz.gv.at).
+
+E-Government Innovation Center is a joint initiative of
+Federal Chancellery Austria and Graz University of Technology.
+
+
+This product includes software developed by third parties
+and provided under an open source license (www.opensource.org).
+
+
+This product includes software provided by
+Stiftung Secure Information and Communication Technologies SIC
+(www.sic.st).
diff --git a/mocca-1.2.11/STAL/catalog.xml b/mocca-1.2.11/STAL/catalog.xml
new file mode 100644
index 00000000..38c98894
--- /dev/null
+++ b/mocca-1.2.11/STAL/catalog.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="system">
+ <nextCatalog catalog="private/cache/retriever/catalog.xml"/>
+</catalog> \ No newline at end of file
diff --git a/mocca-1.2.11/STAL/pom.xml b/mocca-1.2.11/STAL/pom.xml
new file mode 100644
index 00000000..66d6567f
--- /dev/null
+++ b/mocca-1.2.11/STAL/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>STAL</artifactId>
+ <name>STAL</name>
+ <version>1.2.11</version>
+ <dependencies>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <configuration>
+ <debug>false</debug>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <!--build>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jaxws-maven-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>wsimport</goal>
+ </goals>
+ <configuration>
+ <verbose>true</verbose>
+ <bindingDirectory>${basedir}/src/main/custom-binding</bindingDirectory>
+ <bindingFiles>
+ <bindingFile>stalservice-custom.xml</bindingFile>
+ <bindingFile>staltypes-custom.xml</bindingFile>
+ </bindingFiles>
+ <wsdlDirectory>${basedir}/src/main/wsdl</wsdlDirectory>
+ <wsdlFiles>
+ <wsdlFile>stal.wsdl</wsdlFile>
+ </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/generated-sources/wsimport</sourceDestDir>
+ <staleFile>${project.build.directory}/generated-sources/wsimport/.staleFlag</staleFile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build-->
+</project> \ No newline at end of file
diff --git a/mocca-1.2.11/STAL/private/cache/retriever/catalog.xml b/mocca-1.2.11/STAL/private/cache/retriever/catalog.xml
new file mode 100644
index 00000000..c40b0d50
--- /dev/null
+++ b/mocca-1.2.11/STAL/private/cache/retriever/catalog.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog" prefer="system">
+ <system systemId="http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd" uri="java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"/>
+ <system systemId="http://www.w3.org/2001/XMLSchema.xsd" uri="www.w3.org/2001/XMLSchema.xsd"/>
+</catalog> \ No newline at end of file
diff --git a/mocca-1.2.11/STAL/private/cache/retriever/java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd b/mocca-1.2.11/STAL/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/STAL/private/cache/retriever/java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd
@@ -0,0 +1,362 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+<xs:schema
+ targetNamespace = "http://java.sun.com/xml/ns/jaxb"
+ xmlns:jaxb = "http://java.sun.com/xml/ns/jaxb"
+ xmlns:xs = "http://www.w3.org/2001/XMLSchema"
+ elementFormDefault = "qualified"
+ attributeFormDefault = "unqualified">
+ <xs:annotation><xs:documentation>
+ Schema for JAXB 2.0 binding declarations.
+ </xs:documentation></xs:annotation>
+ <xs:group name = "declaration">
+ <xs:annotation><xs:documentation>
+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.
+ </xs:documentation></xs:annotation>
+ <!-- each new binding declaration, not restricted to
+ globalBindings, should be added here -->
+ <xs:choice>
+ <xs:element ref = "jaxb:globalBindings"/>
+ <xs:element ref = "jaxb:schemaBindings"/>
+ <xs:element ref = "jaxb:class"/>
+ <xs:element ref = "jaxb:property"/>
+ <xs:element ref = "jaxb:typesafeEnumClass"/>
+ <xs:element ref = "jaxb:typesafeEnumMember"/>
+ <xs:element ref = "jaxb:javaType"/>
+ <xs:element ref = "jaxb:dom"/>
+ <xs:element ref = "jaxb:inlineBinaryData"/>
+ <xs:any namespace = "##other" processContents = "lax"/>
+ </xs:choice>
+ </xs:group>
+ <xs:attribute name = "version" type="xs:token" >
+ <xs:annotation><xs:documentation>
+Used to specify the version of the binding schema on the schema element for
+inline annotations or jaxb:bindings for external binding.
+ </xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attributeGroup name = "propertyAttributes">
+ <xs:annotation><xs:documentation>
+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
+ </xs:documentation></xs:annotation>
+ <xs:attribute name = "collectionType" type="jaxb:referenceCollectionType"/>
+ <xs:attribute name = "fixedAttributeAsConstantProperty" type = "xs:boolean"/>
+ <xs:attribute name = "enableFailFastCheck" type = "xs:boolean"/>
+ <xs:attribute name = "generateIsSetMethod" type = "xs:boolean"/>
+ <xs:attribute name = "optionalProperty">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="wrapper"/>
+ <xs:enumeration value="primitive"/>
+ <xs:enumeration value="isSet"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name = "generateElementProperty" type="xs:boolean"/>
+ <xs:attribute name = "attachmentRef">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="resolve"/>
+ <xs:enumeration value="doNotResolve"/>
+ <xs:enumeration value="default"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:attributeGroup>
+ <xs:attributeGroup name = "XMLNameToJavaIdMappingDefaults">
+ <xs:annotation><xs:documentation>Customize XMLNames to Java id mapping
+ </xs:documentation></xs:annotation>
+ <xs:attribute name = "underscoreBinding" default = "asWordSeparator" type = "jaxb:underscoreBindingType"/>
+ </xs:attributeGroup>
+ <xs:attributeGroup name = "typesafeEnumClassDefaults">
+ <xs:attribute name = "typesafeEnumMemberName" default = "skipGeneration" type = "jaxb:typesafeEnumMemberNameType"/>
+ <xs:attribute name = "typesafeEnumBase" default = "xs:string" type = "jaxb:typesafeEnumBaseType"/>
+ <xs:attribute name = "typesafeEnumMaxMembers" type="xs:int" default="256"/>
+ </xs:attributeGroup>
+ <xs:element name = "globalBindings">
+ <xs:annotation><xs:documentation>Customization values defined in global scope.</xs:documentation></xs:annotation>
+ <xs:complexType>
+ <xs:sequence minOccurs = "0">
+ <xs:element ref = "jaxb:javaType" minOccurs = "0" maxOccurs = "unbounded"/>
+ <xs:element ref = "jaxb:serializable" minOccurs = "0"/>
+ <xs:any namespace = "##other" processContents = "lax">
+ <xs:annotation> <xs:documentation>allows extension binding declarations to be specified.</xs:documentation></xs:annotation>
+ </xs:any>
+ </xs:sequence>
+ <xs:attributeGroup ref = "jaxb:XMLNameToJavaIdMappingDefaults"/>
+ <xs:attributeGroup ref = "jaxb:typesafeEnumClassDefaults"/>
+ <xs:attributeGroup ref = "jaxb:propertyAttributes"/>
+ <xs:attribute name="generateValueClass" type="xs:boolean"
+ default= "true"/>
+ <xs:attribute name="generateElementClass" type="xs:boolean"
+ default= "false"/>
+ <xs:attribute name="mapSimpleTypeDef" type="xs:boolean"
+ default= "false"/>
+ <xs:attribute name="localScoping" default= "nested">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="nested"/>
+ <xs:enumeration value="toplevel"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name = "enableJavaNamingConventions" default = "true" type = "xs:boolean"/>
+<!-- Removed from JAXB 2.0
+ <xs:attribute name = "bindingStyle" default = "elementBinding" type = "jaxb:bindingStyleType"/>
+-->
+ <xs:attribute name = "choiceContentProperty" default = "false" type = "xs:boolean"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name = "schemaBindings">
+ <xs:annotation><xs:documentation>Customization values with schema scope</xs:documentation></xs:annotation>
+ <xs:complexType>
+ <xs:all>
+ <xs:element name = "package" type = "jaxb:packageType" minOccurs = "0"/>
+ <xs:element name = "nameXmlTransform" type = "jaxb:nameXmlTransformType" minOccurs = "0"/>
+ </xs:all>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name = "class">
+ <xs:annotation><xs:documentation>Customize interface and implementation class.</xs:documentation></xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name = "javadoc" type = "xs:string" minOccurs = "0"/>
+ </xs:sequence>
+ <xs:attribute name = "name" type = "jaxb:javaIdentifierType">
+ <xs:annotation><xs:documentation>Java class name without package prefix.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name = "implClass" type = "jaxb:javaIdentifierType">
+ <xs:annotation><xs:documentation>Implementation class name including package prefix.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="generateValueClass" type="xs:boolean">
+ <xs:annotation><xs:documentation>Default value derived from [jaxb:globalBindings]@generateValueClass.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name = "property">
+ <xs:annotation><xs:documentation>Customize property.</xs:documentation></xs:annotation>
+ <xs:complexType>
+ <xs:all>
+ <xs:element name = "javadoc" type = "xs:string" minOccurs="0"/>
+ <xs:element name = "baseType" type="jaxb:propertyBaseType" minOccurs="0"/>
+ </xs:all>
+ <xs:attribute name = "name" type = "jaxb:javaIdentifierType"/>
+ <xs:attributeGroup ref = "jaxb:propertyAttributes"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name = "javaType">
+ <xs:annotation><xs:documentation>Data type conversions; overriding builtins</xs:documentation></xs:annotation>
+ <xs:complexType>
+ <xs:attribute name = "name" use = "required" type = "jaxb:javaIdentifierType">
+ <xs:annotation><xs:documentation>name of the java type to which xml type is to be bound.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name = "xmlType" type = "xs:QName">
+ <xs:annotation><xs:documentation> xml type to which java datatype has to be bound.Must be present when javaType is scoped to globalBindings</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name = "parseMethod" type = "jaxb:javaIdentifierType"/>
+ <xs:attribute name = "printMethod" type = "jaxb:javaIdentifierType"/>
+ <xs:attribute name = "hasNsContext" default = "false" type = "xs:boolean" >
+ <xs:annotation><xs:documentation>
+If true, the parsMethod and printMethod must reference a method
+signtature that has a second parameter of type NamespaceContext.
+ </xs:documentation></xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name = "typesafeEnumClass">
+ <xs:annotation><xs:documentation> Bind to a type safe enumeration class.</xs:documentation></xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name = "javadoc" type = "xs:string" minOccurs = "0"/>
+ <xs:element ref = "jaxb:typesafeEnumMember" minOccurs = "0" maxOccurs = "unbounded"/>
+ </xs:sequence>
+ <xs:attribute name = "name" type = "jaxb:javaIdentifierType"/>
+ <xs:attribute name = "map" type = "xs:boolean" default = "true"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name = "typesafeEnumMember">
+ <xs:annotation><xs:documentation> Enumeration member name in a type safe enumeration class.</xs:documentation></xs:annotation>
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name = "javadoc" type = "xs:string" minOccurs = "0"/>
+ </xs:sequence>
+ <xs:attribute name = "value" type="xs:anySimpleType"/>
+ <xs:attribute name = "name" use = "required" type = "jaxb:javaIdentifierType"/>
+ </xs:complexType>
+ </xs:element>
+
+ <!-- TYPE DEFINITIONS -->
+
+ <xs:complexType name = "propertyBaseType">
+ <xs:all>
+ <xs:element ref = "jaxb:javaType" minOccurs = "0"/>
+ </xs:all>
+ <xs:attribute name = "name" type = "jaxb:javaIdentifierType">
+ <xs:annotation><xs:documentation>
+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.
+ </xs:documentation></xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+
+<!-- Removed in JAXB 2.0. modelGroupBinding no longer exists.
+ <xs:simpleType name = "bindingStyleType">
+ <xs:annotation><xs:documentation>Allows selection of a binding algorithm</xs:documentation></xs:annotation>
+ <xs:restriction base = "xs:string">
+ <xs:enumeration value = "elementBinding"/>
+ <xs:enumeration value = "modelGroupBinding"/>
+ </xs:restriction>
+ </xs:simpleType>
+-->
+
+ <xs:complexType name = "packageType">
+ <xs:sequence>
+ <xs:element name = "javadoc" type = "xs:string" minOccurs = "0"/>
+ </xs:sequence>
+ <xs:attribute name = "name" type = "jaxb:javaIdentifierType"/>
+ </xs:complexType>
+ <xs:simpleType name = "underscoreBindingType">
+ <xs:annotation><xs:documentation>Treate underscore in XML Name to Java identifier mapping.</xs:documentation></xs:annotation>
+ <xs:restriction base = "xs:string">
+ <xs:enumeration value = "asWordSeparator"/>
+ <xs:enumeration value = "asCharInWord"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name = "typesafeEnumBaseType">
+ <xs:annotation><xs:documentation>
+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"
+ </xs:documentation></xs:annotation>
+ <xs:list itemType = "xs:QName"/>
+ </xs:simpleType>
+ <xs:simpleType name = "typesafeEnumMemberNameType">
+ <xs:annotation><xs:documentation>Used to customize how to handle name collisions.</xs:documentation></xs:annotation>
+ <xs:restriction base = "xs:string">
+ <xs:enumeration value = "generateName"/>
+ <xs:enumeration value = "generateError"/>
+ <xs:enumeration value = "skipGeneration"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name = "javaIdentifierType">
+ <xs:annotation><xs:documentation>Placeholder type to indicate Legal Java identifier.</xs:documentation></xs:annotation>
+ <xs:list itemType = "xs:NCName"/>
+ </xs:simpleType>
+ <xs:complexType name = "nameXmlTransformRule">
+ <xs:annotation><xs:documentation>Rule to transform an Xml name into another Xml name</xs:documentation></xs:annotation>
+ <xs:attribute name = "prefix" type = "xs:string">
+ <xs:annotation><xs:documentation>prepend the string to QName.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name = "suffix" type = "xs:string">
+ <xs:annotation><xs:documentation>Append the string to QName.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ <xs:complexType name = "nameXmlTransformType">
+ <xs:annotation><xs:documentation>Allows transforming an xml name into another xml name. Use case UDDI 2.0 schema.</xs:documentation></xs:annotation>
+ <xs:all>
+ <xs:element name = "typeName" type = "jaxb:nameXmlTransformRule" minOccurs = "0">
+ <xs:annotation><xs:documentation>Mapping rule for type definitions.</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name = "elementName" type = "jaxb:nameXmlTransformRule" minOccurs = "0">
+ <xs:annotation><xs:documentation>Mapping rule for elements</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name = "modelGroupName" type = "jaxb:nameXmlTransformRule" minOccurs = "0">
+ <xs:annotation><xs:documentation>Mapping rule for model group</xs:documentation></xs:annotation>
+ </xs:element>
+ <xs:element name = "anonymousTypeName" type = "jaxb:nameXmlTransformRule" minOccurs = "0">
+ <xs:annotation><xs:documentation>Mapping rule for class names generated for an anonymous type.</xs:documentation></xs:annotation>
+ </xs:element>
+ </xs:all>
+ </xs:complexType>
+ <xs:attribute name = "extensionBindingPrefixes">
+ <xs:annotation><xs:documentation>
+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.</xs:documentation></xs:annotation>
+ <xs:simpleType>
+ <xs:list itemType = "xs:normalizedString"/>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:element name = "bindings">
+ <xs:annotation><xs:documentation>
+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.
+ </xs:documentation></xs:annotation>
+ <!-- a <bindings> element can contain arbitrary number of binding declarations or nested <bindings> elements -->
+ <xs:complexType>
+ <xs:sequence>
+ <xs:choice minOccurs = "0" maxOccurs = "unbounded">
+ <xs:group ref = "jaxb:declaration"/>
+ <xs:element ref = "jaxb:bindings"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attribute name = "schemaLocation" type = "xs:anyURI">
+ <xs:annotation><xs:documentation>
+Location of the remote schema to associate binding declarations with.
+ </xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name = "node" type = "xs:string">
+ <xs:annotation><xs:documentation>
+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.
+ </xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute name = "version" type = "xs:token">
+ <xs:annotation><xs:documentation>
+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.
+ </xs:documentation></xs:annotation>
+ </xs:attribute>
+ <xs:attribute ref = "jaxb:version">
+ <xs:annotation><xs:documentation>
+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.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:simpleType name="referenceCollectionType">
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="indexed"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:restriction base="jaxb:javaIdentifierType"/>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ <xs:element name="dom">
+ <xs:complexType>
+ <xs:attribute name = "type" type="xs:NCName" default="w3c">
+ <xs:annotation><xs:documentation>Specify DOM API to bind to JAXB property to.</xs:documentation></xs:annotation>
+ </xs:attribute>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="inlineBinaryData">
+ <xs:annotation><xs:documentation>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.</xs:documentation>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name = "serializable">
+ <xs:complexType>
+ <xs:attribute name="uid" type="xs:long" default="1"/>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
+
diff --git a/mocca-1.2.11/STAL/private/cache/retriever/www.w3.org/2001/XMLSchema.xsd b/mocca-1.2.11/STAL/private/cache/retriever/www.w3.org/2001/XMLSchema.xsd
new file mode 100644
index 00000000..2e9a2729
--- /dev/null
+++ b/mocca-1.2.11/STAL/private/cache/retriever/www.w3.org/2001/XMLSchema.xsd
@@ -0,0 +1,2534 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- XML Schema schema for XML Schemas: Part 1: Structures -->
+<!-- Note this schema is NOT the normative structures schema. -->
+<!-- The prose copy in the structures REC is the normative -->
+<!-- version (which shouldn't differ from this one except for -->
+<!-- this comment and entity expansions, but just in case -->
+<!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd" [
+
+<!-- provide ID type information even for parsers which only read the
+ internal subset -->
+<!ATTLIST xs:schema id ID #IMPLIED>
+<!ATTLIST xs:complexType id ID #IMPLIED>
+<!ATTLIST xs:complexContent id ID #IMPLIED>
+<!ATTLIST xs:simpleContent id ID #IMPLIED>
+<!ATTLIST xs:extension id ID #IMPLIED>
+<!ATTLIST xs:element id ID #IMPLIED>
+<!ATTLIST xs:group id ID #IMPLIED>
+<!ATTLIST xs:all id ID #IMPLIED>
+<!ATTLIST xs:choice id ID #IMPLIED>
+<!ATTLIST xs:sequence id ID #IMPLIED>
+<!ATTLIST xs:any id ID #IMPLIED>
+<!ATTLIST xs:anyAttribute id ID #IMPLIED>
+<!ATTLIST xs:attribute id ID #IMPLIED>
+<!ATTLIST xs:attributeGroup id ID #IMPLIED>
+<!ATTLIST xs:unique id ID #IMPLIED>
+<!ATTLIST xs:key id ID #IMPLIED>
+<!ATTLIST xs:keyref id ID #IMPLIED>
+<!ATTLIST xs:selector id ID #IMPLIED>
+<!ATTLIST xs:field id ID #IMPLIED>
+<!ATTLIST xs:include id ID #IMPLIED>
+<!ATTLIST xs:import id ID #IMPLIED>
+<!ATTLIST xs:redefine id ID #IMPLIED>
+<!ATTLIST xs:notation id ID #IMPLIED>
+<!--
+ keep this schema XML1.0 DTD valid
+ -->
+ <!ENTITY % schemaAttrs 'xmlns:hfp CDATA #IMPLIED'>
+
+ <!ELEMENT hfp:hasFacet EMPTY>
+ <!ATTLIST hfp:hasFacet
+ name NMTOKEN #REQUIRED>
+
+ <!ELEMENT hfp:hasProperty EMPTY>
+ <!ATTLIST hfp:hasProperty
+ name NMTOKEN #REQUIRED
+ value CDATA #REQUIRED>
+<!--
+ Make sure that processors that do not read the external
+ subset will know about the various IDs we declare
+ -->
+ <!ATTLIST xs:simpleType id ID #IMPLIED>
+ <!ATTLIST xs:maxExclusive id ID #IMPLIED>
+ <!ATTLIST xs:minExclusive id ID #IMPLIED>
+ <!ATTLIST xs:maxInclusive id ID #IMPLIED>
+ <!ATTLIST xs:minInclusive id ID #IMPLIED>
+ <!ATTLIST xs:totalDigits id ID #IMPLIED>
+ <!ATTLIST xs:fractionDigits id ID #IMPLIED>
+ <!ATTLIST xs:length id ID #IMPLIED>
+ <!ATTLIST xs:minLength id ID #IMPLIED>
+ <!ATTLIST xs:maxLength id ID #IMPLIED>
+ <!ATTLIST xs:enumeration id ID #IMPLIED>
+ <!ATTLIST xs:pattern id ID #IMPLIED>
+ <!ATTLIST xs:appinfo id ID #IMPLIED>
+ <!ATTLIST xs:documentation id ID #IMPLIED>
+ <!ATTLIST xs:list id ID #IMPLIED>
+ <!ATTLIST xs:union id ID #IMPLIED>
+ ]>
+<xs:schema targetNamespace="http://www.w3.org/2001/XMLSchema" blockDefault="#all" elementFormDefault="qualified" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="EN" xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty">
+ <xs:annotation>
+ <xs:documentation>
+ 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
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html">
+ The schema corresponding to this document is normative,
+ with respect to the syntactic constraints it expresses in the
+ XML Schema language. The documentation (within &lt;documentation> elements)
+ below, is not normative, but rather highlights important aspects of
+ the W3C Recommendation of which this is a part</xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>
+ The simpleType element and all of its members are defined
+ towards the end of this schema document</xs:documentation>
+ </xs:annotation>
+
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd">
+ <xs:annotation>
+ <xs:documentation>
+ Get access to the xml: attribute groups for xml:lang
+ as declared on 'schema' and 'documentation' below
+ </xs:documentation>
+ </xs:annotation>
+ </xs:import>
+
+ <xs:complexType name="openAttrs">
+ <xs:annotation>
+ <xs:documentation>
+ This type is extended by almost all schema types
+ to allow attributes from other namespaces to be
+ added to user schemas.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:anyType">
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="annotated">
+ <xs:annotation>
+ <xs:documentation>
+ This type is extended by all types which allow annotation
+ other than &lt;schema&gt; itself
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="schemaTop">
+ <xs:annotation>
+ <xs:documentation>
+ 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.</xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:group ref="xs:redefinable"/>
+ <xs:element ref="xs:element"/>
+ <xs:element ref="xs:attribute"/>
+ <xs:element ref="xs:notation"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="redefinable">
+ <xs:annotation>
+ <xs:documentation>
+ This group is for the
+ elements which can self-redefine (see &lt;redefine> below).</xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element ref="xs:simpleType"/>
+ <xs:element ref="xs:complexType"/>
+ <xs:element ref="xs:group"/>
+ <xs:element ref="xs:attributeGroup"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:simpleType name="formChoice">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="qualified"/>
+ <xs:enumeration value="unqualified"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="reducedDerivationControl">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="derivationSet">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {extension, restriction}</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list itemType="xs:reducedDerivationControl"/>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:simpleType name="typeDerivationControl">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ <xs:enumeration value="list"/>
+ <xs:enumeration value="union"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="fullDerivationSet">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {extension, restriction, list, union}</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list itemType="xs:typeDerivationControl"/>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:element name="schema" id="schema">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="xs:include"/>
+ <xs:element ref="xs:import"/>
+ <xs:element ref="xs:redefine"/>
+ <xs:element ref="xs:annotation"/>
+ </xs:choice>
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:group ref="xs:schemaTop"/>
+ <xs:element ref="xs:annotation" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:sequence>
+ <xs:attribute name="targetNamespace" type="xs:anyURI"/>
+ <xs:attribute name="version" type="xs:token"/>
+ <xs:attribute name="finalDefault" type="xs:fullDerivationSet" use="optional" default=""/>
+ <xs:attribute name="blockDefault" type="xs:blockSet" use="optional" default=""/>
+ <xs:attribute name="attributeFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
+ <xs:attribute name="elementFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
+ <xs:attribute name="id" type="xs:ID"/>
+ <xs:attribute ref="xml:lang"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:key name="element">
+ <xs:selector xpath="xs:element"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="attribute">
+ <xs:selector xpath="xs:attribute"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="type">
+ <xs:selector xpath="xs:complexType|xs:simpleType"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="group">
+ <xs:selector xpath="xs:group"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="attributeGroup">
+ <xs:selector xpath="xs:attributeGroup"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="notation">
+ <xs:selector xpath="xs:notation"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ <xs:key name="identityConstraint">
+ <xs:selector xpath=".//xs:key|.//xs:unique|.//xs:keyref"/>
+ <xs:field xpath="@name"/>
+ </xs:key>
+
+ </xs:element>
+
+ <xs:simpleType name="allNNI">
+ <xs:annotation><xs:documentation>
+ for maxOccurs</xs:documentation></xs:annotation>
+ <xs:union memberTypes="xs:nonNegativeInteger">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="unbounded"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:attributeGroup name="occurs">
+ <xs:annotation><xs:documentation>
+ for all particles</xs:documentation></xs:annotation>
+ <xs:attribute name="minOccurs" type="xs:nonNegativeInteger" use="optional" default="1"/>
+ <xs:attribute name="maxOccurs" type="xs:allNNI" use="optional" default="1"/>
+ </xs:attributeGroup>
+
+ <xs:attributeGroup name="defRef">
+ <xs:annotation><xs:documentation>
+ for element, group and attributeGroup,
+ which both define and reference</xs:documentation></xs:annotation>
+ <xs:attribute name="name" type="xs:NCName"/>
+ <xs:attribute name="ref" type="xs:QName"/>
+ </xs:attributeGroup>
+
+ <xs:group name="typeDefParticle">
+ <xs:annotation>
+ <xs:documentation>
+ 'complexType' uses this</xs:documentation></xs:annotation>
+ <xs:choice>
+ <xs:element name="group" type="xs:groupRef"/>
+ <xs:element ref="xs:all"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ </xs:choice>
+ </xs:group>
+
+
+
+ <xs:group name="nestedParticle">
+ <xs:choice>
+ <xs:element name="element" type="xs:localElement"/>
+ <xs:element name="group" type="xs:groupRef"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ <xs:element ref="xs:any"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="particle">
+ <xs:choice>
+ <xs:element name="element" type="xs:localElement"/>
+ <xs:element name="group" type="xs:groupRef"/>
+ <xs:element ref="xs:all"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ <xs:element ref="xs:any"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="attribute">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="xs:defRef"/>
+ <xs:attribute name="type" type="xs:QName"/>
+ <xs:attribute name="use" use="optional" default="optional">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="prohibited"/>
+ <xs:enumeration value="optional"/>
+ <xs:enumeration value="required"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="default" type="xs:string"/>
+ <xs:attribute name="fixed" type="xs:string"/>
+ <xs:attribute name="form" type="xs:formChoice"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelAttribute">
+ <xs:complexContent>
+ <xs:restriction base="xs:attribute">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:attribute name="form" use="prohibited"/>
+ <xs:attribute name="use" use="prohibited"/>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="attrDecls">
+ <xs:sequence>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element name="attribute" type="xs:attribute"/>
+ <xs:element name="attributeGroup" type="xs:attributeGroupRef"/>
+ </xs:choice>
+ <xs:element ref="xs:anyAttribute" minOccurs="0"/>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:element name="anyAttribute" type="xs:wildcard" id="anyAttribute">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:group name="complexTypeModel">
+ <xs:choice>
+ <xs:element ref="xs:simpleContent"/>
+ <xs:element ref="xs:complexContent"/>
+ <xs:sequence>
+ <xs:annotation>
+ <xs:documentation>
+ This branch is short for
+ &lt;complexContent>
+ &lt;restriction base="xs:anyType">
+ ...
+ &lt;/restriction>
+ &lt;/complexContent></xs:documentation>
+ </xs:annotation>
+ <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ </xs:choice>
+ </xs:group>
+
+ <xs:complexType name="complexType" abstract="true">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:complexTypeModel"/>
+ <xs:attribute name="name" type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation>
+ Will be restricted to required or forbidden</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="mixed" type="xs:boolean" use="optional" default="false">
+ <xs:annotation>
+ <xs:documentation>
+ Not allowed if simpleContent child is chosen.
+ May be overriden by setting on complexContent child.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="final" type="xs:derivationSet"/>
+ <xs:attribute name="block" type="xs:derivationSet"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelComplexType">
+ <xs:complexContent>
+ <xs:restriction base="xs:complexType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:complexTypeModel"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="localComplexType">
+ <xs:complexContent>
+ <xs:restriction base="xs:complexType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:complexTypeModel"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="prohibited"/>
+ <xs:attribute name="abstract" use="prohibited"/>
+ <xs:attribute name="final" use="prohibited"/>
+ <xs:attribute name="block" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="restrictionType">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:group ref="xs:typeDefParticle"/>
+ <xs:group ref="xs:simpleRestrictionModel"/>
+ </xs:choice>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:attribute name="base" type="xs:QName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="complexRestrictionType">
+ <xs:complexContent>
+ <xs:restriction base="xs:restrictionType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>This choice is added simply to
+ make this a valid restriction per the REC</xs:documentation>
+ </xs:annotation>
+ <xs:group ref="xs:typeDefParticle"/>
+ </xs:choice>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="extensionType">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:attribute name="base" type="xs:QName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="complexContent" id="complexContent">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:choice>
+ <xs:element name="restriction" type="xs:complexRestrictionType"/>
+ <xs:element name="extension" type="xs:extensionType"/>
+ </xs:choice>
+ <xs:attribute name="mixed" type="xs:boolean">
+ <xs:annotation>
+ <xs:documentation>
+ Overrides any setting on complexType parent.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="simpleRestrictionType">
+ <xs:complexContent>
+ <xs:restriction base="xs:restrictionType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:annotation>
+ <xs:documentation>This choice is added simply to
+ make this a valid restriction per the REC</xs:documentation>
+ </xs:annotation>
+ <xs:group ref="xs:simpleRestrictionModel"/>
+ </xs:choice>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="simpleExtensionType">
+ <xs:complexContent>
+ <xs:restriction base="xs:extensionType">
+ <xs:sequence>
+ <xs:annotation>
+ <xs:documentation>
+ No typeDefParticle group reference</xs:documentation>
+ </xs:annotation>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="simpleContent" id="simpleContent">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:choice>
+ <xs:element name="restriction" type="xs:simpleRestrictionType"/>
+ <xs:element name="extension" type="xs:simpleExtensionType"/>
+ </xs:choice>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="complexType" type="xs:topLevelComplexType" id="complexType">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType"/>
+ </xs:annotation>
+ </xs:element>
+
+
+ <xs:simpleType name="blockSet">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {substitution, extension,
+ restriction}</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ <xs:enumeration value="substitution"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:complexType name="element" abstract="true">
+ <xs:annotation>
+ <xs:documentation>
+ 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.</xs:documentation>
+ </xs:annotation>
+
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="xs:defRef"/>
+ <xs:attribute name="type" type="xs:QName"/>
+ <xs:attribute name="substitutionGroup" type="xs:QName"/>
+ <xs:attributeGroup ref="xs:occurs"/>
+ <xs:attribute name="default" type="xs:string"/>
+ <xs:attribute name="fixed" type="xs:string"/>
+ <xs:attribute name="nillable" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
+ <xs:attribute name="final" type="xs:derivationSet"/>
+ <xs:attribute name="block" type="xs:blockSet"/>
+ <xs:attribute name="form" type="xs:formChoice"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelElement">
+ <xs:complexContent>
+ <xs:restriction base="xs:element">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:attribute name="form" use="prohibited"/>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="localElement">
+ <xs:complexContent>
+ <xs:restriction base="xs:element">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="substitutionGroup" use="prohibited"/>
+ <xs:attribute name="final" use="prohibited"/>
+ <xs:attribute name="abstract" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="element" type="xs:topLevelElement" id="element">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="group" abstract="true">
+ <xs:annotation>
+ <xs:documentation>
+ group type for explicit groups, named top-level groups and
+ group references</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:particle" minOccurs="0" maxOccurs="unbounded"/>
+ <xs:attributeGroup ref="xs:defRef"/>
+ <xs:attributeGroup ref="xs:occurs"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="realGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:group">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0" maxOccurs="1">
+ <xs:element ref="xs:all"/>
+ <xs:element ref="xs:choice"/>
+ <xs:element ref="xs:sequence"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="namedGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:realGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="1" maxOccurs="1">
+ <xs:element name="all">
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:all">
+ <xs:group ref="xs:allModel"/>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="choice" type="xs:simpleExplicitGroup"/>
+ <xs:element name="sequence" type="xs:simpleExplicitGroup"/>
+ </xs:choice>
+ </xs:sequence>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="groupRef">
+ <xs:complexContent>
+ <xs:restriction base="xs:realGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="required" type="xs:QName"/>
+ <xs:attribute name="name" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="explicitGroup">
+ <xs:annotation>
+ <xs:documentation>
+ group type for the three kinds of group</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:group">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName" use="prohibited"/>
+ <xs:attribute name="ref" type="xs:QName" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="simpleExplicitGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:explicitGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="minOccurs" use="prohibited"/>
+ <xs:attribute name="maxOccurs" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="allModel">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:annotation>
+ <xs:documentation>This choice with min/max is here to
+ avoid a pblm with the Elt:All/Choice/Seq
+ Particle derivation constraint</xs:documentation>
+ </xs:annotation>
+ <xs:element name="element" type="xs:narrowMaxMin"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:group>
+
+
+ <xs:complexType name="narrowMaxMin">
+ <xs:annotation>
+ <xs:documentation>restricted max/min</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:localElement">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="simpleType" type="xs:localSimpleType"/>
+ <xs:element name="complexType" type="xs:localComplexType"/>
+ </xs:choice>
+ <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="minOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="maxOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:allNNI">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="all">
+ <xs:annotation>
+ <xs:documentation>
+ Only elements allowed inside</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:restriction base="xs:explicitGroup">
+ <xs:group ref="xs:allModel"/>
+ <xs:attribute name="minOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:enumeration value="0"/>
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:attribute name="maxOccurs" use="optional" default="1">
+ <xs:simpleType>
+ <xs:restriction base="xs:allNNI">
+ <xs:enumeration value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="all" id="all" type="xs:all">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="choice" type="xs:explicitGroup" id="choice">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="sequence" type="xs:explicitGroup" id="sequence">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="group" type="xs:namedGroup" id="group">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="wildcard">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="namespace" type="xs:namespaceList" use="optional" default="##any"/>
+ <xs:attribute name="processContents" use="optional" default="strict">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="skip"/>
+ <xs:enumeration value="lax"/>
+ <xs:enumeration value="strict"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="any" id="any">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:wildcard">
+ <xs:attributeGroup ref="xs:occurs"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ simple type for the value of the 'namespace' attr of
+ 'any' and 'anyAttribute'</xs:documentation>
+ </xs:annotation>
+ <xs:annotation>
+ <xs:documentation>
+ 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</xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="namespaceList">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="##any"/>
+ <xs:enumeration value="##other"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:anyURI">
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="##targetNamespace"/>
+ <xs:enumeration value="##local"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:element name="attribute" type="xs:topLevelAttribute" id="attribute">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="attributeGroup" abstract="true">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:attrDecls"/>
+ <xs:attributeGroup ref="xs:defRef"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="namedAttributeGroup">
+ <xs:complexContent>
+ <xs:restriction base="xs:attributeGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:attrDecls"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required" type="xs:NCName"/>
+ <xs:attribute name="ref" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="attributeGroupRef">
+ <xs:complexContent>
+ <xs:restriction base="xs:attributeGroup">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="ref" use="required" type="xs:QName"/>
+ <xs:attribute name="name" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="attributeGroup" type="xs:namedAttributeGroup" id="attributeGroup">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="include" id="include">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="redefine" id="redefine">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="xs:annotation"/>
+ <xs:group ref="xs:redefinable"/>
+ </xs:choice>
+ <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="import" id="import">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="namespace" type="xs:anyURI"/>
+ <xs:attribute name="schemaLocation" type="xs:anyURI"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="selector" id="selector">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="xpath" use="required">
+ <xs:simpleType>
+ <xs:annotation>
+ <xs:documentation>A subset of XPath expressions for use
+in selectors</xs:documentation>
+ <xs:documentation>A utility type, not for public
+use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:annotation>
+ <xs:documentation>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
+ </xs:documentation>
+ </xs:annotation>
+ <xs:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="field" id="field">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="xpath" use="required">
+ <xs:simpleType>
+ <xs:annotation>
+ <xs:documentation>A subset of XPath expressions for use
+in fields</xs:documentation>
+ <xs:documentation>A utility type, not for public
+use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:annotation>
+ <xs:documentation>The following pattern is intended to allow XPath
+ expressions per the same EBNF as for selector,
+ with the following change:
+ Path ::= ('.//')? ( Step '/' )* ( Step | '@' NameTest )
+ </xs:documentation>
+ </xs:annotation>
+ <xs:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*">
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="keybase">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element ref="xs:selector"/>
+ <xs:element ref="xs:field" minOccurs="1" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:group name="identityConstraint">
+ <xs:annotation>
+ <xs:documentation>The three kinds of identity constraints, all with
+ type of or derived from 'keybase'.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element ref="xs:unique"/>
+ <xs:element ref="xs:key"/>
+ <xs:element ref="xs:keyref"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:element name="unique" type="xs:keybase" id="unique">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="key" type="xs:keybase" id="key">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="keyref" id="keyref">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:keybase">
+ <xs:attribute name="refer" type="xs:QName" use="required"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="notation" id="notation">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="name" type="xs:NCName" use="required"/>
+ <xs:attribute name="public" type="xs:public"/>
+ <xs:attribute name="system" type="xs:anyURI"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:simpleType name="public">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ <xs:documentation>
+ A public identifier, per ISO 8879</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:token"/>
+ </xs:simpleType>
+
+ <xs:element name="appinfo" id="appinfo">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"/>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:any processContents="lax"/>
+ </xs:sequence>
+ <xs:attribute name="source" type="xs:anyURI"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="documentation" id="documentation">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation"/>
+ </xs:annotation>
+ <xs:complexType mixed="true">
+ <xs:sequence minOccurs="0" maxOccurs="unbounded">
+ <xs:any processContents="lax"/>
+ </xs:sequence>
+ <xs:attribute name="source" type="xs:anyURI"/>
+ <xs:attribute ref="xml:lang"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="annotation" id="annotation">
+ <xs:annotation>
+ <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:extension base="xs:openAttrs">
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
+ <xs:element ref="xs:appinfo"/>
+ <xs:element ref="xs:documentation"/>
+ </xs:choice>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ notations for use within XML Schema schemas</xs:documentation>
+ </xs:annotation>
+
+ <xs:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
+ <xs:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
+
+ <xs:complexType name="anyType" mixed="true">
+ <xs:annotation>
+ <xs:documentation>
+ Not the real urType, but as close an approximation as we can
+ get in the XML representation</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
+ </xs:sequence>
+ <xs:anyAttribute processContents="lax"/>
+ </xs:complexType>
+
+ <xs:annotation>
+ <xs:documentation>
+ First the built-in primitive datatypes. These definitions are for
+ information only, the real built-in definitions are magic.
+ </xs:documentation>
+
+ <xs:documentation>
+ 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
+
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="string" id="string">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#string"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="preserve" id="string.preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="boolean" id="boolean">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#boolean"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="boolean.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="float" id="float">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="total"/>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ <hfp:hasProperty name="numeric" value="true"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#float"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="float.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="double" id="double">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="total"/>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ <hfp:hasProperty name="numeric" value="true"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#double"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="double.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="decimal" id="decimal">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="totalDigits"/>
+ <hfp:hasFacet name="fractionDigits"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="total"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="true"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#decimal"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="decimal.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="duration" id="duration">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#duration"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="duration.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="dateTime" id="dateTime">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="dateTime.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="time" id="time">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#time"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="time.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="date" id="date">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#date"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="date.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gYearMonth" id="gYearMonth">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#gYearMonth"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="gYearMonth.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gYear" id="gYear">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#gYear"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="gYear.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gMonthDay" id="gMonthDay">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#gMonthDay"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="gMonthDay.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gDay" id="gDay">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#gDay"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="gDay.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="gMonth" id="gMonth">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="maxInclusive"/>
+ <hfp:hasFacet name="maxExclusive"/>
+ <hfp:hasFacet name="minInclusive"/>
+ <hfp:hasFacet name="minExclusive"/>
+ <hfp:hasProperty name="ordered" value="partial"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#gMonth"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="gMonth.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="hexBinary" id="hexBinary">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#binary"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="hexBinary.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="base64Binary" id="base64Binary">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#base64Binary"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="base64Binary.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="anyURI" id="anyURI">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#anyURI"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="anyURI.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="QName" id="QName">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#QName"/>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="QName.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NOTATION" id="NOTATION">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#NOTATION"/>
+ <xs:documentation>
+ 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.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:anySimpleType">
+ <xs:whiteSpace value="collapse" fixed="true"
+ id="NOTATION.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:annotation>
+ <xs:documentation>
+ Now the derived primitive types
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="normalizedString" id="normalizedString">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#normalizedString"/>
+ </xs:annotation>
+ <xs:restriction base="xs:string">
+ <xs:whiteSpace value="replace"
+ id="normalizedString.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="token" id="token">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#token"/>
+ </xs:annotation>
+ <xs:restriction base="xs:normalizedString">
+ <xs:whiteSpace value="collapse" id="token.whiteSpace"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="language" id="language">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#language"/>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:pattern
+ value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"
+ id="language.pattern">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.ietf.org/rfc/rfc3066.txt">
+ pattern specifies the content of section 2.12 of XML 1.0e2
+ and RFC 3066 (Revised version of RFC 1766).
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="IDREFS" id="IDREFS">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#IDREFS"/>
+ </xs:annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list itemType="xs:IDREF"/>
+ </xs:simpleType>
+ <xs:minLength value="1" id="IDREFS.minLength"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="ENTITIES" id="ENTITIES">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#ENTITIES"/>
+ </xs:annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list itemType="xs:ENTITY"/>
+ </xs:simpleType>
+ <xs:minLength value="1" id="ENTITIES.minLength"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NMTOKEN" id="NMTOKEN">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN"/>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="\c+" id="NMTOKEN.pattern">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/REC-xml#NT-Nmtoken">
+ pattern matches production 7 from the XML spec
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NMTOKENS" id="NMTOKENS">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasFacet name="length"/>
+ <hfp:hasFacet name="minLength"/>
+ <hfp:hasFacet name="maxLength"/>
+ <hfp:hasFacet name="enumeration"/>
+ <hfp:hasFacet name="whiteSpace"/>
+ <hfp:hasFacet name="pattern"/>
+ <hfp:hasProperty name="ordered" value="false"/>
+ <hfp:hasProperty name="bounded" value="false"/>
+ <hfp:hasProperty name="cardinality"
+ value="countably infinite"/>
+ <hfp:hasProperty name="numeric" value="false"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS"/>
+ </xs:annotation>
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list itemType="xs:NMTOKEN"/>
+ </xs:simpleType>
+ <xs:minLength value="1" id="NMTOKENS.minLength"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="Name" id="Name">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#Name"/>
+ </xs:annotation>
+ <xs:restriction base="xs:token">
+ <xs:pattern value="\i\c*" id="Name.pattern">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/REC-xml#NT-Name">
+ pattern matches production 5 from the XML spec
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="NCName" id="NCName">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#NCName"/>
+ </xs:annotation>
+ <xs:restriction base="xs:Name">
+ <xs:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/REC-xml-names/#NT-NCName">
+ pattern matches production 4 from the Namespaces in XML spec
+ </xs:documentation>
+ </xs:annotation>
+ </xs:pattern>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="ID" id="ID">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#ID"/>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="IDREF" id="IDREF">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#IDREF"/>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="ENTITY" id="ENTITY">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#ENTITY"/>
+ </xs:annotation>
+ <xs:restriction base="xs:NCName"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="integer" id="integer">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#integer"/>
+ </xs:annotation>
+ <xs:restriction base="xs:decimal">
+ <xs:fractionDigits value="0" fixed="true" id="integer.fractionDigits"/>
+ <xs:pattern value="[\-+]?[0-9]+"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="nonPositiveInteger" id="nonPositiveInteger">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:integer">
+ <xs:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="negativeInteger" id="negativeInteger">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#negativeInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:nonPositiveInteger">
+ <xs:maxInclusive value="-1" id="negativeInteger.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="long" id="long">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#long"/>
+ </xs:annotation>
+ <xs:restriction base="xs:integer">
+ <xs:minInclusive value="-9223372036854775808" id="long.minInclusive"/>
+ <xs:maxInclusive value="9223372036854775807" id="long.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="int" id="int">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#int"/>
+ </xs:annotation>
+ <xs:restriction base="xs:long">
+ <xs:minInclusive value="-2147483648" id="int.minInclusive"/>
+ <xs:maxInclusive value="2147483647" id="int.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="short" id="short">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#short"/>
+ </xs:annotation>
+ <xs:restriction base="xs:int">
+ <xs:minInclusive value="-32768" id="short.minInclusive"/>
+ <xs:maxInclusive value="32767" id="short.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="byte" id="byte">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#byte"/>
+ </xs:annotation>
+ <xs:restriction base="xs:short">
+ <xs:minInclusive value="-128" id="byte.minInclusive"/>
+ <xs:maxInclusive value="127" id="byte.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="nonNegativeInteger" id="nonNegativeInteger">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:integer">
+ <xs:minInclusive value="0" id="nonNegativeInteger.minInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedLong" id="unsignedLong">
+ <xs:annotation>
+ <xs:appinfo>
+ <hfp:hasProperty name="bounded" value="true"/>
+ <hfp:hasProperty name="cardinality" value="finite"/>
+ </xs:appinfo>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#unsignedLong"/>
+ </xs:annotation>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:maxInclusive value="18446744073709551615"
+ id="unsignedLong.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedInt" id="unsignedInt">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#unsignedInt"/>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedLong">
+ <xs:maxInclusive value="4294967295"
+ id="unsignedInt.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedShort" id="unsignedShort">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#unsignedShort"/>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedInt">
+ <xs:maxInclusive value="65535"
+ id="unsignedShort.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="unsignedByte" id="unsignedByte">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#unsignedByte"/>
+ </xs:annotation>
+ <xs:restriction base="xs:unsignedShort">
+ <xs:maxInclusive value="255" id="unsignedByte.maxInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="positiveInteger" id="positiveInteger">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#positiveInteger"/>
+ </xs:annotation>
+ <xs:restriction base="xs:nonNegativeInteger">
+ <xs:minInclusive value="1" id="positiveInteger.minInclusive"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:simpleType name="derivationControl">
+ <xs:annotation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="substitution"/>
+ <xs:enumeration value="extension"/>
+ <xs:enumeration value="restriction"/>
+ <xs:enumeration value="list"/>
+ <xs:enumeration value="union"/>
+ </xs:restriction>
+ </xs:simpleType>
+
+ <xs:group name="simpleDerivation">
+ <xs:choice>
+ <xs:element ref="xs:restriction"/>
+ <xs:element ref="xs:list"/>
+ <xs:element ref="xs:union"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:simpleType name="simpleDerivationSet">
+ <xs:annotation>
+ <xs:documentation>
+ #all or (possibly empty) subset of {restriction, union, list}
+ </xs:documentation>
+ <xs:documentation>
+ A utility type, not for public use</xs:documentation>
+ </xs:annotation>
+ <xs:union>
+ <xs:simpleType>
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="#all"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType>
+ <xs:list>
+ <xs:simpleType>
+ <xs:restriction base="xs:derivationControl">
+ <xs:enumeration value="list"/>
+ <xs:enumeration value="union"/>
+ <xs:enumeration value="restriction"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:list>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+
+ <xs:complexType name="simpleType" abstract="true">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:simpleDerivation"/>
+ <xs:attribute name="final" type="xs:simpleDerivationSet"/>
+ <xs:attribute name="name" type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation>
+ Can be restricted to required or forbidden
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="topLevelSimpleType">
+ <xs:complexContent>
+ <xs:restriction base="xs:simpleType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:simpleDerivation"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="required"
+ type="xs:NCName">
+ <xs:annotation>
+ <xs:documentation>
+ Required at the top level
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="localSimpleType">
+ <xs:complexContent>
+ <xs:restriction base="xs:simpleType">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ <xs:group ref="xs:simpleDerivation"/>
+ </xs:sequence>
+ <xs:attribute name="name" use="prohibited">
+ <xs:annotation>
+ <xs:documentation>
+ Forbidden when nested
+ </xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+ <xs:attribute name="final" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="simpleType" type="xs:topLevelSimpleType" id="simpleType">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:group name="facets">
+ <xs:annotation>
+ <xs:documentation>
+ 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.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:choice>
+ <xs:element ref="xs:minExclusive"/>
+ <xs:element ref="xs:minInclusive"/>
+ <xs:element ref="xs:maxExclusive"/>
+ <xs:element ref="xs:maxInclusive"/>
+ <xs:element ref="xs:totalDigits"/>
+ <xs:element ref="xs:fractionDigits"/>
+ <xs:element ref="xs:length"/>
+ <xs:element ref="xs:minLength"/>
+ <xs:element ref="xs:maxLength"/>
+ <xs:element ref="xs:enumeration"/>
+ <xs:element ref="xs:whiteSpace"/>
+ <xs:element ref="xs:pattern"/>
+ </xs:choice>
+ </xs:group>
+
+ <xs:group name="simpleRestrictionModel">
+ <xs:sequence>
+ <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
+ <xs:group ref="xs:facets" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:group>
+
+ <xs:element name="restriction" id="restriction">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-restriction">
+ base attribute and simpleType child are mutually
+ exclusive, but one or other is required
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:group ref="xs:simpleRestrictionModel"/>
+ <xs:attribute name="base" type="xs:QName" use="optional"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="list" id="list">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-list">
+ itemType attribute and simpleType child are mutually
+ exclusive, but one or other is required
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="simpleType" type="xs:localSimpleType"
+ minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="itemType" type="xs:QName" use="optional"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="union" id="union">
+ <xs:complexType>
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-union">
+ memberTypes attribute must be non-empty or there must be
+ at least one simpleType child
+ </xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:sequence>
+ <xs:element name="simpleType" type="xs:localSimpleType"
+ minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ <xs:attribute name="memberTypes" use="optional">
+ <xs:simpleType>
+ <xs:list itemType="xs:QName"/>
+ </xs:simpleType>
+ </xs:attribute>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:complexType name="facet">
+ <xs:complexContent>
+ <xs:extension base="xs:annotated">
+ <xs:attribute name="value" use="required"/>
+ <xs:attribute name="fixed" type="xs:boolean" use="optional"
+ default="false"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="noFixedFacet">
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="fixed" use="prohibited"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="minExclusive" id="minExclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="minInclusive" id="minInclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="maxExclusive" id="maxExclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="maxInclusive" id="maxInclusive" type="xs:facet">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:complexType name="numFacet">
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" type="xs:nonNegativeInteger" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:element name="totalDigits" id="totalDigits">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:numFacet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" type="xs:positiveInteger" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="fractionDigits" id="fractionDigits" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="length" id="length" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-length"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="minLength" id="minLength" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-minLength"/>
+ </xs:annotation>
+ </xs:element>
+ <xs:element name="maxLength" id="maxLength" type="xs:numFacet">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-maxLength"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="enumeration" id="enumeration" type="xs:noFixedFacet">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-enumeration"/>
+ </xs:annotation>
+ </xs:element>
+
+ <xs:element name="whiteSpace" id="whiteSpace">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:facet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" use="required">
+ <xs:simpleType>
+ <xs:restriction base="xs:NMTOKEN">
+ <xs:enumeration value="preserve"/>
+ <xs:enumeration value="replace"/>
+ <xs:enumeration value="collapse"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="pattern" id="pattern">
+ <xs:annotation>
+ <xs:documentation
+ source="http://www.w3.org/TR/xmlschema-2/#element-pattern"/>
+ </xs:annotation>
+ <xs:complexType>
+ <xs:complexContent>
+ <xs:restriction base="xs:noFixedFacet">
+ <xs:sequence>
+ <xs:element ref="xs:annotation" minOccurs="0"/>
+ </xs:sequence>
+ <xs:attribute name="value" type="xs:string" use="required"/>
+ <xs:anyAttribute namespace="##other" processContents="lax"/>
+ </xs:restriction>
+ </xs:complexContent>
+ </xs:complexType>
+ </xs:element>
+
+</xs:schema>
diff --git a/mocca-1.2.11/STAL/src/main/java/META-INF/MANIFEST.MF b/mocca-1.2.11/STAL/src/main/java/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..5e949512
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path:
+
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/ErrorResponse.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/ErrorResponse.java
new file mode 100644
index 00000000..11d8637a
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/ErrorResponse.java
@@ -0,0 +1,112 @@
+/*
+* 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;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ErrorResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ErrorResponseType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.egiz.gv.at/stal}ResponseType">
+ * &lt;sequence>
+ * &lt;element name="ErrorCode" type="{http://www.w3.org/2001/XMLSchema}int"/>
+ * &lt;element name="ErrorMessage" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ErrorResponseType", propOrder = {
+ "errorCode",
+ "errorMessage"
+})
+public class ErrorResponse
+ extends STALResponse
+{
+
+ @XmlTransient
+ public static final int ERR_4000 = 4000;
+
+ @XmlElement(name = "ErrorCode")
+ protected int errorCode;
+ @XmlElement(name = "ErrorMessage", required = true)
+ protected String errorMessage;
+
+ public ErrorResponse() {
+ this.errorCode = ERR_4000;
+ }
+
+ public ErrorResponse(int errorCode) {
+ this.errorCode = errorCode;
+ }
+
+ /**
+ * Gets the value of the errorCode property.
+ *
+ */
+ public int getErrorCode() {
+ return errorCode;
+ }
+
+ /**
+ * Sets the value of the errorCode property.
+ *
+ */
+ public void setErrorCode(int value) {
+ this.errorCode = value;
+ }
+
+ /**
+ * Gets the value of the errorMessage property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getErrorMessage() {
+ return errorMessage;
+ }
+
+ /**
+ * Sets the value of the errorMessage property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setErrorMessage(String value) {
+ this.errorMessage = value;
+ }
+
+}
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/HashDataInput.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/HashDataInput.java
new file mode 100644
index 00000000..7092470c
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/HashDataInput.java
@@ -0,0 +1,38 @@
+/*
+* 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;
+
+import java.io.InputStream;
+
+/**
+ *
+ * @author clemens
+ */
+public interface HashDataInput {
+
+ public String getReferenceId();
+
+ public String getMimeType();
+
+ public String getEncoding();
+
+ public String getFilename();
+
+ public InputStream getHashDataInput();
+
+}
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/InfoboxReadRequest.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/InfoboxReadRequest.java
new file mode 100644
index 00000000..783113ab
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/InfoboxReadRequest.java
@@ -0,0 +1,112 @@
+/*
+* 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;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for InfoboxReadRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InfoboxReadRequestType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.egiz.gv.at/stal}RequestType">
+ * &lt;sequence>
+ * &lt;element name="InfoboxIdentifier" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="DomainIdentifier" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxReadRequestType", propOrder = {
+ "infoboxIdentifier",
+ "domainIdentifier"
+})
+public class InfoboxReadRequest
+ extends STALRequest
+{
+
+ @XmlElement(name = "InfoboxIdentifier", required = true)
+ protected String infoboxIdentifier;
+ @XmlElement(name = "DomainIdentifier")
+ protected String domainIdentifier;
+
+ /**
+ * Gets the value of the infoboxIdentifier property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getInfoboxIdentifier() {
+ return infoboxIdentifier;
+ }
+
+ /**
+ * Sets the value of the infoboxIdentifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setInfoboxIdentifier(String value) {
+ this.infoboxIdentifier = value;
+ }
+
+ /**
+ * Gets the value of the domainIdentifier property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getDomainIdentifier() {
+ return domainIdentifier;
+ }
+
+ /**
+ * Sets the value of the domainIdentifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setDomainIdentifier(String value) {
+ this.domainIdentifier = value;
+ }
+
+ public String toString() {
+ return "InfoboxReadRequest for: "+infoboxIdentifier;
+ }
+
+}
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/InfoboxReadResponse.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/InfoboxReadResponse.java
new file mode 100644
index 00000000..54476764
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/InfoboxReadResponse.java
@@ -0,0 +1,78 @@
+/*
+* 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;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for InfoboxReadResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InfoboxReadResponseType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.egiz.gv.at/stal}ResponseType">
+ * &lt;sequence>
+ * &lt;element name="InfoboxValue" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxReadResponseType", propOrder = {
+ "infoboxValue"
+})
+public class InfoboxReadResponse
+ extends STALResponse
+{
+
+ @XmlElement(name = "InfoboxValue", required = true)
+ protected byte[] infoboxValue;
+
+ /**
+ * Gets the value of the infoboxValue property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getInfoboxValue() {
+ return infoboxValue;
+ }
+
+ /**
+ * Sets the value of the infoboxValue property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setInfoboxValue(byte[] value) {
+ this.infoboxValue = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/QuitRequest.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/QuitRequest.java
new file mode 100644
index 00000000..ed180d58
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/QuitRequest.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.stal;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for QuitRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="QuitRequestType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.egiz.gv.at/stal}RequestType">
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "QuitRequestType")
+public class QuitRequest
+ extends STALRequest
+{
+
+
+}
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STAL.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STAL.java
new file mode 100644
index 00000000..a88d8f89
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STAL.java
@@ -0,0 +1,43 @@
+/*
+* 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;
+
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * Interface for all implementations of the Security Tokean Abstraction Layer.
+ * This interface is used by the BKU to handle all security token related parts.
+ *
+ *
+ */
+public interface STAL {
+
+ /**
+ * Handles a list of security token commands.
+ * @param aRequestList
+ * @return
+ */
+ public List<STALResponse> handleRequest(List<? extends STALRequest> aRequestList);
+
+ /**
+ * Sets the preferred locale for userinteraction (e.g. PIN dialogs).
+ * If the locale is not set the default locale will be used.
+ * @param locale must not be null.
+ */
+// public void setLocale(Locale locale);
+} \ No newline at end of file
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STALFactory.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STALFactory.java
new file mode 100644
index 00000000..f9cf00c6
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STALFactory.java
@@ -0,0 +1,24 @@
+/*
+* 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;
+
+import java.util.Locale;
+
+public interface STALFactory {
+ public STAL createSTAL();
+ public void setLocale(Locale locale);
+} \ No newline at end of file
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STALRequest.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STALRequest.java
new file mode 100644
index 00000000..70712b4f
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STALRequest.java
@@ -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.
+*/
+
+package at.gv.egiz.stal;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+//import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <h3>TODO update java doc: not only for RequestType complex type.</h3>
+ *
+ * <p>Java class for RequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="RequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RequestType")
+//@XmlSeeAlso({
+// SignRequest.class,
+// InfoboxReadRequest.class,
+// QuitRequest.class
+// StatusRequest.class
+//})
+public abstract class STALRequest {
+
+
+}
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STALResponse.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STALResponse.java
new file mode 100644
index 00000000..21a820c0
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/STALResponse.java
@@ -0,0 +1,90 @@
+/*
+* 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;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+//import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <h3>TODO update java doc: not only for ResponseType complex type.</h3>
+ *
+ * <p>Java class for ResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ResponseType")
+//@XmlSeeAlso({
+// ErrorResponse.class,
+// SignResponse.class,
+// InfoboxReadResponse.class
+// StatusResponse.class
+//})
+public abstract class STALResponse {
+
+// @XmlAttribute(name = "Id")
+// @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+// @XmlID
+// @XmlSchemaType(name = "ID")
+// protected String id;
+//
+// /**
+// * Gets the value of the id property.
+// *
+// * @return
+// * possible object is
+// * {@link String }
+// *
+// */
+// public String getId() {
+// return id;
+// }
+//
+// /**
+// * Sets the value of the id property.
+// *
+// * @param value
+// * allowed object is
+// * {@link String }
+// *
+// */
+// public void setId(String value) {
+// this.id = value;
+// }
+
+}
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/SignRequest.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/SignRequest.java
new file mode 100644
index 00000000..b1fea0fe
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/SignRequest.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.stal;
+
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * <p>Java class for SignRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignRequestType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.egiz.gv.at/stal}RequestType">
+ * &lt;sequence>
+ * &lt;element name="KeyIdentifier" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="SignedInfo" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignRequestType", propOrder = {
+ "keyIdentifier",
+ "signedInfo"
+})
+public class SignRequest
+ extends STALRequest {
+
+ @XmlElement(name = "KeyIdentifier", required = true)
+ protected String keyIdentifier;
+ @XmlElement(name = "SignedInfo", required = true)
+ protected byte[] signedInfo;
+ @XmlTransient
+ protected List<HashDataInput> hashData;
+
+ /**
+ * Gets the value of the keyIdentifier property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getKeyIdentifier() {
+ return keyIdentifier;
+ }
+
+ /**
+ * Sets the value of the keyIdentifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setKeyIdentifier(String value) {
+ this.keyIdentifier = value;
+ }
+
+ /**
+ * Gets the value of the signedInfo property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getSignedInfo() {
+ return signedInfo;
+ }
+
+ /**
+ * Sets the value of the signedInfo property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setSignedInfo(byte[] value) {
+ this.signedInfo = ((byte[]) value);
+ }
+
+ public List<HashDataInput> getHashDataInput() {
+ return hashData;
+ }
+
+ public void setHashDataInput(List<HashDataInput> hashData) {
+ this.hashData = hashData;
+ }
+}
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/SignResponse.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/SignResponse.java
new file mode 100644
index 00000000..462af30b
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/SignResponse.java
@@ -0,0 +1,78 @@
+/*
+* 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;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SignResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignResponseType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.egiz.gv.at/stal}ResponseType">
+ * &lt;sequence>
+ * &lt;element name="SignatureValue" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignResponseType", propOrder = {
+ "signatureValue"
+})
+public class SignResponse
+ extends STALResponse
+{
+
+ @XmlElement(name = "SignatureValue", required = true)
+ protected byte[] signatureValue;
+
+ /**
+ * Gets the value of the signatureValue property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getSignatureValue() {
+ return signatureValue;
+ }
+
+ /**
+ * Sets the value of the signatureValue property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setSignatureValue(byte[] value) {
+ this.signatureValue = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/StatusRequest.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/StatusRequest.java
new file mode 100644
index 00000000..ef790ad8
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/StatusRequest.java
@@ -0,0 +1,32 @@
+
+package at.gv.egiz.stal;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for StatusRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="StatusRequestType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.egiz.gv.at/stal}RequestType">
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "StatusRequestType")
+public class StatusRequest
+ extends STALRequest
+{
+
+
+}
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/StatusResponse.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/StatusResponse.java
new file mode 100644
index 00000000..bd31ac83
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/StatusResponse.java
@@ -0,0 +1,60 @@
+
+package at.gv.egiz.stal;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for StatusResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="StatusResponseType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.egiz.gv.at/stal}ResponseType">
+ * &lt;attribute name="cardReady" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "StatusResponseType")
+public class StatusResponse
+ extends STALResponse
+{
+
+ @XmlAttribute
+ protected Boolean cardReady;
+
+ /**
+ * Gets the value of the cardReady property.
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public Boolean isCardReady() {
+ return cardReady;
+ }
+
+ /**
+ * Sets the value of the cardReady property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setCardReady(Boolean value) {
+ this.cardReady = value;
+ }
+
+}
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/CanonicalizationMethodType.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/CanonicalizationMethodType.java
new file mode 100644
index 00000000..35de75fe
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/CanonicalizationMethodType.java
@@ -0,0 +1,125 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.28 at 08:23:24 AM GMT
+//
+
+
+package at.gv.egiz.stal.signedinfo;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CanonicalizationMethodType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CanonicalizationMethodType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;attribute name="Algorithm" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CanonicalizationMethodType", propOrder = {
+ "content"
+})
+public class CanonicalizationMethodType {
+
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+ @XmlAttribute(name = "Algorithm", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String algorithm;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Object }
+ * {@link String }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+ /**
+ * Gets the value of the algorithm property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAlgorithm() {
+ return algorithm;
+ }
+
+ /**
+ * Sets the value of the algorithm property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAlgorithm(String value) {
+ this.algorithm = value;
+ }
+
+}
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/DigestMethodType.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/DigestMethodType.java
new file mode 100644
index 00000000..9c6b01f4
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/DigestMethodType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.28 at 08:23:24 AM GMT
+//
+
+
+package at.gv.egiz.stal.signedinfo;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for DigestMethodType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="DigestMethodType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;attribute name="Algorithm" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DigestMethodType", propOrder = {
+ "content"
+})
+public class DigestMethodType {
+
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+ @XmlAttribute(name = "Algorithm", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String algorithm;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ * {@link Element }
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+ /**
+ * Gets the value of the algorithm property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAlgorithm() {
+ return algorithm;
+ }
+
+ /**
+ * Sets the value of the algorithm property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAlgorithm(String value) {
+ this.algorithm = value;
+ }
+
+}
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/ObjectFactory.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/ObjectFactory.java
new file mode 100644
index 00000000..c5f99f01
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/ObjectFactory.java
@@ -0,0 +1,178 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.28 at 08:23:24 AM GMT
+//
+
+
+package at.gv.egiz.stal.signedinfo;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * <em>Do not use this package in jaxb context together with org.w3._2000._09.xmldsig_</em>
+ * <br/>
+ * This object contains factory methods for each
+ * Java content interface and Java element interface
+ * generated in the at.gv.egiz.stal.signedinfo package.
+ * <p>An ObjectFactory allows you to programatically
+ * construct new instances of the Java representation
+ * for XML content. The Java representation of XML
+ * content can consist of schema derived interfaces
+ * and classes representing the binding of schema
+ * type definitions, element declarations and model
+ * groups. Factory methods for each of these are
+ * provided in this class.
+ *
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _CanonicalizationMethod_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "CanonicalizationMethod");
+ private final static QName _Reference_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Reference");
+ private final static QName _SignatureMethod_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SignatureMethod");
+ private final static QName _SignedInfo_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SignedInfo");
+ private final static QName _Transforms_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Transforms");
+ private final static QName _DigestMethod_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "DigestMethod");
+ private final static QName _DigestValue_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "DigestValue");
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: at.gv.egiz.stal.signedinfo
+ *
+ */
+ public ObjectFactory() {
+ }
+
+ /**
+ * Create an instance of {@link ReferenceType }
+ *
+ */
+ public ReferenceType createReferenceType() {
+ return new ReferenceType();
+ }
+
+ /**
+ * Create an instance of {@link CanonicalizationMethodType }
+ *
+ */
+ public CanonicalizationMethodType createCanonicalizationMethodType() {
+ return new CanonicalizationMethodType();
+ }
+
+ /**
+ * Create an instance of {@link DigestMethodType }
+ *
+ */
+ public DigestMethodType createDigestMethodType() {
+ return new DigestMethodType();
+ }
+
+ /**
+ * Create an instance of {@link TransformsType }
+ *
+ */
+ public TransformsType createTransformsType() {
+ return new TransformsType();
+ }
+
+ /**
+ * Create an instance of {@link SignatureMethodType }
+ *
+ */
+ public SignatureMethodType createSignatureMethodType() {
+ return new SignatureMethodType();
+ }
+
+ /**
+ * Create an instance of {@link SignedInfoType }
+ *
+ */
+ public SignedInfoType createSignedInfoType() {
+ return new SignedInfoType();
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CanonicalizationMethodType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "CanonicalizationMethod")
+ public JAXBElement<CanonicalizationMethodType> createCanonicalizationMethod(CanonicalizationMethodType value) {
+ return new JAXBElement<CanonicalizationMethodType>(_CanonicalizationMethod_QNAME, CanonicalizationMethodType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ReferenceType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Reference")
+ public JAXBElement<ReferenceType> createReference(ReferenceType value) {
+ return new JAXBElement<ReferenceType>(_Reference_QNAME, ReferenceType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignatureMethodType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SignatureMethod")
+ public JAXBElement<SignatureMethodType> createSignatureMethod(SignatureMethodType value) {
+ return new JAXBElement<SignatureMethodType>(_SignatureMethod_QNAME, SignatureMethodType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignedInfoType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SignedInfo")
+ public JAXBElement<SignedInfoType> createSignedInfo(SignedInfoType value) {
+ return new JAXBElement<SignedInfoType>(_SignedInfo_QNAME, SignedInfoType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TransformsType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Transforms")
+ public JAXBElement<TransformsType> createTransforms(TransformsType value) {
+ return new JAXBElement<TransformsType>(_Transforms_QNAME, TransformsType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link DigestMethodType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "DigestMethod")
+ public JAXBElement<DigestMethodType> createDigestMethod(DigestMethodType value) {
+ return new JAXBElement<DigestMethodType>(_DigestMethod_QNAME, DigestMethodType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "DigestValue")
+ public JAXBElement<byte[]> createDigestValue(byte[] value) {
+ return new JAXBElement<byte[]>(_DigestValue_QNAME, byte[].class, null, ((byte[]) value));
+ }
+
+}
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/ReferenceType.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/ReferenceType.java
new file mode 100644
index 00000000..12fbf83f
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/ReferenceType.java
@@ -0,0 +1,230 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.28 at 08:23:24 AM GMT
+//
+
+
+package at.gv.egiz.stal.signedinfo;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for ReferenceType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ReferenceType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Transforms" minOccurs="0"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}DigestMethod"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}DigestValue"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;attribute name="URI" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;attribute name="Type" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ReferenceType", propOrder = {
+ "transforms",
+ "digestMethod",
+ "digestValue"
+})
+public class ReferenceType {
+
+ @XmlElement(name = "Transforms")
+ protected TransformsType transforms;
+ @XmlElement(name = "DigestMethod", required = true)
+ protected DigestMethodType digestMethod;
+ @XmlElement(name = "DigestValue", required = true)
+ protected byte[] digestValue;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+ @XmlAttribute(name = "URI")
+ @XmlSchemaType(name = "anyURI")
+ protected String uri;
+ @XmlAttribute(name = "Type")
+ @XmlSchemaType(name = "anyURI")
+ protected String type;
+
+ /**
+ * Gets the value of the transforms property.
+ *
+ * @return
+ * possible object is
+ * {@link TransformsType }
+ *
+ */
+ public TransformsType getTransforms() {
+ return transforms;
+ }
+
+ /**
+ * Sets the value of the transforms property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TransformsType }
+ *
+ */
+ public void setTransforms(TransformsType value) {
+ this.transforms = value;
+ }
+
+ /**
+ * Gets the value of the digestMethod property.
+ *
+ * @return
+ * possible object is
+ * {@link DigestMethodType }
+ *
+ */
+ public DigestMethodType getDigestMethod() {
+ return digestMethod;
+ }
+
+ /**
+ * Sets the value of the digestMethod property.
+ *
+ * @param value
+ * allowed object is
+ * {@link DigestMethodType }
+ *
+ */
+ public void setDigestMethod(DigestMethodType value) {
+ this.digestMethod = value;
+ }
+
+ /**
+ * Gets the value of the digestValue property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getDigestValue() {
+ return digestValue;
+ }
+
+ /**
+ * Sets the value of the digestValue property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setDigestValue(byte[] value) {
+ this.digestValue = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+ /**
+ * Gets the value of the uri property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getURI() {
+ return uri;
+ }
+
+ /**
+ * Sets the value of the uri property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setURI(String value) {
+ this.uri = value;
+ }
+
+ /**
+ * Gets the value of the type property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * Sets the value of the type property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setType(String value) {
+ this.type = value;
+ }
+
+}
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/SignatureMethodType.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/SignatureMethodType.java
new file mode 100644
index 00000000..cfc1f822
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/SignatureMethodType.java
@@ -0,0 +1,125 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.28 at 08:23:24 AM GMT
+//
+
+
+package at.gv.egiz.stal.signedinfo;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SignatureMethodType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignatureMethodType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;attribute name="Algorithm" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignatureMethodType", propOrder = {
+ "content"
+})
+public class SignatureMethodType {
+
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+ @XmlAttribute(name = "Algorithm", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String algorithm;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Object }
+ * {@link String }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+ /**
+ * Gets the value of the algorithm property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAlgorithm() {
+ return algorithm;
+ }
+
+ /**
+ * Sets the value of the algorithm property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAlgorithm(String value) {
+ this.algorithm = value;
+ }
+
+}
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/SignedInfoType.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/SignedInfoType.java
new file mode 100644
index 00000000..e93f988c
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/SignedInfoType.java
@@ -0,0 +1,183 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.28 at 08:23:24 AM GMT
+//
+
+
+package at.gv.egiz.stal.signedinfo;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for SignedInfoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignedInfoType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}SignatureMethod"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Reference" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignedInfoType", propOrder = {
+ "canonicalizationMethod",
+ "signatureMethod",
+ "reference"
+})
+public class SignedInfoType {
+
+ @XmlElement(name = "CanonicalizationMethod", required = true)
+ protected CanonicalizationMethodType canonicalizationMethod;
+ @XmlElement(name = "SignatureMethod", required = true)
+ protected SignatureMethodType signatureMethod;
+ @XmlElement(name = "Reference", required = true)
+ protected List<ReferenceType> reference;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the canonicalizationMethod property.
+ *
+ * @return
+ * possible object is
+ * {@link CanonicalizationMethodType }
+ *
+ */
+ public CanonicalizationMethodType getCanonicalizationMethod() {
+ return canonicalizationMethod;
+ }
+
+ /**
+ * Sets the value of the canonicalizationMethod property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CanonicalizationMethodType }
+ *
+ */
+ public void setCanonicalizationMethod(CanonicalizationMethodType value) {
+ this.canonicalizationMethod = value;
+ }
+
+ /**
+ * Gets the value of the signatureMethod property.
+ *
+ * @return
+ * possible object is
+ * {@link SignatureMethodType }
+ *
+ */
+ public SignatureMethodType getSignatureMethod() {
+ return signatureMethod;
+ }
+
+ /**
+ * Sets the value of the signatureMethod property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignatureMethodType }
+ *
+ */
+ public void setSignatureMethod(SignatureMethodType value) {
+ this.signatureMethod = value;
+ }
+
+ /**
+ * Gets the value of the reference property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the reference property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getReference().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link ReferenceType }
+ *
+ *
+ */
+ public List<ReferenceType> getReference() {
+ if (reference == null) {
+ reference = new ArrayList<ReferenceType>();
+ }
+ return this.reference;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/TransformsType.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/TransformsType.java
new file mode 100644
index 00000000..8f5c1ade
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/TransformsType.java
@@ -0,0 +1,88 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.28 at 08:23:24 AM GMT
+//
+
+
+package at.gv.egiz.stal.signedinfo;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for TransformsType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="TransformsType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TransformsType", propOrder = {
+ "any"
+})
+public class TransformsType {
+
+ @XmlAnyElement(lax = true)
+ protected Object any;
+
+ /**
+ * Gets the value of the any property.
+ *
+ * @return
+ * possible object is
+ * {@link Element }
+ * {@link Object }
+ *
+ */
+ public Object getAny() {
+ return any;
+ }
+
+ /**
+ * Sets the value of the any property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Element }
+ * {@link Object }
+ *
+ */
+ public void setAny(Object value) {
+ this.any = value;
+ }
+
+}
diff --git a/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/package-info.java b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/package-info.java
new file mode 100644
index 00000000..6b323fea
--- /dev/null
+++ b/mocca-1.2.11/STAL/src/main/java/at/gv/egiz/stal/signedinfo/package-info.java
@@ -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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.28 at 08:23:24 AM GMT
+//
+
+@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.w3.org/2000/09/xmldsig#", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package at.gv.egiz.stal.signedinfo;
diff --git a/mocca-1.2.11/STALExt/pom.xml b/mocca-1.2.11/STALExt/pom.xml
new file mode 100644
index 00000000..bd5f9b46
--- /dev/null
+++ b/mocca-1.2.11/STALExt/pom.xml
@@ -0,0 +1,20 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>STALExt</artifactId>
+ <name>STAL Extension</name>
+ <version>1.2.11</version>
+ <description />
+ <dependencies>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>STAL</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ </dependencies>
+</project> \ No newline at end of file
diff --git a/mocca-1.2.11/STALExt/src/main/java/META-INF/MANIFEST.MF b/mocca-1.2.11/STALExt/src/main/java/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..5e949512
--- /dev/null
+++ b/mocca-1.2.11/STALExt/src/main/java/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path:
+
diff --git a/mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/APDUScriptRequest.java b/mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/APDUScriptRequest.java
new file mode 100644
index 00000000..89e459ac
--- /dev/null
+++ b/mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/APDUScriptRequest.java
@@ -0,0 +1,72 @@
+/*
+* 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.ext;
+
+import java.util.List;
+
+import at.gv.egiz.stal.STALRequest;
+
+public class APDUScriptRequest extends STALRequest {
+
+ public static abstract class RequestScriptElement {
+
+ }
+
+ public static class Reset extends RequestScriptElement {
+
+ }
+
+ public static class Command extends RequestScriptElement {
+
+ private int sequence;
+
+ private byte[] commandAPDU;
+
+ private byte[] expectedSW;
+
+ public Command(int sequence, byte[] commandAPDU, byte[] expectedSW) {
+ this.sequence = sequence;
+ this.commandAPDU = commandAPDU;
+ this.expectedSW = expectedSW;
+ }
+
+ public int getSequence() {
+ return sequence;
+ }
+
+ public byte[] getCommandAPDU() {
+ return commandAPDU;
+ }
+
+ public byte[] getExpectedSW() {
+ return expectedSW;
+ }
+
+ }
+
+ private List<RequestScriptElement> script;
+
+ public APDUScriptRequest(List<RequestScriptElement> script) {
+ super();
+ this.script = script;
+ }
+
+ public List<RequestScriptElement> getScript() {
+ return script;
+ }
+
+}
diff --git a/mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/APDUScriptResponse.java b/mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/APDUScriptResponse.java
new file mode 100644
index 00000000..dd59f0bf
--- /dev/null
+++ b/mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/APDUScriptResponse.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.stal.ext;
+
+import java.util.List;
+
+import at.gv.egiz.stal.STALResponse;
+
+public class APDUScriptResponse extends STALResponse {
+
+ public static abstract class ResponseScriptElement {
+
+ }
+
+ public static class ATR extends ResponseScriptElement {
+
+ private byte[] atr;
+
+ public ATR(byte[] atr) {
+ this.atr = atr;
+ }
+
+ public byte[] getAtr() {
+ return atr;
+ }
+
+ }
+
+ public static class Response extends ResponseScriptElement {
+
+ public static final int RC_UNSPECIFIED = -1;
+
+ private int sequence;
+
+ private byte[] apdu;
+
+ private byte[] sw;
+
+ private int rc;
+
+ public Response(int sequence, byte[] apdu, byte[] sw, int rc) {
+ this.sequence = sequence;
+ this.apdu = apdu;
+ this.sw = sw;
+ this.rc = rc;
+ }
+
+ public int getSequence() {
+ return sequence;
+ }
+
+ public byte[] getApdu() {
+ return apdu;
+ }
+
+ public byte[] getSw() {
+ return sw;
+ }
+
+ public int getRc() {
+ return rc;
+ }
+
+ }
+
+ private List<ResponseScriptElement> script;
+
+ public APDUScriptResponse(List<ResponseScriptElement> script) {
+ super();
+ this.script = script;
+ }
+
+ public List<ResponseScriptElement> getScript() {
+ return script;
+ }
+
+}
diff --git a/mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/PINManagementRequest.java b/mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/PINManagementRequest.java
new file mode 100644
index 00000000..87c53e24
--- /dev/null
+++ b/mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/PINManagementRequest.java
@@ -0,0 +1,31 @@
+/*
+ * 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.ext;
+
+import at.gv.egiz.stal.STALRequest;
+
+/**
+ * Dummy STAL request to trigger PIN Management. (no proper STAL requests
+ * for PIN activation, unblocking)
+ *
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class PINManagementRequest extends STALRequest {
+
+}
diff --git a/mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/PINManagementResponse.java b/mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/PINManagementResponse.java
new file mode 100644
index 00000000..b8b90604
--- /dev/null
+++ b/mocca-1.2.11/STALExt/src/main/java/at/gv/egiz/stal/ext/PINManagementResponse.java
@@ -0,0 +1,28 @@
+/*
+ * 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.ext;
+
+import at.gv.egiz.stal.STALResponse;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class PINManagementResponse extends STALResponse {
+
+}
diff --git a/mocca-1.2.11/STALService/META-INF/MANIFEST.MF b/mocca-1.2.11/STALService/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..5e949512
--- /dev/null
+++ b/mocca-1.2.11/STALService/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path:
+
diff --git a/mocca-1.2.11/STALService/pom.xml b/mocca-1.2.11/STALService/pom.xml
new file mode 100644
index 00000000..6c25bbe2
--- /dev/null
+++ b/mocca-1.2.11/STALService/pom.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>STALService</artifactId>
+ <name>STAL Service</name>
+ <version>1.2.11</version>
+ <description />
+ <dependencies>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>STAL</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <!--dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>utils</artifactId>
+ <version>1.0.0-SNAPSHOTOT</version>
+ </dependency-->
+ </dependencies>
+</project> \ No newline at end of file
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/GetHashDataInputFault.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/GetHashDataInputFault.java
new file mode 100644
index 00000000..2f08350c
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/GetHashDataInputFault.java
@@ -0,0 +1,55 @@
+
+package at.gv.egiz.stal.service;
+
+import javax.xml.ws.WebFault;
+import at.gv.egiz.stal.service.types.GetHashDataInputFaultType;
+
+
+/**
+ * This class was generated by the JAX-WS RI.
+ * JAX-WS RI 2.1.3-b02-
+ * Generated source version: 2.1
+ *
+ */
+@WebFault(name = "GetHashDataInputFault", targetNamespace = "http://www.egiz.gv.at/stal")
+public class GetHashDataInputFault
+ extends Exception
+{
+
+ /**
+ * Java type that goes as soapenv:Fault detail element.
+ *
+ */
+ private GetHashDataInputFaultType faultInfo;
+
+ /**
+ *
+ * @param message
+ * @param faultInfo
+ */
+ public GetHashDataInputFault(String message, GetHashDataInputFaultType faultInfo) {
+ super(message);
+ this.faultInfo = faultInfo;
+ }
+
+ /**
+ *
+ * @param message
+ * @param faultInfo
+ * @param cause
+ */
+ public GetHashDataInputFault(String message, GetHashDataInputFaultType faultInfo, Throwable cause) {
+ super(message, cause);
+ this.faultInfo = faultInfo;
+ }
+
+ /**
+ *
+ * @return
+ * returns fault bean: at.gv.egiz.stal.service.types.GetHashDataInputFaultType
+ */
+ public GetHashDataInputFaultType getFaultInfo() {
+ return faultInfo;
+ }
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/STALPortType.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/STALPortType.java
new file mode 100644
index 00000000..d38010aa
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/STALPortType.java
@@ -0,0 +1,73 @@
+
+package at.gv.egiz.stal.service;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import javax.xml.bind.annotation.XmlSeeAlso;
+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;
+
+
+/**
+ * This class was generated by the JAX-WS RI.
+ * JAX-WS RI 2.1.3-b02-
+ * Generated source version: 2.1
+ *
+ */
+@WebService(name = "STALPortType", targetNamespace = "http://www.egiz.gv.at/wsdl/stal")
+@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+@XmlSeeAlso({
+ at.gv.egiz.stal.service.types.ObjectFactory.class
+// at.buergerkarte.namespaces.cardchannel.service.ObjectFactory.class
+})
+public interface STALPortType {
+
+
+ /**
+ * Initial connection, get the first request.
+ *
+ * @param sessionId
+ * @return
+ * returns at.gv.egiz.stal.service.types.GetNextRequestResponseType
+ */
+ @WebMethod
+ @WebResult(name = "GetNextRequestResponse", targetNamespace = "http://www.egiz.gv.at/stal", partName = "part1")
+ public GetNextRequestResponseType connect(
+ @WebParam(name = "SessionId", targetNamespace = "http://www.egiz.gv.at/stal", partName = "part1")
+ String sessionId);
+
+ /**
+ * Fetch the next request.
+ *
+ * @param request
+ * @return
+ * returns at.gv.egiz.stal.service.types.GetNextRequestResponseType
+ */
+ @WebMethod(operationName = "nextRequest")
+ @WebResult(name = "GetNextRequestResponse", targetNamespace = "http://www.egiz.gv.at/stal", partName = "part1")
+ public GetNextRequestResponseType getNextRequest(
+ @WebParam(name = "GetNextRequest", targetNamespace = "http://www.egiz.gv.at/stal", partName = "part1")
+ GetNextRequestType request);
+
+ /**
+ * Fetch the signed references corresponding to the previous SignatureRequest.
+ *
+ * @param request
+ * @return
+ * returns at.gv.egiz.stal.service.types.GetHashDataInputResponseType
+ * @throws GetHashDataInputFault
+ */
+ @WebMethod
+ @WebResult(name = "GetHashDataInputResponse", targetNamespace = "http://www.egiz.gv.at/stal", partName = "part1")
+ public GetHashDataInputResponseType getHashDataInput(
+ @WebParam(name = "GetHashDataInput", targetNamespace = "http://www.egiz.gv.at/stal", partName = "part1")
+ GetHashDataInputType request)
+ throws GetHashDataInputFault
+ ;
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/STALService.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/STALService.java
new file mode 100644
index 00000000..ba4b541e
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/STALService.java
@@ -0,0 +1,72 @@
+
+package at.gv.egiz.stal.service;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.logging.Logger;
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+import javax.xml.ws.WebEndpoint;
+import javax.xml.ws.WebServiceClient;
+import javax.xml.ws.WebServiceFeature;
+
+
+/**
+ * This class was generated by the JAX-WS RI.
+ * JAX-WS RI 2.1.3-b02-
+ * Generated source version: 2.1
+ *
+ */
+@WebServiceClient(name = "STALService", targetNamespace = "http://www.egiz.gv.at/wsdl/stal")
+//, wsdlLocation = "file:/home/clemens/workspace/mocca/BKUOnline/src/main/webapp/WEB-INF/wsdl/stal-service.wsdl")
+public class STALService
+ extends Service
+{
+
+// private final static URL STALSERVICE_WSDL_LOCATION;
+ private final static Logger logger = Logger.getLogger(at.gv.egiz.stal.service.STALService.class.getName());
+
+// static {
+// URL url = null;
+// try {
+// URL baseUrl;
+// baseUrl = at.gv.egiz.stal.service.STALService.class.getResource(".");
+// url = new URL(baseUrl, "file:/home/clemens/workspace/mocca/BKUOnline/src/main/webapp/WEB-INF/wsdl/stal-service.wsdl");
+// } catch (MalformedURLException e) {
+// logger.warning("Failed to create URL for the wsdl Location: 'file:/home/clemens/workspace/mocca/BKUOnline/src/main/webapp/WEB-INF/wsdl/stal-service.wsdl', retrying as a local file");
+// logger.warning(e.getMessage());
+// }
+// STALSERVICE_WSDL_LOCATION = url;
+// }
+
+ public STALService(URL wsdlLocation, QName serviceName) {
+ super(wsdlLocation, serviceName);
+ }
+
+// public STALService() {
+// super(STALSERVICE_WSDL_LOCATION, new QName("http://www.egiz.gv.at/wsdl/stal", "STALService"));
+// }
+
+ /**
+ *
+ * @return
+ * returns STALPortType
+ */
+ @WebEndpoint(name = "STALPort")
+ public STALPortType getSTALPort() {
+ return super.getPort(new QName("http://www.egiz.gv.at/wsdl/stal", "STALPort"), STALPortType.class);
+ }
+
+ /**
+ *
+ * @param features
+ * A list of {@link javax.xml.ws.WebServiceFeature} to configure on the proxy. Supported features not in the <code>features</code> parameter will have their default values.
+ * @return
+ * returns STALPortType
+ */
+// @WebEndpoint(name = "STALPort")
+// public STALPortType getSTALPort(WebServiceFeature... features) {
+// return super.getPort(new QName("http://www.egiz.gv.at/wsdl/stal", "STALPort"), STALPortType.class, features);
+// }
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/translator/STALTranslator.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/translator/STALTranslator.java
new file mode 100644
index 00000000..1e6f4133
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/translator/STALTranslator.java
@@ -0,0 +1,294 @@
+/*
+ * 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.translator;
+
+import at.gv.egiz.stal.ErrorResponse;
+import at.gv.egiz.stal.InfoboxReadRequest;
+import at.gv.egiz.stal.InfoboxReadResponse;
+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.SignResponse;
+import at.gv.egiz.stal.StatusRequest;
+import at.gv.egiz.stal.StatusResponse;
+import at.gv.egiz.stal.service.types.ErrorResponseType;
+import at.gv.egiz.stal.service.types.InfoboxReadRequestType;
+import at.gv.egiz.stal.service.types.InfoboxReadResponseType;
+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.stal.service.types.SignRequestType;
+import at.gv.egiz.stal.service.types.SignResponseType;
+import at.gv.egiz.stal.service.types.StatusRequestType;
+import at.gv.egiz.stal.service.types.StatusResponseType;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.xml.bind.JAXBElement;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class STALTranslator {
+
+ private static final Log log = LogFactory.getLog(STALTranslator.class);
+ protected Map<Class, TranslationHandler> handlerMap = new HashMap<Class, TranslationHandler>();
+
+ public STALTranslator() {
+ registerTranslationHandler(new DefaultTranslationHandler());
+ }
+
+ /**
+ * overwrites previously registered handlers for the same type
+ * @param handler
+ */
+ public void registerTranslationHandler(TranslationHandler handler) {
+ for (Class t : handler.getSupportedTypes()) {
+ if (log.isDebugEnabled()) {
+ log.debug("register " + t + " with translation handler " + handler.getClass());
+ }
+ handlerMap.put(t, handler);
+ }
+ }
+
+ /**
+ * Translate a STAL request to a STAL Webservice request.
+ * @param request
+ * @return
+ * @throws at.gv.egiz.stal.service.translator.TranslationException
+ */
+ public JAXBElement<? extends RequestType> translate(STALRequest request) throws TranslationException {
+ if (handlerMap.containsKey(request.getClass())) {
+ TranslationHandler handler = handlerMap.get(request.getClass());
+ JAXBElement<? extends RequestType> r = handler.translate(request);
+ if (r != null) {
+ return r;
+ }
+ }
+ log.error("unknown STAL request type " + request.getClass());
+ throw new TranslationException(request.getClass());
+ }
+
+ /**
+ * Translate a STAL Webservice request to a STAL request.
+ * @param request
+ * @return
+ * @throws at.gv.egiz.stal.service.translator.TranslationException
+ */
+ public STALRequest translate(JAXBElement<? extends RequestType> request) throws TranslationException {
+ RequestType req = request.getValue();
+ if (req == null) {
+ throw new RuntimeException("RequestType must not be null");
+ }
+ if (handlerMap.containsKey(req.getClass())) {
+ TranslationHandler handler = handlerMap.get(req.getClass());
+ STALRequest stalRequest = handler.translate(req);
+ if (stalRequest != null) {
+ return stalRequest;
+ }
+ }
+ log.error("unknown request type " + req.getClass());
+ throw new TranslationException(req.getClass());
+ }
+
+ /**
+ * Translate a STAL response to a STAL Webservice response.
+ * @param request
+ * @return
+ * @throws at.gv.egiz.stal.service.translator.TranslationException
+ */
+ public JAXBElement<? extends ResponseType> translate(STALResponse response) throws TranslationException {
+ if (handlerMap.containsKey(response.getClass())) {
+ TranslationHandler handler = handlerMap.get(response.getClass());
+ JAXBElement<? extends ResponseType> r = handler.translate(response);
+ if (r != null) {
+ return r;
+ }
+ }
+ log.error("unknown STAL response type " + response.getClass());
+ throw new TranslationException(response.getClass());
+ }
+
+ /**
+ * Translate a STAL Webservice response to a STAL response.
+ * @param request
+ * @return
+ * @throws at.gv.egiz.stal.service.translator.TranslationException
+ */
+ public STALResponse translate(JAXBElement<? extends ResponseType> response) throws TranslationException {
+ ResponseType resp = response.getValue();
+ if (resp == null) {
+ throw new RuntimeException("ResponseType must not be null");
+ }
+ if (handlerMap.containsKey(resp.getClass())) {
+ TranslationHandler handler = handlerMap.get(resp.getClass());
+ STALResponse stalResponse = handler.translate(resp);
+ if (stalResponse != null) {
+ return stalResponse;
+ }
+ }
+ log.error("unknown response type " + resp.getClass());
+ throw new TranslationException(resp.getClass());
+ }
+
+ /**
+ * public (static) interface implemented by STAL extensions
+ */
+ public static interface TranslationHandler {
+
+ List<Class> getSupportedTypes();
+
+ JAXBElement<? extends RequestType> translate(STALRequest request) throws TranslationException;
+
+ JAXBElement<? extends ResponseType> translate(STALResponse response) throws TranslationException;
+
+ STALRequest translate(RequestType request) throws TranslationException;
+
+ STALResponse translate(ResponseType response) throws TranslationException;
+ }
+
+
+ /**
+ * Default Handler
+ */
+ protected static class DefaultTranslationHandler implements TranslationHandler {
+
+ private static final Log log = LogFactory.getLog(DefaultTranslationHandler.class);
+ private ObjectFactory of;
+
+ public DefaultTranslationHandler() {
+ of = new ObjectFactory();
+ }
+
+ @Override
+ public List<Class> getSupportedTypes() {
+ return Arrays.asList(new Class[]{InfoboxReadRequest.class,
+ SignRequest.class,
+ QuitRequest.class,
+ StatusRequest.class,
+ InfoboxReadRequestType.class,
+ SignRequestType.class,
+ QuitRequestType.class,
+ StatusRequestType.class,
+ InfoboxReadResponse.class,
+ SignResponse.class,
+ ErrorResponse.class,
+ StatusResponse.class,
+ InfoboxReadResponseType.class,
+ SignResponseType.class,
+ ErrorResponseType.class,
+ StatusResponseType.class
+ });
+ }
+
+ @Override
+ public JAXBElement<? extends RequestType> translate(STALRequest request) throws TranslationException {
+ log.trace("translate " + request.getClass());
+ if (request instanceof SignRequest) {
+ SignRequestType req = of.createSignRequestType();
+ req.setKeyIdentifier(((SignRequest) request).getKeyIdentifier());
+ req.setSignedInfo(((SignRequest) request).getSignedInfo());
+ //TODO add hashdatainput (refactor signRequestType)
+ return of.createGetNextRequestResponseTypeSignRequest(req);
+ } else if (request instanceof InfoboxReadRequest) {
+ InfoboxReadRequestType req = of.createInfoboxReadRequestType();
+ req.setInfoboxIdentifier(((InfoboxReadRequest) request).getInfoboxIdentifier());
+ req.setDomainIdentifier(((InfoboxReadRequest) request).getDomainIdentifier());
+ return of.createGetNextRequestResponseTypeInfoboxReadRequest(req);
+ } else if (request instanceof QuitRequest) {
+ return of.createGetNextRequestResponseTypeQuitRequest(of.createQuitRequestType());
+ } else if (request instanceof StatusRequest) {
+ StatusRequestType req = of.createStatusRequestType();
+ return of.createGetNextRequestResponseTypeStatusRequest(req);
+ }
+ throw new TranslationException(request.getClass());
+ }
+
+ @Override
+ public STALRequest translate(RequestType request) throws TranslationException {
+ if (request instanceof InfoboxReadRequestType) {
+ InfoboxReadRequest stalReq = new InfoboxReadRequest();
+ stalReq.setDomainIdentifier(((InfoboxReadRequestType) request).getDomainIdentifier());
+ stalReq.setInfoboxIdentifier(((InfoboxReadRequestType) request).getInfoboxIdentifier());
+ return stalReq;
+ } else if (request instanceof SignRequestType) {
+ SignRequest stalReq = new SignRequest();
+ stalReq.setKeyIdentifier(((SignRequestType) request).getKeyIdentifier());
+ stalReq.setSignedInfo(((SignRequestType) request).getSignedInfo());
+ return stalReq;
+ } else if (request instanceof QuitRequestType) {
+ return new QuitRequest();
+ } else if (request instanceof StatusRequestType) {
+ return new StatusRequest();
+ }
+ throw new TranslationException(request.getClass());
+ }
+
+ @Override
+ public JAXBElement<? extends ResponseType> translate(STALResponse response) throws TranslationException {
+ if (response instanceof InfoboxReadResponse) {
+ InfoboxReadResponseType resp = of.createInfoboxReadResponseType();
+ resp.setInfoboxValue(((InfoboxReadResponse) response).getInfoboxValue());
+ return of.createGetNextRequestTypeInfoboxReadResponse(resp);
+ } else if (response instanceof SignResponse) {
+ SignResponseType resp = of.createSignResponseType();
+ resp.setSignatureValue(((SignResponse) response).getSignatureValue());
+ return of.createGetNextRequestTypeSignResponse(resp);
+ } else if (response instanceof ErrorResponse) {
+ ErrorResponseType resp = of.createErrorResponseType();
+ resp.setErrorCode(((ErrorResponse) response).getErrorCode());
+ resp.setErrorMessage(((ErrorResponse) response).getErrorMessage());
+ return of.createGetNextRequestTypeErrorResponse(resp);
+ } else if (response instanceof StatusResponse) {
+ StatusResponseType resp = of.createStatusResponseType();
+ resp.setCardReady(((StatusResponse) response).isCardReady());
+ return of.createGetNextRequestTypeStatusResponse(resp);
+ }
+ throw new TranslationException(response.getClass());
+ }
+
+ @Override
+ public STALResponse translate(ResponseType response) throws TranslationException {
+ if (response instanceof InfoboxReadResponseType) {
+ InfoboxReadResponse stalResp = new InfoboxReadResponse();
+ stalResp.setInfoboxValue(((InfoboxReadResponseType) response).getInfoboxValue());
+ return stalResp;
+ } else if (response instanceof SignResponseType) {
+ SignResponse stalResp = new SignResponse();
+ stalResp.setSignatureValue(((SignResponseType) response).getSignatureValue());
+ return stalResp;
+ } else if (response instanceof ErrorResponseType) {
+ ErrorResponse stalResp = new ErrorResponse();
+ stalResp.setErrorCode(((ErrorResponseType) response).getErrorCode());
+ stalResp.setErrorMessage(((ErrorResponseType) response).getErrorMessage());
+ return stalResp;
+ } else if (response instanceof StatusResponseType) {
+ StatusResponse stalResp = new StatusResponse();
+ stalResp.setCardReady(((StatusResponseType) response).isCardReady());
+ return stalResp;
+ }
+ throw new TranslationException(response.getClass());
+ }
+ }
+}
+
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/translator/TranslationException.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/translator/TranslationException.java
new file mode 100644
index 00000000..fd9da988
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/translator/TranslationException.java
@@ -0,0 +1,42 @@
+/*
+ * 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.translator;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class TranslationException extends Exception {
+
+ private Class unknownClass;
+
+ /**
+ * Creates a new instance of <code>TranslationException</code> without detail message.
+ * @param unknownClass the class that could not be translated
+ */
+ public TranslationException(Class unkownClass) {
+ this.unknownClass = unkownClass;
+ }
+
+ @Override
+ public String getMessage() {
+ return "Failed to translate type " + unknownClass;
+ }
+
+
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/ErrorResponseType.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/ErrorResponseType.java
new file mode 100644
index 00000000..14ae0d39
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/ErrorResponseType.java
@@ -0,0 +1,84 @@
+
+package at.gv.egiz.stal.service.types;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ErrorResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ErrorResponseType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.egiz.gv.at/stal}ResponseType">
+ * &lt;sequence>
+ * &lt;element name="ErrorCode" type="{http://www.w3.org/2001/XMLSchema}int"/>
+ * &lt;element name="ErrorMessage" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ErrorResponseType", propOrder = {
+ "errorCode",
+ "errorMessage"
+})
+public class ErrorResponseType
+ extends ResponseType
+{
+
+ @XmlElement(name = "ErrorCode")
+ protected int errorCode;
+ @XmlElement(name = "ErrorMessage", required = true)
+ protected String errorMessage;
+
+ /**
+ * Gets the value of the errorCode property.
+ *
+ */
+ public int getErrorCode() {
+ return errorCode;
+ }
+
+ /**
+ * Sets the value of the errorCode property.
+ *
+ */
+ public void setErrorCode(int value) {
+ this.errorCode = value;
+ }
+
+ /**
+ * Gets the value of the errorMessage property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getErrorMessage() {
+ return errorMessage;
+ }
+
+ /**
+ * Sets the value of the errorMessage property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setErrorMessage(String value) {
+ this.errorMessage = value;
+ }
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetHashDataInputFaultType.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetHashDataInputFaultType.java
new file mode 100644
index 00000000..bf9f96ab
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetHashDataInputFaultType.java
@@ -0,0 +1,82 @@
+
+package at.gv.egiz.stal.service.types;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for GetHashDataInputFaultType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="GetHashDataInputFaultType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ErrorCode" type="{http://www.w3.org/2001/XMLSchema}int"/>
+ * &lt;element name="ErrorMessage" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "GetHashDataInputFaultType", propOrder = {
+ "errorCode",
+ "errorMessage"
+})
+public class GetHashDataInputFaultType {
+
+ @XmlElement(name = "ErrorCode")
+ protected int errorCode;
+ @XmlElement(name = "ErrorMessage", required = true)
+ protected String errorMessage;
+
+ /**
+ * Gets the value of the errorCode property.
+ *
+ */
+ public int getErrorCode() {
+ return errorCode;
+ }
+
+ /**
+ * Sets the value of the errorCode property.
+ *
+ */
+ public void setErrorCode(int value) {
+ this.errorCode = value;
+ }
+
+ /**
+ * Gets the value of the errorMessage property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getErrorMessage() {
+ return errorMessage;
+ }
+
+ /**
+ * Sets the value of the errorMessage property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setErrorMessage(String value) {
+ this.errorMessage = value;
+ }
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetHashDataInputResponseType.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetHashDataInputResponseType.java
new file mode 100644
index 00000000..ad029757
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetHashDataInputResponseType.java
@@ -0,0 +1,267 @@
+
+package at.gv.egiz.stal.service.types;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * <p>Java class for GetHashDataInputResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="GetHashDataInputResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Reference" maxOccurs="unbounded">
+ * &lt;complexType>
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>base64Binary">
+ * &lt;attribute name="ID" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="MimeType" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="Encoding" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="Filename" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;attribute name="SessionId" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "GetHashDataInputResponseType", propOrder = {
+ "reference"
+})
+public class GetHashDataInputResponseType {
+
+ @XmlElement(name = "Reference", required = true)
+ protected List<GetHashDataInputResponseType.Reference> reference;
+ @XmlAttribute(name = "SessionId")
+ protected String sessionId;
+
+ /**
+ * Gets the value of the reference property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the reference property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getReference().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link GetHashDataInputResponseType.Reference }
+ *
+ *
+ */
+ public List<GetHashDataInputResponseType.Reference> getReference() {
+ if (reference == null) {
+ reference = new ArrayList<GetHashDataInputResponseType.Reference>();
+ }
+ return this.reference;
+ }
+
+ /**
+ * Gets the value of the sessionId property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getSessionId() {
+ return sessionId;
+ }
+
+ /**
+ * Sets the value of the sessionId property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSessionId(String value) {
+ this.sessionId = value;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>base64Binary">
+ * &lt;attribute name="ID" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="MimeType" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="Encoding" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="Filename" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "", propOrder = {
+ "value"
+ })
+ public static class Reference {
+
+ @XmlValue
+ protected byte[] value;
+ @XmlAttribute(name = "ID")
+ protected String id;
+ @XmlAttribute(name = "MimeType")
+ protected String mimeType;
+ @XmlAttribute(name = "Encoding")
+ protected String encoding;
+ @XmlAttribute(name = "Filename")
+ protected String filename;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setValue(byte[] value) {
+ this.value = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getID() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setID(String value) {
+ this.id = value;
+ }
+
+ /**
+ * Gets the value of the mimeType property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getMimeType() {
+ return mimeType;
+ }
+
+ /**
+ * Sets the value of the mimeType property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setMimeType(String value) {
+ this.mimeType = value;
+ }
+
+ /**
+ * Gets the value of the encoding property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getEncoding() {
+ return encoding;
+ }
+
+ /**
+ * Sets the value of the encoding property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setEncoding(String value) {
+ this.encoding = value;
+ }
+
+ /**
+ * Gets the value of the filename property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getFilename() {
+ return filename;
+ }
+
+ /**
+ * Sets the value of the filename property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setFilename(String value) {
+ this.filename = value;
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetHashDataInputType.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetHashDataInputType.java
new file mode 100644
index 00000000..5309482a
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetHashDataInputType.java
@@ -0,0 +1,156 @@
+
+package at.gv.egiz.stal.service.types;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for GetHashDataInputType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="GetHashDataInputType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Reference" maxOccurs="unbounded">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="ID" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;attribute name="SessionId" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "GetHashDataInputType", propOrder = {
+ "reference"
+})
+public class GetHashDataInputType {
+
+ @XmlElement(name = "Reference", required = true)
+ protected List<GetHashDataInputType.Reference> reference;
+ @XmlAttribute(name = "SessionId")
+ protected String sessionId;
+
+ /**
+ * Gets the value of the reference property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the reference property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getReference().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link GetHashDataInputType.Reference }
+ *
+ *
+ */
+ public List<GetHashDataInputType.Reference> getReference() {
+ if (reference == null) {
+ reference = new ArrayList<GetHashDataInputType.Reference>();
+ }
+ return this.reference;
+ }
+
+ /**
+ * Gets the value of the sessionId property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getSessionId() {
+ return sessionId;
+ }
+
+ /**
+ * Sets the value of the sessionId property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSessionId(String value) {
+ this.sessionId = value;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="ID" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "")
+ public static class Reference {
+
+ @XmlAttribute(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getID() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setID(String value) {
+ this.id = value;
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetNextRequestResponseType.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetNextRequestResponseType.java
new file mode 100644
index 00000000..7c1f881e
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetNextRequestResponseType.java
@@ -0,0 +1,115 @@
+
+package at.gv.egiz.stal.service.types;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlType;
+//import at.buergerkarte.namespaces.cardchannel.service.ScriptType;
+
+
+/**
+ * <p>Java class for GetNextRequestResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="GetNextRequestResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice maxOccurs="unbounded">
+ * &lt;element name="InfoboxReadRequest" type="{http://www.egiz.gv.at/stal}InfoboxReadRequestType"/>
+ * &lt;element name="SignRequest" type="{http://www.egiz.gv.at/stal}SignRequestType"/>
+ * &lt;element name="QuitRequest" type="{http://www.egiz.gv.at/stal}QuitRequestType"/>
+ * &lt;element name="StatusRequest" type="{http://www.egiz.gv.at/stal}StatusRequestType"/>
+ * &lt;element ref="{http://www.egiz.gv.at/stal}OtherRequest"/>
+ * &lt;/choice>
+ * &lt;attribute name="SessionId" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "GetNextRequestResponseType", propOrder = {
+ "infoboxReadRequestOrSignRequestOrQuitRequest"
+})
+public class GetNextRequestResponseType {
+
+ @XmlElementRefs({
+ @XmlElementRef(name = "OtherRequest", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
+ @XmlElementRef(name = "QuitRequest", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
+ @XmlElementRef(name = "InfoboxReadRequest", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
+ @XmlElementRef(name = "SignRequest", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
+ @XmlElementRef(name = "StatusRequest", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class)
+ })
+ protected List<JAXBElement<? extends RequestType>> infoboxReadRequestOrSignRequestOrQuitRequest;
+ @XmlAttribute(name = "SessionId")
+ protected String sessionId;
+
+ /**
+ * Gets the value of the infoboxReadRequestOrSignRequestOrQuitRequest property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the infoboxReadRequestOrSignRequestOrQuitRequest property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getInfoboxReadRequestOrSignRequestOrQuitRequest().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link JAXBElement }{@code <}{@link RequestType }{@code >}
+ * {@link JAXBElement }{@code <}{@link QuitRequestType }{@code >}
+ * {@link JAXBElement }{@code <}{@link InfoboxReadRequestType }{@code >}
+ * {@link JAXBElement }{@code <}{@link ScriptType }{@code >}
+ * {@link JAXBElement }{@code <}{@link StatusRequestType }{@code >}
+ * {@link JAXBElement }{@code <}{@link SignRequestType }{@code >}
+ *
+ *
+ */
+ public List<JAXBElement<? extends RequestType>> getInfoboxReadRequestOrSignRequestOrQuitRequest() {
+ if (infoboxReadRequestOrSignRequestOrQuitRequest == null) {
+ infoboxReadRequestOrSignRequestOrQuitRequest = new ArrayList<JAXBElement<? extends RequestType>>();
+ }
+ return this.infoboxReadRequestOrSignRequestOrQuitRequest;
+ }
+
+ /**
+ * Gets the value of the sessionId property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getSessionId() {
+ return sessionId;
+ }
+
+ /**
+ * Sets the value of the sessionId property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSessionId(String value) {
+ this.sessionId = value;
+ }
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetNextRequestType.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetNextRequestType.java
new file mode 100644
index 00000000..691ecd9b
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/GetNextRequestType.java
@@ -0,0 +1,114 @@
+
+package at.gv.egiz.stal.service.types;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for GetNextRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="GetNextRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice maxOccurs="unbounded">
+ * &lt;element name="InfoboxReadResponse" type="{http://www.egiz.gv.at/stal}InfoboxReadResponseType"/>
+ * &lt;element name="SignResponse" type="{http://www.egiz.gv.at/stal}SignResponseType"/>
+ * &lt;element name="ErrorResponse" type="{http://www.egiz.gv.at/stal}ErrorResponseType"/>
+ * &lt;element name="StatusResponse" type="{http://www.egiz.gv.at/stal}StatusResponseType"/>
+ * &lt;element ref="{http://www.egiz.gv.at/stal}OtherResponse"/>
+ * &lt;/choice>
+ * &lt;attribute name="SessionId" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "GetNextRequestType", propOrder = {
+ "infoboxReadResponseOrSignResponseOrErrorResponse"
+})
+public class GetNextRequestType {
+
+ @XmlElementRefs({
+ @XmlElementRef(name = "StatusResponse", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
+ @XmlElementRef(name = "InfoboxReadResponse", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
+ @XmlElementRef(name = "OtherResponse", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
+ @XmlElementRef(name = "ErrorResponse", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class),
+ @XmlElementRef(name = "SignResponse", namespace = "http://www.egiz.gv.at/stal", type = JAXBElement.class)
+ })
+ protected List<JAXBElement<? extends at.gv.egiz.stal.service.types.ResponseType>> infoboxReadResponseOrSignResponseOrErrorResponse;
+ @XmlAttribute(name = "SessionId")
+ protected String sessionId;
+
+ /**
+ * Gets the value of the infoboxReadResponseOrSignResponseOrErrorResponse property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the infoboxReadResponseOrSignResponseOrErrorResponse property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getInfoboxReadResponseOrSignResponseOrErrorResponse().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link JAXBElement }{@code <}{@link at.buergerkarte.namespaces.cardchannel.service.ResponseType }{@code >}
+ * {@link JAXBElement }{@code <}{@link StatusResponseType }{@code >}
+ * {@link JAXBElement }{@code <}{@link at.gv.egiz.stal.service.types.ResponseType }{@code >}
+ * {@link JAXBElement }{@code <}{@link ErrorResponseType }{@code >}
+ * {@link JAXBElement }{@code <}{@link SignResponseType }{@code >}
+ * {@link JAXBElement }{@code <}{@link InfoboxReadResponseType }{@code >}
+ *
+ *
+ */
+ public List<JAXBElement<? extends at.gv.egiz.stal.service.types.ResponseType>> getInfoboxReadResponseOrSignResponseOrErrorResponse() {
+ if (infoboxReadResponseOrSignResponseOrErrorResponse == null) {
+ infoboxReadResponseOrSignResponseOrErrorResponse = new ArrayList<JAXBElement<? extends at.gv.egiz.stal.service.types.ResponseType>>();
+ }
+ return this.infoboxReadResponseOrSignResponseOrErrorResponse;
+ }
+
+ /**
+ * Gets the value of the sessionId property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getSessionId() {
+ return sessionId;
+ }
+
+ /**
+ * Sets the value of the sessionId property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSessionId(String value) {
+ this.sessionId = value;
+ }
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/InfoboxReadRequestType.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/InfoboxReadRequestType.java
new file mode 100644
index 00000000..0ab6f5f3
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/InfoboxReadRequestType.java
@@ -0,0 +1,102 @@
+
+package at.gv.egiz.stal.service.types;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for InfoboxReadRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InfoboxReadRequestType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.egiz.gv.at/stal}RequestType">
+ * &lt;sequence>
+ * &lt;element name="InfoboxIdentifier">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="Certificates"/>
+ * &lt;enumeration value="IdentityLink"/>
+ * &lt;enumeration value="Mandates"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/element>
+ * &lt;element name="DomainIdentifier" type="{http://www.w3.org/2001/XMLSchema}anyURI" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxReadRequestType", propOrder = {
+ "infoboxIdentifier",
+ "domainIdentifier"
+})
+public class InfoboxReadRequestType
+ extends RequestType
+{
+
+ @XmlElement(name = "InfoboxIdentifier", required = true)
+ protected String infoboxIdentifier;
+ @XmlElement(name = "DomainIdentifier")
+ @XmlSchemaType(name = "anyURI")
+ protected String domainIdentifier;
+
+ /**
+ * Gets the value of the infoboxIdentifier property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getInfoboxIdentifier() {
+ return infoboxIdentifier;
+ }
+
+ /**
+ * Sets the value of the infoboxIdentifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setInfoboxIdentifier(String value) {
+ this.infoboxIdentifier = value;
+ }
+
+ /**
+ * Gets the value of the domainIdentifier property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getDomainIdentifier() {
+ return domainIdentifier;
+ }
+
+ /**
+ * Sets the value of the domainIdentifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setDomainIdentifier(String value) {
+ this.domainIdentifier = value;
+ }
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/InfoboxReadResponseType.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/InfoboxReadResponseType.java
new file mode 100644
index 00000000..1d88737d
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/InfoboxReadResponseType.java
@@ -0,0 +1,62 @@
+
+package at.gv.egiz.stal.service.types;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for InfoboxReadResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InfoboxReadResponseType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.egiz.gv.at/stal}ResponseType">
+ * &lt;sequence>
+ * &lt;element name="InfoboxValue" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxReadResponseType", propOrder = {
+ "infoboxValue"
+})
+public class InfoboxReadResponseType
+ extends ResponseType
+{
+
+ @XmlElement(name = "InfoboxValue", required = true)
+ protected byte[] infoboxValue;
+
+ /**
+ * Gets the value of the infoboxValue property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getInfoboxValue() {
+ return infoboxValue;
+ }
+
+ /**
+ * Sets the value of the infoboxValue property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setInfoboxValue(byte[] value) {
+ this.infoboxValue = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/ObjectFactory.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/ObjectFactory.java
new file mode 100644
index 00000000..297fc924
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/ObjectFactory.java
@@ -0,0 +1,316 @@
+
+package at.gv.egiz.stal.service.types;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each
+ * Java content interface and Java element interface
+ * generated in the at.gv.egiz.stal.service.types package.
+ * <p>An ObjectFactory allows you to programatically
+ * construct new instances of the Java representation
+ * for XML content. The Java representation of XML
+ * content can consist of schema derived interfaces
+ * and classes representing the binding of schema
+ * type definitions, element declarations and model
+ * groups. Factory methods for each of these are
+ * provided in this class.
+ *
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _GetHashDataInput_QNAME = new QName("http://www.egiz.gv.at/stal", "GetHashDataInput");
+ private final static QName _GetHashDataInputResponse_QNAME = new QName("http://www.egiz.gv.at/stal", "GetHashDataInputResponse");
+ private final static QName _OtherRequest_QNAME = new QName("http://www.egiz.gv.at/stal", "OtherRequest");
+ private final static QName _GetNextRequest_QNAME = new QName("http://www.egiz.gv.at/stal", "GetNextRequest");
+ private final static QName _OtherResponse_QNAME = new QName("http://www.egiz.gv.at/stal", "OtherResponse");
+ private final static QName _SessionId_QNAME = new QName("http://www.egiz.gv.at/stal", "SessionId");
+ private final static QName _GetHashDataInputFault_QNAME = new QName("http://www.egiz.gv.at/stal", "GetHashDataInputFault");
+ private final static QName _GetNextRequestResponse_QNAME = new QName("http://www.egiz.gv.at/stal", "GetNextRequestResponse");
+ private final static QName _GetNextRequestResponseTypeQuitRequest_QNAME = new QName("http://www.egiz.gv.at/stal", "QuitRequest");
+ private final static QName _GetNextRequestResponseTypeInfoboxReadRequest_QNAME = new QName("http://www.egiz.gv.at/stal", "InfoboxReadRequest");
+ private final static QName _GetNextRequestResponseTypeSignRequest_QNAME = new QName("http://www.egiz.gv.at/stal", "SignRequest");
+ private final static QName _GetNextRequestTypeErrorResponse_QNAME = new QName("http://www.egiz.gv.at/stal", "ErrorResponse");
+ private final static QName _GetNextRequestTypeSignResponse_QNAME = new QName("http://www.egiz.gv.at/stal", "SignResponse");
+ private final static QName _GetNextRequestTypeInfoboxReadResponse_QNAME = new QName("http://www.egiz.gv.at/stal", "InfoboxReadResponse");
+ private final static QName _GetNextRequestResponseTypeStatusRequest_QNAME = new QName("http://www.egiz.gv.at/stal", "StatusRequest");
+ private final static QName _GetNextRequestTypeStatusResponse_QNAME = new QName("http://www.egiz.gv.at/stal", "StatusResponse");
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: at.gv.egiz.stal.service.types
+ *
+ */
+ public ObjectFactory() {
+ }
+
+ /**
+ * Create an instance of {@link StatusResponseType }
+ *
+ */
+ public StatusResponseType createStatusResponseType() {
+ return new StatusResponseType();
+ }
+
+ /**
+ * Create an instance of {@link StatusRequestType }
+ *
+ */
+ public StatusRequestType createStatusRequestType() {
+ return new StatusRequestType();
+ }
+
+ /**
+ * Create an instance of {@link GetHashDataInputType }
+ *
+ */
+ public GetHashDataInputType createGetHashDataInputType() {
+ return new GetHashDataInputType();
+ }
+
+ /**
+ * Create an instance of {@link GetHashDataInputResponseType.Reference }
+ *
+ */
+ public GetHashDataInputResponseType.Reference createGetHashDataInputResponseTypeReference() {
+ return new GetHashDataInputResponseType.Reference();
+ }
+
+ /**
+ * Create an instance of {@link GetNextRequestType }
+ *
+ */
+ public GetNextRequestType createGetNextRequestType() {
+ return new GetNextRequestType();
+ }
+
+ /**
+ * Create an instance of {@link SignRequestType }
+ *
+ */
+ public SignRequestType createSignRequestType() {
+ return new SignRequestType();
+ }
+
+ /**
+ * Create an instance of {@link GetHashDataInputType.Reference }
+ *
+ */
+ public GetHashDataInputType.Reference createGetHashDataInputTypeReference() {
+ return new GetHashDataInputType.Reference();
+ }
+
+ /**
+ * Create an instance of {@link ErrorResponseType }
+ *
+ */
+ public ErrorResponseType createErrorResponseType() {
+ return new ErrorResponseType();
+ }
+
+ /**
+ * Create an instance of {@link QuitRequestType }
+ *
+ */
+ public QuitRequestType createQuitRequestType() {
+ return new QuitRequestType();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxReadResponseType }
+ *
+ */
+ public InfoboxReadResponseType createInfoboxReadResponseType() {
+ return new InfoboxReadResponseType();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxReadRequestType }
+ *
+ */
+ public InfoboxReadRequestType createInfoboxReadRequestType() {
+ return new InfoboxReadRequestType();
+ }
+
+ /**
+ * Create an instance of {@link GetNextRequestResponseType }
+ *
+ */
+ public GetNextRequestResponseType createGetNextRequestResponseType() {
+ return new GetNextRequestResponseType();
+ }
+
+ /**
+ * Create an instance of {@link GetHashDataInputResponseType }
+ *
+ */
+ public GetHashDataInputResponseType createGetHashDataInputResponseType() {
+ return new GetHashDataInputResponseType();
+ }
+
+ /**
+ * Create an instance of {@link SignResponseType }
+ *
+ */
+ public SignResponseType createSignResponseType() {
+ return new SignResponseType();
+ }
+
+ /**
+ * Create an instance of {@link GetHashDataInputFaultType }
+ *
+ */
+ public GetHashDataInputFaultType createGetHashDataInputFaultType() {
+ return new GetHashDataInputFaultType();
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link StatusRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.egiz.gv.at/stal", name = "StatusRequest", scope = GetNextRequestResponseType.class)
+ public JAXBElement<StatusRequestType> createGetNextRequestResponseTypeStatusRequest(StatusRequestType value) {
+ return new JAXBElement<StatusRequestType>(_GetNextRequestResponseTypeStatusRequest_QNAME, StatusRequestType.class, GetNextRequestResponseType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link StatusResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.egiz.gv.at/stal", name = "StatusResponse", scope = GetNextRequestType.class)
+ public JAXBElement<StatusResponseType> createGetNextRequestTypeStatusResponse(StatusResponseType value) {
+ return new JAXBElement<StatusResponseType>(_GetNextRequestTypeStatusResponse_QNAME, StatusResponseType.class, GetNextRequestType.class, value);
+ }
+
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link GetHashDataInputType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.egiz.gv.at/stal", name = "GetHashDataInput")
+ public JAXBElement<GetHashDataInputType> createGetHashDataInput(GetHashDataInputType value) {
+ return new JAXBElement<GetHashDataInputType>(_GetHashDataInput_QNAME, GetHashDataInputType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link GetHashDataInputResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.egiz.gv.at/stal", name = "GetHashDataInputResponse")
+ public JAXBElement<GetHashDataInputResponseType> createGetHashDataInputResponse(GetHashDataInputResponseType value) {
+ return new JAXBElement<GetHashDataInputResponseType>(_GetHashDataInputResponse_QNAME, GetHashDataInputResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link RequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.egiz.gv.at/stal", name = "OtherRequest")
+ public JAXBElement<RequestType> createOtherRequest(RequestType value) {
+ return new JAXBElement<RequestType>(_OtherRequest_QNAME, RequestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link GetNextRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.egiz.gv.at/stal", name = "GetNextRequest")
+ public JAXBElement<GetNextRequestType> createGetNextRequest(GetNextRequestType value) {
+ return new JAXBElement<GetNextRequestType>(_GetNextRequest_QNAME, GetNextRequestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.egiz.gv.at/stal", name = "OtherResponse")
+ public JAXBElement<ResponseType> createOtherResponse(ResponseType value) {
+ return new JAXBElement<ResponseType>(_OtherResponse_QNAME, ResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.egiz.gv.at/stal", name = "SessionId")
+ public JAXBElement<String> createSessionId(String value) {
+ return new JAXBElement<String>(_SessionId_QNAME, String.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link GetHashDataInputFaultType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.egiz.gv.at/stal", name = "GetHashDataInputFault")
+ public JAXBElement<GetHashDataInputFaultType> createGetHashDataInputFault(GetHashDataInputFaultType value) {
+ return new JAXBElement<GetHashDataInputFaultType>(_GetHashDataInputFault_QNAME, GetHashDataInputFaultType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link GetNextRequestResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.egiz.gv.at/stal", name = "GetNextRequestResponse")
+ public JAXBElement<GetNextRequestResponseType> createGetNextRequestResponse(GetNextRequestResponseType value) {
+ return new JAXBElement<GetNextRequestResponseType>(_GetNextRequestResponse_QNAME, GetNextRequestResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link QuitRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.egiz.gv.at/stal", name = "QuitRequest", scope = GetNextRequestResponseType.class)
+ public JAXBElement<QuitRequestType> createGetNextRequestResponseTypeQuitRequest(QuitRequestType value) {
+ return new JAXBElement<QuitRequestType>(_GetNextRequestResponseTypeQuitRequest_QNAME, QuitRequestType.class, GetNextRequestResponseType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link InfoboxReadRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.egiz.gv.at/stal", name = "InfoboxReadRequest", scope = GetNextRequestResponseType.class)
+ public JAXBElement<InfoboxReadRequestType> createGetNextRequestResponseTypeInfoboxReadRequest(InfoboxReadRequestType value) {
+ return new JAXBElement<InfoboxReadRequestType>(_GetNextRequestResponseTypeInfoboxReadRequest_QNAME, InfoboxReadRequestType.class, GetNextRequestResponseType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.egiz.gv.at/stal", name = "SignRequest", scope = GetNextRequestResponseType.class)
+ public JAXBElement<SignRequestType> createGetNextRequestResponseTypeSignRequest(SignRequestType value) {
+ return new JAXBElement<SignRequestType>(_GetNextRequestResponseTypeSignRequest_QNAME, SignRequestType.class, GetNextRequestResponseType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ErrorResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.egiz.gv.at/stal", name = "ErrorResponse", scope = GetNextRequestType.class)
+ public JAXBElement<ErrorResponseType> createGetNextRequestTypeErrorResponse(ErrorResponseType value) {
+ return new JAXBElement<ErrorResponseType>(_GetNextRequestTypeErrorResponse_QNAME, ErrorResponseType.class, GetNextRequestType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.egiz.gv.at/stal", name = "SignResponse", scope = GetNextRequestType.class)
+ public JAXBElement<SignResponseType> createGetNextRequestTypeSignResponse(SignResponseType value) {
+ return new JAXBElement<SignResponseType>(_GetNextRequestTypeSignResponse_QNAME, SignResponseType.class, GetNextRequestType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link InfoboxReadResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.egiz.gv.at/stal", name = "InfoboxReadResponse", scope = GetNextRequestType.class)
+ public JAXBElement<InfoboxReadResponseType> createGetNextRequestTypeInfoboxReadResponse(InfoboxReadResponseType value) {
+ return new JAXBElement<InfoboxReadResponseType>(_GetNextRequestTypeInfoboxReadResponse_QNAME, InfoboxReadResponseType.class, GetNextRequestType.class, value);
+ }
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/QuitRequestType.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/QuitRequestType.java
new file mode 100644
index 00000000..7dc4197f
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/QuitRequestType.java
@@ -0,0 +1,32 @@
+
+package at.gv.egiz.stal.service.types;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for QuitRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="QuitRequestType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.egiz.gv.at/stal}RequestType">
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "QuitRequestType")
+public class QuitRequestType
+ extends RequestType
+{
+
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/RequestType.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/RequestType.java
new file mode 100644
index 00000000..407fc8a4
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/RequestType.java
@@ -0,0 +1,39 @@
+
+package at.gv.egiz.stal.service.types;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+//import at.buergerkarte.namespaces.cardchannel.service.ScriptType;
+
+
+/**
+ * <p>Java class for RequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="RequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RequestType")
+@XmlSeeAlso({
+// ScriptType.class,
+ SignRequestType.class,
+ InfoboxReadRequestType.class,
+ QuitRequestType.class,
+ StatusRequestType.class
+})
+public abstract class RequestType {
+
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/ResponseType.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/ResponseType.java
new file mode 100644
index 00000000..8d5e1e77
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/ResponseType.java
@@ -0,0 +1,38 @@
+
+package at.gv.egiz.stal.service.types;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ResponseType")
+@XmlSeeAlso({
+// at.buergerkarte.namespaces.cardchannel.service.ResponseType.class,
+ ErrorResponseType.class,
+ InfoboxReadResponseType.class,
+ SignResponseType.class,
+ StatusResponseType.class
+})
+public abstract class ResponseType {
+
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/SignRequestType.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/SignRequestType.java
new file mode 100644
index 00000000..09e30967
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/SignRequestType.java
@@ -0,0 +1,97 @@
+
+package at.gv.egiz.stal.service.types;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SignRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignRequestType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.egiz.gv.at/stal}RequestType">
+ * &lt;sequence>
+ * &lt;element name="KeyIdentifier">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="SecureSignatureKeypair"/>
+ * &lt;enumeration value="CertifiedKeypair"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/element>
+ * &lt;element name="SignedInfo" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignRequestType", propOrder = {
+ "keyIdentifier",
+ "signedInfo"
+})
+public class SignRequestType
+ extends RequestType
+{
+
+ @XmlElement(name = "KeyIdentifier", required = true)
+ protected String keyIdentifier;
+ @XmlElement(name = "SignedInfo", required = true)
+ protected byte[] signedInfo;
+
+ /**
+ * Gets the value of the keyIdentifier property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getKeyIdentifier() {
+ return keyIdentifier;
+ }
+
+ /**
+ * Sets the value of the keyIdentifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setKeyIdentifier(String value) {
+ this.keyIdentifier = value;
+ }
+
+ /**
+ * Gets the value of the signedInfo property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getSignedInfo() {
+ return signedInfo;
+ }
+
+ /**
+ * Sets the value of the signedInfo property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setSignedInfo(byte[] value) {
+ this.signedInfo = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/SignResponseType.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/SignResponseType.java
new file mode 100644
index 00000000..a33fb34c
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/SignResponseType.java
@@ -0,0 +1,62 @@
+
+package at.gv.egiz.stal.service.types;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SignResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignResponseType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.egiz.gv.at/stal}ResponseType">
+ * &lt;sequence>
+ * &lt;element name="SignatureValue" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignResponseType", propOrder = {
+ "signatureValue"
+})
+public class SignResponseType
+ extends ResponseType
+{
+
+ @XmlElement(name = "SignatureValue", required = true)
+ protected byte[] signatureValue;
+
+ /**
+ * Gets the value of the signatureValue property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getSignatureValue() {
+ return signatureValue;
+ }
+
+ /**
+ * Sets the value of the signatureValue property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setSignatureValue(byte[] value) {
+ this.signatureValue = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/StatusRequestType.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/StatusRequestType.java
new file mode 100644
index 00000000..44269a0c
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/StatusRequestType.java
@@ -0,0 +1,32 @@
+
+package at.gv.egiz.stal.service.types;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for StatusRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="StatusRequestType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.egiz.gv.at/stal}RequestType">
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "StatusRequestType")
+public class StatusRequestType
+ extends RequestType
+{
+
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/StatusResponseType.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/StatusResponseType.java
new file mode 100644
index 00000000..581fdc0e
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/StatusResponseType.java
@@ -0,0 +1,60 @@
+
+package at.gv.egiz.stal.service.types;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for StatusResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="StatusResponseType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.egiz.gv.at/stal}ResponseType">
+ * &lt;attribute name="cardReady" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "StatusResponseType")
+public class StatusResponseType
+ extends ResponseType
+{
+
+ @XmlAttribute
+ protected Boolean cardReady;
+
+ /**
+ * Gets the value of the cardReady property.
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public Boolean isCardReady() {
+ return cardReady;
+ }
+
+ /**
+ * Sets the value of the cardReady property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setCardReady(Boolean value) {
+ this.cardReady = value;
+ }
+
+}
diff --git a/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/package-info.java b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/package-info.java
new file mode 100644
index 00000000..3328fdc0
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/main/java/at/gv/egiz/stal/service/types/package-info.java
@@ -0,0 +1,2 @@
+@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.egiz.gv.at/stal", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package at.gv.egiz.stal.service.types;
diff --git a/mocca-1.2.11/STALService/src/test/java/at/gv/egiz/stal/service/translator/STALTranslatorTest.java b/mocca-1.2.11/STALService/src/test/java/at/gv/egiz/stal/service/translator/STALTranslatorTest.java
new file mode 100644
index 00000000..1dad7973
--- /dev/null
+++ b/mocca-1.2.11/STALService/src/test/java/at/gv/egiz/stal/service/translator/STALTranslatorTest.java
@@ -0,0 +1,146 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package at.gv.egiz.stal.service.translator;
+
+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.TranslationHandler;
+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 at.gv.egiz.stal.service.types.SignRequestType;
+import javax.xml.bind.JAXBElement;
+import javax.xml.namespace.QName;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author clemens
+ */
+public class STALTranslatorTest {
+
+ static ObjectFactory of;
+
+ public STALTranslatorTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+ of = new ObjectFactory();
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+ /**
+ * Test of registerTranslationHandler method, of class STALTranslator.
+ */
+ @Test
+ @Ignore
+ public void testRegisterTranslationHandler() {
+ System.out.println("registerTranslationHandler");
+ TranslationHandler handler = null;
+ STALTranslator instance = new STALTranslator();
+ instance.registerTranslationHandler(handler);
+
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of translate method, of class STALTranslator.
+ */
+ @Test
+ public void testTranslate_STALRequest() throws Exception {
+ System.out.println("translate");
+ SignRequest request = new SignRequest();
+ request.setKeyIdentifier("kid");
+ request.setSignedInfo("signedinfo".getBytes());
+ STALTranslator instance = new STALTranslator();
+ JAXBElement<? extends RequestType> result = instance.translate(request);
+ assertEquals(SignRequestType.class, result.getValue().getClass());
+ SignRequestType resultT = (SignRequestType) result.getValue();
+ assertEquals(request.getKeyIdentifier(), resultT.getKeyIdentifier());
+ assertEquals(request.getSignedInfo(), resultT.getSignedInfo());
+ }
+
+ /**
+ * Test of translate method, of class STALTranslator.
+ */
+ @Test
+ public void testTranslate_1args_1() throws Exception {
+ System.out.println("translate");
+ SignRequestType req = of.createSignRequestType();
+ req.setKeyIdentifier("kid");
+ req.setSignedInfo("signedinfo".getBytes());
+ JAXBElement<? extends RequestType> request = of.createGetNextRequestResponseTypeSignRequest(req);
+ STALTranslator instance = new STALTranslator();
+ STALRequest result = instance.translate(request);
+ assertEquals(SignRequest.class, result.getClass());
+ assertEquals(req.getKeyIdentifier(), ((SignRequest) result).getKeyIdentifier());
+ assertEquals(req.getSignedInfo(), ((SignRequest) result).getSignedInfo());
+ }
+
+ @Test(expected=RuntimeException.class)
+ public void testTranslate_invalidInput() throws Exception {
+ System.out.println("translate");
+ QName n = new QName("http://www.egiz.gv.at/stal", "SignRequest");
+ JAXBElement<? extends RequestType> request = new JAXBElement<SignRequestType>(n, SignRequestType.class, null);
+ STALTranslator instance = new STALTranslator();
+ STALRequest result = instance.translate(request);
+ assertEquals(SignRequest.class, result.getClass());
+ }
+
+
+ /**
+ * Test of translate method, of class STALTranslator.
+ */
+ @Test
+ @Ignore
+ public void testTranslate_STALResponse() throws Exception {
+ System.out.println("translate");
+ STALResponse response = null;
+ STALTranslator instance = new STALTranslator();
+ JAXBElement<? extends ResponseType> expResult = null;
+ JAXBElement<? extends ResponseType> result = instance.translate(response);
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+ /**
+ * Test of translate method, of class STALTranslator.
+ */
+ @Test
+ @Ignore
+ public void testTranslate_1args_2() throws Exception {
+ System.out.println("translate");
+ JAXBElement<? extends ResponseType> response = null;
+ STALTranslator instance = new STALTranslator();
+ STALResponse expResult = null;
+ STALResponse result = instance.translate(response);
+ assertEquals(expResult, result);
+ // TODO review the generated test code and remove the default call to fail.
+ fail("The test case is a prototype.");
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/STALXService/pom.xml b/mocca-1.2.11/STALXService/pom.xml
new file mode 100644
index 00000000..402f40c6
--- /dev/null
+++ b/mocca-1.2.11/STALXService/pom.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>STALXService</artifactId>
+ <name>STAL-X Service</name>
+ <version>1.2.11</version>
+ <url>http://maven.apache.org</url>
+ <dependencies>
+ <dependency>
+ <artifactId>STALService</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <artifactId>STALExt</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </dependency>
+ </dependencies>
+</project> \ No newline at end of file
diff --git a/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ATRType.java b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ATRType.java
new file mode 100644
index 00000000..b1b83976
--- /dev/null
+++ b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ATRType.java
@@ -0,0 +1,100 @@
+
+package at.buergerkarte.namespaces.cardchannel.service;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Contains the ATR received as reponse to a Reset
+ * command
+ *
+ * <p>Java class for ATRType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ATRType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>hexBinary">
+ * &lt;attribute name="rc" type="{http://www.w3.org/2001/XMLSchema}integer" default="0" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ATRType", propOrder = {
+ "value"
+})
+public class ATRType {
+
+ @XmlValue
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ @XmlSchemaType(name = "hexBinary")
+ protected byte[] value;
+ @XmlAttribute
+ protected BigInteger rc;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public byte[] getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(byte[] value) {
+ this.value = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the rc property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getRc() {
+ if (rc == null) {
+ return new BigInteger("0");
+ } else {
+ return rc;
+ }
+ }
+
+ /**
+ * Sets the value of the rc property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setRc(BigInteger value) {
+ this.rc = value;
+ }
+
+}
diff --git a/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/AttributeList.java b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/AttributeList.java
new file mode 100644
index 00000000..2b00509f
--- /dev/null
+++ b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/AttributeList.java
@@ -0,0 +1,71 @@
+
+package at.buergerkarte.namespaces.cardchannel.service;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Contains a list of attributes
+ *
+ * <p>Java class for AttributeList complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AttributeList">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Attribute" type="{http://www.buergerkarte.at/cardchannel}AttributeType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AttributeList", propOrder = {
+ "attribute"
+})
+public class AttributeList {
+
+ @XmlElement(name = "Attribute")
+ protected List<AttributeType> attribute;
+
+ /**
+ * Gets the value of the attribute property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the attribute property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAttribute().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link AttributeType }
+ *
+ *
+ */
+ public List<AttributeType> getAttribute() {
+ if (attribute == null) {
+ attribute = new ArrayList<AttributeType>();
+ }
+ return this.attribute;
+ }
+
+}
diff --git a/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/AttributeType.java b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/AttributeType.java
new file mode 100644
index 00000000..d258545a
--- /dev/null
+++ b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/AttributeType.java
@@ -0,0 +1,264 @@
+
+package at.buergerkarte.namespaces.cardchannel.service;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * Contains an attribute converted from ASN.1
+ *
+ * <p>Java class for AttributeType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AttributeType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Integer" type="{http://www.w3.org/2001/XMLSchema}integer" minOccurs="0"/>
+ * &lt;element name="Latin1String" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="UTF8String" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="NumericString" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="PrintableString" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="GeneralizedTime" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
+ * &lt;element name="Date" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="oid" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AttributeType", propOrder = {
+ "integer",
+ "latin1String",
+ "utf8String",
+ "numericString",
+ "printableString",
+ "generalizedTime",
+ "date"
+})
+public class AttributeType {
+
+ @XmlElement(name = "Integer")
+ protected BigInteger integer;
+ @XmlElement(name = "Latin1String")
+ protected String latin1String;
+ @XmlElement(name = "UTF8String")
+ protected String utf8String;
+ @XmlElement(name = "NumericString")
+ protected String numericString;
+ @XmlElement(name = "PrintableString")
+ protected String printableString;
+ @XmlElement(name = "GeneralizedTime")
+ @XmlSchemaType(name = "dateTime")
+ protected XMLGregorianCalendar generalizedTime;
+ @XmlElement(name = "Date")
+ protected String date;
+ @XmlAttribute(required = true)
+ protected String oid;
+
+ /**
+ * Gets the value of the integer property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getInteger() {
+ return integer;
+ }
+
+ /**
+ * Sets the value of the integer property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setInteger(BigInteger value) {
+ this.integer = value;
+ }
+
+ /**
+ * Gets the value of the latin1String property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getLatin1String() {
+ return latin1String;
+ }
+
+ /**
+ * Sets the value of the latin1String property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setLatin1String(String value) {
+ this.latin1String = value;
+ }
+
+ /**
+ * Gets the value of the utf8String property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getUTF8String() {
+ return utf8String;
+ }
+
+ /**
+ * Sets the value of the utf8String property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setUTF8String(String value) {
+ this.utf8String = value;
+ }
+
+ /**
+ * Gets the value of the numericString property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getNumericString() {
+ return numericString;
+ }
+
+ /**
+ * Sets the value of the numericString property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setNumericString(String value) {
+ this.numericString = value;
+ }
+
+ /**
+ * Gets the value of the printableString property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getPrintableString() {
+ return printableString;
+ }
+
+ /**
+ * Sets the value of the printableString property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPrintableString(String value) {
+ this.printableString = value;
+ }
+
+ /**
+ * Gets the value of the generalizedTime property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public XMLGregorianCalendar getGeneralizedTime() {
+ return generalizedTime;
+ }
+
+ /**
+ * Sets the value of the generalizedTime property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public void setGeneralizedTime(XMLGregorianCalendar value) {
+ this.generalizedTime = value;
+ }
+
+ /**
+ * Gets the value of the date property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getDate() {
+ return date;
+ }
+
+ /**
+ * Sets the value of the date property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setDate(String value) {
+ this.date = value;
+ }
+
+ /**
+ * Gets the value of the oid property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getOid() {
+ return oid;
+ }
+
+ /**
+ * Sets the value of the oid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setOid(String value) {
+ this.oid = value;
+ }
+
+}
diff --git a/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/CommandAPDUType.java b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/CommandAPDUType.java
new file mode 100644
index 00000000..98337761
--- /dev/null
+++ b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/CommandAPDUType.java
@@ -0,0 +1,154 @@
+
+package at.buergerkarte.namespaces.cardchannel.service;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Contains a sequence of bytes send as command APDU to the
+ * icc
+ *
+ * <p>Java class for CommandAPDUType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CommandAPDUType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>hexBinary">
+ * &lt;attribute name="sequence" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
+ * &lt;attribute name="of" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
+ * &lt;attribute name="expectedSW" type="{http://www.w3.org/2001/XMLSchema}hexBinary" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CommandAPDUType", propOrder = {
+ "value"
+})
+public class CommandAPDUType {
+
+ @XmlValue
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ @XmlSchemaType(name = "hexBinary")
+ protected byte[] value;
+ @XmlAttribute(required = true)
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger sequence;
+ @XmlAttribute(required = true)
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger of;
+ @XmlAttribute
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ @XmlSchemaType(name = "hexBinary")
+ protected byte[] expectedSW;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public byte[] getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(byte[] value) {
+ this.value = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the sequence property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getSequence() {
+ return sequence;
+ }
+
+ /**
+ * Sets the value of the sequence property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setSequence(BigInteger value) {
+ this.sequence = value;
+ }
+
+ /**
+ * Gets the value of the of property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getOf() {
+ return of;
+ }
+
+ /**
+ * Sets the value of the of property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setOf(BigInteger value) {
+ this.of = value;
+ }
+
+ /**
+ * Gets the value of the expectedSW property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public byte[] getExpectedSW() {
+ return expectedSW;
+ }
+
+ /**
+ * Sets the value of the expectedSW property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setExpectedSW(byte[] value) {
+ this.expectedSW = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ObjectFactory.java b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ObjectFactory.java
new file mode 100644
index 00000000..dc8ba4da
--- /dev/null
+++ b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ObjectFactory.java
@@ -0,0 +1,172 @@
+
+package at.buergerkarte.namespaces.cardchannel.service;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each
+ * Java content interface and Java element interface
+ * generated in the at.buergerkarte.namespaces.cardchannel.service package.
+ * <p>An ObjectFactory allows you to programatically
+ * construct new instances of the Java representation
+ * for XML content. The Java representation of XML
+ * content can consist of schema derived interfaces
+ * and classes representing the binding of schema
+ * type definitions, element declarations and model
+ * groups. Factory methods for each of these are
+ * provided in this class.
+ *
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _EHIC_QNAME = new QName("http://www.buergerkarte.at/cardchannel", "EHIC");
+ private final static QName _Status_QNAME = new QName("http://www.buergerkarte.at/cardchannel", "Status");
+ private final static QName _SVPersonenbindung_QNAME = new QName("http://www.buergerkarte.at/cardchannel", "SV-Personenbindung");
+ private final static QName _Grunddaten_QNAME = new QName("http://www.buergerkarte.at/cardchannel", "Grunddaten");
+
+ /** TODO */
+ private final static QName _Response_QNAME = new QName("http://www.buergerkarte.at/cardchannel", "Response");
+ private final static QName _Script_QNAME = new QName("http://www.buergerkarte.at/cardchannel", "Script");
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: at.buergerkarte.namespaces.cardchannel.service
+ *
+ */
+ public ObjectFactory() {
+ }
+
+ /**
+ * Create an instance of {@link ResponseAPDUType }
+ *
+ */
+ public ResponseAPDUType createResponseAPDUType() {
+ return new ResponseAPDUType();
+ }
+
+ /**
+ * Create an instance of {@link AttributeType }
+ *
+ */
+ public AttributeType createAttributeType() {
+ return new AttributeType();
+ }
+
+ /**
+ * Create an instance of {@link VerifyAPDUType }
+ *
+ */
+ public VerifyAPDUType createVerifyAPDUType() {
+ return new VerifyAPDUType();
+ }
+
+ /**
+ * Create an instance of {@link ATRType }
+ *
+ */
+ public ATRType createATRType() {
+ return new ATRType();
+ }
+
+ /**
+ * Create an instance of {@link ResponseType }
+ *
+ */
+ public ResponseType createResponseType() {
+ return new ResponseType();
+ }
+
+ /**
+ * Create an instance of {@link CommandAPDUType }
+ *
+ */
+ public CommandAPDUType createCommandAPDUType() {
+ return new CommandAPDUType();
+ }
+
+ /**
+ * Create an instance of {@link ResetType }
+ *
+ */
+ public ResetType createResetType() {
+ return new ResetType();
+ }
+
+ /**
+ * Create an instance of {@link ScriptType }
+ *
+ */
+ public ScriptType createScriptType() {
+ return new ScriptType();
+ }
+
+ /**
+ * Create an instance of {@link AttributeList }
+ *
+ */
+ public AttributeList createAttributeList() {
+ return new AttributeList();
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AttributeList }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/cardchannel", name = "EHIC")
+ public JAXBElement<AttributeList> createEHIC(AttributeList value) {
+ return new JAXBElement<AttributeList>(_EHIC_QNAME, AttributeList.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AttributeList }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/cardchannel", name = "Status")
+ public JAXBElement<AttributeList> createStatus(AttributeList value) {
+ return new JAXBElement<AttributeList>(_Status_QNAME, AttributeList.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/cardchannel", name = "Response", substitutionHeadNamespace = "http://www.egiz.gv.at/stal", substitutionHeadName = "OtherResponse")
+ public JAXBElement<ResponseType> createResponse(ResponseType value) {
+ return new JAXBElement<ResponseType>(_Response_QNAME, ResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/cardchannel", name = "SV-Personenbindung")
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ public JAXBElement<byte[]> createSVPersonenbindung(byte[] value) {
+ return new JAXBElement<byte[]>(_SVPersonenbindung_QNAME, byte[].class, null, ((byte[]) value));
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ScriptType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/cardchannel", name = "Script", substitutionHeadNamespace = "http://www.egiz.gv.at/stal", substitutionHeadName = "OtherRequest")
+ public JAXBElement<ScriptType> createScript(ScriptType value) {
+ return new JAXBElement<ScriptType>(_Script_QNAME, ScriptType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AttributeList }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/cardchannel", name = "Grunddaten")
+ public JAXBElement<AttributeList> createGrunddaten(AttributeList value) {
+ return new JAXBElement<AttributeList>(_Grunddaten_QNAME, AttributeList.class, null, value);
+ }
+
+}
diff --git a/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ResetType.java b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ResetType.java
new file mode 100644
index 00000000..e6e1eb95
--- /dev/null
+++ b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ResetType.java
@@ -0,0 +1,64 @@
+
+package at.buergerkarte.namespaces.cardchannel.service;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Reset the icc and sequence counter
+ *
+ * <p>Java class for ResetType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ResetType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="cold" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ResetType")
+public class ResetType {
+
+ @XmlAttribute
+ protected Boolean cold;
+
+ /**
+ * Gets the value of the cold property.
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public boolean isCold() {
+ if (cold == null) {
+ return true;
+ } else {
+ return cold;
+ }
+ }
+
+ /**
+ * Sets the value of the cold property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setCold(Boolean value) {
+ this.cold = value;
+ }
+
+}
diff --git a/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ResponseAPDUType.java b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ResponseAPDUType.java
new file mode 100644
index 00000000..1dba7996
--- /dev/null
+++ b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ResponseAPDUType.java
@@ -0,0 +1,161 @@
+
+package at.buergerkarte.namespaces.cardchannel.service;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Contains a sequence of bytes received from the card as response
+ * APDU
+ *
+ * <p>Java class for ResponseAPDUType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ResponseAPDUType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>hexBinary">
+ * &lt;attribute name="sequence" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
+ * &lt;attribute name="rc" type="{http://www.w3.org/2001/XMLSchema}integer" default="0" />
+ * &lt;attribute name="SW" type="{http://www.w3.org/2001/XMLSchema}hexBinary" default="9000" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ResponseAPDUType", propOrder = {
+ "value"
+})
+public class ResponseAPDUType {
+
+ @XmlValue
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ @XmlSchemaType(name = "hexBinary")
+ protected byte[] value;
+ @XmlAttribute(required = true)
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger sequence;
+ @XmlAttribute
+ protected BigInteger rc;
+ @XmlAttribute(name = "SW")
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ @XmlSchemaType(name = "hexBinary")
+ protected byte[] sw;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public byte[] getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(byte[] value) {
+ this.value = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the sequence property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getSequence() {
+ return sequence;
+ }
+
+ /**
+ * Sets the value of the sequence property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setSequence(BigInteger value) {
+ this.sequence = value;
+ }
+
+ /**
+ * Gets the value of the rc property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getRc() {
+ if (rc == null) {
+ return new BigInteger("0");
+ } else {
+ return rc;
+ }
+ }
+
+ /**
+ * Sets the value of the rc property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setRc(BigInteger value) {
+ this.rc = value;
+ }
+
+ /**
+ * Gets the value of the sw property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public byte[] getSW() {
+ if (sw == null) {
+ return new HexBinaryAdapter().unmarshal("9000");
+ } else {
+ return sw;
+ }
+ }
+
+ /**
+ * Sets the value of the sw property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSW(byte[] value) {
+ this.sw = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ResponseType.java b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ResponseType.java
new file mode 100644
index 00000000..86750d5d
--- /dev/null
+++ b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ResponseType.java
@@ -0,0 +1,82 @@
+
+package at.buergerkarte.namespaces.cardchannel.service;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * extends abstract stal:ResponseType
+ *
+ * Contains the result of the script executed by the
+ * BKU
+ *
+ * <p>Java class for ResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ResponseType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.egiz.gv.at/stal}ResponseType">
+ * &lt;choice maxOccurs="unbounded">
+ * &lt;element name="ATR" type="{http://www.buergerkarte.at/cardchannel}ATRType"/>
+ * &lt;element name="ResponseAPDU" type="{http://www.buergerkarte.at/cardchannel}ResponseAPDUType"/>
+ * &lt;/choice>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ResponseType", propOrder = {
+ "atrOrResponseAPDU"
+})
+public class ResponseType
+ extends at.gv.egiz.stal.service.types.ResponseType
+{
+
+ @XmlElements({
+ @XmlElement(name = "ATR", type = ATRType.class),
+ @XmlElement(name = "ResponseAPDU", type = ResponseAPDUType.class)
+ })
+ protected List<Object> atrOrResponseAPDU;
+
+ /**
+ * Gets the value of the atrOrResponseAPDU property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the atrOrResponseAPDU property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getATROrResponseAPDU().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link ATRType }
+ * {@link ResponseAPDUType }
+ *
+ *
+ */
+ public List<Object> getATROrResponseAPDU() {
+ if (atrOrResponseAPDU == null) {
+ atrOrResponseAPDU = new ArrayList<Object>();
+ }
+ return this.atrOrResponseAPDU;
+ }
+
+}
diff --git a/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ScriptType.java b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ScriptType.java
new file mode 100644
index 00000000..18ac8f6c
--- /dev/null
+++ b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/ScriptType.java
@@ -0,0 +1,85 @@
+
+package at.buergerkarte.namespaces.cardchannel.service;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlType;
+import at.gv.egiz.stal.service.types.RequestType;
+
+
+/**
+ * extends abstract stal:RequestType
+ *
+ * Contains the script to be executed by the BKU
+ *
+ * <p>Java class for ScriptType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ScriptType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.egiz.gv.at/stal}RequestType">
+ * &lt;choice maxOccurs="unbounded">
+ * &lt;element name="Reset" type="{http://www.buergerkarte.at/cardchannel}ResetType"/>
+ * &lt;element name="CommandAPDU" type="{http://www.buergerkarte.at/cardchannel}CommandAPDUType"/>
+ * &lt;element name="VerifyAPDU" type="{http://www.buergerkarte.at/cardchannel}VerifyAPDUType"/>
+ * &lt;/choice>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ScriptType", propOrder = {
+ "resetOrCommandAPDUOrVerifyAPDU"
+})
+public class ScriptType
+ extends RequestType
+{
+
+ @XmlElements({
+ @XmlElement(name = "VerifyAPDU", type = VerifyAPDUType.class),
+ @XmlElement(name = "Reset", type = ResetType.class),
+ @XmlElement(name = "CommandAPDU", type = CommandAPDUType.class)
+ })
+ protected List<Object> resetOrCommandAPDUOrVerifyAPDU;
+
+ /**
+ * Gets the value of the resetOrCommandAPDUOrVerifyAPDU property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the resetOrCommandAPDUOrVerifyAPDU property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getResetOrCommandAPDUOrVerifyAPDU().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link VerifyAPDUType }
+ * {@link ResetType }
+ * {@link CommandAPDUType }
+ *
+ *
+ */
+ public List<Object> getResetOrCommandAPDUOrVerifyAPDU() {
+ if (resetOrCommandAPDUOrVerifyAPDU == null) {
+ resetOrCommandAPDUOrVerifyAPDU = new ArrayList<Object>();
+ }
+ return this.resetOrCommandAPDUOrVerifyAPDU;
+ }
+
+}
diff --git a/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/VerifyAPDUType.java b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/VerifyAPDUType.java
new file mode 100644
index 00000000..8f688336
--- /dev/null
+++ b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/VerifyAPDUType.java
@@ -0,0 +1,266 @@
+
+package at.buergerkarte.namespaces.cardchannel.service;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Contains a sequence of bytes send as command APDU to the icc after a
+ * PIN entered by the user has been incorporated into the APDU
+ *
+ * <p>Java class for VerifyAPDUType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="VerifyAPDUType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>hexBinary">
+ * &lt;attribute name="sequence" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
+ * &lt;attribute name="of" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
+ * &lt;attribute name="expectedSW" type="{http://www.w3.org/2001/XMLSchema}hexBinary" />
+ * &lt;attribute name="message" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="format" use="required" type="{http://www.w3.org/2001/XMLSchema}hexBinary" />
+ * &lt;attribute name="offset" use="required" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger" />
+ * &lt;attribute name="timeout" use="required" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "VerifyAPDUType", propOrder = {
+ "value"
+})
+public class VerifyAPDUType {
+
+ @XmlValue
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ @XmlSchemaType(name = "hexBinary")
+ protected byte[] value;
+ @XmlAttribute(required = true)
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger sequence;
+ @XmlAttribute(required = true)
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger of;
+ @XmlAttribute
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ @XmlSchemaType(name = "hexBinary")
+ protected byte[] expectedSW;
+ @XmlAttribute(required = true)
+ protected String message;
+ @XmlAttribute(required = true)
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ @XmlSchemaType(name = "hexBinary")
+ protected byte[] format;
+ @XmlAttribute(required = true)
+ @XmlSchemaType(name = "nonNegativeInteger")
+ protected BigInteger offset;
+ @XmlAttribute(required = true)
+ @XmlSchemaType(name = "nonNegativeInteger")
+ protected BigInteger timeout;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public byte[] getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(byte[] value) {
+ this.value = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the sequence property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getSequence() {
+ return sequence;
+ }
+
+ /**
+ * Sets the value of the sequence property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setSequence(BigInteger value) {
+ this.sequence = value;
+ }
+
+ /**
+ * Gets the value of the of property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getOf() {
+ return of;
+ }
+
+ /**
+ * Sets the value of the of property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setOf(BigInteger value) {
+ this.of = value;
+ }
+
+ /**
+ * Gets the value of the expectedSW property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public byte[] getExpectedSW() {
+ return expectedSW;
+ }
+
+ /**
+ * Sets the value of the expectedSW property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setExpectedSW(byte[] value) {
+ this.expectedSW = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the message property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getMessage() {
+ return message;
+ }
+
+ /**
+ * Sets the value of the message property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setMessage(String value) {
+ this.message = value;
+ }
+
+ /**
+ * Gets the value of the format property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public byte[] getFormat() {
+ return format;
+ }
+
+ /**
+ * Sets the value of the format property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setFormat(byte[] value) {
+ this.format = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the offset property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getOffset() {
+ return offset;
+ }
+
+ /**
+ * Sets the value of the offset property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setOffset(BigInteger value) {
+ this.offset = value;
+ }
+
+ /**
+ * Gets the value of the timeout property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getTimeout() {
+ return timeout;
+ }
+
+ /**
+ * Sets the value of the timeout property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setTimeout(BigInteger value) {
+ this.timeout = value;
+ }
+
+}
diff --git a/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/package-info.java b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/package-info.java
new file mode 100644
index 00000000..05d7df46
--- /dev/null
+++ b/mocca-1.2.11/STALXService/src/main/java/at/buergerkarte/namespaces/cardchannel/service/package-info.java
@@ -0,0 +1,2 @@
+@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.buergerkarte.at/cardchannel", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package at.buergerkarte.namespaces.cardchannel.service;
diff --git a/mocca-1.2.11/STALXService/src/main/java/at/gv/egiz/stalx/service/STALPortType.java b/mocca-1.2.11/STALXService/src/main/java/at/gv/egiz/stalx/service/STALPortType.java
new file mode 100644
index 00000000..b31e60ce
--- /dev/null
+++ b/mocca-1.2.11/STALXService/src/main/java/at/gv/egiz/stalx/service/STALPortType.java
@@ -0,0 +1,45 @@
+package at.gv.egiz.stalx.service;
+
+//import at.buergerkarte.namespaces.cardchannel.service.ObjectFactory;
+//import at.buergerkarte.namespaces.cardchannel.service.ScriptType;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import javax.xml.bind.annotation.XmlSeeAlso;
+
+/**
+ * Dummy PortType to add at.buergerkarte.namespaces.cardchannel.service to the
+ * JAXB context seed.
+ *
+ * overriding a webmethod results in ClassCastEx for the WebResult
+ * ClassCastException: at.gv.egiz.stal.service.types.GetNextRequestResponseType
+ * cannot be cast to at.buergerkarte.namespaces.cardchannel.service.GetNextRequestResponseType
+ *
+ * adding a new method results in Error: Undefined operation name
+ *
+ * adding a constant doesn't seed
+ */
+@WebService(name = "STALPortType", targetNamespace = "http://www.egiz.gv.at/wsdl/stal")
+@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+@XmlSeeAlso({
+ at.gv.egiz.stal.service.types.ObjectFactory.class,
+ at.buergerkarte.namespaces.cardchannel.service.ObjectFactory.class
+})
+interface STALPortType extends at.gv.egiz.stal.service.STALPortType {
+
+ // doesn't seed
+// public static final ScriptType seed = (new ObjectFactory()).createScriptType();
+ /**
+ * dummy method to put at.buergerkarte.namespaces.cardchannel.service as JAXB context seed
+ * @return
+ */
+// @WebMethod
+// @WebResult(name = "Script", targetNamespace = "http://www.buergerkarte.at/cardchannel", partName = "part1")
+ //java.lang.Error: Undefined operation name seedJAXBContext
+// ScriptType seedJAXBContext();
+
+// @WebMethod
+// @WebResult(name = "GetNextRequestResponse", targetNamespace = "http://www.egiz.gv.at/stal", partName = "part1")
+// @Override
+// public GetNextRequestResponseType connect(
+// @WebParam(name = "SessionId", targetNamespace = "http://www.egiz.gv.at/stal", partName = "part1") String sessionId);
+}
diff --git a/mocca-1.2.11/STALXService/src/main/java/at/gv/egiz/stalx/service/STALService.java b/mocca-1.2.11/STALXService/src/main/java/at/gv/egiz/stalx/service/STALService.java
new file mode 100644
index 00000000..eccd2c4f
--- /dev/null
+++ b/mocca-1.2.11/STALXService/src/main/java/at/gv/egiz/stalx/service/STALService.java
@@ -0,0 +1,73 @@
+
+package at.gv.egiz.stalx.service;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.logging.Logger;
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+import javax.xml.ws.WebEndpoint;
+import javax.xml.ws.WebServiceClient;
+import javax.xml.ws.WebServiceFeature;
+
+
+/**
+ * This class was generated by the JAX-WS RI.
+ * JAX-WS RI 2.1.3-b02-
+ * Generated source version: 2.1
+ *
+ */
+@WebServiceClient(name = "STALService", targetNamespace = "http://www.egiz.gv.at/wsdl/stal")
+//, wsdlLocation = "file:/home/clemens/workspace/mocca/BKUOnline/src/main/webapp/WEB-INF/wsdl/stal-service.wsdl")
+public class STALService
+ extends Service
+{
+
+// private final static URL STALSERVICE_WSDL_LOCATION;
+ private final static Logger logger = Logger.getLogger(at.gv.egiz.stalx.service.STALService.class.getName());
+
+// static {
+// URL url = null;
+// try {
+// URL baseUrl;
+// baseUrl = at.gv.egiz.stal.service.STALService.class.getResource(".");
+// url = new URL(baseUrl, "file:/home/clemens/workspace/mocca/BKUOnline/src/main/webapp/WEB-INF/wsdl/stal-service.wsdl");
+// } catch (MalformedURLException e) {
+// logger.warning("Failed to create URL for the wsdl Location: 'file:/home/clemens/workspace/mocca/BKUOnline/src/main/webapp/WEB-INF/wsdl/stal-service.wsdl', retrying as a local file");
+// logger.warning(e.getMessage());
+// }
+// STALSERVICE_WSDL_LOCATION = url;
+// }
+
+ public STALService(URL wsdlLocation, QName serviceName) {
+ super(wsdlLocation, serviceName);
+ }
+
+// public STALService() {
+// super(STALSERVICE_WSDL_LOCATION, new QName("http://www.egiz.gv.at/wsdl/stal", "STALService"));
+// }
+
+ /**
+ * Do not export package protected STALXPortType interface
+ * (this is a dummy interface to make JAXB include the STAL-X types)
+ * @return
+ * returns STALPortType
+ */
+ @WebEndpoint(name = "STALPort")
+ public at.gv.egiz.stal.service.STALPortType getSTALPort() {
+ return super.getPort(new QName("http://www.egiz.gv.at/wsdl/stal", "STALPort"), STALPortType.class);
+ }
+
+ /**
+ *
+ * @param features
+ * A list of {@link javax.xml.ws.WebServiceFeature} to configure on the proxy. Supported features not in the <code>features</code> parameter will have their default values.
+ * @return
+ * returns STALPortType
+ */
+// @WebEndpoint(name = "STALPort")
+// public STALPortType getSTALPort(WebServiceFeature... features) {
+// return super.getPort(new QName("http://www.egiz.gv.at/wsdl/stal", "STALPort"), STALPortType.class, features);
+// }
+
+}
diff --git a/mocca-1.2.11/STALXService/src/main/java/at/gv/egiz/stalx/service/translator/STALXTranslationHandler.java b/mocca-1.2.11/STALXService/src/main/java/at/gv/egiz/stalx/service/translator/STALXTranslationHandler.java
new file mode 100644
index 00000000..d432b170
--- /dev/null
+++ b/mocca-1.2.11/STALXService/src/main/java/at/gv/egiz/stalx/service/translator/STALXTranslationHandler.java
@@ -0,0 +1,217 @@
+/*
+ * 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.stalx.service.translator;
+
+import at.buergerkarte.namespaces.cardchannel.service.ATRType;
+import at.buergerkarte.namespaces.cardchannel.service.CommandAPDUType;
+import at.buergerkarte.namespaces.cardchannel.service.ObjectFactory;
+import at.buergerkarte.namespaces.cardchannel.service.ResetType;
+import at.buergerkarte.namespaces.cardchannel.service.ResponseAPDUType;
+import at.buergerkarte.namespaces.cardchannel.service.ScriptType;
+import at.buergerkarte.namespaces.cardchannel.service.VerifyAPDUType;
+import at.gv.egiz.stal.STALRequest;
+import at.gv.egiz.stal.STALResponse;
+import at.gv.egiz.stal.ext.APDUScriptRequest;
+import at.gv.egiz.stal.ext.APDUScriptRequest.RequestScriptElement;
+import at.gv.egiz.stal.ext.APDUScriptResponse;
+import at.gv.egiz.stal.service.translator.STALTranslator;
+import at.gv.egiz.stal.service.translator.TranslationException;
+import at.gv.egiz.stal.service.types.RequestType;
+import at.gv.egiz.stal.service.types.ResponseType;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class STALXTranslationHandler implements STALTranslator.TranslationHandler {
+
+ private static final Log log = LogFactory.getLog(STALXTranslationHandler.class);
+ ObjectFactory of;
+
+ public STALXTranslationHandler() {
+ of = new ObjectFactory();
+ }
+
+ @Override
+ public List<Class> getSupportedTypes() {
+ return Arrays.asList(new Class[]{ScriptType.class,
+ at.buergerkarte.namespaces.cardchannel.service.ResponseType.class,
+ APDUScriptRequest.class,
+ APDUScriptResponse.class});
+ }
+
+ @Override
+ public JAXBElement<? extends RequestType> translate(STALRequest request) throws TranslationException {
+ if (request instanceof APDUScriptRequest) {
+ log.trace("translate at.gv.egiz.stal.ext.APDUScriptRequest -> at.buergerkarte.namespaces.cardchannel.service.ScriptType");
+
+ ScriptType scriptT = of.createScriptType();
+
+ List<RequestScriptElement> script = ((APDUScriptRequest) request).getScript();
+ for (RequestScriptElement requestScriptElement : script) {
+ if (requestScriptElement instanceof APDUScriptRequest.Reset) {
+ scriptT.getResetOrCommandAPDUOrVerifyAPDU().add(of.createResetType());
+ } else if (requestScriptElement instanceof APDUScriptRequest.Command) {
+ APDUScriptRequest.Command cmd = (APDUScriptRequest.Command) requestScriptElement;
+ CommandAPDUType commandAPDUType = of.createCommandAPDUType();
+ commandAPDUType.setSequence(BigInteger.valueOf(cmd.getSequence()));
+ commandAPDUType.setValue(cmd.getCommandAPDU());
+ commandAPDUType.setExpectedSW(cmd.getExpectedSW());
+ scriptT.getResetOrCommandAPDUOrVerifyAPDU().add(commandAPDUType);
+ } else {
+ log.error("invalid requestScriptElement " + requestScriptElement.getClass());
+ throw new TranslationException(requestScriptElement.getClass());
+ }
+ }
+
+ return of.createScript(scriptT);
+ } else {
+ log.error("cannot translate " + request.getClass());
+ throw new TranslationException(request.getClass());
+ }
+ }
+
+ @Override
+ public STALRequest translate(RequestType request) throws TranslationException {
+ if (request instanceof ScriptType) {
+
+ log.trace("translate at.buergerkarte.namespaces.cardchannel.service.ScriptType -> at.gv.egiz.stal.ext.APDUScriptRequest");
+
+ List<Object> resetOrCommandAPDUOrVerifyAPDU = ((ScriptType) request).getResetOrCommandAPDUOrVerifyAPDU();
+ List<APDUScriptRequest.RequestScriptElement> requestScript = new ArrayList<APDUScriptRequest.RequestScriptElement>();
+
+ for (Object element : resetOrCommandAPDUOrVerifyAPDU) {
+
+ if (element instanceof ResetType) {
+
+ requestScript.add(new APDUScriptRequest.Reset());
+
+ } else if (element instanceof CommandAPDUType) {
+
+ CommandAPDUType commandAPDU = (CommandAPDUType) element;
+ int sequence = (commandAPDU.getSequence() != null)
+ ? commandAPDU.getSequence().intValue()
+ : 0;
+
+ requestScript.add(
+ new APDUScriptRequest.Command(
+ sequence,
+ commandAPDU.getValue(),
+ commandAPDU.getExpectedSW()));
+
+ } else if (element instanceof VerifyAPDUType) {
+ log.error("CardChannel script command 'VerifyAPDU' not implemented.");
+ throw new TranslationException(VerifyAPDUType.class);
+ } else {
+ log.error("invalid requestScriptElement element " + element.getClass());
+ throw new TranslationException(element.getClass());
+ }
+ }
+
+ return new APDUScriptRequest(requestScript);
+
+ } else {
+ log.error("cannot translate " + request.getClass());
+ throw new TranslationException(request.getClass());
+ }
+ }
+
+ @Override
+ public JAXBElement<? extends ResponseType> translate(STALResponse response) throws TranslationException {
+ if (response instanceof APDUScriptResponse) {
+ log.trace("translate at.gv.egiz.stal.ext.APDUScriptResponse -> at.buergerkarte.namespaces.cardchannel.service.ResponseType");
+ at.buergerkarte.namespaces.cardchannel.service.ResponseType responseT = of.createResponseType();
+ List<APDUScriptResponse.ResponseScriptElement> responseScript = ((APDUScriptResponse) response).getScript();
+
+ for (APDUScriptResponse.ResponseScriptElement element : responseScript) {
+
+ if (element instanceof APDUScriptResponse.ATR) {
+
+ byte[] atr = ((APDUScriptResponse.ATR) element).getAtr();
+
+ ATRType atrType = of.createATRType();
+ atrType.setValue(atr);
+ atrType.setRc(BigInteger.ZERO);
+ responseT.getATROrResponseAPDU().add(atrType);
+
+ } else if (element instanceof APDUScriptResponse.Response) {
+
+ APDUScriptResponse.Response resp = (APDUScriptResponse.Response) element;
+
+ ResponseAPDUType responseAPDUType = of.createResponseAPDUType();
+ responseAPDUType.setSequence(BigInteger.valueOf(resp.getSequence()));
+ responseAPDUType.setRc(BigInteger.valueOf(resp.getRc()));
+ responseAPDUType.setSW(resp.getSw());
+ responseAPDUType.setValue(resp.getApdu());
+
+ responseT.getATROrResponseAPDU().add(responseAPDUType);
+ } else {
+ log.error("invalid responseScriptElement " + element.getClass());
+ throw new TranslationException(element.getClass());
+ }
+ }
+ return of.createResponse(responseT);
+ } else {
+ log.error("cannot translate " + response.getClass());
+ throw new TranslationException(response.getClass());
+ }
+ }
+
+ @Override
+ public STALResponse translate(ResponseType response) throws TranslationException {
+ if (response instanceof at.buergerkarte.namespaces.cardchannel.service.ResponseType) {
+ log.trace("translate at.buergerkarte.namespaces.cardchannel.service.ResponseType -> at.gv.egiz.stal.ext.APDUScriptResponse");
+
+ List<Object> atrOrResponseAPDU = ((at.buergerkarte.namespaces.cardchannel.service.ResponseType) response).getATROrResponseAPDU();
+ List<APDUScriptResponse.ResponseScriptElement> responseScript = new ArrayList<APDUScriptResponse.ResponseScriptElement>();
+
+ for (Object object : atrOrResponseAPDU) {
+ if (object instanceof ATRType) {
+ byte[] atr = ((ATRType) object).getValue();
+ responseScript.add(new APDUScriptResponse.ATR(atr));
+ } else if (object instanceof ResponseAPDUType) {
+ ResponseAPDUType respAPDU = (ResponseAPDUType) object;
+ int sequence = (respAPDU.getSequence() != null)
+ ? respAPDU.getSequence().intValue()
+ : 0;
+ int rc = (respAPDU.getRc() != null)
+ ? respAPDU.getRc().intValue()
+ : 0;
+ responseScript.add(new APDUScriptResponse.Response(sequence,
+ respAPDU.getValue(),
+ respAPDU.getSW(),
+ rc));
+ } else {
+ log.error("invalid responseScriptElement " + object.getClass());
+ throw new TranslationException(object.getClass());
+ }
+ }
+ return new APDUScriptResponse(responseScript);
+
+ } else {
+ log.error("cannot translate " + response.getClass());
+ throw new TranslationException(response.getClass());
+ }
+ }
+}
diff --git a/mocca-1.2.11/STALXService/src/main/resources/wsdl/CardChannel.xsd b/mocca-1.2.11/STALXService/src/main/resources/wsdl/CardChannel.xsd
new file mode 100644
index 00000000..2dbc558e
--- /dev/null
+++ b/mocca-1.2.11/STALXService/src/main/resources/wsdl/CardChannel.xsd
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.buergerkarte.at/cardchannel"
+ xmlns:tns="http://www.buergerkarte.at/cardchannel"
+ elementFormDefault="qualified"
+ xmlns:stal="http://www.egiz.gv.at/stal">
+
+ <xs:import namespace="http://www.egiz.gv.at/stal" schemaLocation="stal.xsd"/>
+
+ <xs:annotation>
+ <xs:documentation>Schema for transparent access to cards using a BKU and the CardChannel
+ infobox</xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="Script" type="tns:ScriptType" substitutionGroup="stal:OtherRequest"/>
+ <xs:element name="Response" type="tns:ResponseType" substitutionGroup="stal:OtherResponse"/>
+ <xs:element name="Grunddaten" type="tns:AttributeList"/>
+ <xs:element name="EHIC" type="tns:AttributeList"/>
+ <xs:element name="Status" type="tns:AttributeList"/>
+ <xs:element name="SV-Personenbindung" type="xs:hexBinary"/>
+
+ <xs:complexType name="ScriptType">
+ <xs:annotation>
+ <xs:documentation>extends abstract stal:RequestType</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="stal:RequestType">
+ <xs:annotation>
+ <xs:documentation>Contains the script to be executed by the BKU</xs:documentation>
+ </xs:annotation>
+ <xs:choice maxOccurs="unbounded" minOccurs="1">
+ <xs:element name="Reset" type="tns:ResetType"/>
+ <xs:element name="CommandAPDU" type="tns:CommandAPDUType"/>
+ <xs:element name="VerifyAPDU" type="tns:VerifyAPDUType"/>
+ </xs:choice>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="ResponseType">
+ <xs:annotation>
+ <xs:documentation>extends abstract stal:ResponseType</xs:documentation>
+ </xs:annotation>
+ <xs:complexContent>
+ <xs:extension base="stal:ResponseType">
+ <xs:annotation>
+ <xs:documentation>Contains the result of the script executed by the
+ BKU</xs:documentation>
+ </xs:annotation>
+ <xs:choice maxOccurs="unbounded" minOccurs="1">
+ <xs:element name="ATR" type="tns:ATRType"/>
+ <xs:element name="ResponseAPDU" type="tns:ResponseAPDUType"/>
+ </xs:choice>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+
+ <xs:complexType name="ResetType">
+ <xs:annotation>
+ <xs:documentation>Reset the icc and sequence counter</xs:documentation>
+ </xs:annotation>
+ <xs:attribute name="cold" type="xs:boolean" default="true"/>
+ </xs:complexType>
+
+ <xs:complexType name="CommandAPDUType">
+ <xs:annotation>
+ <xs:documentation>Contains a sequence of bytes send as command APDU to the
+ icc</xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="xs:hexBinary">
+ <xs:attribute name="sequence" type="xs:positiveInteger" use="required"/>
+ <xs:attribute name="of" type="xs:positiveInteger" use="required"/>
+ <xs:attribute name="expectedSW" type="xs:hexBinary"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="VerifyAPDUType">
+ <xs:annotation>
+ <xs:documentation>Contains a sequence of bytes send as command APDU to the icc after a
+ PIN entered by the user has been incorporated into the APDU</xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="xs:hexBinary">
+ <xs:attribute name="sequence" type="xs:positiveInteger" use="required"/>
+ <xs:attribute name="of" type="xs:positiveInteger" use="required"/>
+ <xs:attribute name="expectedSW" type="xs:hexBinary"/>
+ <xs:attribute name="message" type="xs:string" use="required"/>
+ <xs:attribute name="format" type="xs:hexBinary" use="required"/>
+ <xs:attribute name="offset" type="xs:nonNegativeInteger" use="required"/>
+ <xs:attribute name="timeout" type="xs:nonNegativeInteger" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="ATRType">
+ <xs:annotation>
+ <xs:documentation>Contains the ATR received as reponse to a Reset
+ command</xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="xs:hexBinary">
+ <xs:attribute name="rc" type="xs:integer" default="0"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="ResponseAPDUType">
+ <xs:annotation>
+ <xs:documentation>Contains a sequence of bytes received from the card as response
+ APDU</xs:documentation>
+ </xs:annotation>
+ <xs:simpleContent>
+ <xs:extension base="xs:hexBinary">
+ <xs:attribute name="sequence" type="xs:positiveInteger" use="required"/>
+ <xs:attribute name="rc" type="xs:integer" default="0"/>
+ <xs:attribute name="SW" type="xs:hexBinary" default="9000"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+
+ <xs:complexType name="AttributeList">
+ <xs:annotation>
+ <xs:documentation>Contains a list of attributes</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Attribute" type="tns:AttributeType" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+
+ <xs:complexType name="AttributeType">
+ <xs:annotation>
+ <xs:documentation>Contains an attribute converted from ASN.1</xs:documentation>
+ </xs:annotation>
+ <xs:sequence>
+ <xs:element name="Integer" type="xs:integer" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="Latin1String" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="UTF8String" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="NumericString" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="PrintableString" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="GeneralizedTime" type="xs:dateTime" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="Date" type="xs:string" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ <xs:attribute name="oid" type="xs:string" use="required"/>
+ </xs:complexType>
+
+</xs:schema>
diff --git a/mocca-1.2.11/STALXService/src/main/resources/wsdl/stal.xsd b/mocca-1.2.11/STALXService/src/main/resources/wsdl/stal.xsd
new file mode 100644
index 00000000..fd4ad4e3
--- /dev/null
+++ b/mocca-1.2.11/STALXService/src/main/resources/wsdl/stal.xsd
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.egiz.gv.at/stal"
+ xmlns:tns="http://www.egiz.gv.at/stal"
+ elementFormDefault="qualified">
+ <element name="SessionId" type="string"/>
+ <element name="GetNextRequest" type="tns:GetNextRequestType"/>
+ <element name="GetNextRequestResponse" type="tns:GetNextRequestResponseType"/>
+ <element name="GetHashDataInput" type="tns:GetHashDataInputType"/>
+ <element name="GetHashDataInputResponse" type="tns:GetHashDataInputResponseType"/>
+ <element name="GetHashDataInputFault" type="tns:GetHashDataInputFaultType"/>
+
+ <!-- Abstract Request/Response to be substituted by extending schemata
+ | must be top level element for allowing substitution groups
+ |-->
+ <element name="OtherRequest" type="tns:RequestType" abstract="true"/>
+ <element name="OtherResponse" type="tns:ResponseType" abstract="true"/>
+
+ <complexType name="GetNextRequestType">
+ <!-- abstract Request/Response type not supported by JAX-WS 2.0 (jdk < 1.6.0_04)
+ <sequence>
+ <element name="Response" type="tns:ResponseType" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence-->
+ <choice maxOccurs="unbounded">
+ <element name="InfoboxReadResponse" type="tns:InfoboxReadResponseType"/>
+ <element name="SignResponse" type="tns:SignResponseType"/>
+ <element name="ErrorResponse" type="tns:ErrorResponseType"/>
+ <element ref="tns:OtherResponse"/>
+ </choice>
+ <attribute name="SessionId" type="string"/>
+ </complexType>
+ <complexType name="ResponseType" abstract="true" />
+ <complexType name="InfoboxReadResponseType">
+ <complexContent>
+ <extension base="tns:ResponseType">
+ <sequence>
+ <element name="InfoboxValue" type="base64Binary"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="SignResponseType">
+ <complexContent>
+ <extension base="tns:ResponseType">
+ <sequence>
+ <element name="SignatureValue" type="base64Binary"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="ErrorResponseType">
+ <complexContent>
+ <extension base="tns:ResponseType">
+ <sequence>
+ <element name="ErrorCode" type="int"/>
+ <element name="ErrorMessage" type="string"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="GetNextRequestResponseType">
+ <!-- abstract Request/Response type not supported by JAX-WS 2.0 (jdk < 1.6.0_04)
+ <sequence>
+ <element name="Request" type="tns:RequestType" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence-->
+ <choice maxOccurs="unbounded">
+ <element name="InfoboxReadRequest" type="tns:InfoboxReadRequestType"/>
+ <element name="SignRequest" type="tns:SignRequestType"/>
+ <element name="QuitRequest" type="tns:QuitRequestType"/>
+ <element ref="tns:OtherRequest"/>
+ </choice>
+ <attribute name="SessionId" type="string"/>
+ </complexType>
+ <complexType name="RequestType" abstract="true"/>
+ <complexType name="InfoboxReadRequestType">
+ <complexContent>
+ <extension base="tns:RequestType">
+ <sequence>
+ <element name="InfoboxIdentifier">
+ <simpleType>
+ <restriction base="string">
+ <enumeration value="Certificates"/>
+ <enumeration value="IdentityLink"/>
+ <enumeration value="Mandates"/>
+ </restriction>
+ </simpleType>
+ </element>
+ <element name="DomainIdentifier" type="anyURI" minOccurs="0"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="SignRequestType">
+ <complexContent>
+ <extension base="tns:RequestType">
+ <sequence>
+ <element name="KeyIdentifier">
+ <simpleType>
+ <restriction base="string">
+ <enumeration value="SecureSignatureKeypair"/>
+ <enumeration value="CertifiedKeypair"/>
+ </restriction>
+ </simpleType>
+ </element>
+ <element name="SignedInfo" type="base64Binary"/>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+ <complexType name="QuitRequestType">
+ <complexContent>
+ <extension base="tns:RequestType"/>
+ </complexContent>
+ </complexType>
+ <complexType name="GetHashDataInputType">
+ <sequence>
+ <element name="Reference" maxOccurs="unbounded">
+ <complexType>
+ <attribute name="ID" type="string"/>
+ </complexType>
+ </element>
+ </sequence>
+ <attribute name="SessionId" type="string"/>
+ </complexType>
+ <complexType name="GetHashDataInputResponseType">
+ <sequence>
+ <element name="Reference" maxOccurs="unbounded">
+ <complexType>
+ <simpleContent>
+ <extension base="base64Binary">
+ <attribute name="ID" type="string"/>
+ <attribute name="MimeType" type="string" use="optional"/>
+ <attribute name="Encoding" type="string" use="optional"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+ </element>
+ </sequence>
+ <attribute name="SessionId" type="string"/>
+ </complexType>
+ <complexType name="GetHashDataInputFaultType">
+ <sequence>
+ <element name="ErrorCode" type="int"/>
+ <element name="ErrorMessage" type="string"/>
+ </sequence>
+ </complexType>
+</schema>
diff --git a/mocca-1.2.11/STALXService/src/main/resources/wsdl/stalx.wsdl b/mocca-1.2.11/STALXService/src/main/resources/wsdl/stalx.wsdl
new file mode 100644
index 00000000..4c27f107
--- /dev/null
+++ b/mocca-1.2.11/STALXService/src/main/resources/wsdl/stalx.wsdl
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ 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.
+-->
+<definitions name="stal" targetNamespace="http://www.egiz.gv.at/wsdl/stal"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://www.egiz.gv.at/wsdl/stal"
+ xmlns:stal="http://www.egiz.gv.at/stal"
+ xmlns:cc="http://www.buergerkarte.at/cardchannel"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
+ <types>
+ <xsd:schema targetNamespace="http://www.egiz.gv.at/wsdl/stal">
+ <xsd:import namespace="http://www.egiz.gv.at/stal" schemaLocation="stal.xsd"/>
+ </xsd:schema>
+ <xsd:schema targetNamespace="http://www.egiz.gv.at/wsdl/stal-extended">
+ <xsd:import namespace="http://www.buergerkarte.at/cardchannel" schemaLocation="CardChannel.xsd"/>
+ </xsd:schema>
+ </types>
+ <message name="ConnectRequest">
+ <part name="part1" element="stal:SessionId"/>
+ </message>
+ <message name="NextRequestRequest">
+ <part name="part1" element="stal:GetNextRequest"/>
+ </message>
+ <message name="NextRequestResponse">
+ <part name="part1" element="stal:GetNextRequestResponse"/>
+ </message>
+ <message name="GetHashDataInputRequest">
+ <part name="part1" element="stal:GetHashDataInput"/>
+ </message>
+ <message name="GetHashDataInputResponse">
+ <part name="part1" element="stal:GetHashDataInputResponse"/>
+ </message>
+ <message name="GetHashDataInputFault">
+ <part name="part1" element="stal:GetHashDataInputFault"/>
+ </message>
+ <!--message name="DummyRequest">
+ <part name="part1" element="cc:Script"/>
+ </message>
+ <message name="DummyResponse">
+ <part name="part1" element="cc:Response"/>
+ </message-->
+ <portType name="STALPortType">
+ <operation name="connect">
+ <input name="input3" message="tns:ConnectRequest"/>
+ <output name="output3" message="tns:NextRequestResponse"/>
+ </operation>
+ <operation name="nextRequest">
+ <input name="input1" message="tns:NextRequestRequest"/>
+ <output name="output1" message="tns:NextRequestResponse"/>
+ </operation>
+ <operation name="getHashDataInput">
+ <input name="input2" message="tns:GetHashDataInputRequest"/>
+ <output name="output2" message="tns:GetHashDataInputResponse"/>
+ <fault name="fault1" message="tns:GetHashDataInputFault"/>
+ </operation>
+ <!--operation name="dummyOp">
+ <input name="dummyIn" message="tns:DummyRequest"/>
+ <output name="dummyOut" message="tns:DummyResponse"/>
+ </operation-->
+ </portType>
+ <binding name="STALBinding" type="tns:STALPortType">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <operation name="connect">
+ <input name="input3">
+ <soap:body use="literal"/>
+ </input>
+ <output name="output3">
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="nextRequest">
+ <soap:operation/>
+ <input name="input1">
+ <soap:body use="literal"/>
+ </input>
+ <output name="output1">
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="getHashDataInput">
+ <soap:operation/>
+ <input name="input2">
+ <soap:body use="literal"/>
+ </input>
+ <output name="output2">
+ <soap:body use="literal"/>
+ </output>
+ <fault name="fault1">
+ <soap:fault name="fault1"/>
+ </fault>
+ </operation>
+ <!--operation name="dummyOp">
+ <soap:operation/>
+ <input name="dummyIn">
+ <soap:body use="literal"/>
+ </input>
+ <output name="dummyOut">
+ <soap:body use="literal"/>
+ </output>
+ </operation-->
+ </binding>
+ <service name="STALService">
+ <port name="STALPort" binding="tns:STALBinding">
+ <soap:address location="http://localhost:3495/jxbctx/stal"/>
+ </port>
+ </service>
+</definitions>
diff --git a/mocca-1.2.11/STALXService/src/test/java/at/gv/egiz/stalx/service/ClientJAXBContextFactory.java b/mocca-1.2.11/STALXService/src/test/java/at/gv/egiz/stalx/service/ClientJAXBContextFactory.java
new file mode 100644
index 00000000..2f5c371d
--- /dev/null
+++ b/mocca-1.2.11/STALXService/src/test/java/at/gv/egiz/stalx/service/ClientJAXBContextFactory.java
@@ -0,0 +1,52 @@
+/*
+ * 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.stalx.service;
+
+//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.List;
+import javax.xml.bind.JAXBException;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class ClientJAXBContextFactory { //implements JAXBContextFactory {
+
+// @Override
+// public JAXBRIContext createJAXBContext(SEIModel sei, List<Class> classesToBind, List<TypeReference> typeReferences) throws JAXBException {
+//
+// System.out.println("Using client's custom JAXBContext");
+////54 List<Class> classList = new ArrayList<Class>();
+////55 classList.addAll(classesToBind);
+////56 classList.add(Toyota.class);
+////57
+////58 List<TypeReference> refList = new ArrayList<TypeReference>();
+////59 refList.addAll(typeReferences);
+////60 refList.add(new TypeReference(new QName("","arg0"),Toyota.class));
+////61
+////62 return JAXBRIContext.newInstance(classList.toArray
+////63 (new Class[classList.size()]),
+////64 refList, null, sei.getTargetNamespace(), false, null);
+//
+// return null;
+// }
+
+}
diff --git a/mocca-1.2.11/STALXService/src/test/java/at/gv/egiz/stalx/service/STALServiceTest.java b/mocca-1.2.11/STALXService/src/test/java/at/gv/egiz/stalx/service/STALServiceTest.java
new file mode 100644
index 00000000..fda4b235
--- /dev/null
+++ b/mocca-1.2.11/STALXService/src/test/java/at/gv/egiz/stalx/service/STALServiceTest.java
@@ -0,0 +1,112 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package at.gv.egiz.stalx.service;
+
+import at.buergerkarte.namespaces.cardchannel.service.CommandAPDUType;
+import at.buergerkarte.namespaces.cardchannel.service.ScriptType;
+import at.gv.egiz.stal.service.types.GetNextRequestResponseType;
+import at.gv.egiz.stal.service.types.RequestType;
+import java.net.URL;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.namespace.QName;
+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 STALServiceTest {
+
+ static at.gv.egiz.stal.service.STALPortType port;
+
+ public STALServiceTest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+ // UsesJAXBContextFeature feature = new UsesJAXBContextFeature(ClientJAXBContextFactory.class);
+
+ URL wsdlLocation = new URL("http://localhost:3495/stal?wsdl");
+ QName serviceName = new QName("http://www.egiz.gv.at/wsdl/stal", "STALService");
+ STALService service = new STALService(wsdlLocation, serviceName);
+ port = service.getSTALPort();
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+ }
+
+ @Before
+ public void setUp() {
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+// /**
+// * Test of getSTALPort method, of class STALService.
+// */
+// @Test
+// public void testGetSTALPort() {
+// System.out.println("getSTALPort");
+// STALService instance = null;
+// STALPortType expResult = null;
+// STALPortType result = instance.getSTALPort();
+// assertEquals(expResult, result);
+// // TODO review the generated test code and remove the default call to fail.
+// fail("The test case is a prototype.");
+// }
+ @Test
+ public void testConnect() {
+ System.out.println("connecting to STAL WS [TestSession] ...");
+ GetNextRequestResponseType wsResponse = port.connect("TestSession");
+
+ List<JAXBElement<? extends RequestType>> stalRequests = wsResponse.getInfoboxReadRequestOrSignRequestOrQuitRequest();
+ System.out.println("Received " + wsResponse.getClass() + " containing " + stalRequests.size() + " requests");
+ for (JAXBElement<? extends RequestType> jAXBElement : stalRequests) {
+ System.out.println(" STALRequest " + jAXBElement.getValue().getClass());
+ RequestType request = jAXBElement.getValue();
+ if (request instanceof ScriptType) {
+ List<Object> apdus = ((ScriptType) request).getResetOrCommandAPDUOrVerifyAPDU();
+ for (Object object : apdus) {
+ System.out.println(" - APDU: " + new String(((CommandAPDUType) object).getValue()));
+// System.out.println(" APDU: " + object.getClass());
+ }
+ }
+ }
+ }
+
+
+// GetHashDataInputType hdi = stalOF.createGetHashDataInputType();
+// hdi.setSessionId("TestSession");
+// hdi.getReference().add(new GetHashDataInputType.Reference());
+// GetHashDataInputResponseType hdiResponse = port.getHashDataInput(hdi);
+// List<GetHashDataInputResponseType.Reference> l = hdiResponse.getReference();
+// System.out.println("HDI references: " + l.size());
+// for (GetHashDataInputResponseType.Reference reference : l) {
+// System.out.println(" Reference " + reference.getID());
+// }
+
+
+// ScriptType part2 = ccOF.createScriptType();
+// ResponseType scriptResp = ccOF.createResponseType();
+// GetNextRequestResponseType stalReqResp =
+// port.nextRequest();
+// // TODO process result here
+// generated.ResponseType result2 = port.runAPDUScript(part2);
+// System.out.println("Result = " + result2);
+
+
+
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/addResources/eclipseFormatter.xml b/mocca-1.2.11/addResources/eclipseFormatter.xml
new file mode 100644
index 00000000..466b87ac
--- /dev/null
+++ b/mocca-1.2.11/addResources/eclipseFormatter.xml
@@ -0,0 +1,267 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<profiles version="11">
+<profile kind="CodeFormatterProfile" name="only2indent" version="11">
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
+<setting id="org.eclipse.jdt.core.compiler.source" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
+<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="80"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.5"/>
+<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="0"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
+<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
+<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
+</profile>
+</profiles>
diff --git a/mocca-1.2.11/bkucommon/pom.xml b/mocca-1.2.11/bkucommon/pom.xml
new file mode 100644
index 00000000..2ac6c5fc
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/pom.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>bkucommon</artifactId>
+ <name>BKU Common</name>
+ <version>1.2.11</version>
+
+ <build>
+ <plugins>
+ <!--
+ plugin> <groupId>org.codehaus.mojo</groupId>
+ <artifactId>jaxws-maven-plugin</artifactId> <executions> <execution>
+ <id>MOA-SPSS</id> <goals> <goal>wsimport</goal> </goals>
+ </execution> </executions> <configuration>
+ <extension>true</extension> <verbose>true</verbose>
+ <packageName>moaspss.generated</packageName>
+ <wsdlDirectory>${basedir}/src/test/wsdl</wsdlDirectory> <wsdlFiles>
+ <wsdlFile>MOA-SPSS-1.3.wsdl</wsdlFile> </wsdlFiles>
+ <sourceDestDir>${project.build.directory}/generated-sources/moaspss</sourceDestDir>
+ <staleFile>${project.build.directory}/generated-sources/moaspss/.staleFlag</staleFile>
+ <xnocompile>true</xnocompile> </configuration> </plugin -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <archive>
+ <manifest>
+ </manifest>
+ <manifestEntries>
+ <SignatureLayout>1.0</SignatureLayout>
+ </manifestEntries>
+ </archive>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>utils</artifactId>
+ <version>${version}</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>STALExt</artifactId>
+ <version>${version}</version>
+ </dependency>
+ <!-- bkucommon implements default FontProvider (ResourceFontLoader) -->
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUCommonGUI</artifactId>
+ <version>${version}</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_jce_full_signed</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>commons-fileupload</groupId>
+ <artifactId>commons-fileupload</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>xalan</groupId>
+ <artifactId>xalan</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_xsect</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_pki</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.xml.ws</groupId>
+ <artifactId>jaxws-rt</artifactId>
+ <scope>test</scope>
+ <version>2.1.5</version>
+ </dependency>
+ <!-- dependency to ensure NamespacePrefixmapper -->
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ </dependency>
+ </dependencies>
+</project> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/private/cache/retriever/www.w3.org/2000/09/xmldsig b/mocca-1.2.11/bkucommon/private/cache/retriever/www.w3.org/2000/09/xmldsig
new file mode 100644
index 00000000..931c6d12
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/private/cache/retriever/www.w3.org/2000/09/xmldsig
@@ -0,0 +1,7 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<html><head>
+<title>303 See Other</title>
+</head><body>
+<h1>See Other</h1>
+<p>The answer to your request is located <a href="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/Overview.html">here</a>.</p>
+</body></html>
diff --git a/mocca-1.2.11/bkucommon/src/main/java/META-INF/MANIFEST.MF b/mocca-1.2.11/bkucommon/src/main/java/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..46e7dd84
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/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
+SignatureLayout: 1.0
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/AccessControl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/AccessControl.java
new file mode 100644
index 00000000..a03505f6
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/AccessControl.java
@@ -0,0 +1,79 @@
+/*
+* 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.accesscontrol.config;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{}Chains"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "chains"
+})
+@XmlRootElement(name = "AccessControl")
+public class AccessControl {
+
+ @XmlElement(name = "Chains", required = true)
+ protected Chains chains;
+
+ /**
+ * Gets the value of the chains property.
+ *
+ * @return
+ * possible object is
+ * {@link Chains }
+ *
+ */
+ public Chains getChains() {
+ return chains;
+ }
+
+ /**
+ * Sets the value of the chains property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Chains }
+ *
+ */
+ public void setChains(Chains value) {
+ this.chains = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Action.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Action.java
new file mode 100644
index 00000000..9b15f0fd
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Action.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.accesscontrol.config;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice>
+ * &lt;element name="ChainRef" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="RuleAction">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="allow"/>
+ * &lt;enumeration value="deny"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/element>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "chainRef",
+ "ruleAction"
+})
+@XmlRootElement(name = "Action")
+public class Action {
+
+ @XmlElement(name = "ChainRef")
+ protected String chainRef;
+ @XmlElement(name = "RuleAction")
+ protected String ruleAction;
+
+ /**
+ * Gets the value of the chainRef property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getChainRef() {
+ return chainRef;
+ }
+
+ /**
+ * Sets the value of the chainRef property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setChainRef(String value) {
+ this.chainRef = value;
+ }
+
+ /**
+ * Gets the value of the ruleAction property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getRuleAction() {
+ return ruleAction;
+ }
+
+ /**
+ * Sets the value of the ruleAction property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setRuleAction(String value) {
+ this.ruleAction = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Chain.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Chain.java
new file mode 100644
index 00000000..92975e48
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Chain.java
@@ -0,0 +1,115 @@
+/*
+* 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.accesscontrol.config;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{}Rules" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "rules"
+})
+@XmlRootElement(name = "Chain")
+public class Chain {
+
+ @XmlElement(name = "Rules")
+ protected Rules rules;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the rules property.
+ *
+ * @return
+ * possible object is
+ * {@link Rules }
+ *
+ */
+ public Rules getRules() {
+ return rules;
+ }
+
+ /**
+ * Sets the value of the rules property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Rules }
+ *
+ */
+ public void setRules(Rules value) {
+ this.rules = value;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Chains.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Chains.java
new file mode 100644
index 00000000..ea8c36bd
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Chains.java
@@ -0,0 +1,86 @@
+/*
+* 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.accesscontrol.config;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{}Chain" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "chain"
+})
+@XmlRootElement(name = "Chains")
+public class Chains {
+
+ @XmlElement(name = "Chain", required = true)
+ protected List<Chain> chain;
+
+ /**
+ * Gets the value of the chain property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the chain property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getChain().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Chain }
+ *
+ *
+ */
+ public List<Chain> getChain() {
+ if (chain == null) {
+ chain = new ArrayList<Chain>();
+ }
+ return this.chain;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Command.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Command.java
new file mode 100644
index 00000000..a2a9ebb4
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Command.java
@@ -0,0 +1,116 @@
+/*
+* 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.accesscontrol.config;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{}Param" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}anySimpleType" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "param"
+})
+@XmlRootElement(name = "Command")
+public class Command {
+
+ @XmlElement(name = "Param")
+ protected List<Param> param;
+ @XmlAttribute(name = "Name", required = true)
+ @XmlSchemaType(name = "anySimpleType")
+ protected String name;
+
+ /**
+ * Gets the value of the param property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the param property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getParam().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Param }
+ *
+ *
+ */
+ public List<Param> getParam() {
+ if (param == null) {
+ param = new ArrayList<Param>();
+ }
+ return this.param;
+ }
+
+ /**
+ * Gets the value of the name property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the name property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setName(String value) {
+ this.name = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/ObjectFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/ObjectFactory.java
new file mode 100644
index 00000000..2c6e2187
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/ObjectFactory.java
@@ -0,0 +1,135 @@
+/*
+* 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.accesscontrol.config;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each
+ * Java content interface and Java element interface
+ * generated in the at.gv.egiz.bku.accesscontrol.config package.
+ * <p>An ObjectFactory allows you to programatically
+ * construct new instances of the Java representation
+ * for XML content. The Java representation of XML
+ * content can consist of schema derived interfaces
+ * and classes representing the binding of schema
+ * type definitions, element declarations and model
+ * groups. Factory methods for each of these are
+ * provided in this class.
+ *
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _UserInteraction_QNAME = new QName("", "UserInteraction");
+ private final static QName _AuthClass_QNAME = new QName("", "AuthClass");
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: at.gv.egiz.bku.accesscontrol.config
+ *
+ */
+ public ObjectFactory() {
+ }
+
+ /**
+ * Create an instance of {@link Param }
+ *
+ */
+ public Param createParam() {
+ return new Param();
+ }
+
+ /**
+ * Create an instance of {@link AccessControl }
+ *
+ */
+ public AccessControl createAccessControl() {
+ return new AccessControl();
+ }
+
+ /**
+ * Create an instance of {@link Command }
+ *
+ */
+ public Command createCommand() {
+ return new Command();
+ }
+
+ /**
+ * Create an instance of {@link Rules }
+ *
+ */
+ public Rules createRules() {
+ return new Rules();
+ }
+
+ /**
+ * Create an instance of {@link Action }
+ *
+ */
+ public Action createAction() {
+ return new Action();
+ }
+
+ /**
+ * Create an instance of {@link Chains }
+ *
+ */
+ public Chains createChains() {
+ return new Chains();
+ }
+
+ /**
+ * Create an instance of {@link Chain }
+ *
+ */
+ public Chain createChain() {
+ return new Chain();
+ }
+
+ /**
+ * Create an instance of {@link Rule }
+ *
+ */
+ public Rule createRule() {
+ return new Rule();
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "", name = "UserInteraction")
+ public JAXBElement<String> createUserInteraction(String value) {
+ return new JAXBElement<String>(_UserInteraction_QNAME, String.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "", name = "AuthClass")
+ public JAXBElement<String> createAuthClass(String value) {
+ return new JAXBElement<String>(_AuthClass_QNAME, String.class, null, value);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Param.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Param.java
new file mode 100644
index 00000000..daffa98d
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Param.java
@@ -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.
+*/
+package at.gv.egiz.bku.accesscontrol.config;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ * &lt;attribute name="Name" use="required" type="{http://www.w3.org/2001/XMLSchema}NCName" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "value"
+})
+@XmlRootElement(name = "Param")
+public class Param {
+
+ @XmlValue
+ protected String value;
+ @XmlAttribute(name = "Name", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "NCName")
+ protected String name;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the name property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the name property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setName(String value) {
+ this.name = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Rule.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Rule.java
new file mode 100644
index 00000000..2ad1e660
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Rule.java
@@ -0,0 +1,285 @@
+/*
+* 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.accesscontrol.config;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{}AuthClass"/>
+ * &lt;choice minOccurs="0">
+ * &lt;element name="DomainName" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="IPv4Address" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="URL" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;/choice>
+ * &lt;element ref="{}Command" minOccurs="0"/>
+ * &lt;element ref="{}Action"/>
+ * &lt;element ref="{}UserInteraction"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "authClass",
+ "domainName",
+ "iPv4Address",
+ "url",
+ "command",
+ "action",
+ "userInteraction"
+})
+@XmlRootElement(name = "Rule")
+public class Rule {
+
+ @XmlElement(name = "AuthClass", required = true)
+ protected String authClass;
+ @XmlElement(name = "DomainName")
+ protected String domainName;
+ @XmlElement(name = "IPv4Address")
+ protected String iPv4Address;
+ @XmlElement(name = "URL")
+ protected String url;
+ @XmlElement(name = "Command")
+ protected Command command;
+ @XmlElement(name = "Action", required = true)
+ protected Action action;
+ @XmlElement(name = "UserInteraction", required = true)
+ protected String userInteraction;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the authClass property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAuthClass() {
+ return authClass;
+ }
+
+ /**
+ * Sets the value of the authClass property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAuthClass(String value) {
+ this.authClass = value;
+ }
+
+ /**
+ * Gets the value of the domainName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getDomainName() {
+ return domainName;
+ }
+
+ /**
+ * Sets the value of the domainName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setDomainName(String value) {
+ this.domainName = value;
+ }
+
+ /**
+ * Gets the value of the iPv4Address property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getIPv4Address() {
+ return iPv4Address;
+ }
+
+ /**
+ * Sets the value of the iPv4Address property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIPv4Address(String value) {
+ this.iPv4Address = value;
+ }
+
+ /**
+ * Gets the value of the url property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getURL() {
+ return url;
+ }
+
+ /**
+ * Sets the value of the url property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setURL(String value) {
+ this.url = value;
+ }
+
+ /**
+ * Gets the value of the command property.
+ *
+ * @return
+ * possible object is
+ * {@link Command }
+ *
+ */
+ public Command getCommand() {
+ return command;
+ }
+
+ /**
+ * Sets the value of the command property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Command }
+ *
+ */
+ public void setCommand(Command value) {
+ this.command = value;
+ }
+
+ /**
+ * Gets the value of the action property.
+ *
+ * @return
+ * possible object is
+ * {@link Action }
+ *
+ */
+ public Action getAction() {
+ return action;
+ }
+
+ /**
+ * Sets the value of the action property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Action }
+ *
+ */
+ public void setAction(Action value) {
+ this.action = value;
+ }
+
+ /**
+ * Gets the value of the userInteraction property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getUserInteraction() {
+ return userInteraction;
+ }
+
+ /**
+ * Sets the value of the userInteraction property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setUserInteraction(String value) {
+ this.userInteraction = value;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Rules.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Rules.java
new file mode 100644
index 00000000..16150f0c
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontrol/config/Rules.java
@@ -0,0 +1,86 @@
+/*
+* 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.accesscontrol.config;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{}Rule" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "rule"
+})
+@XmlRootElement(name = "Rules")
+public class Rules {
+
+ @XmlElement(name = "Rule", required = true)
+ protected List<Rule> rule;
+
+ /**
+ * Gets the value of the rule property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the rule property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getRule().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Rule }
+ *
+ *
+ */
+ public List<Rule> getRule() {
+ if (rule == null) {
+ rule = new ArrayList<Rule>();
+ }
+ return this.rule;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessChecker.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessChecker.java
new file mode 100644
index 00000000..d930c74e
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessChecker.java
@@ -0,0 +1,23 @@
+/*
+* 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.accesscontroller;
+
+import at.gv.egiz.bku.slexceptions.SLException;
+
+public interface AccessChecker {
+ public ChainResult check(AccessCheckerContext checkCtx) throws SLException;
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessCheckerContext.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessCheckerContext.java
new file mode 100644
index 00000000..60935678
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessCheckerContext.java
@@ -0,0 +1,43 @@
+/*
+* 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.accesscontroller;
+
+import at.gv.egiz.bku.slcommands.SLCommand;
+
+public class AccessCheckerContext {
+ private SLCommand command;
+ private AuthenticationClass authenticationClass;
+ private String peerUrl;
+
+ public AccessCheckerContext(SLCommand cmd, AuthenticationClass ac, String url) {
+ this.command = cmd;
+ this.authenticationClass = ac;
+ this.peerUrl = url;
+ }
+
+ public SLCommand getCommand() {
+ return command;
+ }
+
+ public AuthenticationClass getAuthenticationClass() {
+ return authenticationClass;
+ }
+
+ public String getPeerUrl() {
+ return peerUrl;
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessControllerFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessControllerFactory.java
new file mode 100644
index 00000000..19fec084
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AccessControllerFactory.java
@@ -0,0 +1,153 @@
+/*
+* 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.accesscontroller;
+
+import java.io.InputStream;
+import java.util.Hashtable;
+import java.util.List;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.accesscontrol.config.AccessControl;
+import at.gv.egiz.bku.accesscontrol.config.Chain;
+import at.gv.egiz.bku.accesscontrol.config.Command;
+import at.gv.egiz.bku.accesscontrol.config.ObjectFactory;
+import at.gv.egiz.bku.accesscontrol.config.Param;
+import at.gv.egiz.bku.accesscontrol.config.Rule;
+import at.gv.egiz.bku.accesscontroller.RuleChecker.PEER_TYPE;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+
+public class AccessControllerFactory {
+
+ private static AccessControllerFactory instance = new AccessControllerFactory();
+ private static Log log = LogFactory.getLog(AccessControllerFactory.class);
+ private static JAXBContext jaxbContext;
+ public static String INPUT_CHAIN = "InputChain";
+ public static String OUTPUT_CHAIN = "OutputChain";
+
+ static {
+ try {
+ jaxbContext = JAXBContext.newInstance(ObjectFactory.class.getPackage()
+ .getName());
+ } catch (JAXBException e) {
+ log.fatal("Cannot init jaxbContext", e);
+ }
+ }
+
+ private Hashtable<String, ChainChecker> chainTable = new Hashtable<String, ChainChecker>();
+
+ private AccessControllerFactory() {
+ }
+
+ public static AccessControllerFactory getInstance() {
+ return instance;
+ }
+
+ /**
+ *
+ * @param id
+ * @return null if there is no chain with this id.
+ */
+ public ChainChecker getChainChecker(String id) {
+ return chainTable.get(id);
+ }
+
+ public ChainChecker createChainChecker(String id, boolean register) {
+ ChainChecker cc = new ChainChecker(id);
+ if (register) {
+ chainTable.put(id, cc);
+ }
+ return cc;
+ }
+
+ public void registerChainChecker(ChainChecker cc) {
+ chainTable.put(cc.getId(), cc);
+ }
+
+ public CommandParamChecker createParamChecker(String cmd) {
+ if ((cmd != null) && (cmd.startsWith("Infobox"))) {
+ return new InfoboxParamChecker();
+ } else {
+ return null;
+ }
+ }
+
+ public RuleChecker createRuleChecker(Rule rule) {
+ RuleChecker rc;
+ rc = new RuleChecker(rule.getId());
+ Command cmd = rule.getCommand();
+ if (cmd != null) {
+ rc.setCommandName(cmd.getName());
+ for (Param p : cmd.getParam()) {
+ rc.addParameter(p.getName(), p.getValue());
+ }
+ }
+ rc.setAuthenticationClass(rule.getAuthClass());
+ if (rule.getIPv4Address() != null) {
+ rc.setPeerId(rule.getIPv4Address(), PEER_TYPE.IP);
+ } else if (rule.getDomainName() != null) {
+ rc.setPeerId(rule.getDomainName(), PEER_TYPE.HOST);
+ } else if (rule.getURL() != null) {
+ rc.setPeerId(rule.getURL(), PEER_TYPE.URL);
+ }
+ rc.setAction(rule.getAction().getRuleAction());
+ rc.setChainId(rule.getAction().getChainRef());
+ rc.setUserAction(rule.getUserInteraction());
+ return rc;
+ }
+
+ public void init(InputStream is) throws JAXBException {
+ chainTable.clear();
+ Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+ AccessControl ac = (AccessControl) unmarshaller.unmarshal(is);
+ List<Chain> chainList = ac.getChains().getChain();
+ log.debug("Found " + chainList.size() + " chains in config");
+ for (Chain chain : chainList) {
+ log.trace("Creating chain: " + chain.getId());
+ ChainChecker cc = createChainChecker(chain.getId(), false);
+ List<Rule> ruleList = chain.getRules().getRule();
+ log
+ .debug("Found " + ruleList.size() + " rules in chain "
+ + chain.getId());
+ for (Rule rule : ruleList) {
+ log.trace("Creating rule: " + rule.getId());
+ cc.addRule(createRuleChecker(rule));
+ }
+ registerChainChecker(cc);
+ }
+ validate();
+ }
+
+ private void validate() {
+ for (ChainChecker chain : chainTable.values()) {
+ for (RuleChecker rule : chain.getRules()) {
+ if (rule.getChainId() != null) {
+ log.trace("Checking reference to chain: "+rule.getChainId());
+ if (getChainChecker(rule.getChainId()) == null) {
+ throw new SLRuntimeException("Invalid reference to unknown chain: "+rule.getChainId());
+ }
+ }
+ }
+ }
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/Action.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/Action.java
new file mode 100644
index 00000000..f3d15ad6
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/Action.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.accesscontroller;
+
+public enum Action {
+ ALLOW("allow"), DENY("deny");
+ private String name;
+
+ Action(String name) {
+ this.name = name;
+ }
+
+ public static Action fromString(String s) {
+ for (Action ac : values()) {
+ if (ac.name.equals(s)) {
+ return ac;
+ }
+ }
+ return null;
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AuthenticationClass.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AuthenticationClass.java
new file mode 100644
index 00000000..3c442a6d
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AuthenticationClass.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.accesscontroller;
+
+public enum AuthenticationClass {
+ ANONYMOUS("anonymous"), PSEUDO_ANONYMOUS("pseudoanonymous"), CERTIFIED(
+ "certified"), CERTIFIED_GOV_AGENCY("certifiedGovAgency");
+
+ private String name;
+
+ AuthenticationClass(String name) {
+ this.name = name;
+ }
+
+ public static AuthenticationClass fromString(String s) {
+ for (AuthenticationClass ac : values()) {
+ if (ac.name.equals(s)) {
+ return ac;
+ }
+ }
+ return null;
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AuthenticationClassifier.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AuthenticationClassifier.java
new file mode 100644
index 00000000..61d3d7a5
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/AuthenticationClassifier.java
@@ -0,0 +1,110 @@
+/*
+ * 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.accesscontroller;
+
+import static at.gv.egiz.bku.accesscontroller.AuthenticationClass.ANONYMOUS;
+import static at.gv.egiz.bku.accesscontroller.AuthenticationClass.CERTIFIED;
+import static at.gv.egiz.bku.accesscontroller.AuthenticationClass.CERTIFIED_GOV_AGENCY;
+import static at.gv.egiz.bku.accesscontroller.AuthenticationClass.PSEUDO_ANONYMOUS;
+
+import java.net.URL;
+import java.security.cert.CertificateParsingException;
+import java.security.cert.X509Certificate;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class AuthenticationClassifier {
+ private static AuthenticationClassifier instance = new AuthenticationClassifier();
+ private static Log log = LogFactory.getLog(AuthenticationClassifier.class);
+ private final static String GOV_DOMAIN = ".gv.at";
+
+ private AuthenticationClassifier() {
+ }
+
+ 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];
+ log.trace("Analyzing cn dn: " + dns);
+ if (dns.endsWith(GOV_DOMAIN)) {
+ return true;
+ }
+ }
+ }
+ try {
+ Collection<List<?>> sanList = cert.getSubjectAlternativeNames();
+ if (sanList != null) {
+ for (List<?> san : sanList) {
+ log.trace("Analyzing subj. alt name: " + san);
+ 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;
+ }
+
+ /**
+ * Client Certificates are currently not supported
+ *
+ */
+ protected AuthenticationClass getMyAuthenticationClass(boolean isDataUrl,
+ URL url, X509Certificate cert) {
+ if (isDataUrl) {
+ if (url.getProtocol().equalsIgnoreCase("https")) {
+ if (isGovAgency(cert)) {
+ return CERTIFIED_GOV_AGENCY;
+ }
+ if (cert.getExtensionValue("1.2.40.0.10.1.1.1") != null) {
+ return CERTIFIED_GOV_AGENCY;
+ }
+ return CERTIFIED;
+ } else {
+ return PSEUDO_ANONYMOUS;
+ }
+ } else {
+ return ANONYMOUS;
+ }
+ }
+
+ /**
+ *
+ * @param isDataUrl
+ * @param url
+ * if the url's protocol is https a cert parameter must be provided.
+ * @param cert
+ * @return
+ */
+ public static AuthenticationClass getAuthenticationClass(boolean isDataUrl,
+ URL url, X509Certificate cert) {
+ return instance.getMyAuthenticationClass(isDataUrl, url, cert);
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/ChainChecker.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/ChainChecker.java
new file mode 100644
index 00000000..716f81e4
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/ChainChecker.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.accesscontroller;
+
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.slexceptions.SLException;
+
+public class ChainChecker implements AccessChecker {
+ private static Log log = LogFactory.getLog(ChainChecker.class);
+
+ private String id;
+ private List<RuleChecker> rules = new LinkedList<RuleChecker>();
+
+ /**
+ *
+ * @param id must not be null
+ */
+ public ChainChecker(String id) {
+ if (id == null) {
+ throw new NullPointerException("Id argument must not be null");
+ }
+ this.id = id;
+ }
+
+
+ public String getId() {
+ return id;
+ }
+
+ public void addRule(RuleChecker rule) {
+ if (rule != null) {
+ rules.add(rule);
+ }
+ }
+
+ public List<RuleChecker> getRules() {
+ return Collections.unmodifiableList(rules);
+ }
+
+ @Override
+ public ChainResult check(AccessCheckerContext checkCtx) throws SLException {
+ log.debug("Processing chain: "+id);
+ for (RuleChecker rule : rules) {
+ log.trace("Checking rule: "+rule.getId());
+ RuleResult result = rule.check(checkCtx);
+ if (result.matchFound()) {
+ if (result.getDelegateChainId() != null) {
+ // process chain
+ ChainChecker cc = AccessControllerFactory.getInstance().getChainChecker(result.getDelegateChainId());
+ if (cc == null) {
+ log.error("Cannot delegate to chain. Unknown chain id: "+result.getDelegateChainId());
+ throw new SLException(4000);
+ }
+ ChainResult cr = cc.check(checkCtx);
+ if (cr.matchFound()) {
+ return cr;
+ }
+ // if chain does not contain matching rule
+ // cont. here.
+ } else {
+ return result;
+ }
+ }
+ }
+ log.debug("Did not find a matching rule here");
+ return new ChainResult(null, null, false);
+ }
+
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/ChainResult.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/ChainResult.java
new file mode 100644
index 00000000..a5547cab
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/ChainResult.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.accesscontroller;
+
+/**
+ * Result of the access controller
+ *
+ */
+public class ChainResult {
+ private UserAction userAction;
+ private Action action;
+ private boolean matchFound;
+
+ public ChainResult(Action action, UserAction userAction, boolean matchFound) {
+ this.action = action;
+ this.userAction = userAction;
+ this.matchFound = matchFound;
+ }
+
+ public Action getAction() {
+ return action;
+ }
+
+ public UserAction getUserAction() {
+ return userAction;
+ }
+
+ /**
+ *
+ * @return true if a matching rule has been found
+ */
+ public boolean matchFound() {
+ return matchFound;
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/CommandParamChecker.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/CommandParamChecker.java
new file mode 100644
index 00000000..003eb2f7
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/CommandParamChecker.java
@@ -0,0 +1,68 @@
+/*
+* 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.accesscontroller;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import at.gv.egiz.bku.slcommands.SLCommand;
+
+public abstract class CommandParamChecker {
+
+ protected List<Tupel<String, String>> paramList = new LinkedList<Tupel<String, String>>();
+
+ public static class Tupel<T, Q> {
+ private T key;
+ private Q val;
+
+ public Tupel(T key, Q val) {
+ if ((key == null) || (val == null)) {
+ throw new NullPointerException("Tupel key and value must not be null");
+ }
+ this.key = key;
+ this.val = val;
+ }
+
+ public T getKey() {
+ return key;
+ }
+
+ public Q getVal() {
+ return val;
+ }
+
+ @SuppressWarnings("unchecked")
+ public boolean equals(Object other) {
+ if (other instanceof Tupel) {
+ Tupel ot = (Tupel) other;
+ return (key.equals(ot.key) && val.equals(ot.val));
+ }
+ return false;
+ }
+
+ public int hashCode() {
+ return key.hashCode();
+ }
+ }
+
+ public void addParameter(String key, String value) {
+ paramList.add(new Tupel<String, String>(key, value));
+ }
+
+ public abstract boolean checkParameter(SLCommand cmd);
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/InfoboxParamChecker.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/InfoboxParamChecker.java
new file mode 100644
index 00000000..8fa328de
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/InfoboxParamChecker.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.accesscontroller;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.slcommands.InfoboxReadCommand;
+import at.gv.egiz.bku.slcommands.SLCommand;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+
+public class InfoboxParamChecker extends CommandParamChecker {
+ private static Log log = LogFactory.getLog(InfoboxParamChecker.class);
+
+ public final static String INFOBOX_ID = "InfoboxIdentifier";
+ public final static String PERSON_ID = "PersonIdentifier";
+ public final static String DERIVED = "derived";
+
+ @Override
+ public boolean checkParameter(SLCommand cmd) {
+ if (paramList.size() == 0) {
+ return true;
+ }
+
+ if (cmd instanceof InfoboxReadCommand) {
+ InfoboxReadCommand irc = (InfoboxReadCommand) cmd;
+ for (Tupel<String, String> param : paramList) {
+ if (param.getKey().equals(INFOBOX_ID)) {
+ if (!param.getVal().equals(irc.getInfoboxIdentifier())) {
+ return false;
+ }
+ } else if (param.getKey().equals(PERSON_ID)) {
+ if (param.getVal().equals(DERIVED)) {
+ if (irc.getIdentityLinkDomainId() == null) {
+ return false;
+ }
+ } else {
+ Pattern p = Pattern.compile(param.getVal());
+ Matcher m = p.matcher(irc.getIdentityLinkDomainId());
+ if (!m.matches()) {
+ return false;
+ }
+ }
+
+ } else {
+ throw new SLRuntimeException("Cannot handle parameter "
+ + param.getKey());
+ }
+ }
+ return true;
+ } else {
+ log.error("Cannot handle parameter for command: " + cmd.getName());
+ throw new SLRuntimeException("Cannot handle parameters for command: "
+ + cmd.getName());
+ }
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/RuleChecker.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/RuleChecker.java
new file mode 100644
index 00000000..1cba89ef
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/RuleChecker.java
@@ -0,0 +1,203 @@
+/*
+* 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.accesscontroller;
+
+import java.net.InetAddress;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.UnknownHostException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.slcommands.SLCommand;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+
+public class RuleChecker implements AccessChecker {
+
+ private static Log log = LogFactory.getLog(RuleChecker.class);
+
+ public static enum PEER_TYPE {
+ HOST, IP, URL
+ };
+
+ protected String id;
+ protected AuthenticationClass authenticationClass;
+ protected String commandName;
+ protected Pattern commandNamePattern;
+ protected String peerId;
+ protected Pattern peerIdPattern;
+ protected PEER_TYPE peerType;
+ protected Action action;
+ protected UserAction userAction;
+ protected String chainId;
+ protected CommandParamChecker paramChecker;
+
+ public RuleChecker(String id) {
+ if (id == null) {
+ throw new NullPointerException("Id argument must not be null");
+ }
+ this.id = id;
+ }
+
+ public void setAuthenticationClass(String ac) {
+ if (ac != null) {
+ AuthenticationClass tmp = AuthenticationClass.fromString(ac);
+ if (tmp == null) {
+ throw new SLRuntimeException("Unknown authentication class " + ac);
+ }
+ authenticationClass = tmp;
+ }
+ }
+
+ public void setAction(String ac) {
+ if (ac != null) {
+ Action tmp = Action.fromString(ac);
+ if (tmp == null) {
+ throw new SLRuntimeException("Unknown action " + ac);
+ }
+ action = tmp;
+ }
+ }
+
+ public void setUserAction(String uac) {
+ if (uac != null) {
+ UserAction tmp = UserAction.fromString(uac);
+ if (tmp == null) {
+ throw new SLRuntimeException("Unknown user action " + uac);
+ }
+ userAction = tmp;
+ }
+ }
+
+ public void setChainId(String chainId) {
+ this.chainId = chainId;
+ }
+
+ public void setPeerId(String peerId, PEER_TYPE type) {
+ this.peerType = type;
+ this.peerId = peerId;
+ peerIdPattern = Pattern.compile(peerId);
+ }
+
+ public void setCommandName(String commandName) {
+ this.commandName = commandName;
+ commandNamePattern = Pattern.compile(commandName);
+ paramChecker = AccessControllerFactory.getInstance().createParamChecker(
+ commandName);
+ }
+
+ /**
+ * Make sure to set the commandName first
+ *
+ * @param key
+ * @param value
+ */
+ public void addParameter(String key, String value) {
+ if (paramChecker == null) {
+ throw new IllegalArgumentException("Cannot set parameters for command "
+ + commandName);
+ }
+ paramChecker.addParameter(key, value);
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ protected boolean matchAuthenticationClass(AuthenticationClass cls) {
+ if ((this.authenticationClass == null) || (cls == null)) {
+ return true;
+ }
+ return this.authenticationClass.compareTo(cls) <= 0;
+ }
+
+ protected boolean matchCommandName(SLCommand cmd) {
+ if ((commandName == null) || (cmd == null)) {
+ return true;
+ }
+ Matcher matcher = commandNamePattern.matcher(cmd.getName());
+ if (matcher.matches()) {
+ if (paramChecker != null) {
+ return paramChecker.checkParameter(cmd);
+ } else {
+ return true;
+ }
+ } else {
+ return false;
+ }
+ }
+
+ protected boolean matchPeerId(String peerUrl) {
+ if ((peerId == null) || (peerUrl == null)) {
+ return true;
+ }
+ if (peerType == PEER_TYPE.URL) {
+ Matcher matcher = peerIdPattern.matcher(peerUrl);
+ return matcher.matches();
+ } else {
+ try {
+ URL url = new URL(peerUrl);
+ if (peerType == PEER_TYPE.HOST) {
+ try {
+ String host = url.getHost();
+ String hostName = InetAddress.getByName(host)
+ .getCanonicalHostName();
+ Matcher matcher = peerIdPattern.matcher(hostName);
+ return matcher.matches();
+ } catch (UnknownHostException e) {
+ log.error("Cannot resolve hostname", e);
+ return false;
+ }
+ } else {
+ try {
+ String hostAddr = InetAddress.getByName(url.getHost())
+ .getHostAddress();
+ Matcher matcher = peerIdPattern.matcher(hostAddr);
+ return matcher.matches();
+ } catch (UnknownHostException e) {
+ log.error("Cannot resolve host address", e);
+ return false;
+ }
+ }
+ } catch (MalformedURLException e) {
+ log.error("Cannot parse url", e);
+ return false;
+ }
+ }
+ }
+
+ @Override
+ public RuleResult check(AccessCheckerContext checkCtx) {
+ log.debug("Processing rule: " + id);
+ if (matchAuthenticationClass(checkCtx.getAuthenticationClass())
+ && matchCommandName(checkCtx.getCommand())
+ && matchPeerId(checkCtx.getPeerUrl())) {
+ log.debug("Match found for rule: " + id);
+ return new RuleResult(action, userAction, true, chainId);
+ }
+ log.debug("No match found for rule: " + id);
+ return new RuleResult(action, userAction, false, chainId);
+ }
+
+ public String getChainId() {
+ return chainId;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/RuleResult.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/RuleResult.java
new file mode 100644
index 00000000..706615c2
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/RuleResult.java
@@ -0,0 +1,32 @@
+/*
+* 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.accesscontroller;
+
+
+public class RuleResult extends ChainResult {
+ private String chainId;
+
+ public RuleResult(Action action, UserAction userAction, boolean matchFound, String chainId) {
+ super(action, userAction, matchFound);
+ this.chainId = chainId;
+ }
+
+ public String getDelegateChainId() {
+ return chainId;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/SecurityManagerFacade.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/SecurityManagerFacade.java
new file mode 100644
index 00000000..482d3ecb
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/SecurityManagerFacade.java
@@ -0,0 +1,118 @@
+/*
+* 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.accesscontroller;
+
+import java.io.InputStream;
+
+import javax.xml.bind.JAXBException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.slcommands.SLCommand;
+import at.gv.egiz.bku.slcommands.SLSourceContext;
+import at.gv.egiz.bku.slcommands.SLTargetContext;
+
+/**
+ * Facade for the access controller
+ */
+public class SecurityManagerFacade {
+
+ private static Log log = LogFactory.getLog(SecurityManagerFacade.class);
+
+ private boolean allowUnmatched = false;
+ private ChainChecker inputFilter = null;
+ private ChainChecker outputFilter = null;
+
+ public boolean mayInvokeCommand(SLCommand cmd, SLSourceContext ctx) {
+ if (inputFilter != null) {
+ AuthenticationClass ac = AuthenticationClassifier.getAuthenticationClass(
+ ctx.isSourceIsDataURL(), ctx.getSourceUrl(), ctx
+ .getSourceCertificate());
+ AccessCheckerContext acc = new AccessCheckerContext(cmd, ac, ctx
+ .getSourceUrl().toString());
+ try {
+ ChainResult cr = inputFilter.check(acc);
+ if (cr.matchFound()) {
+ if (cr.getAction() == Action.ALLOW) {
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ return allowUnmatched;
+ }
+ } catch (Exception e) {
+ log.error(e);
+ return false;
+ }
+ } else {
+ log.warn("No input chain defined");
+ return allowUnmatched;
+ }
+ }
+
+ public boolean maySendResult(SLCommand cmd, SLTargetContext ctx) {
+ if (outputFilter != null) {
+ AuthenticationClass ac = AuthenticationClassifier.getAuthenticationClass(
+ ctx.isTargetIsDataURL(), ctx.getTargetUrl(), ctx
+ .getTargetCertificate());
+ AccessCheckerContext acc = new AccessCheckerContext(cmd, ac, ctx
+ .getTargetUrl().toString());
+ try {
+ ChainResult cr = outputFilter.check(acc);
+ if (cr.matchFound()) {
+ if (cr.getAction() == Action.ALLOW) {
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ return allowUnmatched;
+ }
+ } catch (Exception e) {
+ log.error(e);
+ return false;
+ }
+ } else {
+ log.warn("No output chain defined");
+ return allowUnmatched;
+ }
+ }
+
+ /**
+ * Default policy if not match was found
+ *
+ * @param allow
+ */
+ public void setAllowUnmatched(boolean allow) {
+ this.allowUnmatched = allow;
+ }
+
+ public void init(InputStream is) {
+ inputFilter = null;
+ outputFilter = null;
+ AccessControllerFactory fab = AccessControllerFactory.getInstance();
+ try {
+ fab.init(is);
+ } catch (JAXBException e) {
+ log.error(e);
+ }
+ inputFilter = fab.getChainChecker(AccessControllerFactory.INPUT_CHAIN);
+ outputFilter = fab.getChainChecker(AccessControllerFactory.OUTPUT_CHAIN);
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/UserAction.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/UserAction.java
new file mode 100644
index 00000000..c1f7028b
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/accesscontroller/UserAction.java
@@ -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.
+*/
+package at.gv.egiz.bku.accesscontroller;
+
+public enum UserAction {
+ NONE("none"), INFO("info"), CONFIRM("confirm"), CONFIRM_WITH_SECRET("confirmWithSecret");
+
+ private String name;
+
+ UserAction(String name) {
+ this.name = name;
+ }
+
+ public static UserAction fromString(String s) {
+ for (UserAction ac : values()) {
+ if (ac.name.equals(s)) {
+ return ac;
+ }
+ }
+ return null;
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/AbstractBindingProcessor.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/AbstractBindingProcessor.java
new file mode 100644
index 00000000..23f62134
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/AbstractBindingProcessor.java
@@ -0,0 +1,89 @@
+/*
+* 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.binding;
+
+import at.gv.egiz.bku.conf.Configuration;
+import java.io.InputStream;
+import java.util.Date;
+
+import at.gv.egiz.bku.slcommands.SLCommandInvoker;
+import at.gv.egiz.stal.STAL;
+
+public abstract class AbstractBindingProcessor implements BindingProcessor {
+ protected Id id;
+ protected Configuration config;
+ protected STAL stal;
+ protected SLCommandInvoker commandInvoker;
+ protected long lastAccessedTime = System.currentTimeMillis();
+
+ public AbstractBindingProcessor(String idString) {
+ this.id = IdFactory.getInstance().createId(idString);
+ }
+
+ /**
+ * @see java.lang.Thread#run()
+ */
+ public abstract void run();
+
+ /**
+ * The caller is advised to check the result in case an error occurred.
+ *
+ * @see #getResult()
+ */
+ public abstract void consumeRequestStream(InputStream aIs);
+
+ public Id getId() {
+ return id;
+ }
+
+ public STAL getSTAL() {
+ return stal;
+ }
+
+ public SLCommandInvoker getCommandInvoker() {
+ return commandInvoker;
+ }
+
+ public void updateLastAccessTime() {
+ lastAccessedTime = System.currentTimeMillis();
+ }
+
+ public Date getLastAccessTime() {
+ return new Date(lastAccessedTime);
+ }
+
+ /**
+ * To be called after object creation.
+ *
+ * @param aStal
+ * must not be null
+ * @param aCommandInvoker
+ * must not be null
+ */
+ public void init(STAL aStal, SLCommandInvoker aCommandInvoker, Configuration conf) {
+ if (aStal == null) {
+ throw new NullPointerException("STAL must not be set to null");
+ }
+ if (aCommandInvoker == null) {
+ throw new NullPointerException("Commandinvoker must not be set to null");
+ }
+ config = conf;
+ stal = aStal;
+ commandInvoker = aCommandInvoker;
+ Thread.currentThread().setName("BPID#"+getId().toString());
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessor.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessor.java
new file mode 100644
index 00000000..0d978992
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessor.java
@@ -0,0 +1,78 @@
+/*
+* 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.binding;
+
+import at.gv.egiz.bku.conf.Configuration;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Date;
+import java.util.Locale;
+
+import at.gv.egiz.bku.slcommands.SLCommandInvoker;
+import at.gv.egiz.stal.STAL;
+
+/**
+ * Represents an single instance of a SL HTTP binding.
+ *
+ * @author wbauer
+ *
+ */
+public interface BindingProcessor extends Runnable {
+
+ /**
+ * The stream must be read completely within this method.
+ *
+ * The caller is advised to check the result in case an error occurred.
+ *
+ * @see #getResult()
+ */
+ public void consumeRequestStream(InputStream aIs);
+
+ /**
+ * The unique Id of this http binding instance.
+ * @return
+ */
+ public Id getId();
+
+ /**
+ * The used underlying STAL instance
+ * @return
+ */
+ public STAL getSTAL();
+
+ public SLCommandInvoker getCommandInvoker();
+
+ public Date getLastAccessTime();
+
+ public void updateLastAccessTime();
+
+ public String getResultContentType();
+
+ public void writeResultTo(OutputStream os, String encoding) throws IOException;
+
+ public void init(STAL aStal, SLCommandInvoker aCommandInvoker, Configuration config);
+
+ /**
+ * Sets the preferred locale for userinteraction.
+ * If the locale is not set the default locale will be used.
+ * @param locale must not be null.
+ */
+ public void setLocale(Locale locale);
+
+ public boolean isFinished();
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManager.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManager.java
new file mode 100644
index 00000000..9cad95a4
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManager.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.bku.binding;
+
+import java.net.MalformedURLException;
+import java.util.Locale;
+import java.util.Set;
+
+import at.gv.egiz.bku.slcommands.SLCommandInvoker;
+import at.gv.egiz.stal.STALFactory;
+
+/**
+ * Central player that handles the protocol binding.
+ *
+ * @author wbauer
+ *
+ */
+public interface BindingProcessorManager {
+
+ /**
+ * FactoryMethod creating a new BindingProcessor object.
+ * The created binding processor must be passed to the process method to execute.
+ *
+ * @param urlString
+ * the source url
+ * @param aSessionId
+ * optional an external sessionId (e.g. http session) could be
+ * provided. This parameter may be null.
+ * @param locale the locale used for user interaction, may be null
+ */
+ public BindingProcessor createBindingProcessor(String urlString,
+ String aSessionId, Locale locale) throws MalformedURLException;
+
+ /**
+ * FactoryMethod creating a new BindingProcessor object.
+ * The created binding processor must be passed to the process method to execute.
+ *
+ * @param protcol
+ * the source url
+ * @param aSessionId
+ * optional an external sessionId (e.g. http session) could be
+ * provided. This parameter may be null.
+ */
+ public BindingProcessor createBindingProcessor(String urlString,
+ String aSessionId) throws MalformedURLException;
+
+
+ /**
+ * Gets the binding processor with a certain id. The binding processor must be passed to the
+ * process method before it is managed and thus returned by this method.
+ * @param aId must not be null
+ * @return null if the binding processor was not "processed" before.
+ */
+ public BindingProcessor getBindingProcessor(Id aId);
+
+ /**
+ * Sets the STAL factory that is used for creating STAL objects that are used by BindingProcessor objects.
+ * For each new BindingProcessor a new STAL object is created.
+ * @param aStalFactory the factory to be used. Must not be null.
+ */
+ public void setSTALFactory(STALFactory aStalFactory);
+
+ /**
+ * Sets the invoker to be used.
+ * @param invoker
+ */
+ public void setSLCommandInvoker(SLCommandInvoker invoker);
+
+ /**
+ * Creates a processing context,
+ * schedules the provided binding processor for processing and
+ * immediately returns the context.
+ *
+ * @param aBindingProcessor
+ */
+ public ProcessingContext process(BindingProcessor aBindingProcessor);
+
+ /**
+ * Removes a formerly added (by calling the process method) binding processor.
+ * @param bindingProcessor must not be null
+ */
+ public void removeBindingProcessor(Id sessionId);
+
+ /**
+ * A set of all managed binding processors.
+ * @return
+ */
+ public Set<Id> getManagedIds();
+
+ public void shutdown();
+
+ public void shutdownNow();
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManagerImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManagerImpl.java
new file mode 100644
index 00000000..bf9a63e2
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/BindingProcessorManagerImpl.java
@@ -0,0 +1,330 @@
+/*
+ * 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.binding;
+
+import at.gv.egiz.bku.conf.Configuration;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.slcommands.SLCommandInvoker;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+import at.gv.egiz.bku.utils.binding.Protocol;
+import at.gv.egiz.stal.STAL;
+import at.gv.egiz.stal.STALFactory;
+
+/**
+ * This class maintains all active BindingProcessor Objects. Currently, only
+ * HTTPBinding is supported.
+ */
+public class BindingProcessorManagerImpl implements BindingProcessorManager {
+
+ public final static Protocol[] SUPPORTED_PROTOCOLS = { Protocol.HTTP,
+ Protocol.HTTPS };
+
+ private static Log log = LogFactory.getLog(BindingProcessorManagerImpl.class);
+
+ /** spring injected config
+ * Passed to created bindingprocessors, to replace their configuration */
+ protected Configuration config;
+
+ protected STALFactory stalFactory;
+ protected SLCommandInvoker commandInvokerClass;
+
+ private RemovalStrategy removalStrategy;
+ private ExecutorService executorService;
+ private Map<Id, ProcessingContext> contextMap = Collections.synchronizedMap(new HashMap<Id, ProcessingContext>());
+// private Map<Id, MapEntityWrapper> bindingProcessorMap = Collections
+// .synchronizedMap(new HashMap<Id, MapEntityWrapper>());
+
+ /**
+ * Container to hold a Future and Bindingprocessor object as map value.
+ *
+ * @author wbauer
+ * @see BindingProcessorManagerImpl#bindingProcessorMap
+ */
+// static class MapEntityWrapper {
+// private Future<?> future;
+// private BindingProcessor bindingProcessor;
+//
+// public MapEntityWrapper(Future<?> future, BindingProcessor bindingProcessor) {
+// if ((bindingProcessor == null) || (future == null)) {
+// throw new NullPointerException("Argument must not be null");
+// }
+// this.bindingProcessor = bindingProcessor;
+// this.future = future;
+// }
+//
+// public Future<?> getFuture() {
+// return future;
+// }
+//
+// public BindingProcessor getBindingProcessor() {
+// return bindingProcessor;
+// }
+//
+// public int hashCode() {
+// return bindingProcessor.getId().hashCode();
+// }
+//
+// public boolean equals(Object other) {
+// if (other instanceof MapEntityWrapper) {
+// MapEntityWrapper o = (MapEntityWrapper) other;
+// return (o.bindingProcessor.getId().equals(bindingProcessor.getId()));
+// } else {
+// return false;
+// }
+// }
+// }
+
+ /**
+ *
+ * @param fab
+ * must not be null
+ * @param ci
+ * must not be null (prototype to generate new instances)
+ */
+ public BindingProcessorManagerImpl(STALFactory fab, SLCommandInvoker ci, Configuration conf) {
+ if (fab == null) {
+ throw new NullPointerException("STALFactory must not be null");
+ }
+ stalFactory = fab;
+ if (ci == null) {
+ throw new NullPointerException("SLCommandInvoker must not be null");
+ }
+ commandInvokerClass = ci;
+ config = conf;
+ executorService = Executors.newCachedThreadPool();
+ }
+
+ /**
+ *
+ * @return the STALFactory currently used.
+ */
+ public STALFactory getStalFactory() {
+ return stalFactory;
+ }
+
+ /**
+ * Sets the STALFactory to be used.
+ *
+ * @param stalFactory
+ */
+ public void setStalFactory(STALFactory stalFactory) {
+ this.stalFactory = stalFactory;
+ }
+
+ /**
+ * Could be used to setup a new executor service during application stratup.
+ *
+ * @param executorService
+ */
+ public void setExecutorService(ExecutorService executorService) {
+ this.executorService = executorService;
+ }
+
+ public void setRemovalStrategy(RemovalStrategy aStrategy) {
+ removalStrategy = aStrategy;
+ }
+
+ public RemovalStrategy getRemovlaStrategy() {
+ return removalStrategy;
+ }
+
+ public void shutdown() {
+ log.info("Shutting down the BindingProcessorManager");
+ executorService.shutdown();
+ }
+
+ public void shutdownNow() {
+ log.info("Shutting down the BindingProcessorManager NOW!");
+ executorService.shutdownNow();
+ log.debug("Number of binding contexts currently managed: "
+ + contextMap.size());
+// + bindingProcessorMap.size());
+ if (log.isDebugEnabled()) {
+ for (ProcessingContext ctx : contextMap.values()) {
+ Id bpId = ctx.getBindingProcessor().getId();
+ Future future = ctx.getFuture();
+ log.debug(bpId + " cancelled: " + future.isCancelled());
+ log.debug(bpId + " done: " + future.isDone());
+ }
+// for (Iterator<MapEntityWrapper> it = bindingProcessorMap.values()
+// .iterator(); it.hasNext();) {
+// MapEntityWrapper entry = it.next();
+// log.debug(entry.getBindingProcessor().getId() + ": isDone: "
+// + entry.getFuture().isDone());
+// log.debug(entry.getBindingProcessor().getId() + ": isCanceled: "
+// + entry.getFuture().isCancelled());
+// }
+ }
+ }
+
+ /**
+ * Uses the default locale
+ */
+ public BindingProcessor createBindingProcessor(String srcUrl,
+ String aSessionId) throws MalformedURLException {
+ return createBindingProcessor(srcUrl, aSessionId, null);
+ }
+
+ /**
+ * FactoryMethod creating a new BindingProcessor object.
+ *
+ * @param protocol
+ * must not be null
+ * @throws MalformedURLException
+ */
+ public BindingProcessor createBindingProcessor(String srcUrl,
+ String aSessionId, Locale locale) throws MalformedURLException {
+ URL url = new URL(srcUrl);
+ String low = url.getProtocol().toLowerCase();
+ Protocol proto = null;
+ for (int i = 0; i < SUPPORTED_PROTOCOLS.length; i++) {
+ if (SUPPORTED_PROTOCOLS[i].toString().equals(low)) {
+ proto = SUPPORTED_PROTOCOLS[i];
+ break;
+ }
+ }
+ if (proto == null) {
+ throw new UnsupportedOperationException();
+ }
+ BindingProcessor bindingProcessor = new HTTPBindingProcessor(aSessionId,
+ commandInvokerClass.newInstance(), url);
+ stalFactory.setLocale(locale);
+ STAL stal = stalFactory.createSTAL();
+ bindingProcessor.init(stal, commandInvokerClass.newInstance(), config);
+ if (locale != null) {
+ bindingProcessor.setLocale(locale);
+// stal.setLocale(locale);
+ }
+ return bindingProcessor;
+ }
+
+ /**
+ * @return the bindingprocessor object for this id or null if no
+ * bindingprocessor was found.
+ */
+ @Override
+ public BindingProcessor getBindingProcessor(Id aId) {
+// if (bindingProcessorMap.get(aId) != null) {
+// return bindingProcessorMap.get(aId).getBindingProcessor();
+ ProcessingContext ctx = contextMap.get(aId);
+ if (ctx != null) {
+ return ctx.getBindingProcessor();
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ *
+ */
+ @Override
+ public void setSTALFactory(STALFactory aStalFactory) {
+ if (aStalFactory == null) {
+ throw new NullPointerException("Cannot set STALFactory to null");
+ }
+ stalFactory = aStalFactory;
+ }
+
+ /**
+ * Causes the BindingProcessorManager to manage the provided BindingProcessor
+ * Creates a processing context,
+ * schedules the provided binding processor for processing and
+ * immediately returns the context.
+ *
+ * @param aBindingProcessor
+ * must not be null
+ */
+ @Override
+ public ProcessingContext process(BindingProcessor aBindingProcessor) {
+ if (contextMap.containsKey(aBindingProcessor.getId())) {
+// if (bindingProcessorMap.containsKey(aBindingProcessor.getId())) {
+ log.fatal("Clashing ids, cannot process bindingprocessor with id:"
+ + aBindingProcessor.getId());
+ throw new SLRuntimeException(
+ "Clashing ids, cannot process bindingprocessor with id:"
+ + aBindingProcessor.getId());
+ }
+ log.debug("processing bindingprocessor: " + aBindingProcessor.getId());
+ Future<?> f = executorService.submit(aBindingProcessor);
+ ProcessingContext ctx = new ProcessingContext(aBindingProcessor, f);
+ contextMap.put(aBindingProcessor.getId(), ctx);
+// bindingProcessorMap.put(aBindingProcessor.getId(), new MapEntityWrapper(f,
+// aBindingProcessor));
+ return ctx;
+ }
+
+ @Override
+ public void setSLCommandInvoker(SLCommandInvoker invoker) {
+ commandInvokerClass = invoker;
+ }
+
+ @Override
+ public void removeBindingProcessor(Id sessionId) {
+ log.debug("Removing binding processor: " + sessionId);
+ ProcessingContext ctx = contextMap.get(sessionId);
+ if (ctx == null) {
+ log.warn("no processing context to remove for session " + sessionId);
+ return;
+ }
+ Future f = ctx.getFuture();
+
+// MapEntityWrapper wrapper = bindingProcessorMap.get(sessionId);
+// if (wrapper == null) {
+// return;
+// }
+// Future<?> f = wrapper.getFuture();
+
+ if (!f.isDone()) {
+ log.trace("canceling " + sessionId);
+ f.cancel(true);
+ }
+ contextMap.remove(sessionId);
+// bindingProcessorMap.remove(sessionId);
+ }
+
+ @Override
+ public Set<Id> getManagedIds() {
+ Set<Id> result = new HashSet<Id>();
+ synchronized (contextMap) {
+ for (Id id : contextMap.keySet()) {
+ result.add(id);
+ }
+ }
+// synchronized (bindingProcessorMap) {
+// for (Iterator<Id> it = bindingProcessorMap.keySet().iterator(); it
+// .hasNext();) {
+// result.add(it.next());
+// }
+// }
+ return result;
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrl.java
new file mode 100644
index 00000000..d3945253
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrl.java
@@ -0,0 +1,111 @@
+/*
+ * 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.binding;
+
+import at.gv.egiz.bku.conf.Configurator;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.Properties;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLSocketFactory;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+
+/**
+ * Used to handle DataUrl connections as specified in the CCE's HTTP protocol binding.
+ *
+ */
+public class DataUrl {
+
+ private static Log log = LogFactory.getLog(DataUrl.class);
+ private static DataUrlConnectionSPI connection;
+ private static Properties configuration;
+ private static SSLSocketFactory sslSocketFactory;
+ private static HostnameVerifier hostNameVerifier;
+ private URL url;
+
+ /** spring injected config, to replace configuration */
+ //private Configuration config;
+
+ /**
+ * Sets the default DataUrlConnection implementation
+ * @param aClass must not be null
+ */
+ static void setDataUrlConnectionImpl(DataUrlConnectionSPI conn) {
+ if (conn != null) {
+ connection = conn;
+ }
+ }
+
+ public DataUrl(String aUrlString) throws MalformedURLException {
+ url = new URL(aUrlString);
+ if (connection == null) {
+ log.debug("Using default DataURLConnection class");
+ connection = new DataUrlConnectionImpl();
+ }
+ connection.setConfiguration(configuration);
+ connection.setSSLSocketFactory(sslSocketFactory);
+ connection.setHostnameVerifier(hostNameVerifier);
+ }
+
+ public DataUrlConnection openConnection() {
+ try {
+ log.debug("Opening dataurl connection");
+ DataUrlConnectionSPI retVal = connection.newInstance();
+ retVal.init(url);
+ return retVal;
+ } catch (Exception e) {
+ log.error(e);
+ throw new SLRuntimeException("Cannot instantiate a dataurlconnection:", e);
+ }
+ }
+
+
+ /**
+ * set configuration for all subsequently instantiated DataURL objects
+ * @param props
+ */
+ public static void setConfiguration(Properties props) {
+ configuration = props;
+ if (configuration != null) {
+ String className = configuration.getProperty(Configurator.DATAURLCONNECTION_CONFIG_P);
+ if (className != null) {
+ log.warn("Set DataURLConnection class not supported!");
+ }
+ }
+ }
+
+ /**
+ * set SSLSocketFactory for all subsequently instantiated DataURL objects
+ * @param socketFactory
+ */
+ public static void setSSLSocketFactory(SSLSocketFactory socketFactory) {
+ sslSocketFactory = socketFactory;
+ }
+
+ /**
+ * set HostnameVerifier for all subsequently instantiated DataURL objects
+ * @param hostNameVerifier
+ */
+ public static void setHostNameVerifier(HostnameVerifier hostNameVerifier) {
+ DataUrl.hostNameVerifier = hostNameVerifier;
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnection.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnection.java
new file mode 100644
index 00000000..384cf71c
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnection.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.binding;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.SocketTimeoutException;
+import java.net.URL;
+import java.security.cert.X509Certificate;
+
+import at.gv.egiz.bku.slcommands.SLResult;
+
+/**
+ * Transmit a security layer result to DataURL via HTTP POST, encoded as multipart/form-data.
+ * The HTTP header user-agent is set to <em>citizen-card-environment/1.2 BKU2 1.0</em>.
+ * The form-parameter ResponseType is set to <em>HTTP-Security-Layer-RESPONSE</em>.
+ * All other headers/parameters are set by the caller.
+ *
+ * @author clemens
+ */
+public interface DataUrlConnection {
+
+ public static final String FORMPARAM_RESPONSETYPE = "ResponseType";
+ public static final String DEFAULT_RESPONSETYPE = "HTTP-Security-Layer-RESPONSE";
+ public static final String FORMPARAM_XMLRESPONSE = "XMLResponse";
+ public static final String FORMPARAM_BINARYRESPONSE = "BinaryResponse";
+
+ public static final String XML_RESPONSE_ENCODING = "UTF-8";
+
+
+ public String getProtocol();
+
+ public URL getUrl();
+
+ /**
+ * Set a HTTP Header.
+ * @param key
+ * @param value multiple values are assumed to have the correct formatting (comma-separated list)
+ */
+ public void setHTTPHeader(String key, String value);
+
+ /**
+ * Set a form-parameter.
+ * @param name
+ * @param data
+ * @param contentType may be null
+ * @param charSet may be null
+ * @param transferEncoding may be null
+ */
+ public void setHTTPFormParameter(String name, InputStream data, String contentType, String charSet, String transferEncoding);
+
+ /**
+ * @pre httpHeaders != null
+ * @throws java.net.SocketTimeoutException
+ * @throws java.io.IOException
+ */
+ public void connect() throws SocketTimeoutException, IOException;
+
+ public X509Certificate getServerCertificate();
+
+ /**
+ * @pre connection != null
+ * @throws java.io.IOException
+ */
+ public void transmit(SLResult slResult) throws IOException;
+
+ public DataUrlResponse getResponse() throws IOException;
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionImpl.java
new file mode 100644
index 00000000..82c1be53
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionImpl.java
@@ -0,0 +1,539 @@
+/*
+ * 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.binding;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.net.HttpURLConnection;
+import java.net.SocketTimeoutException;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.nio.charset.Charset;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.Set;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLSocketFactory;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.commons.httpclient.methods.multipart.FilePart;
+import org.apache.commons.httpclient.methods.multipart.Part;
+import org.apache.commons.httpclient.methods.multipart.StringPart;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.binding.multipart.InputStreamPartSource;
+import at.gv.egiz.bku.binding.multipart.SLResultPart;
+import at.gv.egiz.bku.conf.Configurator;
+import at.gv.egiz.bku.slcommands.SLResult;
+import at.gv.egiz.bku.slcommands.SLResult.SLResultType;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+import at.gv.egiz.bku.utils.URLEncodingWriter;
+import at.gv.egiz.bku.utils.binding.Protocol;
+
+/**
+ * An implementation of the DataUrlConnectionSPI that supports
+ * <code>multipart/form-data</code> encoding and
+ * <code>application/x-www-form-urlencoded</code> for compatibility with legacy
+ * systems.
+ *
+ */
+public class DataUrlConnectionImpl implements DataUrlConnectionSPI {
+
+ private final static Log log = LogFactory.getLog(DataUrlConnectionImpl.class);
+
+ public static final byte[] B_DEFAULT_RESPONSETYPE = DEFAULT_RESPONSETYPE.getBytes(Charset.forName("UTF-8"));
+
+ /**
+ * Supported protocols are HTTP and HTTPS.
+ */
+ public final static Protocol[] SUPPORTED_PROTOCOLS = { Protocol.HTTP,
+ Protocol.HTTPS };
+
+ /**
+ * The X509 certificate of the DataURL server.
+ */
+ protected X509Certificate serverCertificate;
+
+ /**
+ * The protocol of the DataURL.
+ */
+ protected Protocol protocol;
+
+ /**
+ * Use <code>application/x-www-form-urlencoded</code> instead of
+ * standard conform <code>application/x-www-form-urlencoded</code>.
+ */
+ protected boolean urlEncoded = true;
+
+ /**
+ * The value of the DataURL.
+ */
+ protected URL url;
+
+ /**
+ * The URLConnection used for communication with the DataURL server.
+ */
+ private HttpURLConnection connection;
+
+ /**
+ * The HTTP request headers.
+ */
+ protected Map<String, String> requestHttpHeaders;
+
+ /**
+ * The HTTP form parameters.
+ */
+ protected ArrayList<HTTPFormParameter> httpFormParameter;
+
+ /**
+ * The boundary for multipart/form-data requests.
+ */
+ protected String boundary;
+
+ /**
+ * The configuration properties.
+ */
+ protected Properties config = null;
+
+ /**
+ * The SSLSocketFactory for HTTPS connections.
+ */
+ protected SSLSocketFactory sslSocketFactory;
+
+ /**
+ * The HostnameVerifier for HTTPS connections.
+ */
+ protected HostnameVerifier hostnameVerifier;
+
+ /**
+ * The response of the DataURL server.
+ */
+ protected DataUrlResponse result;
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.bku.binding.DataUrlConnection#getProtocol()
+ */
+ public String getProtocol() {
+ if (protocol == null) {
+ return null;
+ }
+ return protocol.toString();
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.bku.binding.DataUrlConnection#connect()
+ */
+ public void connect() throws SocketTimeoutException, IOException {
+ connection = (HttpURLConnection) url.openConnection();
+ if (connection instanceof HttpsURLConnection) {
+ log.trace("Detected ssl connection");
+ HttpsURLConnection https = (HttpsURLConnection) connection;
+ if (sslSocketFactory != null) {
+ log.debug("Setting custom ssl socket factory for ssl connection");
+ https.setSSLSocketFactory(sslSocketFactory);
+ } else {
+ log.trace("No custom socket factory set");
+ }
+ if (hostnameVerifier != null) {
+ log.debug("Setting custom hostname verifier");
+ https.setHostnameVerifier(hostnameVerifier);
+ }
+ } else {
+ log.trace("No secure connection with: " + url + " class="
+ + connection.getClass());
+ }
+ connection.setDoOutput(true);
+ // Transfer-Encoding: chunked is problematic ...
+ // e.g. https://issues.apache.org/bugzilla/show_bug.cgi?id=37794
+ // ... therefore disabled.
+ // connection.setChunkedStreamingMode(5*1024);
+ if (urlEncoded) {
+ log.debug("Setting DataURL Content-Type to "
+ + HttpUtil.APPLICATION_URL_ENCODED);
+ connection.addRequestProperty(HttpUtil.HTTP_HEADER_CONTENT_TYPE,
+ HttpUtil.APPLICATION_URL_ENCODED);
+ } else {
+ log.debug("Setting DataURL Content-Type to "
+ + HttpUtil.MULTIPART_FOTMDATA_BOUNDARY);
+ connection.addRequestProperty(HttpUtil.HTTP_HEADER_CONTENT_TYPE,
+ HttpUtil.MULTIPART_FOTMDATA + HttpUtil.SEPERATOR[0]
+ + HttpUtil.MULTIPART_FOTMDATA_BOUNDARY + "=" + boundary);
+ }
+ Set<String> headers = requestHttpHeaders.keySet();
+ Iterator<String> headerIt = headers.iterator();
+ while (headerIt.hasNext()) {
+ String name = headerIt.next();
+ connection.setRequestProperty(name, requestHttpHeaders.get(name));
+ }
+ log.trace("Connecting to: " + url);
+ connection.connect();
+ if (connection instanceof HttpsURLConnection) {
+ HttpsURLConnection ssl = (HttpsURLConnection) connection;
+ X509Certificate[] certs = (X509Certificate[]) ssl.getServerCertificates();
+ if ((certs != null) && (certs.length >= 1)) {
+ log.trace("Server certificate: " + certs[0]);
+ serverCertificate = certs[0];
+ }
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.bku.binding.DataUrlConnection#getServerCertificate()
+ */
+ public X509Certificate getServerCertificate() {
+ return serverCertificate;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.bku.binding.DataUrlConnection#setHTTPHeader(java.lang.String, java.lang.String)
+ */
+ public void setHTTPHeader(String name, String value) {
+ if (name != null && value != null) {
+ requestHttpHeaders.put(name, value);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.bku.binding.DataUrlConnection#setHTTPFormParameter(java.lang.String, java.io.InputStream, java.lang.String, java.lang.String, java.lang.String)
+ */
+ public void setHTTPFormParameter(String name, InputStream data,
+ String contentType, String charSet, String transferEncoding) {
+ // if a content type is specified we have to switch to multipart/formdata encoding
+ if (contentType != null && contentType.length() > 0) {
+ urlEncoded = false;
+ }
+ httpFormParameter.add(new HTTPFormParameter(name, data, contentType,
+ charSet, transferEncoding));
+ }
+
+
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.bku.binding.DataUrlConnection#transmit(at.gv.egiz.bku.slcommands.SLResult)
+ */
+ public void transmit(SLResult slResult) throws IOException {
+ log.trace("Sending data");
+ if (urlEncoded) {
+ //
+ // application/x-www-form-urlencoded (legacy, SL < 1.2)
+ //
+
+ OutputStream os = connection.getOutputStream();
+ OutputStreamWriter streamWriter = new OutputStreamWriter(os, HttpUtil.DEFAULT_CHARSET);
+
+ // ResponseType
+ streamWriter.write(FORMPARAM_RESPONSETYPE);
+ streamWriter.write("=");
+ streamWriter.write(URLEncoder.encode(DEFAULT_RESPONSETYPE, "UTF-8"));
+ streamWriter.write("&");
+
+ // XMLResponse / Binary Response
+ if (slResult.getResultType() == SLResultType.XML) {
+ streamWriter.write(DataUrlConnection.FORMPARAM_XMLRESPONSE);
+ } else {
+ streamWriter.write(DataUrlConnection.FORMPARAM_BINARYRESPONSE);
+ }
+ streamWriter.write("=");
+ streamWriter.flush();
+ URLEncodingWriter urlEnc = new URLEncodingWriter(streamWriter);
+ slResult.writeTo(new StreamResult(urlEnc), false);
+ urlEnc.flush();
+
+ // transfer parameters
+ char[] cbuf = new char[512];
+ int len;
+ for (HTTPFormParameter formParameter : httpFormParameter) {
+ streamWriter.write("&");
+ streamWriter.write(URLEncoder.encode(formParameter.getName(), "UTF-8"));
+ streamWriter.write("=");
+ InputStreamReader reader = new InputStreamReader(formParameter.getData(),
+ (formParameter.getCharSet() != null)
+ ? formParameter.getCharSet()
+ : "UTF-8");
+ // Note, using UTF-8 as fallback for decoding is safe.
+ // If the request was x-www-form-urlencoded,
+ // UTF-8 has been used for encoding of non-ASCII characters.
+ // If the request was multipart/form-data and contains any transfer parameters,
+ // the data URL request is going to be multipart/form-data encoded (see below).
+ while ((len = reader.read(cbuf)) != -1) {
+ urlEnc.write(cbuf, 0, len);
+ }
+ urlEnc.flush();
+ }
+ streamWriter.close();
+
+ } else {
+ //
+ // multipart/form-data (conforming to SL 1.2)
+ //
+
+ ArrayList<Part> parts = new ArrayList<Part>();
+
+ // ResponseType
+ StringPart responseType = new StringPart(FORMPARAM_RESPONSETYPE,
+ DEFAULT_RESPONSETYPE, "UTF-8");
+ responseType.setTransferEncoding(null);
+ parts.add(responseType);
+
+ // XMLResponse / Binary Response
+ SLResultPart slResultPart = new SLResultPart(slResult,
+ XML_RESPONSE_ENCODING);
+ if (slResult.getResultType() == SLResultType.XML) {
+ slResultPart.setTransferEncoding(null);
+ slResultPart.setContentType(slResult.getMimeType());
+ slResultPart.setCharSet(XML_RESPONSE_ENCODING);
+ } else {
+ slResultPart.setTransferEncoding(null);
+ slResultPart.setContentType(slResult.getMimeType());
+ }
+ parts.add(slResultPart);
+
+ // transfer parameters
+ for (HTTPFormParameter formParameter : httpFormParameter) {
+ InputStreamPartSource source = new InputStreamPartSource(null,
+ formParameter.getData());
+ FilePart part = new FilePart(formParameter.getName(), source,
+ formParameter.getContentType(), formParameter.getCharSet());
+ part.setTransferEncoding(formParameter.getTransferEncoding());
+ parts.add(part);
+ }
+
+ OutputStream os = connection.getOutputStream();
+ Part.sendParts(os, parts.toArray(new Part[parts.size()]), boundary.getBytes());
+ os.close();
+
+ }
+
+ // MultipartRequestEntity PostMethod
+ InputStream is = null;
+ try {
+ is = connection.getInputStream();
+ } catch (IOException iox) {
+ log.info(iox);
+ }
+ log.trace("Reading response");
+ result = new DataUrlResponse(url.toString(), connection.getResponseCode(),
+ is);
+ Map<String, String> responseHttpHeaders = new HashMap<String, String>();
+ Map<String, List<String>> httpHeaders = connection.getHeaderFields();
+ for (Iterator<String> keyIt = httpHeaders.keySet().iterator(); keyIt
+ .hasNext();) {
+ String key = keyIt.next();
+ StringBuffer value = new StringBuffer();
+ for (String val : httpHeaders.get(key)) {
+ value.append(val);
+ value.append(HttpUtil.SEPERATOR[0]);
+ }
+ String valString = value.substring(0, value.length() - 1);
+ if ((key != null) && (value.length() > 0)) {
+ responseHttpHeaders.put(key, valString);
+ }
+ }
+ result.setResponseHttpHeaders(responseHttpHeaders);
+ }
+
+ @Override
+ public DataUrlResponse getResponse() throws IOException {
+ return result;
+ }
+
+ /**
+ * inits protocol, url, httpHeaders, formParams
+ *
+ * @param url
+ * must not be null
+ */
+ @Override
+ public void init(URL url) {
+
+ for (int i = 0; i < SUPPORTED_PROTOCOLS.length; i++) {
+ if (SUPPORTED_PROTOCOLS[i].toString().equalsIgnoreCase(url.getProtocol())) {
+ protocol = SUPPORTED_PROTOCOLS[i];
+ break;
+ }
+ }
+ if (protocol == null) {
+ throw new SLRuntimeException("Protocol " + url.getProtocol()
+ + " not supported for data url");
+ }
+ this.url = url;
+ boundary = "--" + IdFactory.getInstance().createId().toString();
+ requestHttpHeaders = new HashMap<String, String>();
+
+ if (config != null) {
+ String version = config.getProperty(Configurator.SIGNATURE_LAYOUT);
+ if ((version != null) && (!"".equals(version.trim()))) {
+ log.debug("setting SignatureLayout header to " + version);
+ requestHttpHeaders.put(Configurator.SIGNATURE_LAYOUT, version);
+ } else {
+ log.debug("do not set SignatureLayout header");
+ }
+ String userAgent = config.getProperty(Configurator.USERAGENT_CONFIG_P, Configurator.USERAGENT_DEFAULT);
+ requestHttpHeaders.put(HttpUtil.HTTP_HEADER_USER_AGENT, userAgent);
+ } else {
+ requestHttpHeaders
+ .put(HttpUtil.HTTP_HEADER_USER_AGENT, Configurator.USERAGENT_DEFAULT);
+
+ }
+
+ httpFormParameter = new ArrayList<HTTPFormParameter>();
+
+ }
+
+ @Override
+ public DataUrlConnectionSPI newInstance() {
+ DataUrlConnectionSPI uc = new DataUrlConnectionImpl();
+ uc.setConfiguration(config);
+ uc.setSSLSocketFactory(sslSocketFactory);
+ uc.setHostnameVerifier(hostnameVerifier);
+ return uc;
+ }
+
+ @Override
+ public URL getUrl() {
+ return url;
+ }
+
+ @Override
+ public void setConfiguration(Properties config) {
+ this.config = config;
+ }
+
+ @Override
+ public void setSSLSocketFactory(SSLSocketFactory socketFactory) {
+ this.sslSocketFactory = socketFactory;
+ }
+
+ @Override
+ public void setHostnameVerifier(HostnameVerifier hostnameVerifier) {
+ this.hostnameVerifier = hostnameVerifier;
+ }
+
+ public class HTTPFormParameter {
+
+ private String name;
+
+ private InputStream data;
+
+ private String contentType;
+
+ private String charSet;
+
+ private String transferEncoding;
+
+ /**
+ * @param name
+ * @param data
+ * @param contentType
+ * @param charSet
+ * @param transferEncoding
+ */
+ public HTTPFormParameter(String name, InputStream data, String contentType,
+ String charSet, String transferEncoding) {
+ super();
+ this.name = name;
+ this.data = data;
+ this.contentType = contentType;
+ this.charSet = charSet;
+ this.transferEncoding = transferEncoding;
+ }
+
+ /**
+ * @return the name
+ */
+ public String getName() {
+ return name;
+ }
+
+ /**
+ * @param name the name to set
+ */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ /**
+ * @return the data
+ */
+ public InputStream getData() {
+ return data;
+ }
+
+ /**
+ * @param data the data to set
+ */
+ public void setData(InputStream data) {
+ this.data = data;
+ }
+
+ /**
+ * @return the contentType
+ */
+ public String getContentType() {
+ return contentType;
+ }
+
+ /**
+ * @param contentType the contentType to set
+ */
+ public void setContentType(String contentType) {
+ this.contentType = contentType;
+ }
+
+ /**
+ * @return the charSet
+ */
+ public String getCharSet() {
+ return charSet;
+ }
+
+ /**
+ * @param charSet the charSet to set
+ */
+ public void setCharSet(String charSet) {
+ this.charSet = charSet;
+ }
+
+ /**
+ * @return the transferEncoding
+ */
+ public String getTransferEncoding() {
+ return transferEncoding;
+ }
+
+ /**
+ * @param transferEncoding the transferEncoding to set
+ */
+ public void setTransferEncoding(String transferEncoding) {
+ this.transferEncoding = transferEncoding;
+ }
+
+
+
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionSPI.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionSPI.java
new file mode 100644
index 00000000..f838b919
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlConnectionSPI.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.binding;
+
+import java.net.URL;
+import java.util.Properties;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLSocketFactory;
+
+/**
+ * Prototype of a DataurlconnectionSPI
+ * @author wbauer
+ *
+ */
+public interface DataUrlConnectionSPI extends DataUrlConnection {
+
+ /**
+ * Returns a new instance of this class to handle a dataurl.
+ * Called by the factory each time the openConnection method is called.
+ * @return
+ */
+ public DataUrlConnectionSPI newInstance();
+
+ /**
+ * Initializes the DataUrlConnection
+ * @param url
+ */
+ public void init(URL url);
+
+ /**
+ * Sets configuration parameters for this connection
+ * @param config
+ */
+ public void setConfiguration(Properties config);
+
+ /**
+ * Sets the socketfactory to be used for ssl connections.
+ * @param socketFactory if null the socket factory will not be set explicitly
+ */
+ public void setSSLSocketFactory(SSLSocketFactory socketFactory);
+
+ /**
+ * Sets the hostname verifier to be used,
+ * @param hostnameVerifier if null the default hostname verifier will be used
+ */
+ public void setHostnameVerifier(HostnameVerifier hostnameVerifier);
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlResponse.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlResponse.java
new file mode 100644
index 00000000..b75cb0f3
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/DataUrlResponse.java
@@ -0,0 +1,98 @@
+/*
+* 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.binding;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PushbackInputStream;
+import java.util.Iterator;
+import java.util.Map;
+
+import at.gv.egiz.bku.utils.urldereferencer.StreamData;
+
+/**
+ * The response of a dataurl server.
+ * Additionally holds return code and response headers.
+ */
+public class DataUrlResponse extends StreamData {
+
+ public final static String OK = "<ok/>";
+
+ protected Map<String, String> responseHttpHeaders;
+
+ protected int responseCode = -1;
+
+ public DataUrlResponse(String url, int responseCode, InputStream stream) {
+ super(url, null, new PushbackInputStream(stream, 10));
+ this.responseCode = responseCode;
+ }
+
+ public String getContentType() {
+ if (contentType != null) {
+ return contentType;
+ }
+ if (responseHttpHeaders == null) {
+ return null;
+ }
+ for (Iterator<String> keyIt = responseHttpHeaders.keySet().iterator(); keyIt
+ .hasNext();) {
+ String key = keyIt.next();
+ if (HttpUtil.HTTP_HEADER_CONTENT_TYPE.equalsIgnoreCase(key)) {
+ contentType = responseHttpHeaders.get(key);
+ return contentType;
+ }
+ }
+ return contentType;
+ }
+
+ public void setResponseHttpHeaders(Map<String, String> responseHttpHeaders) {
+ this.responseHttpHeaders = responseHttpHeaders;
+ }
+
+ public Map<String, String> getResponseHeaders() {
+ return responseHttpHeaders;
+ }
+
+ public int getResponseCode() {
+ return responseCode;
+ }
+
+ /**
+ * Checks if the http response equals "<ok/>"
+ *
+ * @throws IOException
+ */
+ public boolean isHttpResponseXMLOK() throws IOException {
+ String charset = HttpUtil.getCharset(contentType, true);
+ byte[] buffer = new byte[10];
+ int i = 0;
+ int read = 0;
+ while ((i < 10) && (read != -1)) {
+ read = inputStream.read(buffer, i, 10 - i);
+ if (read != -1) {
+ i += read;
+ }
+ }
+ PushbackInputStream pbis = (PushbackInputStream) inputStream;
+ pbis.unread(buffer, 0, i);
+ if (i < 5) {
+ return false;
+ }
+ String ok = new String(buffer, 0, i, charset);
+ return (OK.equals(ok));
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/ExpiryRemover.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/ExpiryRemover.java
new file mode 100644
index 00000000..d17a27c2
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/ExpiryRemover.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.binding;
+
+import java.util.Iterator;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * This class can be used to check the BindingProcessorManager for expired entries and remove them.
+ * Should be run periodically.
+ *
+ */
+public class ExpiryRemover implements RemovalStrategy {
+
+ private static Log log = LogFactory.getLog(ExpiryRemover.class);
+
+ protected BindingProcessorManager bindingProcessorManager;
+ // keep max 5 min.
+ protected long maxAcceptedAge = 1000 * 60 * 5;
+
+ @Override
+ public void execute() {
+ log.debug("Triggered Expiry Remover");
+ if (bindingProcessorManager == null) {
+ log.warn("Bindingprocessor not set, skipping removal");
+ return;
+ }
+ Set<Id> managedIds = bindingProcessorManager.getManagedIds();
+ for (Iterator<Id> it = managedIds.iterator(); it.hasNext();) {
+ Id bindId = it.next();
+ BindingProcessor bp = bindingProcessorManager.getBindingProcessor(bindId);
+ if (bp != null) {
+ if (bp.getLastAccessTime().getTime() < (System.currentTimeMillis() - maxAcceptedAge)) {
+ log.debug("Removing binding processor: " + bp.getId());
+ bindingProcessorManager.removeBindingProcessor(bp.getId());
+ }
+ }
+ }
+ }
+
+ public void setMaxAcceptedAge(long maxAcceptedAge) {
+ this.maxAcceptedAge = maxAcceptedAge;
+ }
+
+ @Override
+ public void setBindingProcessorManager(BindingProcessorManager bp) {
+ bindingProcessorManager = bp;
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FixedFormParameters.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FixedFormParameters.java
new file mode 100644
index 00000000..cce3d720
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FixedFormParameters.java
@@ -0,0 +1,28 @@
+/*
+* 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.binding;
+
+/**
+ * Form parameters with special meaning as defined in the CCE's http binding.
+ *
+ */
+public interface FixedFormParameters {
+ String XMLREQUEST = "XMLRequest";
+ String REDIRECTURL = "RedirectURL";
+ String DATAURL = "DataURL";
+ String STYLESHEETURL = "StylesheetURL";
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameter.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameter.java
new file mode 100644
index 00000000..93339451
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameter.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.binding;
+
+import java.io.InputStream;
+import java.util.Iterator;
+
+/**
+ * Interface to access form control contents from the http request.
+ * It's designed to be used for URL encoded and multipart-formdata requests.
+ * @author wbauer
+ *
+ */
+public interface FormParameter {
+
+ String getFormParameterName();
+
+ InputStream getFormParameterValue();
+
+ String getFormParameterContentType();
+
+ Iterator<String> getHeaderNames();
+
+ String getHeaderValue(String headerName);
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameterImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameterImpl.java
new file mode 100644
index 00000000..45aa9be6
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameterImpl.java
@@ -0,0 +1,93 @@
+/*
+* 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.binding;
+
+import java.io.InputStream;
+import java.util.Collections;
+import java.util.Iterator;
+
+import org.apache.commons.fileupload.FileItemHeaders;
+
+/**
+ * Simple wrapper to read data while consuming an stream within the http
+ * processor.
+ *
+ *
+ */
+public class FormParameterImpl implements FormParameter {
+
+ protected InputStream dataStream;
+ protected String contentType;
+ protected String formName;
+ protected FileItemHeaders headers;
+
+ public FormParameterImpl(String contentType, String formName, InputStream is,
+ FileItemHeaders header) {
+ this.contentType = contentType;
+ this.formName = formName;
+ this.dataStream = is;
+ this.headers = header;
+ }
+
+ @Override
+ public String getFormParameterContentType() {
+ return contentType;
+ }
+
+ @Override
+ public String getFormParameterName() {
+ return formName;
+ }
+
+ @Override
+ public InputStream getFormParameterValue() {
+ return dataStream;
+ }
+
+ @Override
+ public String getHeaderValue(String headerName) {
+ if (headers == null) {
+ return null;
+ }
+ return headers.getHeader(headerName);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Iterator<String> getHeaderNames() {
+ if (headers == null) {
+ return Collections.EMPTY_LIST.iterator();
+ }
+ return headers.getHeaderNames();
+ }
+
+ public FileItemHeaders getHeaders() {
+ return headers;
+ }
+
+ public boolean equals(Object other) {
+ if (other instanceof FormParameter) {
+ FormParameter fp = (FormParameter) other;
+ return fp.getFormParameterName().equals(getFormParameterName());
+ }
+ return false;
+ }
+
+ public int hashCode() {
+ return getFormParameterName().hashCode();
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameterStore.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameterStore.java
new file mode 100644
index 00000000..8b6cd4b2
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/FormParameterStore.java
@@ -0,0 +1,146 @@
+/*
+* 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.binding;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Collections;
+import java.util.Iterator;
+
+import org.apache.commons.fileupload.FileItemHeaders;
+import org.apache.commons.fileupload.util.FileItemHeadersImpl;
+
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+import at.gv.egiz.bku.utils.StreamUtil;
+
+/**
+ * Simple store for form parameters based on a byte[]
+ *
+ * @author wbauer
+ *
+ */
+public class FormParameterStore implements FormParameter {
+
+ private byte[] dataBuffer;
+ private String contentType;
+ private String parameterName;
+ private boolean initialized = false;
+ protected FileItemHeaders headers;
+
+ /**
+ * Make sure to call init after creating a new instance.
+ */
+ public FormParameterStore() {
+ }
+
+ public void init(InputStream dataSource, String paramName,
+ String contentType, FileItemHeaders header) throws IOException {
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ StreamUtil.copyStream(dataSource, os);
+ this.dataBuffer = os.toByteArray();
+ this.parameterName = paramName;
+ this.contentType = contentType;
+ initialized = true;
+ this.headers = header;
+ }
+
+ public void init(byte[] dataSource, String paramName,
+ String contentType, FileItemHeaders header) throws IOException {
+ this.dataBuffer = dataSource;
+ this.parameterName = paramName;
+ this.contentType = contentType;
+ initialized = true;
+ this.headers = header;
+ }
+
+ public void init(FormParameter fp) throws IOException {
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ StreamUtil.copyStream(fp.getFormParameterValue(), os);
+ this.dataBuffer = os.toByteArray();
+ this.parameterName = fp.getFormParameterName();
+ this.contentType = fp.getFormParameterContentType();
+ if (fp instanceof FormParameterImpl) {
+ headers = ((FormParameterImpl) fp).getHeaders();
+ } else {
+ FileItemHeadersImpl headersImpl = new FileItemHeadersImpl();
+ for (Iterator<String> i = fp.getHeaderNames(); i.hasNext();) {
+ String headerName = i.next();
+ headersImpl.addHeader(headerName, fp.getHeaderValue(headerName));
+ }
+ }
+ initialized = true;
+ }
+
+ protected void ensureInitialized() {
+ if (!initialized) {
+ throw new SLRuntimeException("FormParameterStore not initialized");
+ }
+ }
+
+ /**
+ * Reads all data from the stream and stores it internally. The stream will
+ * not be closed.
+ *
+ * @param datSource
+ * @param formName
+ * @param contentType
+ */
+ @Override
+ public String getFormParameterContentType() {
+ ensureInitialized();
+ return contentType;
+ }
+
+ @Override
+ public String getFormParameterName() {
+ ensureInitialized();
+ return parameterName;
+ }
+
+ /**
+ * May be called more than once.
+ */
+ @Override
+ public InputStream getFormParameterValue() {
+ return new ByteArrayInputStream(dataBuffer);
+ }
+
+ @Override
+ public String getHeaderValue(String name) {
+ if (headers == null) {
+ return null;
+ }
+ return headers.getHeader(name);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Iterator<String> getHeaderNames() {
+ if (headers == null) {
+ return Collections.EMPTY_LIST.iterator();
+ }
+ return headers.getHeaderNames();
+ }
+
+ public boolean isEmpty() {
+ ensureInitialized();
+ return dataBuffer.length == 0;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/HTTPBindingProcessor.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/HTTPBindingProcessor.java
new file mode 100644
index 00000000..e39addb5
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/HTTPBindingProcessor.java
@@ -0,0 +1,844 @@
+/*
+ * 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.binding;
+
+import iaik.utils.Base64InputStream;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.Writer;
+import java.net.URL;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.net.ssl.SSLHandshakeException;
+import javax.xml.transform.Templates;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.URIResolver;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.slcommands.ErrorResult;
+import at.gv.egiz.bku.slcommands.SLCommand;
+import at.gv.egiz.bku.slcommands.SLCommandContext;
+import at.gv.egiz.bku.slcommands.SLCommandFactory;
+import at.gv.egiz.bku.slcommands.SLCommandInvoker;
+import at.gv.egiz.bku.slcommands.SLResult;
+import at.gv.egiz.bku.slcommands.SLSourceContext;
+import at.gv.egiz.bku.slcommands.SLTargetContext;
+import at.gv.egiz.bku.slcommands.impl.ErrorResultImpl;
+import at.gv.egiz.bku.slexceptions.SLBindingException;
+import at.gv.egiz.bku.slexceptions.SLException;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+import at.gv.egiz.bku.utils.StreamUtil;
+import at.gv.egiz.bku.utils.binding.Protocol;
+import at.gv.egiz.bku.utils.urldereferencer.FormDataURLSupplier;
+import at.gv.egiz.bku.utils.urldereferencer.SimpleFormDataContextImpl;
+import at.gv.egiz.bku.utils.urldereferencer.StreamData;
+import at.gv.egiz.bku.utils.urldereferencer.URIResolverAdapter;
+import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer;
+import at.gv.egiz.bku.utils.urldereferencer.URLDereferencerContext;
+import at.gv.egiz.stal.QuitRequest;
+import at.gv.egiz.stal.STALRequest;
+
+/**
+ * Class performing the HTTP binding as defined by the CCE specification.
+ * Currently a huge monolithic class.
+ *
+ * @TODO refactor
+ */
+@SuppressWarnings("unchecked")
+public class HTTPBindingProcessor extends AbstractBindingProcessor implements
+ FormDataURLSupplier {
+
+ private static Log log = LogFactory.getLog(HTTPBindingProcessor.class);
+
+ private static enum State {
+ INIT, PROCESS, DATAURL, TRANSFORM, FINISHED
+ };
+
+ public final static Collection<String> XML_REQ_TRANSFER_ENCODING = Arrays
+ .asList(new String[] { "binary" });
+
+ protected static String XML_MIME_TYPE = "text/xml";
+ protected static String BINARY_MIME_TYPE = "application/octet-stream";
+
+ /**
+ * If null everything is ok and the result is taken from the command invoker.
+ */
+ protected SLException bindingProcessorError;
+ protected SLCommandInvoker commandInvoker;
+ protected DataUrlResponse dataUrlResponse;
+ protected Map<String, String> headerMap = Collections.EMPTY_MAP;
+ protected SLCommand slCommand;
+ protected Map<String, FormParameter> formParameterMap = new HashMap<String, FormParameter>();
+ protected SLSourceContext srcContex = new SLSourceContext();
+ protected SLTargetContext targetContext = new SLTargetContext();
+ protected URL srcUrl;
+ protected State currentState = State.INIT;
+ protected Templates templates = null;
+ protected String resultContentType = null;
+ protected SLResult slResult = null;
+ protected int responseCode = 200;
+ protected Map<String, String> responseHeaders = Collections.EMPTY_MAP;
+ protected Locale locale = Locale.getDefault();
+ protected boolean finished = false;
+
+ /**
+ *
+ * @param id
+ * may be null. In this case a new session id will be created.
+ * @param cmdInvoker
+ * must not be null;
+ */
+ public HTTPBindingProcessor(String id, SLCommandInvoker cmdInvoker, URL source) {
+ super(id);
+ this.srcUrl = source;
+ Protocol protocol = Protocol.fromString(source.getProtocol());
+ if ((protocol != Protocol.HTTP) && (protocol != Protocol.HTTPS)) {
+ throw new SLRuntimeException("Protocol not supported: " + protocol);
+ }
+ if (cmdInvoker == null) {
+ throw new NullPointerException("Commandinvoker cannot be set to null");
+ }
+ commandInvoker = cmdInvoker;
+ srcContex.setSourceUrl(source);
+ srcContex.setSourceIsDataURL(false);
+ }
+
+ //----------------------------------------------------------------------------
+ // ----------- BEGIN CONVENIENCE METHODS -----------
+
+ protected void sendSTALQuit() {
+ log.info("Sending QUIT command to STAL");
+ List<STALRequest> quit = new ArrayList<STALRequest>(1);
+ quit.add(new QuitRequest());
+ getSTAL().handleRequest(quit);
+ }
+
+ protected String getFormParameterAsString(String formParameterName) {
+ FormParameter fp = formParameterMap.get(formParameterName);
+ return getFormParameterAsString(fp);
+ }
+
+ protected String getFormParameterAsString(FormParameter fp) {
+ if (fp == null) {
+ return null;
+ }
+ try {
+ return StreamUtil.asString(fp.getFormParameterValue(), HttpUtil
+ .getCharset(fp.getFormParameterContentType(), true));
+ } catch (IOException e) {
+ return null;
+ }
+ }
+
+ protected String getDataUrl() {
+ return getFormParameterAsString(FixedFormParameters.DATAURL);
+ }
+
+ protected String getStyleSheetUrl() {
+ return getFormParameterAsString(FixedFormParameters.STYLESHEETURL);
+ }
+
+ protected List<FormParameter> getFormParameters(String parameterNamePostfix) {
+ List<FormParameter> resultList = new ArrayList<FormParameter>();
+ for (Iterator<String> fpi = formParameterMap.keySet().iterator(); fpi
+ .hasNext();) {
+ String paramName = fpi.next();
+ if (paramName.endsWith(parameterNamePostfix)) {
+ resultList.add(formParameterMap.get(paramName));
+ }
+ }
+ return resultList;
+ }
+
+ protected List<FormParameter> getTransferHeaders() {
+ return getFormParameters("__");
+ }
+
+ protected List<FormParameter> getTransferForms() {
+ List<FormParameter> resultList = new ArrayList<FormParameter>();
+ for (Iterator<String> fpi = formParameterMap.keySet().iterator(); fpi
+ .hasNext();) {
+ String paramName = fpi.next();
+ if ((paramName.endsWith("_")) && (!paramName.endsWith("__"))) {
+ resultList.add(formParameterMap.get(paramName));
+ }
+ }
+ return resultList;
+ }
+
+ protected void closeDataUrlConnection() {
+ log.debug("Closing data url input stream");
+ if (dataUrlResponse == null) {
+ return;
+ }
+ InputStream is = dataUrlResponse.getStream();
+ if (is != null) {
+ try {
+ is.close();
+ } catch (IOException e) {
+ log.info("Error closing input stream to dataurl server:" + e);
+ }
+ }
+ }
+
+ //----------------------------------------------------------------------------
+ // ----------- END CONVENIENCE METHODS -----------
+
+ //----------------------------------------------------------------------------
+ // -- BEGIN Methods that handle the http binding activities as defined in the
+ // activity diagram --
+
+ protected void init() {
+ log.info("Starting Bindingprocessor in Thread: "
+ + Thread.currentThread().getId());
+ if (bindingProcessorError != null) {
+ log.debug("Detected binding processor error, sending quit command");
+ // sendSTALQuit();
+ currentState = State.FINISHED;
+ } else if (slCommand == null) {
+ log.error("SLCommand not set (consumeRequest not called ??)");
+ bindingProcessorError = new SLException(2000);
+ // sendSTALQuit();
+ currentState = State.FINISHED;
+ } else {
+ currentState = State.PROCESS;
+ }
+ }
+
+ protected void processRequest() {
+ log.debug("Entered State: " + State.PROCESS);
+ log.debug("Processing command: " + slCommand);
+ commandInvoker.setCommand(slCommand);
+ responseCode = 200;
+ responseHeaders = Collections.EMPTY_MAP;
+ dataUrlResponse = null;
+ try {
+ commandInvoker.invoke(srcContex);
+ } catch (SLException e) {
+ log.info("Caught exception: " + e);
+ bindingProcessorError = e;
+ currentState = State.TRANSFORM;
+ }
+ if (getDataUrl() != null) {
+ log.debug("Data Url set to: " + getDataUrl());
+ currentState = State.DATAURL;
+ } else {
+ log.debug("No data url set");
+ currentState = State.TRANSFORM;
+ }
+ }
+
+ protected void handleDataUrl() {
+ log.debug("Entered State: " + State.DATAURL);
+ try {
+ DataUrl dataUrl = new DataUrl(getDataUrl());
+ DataUrlConnection conn = dataUrl.openConnection();
+
+ // set transfer headers
+ for (FormParameter fp : getTransferHeaders()) {
+ String paramString = getFormParameterAsString(fp);
+ if (paramString == null) {
+ log.error("Got empty transfer header, ignoring this");
+ } else {
+ String[] keyVal = paramString.split(":", 2);
+ String key = keyVal[0];
+ String val = null;
+ if (keyVal.length == 2) {
+ val = keyVal[1];
+ val = val.trim();
+ } else {
+ log.error("Invalid transfer header encoding: "+paramString);
+ throw new SLBindingException(2005);
+ }
+ log.debug("Setting header " + key + " to value " + val);
+ conn.setHTTPHeader(key, val);
+ }
+ }
+
+ // set transfer form parameters
+ for (FormParameter fp : getTransferForms()) {
+ String contentTransferEncoding = null;
+ String contentType = fp.getFormParameterContentType();
+ String charSet = HttpUtil.getCharset(contentType, false);
+ if (charSet != null) {
+ contentType = contentType.substring(0, contentType
+ .lastIndexOf(HttpUtil.SEPERATOR[0]));
+ }
+ for (Iterator<String> header = fp.getHeaderNames(); header.hasNext();) {
+ if (HttpUtil.CONTENT_TRANSFER_ENCODING
+ .equalsIgnoreCase(header.next())) {
+ contentTransferEncoding = getFormParameterAsString(fp);
+ }
+ }
+ log.debug("Setting form: " + fp.getFormParameterName()
+ + " contentType: " + contentType + " charset: " + charSet
+ + " contentTransferEncoding: " + contentTransferEncoding);
+ conn.setHTTPFormParameter(fp.getFormParameterName(), fp
+ .getFormParameterValue(), contentType, charSet,
+ contentTransferEncoding);
+ }
+
+ // connect
+ conn.connect();
+ // fetch and set SL result
+ targetContext.setTargetIsDataURL(true);
+ targetContext.setTargetCertificate(conn.getServerCertificate());
+ targetContext.setTargetUrl(conn.getUrl());
+ SLResult result = commandInvoker.getResult(targetContext);
+
+ // transfer result
+ conn.transmit(result);
+
+ // process Dataurl response
+ dataUrlResponse = conn.getResponse();
+ log.debug("Received data url response code: "
+ + dataUrlResponse.getResponseCode());
+
+ switch (dataUrlResponse.getResponseCode()) {
+ case 200:
+ String contentType = dataUrlResponse.getContentType();
+ log.debug("Got dataurl response content type: " + contentType);
+ if (contentType != null) {
+ if ((contentType.startsWith(HttpUtil.APPLICATION_URL_ENCODED))
+ || (contentType.startsWith(HttpUtil.MULTIPART_FOTMDATA))) {
+ log.debug("Detected SL Request in dataurl response");
+ // process headers and request
+ setHTTPHeaders(dataUrlResponse.getResponseHeaders());
+ consumeRequestStream(dataUrlResponse.getStream());
+ //TODO check for bindingProcessorError
+ closeDataUrlConnection();
+ srcContex.setSourceCertificate(conn.getServerCertificate());
+ srcContex.setSourceIsDataURL(true);
+ srcContex.setSourceUrl(conn.getUrl());
+ currentState = State.PROCESS;
+ } else if (((contentType.startsWith(HttpUtil.TXT_HTML))
+ || (contentType.startsWith(HttpUtil.TXT_PLAIN))
+ || (contentType.startsWith(HttpUtil.TXT_XML)))
+ && (dataUrlResponse.isHttpResponseXMLOK())) {
+ log.info("Dataurl response matches <ok/> with content type: "
+ + contentType);
+ currentState = State.TRANSFORM;
+
+ } else if ((contentType.startsWith(HttpUtil.TXT_XML))
+ && (!dataUrlResponse.isHttpResponseXMLOK())) {
+ log
+ .debug("Detected text/xml dataurl response with content != <ok/>");
+ headerMap.put(HttpUtil.HTTP_HEADER_CONTENT_TYPE, contentType);
+ assignXMLRequest(dataUrlResponse.getStream(), HttpUtil.getCharset(
+ contentType, true));
+ closeDataUrlConnection();
+ srcContex.setSourceCertificate(conn.getServerCertificate());
+ srcContex.setSourceIsDataURL(true);
+ srcContex.setSourceUrl(conn.getUrl());
+ currentState = State.PROCESS;
+ // just to be complete, actually not used
+ srcContex.setSourceHTTPReferer(dataUrlResponse.getResponseHeaders()
+ .get(HttpUtil.HTTP_HEADER_REFERER));
+ } else {
+ resultContentType = contentType;
+ responseHeaders = dataUrlResponse.getResponseHeaders();
+ responseCode = dataUrlResponse.getResponseCode();
+ currentState = State.FINISHED;
+ }
+ } else {
+ log.debug("Content type not set in dataurl response");
+ closeDataUrlConnection();
+ throw new SLBindingException(2007);
+ }
+
+ break;
+ case 307:
+ contentType = dataUrlResponse.getContentType();
+ if ((contentType != null) && (contentType.startsWith(HttpUtil.TXT_XML))) {
+ log.debug("Received dataurl response code 307 with XML content");
+ String location = dataUrlResponse.getResponseHeaders().get(
+ HttpUtil.HTTP_HEADER_LOCATION);
+ if (location == null) {
+ log
+ .error("Did not get a location header for a 307 data url response");
+ throw new SLBindingException(2003);
+ }
+ // consumeRequestStream(dataUrlResponse.getStream());
+ FormParameterStore fp = new FormParameterStore();
+ fp.init(location.getBytes(HttpUtil.DEFAULT_CHARSET),
+ FixedFormParameters.DATAURL, null, null);
+ formParameterMap.put(FixedFormParameters.DATAURL, fp);
+ headerMap.put(HttpUtil.HTTP_HEADER_CONTENT_TYPE, contentType);
+ assignXMLRequest(dataUrlResponse.getStream(), HttpUtil.getCharset(
+ dataUrlResponse.getContentType(), true));
+ closeDataUrlConnection();
+ srcContex.setSourceCertificate(conn.getServerCertificate());
+ srcContex.setSourceIsDataURL(true);
+ srcContex.setSourceUrl(conn.getUrl());
+ currentState = State.PROCESS;
+ // just to be complete, actually not used
+ srcContex.setSourceHTTPReferer(dataUrlResponse.getResponseHeaders()
+ .get(HttpUtil.HTTP_HEADER_REFERER));
+
+ } else {
+ log.debug("Received dataurl response code 307 non XML content: "
+ + dataUrlResponse.getContentType());
+ resultContentType = dataUrlResponse.getContentType();
+ currentState = State.FINISHED;
+ }
+ responseHeaders = dataUrlResponse.getResponseHeaders();
+ responseCode = dataUrlResponse.getResponseCode();
+ break;
+
+ case 301:
+ case 302:
+ case 303:
+ responseHeaders = dataUrlResponse.getResponseHeaders();
+ responseCode = dataUrlResponse.getResponseCode();
+ resultContentType = dataUrlResponse.getContentType();
+ currentState = State.FINISHED;
+ break;
+
+ default:
+ // issue error
+ log.info("Unexpected response code from dataurl server: "
+ + dataUrlResponse.getResponseCode());
+ throw new SLBindingException(2007);
+ }
+
+ } catch (SLException slx) {
+ bindingProcessorError = slx;
+ log.error("Error during dataurl communication");
+ resultContentType = HttpUtil.TXT_XML;
+ currentState = State.TRANSFORM;
+ } catch (SSLHandshakeException hx) {
+ bindingProcessorError = new SLException(2010);
+ log.info("Error during dataurl communication", hx);
+ resultContentType = HttpUtil.TXT_XML;
+ currentState = State.TRANSFORM;
+ } catch (IOException e) {
+ bindingProcessorError = new SLBindingException(2001);
+ log.error("Error while data url handling", e);
+ resultContentType = HttpUtil.TXT_XML;
+ currentState = State.TRANSFORM;
+ return;
+ }
+ }
+
+ protected void transformResult() {
+ log.debug("Entered State: " + State.TRANSFORM);
+ if (bindingProcessorError != null) {
+ resultContentType = HttpUtil.TXT_XML;
+ } else if (dataUrlResponse != null) {
+ resultContentType = dataUrlResponse.getContentType();
+ } else {
+ targetContext.setTargetIsDataURL(false);
+ targetContext.setTargetUrl(srcUrl);
+ try {
+ slResult = commandInvoker.getResult(targetContext);
+ resultContentType = slResult.getMimeType();
+ log
+ .debug("Successfully got SLResult from commandinvoker, setting mimetype to: "
+ + resultContentType);
+ } catch (SLException e) {
+ log.info("Cannot get result from invoker:", e);
+ bindingProcessorError = new SLException(6002);
+ resultContentType = HttpUtil.TXT_XML;
+ }
+ }
+ templates = getTemplates(getStyleSheetUrl());
+ if (templates != null) {
+ log.debug("Output transformation required");
+ resultContentType = templates.getOutputProperties().getProperty("media-type");
+ log.debug("Got media type from stylesheet: " + resultContentType);
+ if (resultContentType == null) {
+ log.debug("Setting to default text/xml result conent type");
+ resultContentType = "text/xml";
+ }
+ log.debug("Deferring sytylesheet processing");
+ }
+ currentState = State.FINISHED;
+ }
+
+ protected void finished() {
+ log.debug("Entered State: " + State.FINISHED);
+ if (bindingProcessorError != null) {
+ log.debug("Binding processor error, sending quit command");
+ resultContentType = HttpUtil.TXT_XML;
+ }
+ sendSTALQuit();
+ log.info("Terminating Bindingprocessor; Thread: "
+ + Thread.currentThread().getId());
+ finished = true;
+ }
+
+ // -- END Methods that handle the http binding activities as defined in the
+ // activity diagram --
+ //----------------------------------------------------------------------------
+
+ /**
+ * Sets the headers of the SL Request. IMPORTANT: make sure to set all headers
+ * before invoking {@link #consumeRequestStream(InputStream)}
+ *
+ * @param aHeaderMap
+ * if null all header will be cleared.
+ */
+ public void setHTTPHeaders(Map<String, String> aHeaderMap) {
+ headerMap = new HashMap<String, String>();
+ // ensure lowercase keys
+ if (aHeaderMap != null) {
+ for (String s : aHeaderMap.keySet()) {
+ if (s != null) {
+ headerMap.put(s.toLowerCase(), aHeaderMap.get(s));
+ if (s.equalsIgnoreCase(HttpUtil.HTTP_HEADER_REFERER)) {
+ String referer = aHeaderMap.get(s);
+ log.debug("Got referer header: " + referer);
+ srcContex.setSourceHTTPReferer(referer);
+ }
+ }
+ }
+ }
+ }
+
+ public void setSourceCertificate(X509Certificate aCert) {
+ srcContex.setSourceCertificate(aCert);
+ }
+
+ /**
+ * The HTTPBindingProcessor does not handle redirect URLs. It only provides
+ * the parameter.
+ *
+ * @return null if redirect url is not set.
+ */
+ public String getRedirectURL() {
+ return getFormParameterAsString(FixedFormParameters.REDIRECTURL);
+ }
+
+ public String getFormDataContentType(String aParameterName) {
+ FormParameter fp = formParameterMap.get(aParameterName);
+ if (fp != null) {
+ return fp.getFormParameterContentType();
+ }
+ return null;
+ }
+
+ public InputStream getFormData(String aParameterName) {
+ FormParameter fp = formParameterMap.get(aParameterName);
+ if (fp != null) {
+ final String enc = fp.getHeaderValue("Content-Transfer-Encoding");
+ if (enc == null || "binary".equals(enc)) {
+ return fp.getFormParameterValue();
+ } else if ("base64".equals(enc)) {
+ return new Base64InputStream(fp.getFormParameterValue());
+ } else {
+ return new InputStream() {
+ @Override
+ public int read() throws IOException {
+ throw new IOException("Content-Transfer-Encoding : " + enc
+ + " is not supported.");
+ }
+ };
+ }
+ }
+ return null;
+ }
+
+ protected void assignXMLRequest(InputStream is, String charset)
+ throws IOException, SLException {
+ Reader r = new InputStreamReader(is, charset);
+ StreamSource source = new StreamSource(r);
+ SLCommandContext commandCtx = new SLCommandContext();
+ commandCtx.setSTAL(getSTAL());
+ commandCtx.setURLDereferencerContext(new SimpleFormDataContextImpl(this));
+ commandCtx.setLocale(locale);
+ slCommand = SLCommandFactory.getInstance().createSLCommand(source,
+ commandCtx);
+ log.debug("Created new command: " + slCommand);
+ }
+
+ @Override
+ public void run() {
+ boolean done = false;
+ int hopcounter = 0;
+ if (bindingProcessorError != null) {
+ currentState = State.FINISHED;
+ }
+ try {
+ while (!done) {
+ try {
+ switch (currentState) {
+ case INIT:
+ init();
+ break;
+ case PROCESS:
+ processRequest();
+ break;
+ case DATAURL:
+ handleDataUrl();
+ if (++hopcounter > config.getMaxDataUrlHops()) {
+ log.error("Maximum number of dataurl hops reached");
+ bindingProcessorError = new SLBindingException(2000);
+ currentState = State.FINISHED;
+ }
+ break;
+ case TRANSFORM:
+ transformResult();
+ break;
+ case FINISHED:
+ done = true;
+ finished();
+ break;
+ }
+ } catch (RuntimeException rte) {
+ throw rte;
+ } catch (Exception t) {
+ log.error("Caught unexpected exception", t);
+ responseCode = 200;
+ resultContentType = HttpUtil.TXT_XML;
+ responseHeaders = Collections.EMPTY_MAP;
+ bindingProcessorError = new SLException(2000);
+ currentState = State.FINISHED;
+ }
+ }
+ } catch (Throwable t) {
+ log.error("Caught unexpected exception", t);
+ responseCode = 200;
+ resultContentType = HttpUtil.TXT_XML;
+ responseHeaders = Collections.EMPTY_MAP;
+ bindingProcessorError = new SLException(2000);
+ currentState = State.FINISHED;
+ }
+ log.debug("Terminated http binding processor");
+ finished = true;
+ }
+
+ @Override
+ public void consumeRequestStream(InputStream is) {
+ try {
+ log.debug("Start consuming request stream");
+ formParameterMap.clear();
+ String cl = headerMap
+ .get(HttpUtil.HTTP_HEADER_CONTENT_TYPE.toLowerCase());
+ if (cl == null) {
+ log.info("No content type set in http header");
+ throw new SLBindingException(2006);
+ }
+ InputDecoder id = InputDecoderFactory.getDecoder(cl, is);
+ if (id == null) {
+ log.error("Cannot get inputdecoder for is");
+ throw new SLException(2006);
+ }
+ for (Iterator<FormParameter> fpi = id.getFormParameterIterator(); fpi
+ .hasNext();) {
+ FormParameter fp = fpi.next();
+ log.debug("Got request parameter with name: "
+ + fp.getFormParameterName());
+ if (fp.getFormParameterName().equals(FixedFormParameters.XMLREQUEST)) {
+ log.debug("Creating XML Request");
+ for (Iterator<String> headerIterator = fp.getHeaderNames(); headerIterator
+ .hasNext();) {
+ String headerName = headerIterator.next();
+ if (HttpUtil.CONTENT_TRANSFER_ENCODING.equalsIgnoreCase(headerName)) {
+ String transferEncoding = fp.getHeaderValue(headerName);
+ log.debug("Got transfer encoding for xmlrequest: "
+ + transferEncoding);
+ if (XML_REQ_TRANSFER_ENCODING.contains(transferEncoding)) {
+ log.debug("Supported transfer encoding: " + transferEncoding);
+ } else {
+ log
+ .error("Transferencoding not supported: "
+ + transferEncoding);
+ throw new SLBindingException(2005);
+ }
+ }
+ }
+ String charset = HttpUtil.getCharset(cl, true);
+ assignXMLRequest(fp.getFormParameterValue(), charset);
+ } else {
+ FormParameterStore fps = new FormParameterStore();
+ fps.init(fp);
+ //if (!fps.isEmpty()) {
+ log.debug("Setting form parameter: " + fps.getFormParameterName());
+ formParameterMap.put(fps.getFormParameterName(), fps);
+ //}
+ }
+ }
+ if (slCommand == null) {
+ throw new SLBindingException(2004);
+ }
+ } catch (SLException slx) {
+ log.info("Error while consuming input stream " + slx);
+ bindingProcessorError = slx;
+ } catch (Throwable t) {
+ log.info("Error while consuming input stream " + t, t);
+ bindingProcessorError = new SLException(2000);
+ } finally {
+ try {
+ if (is.read() != -1) {
+ log.warn("Request input stream not completely read.");
+ while (is.read() != -1);
+ }
+ } catch (IOException e) {
+ log.error(e);
+ }
+ }
+ }
+
+ @Override
+ public String getResultContentType() {
+ return resultContentType;
+ }
+
+ protected Templates getTemplates(String styleSheetURL) {
+ if (styleSheetURL == null) {
+ log.debug("Stylesheet URL not set");
+ return null;
+ }
+ try {
+ URLDereferencerContext urlCtx = new SimpleFormDataContextImpl(this);
+ URIResolver resolver = new URIResolverAdapter(URLDereferencer
+ .getInstance(), urlCtx);
+ TransformerFactory factory = TransformerFactory.newInstance();
+ factory.setURIResolver(resolver);
+ StreamData sd = URLDereferencer.getInstance().dereference(styleSheetURL,
+ urlCtx);
+ return factory.newTemplates(new StreamSource(sd.getStream()));
+ } catch (Exception ex) {
+ log.info("Cannot instantiate transformer", ex);
+ bindingProcessorError = new SLException(2002);
+ return null;
+ }
+ }
+
+ protected void handleBindingProcessorError(OutputStream os, String encoding,
+ Templates templates) throws IOException {
+ log.debug("Writing error as result");
+ ErrorResultImpl error = new ErrorResultImpl(bindingProcessorError, locale);
+ Writer writer = writeXMLDeclarationAndProcessingInstruction(os, encoding);
+ error.writeTo(new StreamResult(writer), templates, true);
+ }
+
+ protected Writer writeXMLDeclarationAndProcessingInstruction(OutputStream os, String encoding) throws IOException {
+ if (encoding == null) {
+ encoding = HttpUtil.DEFAULT_CHARSET;
+ }
+ OutputStreamWriter writer = new OutputStreamWriter(os, encoding);
+ writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n");
+ writer.write("<?xml-stylesheet type=\"text/css\" href=\"errorresponse.css\"?>\n");
+ return writer;
+ }
+
+ @Override
+ public void writeResultTo(OutputStream os, String encoding)
+ throws IOException {
+ if (encoding == null) {
+ encoding = HttpUtil.DEFAULT_CHARSET;
+ }
+ if (bindingProcessorError != null) {
+ log.debug("Detected error in binding processor, writing error as result");
+ handleBindingProcessorError(os, encoding, templates);
+ return;
+ } else if (dataUrlResponse != null) {
+ log.debug("Writing data url response as result");
+ String charEnc = HttpUtil.getCharset(dataUrlResponse.getContentType(),
+ true);
+ InputStreamReader isr = new InputStreamReader(
+ dataUrlResponse.getStream(), charEnc);
+ OutputStreamWriter osw = new OutputStreamWriter(os, encoding);
+ if (templates == null) {
+ StreamUtil.copyStream(isr, osw);
+ } else {
+ try {
+ Transformer transformer = templates.newTransformer();
+ transformer.transform(new StreamSource(isr), new StreamResult(osw));
+ } catch (TransformerException e) {
+ log.fatal("Exception occured during result transformation", e);
+ // bindingProcessorError = new SLException(2008);
+ // handleBindingProcessorError(os, encoding, null);
+ return;
+ }
+ }
+ osw.flush();
+ isr.close();
+ } else if (slResult == null) {
+ // result not yet assigned -> must be a cancel
+ bindingProcessorError = new SLException(6001);
+ handleBindingProcessorError(os, encoding, templates);
+ return;
+ } else {
+ log.debug("Getting result from invoker");
+ boolean fragment = false;
+ Writer writer;
+ if (slResult instanceof ErrorResult) {
+ writer = writeXMLDeclarationAndProcessingInstruction(os, encoding);
+ fragment = true;
+ } else {
+ writer = new OutputStreamWriter(os, encoding);
+ }
+ slResult.writeTo(new StreamResult(writer), templates, fragment);
+ writer.flush();
+ }
+ }
+
+ /**
+ * The response code from the dataurl server or 200 if no dataurl server
+ * created the result
+ *
+ * @return
+ */
+ public int getResponseCode() {
+ return responseCode;
+ }
+
+ /**
+ * All headers from the data url server in case of a direct forward from the
+ * dataurl server.
+ *
+ * @return
+ */
+ public Map<String, String> getResponseHeaders() {
+ return responseHeaders;
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ if (locale == null) {
+ throw new NullPointerException("Locale must not be set to null");
+ }
+ this.locale = locale;
+ }
+
+ @Override
+ public boolean isFinished() {
+ return finished;
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/HttpUtil.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/HttpUtil.java
new file mode 100644
index 00000000..5ea7b25e
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/HttpUtil.java
@@ -0,0 +1,79 @@
+/*
+* 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.binding;
+
+import java.util.Map;
+
+import org.apache.commons.fileupload.ParameterParser;
+
+/**
+ * Placeholder for some HTTP related constants and helper method to extract the charset for a request.
+ *
+ */
+public class HttpUtil {
+
+ public final static String CHAR_SET = "charset";
+ public final static String DEFAULT_CHARSET = "ISO-8859-1";
+ public final static String HTTP_HEADER_CONTENT_TYPE = "Content-Type";
+ public static final String HTTP_HEADER_USER_AGENT = "User-Agent";
+ public static final String HTTP_HEADER_SERVER = "Server";
+ public final static String HTTP_HEADER_REFERER = "Referer";
+ public final static String CONTENT_TRANSFER_ENCODING = "Content-Transfer-Encoding";
+ public final static String MULTIPART_FOTMDATA = "multipart/form-data";
+ public final static String MULTIPART_FOTMDATA_BOUNDARY = "boundary";
+ public final static String TXT_XML = "text/xml";
+ public final static String TXT_PLAIN = "text/plain";
+ public final static String TXT_HTML = "text/html";
+ public final static String APPLICATION_URL_ENCODED = "application/x-www-form-urlencoded";
+ public final static String HTTP_HEADER_LOCATION = "Location";
+
+ public final static char[] SEPERATOR = { ';' };
+
+ /**
+ * Extracts charset from a content type header.
+ *
+ * @param contentType
+ * @param replaceNullWithDefault
+ * if true the method return the default charset if not set
+ * @return charset String or null if not present
+ */
+ @SuppressWarnings("unchecked")
+ public static String getCharset(String contentType,
+ boolean replaceNullWithDefault) {
+ ParameterParser pf = new ParameterParser();
+ pf.setLowerCaseNames(true);
+ Map map = pf.parse(contentType, SEPERATOR);
+ String retVal = (String) map.get(CHAR_SET);
+ if ((retVal == null) && (replaceNullWithDefault)) {
+ if (map.containsKey(APPLICATION_URL_ENCODED)) {
+ // default charset for url encoded data
+ return "UTF-8";
+ }
+ retVal = getDefaultCharset();
+ }
+ return retVal;
+ }
+
+ /**
+ *
+ * Not to be used for url encoded requests.
+ */
+ public static String getDefaultCharset() {
+ return DEFAULT_CHARSET;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/Id.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/Id.java
new file mode 100644
index 00000000..fc7c35c3
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/Id.java
@@ -0,0 +1,31 @@
+/*
+* 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.binding;
+
+/**
+ * The unique identifier for a BindingProcessor
+ * @author wbauer
+ *
+ */
+public interface Id {
+
+ @Override
+ public String toString();
+
+ @Override
+ public boolean equals(Object id);
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/IdFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/IdFactory.java
new file mode 100644
index 00000000..60bf69a4
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/IdFactory.java
@@ -0,0 +1,106 @@
+/*
+* 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.binding;
+
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Creates or converts Ids for BindingProcessors.
+ * @author wbauer
+ *
+ */
+public class IdFactory {
+
+ public static int DEFAULT_NUMBER_OF_BITS = 168;
+
+ private static Log log = LogFactory.getLog(IdFactory.class);
+
+ private static IdFactory instance = new IdFactory();
+
+ private SecureRandom random;
+ private int numberOfBits = DEFAULT_NUMBER_OF_BITS;
+
+ private IdFactory() {
+ try {
+ random = SecureRandom.getInstance("SHA1PRNG");
+ } catch (NoSuchAlgorithmException e) {
+ log.error("Cannot instantiate secure random" + e);
+ }
+ }
+
+ public static IdFactory getInstance() {
+ return instance;
+ }
+
+
+ /**
+ * set the secure random number generator to create secure ids.
+ *
+ * @param random
+ * must not be null
+ */
+ public void setSecureRandom(SecureRandom random) {
+ if (random == null) {
+ throw new NullPointerException("Cannot set secure random to null");
+ }
+ this.random = random;
+ }
+
+ /**
+ * Don't use this method unless you know exactly what you do !
+ * Be sure to use a sufficient large entropy
+ * @param numberOfBits >=1 (although this small entropy does not make sense)
+ */
+ public void setNumberOfBits(int numberOfBits) {
+ if (numberOfBits <1) {
+ throw new IllegalArgumentException("Cannot set number of bits < 1");
+ }
+ this.numberOfBits = numberOfBits;
+ }
+
+ public int getNumberOfBits() {
+ return numberOfBits;
+ }
+
+ /**
+ * Creates a new Id object with the factory's secure RNG and the set number of
+ * bits.
+ *
+ * @return
+ */
+ public Id createId() {
+ return new IdImpl(numberOfBits, random);
+ }
+
+ /**
+ * Creates an Id object for the provided String
+ *
+ * @param idString
+ * may be null in this case the method call creates a new Id.
+ * @return
+ */
+ public Id createId(String idString) {
+ if (idString == null) {
+ return createId();
+ }
+ return new IdImpl(idString);
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/IdImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/IdImpl.java
new file mode 100644
index 00000000..c8a76823
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/IdImpl.java
@@ -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.
+*/
+package at.gv.egiz.bku.binding;
+
+import iaik.utils.Base64OutputStream;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.security.SecureRandom;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Implementation that uses a Base64 representation for self generated Ids.
+ * @author wbauer
+ *
+ */
+public class IdImpl implements at.gv.egiz.bku.binding.Id {
+ private static Log log = LogFactory.getLog(IdImpl.class);
+
+ private String idString;
+
+ public IdImpl(int bitNumber, SecureRandom random) {
+ int byteSize = bitNumber/8;
+ if (bitNumber % 8 != 0) {
+ byteSize++;
+ }
+ byte[] randomBytes = new byte[byteSize];
+ random.nextBytes(randomBytes);
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ Base64OutputStream b64 = new Base64OutputStream(baos);
+ try {
+ b64.write(randomBytes);
+ b64.flush();
+ b64.close();
+ idString = new String(baos.toByteArray());
+ } catch (IOException e) {
+ log.error("Cannot create secure id: "+e);
+ }
+ }
+
+ public IdImpl(String idString) {
+ if (idString == null) {
+ throw new NullPointerException("Provided idstring must not be null");
+ }
+ this.idString = idString;
+ }
+
+ @Override
+ public String toString() {
+ return idString;
+ }
+
+ @Override
+ public int hashCode() {
+ return idString.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (other instanceof Id) {
+ Id otherId = (Id)other;
+ return otherId.toString().equals(idString);
+ } else {
+ return false;
+ }
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/InputDecoder.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/InputDecoder.java
new file mode 100644
index 00000000..e22e54f2
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/InputDecoder.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.binding;
+
+import java.io.InputStream;
+import java.util.Iterator;
+
+/**
+ * Decodes http input stream (either url encoded or multipart formdata)
+ * @author wbauer
+ *
+ */
+public interface InputDecoder {
+ /**
+ * Called from Factory.
+ * @param contentType
+ */
+ void setContentType(String contentType);
+
+ /**
+ * Called from Factory.
+ * @param is the input must not be null
+ */
+ void setInputStream(InputStream is);
+
+ Iterator<FormParameter> getFormParameterIterator();
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/InputDecoderFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/InputDecoderFactory.java
new file mode 100644
index 00000000..211deee7
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/InputDecoderFactory.java
@@ -0,0 +1,89 @@
+/*
+* 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.binding;
+
+import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Factory to get a matching instance for a encoded input stream when reading a http request.
+ *
+ */
+public class InputDecoderFactory {
+
+ public final static String MULTIPART_FORMDATA = "multipart/form-data";
+ public final static String URL_ENCODED = "application/x-www-form-urlencoded";
+
+ private static InputDecoderFactory instance = new InputDecoderFactory();
+ private static Log log = LogFactory.getLog(InputDecoderFactory.class);
+
+ private String defaultEncoding = URL_ENCODED;
+ private Map<String, Class<? extends InputDecoder>> decoderMap = new HashMap<String, Class<? extends InputDecoder>>();
+
+ private InputDecoderFactory() {
+ decoderMap.put(MULTIPART_FORMDATA, MultiPartFormDataInputDecoder.class);
+ decoderMap.put(URL_ENCODED, XWWWFormUrlInputDecoder.class);
+ }
+
+ public static InputDecoder getDefaultDecoder(InputStream is) {
+ return getDecoder(instance.defaultEncoding, is);
+ }
+
+ /**
+ *
+ * @param contentType
+ * @param is
+ * @return null if the content type is not supported
+ */
+ public static InputDecoder getDecoder(String contentType, InputStream is) {
+ String prefix = contentType.split(";")[0].trim().toLowerCase();
+ Class<? extends InputDecoder> dec = instance.decoderMap.get(prefix);
+ if (dec == null) {
+ log.info("Unknown encoding prefix " + contentType);
+ return null;
+ }
+ InputDecoder id;
+ try {
+ id = dec.newInstance();
+ id.setContentType(contentType);
+ id.setInputStream(is);
+ return id;
+ } catch (InstantiationException e) {
+ log.error(e);
+ throw new IllegalArgumentException(
+ "Cannot get an input decoder for content type: " + contentType);
+ } catch (IllegalAccessException e) {
+ log.error(e);
+ throw new IllegalArgumentException(
+ "Cannot get an input decoder for content type: " + contentType);
+ }
+ }
+
+ /**
+ * Allows to register decoders for special mime types.
+ * @param mimeType
+ * @param decoder
+ */
+ public static void registerDecoder(String mimeType,
+ Class<? extends InputDecoder> decoder) {
+ instance.decoderMap.put(mimeType.toLowerCase(), decoder);
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/MultiPartFormDataInputDecoder.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/MultiPartFormDataInputDecoder.java
new file mode 100644
index 00000000..f8b13553
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/MultiPartFormDataInputDecoder.java
@@ -0,0 +1,133 @@
+/*
+* 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.binding;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Iterator;
+
+import org.apache.commons.fileupload.FileItemIterator;
+import org.apache.commons.fileupload.FileItemStream;
+import org.apache.commons.fileupload.FileUpload;
+import org.apache.commons.fileupload.FileUploadException;
+import org.apache.commons.fileupload.RequestContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+
+/**
+ * The code to detect the multipart boundary is based on
+ * org.apache.commons.fileupload.FileUploadBase of
+ * http://commons.apache.org/fileupload/
+ *
+ * @author wbauer
+ *
+ */
+public class MultiPartFormDataInputDecoder implements InputDecoder,
+ RequestContext {
+
+ private static Log log = LogFactory
+ .getLog(MultiPartFormDataInputDecoder.class);
+
+ private String contentType;
+ private InputStream stream;
+
+ @Override
+ public void setContentType(String contentType) {
+ this.contentType = contentType;
+ }
+
+ @Override
+ public String getCharacterEncoding() {
+ return null;
+ }
+
+ @Override
+ public int getContentLength() {
+ return 0;
+ }
+
+ @Override
+ public String getContentType() {
+ return contentType;
+ }
+
+ @Override
+ public InputStream getInputStream() throws IOException {
+ return stream;
+ }
+
+ @Override
+ public Iterator<FormParameter> getFormParameterIterator() {
+ try {
+ FileUpload fup = new FileUpload();
+ FileItemIterator fit = fup.getItemIterator(this);
+ return new IteratorDelegator(fit);
+ } catch (Exception iox) {
+ log.error("Cannot decode multipart form data stream " + iox);
+ throw new SLRuntimeException(iox);
+ }
+ }
+
+ @Override
+ public void setInputStream(InputStream is) {
+ stream = is;
+ }
+
+ static class IteratorDelegator implements Iterator<FormParameter> {
+
+ private FileItemIterator fileItemIterator;
+
+ public IteratorDelegator(FileItemIterator fit) {
+ fileItemIterator = fit;
+ }
+
+ @Override
+ public boolean hasNext() {
+ try {
+ return fileItemIterator.hasNext();
+ } catch (FileUploadException e) {
+ log.error(e);
+ throw new SLRuntimeException(e);
+ } catch (IOException e) {
+ log.error(e);
+ throw new SLRuntimeException(e);
+ }
+ }
+
+ @Override
+ public FormParameter next() {
+ try {
+ FileItemStream item = fileItemIterator.next();
+ return new FormParameterImpl(item.getContentType(),
+ item.getFieldName(), item.openStream(), item.getHeaders());
+ } catch (FileUploadException e) {
+ log.error(e);
+ throw new SLRuntimeException(e);
+ } catch (IOException e) {
+ log.error(e);
+ throw new SLRuntimeException(e);
+ }
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException("Remove not supported");
+ }
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/ProcessingContext.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/ProcessingContext.java
new file mode 100644
index 00000000..913259f6
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/ProcessingContext.java
@@ -0,0 +1,59 @@
+/*
+ * 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.binding;
+
+import java.util.Hashtable;
+import java.util.Map;
+import java.util.concurrent.Future;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class ProcessingContext {
+
+ public static final String BINDING_PROCESSOR = "binding.processor";
+ public static final String FUTURE = "future";
+
+ protected static final Log log = LogFactory.getLog(ProcessingContext.class);
+
+ protected Map<String, Object> properties = new Hashtable<String, Object>();
+
+ public ProcessingContext(BindingProcessor bp, Future future) {
+ properties.put(BINDING_PROCESSOR, bp);
+ properties.put(FUTURE, future);
+ }
+
+ public BindingProcessor getBindingProcessor() {
+ return (BindingProcessor) properties.get(BINDING_PROCESSOR);
+ }
+
+ public Future getFuture() {
+ return (Future) properties.get(FUTURE);
+ }
+
+ public Object get(String key) {
+ return properties.get(key);
+ }
+
+ public void put(String key, Object value) {
+ properties.put(key, value);
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/RemovalStrategy.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/RemovalStrategy.java
new file mode 100644
index 00000000..6c2dcb9f
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/RemovalStrategy.java
@@ -0,0 +1,26 @@
+/*
+* 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.binding;
+
+/**
+ * Could be used to remove expired BindingProcessor objects from a BindingProcessorManager.
+ *
+ */
+public interface RemovalStrategy {
+ public void execute();
+ public void setBindingProcessorManager(BindingProcessorManager bp);
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/SLCommandInvokerImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/SLCommandInvokerImpl.java
new file mode 100644
index 00000000..a23d96e8
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/SLCommandInvokerImpl.java
@@ -0,0 +1,95 @@
+/*
+ * 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.binding;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.accesscontroller.SecurityManagerFacade;
+import at.gv.egiz.bku.slcommands.SLCommand;
+import at.gv.egiz.bku.slcommands.SLCommandInvoker;
+import at.gv.egiz.bku.slcommands.SLResult;
+import at.gv.egiz.bku.slcommands.SLSourceContext;
+import at.gv.egiz.bku.slcommands.SLTargetContext;
+import at.gv.egiz.bku.slexceptions.SLException;
+
+/**
+ * This class implements the entry point for the CCEs security management.
+ *
+ */
+public class SLCommandInvokerImpl implements SLCommandInvoker {
+
+ private static Log log = LogFactory.getLog(SLCommandInvokerImpl.class);
+
+ protected SLCommand command;
+ protected SLResult result;
+ protected SecurityManagerFacade securityManager;
+
+ /**
+ * Invokes a sl command.
+ *
+ * @throws SLException
+ */
+ public void invoke(SLSourceContext aContext) throws SLException {
+ if (securityManager == null) {
+ log.warn("Security policy not implemented yet, invoking command: "
+ + command);
+ result = command.execute();
+ } else {
+ if (securityManager.mayInvokeCommand(command, aContext)) {
+ result = command.execute();
+ } else {
+ throw new SLException(6002);
+ }
+ }
+ }
+
+ public SLResult getResult(SLTargetContext aContext) throws SLException {
+ if (securityManager == null) {
+ log
+ .warn("Security policy not implemented yet, getting result of command: "
+ + command);
+ return result;
+ } else {
+ if (securityManager.maySendResult(command, aContext)) {
+ return result;
+ } else {
+ throw new SLException(6002);
+ }
+ }
+ }
+
+ public void setCommand(SLCommand aCmd) {
+ command = aCmd;
+ }
+
+ @Override
+ public SLCommandInvoker newInstance() {
+ SLCommandInvokerImpl cmdInv = new SLCommandInvokerImpl();
+ cmdInv.setSecurityManager(securityManager);
+ return cmdInv;
+ }
+
+ public SecurityManagerFacade getSecurityManager() {
+ return securityManager;
+ }
+
+ public void setSecurityManager(SecurityManagerFacade securityManager) {
+ this.securityManager = securityManager;
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/XWWWFormUrlInputDecoder.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/XWWWFormUrlInputDecoder.java
new file mode 100644
index 00000000..69c659e1
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/XWWWFormUrlInputDecoder.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.binding;
+
+import java.io.InputStream;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.apache.commons.fileupload.ParameterParser;
+
+public class XWWWFormUrlInputDecoder implements InputDecoder {
+
+ /**
+ * The MIME type 'application/x-www-form-urlencoded'.
+ */
+ public static final String CONTENT_TYPE = "application/x-www-form-urlencoded";
+
+ /**
+ * The form parameter iterator.
+ */
+ protected XWWWFormUrlInputIterator iterator;
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void setContentType(String contentType) {
+ ParameterParser pp = new ParameterParser();
+ pp.setLowerCaseNames(true);
+ Map<String, String> params = pp.parse(contentType, new char[] { ':', ';' });
+ if (!params.containsKey(CONTENT_TYPE)) {
+ throw new IllegalArgumentException(
+ "not a url encoded content type specification: " + contentType);
+ }
+ }
+
+ @Override
+ public Iterator<FormParameter> getFormParameterIterator() {
+ return iterator;
+ }
+
+ @Override
+ public void setInputStream(InputStream is) {
+ iterator = new XWWWFormUrlInputIterator(is);
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/XWWWFormUrlInputIterator.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/XWWWFormUrlInputIterator.java
new file mode 100644
index 00000000..9279130d
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/XWWWFormUrlInputIterator.java
@@ -0,0 +1,386 @@
+package at.gv.egiz.bku.binding;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.FilterInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.Charset;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.NoSuchElementException;
+
+public class XWWWFormUrlInputIterator implements Iterator<FormParameter> {
+
+ public static final byte NAME_VALUE_SEP = '=';
+
+ public static final byte PARAM_SEP = '&';
+
+ public static final Charset UTF_8 = Charset.forName("UTF-8");
+
+ /**
+ * The default buffer size.
+ */
+ protected static final int DEFAULT_BUFFER_SIZE = 4096;
+
+ /**
+ * Are we done with parsing the input.
+ */
+ protected boolean done = false;
+
+ /**
+ * The x-www-formdata-urlencoded input stream to be parsed.
+ */
+ protected final InputStream in;
+
+ /**
+ * The buffer size.
+ */
+ protected int bufferSize = DEFAULT_BUFFER_SIZE;
+
+ /**
+ * The read buffer.
+ */
+ protected final byte[] buf = new byte[bufferSize];
+
+ /**
+ * The read position.
+ */
+ protected int pos;
+
+ /**
+ * The number of valid bytes in the buffer;
+ */
+ protected int count;
+
+ /**
+ * The parameter returned by the last call of {@link #next()};
+ */
+ protected XWWWFormUrlEncodedParameter currentParameter;
+
+ /**
+ * An IOException that cannot be reported immediately.
+ */
+ protected IOException deferredIOException;
+
+ /**
+ * Creates a new instance of this x-www-formdata-urlencoded input iterator
+ * with the given InputStream <code>in</code> to be parsed.
+ *
+ * @param in the InputStream to be parsed
+ */
+ public XWWWFormUrlInputIterator(InputStream in) {
+ this.in = in;
+ }
+
+ /* (non-Javadoc)
+ * @see java.util.Iterator#hasNext()
+ */
+ @Override
+ public boolean hasNext() {
+ if (done) {
+ return false;
+ }
+ try {
+ if (currentParameter != null) {
+ // we have to disconnect the current parameter
+ // to look for further parameters
+ currentParameter.formParameterValue.disconnect();
+ }
+ // fill buffer if empty
+ if (pos >= count) {
+ if ((count = in.read(buf)) == -1) {
+ // done
+ done = true;
+ return false;
+ }
+ pos = 0;
+ }
+ } catch (IOException e) {
+ deferredIOException = e;
+ // return true to be able to report error
+ return true;
+ }
+ return true;
+ }
+
+ @Override
+ public FormParameter next() {
+ if (hasNext()) {
+ // skip separator
+ if (buf[pos] == PARAM_SEP) {
+ pos++;
+ }
+ currentParameter = new XWWWFormUrlEncodedParameter();
+ return currentParameter;
+ } else {
+ throw new NoSuchElementException();
+ }
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+
+ public class XWWWFormUrlEncodedParameter implements FormParameter {
+
+ /**
+ * The list of header names.
+ */
+ // x-www-form-urlencoded parameters do not provide headers
+ protected final List<String> headers = Collections.emptyList();
+
+ /**
+ * The name of the form parameter.
+ */
+ protected String formParameterName;
+
+ /**
+ * The value of the form parameter.
+ */
+ protected URLDecodingInputStream formParameterValue;
+
+ public XWWWFormUrlEncodedParameter() {
+ // parse parameter name
+ URLDecodingInputStream urldec = new URLDecodingInputStream(in, NAME_VALUE_SEP);
+ InputStreamReader reader = new InputStreamReader(urldec, UTF_8);
+ try {
+ StringBuilder sb = new StringBuilder();
+ char[] b = new char[128];
+ for (int l = 0; (l = reader.read(b)) != -1;) {
+ sb.append(b, 0, l);
+ }
+ formParameterName = sb.toString();
+ // fill buffer if empty
+ if (pos >= count) {
+ if ((count = in.read(buf)) == -1) {
+ throw new IOException("Invalid URL encoding.");
+ }
+ pos = 0;
+ }
+ // skip separator
+ pos++;
+ } catch (IOException e) {
+ deferredIOException = e;
+ formParameterName = "";
+ }
+ formParameterValue = new URLDecodingInputStream(in, PARAM_SEP);
+ }
+
+ @Override
+ public String getFormParameterContentType() {
+ // x-www-form-urlencoded parameters do not specify a content type
+ return null;
+ }
+
+ @Override
+ public String getFormParameterName() {
+ return formParameterName;
+ }
+
+ @Override
+ public InputStream getFormParameterValue() {
+ if (deferredIOException != null) {
+ final IOException e = deferredIOException;
+ deferredIOException = null;
+ return new InputStream() {
+ @Override
+ public int read() throws IOException {
+ throw e;
+ }
+ };
+ } else {
+ return formParameterValue;
+ }
+ }
+
+ @Override
+ public Iterator<String> getHeaderNames() {
+ return headers.iterator();
+ }
+
+ @Override
+ public String getHeaderValue(String headerName) {
+ return null;
+ }
+
+ }
+
+ public class URLDecodingInputStream extends FilterInputStream {
+
+ /**
+ * Has this stream already been closed.
+ */
+ private boolean closed = false;
+
+ /**
+ * Has this stream been disconnected.
+ */
+ private boolean disconnected = false;
+
+ /**
+ * Read until this byte occurs.
+ */
+ protected final byte term;
+
+ /**
+ * Creates a new instance of this URLDecodingInputStream.
+ *
+ * @param in
+ * @param separator
+ */
+ protected URLDecodingInputStream(InputStream in, byte separator) {
+ super(in);
+ this.term = separator;
+ }
+
+ /* (non-Javadoc)
+ * @see java.io.FilterInputStream#read()
+ */
+ @Override
+ public int read() throws IOException {
+ if (closed) {
+ throw new IOException("The stream has already been closed.");
+ }
+ if (disconnected) {
+ return in.read();
+ }
+
+ if (pos >= count) {
+ if ((count = in.read(buf)) == -1) {
+ return -1;
+ }
+ pos = 0;
+ } if (buf[pos] == term) {
+ return -1;
+ } else if (buf[pos] == '+') {
+ pos++;
+ return ' ';
+ } else if (buf[pos] == '%') {
+ if (++pos == count) {
+ if ((count = in.read(buf)) == -1) {
+ throw new IOException("Invalid URL encoding.");
+ }
+ pos = 0;
+ }
+ int c1 = Character.digit(buf[pos], 16);
+ if (++pos == count) {
+ if ((count = in.read(buf)) == -1) {
+ throw new IOException("Invalid URL encoding.");
+ }
+ pos = 0;
+ }
+ int c2 = Character.digit(buf[pos], 16);
+ return ((c1 << 4) | c2);
+ } else {
+ return buf[pos++];
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see java.io.FilterInputStream#read(byte[], int, int)
+ */
+ @Override
+ public int read(byte[] b, int off, int len) throws IOException {
+ if (closed) {
+ throw new IOException("The stream has already been closed.");
+ }
+ if (disconnected) {
+ return in.read(b, off, len);
+ }
+
+ if ((off | len | (off + len) | (b.length - (off + len))) < 0) {
+ throw new IndexOutOfBoundsException();
+ } else if (len == 0) {
+ return 0;
+ }
+
+ if (pos >= count) {
+ if ((count = in.read(buf)) == -1) {
+ return -1;
+ }
+ pos = 0;
+ }
+ if (buf[pos] == term) {
+ return -1;
+ }
+
+ int l = 0;
+ for (;;) {
+ while (pos < count) {
+ if (l == len || buf[pos] == term) {
+ return l;
+ } else if (buf[pos] == '+') {
+ b[off] = ' ';
+ } else if (buf[pos] == '%') {
+ if (++pos == count) {
+ if ((count = in.read(buf)) == -1) {
+ throw new IOException("Invalid URL encoding.");
+ }
+ pos = 0;
+ }
+ int c1 = Character.digit(buf[pos], 16);
+ if (++pos == count) {
+ if ((count = in.read(buf)) == -1) {
+ throw new IOException("Invalid URL encoding.");
+ }
+ pos = 0;
+ }
+ int c2 = Character.digit(buf[pos], 16);
+ b[off] = (byte) ((c1 << 4) | c2);
+ } else {
+ b[off] = buf[pos];
+ }
+ pos++;
+ off++;
+ l++;
+ }
+ if ((count = in.read(buf)) == -1) {
+ return l;
+ }
+ pos = 0;
+ }
+ }
+
+ /**
+ * Disconnect from the InputStream and buffer all remaining data.
+ *
+ * @throws IOException
+ */
+ public void disconnect() throws IOException {
+ if (!disconnected) {
+ // don't waste space for a buffer if end of stream has already been
+ // reached
+ byte[] b = new byte[1];
+ if ((read(b)) != -1) {
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ os.write(b);
+ b = new byte[1024];
+ for (int l; (l = read(b, 0, b.length)) != -1;) {
+ os.write(b, 0, l);
+ }
+ super.in = new ByteArrayInputStream(os.toByteArray());
+ }
+ disconnected = true;
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see java.io.FilterInputStream#close()
+ */
+ @Override
+ public void close() throws IOException {
+ if (!hasNext()) {
+ // don't close the underlying stream until all parts are read
+ super.close();
+ }
+ disconnect();
+ closed = true;
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/InputStreamPartSource.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/InputStreamPartSource.java
new file mode 100644
index 00000000..1a22f787
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/InputStreamPartSource.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.binding.multipart;
+
+import java.io.IOException;
+import java.io.InputStream;
+import org.apache.commons.httpclient.methods.multipart.PartSource;
+
+/**
+ * InputStream source for FilePart.
+ * DOES NOT RETURN A CORRECT LENGTH OF THE INPUT DATA. (but we don't care, since we use chunked encoding)
+ *
+ * @author clemens
+ */
+public class InputStreamPartSource implements PartSource {
+
+ protected String name;
+ protected InputStream data;
+
+ public InputStreamPartSource(String name, InputStream data) {
+ this.name = name;
+ this.data = data;
+ }
+
+ /**
+ * Just a dummy value to make Part work
+ * @return 42
+ */
+ @Override
+ public long getLength() {
+ //System.out.println("***********GETLENGTH");
+ return 42;
+ }
+
+ @Override
+ public String getFileName() {
+ return name;
+ }
+
+ @Override
+ public InputStream createInputStream() throws IOException {
+ if (data == null)
+ throw new IOException("Failed to get stream for part: no data was set.");
+ return data;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/SLResultPart.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/SLResultPart.java
new file mode 100644
index 00000000..d896ea9f
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/binding/multipart/SLResultPart.java
@@ -0,0 +1,71 @@
+/*
+* 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.binding.multipart;
+
+import at.gv.egiz.bku.binding.DataUrlConnection;
+import at.gv.egiz.bku.slcommands.SLResult;
+import at.gv.egiz.bku.slcommands.SLResult.SLResultType;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.commons.httpclient.methods.multipart.FilePart;
+import org.apache.commons.httpclient.methods.multipart.PartSource;
+
+public class SLResultPart extends FilePart {
+
+ protected SLResult slResult;
+ protected String encoding;
+
+ public SLResultPart(SLResult slResult, String encoding) {
+ super((slResult.getResultType() == SLResultType.XML)
+ ? DataUrlConnection.FORMPARAM_XMLRESPONSE
+ : DataUrlConnection.FORMPARAM_BINARYRESPONSE,
+ new PartSource() {
+
+ @Override
+ public long getLength() {
+ // may return null, as sendData() is overridden
+ return 0;
+ }
+
+ @Override
+ public String getFileName() {
+ // return null, to prevent content-disposition header
+ return null;
+ }
+
+ @Override
+ public InputStream createInputStream() throws IOException {
+ // may return null, as sendData() is overridden below
+ return null;
+ }
+ }
+ );
+ this.slResult = slResult;
+ this.encoding = encoding;
+ }
+
+ @Override
+ protected void sendData(OutputStream out) throws IOException {
+ slResult.writeTo(new StreamResult(new OutputStreamWriter(out, encoding)), false);
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/CertValidator.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/CertValidator.java
new file mode 100644
index 00000000..6a95b369
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/CertValidator.java
@@ -0,0 +1,13 @@
+package at.gv.egiz.bku.conf;
+
+import iaik.x509.X509Certificate;
+
+import java.io.File;
+
+public interface CertValidator {
+
+ public abstract void init(File certDir, File caDir);
+
+ public abstract boolean isCertificateValid(String transactionId, X509Certificate[] certs);
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/CertValidatorImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/CertValidatorImpl.java
new file mode 100644
index 00000000..3b2d1b99
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/CertValidatorImpl.java
@@ -0,0 +1,107 @@
+package at.gv.egiz.bku.conf;
+
+import iaik.logging.LogConfigurationException;
+import iaik.logging.TransactionId;
+import iaik.logging.impl.TransactionIdImpl;
+import iaik.logging.LoggerConfig;
+import iaik.pki.DefaultPKIConfiguration;
+import iaik.pki.DefaultPKIProfile;
+import iaik.pki.PKIConfiguration;
+import iaik.pki.PKIException;
+import iaik.pki.PKIFactory;
+import iaik.pki.PKIModule;
+import iaik.pki.PKIProfile;
+import iaik.pki.store.certstore.CertStoreParameters;
+import iaik.pki.store.certstore.directory.DefaultDirectoryCertStoreParameters;
+import iaik.pki.store.truststore.DefaultTrustStoreProfile;
+import iaik.pki.store.truststore.TrustStoreProfile;
+import iaik.pki.store.truststore.TrustStoreTypes;
+import iaik.x509.X509Certificate;
+
+import java.io.File;
+import java.util.Date;
+import java.util.Properties;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class CertValidatorImpl implements CertValidator {
+
+ private static Log log = LogFactory.getLog(CertValidatorImpl.class);
+
+ private PKIFactory pkiFactory;
+ private PKIProfile profile;
+
+ public CertValidatorImpl() {
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.bku.conf.CertValidator#init(java.io.File, java.io.File)
+ */
+ public void init(File certDir, File caDir) {
+ // initialize IAIK logging for PKI module
+ log.debug("Configuring logging for IAIK PKI module");
+ iaik.logging.LogFactory.configure(new LoggerConfig() {
+
+ @Override
+ public Properties getProperties() throws LogConfigurationException {
+ return null;
+ }
+
+ @Override
+ public String getNodeId() {
+ return "pki";
+ }
+
+ @Override
+ public String getFactory() {
+ return IAIKCommonsLogFactory.class.getName();
+ }
+ });
+
+
+ // the parameters specifying the directory certstore
+ CertStoreParameters[] certStoreParameters = { new DefaultDirectoryCertStoreParameters(
+ "CS-001", certDir.getAbsolutePath(), true, false) };
+
+ // create a new PKI configuration using the certstore parameters
+ PKIConfiguration pkiConfig = new DefaultPKIConfiguration(
+ certStoreParameters);
+
+ // Transaction ID for logging
+ TransactionId tid = new TransactionIdImpl("Configure-PKI");
+ // get PKI factory for creating PKI module(s)
+ pkiFactory = PKIFactory.getInstance();
+ // configure the factory
+ try {
+ pkiFactory.configure(pkiConfig, tid);
+ } catch (PKIException e) {
+ log.error("Cannot configure PKI module", e);
+ }
+ // the truststore to be used
+ TrustStoreProfile trustProfile = new DefaultTrustStoreProfile("TS-001",
+ TrustStoreTypes.DIRECTORY, caDir.getAbsolutePath());
+ profile = new DefaultPKIProfile(trustProfile);
+ ((DefaultPKIProfile)profile).setAutoAddCertificates(true);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.bku.conf.CertValidator#isCertificateValid(java.lang.String, iaik.x509.X509Certificate[])
+ */
+ public boolean isCertificateValid(String transactionId,
+ X509Certificate[] certs) {
+ // Transaction ID for logging
+ TransactionId tid = new TransactionIdImpl(transactionId);
+ // get a PKIModule
+ PKIModule pkiModule;
+ try {
+ pkiModule = pkiFactory.getPKIModule(profile);
+ return pkiModule.validateCertificate(new Date(), certs[0], certs, null,
+ tid).isCertificateValid();
+ } catch (PKIException e) {
+ log.error("Cannot validate certificate", e);
+ }
+ return false;
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/Configuration.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/Configuration.java
new file mode 100644
index 00000000..f813b14d
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/Configuration.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.
+ */
+
+package at.gv.egiz.bku.conf;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * BKU Common Configuration
+ *
+ * Injected to BKU Common classes as defined in mocca-conf.xml
+ *
+ * Replace at.gv.egiz.bku.conf.Configurator,
+ * currently only few configuration options are supported.
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class Configuration {
+
+ public static final int MAX_DATAURL_HOPS_DEFAULT = 50;
+ public static final String IMPLEMENTATION_NAME_DEFAULT = "MOCCA";
+ public static final String IMPLEMENTATION_VERSION_DEFAULT = "UNKNOWN";
+
+ private static final Log log = LogFactory.getLog(Configuration.class);
+
+ private int maxDataUrlHops = -1;
+ private String implementationName;
+ private String implementationVersion;
+
+ public void setMaxDataUrlHops(int maxDataUrlHops) {
+ this.maxDataUrlHops = maxDataUrlHops;
+ }
+
+ /**
+ * Defines the maximum number of dataurl connects that are allowed within a
+ * single SL Request processing.
+ */
+ public int getMaxDataUrlHops() {
+ if (maxDataUrlHops < 0) {
+ log.warn("maxDataUrlHops not configured, using default: " + MAX_DATAURL_HOPS_DEFAULT);
+ return MAX_DATAURL_HOPS_DEFAULT;
+ }
+ return maxDataUrlHops;
+ }
+
+ /**
+ * @return the implementationName
+ */
+ public String getImplementationName() {
+ if (implementationName == null) {
+ log.info("implementationName not configured, using default: " + IMPLEMENTATION_NAME_DEFAULT);
+ return "MOCCA";
+ }
+ return implementationName;
+ }
+
+ /**
+ * @param implementationName the implementationName to set
+ */
+ public void setImplementationName(String implementationName) {
+ this.implementationName = implementationName;
+ }
+
+ /**
+ * @return the implementationVersion
+ */
+ public String getImplementationVersion() {
+ if (implementationName == null) {
+ log.info("implementationName not configured, using default: " + IMPLEMENTATION_VERSION_DEFAULT);
+ return IMPLEMENTATION_VERSION_DEFAULT;
+ }
+ return implementationVersion;
+ }
+
+ /**
+ * @param implementationVersion the implementationVersion to set
+ */
+ public void setImplementationVersion(String implementationVersion) {
+ this.implementationVersion = implementationVersion;
+ }
+
+
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/Configurator.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/Configurator.java
new file mode 100644
index 00000000..50f5d2b4
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/Configurator.java
@@ -0,0 +1,467 @@
+package at.gv.egiz.bku.conf;
+
+import iaik.security.ecc.provider.ECCProvider;
+import iaik.security.provider.IAIK;
+import iaik.xml.crypto.XSecProvider;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.security.GeneralSecurityException;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.NoSuchAlgorithmException;
+import java.security.Provider;
+import java.security.Security;
+import java.security.Provider.Service;
+import java.security.cert.CertStore;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
+import java.security.cert.CollectionCertStoreParameters;
+import java.security.cert.LDAPCertStoreParameters;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Properties;
+import java.util.Set;
+import java.util.jar.Attributes;
+import java.util.jar.Manifest;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.KeyManager;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.binding.DataUrl;
+import at.gv.egiz.bku.slcommands.impl.xsect.DataObject;
+import at.gv.egiz.bku.slcommands.impl.xsect.STALProvider;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer;
+import javax.net.ssl.SSLSocketFactory;
+
+public abstract class Configurator {
+
+ private Log log = LogFactory.getLog(Configurator.class);
+
+ public final static String USERAGENT_CONFIG_P = "UserAgent";
+ public static final String DATAURLCONNECTION_CONFIG_P = "DataURLConnectionImplClass";
+
+ public static final String USERAGENT_DEFAULT = "citizen-card-environment/1.2 MOCCA/UNKNOWN";
+ public static final String USERAGENT_BASE = "citizen-card-environment/1.2 MOCCA/";
+
+ public static final String SIGNATURE_LAYOUT = "SignatureLayout";
+
+ protected Properties properties;
+
+ protected CertValidator certValidator;
+ protected String signaturLayoutVersion;
+
+ protected Configurator() {
+ }
+
+ protected abstract File getCertDir();
+
+ protected abstract File getCADir();
+
+ protected abstract InputStream getManifest();
+
+ private X509Certificate[] getCACerts() throws IOException,
+ CertificateException {
+ List<X509Certificate> caCerts = new ArrayList<X509Certificate>();
+ File caDir = getCADir();
+ if (caDir != null) {
+ if (!caDir.isDirectory()) {
+ log.error("Expecting directory as SSL.caDirectory parameter");
+ throw new SLRuntimeException(
+ "Expecting directory as SSL.caDirectory parameter");
+ }
+ log.info("loading trustStore from " + caDir.getAbsolutePath());
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
+ for (File f : caDir.listFiles()) {
+ try {
+ FileInputStream fis = new FileInputStream(f);
+ X509Certificate cert = (X509Certificate) cf.generateCertificate(fis);
+ fis.close();
+ log.debug("Adding trusted cert " + cert.getSubjectDN());
+ caCerts.add(cert);
+ } catch (Exception e) {
+ log.error("Cannot add trusted ca", e);
+ }
+ }
+ return caCerts.toArray(new X509Certificate[caCerts.size()]);
+ } else {
+ log.warn("No CA certificates configured");
+ }
+ return null;
+ }
+
+ protected List<CertStore> getCertstore() throws IOException,
+ CertificateException, InvalidAlgorithmParameterException,
+ NoSuchAlgorithmException {
+ List<CertStore> resultList = new ArrayList<CertStore>();
+ File certDir = getCertDir();
+ if (certDir != null) {
+ if (!certDir.isDirectory()) {
+ log.error("Expecting directory as SSL.certDirectory parameter");
+ throw new SLRuntimeException(
+ "Expecting directory as SSL.certDirectory parameter");
+ }
+ log.info("loading certStore from " + certDir.getAbsolutePath());
+ List<X509Certificate> certCollection = new LinkedList<X509Certificate>();
+ CertificateFactory cf = CertificateFactory.getInstance("X.509");
+ for (File f : certDir.listFiles()) {
+ try {
+ FileInputStream fis = new FileInputStream(f);
+ X509Certificate cert = (X509Certificate) cf.generateCertificate(fis);
+ certCollection.add(cert);
+ fis.close();
+ log
+ .trace("Added following cert to certstore: "
+ + cert.getSubjectDN());
+ } catch (Exception ex) {
+ log.error("Cannot add certificate", ex);
+ }
+ }
+ CollectionCertStoreParameters csp = new CollectionCertStoreParameters(
+ certCollection);
+ resultList.add(CertStore.getInstance("Collection", csp));
+ log.info("Added collection certstore");
+ } else {
+ log.warn("No certstore directory configured");
+ }
+ String ldapHost = getProperty("SSL.ldapServer");
+ if ((ldapHost != null) && (!"".equals(ldapHost))) {
+ String ldapPortString = getProperty("SSL.ldapPort");
+ int ldapPort = 389;
+ if (ldapPortString != null) {
+ try {
+ ldapPort = Integer.parseInt(ldapPortString);
+ } catch (NumberFormatException nfe) {
+ log.error("Invalid ldap port, using default 389");
+ }
+ } else {
+ log.warn("ldap port not specified, using default 389");
+ }
+ LDAPCertStoreParameters ldapParams = new LDAPCertStoreParameters(
+ ldapHost, ldapPort);
+ resultList.add(CertStore.getInstance("LDAP", ldapParams));
+ log.info("Added LDAP certstore");
+ }
+ return resultList;
+ }
+
+ protected void configUrlConnections() {
+ HttpsURLConnection.setFollowRedirects(false);
+ HttpURLConnection.setFollowRedirects(false);
+ }
+
+ protected void configureProviders() {
+ log.debug("Registering security providers");
+
+ IAIK iaikProvider = new IAIK();
+ if (Security.getProvider(iaikProvider.getName()) == null) {
+ // register IAIK provider at first position
+ Security.insertProviderAt(iaikProvider, 1);
+ } else {
+ // IAIK provider already registered
+ log.info("Provider " + iaikProvider.getName() + " already registered.");
+ }
+
+ ECCProvider eccProvider = new ECCProvider(false);
+ if (Security.getProvider(eccProvider.getName()) == null) {
+ // register ECC Provider at second position
+ Security.insertProviderAt(eccProvider, 2);
+ } else {
+ // ECC Provider already registered
+ log.info("Provider " + eccProvider.getName() + " already registered.");
+ }
+
+ // registering STALProvider as delegation provider for XSECT
+ STALProvider stalProvider = new STALProvider();
+ if (Security.getProvider(stalProvider.getName()) == null) {
+ // register STAL provider
+ Set<Service> services = stalProvider.getServices();
+ StringBuilder sb = new StringBuilder();
+ for (Service service : services) {
+ String algorithm = service.getType() + "." + service.getAlgorithm();
+ XSecProvider.setDelegationProvider(algorithm, stalProvider.getName());
+ sb.append("\n" + algorithm);
+ }
+ log
+ .debug("Registered STALProvider as XSecProvider delegation provider for the following services : "
+ + sb.toString());
+
+ Security.addProvider(stalProvider);
+ } else {
+ // STAL Provider already registered
+ log.info("Provider " + stalProvider.getName() + " already registered.");
+ }
+
+ if (Security.getProvider(XSecProvider.NAME) == null) {
+ // register XML Security provider
+ XSecProvider.addAsProvider(false);
+ } else {
+ log.info("Provider " + XSecProvider.NAME + " already registered.");
+ }
+
+ if (log.isDebugEnabled()) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("Registered providers: ");
+ int i = 1;
+ for (Provider prov : Security.getProviders()) {
+ sb.append((i++) + ". : " + prov);
+ }
+ log.debug(sb.toString());
+ }
+ }
+
+ protected void configViewer() {
+ String bv = properties.getProperty("ValidateHashDataInputs");
+ if (bv != null) {
+ DataObject.enableHashDataInputValidation(Boolean.parseBoolean(bv));
+ } else {
+ log.warn("ValidateHashDataInputs not set, falling back to default");
+ }
+ }
+
+ public void configureSingatureLayoutVersion() {
+ if (properties.get(SIGNATURE_LAYOUT) == null) {
+ try {
+ String classContainer = Configurator.class.getProtectionDomain()
+ .getCodeSource().getLocation().toString();
+ URL manifestUrl = new URL("jar:" + classContainer
+ + "!/META-INF/MANIFEST.MF");
+ Manifest manifest = new Manifest(manifestUrl.openStream());
+ Attributes att = manifest.getMainAttributes();
+ String layout = null;
+ if (att != null) {
+ layout = att.getValue(SIGNATURE_LAYOUT);
+ }
+ if (layout != null) {
+ log.info("setting SignatureLayout header to " + layout);
+ properties.put(SIGNATURE_LAYOUT, layout);
+ } else {
+ log.warn("no SignatureLayout version defined");
+ }
+ } catch (Exception ex) {
+ log.warn("Cannot read manifest", ex);
+ }
+ }
+ }
+
+ public void configureNetwork() {
+ String proxy = getProperty("HTTPProxyHost");
+ String portString = getProperty("HTTPProxyPort");
+ if ((proxy == null) || (proxy.equals(""))) {
+ log.info("No proxy configured");
+ } else {
+ log.info("Setting proxy to: " + proxy + ":" + portString);
+ System.setProperty("proxyHost", proxy);
+ System.setProperty("proxyPort", portString);
+ }
+ String timeout = getProperty("DefaultSocketTimeout");
+ if ((timeout != null) && (!timeout.equals(""))) {
+ System.setProperty("sun.net.client.defaultConnectTimeout", timeout);
+ }
+ }
+
+ public void configureVersion() {
+ if (properties.getProperty(USERAGENT_CONFIG_P) == null) {
+ Properties p = new Properties();
+ try {
+ InputStream is = getManifest();
+ if (is != null) {
+ p.load(getManifest());
+ String version = p.getProperty("Implementation-Build");
+ if (version == null) {
+ version="UNKNOWN";
+ }
+ properties.setProperty(USERAGENT_CONFIG_P, USERAGENT_BASE + version);
+ log.debug("Setting user agent to: "
+ + properties.getProperty(USERAGENT_CONFIG_P));
+ } else {
+ log.warn("Failed to read manifest, setting user-agent to " + USERAGENT_DEFAULT);
+ properties.setProperty(USERAGENT_CONFIG_P, USERAGENT_DEFAULT);
+ }
+ } catch (IOException e) {
+ log.error(e);
+ }
+ } else {
+ log.info("using configured user agent " + properties.getProperty(USERAGENT_CONFIG_P));
+ }
+ }
+
+ /**
+ * TODO cleanup configuration (read MANIFEST, DataURLconfig,...)
+ */
+ public void configure() {
+ configureProviders();
+ configUrlConnections();
+ configViewer();
+ configureSSL();
+ configureVersion();
+ configureSingatureLayoutVersion();
+ configureNetwork();
+ //after configureVersion() and configureSignatureLayoutVersion()
+ DataUrl.setConfiguration(properties);
+ }
+
+ public void setConfiguration(Properties props) {
+ this.properties = props;
+ }
+
+ public String getProperty(String key) {
+ if (properties != null) {
+ return properties.getProperty(key);
+ }
+ return null;
+ }
+
+ public void configureSSL() {
+ X509Certificate[] caCerts = null;
+ try {
+ caCerts = getCACerts();
+ } catch (Exception e1) {
+ log.error("Cannot load CA certificates", e1);
+ }
+ String disableAll = getProperty("SSL.disableAllChecks");
+ String disableHostnameVerification = getProperty("SSL.disableHostnameVerification");
+ try {
+ KeyManager[] km = null;
+ SSLContext sslCtx = SSLContext
+ .getInstance(getProperty("SSL.sslProtocol"));
+ if ((disableAll != null) && (Boolean.parseBoolean(disableAll))) {
+ log.warn("--------------------------------------");
+ log.warn(" Disabling SSL Certificate Validation ");
+ log.warn("--------------------------------------");
+
+ sslCtx.init(km,
+ new TrustManager[] { new MyAlwaysTrustManager(caCerts) }, null);
+ } else {
+ MyPKITrustManager pkixTM = new MyPKITrustManager(certValidator,
+ getCertDir(), getCADir(), caCerts);
+ sslCtx.init(km, new TrustManager[] { pkixTM }, null);
+ }
+ DataUrl.setSSLSocketFactory(sslCtx.getSocketFactory());
+ URLDereferencer.getInstance().setSSLSocketFactory(
+ sslCtx.getSocketFactory());
+ } catch (Exception e) {
+ log.error("Cannot configure SSL", e);
+ }
+ if ((disableAll != null && Boolean.parseBoolean(disableAll))
+ || (disableHostnameVerification != null && Boolean
+ .parseBoolean(disableHostnameVerification))) {
+ log.warn("---------------------------------");
+ log.warn(" Disabling Hostname Verification ");
+ log.warn("---------------------------------");
+ DataUrl.setHostNameVerifier(new HostnameVerifier() {
+ @Override
+ public boolean verify(String hostname, SSLSession session) {
+ return true;
+ }
+ });
+ URLDereferencer.getInstance().setHostnameVerifier(new HostnameVerifier() {
+ @Override
+ public boolean verify(String hostname, SSLSession session) {
+ return true;
+ }
+ });
+ }
+ }
+
+ public void setCertValidator(CertValidator certValidator) {
+ this.certValidator = certValidator;
+ }
+
+ private static class MyPKITrustManager implements X509TrustManager {
+ private static Log log = LogFactory.getLog(MyPKITrustManager.class);
+
+ private CertValidator certValidator;
+ private X509Certificate[] trustedCerts;
+
+ public MyPKITrustManager(CertValidator cv, File certStore, File trustStore,
+ X509Certificate[] trustedCerts) {
+ certValidator = cv;
+ certValidator.init(certStore, trustStore);
+ this.trustedCerts = trustedCerts;
+ }
+
+ @Override
+ public void checkClientTrusted(X509Certificate[] chain, String authType)
+ throws CertificateException {
+ log.error("Did not expect this method to get called");
+ throw new CertificateException("Method not implemented");
+ }
+
+ private static iaik.x509.X509Certificate[] convertCerts(
+ X509Certificate[] certs) throws GeneralSecurityException {
+ iaik.x509.X509Certificate[] retVal = new iaik.x509.X509Certificate[certs.length];
+ int i = 0;
+ for (X509Certificate cert : certs) {
+ if (cert instanceof iaik.x509.X509Certificate) {
+ retVal[i++] = (iaik.x509.X509Certificate) cert;
+ } else {
+ retVal[i++] = new iaik.x509.X509Certificate(cert.getEncoded());
+ }
+ }
+ return retVal;
+ }
+
+ @Override
+ public void checkServerTrusted(X509Certificate[] chain, String authType)
+ throws CertificateException {
+ try {
+ boolean valid = certValidator.isCertificateValid(Thread.currentThread()
+ .getName(), convertCerts(chain));
+ if (!valid) {
+ throw new CertificateException("Certificate not valid");
+ }
+ } catch (GeneralSecurityException e) {
+ throw new CertificateException(e);
+ }
+ }
+
+ @Override
+ public X509Certificate[] getAcceptedIssuers() {
+ return trustedCerts;
+ }
+ }
+
+ private static class MyAlwaysTrustManager implements X509TrustManager {
+ private static Log log = LogFactory.getLog(MyAlwaysTrustManager.class);
+ private X509Certificate[] trustedCerts;
+
+ public MyAlwaysTrustManager(X509Certificate[] trustedCerts) {
+ this.trustedCerts = trustedCerts;
+ }
+
+ @Override
+ public void checkClientTrusted(X509Certificate[] arg0, String arg1)
+ throws CertificateException {
+ log.error("Did not expect this method to get called");
+ throw new CertificateException("Method not implemented");
+ }
+
+ @Override
+ public void checkServerTrusted(X509Certificate[] certs, String arg1)
+ throws CertificateException {
+ log.warn("-------------------------------------");
+ log.warn("SSL Certificate Validation Disabled !");
+ log.warn("-------------------------------------");
+ }
+
+ @Override
+ public X509Certificate[] getAcceptedIssuers() {
+ return trustedCerts;
+ }
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/IAIKCommonsLog.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/IAIKCommonsLog.java
new file mode 100644
index 00000000..1b7dd189
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/IAIKCommonsLog.java
@@ -0,0 +1,144 @@
+/**
+ *
+ */
+package at.gv.egiz.bku.conf;
+
+import iaik.logging.Log;
+import iaik.logging.TransactionId;
+
+/**
+ * @author mcentner
+ *
+ */
+public class IAIKCommonsLog implements Log {
+
+ /**
+ * The id that will be written to the log if the transactionid == null
+ */
+ public final static String NO_ID = "Null-ID";
+
+ protected org.apache.commons.logging.Log commonsLog;
+
+ protected String nodeId;
+
+ public IAIKCommonsLog(org.apache.commons.logging.Log log) {
+ this.commonsLog = log;
+ }
+
+ /* (non-Javadoc)
+ * @see iaik.logging.Log#debug(iaik.logging.TransactionId, java.lang.Object, java.lang.Throwable)
+ */
+ @Override
+ public void debug(TransactionId transactionId, Object message, Throwable t) {
+ if (commonsLog.isDebugEnabled()) {
+ commonsLog.debug(nodeId + ": "
+ + ((transactionId != null) ? transactionId.getLogID() : NO_ID) + ": "
+ + message, t);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see iaik.logging.Log#info(iaik.logging.TransactionId, java.lang.Object, java.lang.Throwable)
+ */
+ @Override
+ public void info(TransactionId transactionId, Object message, Throwable t) {
+ if (commonsLog.isInfoEnabled()) {
+ commonsLog.info(nodeId + ": "
+ + ((transactionId != null) ? transactionId.getLogID() : NO_ID) + ": "
+ + message, t);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see iaik.logging.Log#warn(iaik.logging.TransactionId, java.lang.Object, java.lang.Throwable)
+ */
+ @Override
+ public void warn(TransactionId transactionId, Object message, Throwable t) {
+ if (commonsLog.isWarnEnabled()) {
+ commonsLog.warn(nodeId + ": "
+ + ((transactionId != null) ? transactionId.getLogID() : NO_ID) + ": "
+ + message, t);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see iaik.logging.Log#error(iaik.logging.TransactionId, java.lang.Object, java.lang.Throwable)
+ */
+ @Override
+ public void error(TransactionId transactionId, Object message, Throwable t) {
+ if (commonsLog.isErrorEnabled()) {
+ commonsLog.error(nodeId + ": "
+ + ((transactionId != null) ? transactionId.getLogID() : NO_ID) + ": "
+ + message, t);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see iaik.logging.Log#fatal(iaik.logging.TransactionId, java.lang.Object, java.lang.Throwable)
+ */
+ @Override
+ public void fatal(TransactionId transactionId, Object message, Throwable t) {
+ if (commonsLog.isFatalEnabled()) {
+ commonsLog.fatal(nodeId + ": "
+ + ((transactionId != null) ? transactionId.getLogID() : NO_ID) + ": "
+ + message, t);
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see iaik.logging.Log#setNodeId(java.lang.String)
+ */
+ @Override
+ public void setNodeId(String nodeId) {
+ this.nodeId = nodeId;
+ }
+
+ /* (non-Javadoc)
+ * @see iaik.logging.Log#getNodeId()
+ */
+ @Override
+ public String getNodeId() {
+ return nodeId;
+ }
+
+ /* (non-Javadoc)
+ * @see iaik.logging.Log#isDebugEnabled()
+ */
+ @Override
+ public boolean isDebugEnabled() {
+ return commonsLog.isDebugEnabled();
+ }
+
+ /* (non-Javadoc)
+ * @see iaik.logging.Log#isInfoEnabled()
+ */
+ @Override
+ public boolean isInfoEnabled() {
+ return commonsLog.isInfoEnabled();
+ }
+
+ /* (non-Javadoc)
+ * @see iaik.logging.Log#isWarnEnabled()
+ */
+ @Override
+ public boolean isWarnEnabled() {
+ return commonsLog.isWarnEnabled();
+ }
+
+ /* (non-Javadoc)
+ * @see iaik.logging.Log#isErrorEnabled()
+ */
+ @Override
+ public boolean isErrorEnabled() {
+ return commonsLog.isErrorEnabled();
+ }
+
+ /* (non-Javadoc)
+ * @see iaik.logging.Log#isFatalEnabled()
+ */
+ @Override
+ public boolean isFatalEnabled() {
+ return commonsLog.isFatalEnabled();
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/IAIKCommonsLogFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/IAIKCommonsLogFactory.java
new file mode 100644
index 00000000..14e2c757
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/conf/IAIKCommonsLogFactory.java
@@ -0,0 +1,59 @@
+/**
+ *
+ */
+package at.gv.egiz.bku.conf;
+
+import org.apache.commons.logging.impl.WeakHashtable;
+
+import iaik.logging.Log;
+import iaik.logging.LogConfigurationException;
+import iaik.logging.LogFactory;
+
+/**
+ * @author mcentner
+ *
+ */
+public class IAIKCommonsLogFactory extends LogFactory {
+
+ protected WeakHashtable instances = new WeakHashtable();
+
+ /* (non-Javadoc)
+ * @see iaik.logging.LogFactory#getInstance(java.lang.String)
+ */
+ @Override
+ public Log getInstance(String name) throws LogConfigurationException {
+ org.apache.commons.logging.Log commonsLog = org.apache.commons.logging.LogFactory.getLog(name);
+ Log log = (Log) instances.get(commonsLog);
+ if (log == null) {
+ log = new IAIKCommonsLog(commonsLog);
+ log.setNodeId(node_id_);
+ instances.put(commonsLog, log);
+ }
+ return log;
+ }
+
+ /* (non-Javadoc)
+ * @see iaik.logging.LogFactory#getInstance(java.lang.Class)
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public Log getInstance(Class clazz) throws LogConfigurationException {
+ org.apache.commons.logging.Log commonsLog = org.apache.commons.logging.LogFactory.getLog(clazz);
+ Log log = (Log) instances.get(commonsLog);
+ if (log == null) {
+ log = new IAIKCommonsLog(commonsLog);
+ log.setNodeId(node_id_);
+ instances.put(commonsLog, log);
+ }
+ return log;
+ }
+
+ /* (non-Javadoc)
+ * @see iaik.logging.LogFactory#release()
+ */
+ @Override
+ public void release() {
+ instances.clear();
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/AccessControlInvocation.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/AccessControlInvocation.java
new file mode 100644
index 00000000..014b7fd7
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/AccessControlInvocation.java
@@ -0,0 +1,21 @@
+/*
+* 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.slcommands;
+
+public class AccessControlInvocation implements
+ at.gv.egiz.bku.slcommands.InvocationStrategy {
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/CreateXMLSignatureCommand.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/CreateXMLSignatureCommand.java
new file mode 100644
index 00000000..2d87c39f
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/CreateXMLSignatureCommand.java
@@ -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.
+*/
+package at.gv.egiz.bku.slcommands;
+
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.bku.slexceptions.SLRequestException;
+
+public interface CreateXMLSignatureCommand extends SLCommand {
+
+ public void prepareXMLSignature() throws SLCommandException, SLRequestException;
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/CreateXMLSignatureResult.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/CreateXMLSignatureResult.java
new file mode 100644
index 00000000..4bc2820b
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/CreateXMLSignatureResult.java
@@ -0,0 +1,20 @@
+/*
+* 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.slcommands;
+
+public interface CreateXMLSignatureResult extends SLResult {
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/ErrorResult.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/ErrorResult.java
new file mode 100644
index 00000000..5d52c0ea
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/ErrorResult.java
@@ -0,0 +1,20 @@
+/*
+* 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.slcommands;
+
+public interface ErrorResult extends SLResult {
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/GetStatusCommand.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/GetStatusCommand.java
new file mode 100644
index 00000000..19099b63
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/GetStatusCommand.java
@@ -0,0 +1,26 @@
+/*
+ * 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.slcommands;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public interface GetStatusCommand extends SLCommand {
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/GetStatusResult.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/GetStatusResult.java
new file mode 100644
index 00000000..c5518f51
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/GetStatusResult.java
@@ -0,0 +1,26 @@
+/*
+ * 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.slcommands;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public interface GetStatusResult extends SLResult {
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxReadCommand.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxReadCommand.java
new file mode 100644
index 00000000..73fddf1f
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxReadCommand.java
@@ -0,0 +1,28 @@
+/*
+* 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.slcommands;
+
+public interface InfoboxReadCommand extends SLCommand {
+ public String getInfoboxIdentifier();
+
+ /**
+ * Convenience method to get the domain identifier if the infobox
+ * referes to a Identitylink.
+ * @return the domain id or null if the Infobox is not of type Identitylink or no domain parameter was specified
+ */
+ public String getIdentityLinkDomainId();
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxReadResult.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxReadResult.java
new file mode 100644
index 00000000..c6a51362
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxReadResult.java
@@ -0,0 +1,20 @@
+/*
+* 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.slcommands;
+
+public interface InfoboxReadResult extends SLResult {
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxUpdateCommand.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxUpdateCommand.java
new file mode 100644
index 00000000..c2974785
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxUpdateCommand.java
@@ -0,0 +1,23 @@
+/*
+* 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.slcommands;
+
+public interface InfoboxUpdateCommand extends SLCommand {
+
+ public String getInfoboxIdentifier();
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxUpdateResult.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxUpdateResult.java
new file mode 100644
index 00000000..d180facf
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InfoboxUpdateResult.java
@@ -0,0 +1,21 @@
+/*
+* 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.slcommands;
+
+public interface InfoboxUpdateResult extends SLResult {
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InvocationStrategy.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InvocationStrategy.java
new file mode 100644
index 00000000..6b410fac
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/InvocationStrategy.java
@@ -0,0 +1,20 @@
+/*
+* 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.slcommands;
+
+public interface InvocationStrategy {
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/NullOperationCommand.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/NullOperationCommand.java
new file mode 100644
index 00000000..0651f882
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/NullOperationCommand.java
@@ -0,0 +1,20 @@
+/*
+* 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.slcommands;
+
+public interface NullOperationCommand extends SLCommand {
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/NullOperationResult.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/NullOperationResult.java
new file mode 100644
index 00000000..c36c879e
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/NullOperationResult.java
@@ -0,0 +1,20 @@
+/*
+* 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.slcommands;
+
+public interface NullOperationResult extends SLResult {
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommand.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommand.java
new file mode 100644
index 00000000..a8625946
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommand.java
@@ -0,0 +1,31 @@
+/*
+* 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.slcommands;
+
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+
+public interface SLCommand {
+
+ public final String NAMESPACE_URI = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#";
+
+ public String getName();
+
+ public void init(SLCommandContext aCtx, Object aUnmarshalledRequest) throws SLCommandException;
+
+ public SLResult execute();
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandContext.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandContext.java
new file mode 100644
index 00000000..5af2afac
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandContext.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.slcommands;
+
+import java.util.Locale;
+
+import at.gv.egiz.bku.utils.urldereferencer.URLDereferencerContext;
+import at.gv.egiz.stal.STAL;
+
+public class SLCommandContext {
+
+ private STAL stal;
+ private URLDereferencerContext urlDerefCtx;
+
+ private Locale locale;
+
+ public void setSTAL(STAL aStal) {
+ this.stal = aStal;
+ }
+
+ public void setURLDereferencerContext(URLDereferencerContext aCtx) {
+ this.urlDerefCtx = aCtx;
+ }
+
+ public STAL getSTAL() {
+ return stal;
+ }
+
+ public URLDereferencerContext getURLDereferencerContext() {
+ return urlDerefCtx;
+ }
+
+ public Locale getLocale() {
+ return locale;
+ }
+
+ public void setLocale(Locale locale) {
+ this.locale = locale;
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandFactory.java
new file mode 100644
index 00000000..6e84867e
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandFactory.java
@@ -0,0 +1,395 @@
+/*
+* 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.slcommands;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.XMLConstants;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.UnmarshalException;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.ValidationEvent;
+import javax.xml.bind.ValidationEventLocator;
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLEventReader;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamSource;
+import javax.xml.validation.Schema;
+import javax.xml.validation.SchemaFactory;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXParseException;
+
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.bku.slexceptions.SLExceptionMessages;
+import at.gv.egiz.bku.slexceptions.SLRequestException;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+import at.gv.egiz.bku.slexceptions.SLVersionException;
+import at.gv.egiz.bku.utils.DebugReader;
+import at.gv.egiz.slbinding.RedirectEventFilter;
+import at.gv.egiz.slbinding.RedirectUnmarshallerListener;
+import at.gv.egiz.validation.ReportingValidationEventHandler;
+
+public class SLCommandFactory {
+
+ /**
+ * Schema files required for Security Layer command validation.
+ */
+ public static final String[] SCHEMA_FILES = new String[]{
+ "at/gv/egiz/bku/slcommands/schema/xml.xsd",
+ "at/gv/egiz/bku/slcommands/schema/xmldsig-core-schema.xsd",
+ "at/gv/egiz/bku/slcommands/schema/Core-1.2.xsd",
+ "at/gv/egiz/bku/slcommands/schema/Core.20020225.xsd",
+ "at/gv/egiz/bku/slcommands/schema/Core.20020831.xsd"
+ };
+ /**
+ * Logging facility.
+ */
+ static Log log = LogFactory.getLog(SLCommandFactory.class);
+ /**
+ * The instance returned by {@link #getInstance()}.
+ */
+ private static SLCommandFactory instance;
+ /**
+ * Schema for Security Layer command validation.
+ */
+ private Schema slSchema;
+ /**
+ * The JAXBContext.
+ */
+ private JAXBContext jaxbContext;
+ /**
+ * The map of <namespaceURI>:<localName> to implementation class of the
+ * corresponding {@link SLCommand}.
+ */
+ private Map<String, Class<? extends SLCommand>> slRequestTypeMap = new HashMap<String, Class<? extends SLCommand>>();
+
+ /**
+ * The mapping of a requests's qualified name to a concrete command factories.
+ */
+ private Map<QName, AbstractSLCommandFactory> slCommandFactories = new HashMap<QName, AbstractSLCommandFactory>();
+
+ /**
+ * Configures the singleton instance with command implementations
+ * @param commandImplMap
+ * @throws ClassNotFoundException
+ */
+ @SuppressWarnings("unchecked")
+ public void setCommandImpl(Map<String, String> commandImplMap) throws ClassNotFoundException {
+ ClassLoader cl = getClass().getClassLoader();
+ for (String key : commandImplMap.keySet()) {
+ Class<? extends SLCommand> impl = (Class<? extends SLCommand>) cl.loadClass(commandImplMap.get(key));
+ log.debug("Registering sl command implementation for :"+key+ "; implementation class: "+impl.getCanonicalName());
+ slRequestTypeMap.put(key, impl);
+ }
+ }
+
+ public void setConcreteFactories(Map<QName, AbstractSLCommandFactory> factories) {
+ if (log.isDebugEnabled()) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("Registered sl command factory for");
+ for (QName qname : factories.keySet()) {
+ sb.append("\n " + qname + " : " + factories.get(qname).getClass());
+ }
+ log.debug(sb);
+ }
+ slCommandFactories = factories;
+ }
+
+ /**
+ * Register an {@link SLCommand} implementation class of a Security Layer
+ * command with the given <code>namespaceUri</code> and <code>localname</code>
+ * .
+ *
+ * @param namespaceUri
+ * the namespace URI of the Security Layer command
+ * @param localname
+ * the localname of the Security Layer command
+ * @param slCommandClass
+ * the implementation class, or <code>null</code> to deregister a
+ * currently registered class
+ */
+ public void setImplClass(String namespaceUri, String localname,
+ Class<? extends SLCommand> slCommandClass) {
+ if (slCommandClass != null) {
+ slRequestTypeMap.put(namespaceUri + ":" + localname, slCommandClass);
+ } else {
+ slRequestTypeMap.remove(namespaceUri + ":" + localname);
+ }
+ }
+
+ /**
+ * Returns the implementation class of an {@link SLCommand} with the given
+ * <code>name</code>, or <code>null</code> if no such class is registered.
+ *
+ * @param name
+ * the <code>QName</code> of the Security Layer command
+ * @return the implementation class, or <code>null</code> if no class is
+ * registered for the given <code>name</code>
+ */
+ public Class<? extends SLCommand> getImplClass(QName name) {
+ String namespaceURI = name.getNamespaceURI();
+ String localPart = name.getLocalPart();
+ return slRequestTypeMap.get(namespaceURI + ":" + localPart);
+ }
+
+ /**
+ * Sets the schema to validate Security Layer commands with.
+ *
+ * @param slSchema the schema to validate Security Layer commands with
+ */
+ public void setSLSchema(Schema slSchema) {
+ this.slSchema = slSchema;
+ }
+
+ /**
+ * @return the jaxbContext
+ */
+ public JAXBContext getJaxbContext() {
+ ensureJaxbContext();
+ return jaxbContext;
+ }
+
+ /**
+ * @param jaxbContext the jaxbContext to set
+ */
+ public void setJaxbContext(JAXBContext jaxbContext) {
+ this.jaxbContext = jaxbContext;
+ }
+
+ /**
+ * Initialize the JAXBContext.
+ */
+ private synchronized void ensureJaxbContext() {
+ if (jaxbContext == null) {
+ try {
+ String slPkg = at.buergerkarte.namespaces.securitylayer._1.ObjectFactory.class.getPackage().getName();
+ String xmldsigPkg = org.w3._2000._09.xmldsig_.ObjectFactory.class.getPackage().getName();
+ String cardChannelPkg = at.buergerkarte.namespaces.cardchannel.ObjectFactory.class.getPackage().getName();
+ String slPkgLegacy1_0 = at.buergerkarte.namespaces.securitylayer._20020225_.ObjectFactory.class.getPackage().getName();
+ String slPkgLegacy1_1 = at.buergerkarte.namespaces.securitylayer._20020831_.ObjectFactory.class.getPackage().getName();
+ setJaxbContext(JAXBContext.newInstance(slPkg + ":" + xmldsigPkg + ":" + cardChannelPkg
+ + ":" + slPkgLegacy1_0 + ":" + slPkgLegacy1_1));
+ } catch (JAXBException e) {
+ log.error("Failed to setup JAXBContext security layer request.", e);
+ throw new SLRuntimeException(e);
+ }
+ }
+ }
+
+ /**
+ * Initialize the security layer schema.
+ */
+ private synchronized void ensureSchema() {
+ if (slSchema == null) {
+ try {
+ SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+ ClassLoader cl = SLCommandFactory.class.getClassLoader();
+ Source[] sources = new Source[SCHEMA_FILES.length];
+ for (int i = 0; i < SCHEMA_FILES.length; i++) {
+ String schemaFile = SCHEMA_FILES[i];
+ URL schemaURL = cl.getResource(schemaFile);
+ if (schemaURL == null) {
+ throw new SLRuntimeException("Failed to load schema file " + schemaFile + ".");
+ }
+ log.debug("Schema location: " + schemaURL);
+ sources[i] = new StreamSource(schemaURL.openStream());
+ }
+ Schema schema = schemaFactory.newSchema(sources);
+ log.debug("Schema successfully created.");
+ setSLSchema(schema);
+ } catch (SAXException e) {
+ log.error("Failed to load security layer schema.", e);
+ throw new SLRuntimeException("Failed to load security layer schema.", e);
+ } catch (IOException e) {
+ log.error("Failed to load security layer schema.", e);
+ throw new SLRuntimeException("Failed to load security layer schema.", e);
+ }
+
+ }
+ }
+
+ /**
+ * Get an instance of the <code>SLCommandFactory</code>.
+ */
+ public synchronized static SLCommandFactory getInstance() {
+ if (instance == null) {
+ instance = new SLCommandFactory();
+ instance.ensureJaxbContext();
+ instance.ensureSchema();
+ }
+ return instance;
+ }
+
+ /**
+ * Private constructor used by {@link #getInstance()}.
+ */
+ private SLCommandFactory() {
+ }
+
+ /**
+ * Unmarshalls from the given <code>source</code>.
+ *
+ * @see Unmarshaller#unmarshal(Source)
+ *
+ * <em>Note:</em>Could replace JAXB's unmarshal-time validation engine (see commented code), however,
+ * we need a redirect filter.
+ *
+ * @param source
+ * the source to unmarshal from
+ * @return the object returned by {@link Unmarshaller#unmarshal(Source)}
+ * @throws SLRequestException
+ * if unmarshalling fails
+ * @throws SLRuntimeException
+ * if an unexpected error occurs configuring the unmarshaller or if
+ * unmarshalling fails with an unexpected error
+ */
+ protected Object unmarshal(Source source) throws SLRuntimeException,
+ SLRequestException {
+
+ Object object;
+ ReportingValidationEventHandler validationEventHandler = new ReportingValidationEventHandler();
+ try {
+
+ XMLInputFactory inputFactory = XMLInputFactory.newInstance();
+ XMLEventReader eventReader = inputFactory.createXMLEventReader(source);
+ RedirectEventFilter redirectEventFilter = new RedirectEventFilter();
+ XMLEventReader filteredReader = inputFactory.createFilteredReader(eventReader, redirectEventFilter);
+
+ Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+ unmarshaller.setListener(new RedirectUnmarshallerListener(redirectEventFilter));
+ if (slSchema != null) {
+ unmarshaller.setSchema(slSchema);
+ }
+ log.trace("Before unmarshal().");
+ unmarshaller.setEventHandler(validationEventHandler);
+ object = unmarshaller.unmarshal(filteredReader);
+ log.trace("After unmarshal().");
+ } catch (UnmarshalException e) {
+ if (log.isDebugEnabled()) {
+ log.debug("Failed to unmarshall security layer request.", e);
+ } else {
+ log.info("Failed to unmarshall security layer request." + e.getMessage());
+ }
+ if (validationEventHandler.getErrorEvent() != null) {
+ // Validation Error
+ ValidationEvent errorEvent = validationEventHandler.getErrorEvent();
+ ValidationEventLocator locator = errorEvent.getLocator();
+ throw new SLRequestException(3002,
+ SLExceptionMessages.EC3002_INVALID, new Object[]{errorEvent.getMessage()});
+ }
+ Throwable cause = e.getCause();
+ if (cause instanceof SAXParseException) {
+ throw new SLRequestException(3000,
+ SLExceptionMessages.EC3000_UNCLASSIFIED, new Object[]{cause.getMessage()});
+ } else {
+ throw new SLRequestException(3000,
+ SLExceptionMessages.EC3000_UNCLASSIFIED, new Object[]{e});
+ }
+ } catch (JAXBException e) {
+ // unexpected error
+ log.error("Failed to unmarshall security layer request.", e);
+ throw new SLRuntimeException(e);
+ } catch (XMLStreamException e) {
+ // unexpected error
+ log.error("Failed to unmarshall security layer request.", e);
+ throw new SLRuntimeException(e);
+ }
+
+ return object;
+
+ }
+
+ /**
+ * Creates a new <code>SLCommand</code> from the given <code>source</code> and
+ * <code>context</code>.
+ *
+ * @param source
+ * the <code>Source</code> to unmarshall from
+ * @param context
+ * the context for the created <code>SLCommand</code>
+ * @return the <code>SLCommand</code> unmarshalled from the given
+ * <code>source</code>
+ * @throws SLRequestException
+ * if unmarshalling fails
+ * @throws SLCommandException
+ * if command ist not supported
+ * @throws SLRuntimeException
+ * if an unexpected error occurs configuring the unmarshaller, if
+ * unmarshalling fails with an unexpected error or if the
+ * corresponding <code>SLCommand</code> could not be instantiated
+ * @throws SLVersionException
+ */
+ @SuppressWarnings("unchecked")
+ public SLCommand createSLCommand(Source source, SLCommandContext context)
+ throws SLCommandException, SLRuntimeException, SLRequestException, SLVersionException {
+
+ DebugReader dr = null;
+ if (log.isTraceEnabled() && source instanceof StreamSource) {
+ StreamSource streamSource = (StreamSource) source;
+ if (streamSource.getReader() != null) {
+ dr = new DebugReader(streamSource.getReader(), "SLCommand unmarshalled from:\n");
+ streamSource.setReader(dr);
+ }
+ }
+
+ Object object;
+ try {
+ object = unmarshal(source);
+ } catch (SLRequestException e) {
+ throw e;
+ } finally {
+ if (dr != null) {
+ log.trace(dr.getCachedString());
+ }
+ }
+
+ if (!(object instanceof JAXBElement)) {
+ // invalid request
+ log.info("Invalid security layer request. " + object.toString());
+ throw new SLRequestException(3002, SLExceptionMessages.EC3002_INVALID,
+ new Object[]{object.toString()});
+ }
+
+ QName qName = ((JAXBElement) object).getName();
+ if (!SLCommand.NAMESPACE_URI.equals(qName.getNamespaceURI())) {
+ // security layer request version not supported
+ log.info("Unsupported security layer request version : " + qName.getNamespaceURI());
+ throw new SLVersionException(qName.getNamespaceURI());
+ }
+
+ AbstractSLCommandFactory concreteFactory = slCommandFactories.get(qName);
+ if (concreteFactory == null) {
+ // command not supported
+ log.info("Unsupported command received: " + qName.toString());
+ throw new SLCommandException(4011,
+ SLExceptionMessages.EC4011_NOTIMPLEMENTED, new Object[]{qName.toString()});
+ }
+
+ return concreteFactory.createSLCommand(context, (JAXBElement<?>) object);
+
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandInvoker.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandInvoker.java
new file mode 100644
index 00000000..c28288c9
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLCommandInvoker.java
@@ -0,0 +1,46 @@
+/*
+* 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.slcommands;
+
+import at.gv.egiz.bku.slexceptions.SLCanceledException;
+import at.gv.egiz.bku.slexceptions.SLException;
+
+public interface SLCommandInvoker {
+
+ /**
+ *
+ * @param aContext
+ * @throws SLCanceledException if the security management prevents execution of this command
+ */
+ public void invoke(SLSourceContext aContext) throws SLException;
+
+ /**
+ *
+ * @param aContext
+ * @return
+ * @throws SLCanceledException if the security management prevents execution of this command
+ */
+ public SLResult getResult(SLTargetContext aContext) throws SLException;
+
+ public void setCommand(at.gv.egiz.bku.slcommands.SLCommand aCmd);
+
+ /**
+ * Prototype creation
+ * @return
+ */
+ public SLCommandInvoker newInstance();
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLMarshallerFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLMarshallerFactory.java
new file mode 100644
index 00000000..e0a375cf
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLMarshallerFactory.java
@@ -0,0 +1,172 @@
+/*
+* Copyright 2009 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.slcommands;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+import at.gv.egiz.marshal.MarshallerFactory;
+
+public class SLMarshallerFactory {
+
+ static Log log = LogFactory.getLog(SLMarshallerFactory.class);
+
+ /**
+ * The JAXBContext used for result marshaling.
+ * <p>
+ * Note: Different contexts are used for marshaling and unmarshaling of
+ * security layer requests and responses to avoid propagation of namespace
+ * declarations of legacy namespaces into marshaled results.
+ * </p>
+ * @see #jaxbContextLegacy
+ */
+ protected static JAXBContext context;
+
+ /**
+ * The JAXBContext used for marshaling of of results in the legacy namespace.
+ */
+ protected static JAXBContext legacyContext;
+
+ // ------------------- initialization on demand idiom -------------------
+ // see http://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom
+ // ----------------------------------------------------------------------
+
+ /**
+ * Private constructor called by {@link SLMarshallerFactoryInstanceHolder}.
+ */
+ private SLMarshallerFactory() {
+ // context is initialized immediately while the legacy context is initialized only on demand
+ try {
+ String slPkg = at.buergerkarte.namespaces.securitylayer._1.ObjectFactory.class.getPackage().getName();
+ String xmldsigPkg = org.w3._2000._09.xmldsig_.ObjectFactory.class.getPackage().getName();
+ String cardChannelPkg = at.buergerkarte.namespaces.cardchannel.ObjectFactory.class.getPackage().getName();
+ context = JAXBContext.newInstance(slPkg + ":" + xmldsigPkg + ":" + cardChannelPkg);
+ } catch (JAXBException e) {
+ log.error("Failed to setup JAXBContext security layer request.", e);
+ throw new SLRuntimeException(e);
+ }
+ }
+
+ /**
+ * The lazy instance holder for this SLMarshallerFactory.
+ */
+ private static class SLMarshallerFactoryInstanceHolder {
+ /**
+ * The instance returned by {@link SLMarshallerFactory#getInstance()}
+ */
+ private static final SLMarshallerFactory instance = new SLMarshallerFactory();
+ }
+
+ /**
+ * Get an instance of the <code>SLMarshallerFactory</code>.
+ */
+ public static SLMarshallerFactory getInstance() {
+ return SLMarshallerFactoryInstanceHolder.instance;
+ }
+
+ // ----------------------------------------------------------------------
+
+ /**
+ * Initialize the JAXBContext for the legacy namespace.
+ */
+ private static synchronized void ensureLegacyContext() {
+ // legacy marshaller is initialized only on demand
+ if (legacyContext == null) {
+ try {
+ String slPkgLegacy1_0 = at.buergerkarte.namespaces.securitylayer._20020225_.ObjectFactory.class.getPackage().getName();
+ String slPkgLegacy1_1 = at.buergerkarte.namespaces.securitylayer._20020831_.ObjectFactory.class.getPackage().getName();
+ String xmldsigPkg = org.w3._2000._09.xmldsig_.ObjectFactory.class.getPackage().getName();
+ String cardChannelPkg = at.buergerkarte.namespaces.cardchannel.ObjectFactory.class.getPackage().getName();
+ legacyContext = JAXBContext.newInstance(slPkgLegacy1_0 + ":" + slPkgLegacy1_1 + ":" + xmldsigPkg + ":" + cardChannelPkg);
+ } catch (JAXBException e) {
+ log.error("Failed to setup JAXBContext security layer request.", e);
+ throw new SLRuntimeException(e);
+ }
+ }
+ }
+
+ /**
+ * Creates an SL marshaller.
+ *
+ * @param formattedOutput
+ * <code>true</code> if the marshaller should produce formated
+ * output, <code>false</code> otherwise
+ * @return an SL marshaller
+ */
+ public Marshaller createMarshaller(boolean formattedOutput) {
+ return createMarshaller(formattedOutput, false);
+ }
+
+ /**
+ * Creates an SL marshaller.
+ *
+ * @param formattedOutput
+ * <code>true</code> if the marshaller should produce formated
+ * output, <code>false</code> otherwise
+ * @param fragment
+ * <code>true</code> if the marshaller should produce a XML fragment
+ * (omit XML declaration), <code>false</code> otherwise
+ * @return an SL marshaller
+ */
+ public Marshaller createMarshaller(boolean formattedOutput, boolean fragment) {
+ try {
+ return MarshallerFactory.createMarshaller(context, formattedOutput, fragment);
+ } catch (JAXBException e) {
+ log.fatal("Failed to marshall error response.", e);
+ throw new SLRuntimeException("Failed to marshall error response.", e);
+ }
+ }
+
+ /**
+ * Creates a legacy SL marshaller.
+ *
+ * @param formattedOutput
+ * <code>true</code> if the marshaller should produce formated
+ * output, <code>false</code> otherwise
+ * @return a legacy SL marshaller
+ */
+ public Marshaller createLegacyMarshaller(boolean formattedOutput) {
+ return createLegacyMarshaller(formattedOutput, false);
+ }
+
+ /**
+ * Creates a legacy SL marshaller.
+ *
+ * @param formattedOutput
+ * <code>true</code> if the marshaller should produce formated
+ * output, <code>false</code> otherwise
+ * @param fragment
+ * <code>true</code> if the marshaller should produce a XML fragment
+ * (omit XML declaration), <code>false</code> otherwise
+ * @return a legacy SL marshaller
+ */
+ public Marshaller createLegacyMarshaller(boolean formattedOutput, boolean fragment) {
+ try {
+ ensureLegacyContext();
+ return MarshallerFactory.createMarshaller(legacyContext, formattedOutput, fragment);
+ } catch (JAXBException e) {
+ log.fatal("Failed to marshall error response.", e);
+ throw new SLRuntimeException("Failed to marshall error response.", e);
+ }
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLResult.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLResult.java
new file mode 100644
index 00000000..e9e483c5
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLResult.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.bku.slcommands;
+
+import javax.xml.transform.Result;
+import javax.xml.transform.Templates;
+
+public interface SLResult {
+
+ public static enum SLResultType {BINARY, XML};
+
+ public SLResultType getResultType();
+
+ /**
+ * The MIME Type of the Result.
+ *
+ * @return may result null if unknown.
+ */
+ public String getMimeType();
+
+ public void writeTo(Result aResult, boolean fragment);
+
+ /**
+ *
+ * @param result
+ * @param fragment TODO
+ * @param transformer may be null.
+ */
+ public void writeTo(Result result, Templates templates, boolean fragment);
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLSourceContext.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLSourceContext.java
new file mode 100644
index 00000000..f25a0ea4
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLSourceContext.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.slcommands;
+
+import java.net.URL;
+import java.security.cert.X509Certificate;
+
+import at.gv.egiz.bku.utils.binding.Protocol;
+
+
+public class SLSourceContext {
+
+ private URL sourceUrl;
+ private boolean sourceIsDataURL;
+ private X509Certificate sourceCertificate;
+ private String sourceHTTPReferer;
+
+ public URL getSourceUrl() {
+ return sourceUrl;
+ }
+
+ public void setSourceUrl(URL sourceProtocol) {
+ this.sourceUrl = sourceProtocol;
+ }
+
+ public boolean isSourceIsDataURL() {
+ return sourceIsDataURL;
+ }
+
+ public void setSourceIsDataURL(boolean sourceIsDataURL) {
+ this.sourceIsDataURL = sourceIsDataURL;
+ }
+
+ public X509Certificate getSourceCertificate() {
+ return sourceCertificate;
+ }
+
+ public void setSourceCertificate(X509Certificate sourceCertificate) {
+ this.sourceCertificate = sourceCertificate;
+ }
+
+ public String getSourceHTTPReferer() {
+ return sourceHTTPReferer;
+ }
+
+ public void setSourceHTTPReferer(String sourceHTTPReferer) {
+ this.sourceHTTPReferer = sourceHTTPReferer;
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLTargetContext.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLTargetContext.java
new file mode 100644
index 00000000..f9df3ced
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/SLTargetContext.java
@@ -0,0 +1,51 @@
+/*
+* 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.slcommands;
+
+import java.net.URL;
+import java.security.cert.X509Certificate;
+
+public class SLTargetContext {
+ private URL targetUrl;
+ private boolean targetIsDataURL;
+ private X509Certificate targetCertificate;
+
+ public URL getTargetUrl() {
+ return targetUrl;
+ }
+
+ public void setTargetUrl(URL targetUrl) {
+ this.targetUrl = targetUrl;
+ }
+
+ public boolean isTargetIsDataURL() {
+ return targetIsDataURL;
+ }
+
+ public void setTargetIsDataURL(boolean targetIsDataURL) {
+ this.targetIsDataURL = targetIsDataURL;
+ }
+
+ public X509Certificate getTargetCertificate() {
+ return targetCertificate;
+ }
+
+ public void setTargetCertificate(X509Certificate targetCertificate) {
+ this.targetCertificate = targetCertificate;
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractAssocArrayInfobox.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractAssocArrayInfobox.java
new file mode 100644
index 00000000..9a4536e6
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractAssocArrayInfobox.java
@@ -0,0 +1,299 @@
+/*
+ * 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.slcommands.impl;
+
+import java.io.ByteArrayOutputStream;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Pattern;
+
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxAssocArrayPairType;
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadDataAssocArrayType;
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadParamsAssocArrayType;
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadRequestType;
+import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory;
+import at.buergerkarte.namespaces.securitylayer._1.XMLContentType;
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadParamsAssocArrayType.ReadKeys;
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadParamsAssocArrayType.ReadPairs;
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadParamsAssocArrayType.ReadValue;
+import at.gv.egiz.bku.slcommands.InfoboxReadResult;
+import at.gv.egiz.bku.slcommands.SLCommandContext;
+import at.gv.egiz.bku.slcommands.SLMarshallerFactory;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+
+/**
+ * An abstract base class for {@link Infobox} implementations of type associative array.
+ *
+ * @author mcentner
+ */
+public abstract class AbstractAssocArrayInfobox extends AbstractInfoboxImpl
+ implements AssocArrayInfobox {
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(AbstractAssocArrayInfobox.class);
+
+ /**
+ * The search string pattern.
+ */
+ public static final String SEARCH_STRING_PATTERN = "(.&&[^/])+(/.&&[^/])*";
+
+ /**
+ * @return the keys available in this infobox.
+ */
+ public abstract String[] getKeys();
+
+ /**
+ * @return <code>true</code> if the values are XML entities, or <code>false</code> otherwise.
+ */
+ public abstract boolean isValuesAreXMLEntities();
+
+ /**
+ * Returns a key to value mapping for the given <code>keys</code>.
+ *
+ * @param keys a list of keys
+ * @param cmdCtx the command context
+ *
+ * @return a key to value mapping for the given <code>keys</code>.
+ *
+ * @throws SLCommandException if obtaining the values fails
+ */
+ public abstract Map<String, Object> getValues(List<String> keys, SLCommandContext cmdCtx) throws SLCommandException;
+
+ /**
+ * Returns all keys that match the given <code>searchString</code>.
+ *
+ * @param searchString the search string
+ *
+ * @return all keys that match the given <code>searchString</code>
+ *
+ * @throws SLCommandException if the given search string is invalid
+ */
+ protected List<String> selectKeys(String searchString) throws SLCommandException {
+
+ if ("*".equals(searchString) || "**".equals(searchString)) {
+ return Arrays.asList(getKeys());
+ }
+
+ if (!searchString.contains("*")) {
+ Arrays.asList(getKeys()).contains(searchString);
+ return Collections.singletonList(searchString);
+ }
+
+ if (Pattern.matches(SEARCH_STRING_PATTERN, searchString)) {
+
+// for (int i = 0; i < searchString.length(); i++) {
+// int codePoint = searchString.codePointAt(i);
+//
+// }
+
+ // TODO : build pattern
+ return Collections.emptyList();
+ } else {
+ log.info("Got invalid search string '" + searchString + "'");
+ throw new SLCommandException(4010);
+ }
+
+ }
+
+ /**
+ * Read all keys specified by <code>readKeys</code>.
+ *
+ * @param readKeys
+ * the ReadKeys element
+ * @param cmdCtx
+ * the command context
+ * @return a corresponding InfoboxReadResult
+ *
+ * @throws SLCommandException
+ * if the ReadKeys element is invalid or obtaining the corresponding
+ * values fails
+ */
+ protected InfoboxReadResult readKeys(ReadKeys readKeys, SLCommandContext cmdCtx) throws SLCommandException {
+
+ List<String> selectedKeys = selectKeys(readKeys.getSearchString());
+
+ if (readKeys.isUserMakesUnique() && selectedKeys.size() > 1) {
+ log.info("UserMakesUnique not supported");
+ // TODO: give more specific error message
+ throw new SLCommandException(4010);
+ }
+
+ ObjectFactory objectFactory = new ObjectFactory();
+
+ InfoboxReadDataAssocArrayType infoboxReadDataAssocArrayType = objectFactory
+ .createInfoboxReadDataAssocArrayType();
+
+ List<String> keys = infoboxReadDataAssocArrayType.getKey();
+ keys.addAll(selectedKeys);
+
+ return new InfoboxReadResultImpl(infoboxReadDataAssocArrayType);
+
+ }
+
+ /**
+ * Read all pairs specified by <code>readPairs</code>.
+ *
+ * @param readPairs
+ * the readPairs element
+ * @param cmdCtx
+ * the command context
+ * @return a corresponding InfoboxReadResult
+ *
+ * @throws SLCommandException
+ * if the ReadPairs element is invalid or obtaining the corresponding
+ * values fails
+ */
+ protected InfoboxReadResult readPairs(ReadPairs readPairs, SLCommandContext cmdCtx) throws SLCommandException {
+
+ if (readPairs.isValuesAreXMLEntities() && !isValuesAreXMLEntities()) {
+ log.info("Got valuesAreXMLEntities=" + readPairs.isValuesAreXMLEntities() + " but infobox type is binary.");
+ throw new SLCommandException(4010);
+ }
+
+ List<String> selectedKeys = selectKeys(readPairs.getSearchString());
+
+ if (readPairs.isUserMakesUnique() && selectedKeys.size() > 1) {
+ log.info("UserMakesUnique not supported");
+ // TODO: give more specific error message
+ throw new SLCommandException(4010);
+ }
+
+ return new InfoboxReadResultImpl(marshallPairs(selectedKeys, getValues(
+ selectedKeys, cmdCtx), readPairs.isValuesAreXMLEntities()));
+ }
+
+ /**
+ * Read the value specified by <code>readPairs</code>.
+ *
+ * @param readValue
+ * the readValue element
+ * @param cmdCtx
+ * the command context
+ * @return a corresponding InfoboxReadResult
+ *
+ * @throws SLCommandException
+ * if the ReadValue element is invalid or obtaining the corresponding
+ * values fails
+ */
+ protected InfoboxReadResult readValue(ReadValue readValue, SLCommandContext cmdCtx) throws SLCommandException {
+
+ if (readValue.isValueIsXMLEntity() && !isValuesAreXMLEntities()) {
+ log.info("Got valuesAreXMLEntities=" + readValue.isValueIsXMLEntity() + " but infobox type is binary.");
+ throw new SLCommandException(4010);
+ }
+
+ List<String> selectedKeys;
+
+ if (Arrays.asList(getKeys()).contains(readValue.getKey())) {
+ selectedKeys = Collections.singletonList(readValue.getKey());
+ } else {
+ selectedKeys = Collections.emptyList();
+ }
+
+ return new InfoboxReadResultImpl(marshallPairs(selectedKeys, getValues(
+ selectedKeys, cmdCtx), readValue.isValueIsXMLEntity()));
+
+ }
+
+ protected InfoboxReadDataAssocArrayType marshallPairs(List<String> selectedKeys, Map<String, Object> values, boolean areXMLEntities) throws SLCommandException {
+
+ ObjectFactory objectFactory = new ObjectFactory();
+
+ InfoboxReadDataAssocArrayType infoboxReadDataAssocArrayType = objectFactory.createInfoboxReadDataAssocArrayType();
+
+ for (String key : selectedKeys) {
+ InfoboxAssocArrayPairType infoboxAssocArrayPairType = objectFactory.createInfoboxAssocArrayPairType();
+ infoboxAssocArrayPairType.setKey(key);
+
+ Object value = values.get(key);
+ if (areXMLEntities) {
+ if (value instanceof byte[]) {
+ log.info("Got valuesAreXMLEntities=" + areXMLEntities + " but infobox type is binary.");
+ throw new SLCommandException(4122);
+ } else {
+ XMLContentType contentType = objectFactory.createXMLContentType();
+ contentType.getContent().add(value);
+ infoboxAssocArrayPairType.setXMLContent(contentType);
+ }
+ } else {
+ infoboxAssocArrayPairType.setBase64Content((value instanceof byte[]) ? (byte[]) value : marshallValue(value));
+ }
+
+ infoboxReadDataAssocArrayType.getPair().add(infoboxAssocArrayPairType);
+ }
+
+ return infoboxReadDataAssocArrayType;
+
+ }
+
+ protected byte[] marshallValue(Object jaxbElement) throws SLCommandException {
+
+ Marshaller marshaller = SLMarshallerFactory.getInstance().createMarshaller(false);
+ ByteArrayOutputStream result = new ByteArrayOutputStream();
+ try {
+ marshaller.marshal(jaxbElement, result);
+ } catch (JAXBException e) {
+ log.info("Failed to marshall infobox content.", e);
+ throw new SLCommandException(4122);
+ }
+
+ return result.toByteArray();
+
+ }
+
+ @Override
+ public InfoboxReadResult read(InfoboxReadRequestType req,
+ SLCommandContext cmdCtx) throws SLCommandException {
+
+ InfoboxReadParamsAssocArrayType assocArrayParameters = req
+ .getAssocArrayParameters();
+
+ if (assocArrayParameters == null) {
+ log.info("Infobox type is AssocArray but got no AssocArrayParameters.");
+ throw new SLCommandException(4010);
+ }
+
+ if (assocArrayParameters.getReadKeys() != null) {
+ return readKeys(assocArrayParameters.getReadKeys(), cmdCtx);
+ }
+
+ if (assocArrayParameters.getReadPairs() != null) {
+ return readPairs(assocArrayParameters.getReadPairs(), cmdCtx);
+ }
+
+ // ReadValue
+ if (assocArrayParameters.getReadValue() != null) {
+ return readValue(assocArrayParameters.getReadValue(), cmdCtx);
+ }
+
+ log
+ .info("Infobox type is AssocArray but got invalid AssocArrayParameters.");
+ throw new SLCommandException(4010);
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractBinaryFileInfobox.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractBinaryFileInfobox.java
new file mode 100644
index 00000000..23394bd5
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractBinaryFileInfobox.java
@@ -0,0 +1,66 @@
+/*
+* 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.slcommands.impl;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadParamsBinaryFileType;
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadRequestType;
+
+/**
+ * An abstract base class for {@link Infobox} implementations of type binary file.
+ *
+ * @author mcentner
+ */
+public abstract class AbstractBinaryFileInfobox extends AbstractInfoboxImpl implements BinaryFileInfobox {
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(AbstractBinaryFileInfobox.class);
+
+ /**
+ * Is this infobox' content an XML entity?
+ */
+ protected boolean isXMLEntity = false;
+
+ /**
+ * @return <code>true</code> if this infobox' content is an XML entity or <code>false</code> otherwise.
+ */
+ public boolean isXMLEntity() {
+ return isXMLEntity;
+ }
+
+ /**
+ * Sets the value returned by {@link #isXMLEntity()} according to the given
+ * <code>request</code>.
+ *
+ * @param request the InfoboxReadRequest
+ */
+ public void setIsXMLEntity(InfoboxReadRequestType request) {
+
+ InfoboxReadParamsBinaryFileType binaryFileParameters = request.getBinaryFileParameters();
+ if (binaryFileParameters != null) {
+ isXMLEntity = binaryFileParameters.isContentIsXMLEntity();
+ log.debug("Got ContentIsXMLEntity=" + isXMLEntity + ".");
+ }
+
+ }
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractInfoboxCommandImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractInfoboxCommandImpl.java
new file mode 100644
index 00000000..b8e4030d
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractInfoboxCommandImpl.java
@@ -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.
+*/
+package at.gv.egiz.bku.slcommands.impl;
+
+import at.gv.egiz.bku.slcommands.SLCommandContext;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+
+/**
+ * An abstract base class for implementations of security layer infobox requests.
+ *
+ * @author mcentner
+ *
+ * @param <T>
+ */
+public abstract class AbstractInfoboxCommandImpl<T> extends SLCommandImpl<T> {
+
+ /**
+ * The infobox implementation.
+ */
+ protected Infobox infobox;
+
+ /**
+ * The infobox factory.
+ */
+ protected InfoboxFactory infoboxFactory;
+
+ /**
+ * @return the infoboxFactory
+ */
+ public InfoboxFactory getInfoboxFactory() {
+ return infoboxFactory;
+ }
+
+ /**
+ * @param infoboxFactory the infoboxFactory to set
+ */
+ public void setInfoboxFactory(InfoboxFactory infoboxFactory) {
+ this.infoboxFactory = infoboxFactory;
+ }
+
+ @Override
+ public void init(SLCommandContext ctx, Object request)
+ throws SLCommandException {
+ super.init(ctx, request);
+
+ String infoboxIdentifier = getInfoboxIdentifier(getRequestValue());
+
+ infobox = infoboxFactory.createInfobox(infoboxIdentifier);
+ }
+
+ /**
+ * Returns the infobox identifier given in <code>request</code>.
+ *
+ * @param request the request value
+ *
+ * @return the infobox identifier givne in <code>request</code>
+ */
+ protected abstract String getInfoboxIdentifier(T request);
+
+
+ public String getInfoboxIdentifier() {
+ if (infobox != null) {
+ return infobox.getIdentifier();
+ } else {
+ return null;
+ }
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractInfoboxImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractInfoboxImpl.java
new file mode 100644
index 00000000..564cb8ff
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractInfoboxImpl.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.bku.slcommands.impl;
+
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadRequestType;
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxUpdateRequestType;
+import at.gv.egiz.bku.slcommands.InfoboxReadResult;
+import at.gv.egiz.bku.slcommands.InfoboxUpdateResult;
+import at.gv.egiz.bku.slcommands.SLCommandContext;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+
+/**
+ * An abstract base class for {@link Infobox} implementations.
+ *
+ * @author mcentner
+ */
+public abstract class AbstractInfoboxImpl implements Infobox {
+
+ @Override
+ public InfoboxReadResult read(InfoboxReadRequestType request,
+ SLCommandContext cmdCtx) throws SLCommandException {
+ throw new SLCommandException(4011);
+ }
+
+ @Override
+ public InfoboxUpdateResult update(InfoboxUpdateRequestType request,
+ SLCommandContext cmdCtx) throws SLCommandException {
+ throw new SLCommandException(4011);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AssocArrayInfobox.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AssocArrayInfobox.java
new file mode 100644
index 00000000..908d95da
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AssocArrayInfobox.java
@@ -0,0 +1,27 @@
+/*
+ * 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.slcommands.impl;
+
+/**
+ * An {@link Infobox} of type associative array as defined in Security Layer
+ * 1.2.
+ *
+ * @author mcentner
+ */
+public interface AssocArrayInfobox extends Infobox {
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/BinaryFileInfobox.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/BinaryFileInfobox.java
new file mode 100644
index 00000000..c27f9446
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/BinaryFileInfobox.java
@@ -0,0 +1,27 @@
+/*
+* 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.slcommands.impl;
+
+/**
+ * An {@link Infobox} of type binary file as defined in Security Layer
+ * 1.2.
+ *
+ * @author mcentner
+ */
+public interface BinaryFileInfobox extends Infobox {
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CardChannelInfoboxImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CardChannelInfoboxImpl.java
new file mode 100644
index 00000000..19b84ac7
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CardChannelInfoboxImpl.java
@@ -0,0 +1,235 @@
+/*
+* 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.slcommands.impl;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.UnsupportedEncodingException;
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.WeakHashMap;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.buergerkarte.namespaces.cardchannel.ATRType;
+import at.buergerkarte.namespaces.cardchannel.CommandAPDUType;
+import at.buergerkarte.namespaces.cardchannel.ObjectFactory;
+import at.buergerkarte.namespaces.cardchannel.ResetType;
+import at.buergerkarte.namespaces.cardchannel.ResponseAPDUType;
+import at.buergerkarte.namespaces.cardchannel.ResponseType;
+import at.buergerkarte.namespaces.cardchannel.ScriptType;
+import at.buergerkarte.namespaces.cardchannel.VerifyAPDUType;
+import at.buergerkarte.namespaces.securitylayer._1.Base64XMLContentType;
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadRequestType;
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxUpdateRequestType;
+import at.buergerkarte.namespaces.securitylayer._1.XMLContentType;
+import at.gv.egiz.bku.slcommands.InfoboxReadResult;
+import at.gv.egiz.bku.slcommands.InfoboxUpdateResult;
+import at.gv.egiz.bku.slcommands.SLCommandContext;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+import at.gv.egiz.stal.STAL;
+import at.gv.egiz.stal.ext.APDUScriptRequest;
+import at.gv.egiz.stal.ext.APDUScriptResponse;
+import at.gv.egiz.stal.ext.APDUScriptRequest.RequestScriptElement;
+import at.gv.egiz.stal.ext.APDUScriptResponse.ResponseScriptElement;
+
+public class CardChannelInfoboxImpl extends AbstractBinaryFileInfobox {
+
+ private static Log log = LogFactory.getLog(CardChannelInfoboxImpl.class);
+
+ private static WeakHashMap<STAL, JAXBElement<ResponseType>> scriptResults = new WeakHashMap<STAL, JAXBElement<ResponseType>>();
+
+ private static JAXBContext jaxbContext;
+
+ static {
+ try {
+ jaxbContext = JAXBContext.newInstance(ObjectFactory.class.getPackage().getName());
+ } catch (JAXBException e) {
+ throw new SLRuntimeException("Failed to initalize CardChannel infobox.", e);
+ }
+ }
+
+ public CardChannelInfoboxImpl() {
+ isXMLEntity = true;
+ }
+
+ @Override
+ public String getIdentifier() {
+ return "CardChannel";
+ }
+
+ @Override
+ public InfoboxReadResult read(InfoboxReadRequestType request,
+ SLCommandContext cmdCtx) throws SLCommandException {
+
+ at.buergerkarte.namespaces.securitylayer._1.ObjectFactory objectFactory
+ = new at.buergerkarte.namespaces.securitylayer._1.ObjectFactory();
+
+ Base64XMLContentType content = objectFactory.createBase64XMLContentType();
+ XMLContentType xmlContent = objectFactory.createXMLContentType();
+ content.setXMLContent(xmlContent);
+
+ JAXBElement<ResponseType> response = scriptResults.get(cmdCtx.getSTAL());
+ if (response != null) {
+ xmlContent.getContent().add(response);
+ }
+
+ return new InfoboxReadResultImpl(content);
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public InfoboxUpdateResult update(InfoboxUpdateRequestType request,
+ SLCommandContext cmdCtx) throws SLCommandException {
+
+ Base64XMLContentType binaryFileParameters = request.getBinaryFileParameters();
+
+ if (binaryFileParameters.getBase64Content() != null) {
+ log.info("Got Base64Content but ContentIsXMLEntity is true.");
+ throw new SLCommandException(4010);
+ }
+
+ XMLContentType content = binaryFileParameters.getXMLContent();
+ if (content instanceof at.gv.egiz.slbinding.impl.XMLContentType) {
+
+ ByteArrayOutputStream redirectedStream = ((at.gv.egiz.slbinding.impl.XMLContentType) content).getRedirectedStream();
+ if (redirectedStream != null) {
+
+ if (log.isDebugEnabled()) {
+
+ StringBuilder sb = new StringBuilder();
+ sb.append("CardChannel script:\n");
+ try {
+ sb.append(new String(redirectedStream.toByteArray(), "UTF-8"));
+ } catch (UnsupportedEncodingException e) {
+ sb.append(e.getMessage());
+ }
+ log.debug(sb.toString());
+ }
+
+ Object object;
+ try {
+ Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+ object = unmarshaller.unmarshal(new ByteArrayInputStream(redirectedStream.toByteArray()));
+ } catch (JAXBException e) {
+ log.info("Failed to parse CardChannel script.", e);
+ throw new SLCommandException(4011);
+ }
+
+ if (object instanceof JAXBElement) {
+ executeCardChannelScript(((JAXBElement<ScriptType>) object).getValue(), cmdCtx);
+ return new InfoboxUpdateResultImpl();
+ }
+
+ }
+
+
+ }
+ log.info("Infobox identifier is '" + getIdentifier() + "' but XMLContent does not contain 'Script'.");
+ throw new SLCommandException(4010);
+
+ }
+
+ protected void executeCardChannelScript(ScriptType script,
+ SLCommandContext cmdCtx) throws SLCommandException {
+
+ List<Object> resetOrCommandAPDUOrVerifyAPDU = script.getResetOrCommandAPDUOrVerifyAPDU();
+ List<RequestScriptElement> requestScript = new ArrayList<RequestScriptElement>();
+
+ for (Object element : resetOrCommandAPDUOrVerifyAPDU) {
+
+ if (element instanceof ResetType) {
+
+ requestScript.add(new APDUScriptRequest.Reset());
+
+ } else if (element instanceof CommandAPDUType) {
+
+ CommandAPDUType commandAPDU = (CommandAPDUType) element;
+ int sequence = (commandAPDU.getSequence() != null)
+ ? commandAPDU.getSequence().intValue()
+ : 0;
+
+ requestScript.add(
+ new APDUScriptRequest.Command(
+ sequence,
+ commandAPDU.getValue(),
+ commandAPDU.getExpectedSW()));
+
+ } else if (element instanceof VerifyAPDUType) {
+ log.warn("CardChannel script command 'VerifyAPDU' not implemented.");
+ throw new SLCommandException(4011);
+ }
+ }
+
+ APDUScriptRequest scriptRequest = new APDUScriptRequest(requestScript);
+
+ STAL stal = cmdCtx.getSTAL();
+ STALHelper helper = new STALHelper(stal);
+
+ helper.transmitSTALRequest(Collections.singletonList(scriptRequest));
+
+ List<ResponseScriptElement> responseScript = ((APDUScriptResponse) helper
+ .nextResponse(APDUScriptResponse.class)).getScript();
+
+ ObjectFactory objectFactory = new ObjectFactory();
+
+ ResponseType responseType = objectFactory.createResponseType();
+
+
+ for (ResponseScriptElement element : responseScript) {
+
+ if (element instanceof APDUScriptResponse.ATR) {
+
+ byte[] atr = ((APDUScriptResponse.ATR) element).getAtr();
+
+ ATRType atrType = objectFactory.createATRType();
+ atrType.setValue(atr);
+ atrType.setRc(BigInteger.ZERO);
+ responseType.getATROrResponseAPDU().add(atrType);
+
+ } else if (element instanceof APDUScriptResponse.Response) {
+
+ APDUScriptResponse.Response response = (APDUScriptResponse.Response) element;
+
+ ResponseAPDUType responseAPDUType = objectFactory.createResponseAPDUType();
+ responseAPDUType.setSequence(BigInteger.valueOf(response.getSequence()));
+// if (response.getRc() != 0) {
+ responseAPDUType.setRc(BigInteger.valueOf(response.getRc()));
+// }
+ responseAPDUType.setSw(response.getSw());
+ responseAPDUType.setValue(response.getApdu());
+
+ responseType.getATROrResponseAPDU().add(responseAPDUType);
+ }
+
+ }
+
+ scriptResults.put(stal, objectFactory.createResponse(responseType));
+ }
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CertificatesInfoboxImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CertificatesInfoboxImpl.java
new file mode 100644
index 00000000..0208f137
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CertificatesInfoboxImpl.java
@@ -0,0 +1,112 @@
+/*
+* 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.slcommands.impl;
+
+import java.security.cert.CertificateEncodingException;
+import java.security.cert.X509Certificate;
+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;
+
+import at.gv.egiz.bku.slcommands.SLCommandContext;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.stal.InfoboxReadRequest;
+import at.gv.egiz.stal.STALRequest;
+
+/**
+ * An implementation of the {@link Infobox} <em>Certificates</em> as
+ * specified in Security Layer 1.2.
+ *
+ * @author mcentner
+ */
+public class CertificatesInfoboxImpl extends AbstractAssocArrayInfobox {
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(CertificatesInfoboxImpl.class);
+
+ /**
+ * The valid keys.
+ */
+ public static final String[] CERTIFICATES_KEYS = new String[] {
+ "SecureSignatureKeypair",
+ "CertifiedKeypair" };
+
+ @Override
+ public String getIdentifier() {
+ return "Certificates";
+ }
+
+ @Override
+ public String[] getKeys() {
+ return CERTIFICATES_KEYS;
+ }
+
+ @Override
+ public boolean isValuesAreXMLEntities() {
+ return false;
+ }
+
+ @Override
+ public Map<String, Object> getValues(List<String> certificates, SLCommandContext cmdCtx) throws SLCommandException {
+
+ STALHelper stalHelper = new STALHelper(cmdCtx.getSTAL());
+
+ if (certificates != null && !certificates.isEmpty()) {
+
+ List<STALRequest> stalRequests = new ArrayList<STALRequest>();
+
+ // get certificates
+ InfoboxReadRequest infoboxReadRequest;
+ for (int i = 0; i < certificates.size(); i++) {
+ infoboxReadRequest = new InfoboxReadRequest();
+ infoboxReadRequest.setInfoboxIdentifier(certificates.get(i));
+ stalRequests.add(infoboxReadRequest);
+ }
+
+ stalHelper.transmitSTALRequest(stalRequests);
+
+ List<X509Certificate> x509Certs = stalHelper.getCertificatesFromResponses();
+
+ Map<String, Object> values = new HashMap<String, Object>();
+
+ for (int i = 0; i < certificates.size(); i++) {
+ try {
+ values.put(certificates.get(i), x509Certs.get(i).getEncoded());
+ } catch (CertificateEncodingException e) {
+ log.error("Failed to encode certificate.", e);
+ throw new SLCommandException(4000);
+ }
+ }
+
+ return values;
+
+ } else {
+
+ return new HashMap<String, Object>();
+
+ }
+
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureCommandImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureCommandImpl.java
new file mode 100644
index 00000000..01686641
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureCommandImpl.java
@@ -0,0 +1,219 @@
+/*
+ * 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.slcommands.impl;
+
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.X509Certificate;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+import javax.xml.crypto.MarshalException;
+import javax.xml.crypto.URIReferenceException;
+import javax.xml.crypto.dsig.XMLSignatureException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.ls.DOMImplementationLS;
+import org.w3c.dom.ls.LSSerializer;
+
+import at.buergerkarte.namespaces.securitylayer._1.CreateXMLSignatureRequestType;
+import at.buergerkarte.namespaces.securitylayer._1.DataObjectInfoType;
+import at.gv.egiz.bku.slcommands.CreateXMLSignatureCommand;
+import at.gv.egiz.bku.slcommands.SLCommandContext;
+import at.gv.egiz.bku.slcommands.SLResult;
+import at.gv.egiz.bku.slcommands.impl.xsect.AlgorithmMethodFactory;
+import at.gv.egiz.bku.slcommands.impl.xsect.AlgorithmMethodFactoryImpl;
+import at.gv.egiz.bku.slcommands.impl.xsect.IdValueFactory;
+import at.gv.egiz.bku.slcommands.impl.xsect.IdValueFactoryImpl;
+import at.gv.egiz.bku.slcommands.impl.xsect.Signature;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.bku.slexceptions.SLException;
+import at.gv.egiz.bku.slexceptions.SLRequestException;
+import at.gv.egiz.bku.slexceptions.SLViewerException;
+import at.gv.egiz.dom.DOMUtils;
+import at.gv.egiz.stal.InfoboxReadRequest;
+import at.gv.egiz.stal.STALRequest;
+
+/**
+ * This class implements the security layer command
+ * <code>CreateXMLSignatureRequest</code>.
+ *
+ * @author mcentner
+ */
+public class CreateXMLSignatureCommandImpl extends
+ SLCommandImpl<CreateXMLSignatureRequestType> implements
+ CreateXMLSignatureCommand {
+
+ /**
+ * Logging facility.
+ */
+ protected static Log log = LogFactory
+ .getLog(CreateXMLSignatureCommandImpl.class);
+
+ /**
+ * The signing certificate.
+ */
+ protected X509Certificate signingCertificate;
+
+ /**
+ * The keybox identifier of the key used for signing.
+ */
+ protected String keyboxIdentifier;
+
+ /**
+ * The to-be signed signature.
+ */
+ protected Signature signature;
+
+ @Override
+ public void init(SLCommandContext ctx, Object unmarshalledRequest)
+ throws SLCommandException {
+ super.init(ctx, unmarshalledRequest);
+ }
+
+ @Override
+ public void prepareXMLSignature() throws SLCommandException,
+ SLRequestException {
+
+ CreateXMLSignatureRequestType request = getRequestValue();
+
+ // TODO: make configurable?
+ IdValueFactory idValueFactory = new IdValueFactoryImpl();
+
+ // TODO: make configurable?
+ AlgorithmMethodFactory algorithmMethodFactory;
+ try {
+ algorithmMethodFactory = new AlgorithmMethodFactoryImpl(
+ signingCertificate);
+ } catch (NoSuchAlgorithmException e) {
+ log.error("Failed to get DigestMethod.", e);
+ throw new SLCommandException(4006);
+ }
+
+ signature = new Signature(getCmdCtx().getURLDereferencerContext(),
+ idValueFactory, algorithmMethodFactory);
+
+ // SigningTime
+ signature.setSigningTime(new Date());
+
+ // SigningCertificate
+ signature.setSignerCeritifcate(signingCertificate);
+
+ // SignatureInfo
+ if (request.getSignatureInfo() != null) {
+ signature.setSignatureInfo(request.getSignatureInfo());
+ }
+
+ // DataObjects
+ for (DataObjectInfoType dataObjectInfo : request.getDataObjectInfo()) {
+ signature.addDataObject(dataObjectInfo);
+ }
+
+ signature.buildXMLSignature();
+
+ }
+
+ /**
+ * Gets the signing certificate from STAL.
+ *
+ * @throws SLCommandException
+ * if getting the singing certificate fails
+ */
+ private void getSigningCertificate() throws SLCommandException {
+
+ CreateXMLSignatureRequestType request = getRequestValue();
+ keyboxIdentifier = request.getKeyboxIdentifier();
+
+ InfoboxReadRequest stalRequest = new InfoboxReadRequest();
+ stalRequest.setInfoboxIdentifier(keyboxIdentifier);
+
+ stalHelper.transmitSTALRequest(Collections.singletonList((STALRequest) stalRequest));
+ List<X509Certificate> certificates = stalHelper.getCertificatesFromResponses();
+ if (certificates == null || certificates.size() != 1) {
+ log.info("Got an unexpected number of certificates from STAL.");
+ throw new SLCommandException(4000);
+ }
+ signingCertificate = certificates.get(0);
+
+ }
+
+ /**
+ * Signs the signature.
+ *
+ * @throws SLCommandException
+ * if signing the signature fails
+ * @throws SLViewerException
+ */
+ private void signXMLSignature() throws SLCommandException, SLViewerException {
+
+ try {
+ signature.sign(getCmdCtx().getSTAL(), keyboxIdentifier);
+ } catch (MarshalException e) {
+ log.error("Failed to marshall XMLSignature.", e);
+ throw new SLCommandException(4000);
+ } catch (XMLSignatureException e) {
+ if (e.getCause() instanceof URIReferenceException) {
+ URIReferenceException uriReferenceException = (URIReferenceException) e
+ .getCause();
+ if (uriReferenceException.getCause() instanceof SLCommandException) {
+ throw (SLCommandException) uriReferenceException.getCause();
+ }
+ }
+ log.error("Failed to sign XMLSignature.", e);
+ throw new SLCommandException(4000);
+ }
+
+ }
+
+ @Override
+ public SLResult execute() {
+ try {
+
+ // get certificate in order to select appropriate algorithms for hashing
+ // and signing
+ getSigningCertificate();
+
+ // prepare the XMLSignature for signing
+ prepareXMLSignature();
+
+ // sign the XMLSignature
+ signXMLSignature();
+
+ if (log.isTraceEnabled()) {
+
+ DOMImplementationLS domImplLS = DOMUtils.getDOMImplementationLS();
+ LSSerializer serializer = domImplLS.createLSSerializer();
+ String debugString = serializer.writeToString(signature.getDocument());
+
+ log.trace(debugString);
+
+ }
+
+ return new CreateXMLSignatureResultImpl(signature.getDocument());
+
+ } catch (SLException e) {
+ return new ErrorResultImpl(e, cmdCtx.getLocale());
+ }
+ }
+
+ @Override
+ public String getName() {
+ return "CreateXMLSignatureRequest";
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureResultImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureResultImpl.java
new file mode 100644
index 00000000..19df4334
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureResultImpl.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.bku.slcommands.impl;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.transform.Result;
+import javax.xml.transform.Templates;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.DocumentFragment;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import at.buergerkarte.namespaces.securitylayer._1.CreateXMLSignatureResponseType;
+import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory;
+import at.gv.egiz.bku.slcommands.SLMarshallerFactory;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+
+/**
+ * This calls implements the result of the security layer command <code>CreateXMLSignature</code>.
+ *
+ * @author mcentner
+ */
+public class CreateXMLSignatureResultImpl extends SLResultImpl {
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(CreateXMLSignatureResultImpl.class);
+
+ /**
+ * The document containing the XMLSignature.
+ */
+ protected Document doc;
+
+ /**
+ * Creates a new instance of this CreateXMLSignatureResultImpl with the given
+ * signature <code>document</code>.
+ *
+ * @param document the signature document
+ *
+ * @throws NullPointerException if <code>document</code> is <code>null</code>
+ */
+ public CreateXMLSignatureResultImpl(Document document) {
+ super();
+
+ if (document == null) {
+ throw new NullPointerException("Argument 'document' must not be null.");
+ }
+
+ this.doc = document;
+
+ marshallCreateXMLSignatureResponse();
+ }
+
+ /**
+ * Marshalls the <code>CreateXMLSignatureResponse</code>.
+ */
+ private void marshallCreateXMLSignatureResponse() {
+
+ ObjectFactory factory = new ObjectFactory();
+
+ CreateXMLSignatureResponseType createCreateXMLSignatureResponseType = factory.createCreateXMLSignatureResponseType();
+ JAXBElement<CreateXMLSignatureResponseType> createCreateXMLSignatureResponse = factory.createCreateXMLSignatureResponse(createCreateXMLSignatureResponseType);
+
+ DocumentFragment fragment = doc.createDocumentFragment();
+
+ Marshaller marshaller = SLMarshallerFactory.getInstance().createMarshaller(false);
+ try {
+ marshaller.marshal(createCreateXMLSignatureResponse, fragment);
+ } catch (JAXBException e) {
+ log.error("Failed to marshall 'CreateXMLSignatureResponse'", e);
+ throw new SLRuntimeException(e);
+ }
+
+ Node child = fragment.getFirstChild();
+ if (child instanceof Element) {
+ Node node = doc.replaceChild(child, doc.getDocumentElement());
+ child.appendChild(node);
+ }
+
+ }
+
+ @Override
+ public void writeTo(Result result, Templates templates, boolean fragment) {
+ writeTo(doc, result, templates, fragment);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/DataObjectHashDataInput.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/DataObjectHashDataInput.java
new file mode 100644
index 00000000..57358ba0
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/DataObjectHashDataInput.java
@@ -0,0 +1,59 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package at.gv.egiz.bku.slcommands.impl;
+
+import at.gv.egiz.bku.binding.HttpUtil;
+import at.gv.egiz.bku.slcommands.impl.xsect.DataObject;
+import at.gv.egiz.stal.HashDataInput;
+import java.io.InputStream;
+
+/**
+ * DataObject-backed HashDataInput
+ * If <a href="XMLSignContext.html#Supported Properties">reference caching</a> is enabled,
+ * the hashdata input stream can be obtained repeatedly.
+ * @author clemens
+ */
+public class DataObjectHashDataInput implements HashDataInput {
+
+ protected DataObject dataObject;
+
+ public DataObjectHashDataInput(DataObject dataObject) {
+ if (dataObject.getReference() == null)
+ throw new NullPointerException("DataObject reference must not be null");
+ this.dataObject = dataObject;
+ }
+
+ @Override
+ public String getReferenceId() {
+ return dataObject.getReference().getId();
+ }
+
+ @Override
+ public String getMimeType() {
+ String contentType = dataObject.getMimeType();
+ return contentType.split(";")[0].trim();
+ }
+
+ /**
+ * may be called repeatedly
+ * @return the pre-digested input stream if reference caching is enabled, null otherwise
+ */
+ @Override
+ public InputStream getHashDataInput() {
+ return dataObject.getReference().getDigestInputStream();
+ }
+
+ @Override
+ public String getEncoding() {
+ return HttpUtil.getCharset(dataObject.getMimeType(), false);
+ }
+
+ @Override
+ public String getFilename() {
+ //TODO obtain filename from dataObject, if not set return null or get filename (extension!) from mimetype
+ return dataObject.getFilename();
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/ErrorResultImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/ErrorResultImpl.java
new file mode 100644
index 00000000..aedde238
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/ErrorResultImpl.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.slcommands.impl;
+
+import java.util.Locale;
+
+import javax.xml.transform.Result;
+import javax.xml.transform.Templates;
+
+import at.gv.egiz.bku.slcommands.ErrorResult;
+import at.gv.egiz.bku.slexceptions.SLException;
+
+/**
+ * This class implements the security layer result <code>ErrorResponse</code>.
+ *
+ * @author mcentner
+ */
+public class ErrorResultImpl extends SLResultImpl implements ErrorResult {
+
+ /**
+ * The exception containing information provided in the <code>ErrorResponse</code>.
+ */
+ protected SLException slException;
+
+ /**
+ * The locale to be used for rendering an <code>ErrorResponse</code>.
+ */
+ protected Locale locale;
+
+ /**
+ * Creates a new instance of this ErrorResultImpl with the given
+ * <code>slException</code> containing information provided in the
+ * <code>ErrorResponse</code> and the <code>locale</code> for rendering
+ * the <code>ErrorResponse</code>.
+ *
+ * @param slException the exception
+ * @param locale the locale
+ */
+ public ErrorResultImpl(SLException slException, Locale locale) {
+ this.slException = slException;
+ this.locale = locale;
+ }
+
+ @Override
+ public void writeTo(Result result, Templates templates, boolean fragment) {
+ if (locale == null) {
+ writeErrorTo(slException, result, templates, fragment);
+ } else {
+ writeErrorTo(slException, result, templates, locale, fragment);
+ }
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/GetStatusCommandImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/GetStatusCommandImpl.java
new file mode 100644
index 00000000..0c2b96f9
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/GetStatusCommandImpl.java
@@ -0,0 +1,77 @@
+/*
+ * 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.slcommands.impl;
+
+import at.buergerkarte.namespaces.securitylayer._1.GetStatusRequestType;
+import at.gv.egiz.bku.slcommands.GetStatusCommand;
+import at.gv.egiz.bku.slcommands.SLResult;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.stal.ErrorResponse;
+import at.gv.egiz.stal.STAL;
+import at.gv.egiz.stal.STALResponse;
+import at.gv.egiz.stal.StatusRequest;
+import at.gv.egiz.stal.StatusResponse;
+import java.util.Collections;
+import java.util.List;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class GetStatusCommandImpl extends SLCommandImpl<GetStatusRequestType> implements GetStatusCommand {
+
+ protected static Log log = LogFactory.getLog(GetStatusCommandImpl.class);
+
+ @Override
+ public String getName() {
+ return "GetStatusRequest";
+ }
+
+ @Override
+ public SLResult execute() {
+
+ //ignore maxDelay and TokenStatus
+// GetStatusRequestType req = getRequestValue();
+
+ log.debug("execute GetStatusRequest");
+
+ StatusRequest stalRequest = new StatusRequest();
+
+ STAL stal = cmdCtx.getSTAL();
+
+ List<STALResponse> responses = stal.handleRequest(Collections.singletonList(stalRequest));
+
+ if (responses != null && responses.size() == 1) {
+ STALResponse stalResponse = responses.get(0);
+ if (stalResponse instanceof StatusResponse) {
+ boolean ready = ((StatusResponse) stalResponse).isCardReady();
+ log.trace("received status response cardReady: " + ready);
+ return new GetStatusResultImpl(ready);
+ } else if (stalResponse instanceof ErrorResponse) {
+ log.debug("received error response");
+ SLCommandException ex = new SLCommandException(((ErrorResponse) stalResponse).getErrorCode());
+ return new ErrorResultImpl(ex, cmdCtx.getLocale());
+ }
+ }
+ log.error("received unexpected responses");
+ return new ErrorResultImpl(new SLCommandException(4000), cmdCtx.getLocale());
+
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/GetStatusResultImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/GetStatusResultImpl.java
new file mode 100644
index 00000000..fb1f627f
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/GetStatusResultImpl.java
@@ -0,0 +1,52 @@
+/*
+ * 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.slcommands.impl;
+
+import at.buergerkarte.namespaces.securitylayer._1.GetStatusResponseType;
+import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory;
+import at.buergerkarte.namespaces.securitylayer._1.TokenStatusType;
+import at.gv.egiz.bku.slcommands.GetStatusResult;
+import javax.xml.bind.JAXBElement;
+import javax.xml.transform.Result;
+import javax.xml.transform.Templates;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class GetStatusResultImpl extends SLResultImpl implements GetStatusResult {
+
+ protected ObjectFactory of;
+ protected GetStatusResponseType responseType;
+
+ public GetStatusResultImpl(boolean ready) {
+ of = new ObjectFactory();
+ responseType = of.createGetStatusResponseType();
+ if (ready) {
+ responseType.setTokenStatus(TokenStatusType.READY);
+ } else {
+ responseType.setTokenStatus(TokenStatusType.REMOVED);
+ }
+
+ }
+
+ @Override
+ public void writeTo(Result result, Templates templates, boolean fragment) {
+ JAXBElement<GetStatusResponseType> response = of.createGetStatusResponse(responseType);
+ writeTo(response, result, templates, fragment);
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/IdentityLinkInfoboxImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/IdentityLinkInfoboxImpl.java
new file mode 100644
index 00000000..160e9589
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/IdentityLinkInfoboxImpl.java
@@ -0,0 +1,290 @@
+/*
+* 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.slcommands.impl;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Result;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMResult;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+
+import at.buergerkarte.namespaces.personenbindung._20020506_.CompressedIdentityLinkType;
+import at.buergerkarte.namespaces.securitylayer._1.AnyChildrenType;
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadRequestType;
+import at.gv.egiz.bku.slcommands.InfoboxReadResult;
+import at.gv.egiz.bku.slcommands.SLCommand;
+import at.gv.egiz.bku.slcommands.SLCommandContext;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.bku.slexceptions.SLExceptionMessages;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+import at.gv.egiz.idlink.CompressedIdentityLinkFactory;
+import at.gv.egiz.idlink.IdentityLinkTransformer;
+import at.gv.egiz.idlink.ans1.IdentityLink;
+import at.gv.egiz.stal.InfoboxReadRequest;
+import at.gv.egiz.stal.STALRequest;
+
+/**
+ * An implementation of the {@link Infobox} <em>IdentityLink</em> as
+ * specified in Security Layer 1.2
+ *
+ * @author mcentner
+ */
+public class IdentityLinkInfoboxImpl extends AbstractBinaryFileInfobox {
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(IdentityLinkInfoboxImpl.class);
+
+ /**
+ * The box specific parameter <code>IdentityLinkDomainIdentifier</code>.
+ */
+ public static final String BOX_SPECIFIC_PARAMETER_IDENTITY_LINK_DOMAIN_IDENTIFIER = "IdentityLinkDomainIdentifier";
+
+ /**
+ * The value of the box specific parameter <code>IdentityLinkDomainIdentifier</code>.
+ */
+ private String domainIdentifier;
+
+ @Override
+ public String getIdentifier() {
+ return "IdentityLink";
+ }
+
+ /**
+ * @return the value of the box specific parameter <code>IdentityLinkDomainIdentifier</code>
+ */
+ public String getDomainIdentifier() {
+ return domainIdentifier;
+ }
+
+ @Override
+ public InfoboxReadResult read(InfoboxReadRequestType req, SLCommandContext cmdCtx) throws SLCommandException {
+
+ AnyChildrenType boxSpecificParameters = req.getBoxSpecificParameters();
+
+ if (boxSpecificParameters != null) {
+ // check BoxSpecificParameters
+ List<Object> parameter = boxSpecificParameters.getAny();
+ JAXBElement<?> element;
+ if (parameter != null
+ && parameter.size() == 1
+ && parameter.get(0) instanceof JAXBElement<?>
+ && SLCommand.NAMESPACE_URI.equals((element = (JAXBElement<?>) parameter.get(0)).getName().getNamespaceURI())
+ && BOX_SPECIFIC_PARAMETER_IDENTITY_LINK_DOMAIN_IDENTIFIER.equals(element.getName().getLocalPart())
+ && element.getValue() instanceof String) {
+ domainIdentifier = (String) element.getValue();
+ log.debug("Got sl:IdentityLinkDomainIdentifier: " + domainIdentifier);
+ } else {
+ log.info("Got invalid BoxSpecificParameters.");
+ throw new SLCommandException(4010);
+ }
+ }
+
+ setIsXMLEntity(req);
+
+ STALHelper stalHelper = new STALHelper(cmdCtx.getSTAL());
+
+ List<STALRequest> stalRequests = new ArrayList<STALRequest>();
+
+ InfoboxReadRequest infoboxReadRequest;
+ // get raw identity link
+ infoboxReadRequest = new InfoboxReadRequest();
+ infoboxReadRequest.setInfoboxIdentifier(getIdentifier());
+ infoboxReadRequest.setDomainIdentifier(domainIdentifier);
+ stalRequests.add(infoboxReadRequest);
+
+ // get certificates
+ infoboxReadRequest = new InfoboxReadRequest();
+ infoboxReadRequest.setInfoboxIdentifier("SecureSignatureKeypair");
+ stalRequests.add(infoboxReadRequest);
+ infoboxReadRequest = new InfoboxReadRequest();
+ infoboxReadRequest.setInfoboxIdentifier("CertifiedKeypair");
+ stalRequests.add(infoboxReadRequest);
+
+ stalHelper.transmitSTALRequest(stalRequests);
+ log.trace("Got STAL response");
+
+ IdentityLink identityLink = stalHelper.getIdentityLinkFromResponses();
+ List<X509Certificate> certificates = stalHelper.getCertificatesFromResponses();
+
+
+ CompressedIdentityLinkFactory idLinkFactory = CompressedIdentityLinkFactory.getInstance();
+ JAXBElement<CompressedIdentityLinkType> compressedIdentityLink = idLinkFactory
+ .createCompressedIdentityLink(identityLink, certificates, getDomainIdentifier());
+
+ IdentityLinkTransformer identityLinkTransformer = IdentityLinkTransformer.getInstance();
+ String issuerTemplate = identityLink.getIssuerTemplate();
+
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ DocumentBuilder db;
+ try {
+ db = dbf.newDocumentBuilder();
+ } catch (ParserConfigurationException e) {
+ log.error("Failed to create XML document.", e);
+ throw new SLRuntimeException(e);
+ }
+
+ Document document = db.newDocument();
+ try {
+ idLinkFactory.marshallCompressedIdentityLink(compressedIdentityLink, document, null, true);
+ } catch (JAXBException e) {
+ log.info("Failed to marshall CompressedIdentityLink.", e);
+ throw new SLCommandException(4000,
+ SLExceptionMessages.EC4000_UNCLASSIFIED_INFOBOX_INVALID,
+ new Object[] { getIdentifier() });
+ }
+
+ InfoboxReadResultFileImpl result = new InfoboxReadResultFileImpl();
+ ByteArrayOutputStream resultBytes = null;
+ Result xmlResult;
+ if (isXMLEntity()) {
+ // we will return the result as XML entity
+ xmlResult = result.getXmlResult(true);
+ } else {
+ // we will return the result as binary data
+ if (getDomainIdentifier() != null) {
+ // we need an XML result to be able to replace the domain identifier below
+ Document doc;
+ try {
+ doc = dbf.newDocumentBuilder().newDocument();
+ } catch (ParserConfigurationException e) {
+ // it should always be possible to create a new Document
+ log.error("Failed to create XML document.", e);
+ throw new SLRuntimeException(e);
+ }
+ xmlResult = new DOMResult(doc);
+ } else {
+ resultBytes = new ByteArrayOutputStream();
+ xmlResult = new StreamResult(resultBytes);
+ }
+ }
+
+ try {
+ log.trace("Trying to transform identitylink");
+ identityLinkTransformer.transformIdLink(issuerTemplate, new DOMSource(document), xmlResult);
+ } catch (MalformedURLException e) {
+ log.warn("Malformed issuer template URL '" + issuerTemplate + "'.");
+ throw new SLCommandException(4000,
+ SLExceptionMessages.EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED,
+ new Object[] { issuerTemplate });
+ } catch (IOException e) {
+ log.warn("Failed to dereferene issuer template URL '" + issuerTemplate + "'." ,e);
+ throw new SLCommandException(4000,
+ SLExceptionMessages.EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED,
+ new Object[] { issuerTemplate });
+ } catch (TransformerConfigurationException e) {
+ log.warn("Failed to create transformation template from issuer template URL '" + issuerTemplate + "'", e);
+ throw new SLCommandException(4000,
+ SLExceptionMessages.EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED,
+ new Object[] { issuerTemplate });
+ } catch (TransformerException e) {
+ log.info("Faild to transform CompressedIdentityLink.", e);
+ throw new SLCommandException(4000,
+ SLExceptionMessages.EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED,
+ new Object[] { issuerTemplate });
+ }
+
+ // TODO: Report BUG in IssuerTemplates
+ // Some IssuerTemplate stylesheets do not consider the pr:Type-Element of the CompressedIdentityLink ...
+ if (getDomainIdentifier() != null) {
+ if (xmlResult instanceof DOMResult) {
+ Node node = ((DOMResult) xmlResult).getNode();
+ Node nextSibling = ((DOMResult) xmlResult).getNextSibling();
+ Node idLinkNode;
+ if (nextSibling != null) {
+ idLinkNode = nextSibling.getPreviousSibling();
+ } else if (node != null) {
+ idLinkNode = node.getFirstChild();
+ } else {
+ log
+ .error("An IdentityLinkDomainIdentifier of '"
+ + getDomainIdentifier()
+ + "' has been given. However, it cannot be set, as the transformation result does not contain a node.");
+ throw new SLCommandException(4000,
+ SLExceptionMessages.EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED,
+ new Object[] { issuerTemplate });
+ }
+ IdentityLinkTransformer.setDomainIdentifier(idLinkNode, getDomainIdentifier());
+ } else {
+ log
+ .error("An IdentityLinkDomainIdentifier of '"
+ + getDomainIdentifier()
+ + "' has been given. However, it cannot be set, as the transformation result is not of type DOM.");
+ throw new SLCommandException(4000,
+ SLExceptionMessages.EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED,
+ new Object[] { issuerTemplate });
+ }
+ }
+
+ if (!isXMLEntity()) {
+ if (resultBytes == null) {
+ resultBytes = new ByteArrayOutputStream();
+ if (xmlResult instanceof DOMResult) {
+ Node node = ((DOMResult) xmlResult).getNode();
+ DOMSource xmlSource = new DOMSource(node);
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ try {
+ Transformer transformer = transformerFactory.newTransformer();
+ transformer.transform(xmlSource, new StreamResult(resultBytes));
+ } catch (TransformerConfigurationException e) {
+ log.error(e);
+ throw new SLCommandException(4000,
+ SLExceptionMessages.EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED,
+ new Object[] { issuerTemplate });
+ } catch (TransformerException e) {
+ log.error(e);
+ throw new SLCommandException(4000,
+ SLExceptionMessages.EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED,
+ new Object[] { issuerTemplate });
+ }
+ } else {
+ log.error("ContentIsXMLEntity is set to 'false'. However, an XMLResult has already been set.");
+ throw new SLCommandException(4000,
+ SLExceptionMessages.EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED,
+ new Object[] { issuerTemplate });
+ }
+ }
+ result.setResultBytes(resultBytes.toByteArray());
+ }
+
+ return result;
+
+ }
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/Infobox.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/Infobox.java
new file mode 100644
index 00000000..99d62721
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/Infobox.java
@@ -0,0 +1,70 @@
+/*
+ * 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.slcommands.impl;
+
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadRequestType;
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxUpdateRequestType;
+import at.gv.egiz.bku.slcommands.InfoboxReadResult;
+import at.gv.egiz.bku.slcommands.InfoboxUpdateResult;
+import at.gv.egiz.bku.slcommands.SLCommandContext;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+
+/**
+ * An implementation of this interface represents a infobox as defined in
+ * Security-Layer 1.2.
+ *
+ * @author mcentner
+ */
+public interface Infobox {
+
+ /**
+ * @return the identifier of this infobox
+ */
+ public String getIdentifier();
+
+ /**
+ * Read data from this infobox.
+ *
+ * @param request
+ * the InfoboxReadRequest
+ * @param cmdCtx
+ * the command context
+ *
+ * @return the data read from this infobox as InfoboxReadResult
+ *
+ * @throws SLCommandException
+ *
+ * if reading from this infobox fails
+ */
+ public InfoboxReadResult read(InfoboxReadRequestType request,
+ SLCommandContext cmdCtx) throws SLCommandException;
+
+ /**
+ * Update data in this infobox.
+ *
+ * @param request
+ * the InfoboxUpdateRequest
+ * @param cmdCtx
+ * the command context
+ * @return a corresponding InfoboxUpdateResult
+ * @throws SLCommandException
+ * if updating this infobox fails
+ */
+ public InfoboxUpdateResult update(InfoboxUpdateRequestType request,
+ SLCommandContext cmdCtx) throws SLCommandException;
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxFactory.java
new file mode 100644
index 00000000..fdf94297
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxFactory.java
@@ -0,0 +1,90 @@
+/*
+* 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.slcommands.impl;
+
+import java.util.HashMap;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.bku.slexceptions.SLExceptionMessages;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+
+/**
+ * A factory for creating {@link Infobox}es.
+ *
+ * @author mcentner
+ */
+public class InfoboxFactory {
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(InfoboxFactory.class);
+
+ /**
+ * The mapping of Infobox name to concrete Infobox factory.
+ */
+ private HashMap<String, AbstractInfoboxFactory> infoboxFactories = new HashMap<String, AbstractInfoboxFactory>();
+
+ /**
+ * @param infoboxFactories the infoboxFactories to set
+ */
+ public void setInfoboxFactories(
+ HashMap<String, AbstractInfoboxFactory> factories) {
+ if (log.isDebugEnabled()) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("Registered infobox factories for");
+ for (String name : factories.keySet()) {
+ sb.append("\n " + name + " : " + factories.get(name).getClass());
+ }
+ log.debug(sb);
+ }
+ this.infoboxFactories = factories;
+ }
+
+ /**
+ * Create a new {@link Infobox} instance for the given
+ * <code>infoboxIdentifier</code>.
+ *
+ * @param infoboxIdentifier
+ * the infobox identifier
+ *
+ * @return an {@link Infobox} implementation for the given infobox identifier
+ *
+ * @throws SLCommandException
+ * if there is no implementation for the given infobox identifier
+ * @throws SLRuntimeException
+ * if creating an {@link Infobox} instance fails
+ */
+ public Infobox createInfobox(String infoboxIdentifier) throws SLCommandException, SLRuntimeException {
+
+ AbstractInfoboxFactory factory = infoboxFactories.get(infoboxIdentifier);
+ if (factory == null) {
+ log.info("Unsupported infobox '" + infoboxIdentifier + ".");
+ throw new SLCommandException(4002,
+ SLExceptionMessages.EC4002_INFOBOX_UNKNOWN,
+ new Object[] { infoboxIdentifier });
+ }
+
+ return factory.createInfobox();
+
+ }
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadCommandImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadCommandImpl.java
new file mode 100644
index 00000000..693f444f
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadCommandImpl.java
@@ -0,0 +1,96 @@
+/*
+* 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.slcommands.impl;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadRequestType;
+import at.gv.egiz.bku.slcommands.InfoboxReadCommand;
+import at.gv.egiz.bku.slcommands.SLCommandContext;
+import at.gv.egiz.bku.slcommands.SLResult;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+
+/**
+ * This class implements the security layer command
+ * <code>InfoboxReadRequest</code>.
+ * <p>
+ * <b>NOTE:</b> Currently the only supported infobox identifier is '
+ * <code>IdentityLink</code>'.
+ * </p>
+ *
+ * @author mcentner
+ */
+public class InfoboxReadCommandImpl extends AbstractInfoboxCommandImpl<InfoboxReadRequestType> implements
+ InfoboxReadCommand {
+
+ /**
+ * Logging facility.
+ */
+ protected static Log log = LogFactory.getLog(InfoboxReadCommandImpl.class);
+
+ @Override
+ public String getName() {
+ return "InfoboxReadRequest";
+ }
+
+ @Override
+ protected String getInfoboxIdentifier(InfoboxReadRequestType request) {
+ return request.getInfoboxIdentifier();
+ }
+
+ @Override
+ public void init(SLCommandContext ctx, Object request) throws SLCommandException {
+ super.init(ctx, request);
+
+ InfoboxReadRequestType req = getRequestValue();
+
+ if (req.getAssocArrayParameters() != null &&
+ !(infobox instanceof AssocArrayInfobox)) {
+ log.info("Got AssocArrayParameters but Infobox type is not AssocArray.");
+ throw new SLCommandException(4010);
+ }
+
+ if (req.getBinaryFileParameters() != null &&
+ !(infobox instanceof BinaryFileInfobox)) {
+ log.info("Got BinaryFileParameters but Infobox type is not BinaryFile.");
+ throw new SLCommandException(4010);
+ }
+
+ }
+
+ @Override
+ public SLResult execute() {
+
+ try {
+ return infobox.read(getRequestValue(), getCmdCtx());
+ } catch (SLCommandException e) {
+ return new ErrorResultImpl(e, getCmdCtx().getLocale());
+ }
+
+ }
+
+ @Override
+ public String getIdentityLinkDomainId() {
+ if (infobox instanceof IdentityLinkInfoboxImpl) {
+ return ((IdentityLinkInfoboxImpl) infobox).getDomainIdentifier();
+ } else {
+ return null;
+ }
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadResultFileImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadResultFileImpl.java
new file mode 100644
index 00000000..422b424f
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadResultFileImpl.java
@@ -0,0 +1,160 @@
+/*
+* 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.slcommands.impl;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Result;
+import javax.xml.transform.Templates;
+import javax.xml.transform.dom.DOMResult;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import at.buergerkarte.namespaces.securitylayer._1.Base64XMLContentType;
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadResponseType;
+import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory;
+import at.buergerkarte.namespaces.securitylayer._1.XMLContentType;
+import at.gv.egiz.bku.slcommands.InfoboxReadResult;
+import at.gv.egiz.bku.slcommands.SLCommand;
+import at.gv.egiz.bku.slcommands.SLMarshallerFactory;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+
+/**
+ * This class implements the result of the security layer command <code>InfoboxReadRequest</code>.
+ *
+ * @author mcentner
+ */
+public class InfoboxReadResultFileImpl extends SLResultImpl implements
+ InfoboxReadResult {
+
+ /**
+ * Logging facility.
+ */
+ protected static Log log = LogFactory.getLog(InfoboxReadResultFileImpl.class);
+
+ /**
+ * The XML document containing the infobox content.
+ */
+ protected Document xmlDocument;
+
+ /**
+ * Creates the response document from the given <code>binaryContent</code>.
+ *
+ * @param binaryContent the infobox content
+ * @param preserveSpace the value of the <code>preserveSpace</code> parameter
+ *
+ * @return the created response document
+ */
+ private Document createResponseDocument(byte[] binaryContent, boolean preserveSpace) {
+
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ Document doc;
+ try {
+ doc = dbf.newDocumentBuilder().newDocument();
+ } catch (ParserConfigurationException e) {
+ // it should always be possible to create a new Document
+ log.error("Failed to create XML document.", e);
+ throw new SLRuntimeException(e);
+ }
+
+ ObjectFactory factory = new ObjectFactory();
+
+ Base64XMLContentType base64XMLContentType = factory.createBase64XMLContentType();
+ if (binaryContent == null) {
+ XMLContentType xmlContentType = factory.createXMLContentType();
+ if (preserveSpace) {
+ xmlContentType.setSpace("preserve");
+ }
+ base64XMLContentType.setXMLContent(xmlContentType);
+ } else {
+ base64XMLContentType.setBase64Content(binaryContent);
+ }
+ InfoboxReadResponseType infoboxReadResponseType = factory.createInfoboxReadResponseType();
+ infoboxReadResponseType.setBinaryFileData(base64XMLContentType);
+
+ JAXBElement<InfoboxReadResponseType> infoboxReadResponse = factory.createInfoboxReadResponse(infoboxReadResponseType);
+
+ Marshaller marshaller = SLMarshallerFactory.getInstance().createMarshaller(false);
+ try {
+ marshaller.marshal(infoboxReadResponse, doc);
+ } catch (JAXBException e) {
+ log.error("Failed to marshal 'InfoboxReadResponse' document.", e);
+ throw new SLRuntimeException(e);
+ }
+
+ return doc;
+
+ }
+
+
+ /**
+ * @return an XMLResult for marshalling the infobox to
+ */
+ public Result getXmlResult(boolean preserveSpace) {
+
+ xmlDocument = createResponseDocument(null, preserveSpace);
+
+ NodeList nodeList = xmlDocument.getElementsByTagNameNS(SLCommand.NAMESPACE_URI, "XMLContent");
+ return new DOMResult(nodeList.item(0));
+
+ }
+
+ /**
+ * Creates a new <code>InfoboxReadResponse</code> document and appends
+ * the given <code>node</code> as child node of the <code>XMLContent</code> element.
+ *
+ * @param node the node to be appended as child node of the <code>XMLContnet</code> element
+ * @param preserveSpace if <code>true</code> the value of the <code>XMLContent</code>'s <code>space</code>
+ * attribute is set to <code>preserve</code>.
+ */
+ public void setResultXMLContent(Node node, boolean preserveSpace) {
+
+ xmlDocument = createResponseDocument(null, preserveSpace);
+
+ NodeList nodeList = xmlDocument.getElementsByTagNameNS(SLCommand.NAMESPACE_URI, "XMLContent");
+ if (node.getOwnerDocument() != xmlDocument) {
+ node = xmlDocument.importNode(node, true);
+ }
+ nodeList.item(0).appendChild(node);
+
+ }
+
+ /**
+ * Creates a new result document for this <code>InfoboxReadResult</code>
+ * and sets the given <code>resultBytes</code> as content.
+ *
+ * @param resultBytes
+ */
+ public void setResultBytes(byte[] resultBytes) {
+
+ xmlDocument = createResponseDocument(resultBytes, false);
+
+ }
+
+ @Override
+ public void writeTo(Result result, Templates templates, boolean fragment) {
+ writeTo(xmlDocument, result, templates, fragment);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadResultImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadResultImpl.java
new file mode 100644
index 00000000..271ec955
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadResultImpl.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.slcommands.impl;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.transform.Result;
+import javax.xml.transform.Templates;
+
+import at.buergerkarte.namespaces.securitylayer._1.Base64XMLContentType;
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadDataAssocArrayType;
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadResponseType;
+import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory;
+import at.gv.egiz.bku.slcommands.InfoboxReadResult;
+
+public class InfoboxReadResultImpl extends SLResultImpl implements InfoboxReadResult {
+
+ /**
+ * The <code>InfoboxReadResponse</code>
+ */
+ protected InfoboxReadResponseType infoboxReadResponse;
+
+ public InfoboxReadResultImpl(InfoboxReadDataAssocArrayType assocArray) {
+
+ ObjectFactory objectFactory = new ObjectFactory();
+ InfoboxReadResponseType infoboxReadResponseType = objectFactory.createInfoboxReadResponseType();
+
+ infoboxReadResponseType.setAssocArrayData(assocArray);
+
+ this.infoboxReadResponse = infoboxReadResponseType;
+ }
+
+ public InfoboxReadResultImpl(Base64XMLContentType value) {
+
+ ObjectFactory objectFactory = new ObjectFactory();
+ InfoboxReadResponseType infoboxReadResponseType = objectFactory.createInfoboxReadResponseType();
+
+ infoboxReadResponseType.setBinaryFileData(value);
+
+ this.infoboxReadResponse = infoboxReadResponseType;
+
+ }
+
+ @Override
+ public void writeTo(Result result, Templates templates, boolean fragment) {
+ ObjectFactory objectFactory = new ObjectFactory();
+ JAXBElement<InfoboxReadResponseType> response = objectFactory.createInfoboxReadResponse(infoboxReadResponse);
+ writeTo(response, result, templates, fragment);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxUpdateCommandImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxUpdateCommandImpl.java
new file mode 100644
index 00000000..1cdeda94
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxUpdateCommandImpl.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.slcommands.impl;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxUpdateRequestType;
+import at.gv.egiz.bku.slcommands.InfoboxUpdateCommand;
+import at.gv.egiz.bku.slcommands.SLCommandContext;
+import at.gv.egiz.bku.slcommands.SLResult;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+
+public class InfoboxUpdateCommandImpl extends
+ AbstractInfoboxCommandImpl<InfoboxUpdateRequestType> implements InfoboxUpdateCommand {
+
+ private static Log log = LogFactory.getLog(InfoboxUpdateCommandImpl.class);
+
+ @Override
+ public String getName() {
+ return "InfoboxUpdateRequest";
+ }
+
+ @Override
+ protected String getInfoboxIdentifier(InfoboxUpdateRequestType request) {
+ return request.getInfoboxIdentifier();
+ }
+
+ @Override
+ public void init(SLCommandContext ctx, Object request) throws SLCommandException {
+ super.init(ctx, request);
+
+ InfoboxUpdateRequestType req = getRequestValue();
+
+ if (req.getAssocArrayParameters() != null &&
+ !(infobox instanceof AssocArrayInfobox)) {
+ log.info("Got AssocArrayParameters but Infobox type is not AssocArray.");
+ throw new SLCommandException(4010);
+ }
+
+ if (req.getBinaryFileParameters() != null &&
+ !(infobox instanceof BinaryFileInfobox)) {
+ log.info("Got BinaryFileParameters but Infobox type is not BinaryFile.");
+ throw new SLCommandException(4010);
+ }
+
+ }
+
+ @Override
+ public SLResult execute() {
+
+ try {
+ return infobox.update(getRequestValue(), getCmdCtx());
+ } catch (SLCommandException e) {
+ return new ErrorResultImpl(e, getCmdCtx().getLocale());
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxUpdateResultImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxUpdateResultImpl.java
new file mode 100644
index 00000000..e12536ba
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/InfoboxUpdateResultImpl.java
@@ -0,0 +1,43 @@
+/*
+* 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.slcommands.impl;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.transform.Result;
+import javax.xml.transform.Templates;
+
+import at.buergerkarte.namespaces.securitylayer._1.InfoboxUpdateResponseType;
+import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory;
+import at.gv.egiz.bku.slcommands.InfoboxUpdateResult;
+
+public class InfoboxUpdateResultImpl extends SLResultImpl implements
+ InfoboxUpdateResult {
+
+ protected static JAXBElement<InfoboxUpdateResponseType> RESPONSE;
+
+ static {
+ ObjectFactory factory = new ObjectFactory();
+ InfoboxUpdateResponseType type = factory.createInfoboxUpdateResponseType();
+ RESPONSE = factory.createInfoboxUpdateResponse(type);
+ }
+
+ @Override
+ public void writeTo(Result result, Templates templates, boolean fragment) {
+ writeTo(RESPONSE, result, templates, fragment);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/NullOperationCommandImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/NullOperationCommandImpl.java
new file mode 100644
index 00000000..1b6fb237
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/NullOperationCommandImpl.java
@@ -0,0 +1,43 @@
+/*
+* 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.slcommands.impl;
+
+import at.buergerkarte.namespaces.securitylayer._1.NullOperationRequestType;
+import at.gv.egiz.bku.slcommands.NullOperationCommand;
+import at.gv.egiz.bku.slcommands.NullOperationResult;
+import at.gv.egiz.bku.slcommands.SLResult;
+
+/**
+ * This class implements the security layer command <code>NullOperation</code>.
+ *
+ * @author mcentner
+ */
+public class NullOperationCommandImpl extends SLCommandImpl<NullOperationRequestType> implements NullOperationCommand {
+
+ protected static NullOperationResult RESULT = new NullOperationResultImpl();
+
+ @Override
+ public SLResult execute() {
+ return RESULT;
+ }
+
+ @Override
+ public String getName() {
+ return "NullOperationRequest";
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/NullOperationResultImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/NullOperationResultImpl.java
new file mode 100644
index 00000000..87733e39
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/NullOperationResultImpl.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.slcommands.impl;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.transform.Result;
+import javax.xml.transform.Templates;
+
+import at.buergerkarte.namespaces.securitylayer._1.NullOperationResponseType;
+import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory;
+import at.gv.egiz.bku.slcommands.NullOperationResult;
+
+/**
+ * This class represents the result of the security layer command
+ * <code>NullOperation</code>.
+ *
+ * @author mcentner
+ */
+public class NullOperationResultImpl extends SLResultImpl implements NullOperationResult {
+
+ protected static JAXBElement<NullOperationResponseType> RESPONSE;
+
+ static {
+ ObjectFactory factory = new ObjectFactory();
+ NullOperationResponseType type = factory.createNullOperationResponseType();
+ RESPONSE = factory.createNullOperationResponse(type);
+ }
+
+ @Override
+ public void writeTo(Result result, Templates templates, boolean fragment) {
+ super.writeTo(RESPONSE, result, templates, fragment);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SLCommandImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SLCommandImpl.java
new file mode 100644
index 00000000..ed055b69
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SLCommandImpl.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.slcommands.impl;
+
+import javax.xml.bind.JAXBElement;
+
+import at.gv.egiz.bku.slcommands.SLCommand;
+import at.gv.egiz.bku.slcommands.SLCommandContext;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+
+/**
+ * This class serves as abstract base class for the implementation of a security
+ * layer command.
+ *
+ * @author mcentner
+ *
+ * @param <T>
+ * the type of the corresponding request value
+ */
+public abstract class SLCommandImpl<T> implements SLCommand {
+
+ /**
+ * The <code>SLCommandContext</code> for this <code>SLCommand</code>.
+ */
+ protected SLCommandContext cmdCtx;
+
+ /**
+ * The STAL helper.
+ */
+ protected STALHelper stalHelper;
+
+ /**
+ * The request element of this command.
+ */
+ protected JAXBElement<T> request;
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public void init(SLCommandContext ctx, Object request)
+ throws SLCommandException {
+
+ this.request = (JAXBElement<T>) request;
+
+ this.cmdCtx = ctx;
+ stalHelper = new STALHelper(cmdCtx.getSTAL());
+
+ }
+
+ /**
+ * Returns the request value.
+ *
+ * It is a convenience method for <code>request.getValue()</code>.
+ *
+ * @see JAXBElement#getValue()
+ * @return the request value
+ */
+ protected T getRequestValue() {
+ return request.getValue();
+ }
+
+ /**
+ * @return the corresponding <code>SLCommandContext</code>
+ */
+ protected SLCommandContext getCmdCtx() {
+ return cmdCtx;
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SLResultImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SLResultImpl.java
new file mode 100644
index 00000000..0077b7b2
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SLResultImpl.java
@@ -0,0 +1,297 @@
+/*
+* 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.slcommands.impl;
+
+import java.io.UnsupportedEncodingException;
+import java.math.BigInteger;
+import java.util.Locale;
+
+import javax.xml.XMLConstants;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.transform.OutputKeys;
+import javax.xml.transform.Result;
+import javax.xml.transform.Templates;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.TransformerFactoryConfigurationError;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.sax.SAXTransformerFactory;
+import javax.xml.transform.sax.TransformerHandler;
+import javax.xml.transform.stream.StreamResult;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.Node;
+
+import at.buergerkarte.namespaces.securitylayer._1.ErrorResponseType;
+import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory;
+import at.gv.egiz.bku.slcommands.SLMarshallerFactory;
+import at.gv.egiz.bku.slcommands.SLResult;
+import at.gv.egiz.bku.slexceptions.SLBindingException;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.bku.slexceptions.SLException;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+import at.gv.egiz.bku.slexceptions.SLVersionException;
+import at.gv.egiz.bku.utils.DebugOutputStream;
+import at.gv.egiz.bku.utils.DebugWriter;
+
+/**
+ * This class serves as an abstract base class for the implementation of a
+ * security layer result.
+ *
+ * @author mcentner
+ */
+public abstract class SLResultImpl implements SLResult {
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(SLResult.class);
+
+ /**
+ * The security layer result type (default = XML).
+ */
+ protected SLResultType resultType = SLResultType.XML;
+
+ /**
+ * The security layer result MIME-type (default = <code>text/xml</code>).
+ */
+ protected String resultingMimeType = "text/xml";
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.bku.slcommands.SLResult#getResultType()
+ */
+ public SLResultType getResultType() {
+ return resultType;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.bku.slcommands.SLResult#getMimeType()
+ */
+ public String getMimeType() {
+ return resultingMimeType;
+ }
+
+ @Override
+ public void writeTo(Result result, boolean fragment) {
+ writeTo(result, null, false);
+ }
+
+ @Override
+ public abstract void writeTo(Result result, Templates templates, boolean fragment);
+
+ private TransformerHandler getTransformerHandler(Templates templates, Result result) throws SLException {
+ try {
+ SAXTransformerFactory transformerFactory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
+ transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
+ TransformerHandler transformerHandler = transformerFactory.newTransformerHandler(templates);
+ transformerHandler.setResult(result);
+ return transformerHandler;
+ } catch (TransformerFactoryConfigurationError e) {
+ log.error("Failed to create an instance of SAXTransformerFactory.", e);
+ throw new SLBindingException(2000);
+ } catch (IllegalArgumentException e) {
+ log.error("Failed to set result for transformation.", e);
+ throw new SLBindingException(2000);
+ } catch (TransformerConfigurationException e) {
+ log.info("Failed to create an instance of SAXTransformerFactory.", e);
+ throw new SLBindingException(2008);
+ }
+ }
+
+ /**
+ * Writes the given <code>response</code> to the SAX <code>result</code> using
+ * the given transform <code>templates</code>.
+ *
+ * @param response
+ * @param result
+ * @param templates
+ */
+ protected void writeTo(JAXBElement<?> response, Result result, Templates templates, boolean fragment) {
+
+ DebugWriter dw = null;
+ DebugOutputStream ds = null;
+ if (log.isTraceEnabled() && result instanceof StreamResult) {
+ StreamResult streamResult = (StreamResult) result;
+ if (streamResult.getOutputStream() != null) {
+ ds = new DebugOutputStream(streamResult.getOutputStream());
+ streamResult.setOutputStream(ds);
+ }
+ if (streamResult.getWriter() != null) {
+ dw = new DebugWriter(streamResult.getWriter());
+ streamResult.setWriter(dw);
+ }
+ }
+
+ TransformerHandler transformerHandler = null;
+ if (templates != null) {
+ try {
+ transformerHandler = getTransformerHandler(templates, result);
+ } catch (SLException e) {
+ writeErrorTo(e, result, templates, fragment);
+ }
+ }
+
+ Marshaller marshaller = SLMarshallerFactory.getInstance().createMarshaller(true);
+ try {
+ if (transformerHandler != null) {
+ marshaller.marshal(response, transformerHandler);
+ } else {
+ marshaller.marshal(response, result);
+ }
+ } catch (JAXBException e) {
+ log.info("Failed to marshall " + response.getName() + " result." , e);
+ SLCommandException commandException = new SLCommandException(4000);
+ writeErrorTo(commandException, result, templates, fragment);
+ }
+
+ if (ds != null) {
+ try {
+ log.trace("Marshalled result:\n" + new String(ds.getBufferedBytes(), "UTF-8"));
+ } catch (UnsupportedEncodingException e) {
+ log.trace(e.getMessage());
+ }
+ }
+
+ if (dw != null) {
+ log.trace("Marshalled result:\n" + dw.getBufferedString());
+ }
+
+ }
+
+ protected void writeTo(Node node, Result result, Templates templates, boolean fragment) {
+
+ DebugWriter dw = null;
+ DebugOutputStream ds = null;
+ if (log.isTraceEnabled() && result instanceof StreamResult) {
+ StreamResult streamResult = (StreamResult) result;
+ if (streamResult.getOutputStream() != null) {
+ ds = new DebugOutputStream(streamResult.getOutputStream());
+ streamResult.setOutputStream(ds);
+ }
+ if (streamResult.getWriter() != null) {
+ dw = new DebugWriter(streamResult.getWriter());
+ streamResult.setWriter(dw);
+ }
+ }
+
+ if (templates == null) {
+ try {
+ TransformerFactory transformerFactory = TransformerFactory.newInstance();
+ Transformer transformer = transformerFactory.newTransformer();
+ if (fragment) {
+ transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+ }
+ transformer.transform(new DOMSource(node), result);
+ } catch (TransformerConfigurationException e) {
+ log.error("Failed to create Transformer.", e);
+ writeErrorTo(new SLException(4000), result, null, fragment);
+ } catch (TransformerException e) {
+ log.error("Failed to transform result.", e);
+ writeErrorTo(new SLException(4000), result, null, fragment);
+ }
+ } else {
+ try {
+ Transformer transformer = templates.newTransformer();
+ if (fragment) {
+ transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
+ }
+ transformer.transform(new DOMSource(node), result);
+ } catch (TransformerConfigurationException e) {
+ log.info("Failed to create transformer.", e);
+ writeErrorTo(new SLException(2008), result, templates, fragment);
+ } catch (TransformerException e) {
+ log.error("Failed to transform result.", e);
+ writeErrorTo(new SLException(2008), result, templates, fragment);
+ }
+ }
+
+ if (ds != null) {
+ try {
+ log.trace("Marshalled result:\n" + new String(ds.getBufferedBytes(), "UTF-8"));
+ } catch (UnsupportedEncodingException e) {
+ log.trace(e.getMessage());
+ }
+ }
+
+ if (dw != null) {
+ log.trace("Marshalled result:\n" + dw.getBufferedString());
+ }
+
+ }
+
+ protected void writeErrorTo(SLException slException, Result result, Templates templates, boolean fragment) {
+ writeErrorTo(slException, result, templates, Locale.getDefault(), fragment);
+ }
+
+ protected void writeErrorTo(SLException slException, Result result, Templates templates, Locale locale, boolean fragment) {
+
+ TransformerHandler transformerHandler = null;
+ if (templates != null) {
+ try {
+ transformerHandler = getTransformerHandler(templates, result);
+ } catch (SLException e) {
+ // write the exception thrown instead of the given one
+ slException = e;
+ }
+ }
+
+ Object response;
+
+ Marshaller marshaller;
+ if (slException instanceof SLVersionException
+ && ("http://www.buergerkarte.at/namespaces/securitylayer/20020225#"
+ .equals(((SLVersionException) slException).getNamespaceURI()) ||
+ "http://www.buergerkarte.at/namespaces/securitylayer/20020831#"
+ .equals(((SLVersionException) slException).getNamespaceURI()))) {
+ // issue ErrorResponse in the legacy namespace
+ at.buergerkarte.namespaces.securitylayer._20020225_.ObjectFactory factory
+ = new at.buergerkarte.namespaces.securitylayer._20020225_.ObjectFactory();
+ at.buergerkarte.namespaces.securitylayer._20020225_.ErrorResponseType errorResponseType = factory
+ .createErrorResponseType();
+ errorResponseType.setErrorCode(BigInteger.valueOf(slException
+ .getErrorCode()));
+ errorResponseType.setInfo(slException.getLocalizedMessage(locale));
+ response = factory.createErrorResponse(errorResponseType);
+ marshaller = SLMarshallerFactory.getInstance().createLegacyMarshaller(true, fragment);
+ } else {
+ ObjectFactory factory = new ObjectFactory();
+ ErrorResponseType responseType = factory.createErrorResponseType();
+ responseType.setErrorCode(slException.getErrorCode());
+ responseType.setInfo(slException.getLocalizedMessage(locale));
+ response = factory.createErrorResponse(responseType);
+ marshaller = SLMarshallerFactory.getInstance().createMarshaller(true, fragment);
+ }
+
+ try {
+ if (transformerHandler != null) {
+ marshaller.marshal(response, transformerHandler);
+ } else {
+ marshaller.marshal(response, result);
+ }
+ } catch (JAXBException e) {
+ log.fatal("Failed to marshall error result." , e);
+ throw new SLRuntimeException("Failed to marshall error result.");
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/STALHelper.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/STALHelper.java
new file mode 100644
index 00000000..e903c608
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/STALHelper.java
@@ -0,0 +1,242 @@
+/*
+* 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.slcommands.impl;
+
+import iaik.asn1.CodingException;
+import iaik.asn1.DerCoder;
+import iaik.utils.Base64OutputStream;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.StringWriter;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.NoSuchElementException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.bku.slexceptions.SLExceptionMessages;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+import at.gv.egiz.idlink.ans1.IdentityLink;
+import at.gv.egiz.stal.ErrorResponse;
+import at.gv.egiz.stal.InfoboxReadResponse;
+import at.gv.egiz.stal.STAL;
+import at.gv.egiz.stal.STALRequest;
+import at.gv.egiz.stal.STALResponse;
+
+/**
+ * A helper class for transmitting {@link STALRequest}s and obtaining their
+ * respective {@link STALResponse}s.
+ *
+ * @author mcentner
+ */
+public class STALHelper {
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(STALHelper.class);
+
+ /**
+ * The STAL implementation.
+ */
+ private STAL stal;
+
+ /**
+ * An iterator over the <code>STALResponse</code>s received in
+ * {@link SLCommandImpl#transmitSTALRequest(List)}.
+ */
+ protected Iterator<STALResponse> stalResponses;
+
+ /**
+ * Creates a new instance of this STALHelper with the given
+ * <code>stal</code>.
+ *
+ * @param stal the STAL to be used
+ */
+ public STALHelper(STAL stal) {
+ if (stal == null) {
+ throw new NullPointerException("Argument 'stal' must not be null.");
+ }
+ this.stal = stal;
+ }
+
+ /**
+ * Calls {@link STAL#handleRequest(List)} with the given
+ * <code>stalRequests</code>.
+ *
+ * @param stalRequests
+ * @throws SLCommandException
+ */
+ public void transmitSTALRequest(List<? extends STALRequest> stalRequests) throws SLCommandException {
+ List<STALResponse> responses = stal.handleRequest(stalRequests);
+ if (responses == null) {
+ Log log = LogFactory.getLog(this.getClass());
+ log.info("Received no responses from STAL.");
+ throw new SLCommandException(4000);
+ } else if (responses.size() != stalRequests.size()) {
+ Log log = LogFactory.getLog(this.getClass());
+ log.info("Received invalid count of responses from STAL. Expected "
+ + stalRequests.size() + ", but got " + responses.size() + ".");
+ // throw new SLCommandException(4000);
+ }
+ stalResponses = responses.iterator();
+ }
+
+ /**
+ * @return <code>true</code> if there are more {@link STALResponse}s to be
+ * fetched with {@link #nextResponse(Class)}, or <code>false</code>
+ * otherwise.
+ */
+ public boolean hasNextResponse() {
+ return (stalResponses != null) ? stalResponses.hasNext() : false;
+ }
+
+ /**
+ * Returns the next response of type <code>responseClass</code> that has been
+ * received by {@link #transmitSTALRequest(List)}.
+ *
+ * @param responseClass
+ * the response must be an instance of
+ * @return the next response of type <code>responseClass</code>
+ *
+ * @throws NoSuchElementException
+ * if there is no more response
+ * @throws SLCommandException
+ * if the next response is of type {@link ErrorResponse} or not of
+ * type <code>responseClass</code>
+ */
+ public STALResponse nextResponse(
+ Class<? extends STALResponse> responseClass) throws SLCommandException {
+
+ if (stalResponses == null) {
+ throw new NoSuchElementException();
+ }
+
+ STALResponse response = stalResponses.next();
+
+ if (response instanceof ErrorResponse) {
+ throw new SLCommandException(((ErrorResponse) response).getErrorCode());
+ }
+
+ if (!(responseClass.isAssignableFrom(response.getClass()))) {
+ Log log = LogFactory.getLog(this.getClass());
+ log.info("Received " + response.getClass() + " from STAL but expected "
+ + responseClass);
+ throw new SLCommandException(4000);
+ }
+
+ return response;
+
+ }
+
+ /**
+ * Gets the list of certificates from the next STAL responses.
+ *
+ * @return the list of certificates
+ *
+ * @throws SLCommandException if getting the list of certificates fails
+ */
+ public List<X509Certificate> getCertificatesFromResponses() throws SLCommandException {
+
+ List<X509Certificate> certificates = new ArrayList<X509Certificate>();
+
+ CertificateFactory certFactory;
+ try {
+ certFactory = CertificateFactory.getInstance("X509");
+ } catch (CertificateException e) {
+ // we should always be able to get an X509 certificate factory
+ log.error("CertificateFactory.getInstance(\"X509\") failed.", e);
+ throw new SLRuntimeException(e);
+ }
+
+ InfoboxReadResponse response;
+ while(hasNextResponse()) {
+ response = (InfoboxReadResponse) nextResponse(InfoboxReadResponse.class);
+ byte[] cert = response.getInfoboxValue();
+ try {
+ certificates.add((X509Certificate) certFactory.generateCertificate(new ByteArrayInputStream(cert)));
+ } catch (CertificateException e) {
+ if (log.isDebugEnabled()) {
+ ByteArrayOutputStream certDump = new ByteArrayOutputStream();
+ OutputStreamWriter writer = new OutputStreamWriter(certDump);
+ try {
+ writer.write("-----BEGIN CERTIFICATE-----\n");
+ writer.flush();
+ Base64OutputStream b64os = new Base64OutputStream(certDump);
+ b64os.write(cert);
+ b64os.flush();
+ writer.write("\n-----END CERTIFICATE-----");
+ writer.flush();
+ } catch (IOException e1) {
+ log.info("Failed to decode certificate.", e);
+ }
+ log.debug("Failed to decode certificate.\n" + certDump.toString(), e);
+ } else {
+ log.info("Failed to decode certificate.", e);
+ }
+ throw new SLCommandException(4000,
+ SLExceptionMessages.EC4000_UNCLASSIFIED_INFOBOX_INVALID,
+ new Object[] { "Certificates" });
+ }
+ }
+
+ return certificates;
+
+ }
+
+ /**
+ * Gets the IdentitiyLink form the next STAL response.
+ *
+ * @return the IdentityLink
+ *
+ * @throws SLCommandException if getting the IdentitiyLink fails
+ */
+ public IdentityLink getIdentityLinkFromResponses() throws SLCommandException {
+
+ // IdentityLink
+ InfoboxReadResponse response;
+ if (hasNextResponse()) {
+ response = (InfoboxReadResponse) nextResponse(InfoboxReadResponse.class);
+ byte[] idLink = response.getInfoboxValue();
+ try {
+ return new IdentityLink(DerCoder.decode(idLink));
+ } catch (CodingException e) {
+ log.info("Failed to decode infobox 'IdentityLink'.", e);
+ throw new SLCommandException(4000,
+ SLExceptionMessages.EC4000_UNCLASSIFIED_INFOBOX_INVALID,
+ new Object[] { "IdentityLink" });
+ }
+ } else {
+ log.info("No infobox 'IdentityLink' returned from STAL.");
+ throw new SLCommandException(4000);
+ }
+
+ }
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SVPersonendatenInfoboxImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SVPersonendatenInfoboxImpl.java
new file mode 100644
index 00000000..7e204632
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/SVPersonendatenInfoboxImpl.java
@@ -0,0 +1,323 @@
+/*
+* 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.slcommands.impl;
+
+import iaik.asn1.ASN;
+import iaik.asn1.ASN1Object;
+import iaik.asn1.CodingException;
+import iaik.asn1.DerCoder;
+import iaik.asn1.NumericString;
+import iaik.asn1.OCTET_STRING;
+import iaik.asn1.ObjectID;
+import iaik.asn1.SEQUENCE;
+import iaik.asn1.SET;
+import iaik.asn1.UNKNOWN;
+import iaik.asn1.structures.ChoiceOfTime;
+
+import java.io.IOException;
+import java.math.BigInteger;
+import java.nio.charset.Charset;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.TimeZone;
+
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.buergerkarte.namespaces.cardchannel.AttributeList;
+import at.buergerkarte.namespaces.cardchannel.AttributeType;
+import at.buergerkarte.namespaces.cardchannel.ObjectFactory;
+import at.gv.egiz.bku.slcommands.SLCommandContext;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.bku.slexceptions.SLExceptionMessages;
+import at.gv.egiz.stal.InfoboxReadRequest;
+import at.gv.egiz.stal.InfoboxReadResponse;
+import at.gv.egiz.stal.STALRequest;
+
+/**
+ * An implementation of the {@link Infobox} <em>Certificates</em> as
+ * specified in Security Layer 1.2.
+ *
+ * @author mcentner
+ */
+public class SVPersonendatenInfoboxImpl extends AbstractAssocArrayInfobox {
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(SVPersonendatenInfoboxImpl.class);
+
+ public static final String EHIC = "EHIC";
+
+ public static final String GRUNDDATEN = "Grunddaten";
+
+ public static final String STATUS = "Status";
+
+ public static final String SV_PERSONENBINDUNG = "SV-Personenbindung";
+
+ /**
+ * The valid keys.
+ */
+ public static final String[] KEYS = new String[] {
+ GRUNDDATEN, EHIC, STATUS, SV_PERSONENBINDUNG
+ };
+
+ @Override
+ public String getIdentifier() {
+ return "SV-Personendaten";
+ }
+
+ @Override
+ public String[] getKeys() {
+ return KEYS;
+ }
+
+ @Override
+ public boolean isValuesAreXMLEntities() {
+ return true;
+ }
+
+ @Override
+ public Map<String, Object> getValues(List<String> keys, SLCommandContext cmdCtx) throws SLCommandException {
+
+ STALHelper stalHelper = new STALHelper(cmdCtx.getSTAL());
+
+ if (keys != null && !keys.isEmpty()) {
+
+ List<STALRequest> stalRequests = new ArrayList<STALRequest>();
+
+ // get values
+ InfoboxReadRequest infoboxReadRequest;
+ for (int i = 0; i < keys.size(); i++) {
+ infoboxReadRequest = new InfoboxReadRequest();
+ infoboxReadRequest.setInfoboxIdentifier(keys.get(i));
+ stalRequests.add(infoboxReadRequest);
+ }
+
+ stalHelper.transmitSTALRequest(stalRequests);
+
+ Map<String, Object> values = new HashMap<String, Object>();
+
+ try {
+ for (int i = 0; i < keys.size(); i++) {
+
+ String key = keys.get(i);
+ InfoboxReadResponse nextResponse = (InfoboxReadResponse) stalHelper.nextResponse(InfoboxReadResponse.class);
+
+
+ ObjectFactory objectFactory = new ObjectFactory();
+
+ if (EHIC.equals(key)) {
+ AttributeList attributeList = createAttributeList(nextResponse.getInfoboxValue());
+ values.put(key, objectFactory.createEHIC(attributeList));
+ } else if (GRUNDDATEN.equals(key)) {
+ AttributeList attributeList = createAttributeList(nextResponse.getInfoboxValue());
+ values.put(key, objectFactory.createGrunddaten(attributeList));
+ } else if (SV_PERSONENBINDUNG.equals(key)) {
+ values.put(key, objectFactory.createSVPersonenbindung(nextResponse.getInfoboxValue()));
+ } else if (STATUS.equals(key)) {
+ AttributeList attributeList = createAttributeListFromRecords(nextResponse.getInfoboxValue());
+ values.put(key, objectFactory.createStatus(attributeList));
+ }
+
+ }
+ } catch (CodingException e) {
+ log.info("Failed to decode '" + getIdentifier() + "' infobox.", e);
+ throw new SLCommandException(4000,
+ SLExceptionMessages.EC4000_UNCLASSIFIED_INFOBOX_INVALID,
+ new Object[] { "IdentityLink" });
+
+ }
+
+ return values;
+
+ } else {
+
+ return new HashMap<String, Object>();
+
+ }
+
+
+ }
+
+ public static AttributeList createAttributeList(byte[] infoboxValue) throws CodingException {
+
+ ObjectFactory objectFactory = new ObjectFactory();
+
+ ASN1Object asn1 = DerCoder.decode(infoboxValue);
+
+ AttributeList attributeList = objectFactory.createAttributeList();
+ List<AttributeType> attributes = attributeList.getAttribute();
+
+ if (asn1.isA(ASN.SEQUENCE)) {
+ for (int i = 0; i < ((SEQUENCE) asn1).countComponents(); i++) {
+
+ AttributeType attributeType = objectFactory.createAttributeType();
+
+ if (asn1.getComponentAt(i).isA(ASN.SEQUENCE)) {
+ SEQUENCE attribute = (SEQUENCE) asn1.getComponentAt(i);
+ if (attribute.getComponentAt(0).isA(ASN.ObjectID)) {
+ ObjectID objectId = (ObjectID) attribute.getComponentAt(0);
+ attributeType.setOid("urn:oid:" + objectId.getID());
+ }
+ if (attribute.getComponentAt(1).isA(ASN.SET)) {
+ SET values = (SET) attribute.getComponentAt(1);
+ for (int j = 0; j < values.countComponents(); j++) {
+ setAttributeValue(attributeType, values.getComponentAt(j));
+ }
+ }
+ }
+
+ attributes.add(attributeType);
+
+ }
+
+ }
+
+ return attributeList;
+
+ }
+
+ public static AttributeList createAttributeListFromRecords(byte[] infoboxValue) throws CodingException {
+
+ ObjectFactory objectFactory = new ObjectFactory();
+
+ AttributeList attributeList = objectFactory.createAttributeList();
+ List<AttributeType> attributes = attributeList.getAttribute();
+
+ byte[] records = infoboxValue;
+
+ while (records != null && records.length > 0) {
+
+ int length;
+
+ if (records[0] != 0x00) {
+
+ ASN1Object asn1 = DerCoder.decode(records);
+
+ AttributeType attributeType = objectFactory.createAttributeType();
+
+ if (asn1.isA(ASN.SEQUENCE)) {
+ SEQUENCE attribute = (SEQUENCE) asn1;
+ if (attribute.getComponentAt(0).isA(ASN.ObjectID)) {
+ ObjectID objectId = (ObjectID) attribute.getComponentAt(0);
+ attributeType.setOid("urn:oid:" + objectId.getID());
+ }
+ if (attribute.getComponentAt(1).isA(ASN.SET)) {
+ SET values = (SET) attribute.getComponentAt(1);
+ for (int j = 0; j < values.countComponents(); j++) {
+ setAttributeValue(attributeType, values.getComponentAt(j));
+ }
+ }
+ }
+
+ attributes.add(attributeType);
+
+ length = DerCoder.encode(asn1).length;
+
+ } else {
+ length = 1;
+ }
+
+ if (length < records.length) {
+ records = Arrays.copyOfRange(records, length + 1, records.length);
+ } else {
+ records = null;
+ }
+
+ }
+
+ return attributeList;
+
+ }
+
+ private static void setAttributeValue(AttributeType attributeType, ASN1Object value) {
+
+ if (value.isA(ASN.OCTET_STRING)) {
+
+ try {
+ byte[] octets = ((OCTET_STRING) value).getWholeValue();
+ attributeType.setLatin1String(new String(octets, Charset.forName("ISO-8859-1")));
+ } catch (IOException e) {
+ log.info("Failed to set Latin1String.", e);
+ }
+
+ } else if (value.isA(ASN.NumericString)) {
+
+ attributeType.setNumericString((String) ((NumericString) value).getValue());
+
+ } else if (value.isA(ASN.GeneralizedTime)) {
+
+ try {
+ ChoiceOfTime choiceOfTime = new ChoiceOfTime(value);
+
+ GregorianCalendar gregorianCalendar = new GregorianCalendar();
+ gregorianCalendar.setTimeZone(TimeZone.getTimeZone("UTC"));
+ gregorianCalendar.setTime(choiceOfTime.getDate());
+
+ DatatypeFactory datatypeFactory = DatatypeFactory.newInstance();
+ XMLGregorianCalendar xmlGregorianCalendar = datatypeFactory.newXMLGregorianCalendar(gregorianCalendar);
+ xmlGregorianCalendar.setTimezone(0);
+
+ attributeType.setGeneralizedTime(xmlGregorianCalendar);
+ } catch (Exception e) {
+ log.info("Failed to set GeneralizedTime.", e);
+ }
+
+ } else if (value.isA(ASN.INTEGER)) {
+
+ attributeType.setInteger((BigInteger) value.getValue());
+
+ } else if (value.isA(ASN.UTF8String)) {
+
+ attributeType.setUTF8String((String) value.getValue());
+
+ } else if (value.isA(ASN.PrintableString)) {
+
+ attributeType.setPrintableString((String) value.getValue());
+
+ } else if (value.isA(ASN.UNKNOWN)) {
+
+ byte[] bytes = (byte[]) ((UNKNOWN) value).getValue();
+
+ try {
+ BigInteger bigInteger = new BigInteger(bytes);
+ String string = bigInteger.toString(16);
+
+ Date date = new SimpleDateFormat("yyyyMMdd").parse(string);
+ attributeType.setDate(new SimpleDateFormat("yyyy-MM-dd").format(date));
+ } catch (Exception e) {
+ log.info("Failed to set Date.", e);
+ }
+ }
+
+ }
+
+
+
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/AlgorithmMethodFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/AlgorithmMethodFactory.java
new file mode 100644
index 00000000..d6cbaefa
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/AlgorithmMethodFactory.java
@@ -0,0 +1,79 @@
+/*
+* 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.slcommands.impl.xsect;
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.NoSuchAlgorithmException;
+
+import javax.xml.crypto.AlgorithmMethod;
+import javax.xml.crypto.dsig.CanonicalizationMethod;
+import javax.xml.crypto.dsig.DigestMethod;
+import javax.xml.crypto.dsig.SignatureMethod;
+
+/**
+ * A factory for creating {@link AlgorithmMethod}s.
+ *
+ * @author mcentner
+ */
+public interface AlgorithmMethodFactory {
+
+ /**
+ * Creates a new DigestMethod for the given <code>signatureContext</code>.
+ *
+ * @param signatureContext
+ * the signature context
+ *
+ * @return a DigestMethod for the given <code>signatureContext</code>
+ *
+ * @throws NoSuchAlgorithmException
+ * @throws InvalidAlgorithmParameterException
+ */
+ public DigestMethod createDigestMethod(SignatureContext signatureContext)
+ throws NoSuchAlgorithmException, InvalidAlgorithmParameterException;
+
+ /**
+ * Creates a new SignatureMethod for the given <code>signatureContext</code>.
+ *
+ * @param signatureContext
+ * the signature context
+ *
+ * @return a SignatureMethod for the given <code>signatureContext</code>
+ *
+ * @throws NoSuchAlgorithmException
+ * @throws InvalidAlgorithmParameterException
+ */
+ public SignatureMethod createSignatureMethod(SignatureContext signatureContext)
+ throws NoSuchAlgorithmException, InvalidAlgorithmParameterException;
+
+ /**
+ * Creates a new CanonicalizationMethod for the given
+ * <code>signatureContext</code>.
+ *
+ * @param signatureContext
+ * the signature context
+ *
+ * @return a CanonicalizationMethod for the given
+ * <code>signatureContext</code>
+ *
+ * @throws NoSuchAlgorithmException
+ * @throws InvalidAlgorithmParameterException
+ */
+ public CanonicalizationMethod createCanonicalizationMethod(
+ SignatureContext signatureContext) throws NoSuchAlgorithmException,
+ InvalidAlgorithmParameterException;
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/AlgorithmMethodFactoryImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/AlgorithmMethodFactoryImpl.java
new file mode 100644
index 00000000..8391e450
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/AlgorithmMethodFactoryImpl.java
@@ -0,0 +1,172 @@
+/*
+* 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.slcommands.impl.xsect;
+
+import iaik.security.ecc.interfaces.ECDSAParams;
+import iaik.xml.crypto.XmldsigMore;
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.NoSuchAlgorithmException;
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+import java.security.interfaces.ECPublicKey;
+import java.security.interfaces.RSAPublicKey;
+import java.security.spec.ECParameterSpec;
+
+import javax.xml.crypto.dsig.CanonicalizationMethod;
+import javax.xml.crypto.dsig.DigestMethod;
+import javax.xml.crypto.dsig.SignatureMethod;
+import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
+import javax.xml.crypto.dsig.spec.DigestMethodParameterSpec;
+import javax.xml.crypto.dsig.spec.SignatureMethodParameterSpec;
+
+/**
+ * An implementation of the AlgorithmMethod factory that uses the signing
+ * certificate to choose appropriate algorithms.
+ *
+ * @author mcentner
+ */
+public class AlgorithmMethodFactoryImpl implements AlgorithmMethodFactory {
+
+ /**
+ * Use SHA-2?
+ */
+ private static boolean SHA2 = false;
+
+ /**
+ * The signature algorithm URI.
+ */
+ private String signatureAlgorithmURI;
+
+ /**
+ * the digest algorithm URI.
+ */
+ private String digestAlgorithmURI = DigestMethod.SHA1;
+
+ /**
+ * The algorithm parameters for the signature algorithm.
+ */
+ private SignatureMethodParameterSpec signatureMethodParameterSpec;
+
+ /**
+ * Creates a new AlgrithmMethodFactory with the given
+ * <code>signingCertificate</code>.
+ *
+ * @param signingCertificate
+ *
+ * @throws NoSuchAlgorithmException
+ * if the public key algorithm of the given
+ * <code>signingCertificate</code> is not supported
+ */
+ public AlgorithmMethodFactoryImpl(X509Certificate signingCertificate)
+ throws NoSuchAlgorithmException {
+
+ PublicKey publicKey = signingCertificate.getPublicKey();
+ String algorithm = publicKey.getAlgorithm();
+
+ if ("DSA".equals(algorithm)) {
+ signatureAlgorithmURI = SignatureMethod.DSA_SHA1;
+ } else if ("RSA".equals(algorithm)) {
+
+ int keyLength = 0;
+ if (publicKey instanceof RSAPublicKey) {
+ keyLength = ((RSAPublicKey) publicKey).getModulus().bitLength();
+ }
+
+ if (SHA2 && keyLength >= 2048) {
+ signatureAlgorithmURI = XmldsigMore.SIGNATURE_RSA_SHA256;
+ digestAlgorithmURI = DigestMethod.SHA256;
+ } else {
+ signatureAlgorithmURI = SignatureMethod.RSA_SHA1;
+ }
+
+ } else if (("EC".equals(algorithm)) || ("ECDSA".equals(algorithm))) {
+
+ int fieldSize = 0;
+ if (publicKey instanceof iaik.security.ecc.ecdsa.ECPublicKey) {
+ ECDSAParams params = ((iaik.security.ecc.ecdsa.ECPublicKey) publicKey).getParameter();
+ fieldSize = params.getG().getCurve().getField().getSize().bitLength();
+ } else if (publicKey instanceof ECPublicKey) {
+ ECParameterSpec params = ((ECPublicKey) publicKey).getParams();
+ fieldSize = params.getCurve().getField().getFieldSize();
+ }
+
+ if (SHA2 && fieldSize >= 512) {
+ signatureAlgorithmURI = XmldsigMore.SIGNATURE_ECDSA_SHA512;
+ digestAlgorithmURI = DigestMethod.SHA512;
+ } else if (SHA2 && fieldSize >= 256) {
+ signatureAlgorithmURI = XmldsigMore.SIGNATURE_ECDSA_SHA256;
+ digestAlgorithmURI = DigestMethod.SHA256;
+ } else {
+ signatureAlgorithmURI = XmldsigMore.SIGNATURE_ECDSA_SHA1;
+ }
+
+ } else {
+ throw new NoSuchAlgorithmException("Public key algorithm '" + algorithm
+ + "' not supported.");
+ }
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @seeat.gv.egiz.bku.slcommands.impl.xsect.AlgorithmMethodFactory#
+ * createCanonicalizationMethod
+ * (at.gv.egiz.bku.slcommands.impl.xsect.SignatureContext)
+ */
+ @Override
+ public CanonicalizationMethod createCanonicalizationMethod(
+ SignatureContext signatureContext) throws NoSuchAlgorithmException,
+ InvalidAlgorithmParameterException {
+
+ return signatureContext.getSignatureFactory().newCanonicalizationMethod(
+ CanonicalizationMethod.EXCLUSIVE, (C14NMethodParameterSpec) null);
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * at.gv.egiz.bku.slcommands.impl.xsect.AlgorithmMethodFactory#createDigestMethod
+ * (at.gv.egiz.bku.slcommands.impl.xsect.SignatureContext)
+ */
+ @Override
+ public DigestMethod createDigestMethod(SignatureContext signatureContext)
+ throws NoSuchAlgorithmException, InvalidAlgorithmParameterException {
+
+ return signatureContext.getSignatureFactory().newDigestMethod(
+ digestAlgorithmURI, (DigestMethodParameterSpec) null);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @seeat.gv.egiz.bku.slcommands.impl.xsect.AlgorithmMethodFactory#
+ * createSignatureMethod
+ * (at.gv.egiz.bku.slcommands.impl.xsect.SignatureContext)
+ */
+ @Override
+ public SignatureMethod createSignatureMethod(SignatureContext signatureContext)
+ throws NoSuchAlgorithmException, InvalidAlgorithmParameterException {
+
+ return signatureContext.getSignatureFactory().newSignatureMethod(
+ signatureAlgorithmURI, signatureMethodParameterSpec);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/ByteArrayDereferencer.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/ByteArrayDereferencer.java
new file mode 100644
index 00000000..a6473a05
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/ByteArrayDereferencer.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.slcommands.impl.xsect;
+
+import java.io.ByteArrayInputStream;
+
+import javax.xml.crypto.Data;
+import javax.xml.crypto.OctetStreamData;
+import javax.xml.crypto.URIDereferencer;
+import javax.xml.crypto.URIReference;
+import javax.xml.crypto.URIReferenceException;
+import javax.xml.crypto.XMLCryptoContext;
+
+/**
+ * An URIDereferencer implementation that dereferences the given
+ * byte array.
+ *
+ * @author mcentner
+ */
+public class ByteArrayDereferencer implements URIDereferencer {
+
+ /**
+ * The dereferenced data.
+ */
+ protected byte[] dereferencedData;
+
+ /**
+ * Creates a new instance of this ByteArrayDereferencer with
+ * the given <code>dereferencedData</code>.
+ *
+ * @param dereferencedData the octets to be returned by {@link #dereference(URIReference, XMLCryptoContext)}
+ *
+ * @throws NullPointerException if <code>dereferencedData</code> is <code>null</code>
+ */
+ public ByteArrayDereferencer(byte[] dereferencedData) {
+ if (dereferencedData == null) {
+ throw new NullPointerException("Parameter 'dereferencedData' must not be null.");
+ }
+ this.dereferencedData = dereferencedData;
+ }
+
+ /* (non-Javadoc)
+ * @see javax.xml.crypto.URIDereferencer#dereference(javax.xml.crypto.URIReference, javax.xml.crypto.XMLCryptoContext)
+ */
+ @Override
+ public Data dereference(URIReference uriReference, XMLCryptoContext context)
+ throws URIReferenceException {
+ return new OctetStreamData(new ByteArrayInputStream(dereferencedData));
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/DataObject.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/DataObject.java
new file mode 100644
index 00000000..a57a11dd
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/DataObject.java
@@ -0,0 +1,1289 @@
+/*
+* 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.slcommands.impl.xsect;
+
+import iaik.xml.crypto.dom.DOMCryptoContext;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.SequenceInputStream;
+import java.io.StringWriter;
+import java.io.UnsupportedEncodingException;
+import java.net.URISyntaxException;
+import java.nio.charset.Charset;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.crypto.MarshalException;
+import javax.xml.crypto.dom.DOMStructure;
+import javax.xml.crypto.dsig.CanonicalizationMethod;
+import javax.xml.crypto.dsig.DigestMethod;
+import javax.xml.crypto.dsig.Reference;
+import javax.xml.crypto.dsig.Transform;
+import javax.xml.crypto.dsig.XMLObject;
+import javax.xml.crypto.dsig.spec.TransformParameterSpec;
+import javax.xml.crypto.dsig.spec.XPathFilter2ParameterSpec;
+import javax.xml.crypto.dsig.spec.XPathType;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.DOMConfiguration;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Document;
+import org.w3c.dom.DocumentFragment;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.Text;
+import org.w3c.dom.bootstrap.DOMImplementationRegistry;
+import org.w3c.dom.ls.DOMImplementationLS;
+import org.w3c.dom.ls.LSException;
+import org.w3c.dom.ls.LSInput;
+import org.w3c.dom.ls.LSOutput;
+import org.w3c.dom.ls.LSParser;
+import org.w3c.dom.ls.LSSerializer;
+
+import at.buergerkarte.namespaces.securitylayer._1.Base64XMLLocRefOptRefContentType;
+import at.buergerkarte.namespaces.securitylayer._1.DataObjectInfoType;
+import at.buergerkarte.namespaces.securitylayer._1.MetaInfoType;
+import at.buergerkarte.namespaces.securitylayer._1.TransformsInfoType;
+import at.gv.egiz.bku.binding.HttpUtil;
+import at.gv.egiz.bku.gui.viewer.MimeTypes;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.bku.slexceptions.SLRequestException;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+import at.gv.egiz.bku.slexceptions.SLViewerException;
+import at.gv.egiz.bku.utils.urldereferencer.StreamData;
+import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer;
+import at.gv.egiz.bku.viewer.ValidationException;
+import at.gv.egiz.bku.viewer.Validator;
+import at.gv.egiz.bku.viewer.ValidatorFactory;
+import at.gv.egiz.dom.DOMUtils;
+import at.gv.egiz.slbinding.impl.XMLContentType;
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URI;
+import java.net.URL;
+
+/**
+ * This class represents a <code>DataObject</code> of an XML-Signature
+ * created by the security layer command <code>CreateXMLSignature</code>.
+ *
+ * @author mcentner
+ */
+public class DataObject {
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(DataObject.class);
+
+ /**
+ * DOM Implementation.
+ */
+ private static final String DOM_LS_3_0 = "LS 3.0";
+
+ /**
+ * The array of the default preferred MIME type order.
+ */
+ private static final String[] DEFAULT_PREFFERED_MIME_TYPES =
+ new String[] {
+ "text/plain",
+ "application/xhtml+xml"
+ };
+
+ /**
+ * Validate hash input.
+ */
+ private static boolean validate = false;
+
+ /**
+ * Enable validation of hash data input.
+ *
+ * @param validate
+ * <code>true</code> if validation should be enabled, or
+ * <code>false</code> otherwise.
+ */
+ public static void enableHashDataInputValidation(boolean validate) {
+ DataObject.validate = validate;
+ }
+
+ /**
+ * @return <code>true</code> if hash data input validation is enabled,
+ * or <code>false</code> otherwise.
+ */
+ public static boolean isHashDataInputValidationEnabled() {
+ return validate;
+ }
+
+ /**
+ * Valid MIME types.
+ */
+ private static String[] validMimeTypes = DEFAULT_PREFFERED_MIME_TYPES;
+
+ /**
+ * Sets the list of valid hash data input media types.
+ * <p>The array is also used for transformation path selection.
+ * The transformation path with a final type, that appears in the
+ * given array in the earliest position is used selected.</p>
+ *
+ * @param mediaTypes an array of MIME media types.
+ */
+ public static void setValidHashDataInputMediaTypes(String[] mediaTypes) {
+ validMimeTypes = mediaTypes;
+ }
+
+ /**
+ * The DOM implementation used.
+ */
+ private DOMImplementationLS domImplLS;
+
+ /**
+ * The signature context.
+ */
+ private SignatureContext ctx;
+
+ /**
+ * The Reference for this DataObject.
+ */
+ private XSECTReference reference;
+
+ /**
+ * The XMLObject for this DataObject.
+ */
+ private XMLObject xmlObject;
+
+ /**
+ * The MIME-Type of the digest input.
+ */
+ private String mimeType;
+
+ /**
+ * An optional description of the digest input.
+ */
+ private String description;
+
+ private String filename;
+
+ /**
+ * Creates a new instance.
+ *
+ * @param document the document of the target signature
+ */
+ public DataObject(SignatureContext signatureContext) {
+ this.ctx = signatureContext;
+
+ DOMImplementationRegistry registry;
+ try {
+ registry = DOMImplementationRegistry.newInstance();
+ } catch (Exception e) {
+ log.error("Failed to get DOMImplementationRegistry.", e);
+ throw new SLRuntimeException("Failed to get DOMImplementationRegistry.");
+ }
+
+ domImplLS = (DOMImplementationLS) registry.getDOMImplementation(DOM_LS_3_0);
+ if (domImplLS == null) {
+ log.error("Failed to get DOMImplementation " + DOM_LS_3_0);
+ throw new SLRuntimeException("Failed to get DOMImplementation " + DOM_LS_3_0);
+ }
+
+ }
+
+ /**
+ * @return the reference
+ */
+ public Reference getReference() {
+ return reference;
+ }
+
+ /**
+ * @return the xmlObject
+ */
+ public XMLObject getXmlObject() {
+ return xmlObject;
+ }
+
+ /**
+ * @return the mimeType
+ */
+ public String getMimeType() {
+ return mimeType;
+ }
+
+ public String getFilename() {
+ return filename;
+ }
+
+ /**
+ * @return the description
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ public void validateHashDataInput() throws SLViewerException {
+
+ if (validate) {
+
+ if (reference == null) {
+ log.error("Medthod validateHashDataInput() called before reference has been created.");
+ throw new SLViewerException(5000);
+ }
+
+ InputStream digestInputStream = reference.getDigestInputStream();
+ if (digestInputStream == null) {
+ log.error("Method validateHashDataInput() called before reference has been generated " +
+ "or reference caching is not enabled.");
+ throw new SLViewerException(5000);
+ }
+
+ if (mimeType == null) {
+ log.info("FinalDataMetaInfo does not specify MIME type of to be signed data.");
+ // TODO: add detailed message
+ throw new SLViewerException(5000);
+ }
+
+ // get MIME media type
+ String mediaType = mimeType.split(";")[0].trim();
+ // and optional charset
+ String charset = HttpUtil.getCharset(mimeType, false);
+
+ if (Arrays.asList(validMimeTypes).contains(mediaType)) {
+
+ Validator validator;
+ try {
+ validator = ValidatorFactory.newValidator(mediaType);
+ } catch (IllegalArgumentException e) {
+ log.error("No validator found for mime type '" + mediaType + "'.");
+ throw new SLViewerException(5000);
+ }
+
+ try {
+ validator.validate(digestInputStream, charset);
+ } catch (ValidationException e) {
+ if ("text/plain".equals(mediaType)) {
+ log.info("Data to be displayed contains unsupported characters.", e);
+ // TODO: add detailed message
+ throw new SLViewerException(5003);
+ } else if ("application/xhtml+xml".equals(mediaType)) {
+ // TODO: add detailed message
+ log.info("Standard display format: HTML does not conform to specification.", e);
+ throw new SLViewerException(5004);
+ } else {
+ // TODO: add detailed message
+ log.info("Data to be displayed is invalid.", e);
+ throw new SLViewerException(5000);
+ }
+ }
+
+ } else {
+ log.debug("MIME media type '" + mediaType + "' is not a s/valid/SUPPORTED digest input, omitting validation.");
+ }
+ }
+
+ }
+
+ /**
+ * Configures this DataObject with the information provided within the given
+ * <code>sl:DataObjectInfo</code>.
+ *
+ * @param dataObjectInfo
+ * the <code>sl:DataObjectInfo</code>
+ *
+ * @throws SLCommandException
+ * if configuring this DataObject with the information provided in
+ * the <code>sl:DataObjectInfo</code> fails.
+ * @throws SLRequestException
+ * if the information provided in the <code>sl:DataObjectInfo</code>
+ * does not conform to the security layer specification.
+ * @throws NullPointerException
+ * if <code>dataObjectInfo</code> is <code>null</code>
+ */
+ public void setDataObjectInfo(DataObjectInfoType dataObjectInfo) throws SLCommandException, SLRequestException {
+
+ Base64XMLLocRefOptRefContentType dataObject = dataObjectInfo.getDataObject();
+ String structure = dataObjectInfo.getStructure();
+
+ // select and unmarshal an appropriate transformation path if provided
+ // and set the final data meta information
+ XSECTTransforms transforms = createTransformsAndSetFinalDataMetaInfo(dataObjectInfo.getTransformsInfo());
+
+ if ("enveloping".equals(structure)) {
+
+ // configure this DataObject as an enveloped DataObject
+ setEnvelopedDataObject(dataObject, transforms);
+
+ } else if ("detached".equals(structure)) {
+
+ // configure this DataObject as an detached DataObject
+ setDetachedDataObject(dataObject, transforms);
+
+ }
+ // other values are not allowed by the schema and are therefore ignored
+
+ this.filename = deriveFilename();
+ }
+
+ /**
+ * Extract filename from reference URI
+ * or propose reference Id with an apropriate (mime-type) file extension
+ *
+ * @return if neither reference nor id can be extracted return null (or data.extension?)
+ */
+ private String deriveFilename() {
+
+ String filename = null;
+
+ if (reference != null) {
+ if (reference.getURI() != null && !"".equals(reference.getURI())) {
+ try {
+ log.info("deriving filename from reference URI " + reference.getURI());
+ URI refURI = new URI(reference.getURI());
+
+ if (refURI.isOpaque()) {
+ // could check scheme component, but also allow other schemes (e.g. testlocal)
+ log.trace("opaque reference URI, use scheme-specific part as filename");
+ filename = refURI.getSchemeSpecificPart();
+ if (!hasExtension(filename)) {
+ filename += MimeTypes.getExtension(mimeType);
+ }
+ // else hierarchical URI:
+ // for shorthand xpointer use fragment as filename,
+ // for any other xpointer use reference Id and
+ // for any other hierarchical (absolute or relative) use filename (ignore fragment, see xmldsig section 4.3.3.2: fragments not recommendet)
+ } else if ("".equals(refURI.getPath()) &&
+ refURI.getFragment() != null &&
+ refURI.getFragment().indexOf('(') < 0) { // exclude (schemebased) xpointer expressions
+ log.trace("fragment (shorthand xpointer) URI, use fragment as filename");
+ filename = refURI.getFragment();
+ if(!hasExtension(filename)) {
+ filename += MimeTypes.getExtension(mimeType);
+ }
+ } else if (!"".equals(refURI.getPath())) {
+ log.trace("hierarchical URI with path component, use path as filename");
+ File refFile = new File(refURI.getPath());
+ filename = refFile.getName();
+ if(!hasExtension(filename)) {
+ filename += MimeTypes.getExtension(mimeType);
+ }
+ } else {
+ log.debug("failed to derive filename from URI '" + refURI + "', derive filename from reference ID");
+ filename = reference.getId() + MimeTypes.getExtension(mimeType);
+ }
+ } catch (URISyntaxException ex) {
+ log.error("failed to derive filename from invalid URI " + ex.getMessage());
+ filename = reference.getId() + MimeTypes.getExtension(mimeType);
+ }
+ } else {
+ log.debug("same-document URI, derive filename from reference ID");
+ filename = reference.getId() + MimeTypes.getExtension(mimeType);
+ }
+ } else {
+ log.error("failed to derive filename, no reference created");
+ }
+ log.debug("derived filename for reference " + reference.getId() + ": " + filename);
+ return filename;
+ }
+
+ private static boolean hasExtension(String filename) {
+ int extDelimiterInd = filename.lastIndexOf('.');
+ return extDelimiterInd >= 0 && extDelimiterInd >= filename.length() - 4;
+ }
+
+ private byte[] getTransformsBytes(at.gv.egiz.slbinding.impl.TransformsInfoType ti) {
+ return ti.getRedirectedStream().toByteArray();
+// byte[] transformsBytes = ti.getRedirectedStream().toByteArray();
+//
+// if (transformsBytes == null || transformsBytes.length == 0) {
+// return null;
+// }
+//
+// String dsigPrefix = ti.getNamespaceContext().getNamespaceURI("http://www.w3.org/2000/09/xmldsig#");
+// byte[] pre, post;
+// if (dsigPrefix == null) {
+// log.trace("XMLDSig not declared in outside dsig:Transforms");
+// pre = "<AssureDSigNS>".getBytes();
+// post = "</AssureDSigNS>".getBytes();
+// } else {
+// log.trace("XMLDSig bound to prefix " + dsigPrefix);
+// pre = ("<AssureDSigNS xmlns:" + dsigPrefix + "=\"http://www.w3.org/2000/09/xmldsig#\">").getBytes();
+// post = "</AssureDSigNS>".getBytes();
+// }
+//
+// byte[] workaround = new byte[pre.length + transformsBytes.length + post.length];
+// System.arraycopy(pre, 0, workaround, 0, pre.length);
+// System.arraycopy(transformsBytes, 0, workaround, pre.length, transformsBytes.length);
+// System.arraycopy(post, 0, workaround, pre.length + transformsBytes.length, post.length);
+// return workaround;
+ }
+
+ /**
+ * Configures this DataObject as an enveloped DataObject with the information
+ * provided within the given <code>sl:DataObject</code>.
+ *
+ * @param dataObject
+ * the <code>sl:DataObject</code>
+ * @param transforms
+ * an optional <code>Transforms</code> element (may be
+ * <code>null</code>)
+ *
+ * @throws SLCommandException
+ * if configuring this DataObject with the information provided in
+ * the <code>sl:DataObject</code> fails.
+ * @throws SLRequestException
+ * if the information provided in the <code>sl:DataObject</code>
+ * does not conform to the security layer specification.
+ * @throws NullPointerException
+ * if <code>dataObject</code> is <code>null</code>
+ */
+ private void setEnvelopedDataObject(
+ Base64XMLLocRefOptRefContentType dataObject, XSECTTransforms transforms)
+ throws SLCommandException, SLRequestException {
+
+ String reference = dataObject.getReference();
+ if (reference == null) {
+ //
+ // case A
+ //
+ // The Reference attribute is not used; the content of sl:DataObject represents the data object.
+ // If the data object is XML-coded (the sl:XMLContent element is used in sl:DataObject), then it
+ // must be incorporated in the signature structure as parsed XML.
+ //
+
+ if (dataObject.getBase64Content() != null) {
+
+ log.debug("Adding DataObject (Base64Content) without a reference URI.");
+
+ // create XMLObject
+ XMLObject xmlObject = createXMLObject(new ByteArrayInputStream(dataObject.getBase64Content()));
+
+ setXMLObjectAndReferenceBase64(xmlObject, transforms);
+
+ } else if (dataObject.getXMLContent() != null) {
+
+ log.debug("Adding DataObject (XMLContent) without a reference URI.");
+
+ // create XMLObject
+ DocumentFragment content = parseDataObject((XMLContentType) dataObject.getXMLContent());
+ XMLObject xmlObject = createXMLObject(content);
+
+ setXMLObjectAndReferenceXML(xmlObject, transforms);
+
+ } else if (dataObject.getLocRefContent() != null) {
+
+ log.debug("Adding DataObject (LocRefContent) without a reference URI.");
+
+ setEnvelopedDataObject(dataObject.getLocRefContent(), transforms);
+
+ } else {
+
+ // not allowed
+ log.info("XML structure of the command request contains an " +
+ "invalid combination of optional elements or attributes. " +
+ "DataObject of structure='enveloped' without a reference must contain content.");
+ throw new SLRequestException(3003);
+
+ }
+
+ } else {
+
+ if (dataObject.getBase64Content() == null &&
+ dataObject.getXMLContent() == null &&
+ dataObject.getLocRefContent() == null) {
+
+ //
+ // case B
+ //
+ // The Reference attribute contains a URI that must be resolved by the
+ // Citizen Card Environment to obtain the data object.
+ // The content of sl:DataObject remains empty
+ //
+
+ log.debug("Adding DataObject from reference URI '" + reference + "'.");
+
+ setEnvelopedDataObject(reference, transforms);
+
+ } else {
+
+ // not allowed
+ log.info("XML structure of the command request contains an " +
+ "invalid combination of optional elements or attributes. " +
+ "DataObject of structure='enveloped' with reference must not contain content.");
+ throw new SLRequestException(3003);
+
+ }
+
+
+ }
+
+ }
+
+ /**
+ * Configures this DataObject as an enveloped DataObject with the content to
+ * be dereferenced from the given <code>reference</code>.
+ *
+ * @param reference
+ * the <code>reference</code> URI
+ * @param transforms
+ * an optional <code>Transforms</code> element (may be
+ * <code>null</code>)
+ *
+ * @throws SLCommandException
+ * if dereferencing the given <code>reference</code> fails, or if
+ * configuring this DataObject with the data dereferenced from the
+ * given <code>reference</code> fails.
+ * @throws NullPointerException
+ * if <code>reference</code> is <code>null</code>
+ */
+ private void setEnvelopedDataObject(String reference, XSECTTransforms transforms) throws SLCommandException {
+
+ if (reference == null) {
+ throw new NullPointerException("Argument 'reference' must not be null.");
+ }
+
+ // dereference URL
+ URLDereferencer dereferencer = URLDereferencer.getInstance();
+
+ StreamData streamData;
+ try {
+ streamData = dereferencer.dereference(reference, ctx.getDereferencerContext());
+ } catch (IOException e) {
+ log.info("Failed to dereference XMLObject from '" + reference + "'.", e);
+ throw new SLCommandException(4110);
+ }
+
+ Node childNode;
+
+ String contentType = streamData.getContentType();
+ if (contentType.startsWith("text/xml")) {
+
+ // If content type is text/xml parse content.
+ String charset = HttpUtil.getCharset(contentType, true);
+
+ Document doc = parseDataObject(streamData.getStream(), charset);
+
+ childNode = doc.getDocumentElement();
+
+ if (childNode == null) {
+ log.info("Failed to parse XMLObject from '" + reference + "'.");
+ throw new SLCommandException(4111);
+ }
+
+ XMLObject xmlObject = createXMLObject(childNode);
+
+ setXMLObjectAndReferenceXML(xmlObject, transforms);
+
+ } else {
+
+ // Include content Base64 encoded.
+ XMLObject xmlObject = createXMLObject(streamData.getStream());
+
+ setXMLObjectAndReferenceBase64(xmlObject, transforms);
+
+ }
+
+ }
+
+ /**
+ * Configures this DataObject as an detached DataObject with the information
+ * provided in the given <code>sl:DataObject</code> and optionally
+ * <code>transforms</code>.
+ *
+ * @param dataObject
+ * the <code>sl:DataObject</code>
+ * @param transforms
+ * an optional Transforms object, may be <code>null</code>
+ *
+ * @throws SLCommandException
+ * if configuring this DataObject with the information provided in
+ * the <code>sl:DataObject</code> fails.
+ * @throws SLRequestException
+ * if the information provided in the <code>sl:DataObject</code>
+ * does not conform to the security layer specification.
+ * @throws NullPointerException
+ * if <code>dataObject</code> is <code>null</code>
+ */
+ private void setDetachedDataObject(
+ Base64XMLLocRefOptRefContentType dataObject, XSECTTransforms transforms)
+ throws SLCommandException, SLRequestException {
+
+ String referenceURI = dataObject.getReference();
+
+ if (referenceURI == null) {
+
+ // not allowed
+ log.info("XML structure of the command request contains an " +
+ "invalid combination of optional elements or attributes. " +
+ "DataObject of structure='detached' must contain a reference.");
+ throw new SLRequestException(3003);
+
+ } else {
+
+ DigestMethod dm;
+ try {
+ dm = ctx.getAlgorithmMethodFactory().createDigestMethod(ctx);
+ } catch (NoSuchAlgorithmException e) {
+ log.error("Failed to get DigestMethod.", e);
+ throw new SLCommandException(4006);
+ } catch (InvalidAlgorithmParameterException e) {
+ log.error("Failed to get DigestMethod.", e);
+ throw new SLCommandException(4006);
+ }
+
+ String idValue = ctx.getIdValueFactory().createIdValue("Reference");
+
+ reference = new XSECTReference(referenceURI, dm, transforms, null, idValue);
+
+ // case D:
+ //
+ // The Reference attribute contains a URI that is used by the Citizen Card
+ // Environment to code the reference to the data object as part of the XML
+ // signature (attribute URI in the dsig:Reference) element. The content of
+ // sl:DataObject represents the data object.
+
+ if (dataObject.getLocRefContent() != null) {
+ String locRef = dataObject.getLocRefContent();
+ try {
+ this.reference.setDereferencer(new LocRefDereferencer(ctx.getDereferencerContext(), locRef));
+ } catch (URISyntaxException e) {
+ log.info("Invalid URI '" + locRef + "' in DataObject.", e);
+ throw new SLCommandException(4003);
+ } catch (IllegalArgumentException e) {
+ log.info("LocRef URI of '" + locRef + "' not supported in DataObject. ", e);
+ throw new SLCommandException(4003);
+ }
+ } else if (dataObject.getBase64Content() != null) {
+ byte[] base64Content = dataObject.getBase64Content();
+ this.reference.setDereferencer(new ByteArrayDereferencer(base64Content));
+ } else if (dataObject.getXMLContent() != null) {
+ XMLContentType xmlContent = (XMLContentType) dataObject.getXMLContent();
+ byte[] bytes = xmlContent.getRedirectedStream().toByteArray();
+ this.reference.setDereferencer(new ByteArrayDereferencer(bytes));
+ } else {
+
+ // case C:
+ //
+ // The Reference attribute contains a URI that must be resolved by the
+ // Citizen Card Environment to obtain the data object. The Reference
+ // attribute contains a URI that is used by the Citizen Card Environment
+ // to code the reference to the data object as part of the XML signature
+ // (attribute URI in the dsig:Reference) element. The content of
+ // sl:DataObject remains empty.
+
+ }
+
+ }
+ }
+
+ /**
+ * Returns the preferred <code>sl:TransformInfo</code> from the given list of
+ * <code>transformInfos</code>, or <code>null</code> if none of the given
+ * <code>transformInfos</code> is preferred over the others.
+ *
+ * @param transformsInfos
+ * a list of <code>sl:TransformInfo</code>s
+ *
+ * @return the selected <code>sl:TransformInfo</code> or <code>null</code>, if
+ * none is preferred over the others
+ */
+ private TransformsInfoType selectPreferredTransformsInfo(List<TransformsInfoType> transformsInfos) {
+
+ Map<String, TransformsInfoType> mimeTypes = new HashMap<String, TransformsInfoType>();
+
+ StringBuilder debugString = null;
+ if (log.isDebugEnabled()) {
+ debugString = new StringBuilder();
+ debugString.append("Got " + transformsInfos.size() + " TransformsInfo(s):");
+ }
+
+ for (TransformsInfoType transformsInfoType : transformsInfos) {
+ MetaInfoType finalDataMetaInfo = transformsInfoType.getFinalDataMetaInfo();
+ String mimeType = finalDataMetaInfo.getMimeType();
+ String description = finalDataMetaInfo.getDescription();
+ mimeTypes.put(mimeType, transformsInfoType);
+ if (debugString != null) {
+ debugString.append("\n FinalDataMetaInfo: MIME-Type=");
+ debugString.append(mimeType);
+ if (description != null) {
+ debugString.append(" ");
+ debugString.append(description);
+ }
+ }
+ }
+
+ if (debugString != null) {
+ log.debug(debugString);
+ }
+
+ // look for preferred transform
+ for (String mimeType : DEFAULT_PREFFERED_MIME_TYPES) {
+ if (mimeTypes.containsKey(mimeType)) {
+ return mimeTypes.get(mimeType);
+ }
+ }
+
+ // no preferred transform
+ return null;
+
+ }
+
+ /**
+ * Create an instance of <code>ds:Transforms</code> from the given
+ * <code>sl:TransformsInfo</code>.
+ *
+ * @param transformsInfo
+ * the <code>sl:TransformsInfo</code>
+ *
+ * @return a corresponding unmarshalled <code>ds:Transforms</code>, or
+ * <code>null</code> if the given <code>sl:TransformsInfo</code> does
+ * not contain a <code>dsig:Transforms</code> element
+ *
+ * @throws SLRequestException
+ * if the <code>ds:Transforms</code> in the given
+ * <code>transformsInfo</code> are not valid or cannot be parsed.
+ *
+ * @throws MarshalException
+ * if the <code>ds:Transforms</code> in the given
+ * <code>transformsInfo</code> cannot be unmarshalled.
+ */
+ private XSECTTransforms createTransforms(TransformsInfoType transformsInfo) throws SLRequestException, MarshalException {
+
+ byte[] transforms = getTransformsBytes((at.gv.egiz.slbinding.impl.TransformsInfoType) transformsInfo);
+
+ if (transforms != null && transforms.length > 0) {
+ // debug
+ if (log.isTraceEnabled()) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("Trying to parse transforms:\n");
+ sb.append(new String(transforms, Charset.forName("UTF-8")));
+ log.trace(sb);
+ }
+
+ DOMImplementationLS domImplLS = DOMUtils.getDOMImplementationLS();
+ LSInput input = domImplLS.createLSInput();
+ input.setByteStream(new ByteArrayInputStream(transforms));
+
+ LSParser parser = domImplLS.createLSParser(
+ DOMImplementationLS.MODE_SYNCHRONOUS, null);
+ DOMConfiguration domConfig = parser.getDomConfig();
+ SimpleDOMErrorHandler errorHandler = new SimpleDOMErrorHandler();
+ domConfig.setParameter("error-handler", errorHandler);
+ domConfig.setParameter("validate", Boolean.FALSE);
+
+ Document document;
+ try {
+ document = parser.parse(input);
+ } catch (DOMException e) {
+ log.info("Failed to parse dsig:Transforms.", e);
+ throw new SLRequestException(3002);
+ } catch (LSException e) {
+ log.info("Failed to parse dsig:Transforms.", e);
+ throw new SLRequestException(3002);
+ }
+
+ // adopt ds:Transforms
+ Element transformsElt = document.getDocumentElement();
+ Node adoptedTransforms = ctx.getDocument().adoptNode(transformsElt);
+
+ DOMCryptoContext context = new DOMCryptoContext();
+
+ // unmarshall ds:Transforms
+ return new XSECTTransforms(context, adoptedTransforms);
+
+ } else {
+ return null;
+ }
+
+
+// TransformsType transformsType = transformsInfo.getTransforms();
+// if (transformsType == null) {
+// return null;
+// }
+// List<TransformType> transformList = transformsType.getTransform();
+//
+// DOMImplementationLS domImplLS = DOMUtils.getDOMImplementationLS();
+//// Document transformsDoc = ((DOMImplementation) domImplLS).createDocument("http://www.w3.org/2000/09/xmldsig#", "Transforms", null);
+//// Element transforms = transformsDoc.getDocumentElement();
+// Document transformsDoc = DOMUtils.createDocument();
+// Element transforms = transformsDoc.createElementNS(
+// "http://www.w3.org/2000/09/xmldsig#",
+// Signature.XMLDSIG_PREFIX + ":Transforms");
+// transformsDoc.appendChild(transforms);
+//
+// for (TransformType transformType : transformList) {
+// log.trace("found " + transformType.getClass().getName());
+// Element transform = transformsDoc.createElementNS(
+// "http://www.w3.org/2000/09/xmldsig#",
+// Signature.XMLDSIG_PREFIX + ":Transform");
+// String algorithm = transformType.getAlgorithm();
+// if (algorithm != null) {
+// log.trace("found algorithm " + algorithm);
+// transform.setAttribute("Algorithm", algorithm);
+// }
+//
+// at.gv.egiz.slbinding.impl.TransformType t = (at.gv.egiz.slbinding.impl.TransformType) transformType;
+// byte[] redirectedBytes = t.getRedirectedStream().toByteArray();
+// if (redirectedBytes != null && redirectedBytes.length > 0) {
+// if (log.isTraceEnabled()) {
+// StringBuilder sb = new StringBuilder();
+// sb.append("Trying to parse dsig:Transform:\n");
+// sb.append(new String(redirectedBytes, Charset.forName("UTF-8")));
+// log.trace(sb);
+// }
+// LSInput input = domImplLS.createLSInput();
+// input.setByteStream(new ByteArrayInputStream(redirectedBytes));
+//
+// LSParser parser = domImplLS.createLSParser(
+// DOMImplementationLS.MODE_SYNCHRONOUS, null);
+// DOMConfiguration domConfig = parser.getDomConfig();
+// SimpleDOMErrorHandler errorHandler = new SimpleDOMErrorHandler();
+// domConfig.setParameter("error-handler", errorHandler);
+// domConfig.setParameter("validate", Boolean.FALSE);
+//
+// try {
+// Document redirectedDoc = parser.parse(input);
+// Node redirected = transformsDoc.adoptNode(redirectedDoc.getDocumentElement());
+// transform.appendChild(redirected);
+//
+// //not supported by Xerces2.9.1
+//// Node redirected = parser.parseWithContext(input, transform, LSParser.ACTION_APPEND_AS_CHILDREN);
+//
+// } catch (DOMException e) {
+// log.info("Failed to parse dsig:Transform.", e);
+// throw new SLRequestException(3002);
+// } catch (LSException e) {
+// log.info("Failed to parse dsig:Transform.", e);
+// throw new SLRequestException(3002);
+// }
+// }
+// transforms.appendChild(transform);
+// }
+//
+// //adopt ds:Transforms
+// Node adoptedTransforms = ctx.getDocument().adoptNode(transforms);
+// DOMCryptoContext context = new DOMCryptoContext();
+//
+// // unmarshall ds:Transforms
+// return new XSECTTransforms(context, adoptedTransforms);
+
+ }
+
+ /**
+ * Sets the <code>mimeType</code> and the <code>description</code> value
+ * for this DataObject.
+ *
+ * @param metaInfoType the <code>sl:FinalMetaDataInfo</code>
+ *
+ * @throws NullPointerException if <code>metaInfoType</code> is <code>null</code>
+ */
+ private void setFinalDataMetaInfo(MetaInfoType metaInfoType) {
+
+ this.mimeType = metaInfoType.getMimeType();
+ this.description = metaInfoType.getDescription();
+
+ }
+
+ /**
+ * Selects an appropriate transformation path (if present) from the given list
+ * of <code>sl:TransformInfos</code>, sets the corresponding final data meta info and
+ * returns the corresponding unmarshalled <code>ds:Transforms</code>.
+ *
+ * @param transformsInfos the <code>sl:TransformInfos</code>
+ *
+ * @return the unmarshalled <code>ds:Transforms</code>, or <code>null</code> if
+ * no transformation path has been selected.
+ *
+ * @throws SLRequestException if the given list <code>ds:TransformsInfo</code> contains
+ * an invalid <code>ds:Transforms</code> element, or no suitable transformation path
+ * can be found.
+ */
+ private XSECTTransforms createTransformsAndSetFinalDataMetaInfo(
+ List<TransformsInfoType> transformsInfos) throws SLRequestException {
+
+ TransformsInfoType preferredTransformsInfo = selectPreferredTransformsInfo(transformsInfos);
+ // try preferred transform
+ if (preferredTransformsInfo != null) {
+
+ try {
+ XSECTTransforms transforms = createTransforms(preferredTransformsInfo);
+ setFinalDataMetaInfo(preferredTransformsInfo.getFinalDataMetaInfo());
+ return transforms;
+ } catch (MarshalException e) {
+
+ String mimeType = preferredTransformsInfo.getFinalDataMetaInfo().getMimeType();
+ log.info("Failed to unmarshal preferred transformation path (MIME-Type="
+ + mimeType + ").", e);
+
+ }
+
+ }
+
+ // look for another suitable transformation path
+ for (TransformsInfoType transformsInfoType : transformsInfos) {
+
+ try {
+ XSECTTransforms transforms = createTransforms(transformsInfoType);
+ setFinalDataMetaInfo(transformsInfoType.getFinalDataMetaInfo());
+ return transforms;
+ } catch (MarshalException e) {
+
+ String mimeType = transformsInfoType.getFinalDataMetaInfo().getMimeType();
+ log.info("Failed to unmarshal transformation path (MIME-Type="
+ + mimeType + ").", e);
+ }
+
+ }
+
+ // no suitable transformation path found
+ throw new SLRequestException(3003);
+
+ }
+
+ /**
+ * Create an XMLObject with the Base64 encoding of the given
+ * <code>content</code>.
+ *
+ * @param content
+ * the to-be Base64 encoded content
+ * @return an XMLObject with the Base64 encoded <code>content</code>
+ */
+ private XMLObject createXMLObject(InputStream content) {
+
+ Text textNode;
+ try {
+ textNode = at.gv.egiz.dom.DOMUtils.createBase64Text(content, ctx.getDocument());
+ } catch (IOException e) {
+ log.error(e);
+ throw new SLRuntimeException(e);
+ }
+
+ DOMStructure structure = new DOMStructure(textNode);
+
+ String idValue = ctx.getIdValueFactory().createIdValue("Object");
+
+ return ctx.getSignatureFactory().newXMLObject(Collections.singletonList(structure), idValue, null, null);
+
+ }
+
+ /**
+ * Create an XMLObject with the given <code>content</code> node.
+ *
+ * @param content the content node
+ *
+ * @return an XMLObject with the given <code>content</code>
+ */
+ private XMLObject createXMLObject(Node content) {
+
+ String idValue = ctx.getIdValueFactory().createIdValue("Object");
+
+ List<DOMStructure> structures = Collections.singletonList(new DOMStructure(content));
+
+ return ctx.getSignatureFactory().newXMLObject(structures, idValue, null, null);
+
+ }
+
+ /**
+ * Sets the given <code>xmlObject</code> and creates and sets a corresponding
+ * <code>Reference</code>.
+ * <p>
+ * A transform to Base64-decode the xmlObject's content is inserted at the top
+ * of to the optional <code>transforms</code> if given, or to a newly created
+ * <code>Transforms</code> element if <code>transforms</code> is
+ * <code>null</code>.
+ *
+ * @param xmlObject
+ * the XMLObject
+ * @param transforms
+ * an optional <code>Transforms</code> element (may be
+ * <code>null</code>)
+ *
+ * @throws SLCommandException
+ * if creating the Reference fails
+ * @throws NullPointerException
+ * if <code>xmlObject</code> is <code>null</code>
+ */
+ private void setXMLObjectAndReferenceBase64(XMLObject xmlObject, XSECTTransforms transforms) throws SLCommandException {
+
+ // create reference URI
+ //
+ // NOTE: the ds:Object can be referenced directly, as the Base64 transform
+ // operates on the text() of the input nodelist.
+ //
+ String referenceURI = "#" + xmlObject.getId();
+
+ // create Base64 Transform
+ Transform transform;
+ try {
+ transform = ctx.getSignatureFactory().newTransform(Transform.BASE64, (TransformParameterSpec) null);
+ } catch (NoSuchAlgorithmException e) {
+ // algorithm must be present
+ throw new SLRuntimeException(e);
+ } catch (InvalidAlgorithmParameterException e) {
+ // algorithm does not take parameters
+ throw new SLRuntimeException(e);
+ }
+
+ if (transforms == null) {
+ transforms = new XSECTTransforms(Collections.singletonList(transform));
+ } else {
+ transforms.insertTransform(transform);
+ }
+
+ DigestMethod dm;
+ try {
+ dm = ctx.getAlgorithmMethodFactory().createDigestMethod(ctx);
+ } catch (NoSuchAlgorithmException e) {
+ log.error("Failed to get DigestMethod.", e);
+ throw new SLCommandException(4006);
+ } catch (InvalidAlgorithmParameterException e) {
+ log.error("Failed to get DigestMethod.", e);
+ throw new SLCommandException(4006);
+ }
+ String id = ctx.getIdValueFactory().createIdValue("Reference");
+
+ this.xmlObject = xmlObject;
+ this.reference = new XSECTReference(referenceURI, dm, transforms, null, id);
+
+ }
+
+ /**
+ * Sets the given <code>xmlObject</code> and creates and sets a corresponding
+ * <code>Reference</code>.
+ * <p>
+ * A transform to select the xmlObject's content is inserted at the top of to
+ * the optional <code>transforms</code> if given, or to a newly created
+ * <code>Transforms</code> element if <code>transforms</code> is
+ * <code>null</code>.
+ * </p>
+ *
+ * @param xmlObject
+ * the XMLObject
+ * @param transforms
+ * an optional <code>Transforms</code> element (may be
+ * <code>null</code>)
+ *
+ * @throws SLCommandException
+ * if creating the Reference fails
+ * @throws NullPointerException
+ * if <code>xmlObject</code> is <code>null</code>
+ */
+ private void setXMLObjectAndReferenceXML(XMLObject xmlObject, XSECTTransforms transforms) throws SLCommandException {
+
+ // create reference URI
+ String referenceURI = "#" + xmlObject.getId();
+
+ // create Transform to select ds:Object's children
+ Transform xpathTransform;
+ Transform c14nTransform;
+ try {
+
+ XPathType xpath = new XPathType("id(\"" + xmlObject.getId() + "\")/node()", XPathType.Filter.INTERSECT);
+ List<XPathType> xpaths = Collections.singletonList(xpath);
+ XPathFilter2ParameterSpec params = new XPathFilter2ParameterSpec(xpaths);
+
+ xpathTransform = ctx.getSignatureFactory().newTransform(Transform.XPATH2, params);
+
+ // add exclusive canonicalization to avoid signing the namespace context of the ds:Object
+ c14nTransform = ctx.getSignatureFactory().newTransform(CanonicalizationMethod.EXCLUSIVE, (TransformParameterSpec) null);
+
+ } catch (NoSuchAlgorithmException e) {
+ // algorithm must be present
+ throw new SLRuntimeException(e);
+ } catch (InvalidAlgorithmParameterException e) {
+ // params must be appropriate
+ throw new SLRuntimeException(e);
+ }
+
+ if (transforms == null) {
+ List<Transform> newTransfroms = new ArrayList<Transform>();
+ newTransfroms.add(xpathTransform);
+ newTransfroms.add(c14nTransform);
+ transforms = new XSECTTransforms(newTransfroms);
+ } else {
+ transforms.insertTransform(xpathTransform);
+ }
+
+ DigestMethod dm;
+ try {
+ dm = ctx.getAlgorithmMethodFactory().createDigestMethod(ctx);
+ } catch (NoSuchAlgorithmException e) {
+ log.error("Failed to get DigestMethod.", e);
+ throw new SLCommandException(4006);
+ } catch (InvalidAlgorithmParameterException e) {
+ log.error("Failed to get DigestMethod.", e);
+ throw new SLCommandException(4006);
+ }
+ String id = ctx.getIdValueFactory().createIdValue("Reference");
+
+ this.xmlObject = xmlObject;
+ this.reference = new XSECTReference(referenceURI, dm, transforms, null, id);
+
+ }
+
+ /**
+ * Parses the given <code>xmlContent</code> and returns a corresponding
+ * document fragment.
+ *
+ * <p>
+ * The to-be parsed content is surrounded by <dummy> ... </dummy> elements to
+ * allow for mixed (e.g. Text and Element) content in XMLContent.
+ * </p>
+ *
+ * @param xmlContent
+ * the XMLContent to-be parsed
+ *
+ * @return a document fragment containing the parsed nodes
+ *
+ * @throws SLCommandException
+ * if parsing the given <code>xmlContent</code> fails
+ *
+ * @throws NullPointerException
+ * if <code>xmlContent</code> is <code>null</code>
+ */
+ private DocumentFragment parseDataObject(XMLContentType xmlContent) throws SLCommandException {
+
+ ByteArrayOutputStream redirectedStream = xmlContent.getRedirectedStream();
+
+ // Note: We can assume a fixed character encoding of UTF-8 for the
+ // content of the redirect stream as the content has already been parsed
+ // and serialized again to the redirect stream.
+
+ List<InputStream> inputStreams = new ArrayList<InputStream>();
+ try {
+ // dummy start element
+ inputStreams.add(new ByteArrayInputStream("<dummy>".getBytes("UTF-8")));
+
+ // content
+ inputStreams.add(new ByteArrayInputStream(redirectedStream.toByteArray()));
+
+ // dummy end element
+ inputStreams.add(new ByteArrayInputStream("</dummy>".getBytes("UTF-8")));
+ } catch (UnsupportedEncodingException e) {
+ throw new SLRuntimeException(e);
+ }
+
+ SequenceInputStream inputStream = new SequenceInputStream(Collections.enumeration(inputStreams));
+
+ // parse DataObject
+ Document doc = parseDataObject(inputStream, "UTF-8");
+
+ Element documentElement = doc.getDocumentElement();
+
+ if (documentElement == null ||
+ !"dummy".equals(documentElement.getLocalName())) {
+ log.info("Failed to parse DataObject XMLContent.");
+ throw new SLCommandException(4111);
+ }
+
+ DocumentFragment fragment = doc.createDocumentFragment();
+ while (documentElement.getFirstChild() != null) {
+ fragment.appendChild(documentElement.getFirstChild());
+ }
+
+ // log parsed document
+ if (log.isTraceEnabled()) {
+
+ StringWriter writer = new StringWriter();
+
+ writer.write("DataObject:\n");
+
+ LSOutput output = domImplLS.createLSOutput();
+ output.setCharacterStream(writer);
+ output.setEncoding("UTF-8");
+ LSSerializer serializer = domImplLS.createLSSerializer();
+ serializer.getDomConfig().setParameter("xml-declaration", Boolean.FALSE);
+ serializer.write(fragment, output);
+
+ log.trace(writer.toString());
+ }
+
+ return fragment;
+
+ }
+
+ /**
+ * Parses the given <code>inputStream</code> using the given
+ * <code>encoding</code> and returns the parsed document.
+ *
+ * @param inputStream
+ * the to-be parsed input
+ *
+ * @param encoding
+ * the encoding to be used for parsing the given
+ * <code>inputStream</code>
+ *
+ * @return the parsed document
+ *
+ * @throws SLCommandException
+ * if parsing the <code>inputStream</code> fails.
+ *
+ * @throws NullPointerException
+ * if <code>inputStram</code> is <code>null</code>
+ */
+ private Document parseDataObject(InputStream inputStream, String encoding) throws SLCommandException {
+
+ LSInput input = domImplLS.createLSInput();
+ input.setByteStream(inputStream);
+
+ if (encoding != null) {
+ input.setEncoding(encoding);
+ }
+
+ LSParser parser = domImplLS.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS, null);
+ DOMConfiguration domConfig = parser.getDomConfig();
+ SimpleDOMErrorHandler errorHandler = new SimpleDOMErrorHandler();
+ domConfig.setParameter("error-handler", errorHandler);
+ domConfig.setParameter("validate", Boolean.FALSE);
+
+ Document doc;
+ try {
+ doc = parser.parse(input);
+ } catch (DOMException e) {
+ log.info("Existing XML document cannot be parsed.", e);
+ throw new SLCommandException(4111);
+ } catch (LSException e) {
+ log.info("Existing XML document cannot be parsed. ", e);
+ throw new SLCommandException(4111);
+ }
+
+ if (errorHandler.hasErrors()) {
+ // log errors
+ if (log.isInfoEnabled()) {
+ List<String> errorMessages = errorHandler.getErrorMessages();
+ StringBuffer sb = new StringBuffer();
+ for (String errorMessage : errorMessages) {
+ sb.append(" ");
+ sb.append(errorMessage);
+ }
+ log.info("Existing XML document cannot be parsed. " + sb.toString());
+ }
+ throw new SLCommandException(4111);
+ }
+
+ return doc;
+
+ }
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/IdValueFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/IdValueFactory.java
new file mode 100644
index 00000000..df42bd11
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/IdValueFactory.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.slcommands.impl.xsect;
+
+/**
+ * A factory for creating <code>xsd:Id</code>-attribute values.
+ *
+ * @author mcentner
+ */
+public interface IdValueFactory {
+
+ /**
+ * Creates a new <code>xsd:Id</code>-attribute value for an Element of the
+ * given <code>elementName</code>.
+ *
+ * @param elementName
+ * the local name of the element to create the value for
+ *
+ * @return a <code>xsd:Id</code>-attribute value
+ */
+ public String createIdValue(String elementName);
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/IdValueFactoryImpl.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/IdValueFactoryImpl.java
new file mode 100644
index 00000000..b9824655
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/IdValueFactoryImpl.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.slcommands.impl.xsect;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Random;
+
+/**
+ * An implementation of the IdValueFactory.
+ * <p>
+ * This IdValueFactory creates <code>xsd:Id</code>-attribute values of the form
+ * '<code>&lt;elementName&gt;-&lt;random&gt;-&lt;sequenceNumber&gt;</code>',
+ * where
+ * <ul>
+ * <li><code>&lt;elementName&gt;</code> is the name provided at
+ * {@link #createIdValue(String)},</li>
+ * <li><code>&lt;random&gt;</code> is a random generated fixed value for an
+ * instance of this IdValueFactory and</li>
+ * <li><code>&lt;sequenceNumber&gt;</code> is the sequence number of the value
+ * generated for a given <code>elementName</code> by an instance of this
+ * IdValueFactory.</li>
+ * </ul>
+ * </p>
+ *
+ * @author mcentner
+ */
+public class IdValueFactoryImpl implements IdValueFactory {
+
+ /**
+ * A generator for <code>xsd:Id</code>-attribute values.
+ *
+ * @author mcentner
+ */
+ private class IdGenerator {
+
+ /**
+ * The salt.
+ */
+ private String salt;
+
+ /**
+ * The element name.
+ */
+ private String elementName;
+
+ /**
+ * The sequence number.
+ */
+ private int i = 0;
+
+ /**
+ * Creates a new instance of this IdGenerator with the given
+ * <code>elementName</code> and <code>salt</code> value.
+ *
+ * @param elementName the element name
+ * @param salt the salt valeu
+ */
+ private IdGenerator(String elementName, String salt) {
+ super();
+ this.elementName = elementName;
+ this.salt = salt;
+ }
+
+ /**
+ * @return returns the next <code>xsd:Id</code>-attribute value.
+ */
+ public String getNextId() {
+ return elementName + "-" + salt + "-" + Integer.toString(++i);
+ }
+
+ }
+
+ /**
+ * A map of element names to <code>xsd:Id</code>-value generators.
+ */
+ private Map<String, IdGenerator> generators = new HashMap<String, IdGenerator>();
+
+ /**
+ * The seed value.
+ */
+ private String seed;
+
+ /**
+ * Creates a new instance of this IdValueFactory.
+ */
+ public IdValueFactoryImpl() {
+
+ Random random = new Random();
+ int rand = random.nextInt();
+ seed = Integer.toHexString(rand);
+
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * at.gv.egiz.bku.slcommands.impl.IdValueFactory#createIdValue(java.lang.String
+ * )
+ */
+ public String createIdValue(String elementName) {
+
+ IdGenerator generator = generators.get(elementName);
+ if (generator == null) {
+ generator = new IdGenerator(elementName, seed);
+ generators.put(elementName, generator);
+ }
+ return generator.getNextId();
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/LocRefDereferencer.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/LocRefDereferencer.java
new file mode 100644
index 00000000..f5394157
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/LocRefDereferencer.java
@@ -0,0 +1,112 @@
+/*
+* 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.slcommands.impl.xsect;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import javax.xml.crypto.Data;
+import javax.xml.crypto.OctetStreamData;
+import javax.xml.crypto.URIDereferencer;
+import javax.xml.crypto.URIReference;
+import javax.xml.crypto.URIReferenceException;
+import javax.xml.crypto.XMLCryptoContext;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.utils.urldereferencer.StreamData;
+import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer;
+import at.gv.egiz.bku.utils.urldereferencer.URLDereferencerContext;
+
+/**
+ * An URIDereferencer implementation that dereferences <code>LocRef</code>
+ * references.
+ *
+ * @author mcentner
+ */
+public class LocRefDereferencer implements URIDereferencer {
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(LocRefDereferencer.class);
+
+ /**
+ * The <code>LocRef</code>-reference to be dereferenced by
+ * {@link #dereference(URIReference, XMLCryptoContext)}.
+ */
+ protected String locRef;
+
+ /**
+ * The context to be used for dereferencing.
+ */
+ protected URLDereferencerContext dereferencerContext;
+
+ /**
+ * Creates a new instance of this LocRefDereferencer with the given
+ * <code>dereferencerContext</code> and <code>locRef</code> reference.
+ *
+ * @param dereferencerContext
+ * the context to be used for dereferencing
+ * @param locRef
+ * the <code>LocRef</code>-reference (must be an absolute URI)
+ *
+ * @throws URISyntaxException
+ * if <code>LocRef</code> is not an absolute URI
+ */
+ public LocRefDereferencer(URLDereferencerContext dereferencerContext,
+ String locRef) throws URISyntaxException {
+
+ this.dereferencerContext = dereferencerContext;
+
+ URI locRefUri = new URI(locRef);
+ if (locRefUri.isAbsolute()) {
+ this.locRef = locRef;
+ } else {
+ throw new IllegalArgumentException(
+ "Parameter 'locRef' must be an absolut URI.");
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * javax.xml.crypto.URIDereferencer#dereference(javax.xml.crypto.URIReference,
+ * javax.xml.crypto.XMLCryptoContext)
+ */
+ @Override
+ public Data dereference(URIReference uriReference, XMLCryptoContext context)
+ throws URIReferenceException {
+
+ URLDereferencer dereferencer = URLDereferencer.getInstance();
+ StreamData streamData;
+ try {
+ streamData = dereferencer.dereference(locRef, dereferencerContext);
+ } catch (IOException e) {
+ log.info("Failed to dereference URI'" + locRef + "'. " + e.getMessage(),
+ e);
+ throw new URIReferenceException("Failed to dereference URI '" + locRef
+ + "'. " + e.getMessage(), e);
+ }
+ return new OctetStreamData(streamData.getStream(), locRef, streamData
+ .getContentType());
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALPrivateKey.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALPrivateKey.java
new file mode 100644
index 00000000..25e2d4e5
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALPrivateKey.java
@@ -0,0 +1,128 @@
+/*
+* 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.slcommands.impl.xsect;
+
+import at.gv.egiz.stal.HashDataInput;
+import java.security.PrivateKey;
+
+import at.gv.egiz.stal.STAL;
+//import at.gv.egiz.stal.HashDataInputCallback;
+import java.util.List;
+
+/**
+ * This class implements a private key used by the {@link STALSignature} class.
+ *
+ * @author mcentner
+ */
+public class STALPrivateKey implements PrivateKey {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * The STAL implementation.
+ */
+ private STAL stal;
+
+ /**
+ * The callback interface for obtaining the hash input data.
+ */
+// private HashDataInputCallback hashDataInputCallback;
+
+
+ private List<DataObject> dataObjects;
+
+ /**
+ * The keybox identifier.
+ */
+ private String keyboxIdentifier;
+
+ /**
+ * The signature algorithm.
+ */
+ private String algorithm;
+
+ /**
+ * Creates a new instance of this <code>STALPrivateKey</code> with the given
+ * <code>stal</code> implementation, signature <code>algorithm</code>,
+ * <code>keyboxIdentifier</code> and <code>hashDataInputCallback</code>
+ * interface.
+ *
+ * @param stal
+ * the STAL implementation
+ * @param algorithm
+ * the signature algorithm
+ * @param keyboxIdentifier
+ * the keybox identifier
+ * @param hashDataInputCallback
+ * the interface for obtaining the has input data
+ */
+ public STALPrivateKey(STAL stal,
+ String algorithm, String keyboxIdentifier, List<DataObject> dataObjects) {
+ super();
+ this.keyboxIdentifier = keyboxIdentifier;
+ this.dataObjects = dataObjects;
+ this.stal = stal;
+ this.algorithm = algorithm;
+ }
+
+ /* (non-Javadoc)
+ * @see java.security.Key#getAlgorithm()
+ */
+ @Override
+ public String getAlgorithm() {
+ return algorithm;
+ }
+
+ /* (non-Javadoc)
+ * @see java.security.Key#getEncoded()
+ */
+ @Override
+ public byte[] getEncoded() {
+ throw new UnsupportedOperationException("STALPrivateKey does not support the getEncoded() method.");
+ }
+
+ /* (non-Javadoc)
+ * @see java.security.Key#getFormat()
+ */
+ @Override
+ public String getFormat() {
+ return null;
+ }
+
+ /**
+ * @return the STAL implementation
+ */
+ public STAL getStal() {
+ return stal;
+ }
+
+ /**
+ * @return the interface for obtaining the hash data input
+ */
+ public List<DataObject> getDataObjects() {
+
+ return dataObjects;
+ }
+
+ /**
+ * @return the keybox identifier
+ */
+ public String getKeyboxIdentifier() {
+ return keyboxIdentifier;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALProvider.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALProvider.java
new file mode 100644
index 00000000..9fb9a3f1
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALProvider.java
@@ -0,0 +1,71 @@
+/*
+* 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.slcommands.impl.xsect;
+
+import iaik.xml.crypto.XmldsigMore;
+
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.Provider;
+import java.security.Signature;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.crypto.dsig.SignatureMethod;
+
+/**
+ * A security provider implementation that provides {@link Signature} implementations
+ * based on STAL.
+ *
+ * @author mcentner
+ */
+public class STALProvider extends Provider {
+
+ private static final long serialVersionUID = 1L;
+
+ private static String IMPL_PACKAGE_NAME = "at.gv.egiz.bku.slcommands.impl.xsect";
+
+ public STALProvider() {
+
+ super("STAL", 1.0, "Security Token Abstraction Layer Provider");
+
+ final Map<String, String> map = new HashMap<String, String>();
+
+ // TODO: register further algorithms
+ map.put("Signature." + SignatureMethod.RSA_SHA1,
+ IMPL_PACKAGE_NAME + ".STALSignature");
+ map.put("Signature." + XmldsigMore.SIGNATURE_ECDSA_SHA1,
+ IMPL_PACKAGE_NAME + ".STALSignature");
+ map.put("Signature." + XmldsigMore.SIGNATURE_RSA_SHA256,
+ IMPL_PACKAGE_NAME + ".STALSignature");
+ map.put("Signature." + XmldsigMore.SIGNATURE_ECDSA_SHA256,
+ IMPL_PACKAGE_NAME + ".STALSignature");
+ map.put("Signature." + XmldsigMore.SIGNATURE_ECDSA_SHA512,
+ IMPL_PACKAGE_NAME + ".STALSignature");
+
+
+ AccessController.doPrivileged(new PrivilegedAction<Void>() {
+ @Override
+ public Void run() {
+ putAll(map);
+ return null;
+ }
+ });
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignature.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignature.java
new file mode 100644
index 00000000..dd7c7d8a
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignature.java
@@ -0,0 +1,184 @@
+/*
+* 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.slcommands.impl.xsect;
+
+import at.gv.egiz.bku.slcommands.impl.DataObjectHashDataInput;
+import at.gv.egiz.bku.slexceptions.SLViewerException;
+
+import java.io.ByteArrayOutputStream;
+import java.security.InvalidKeyException;
+import java.security.InvalidParameterException;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.SignatureException;
+import java.security.SignatureSpi;
+import java.util.Collections;
+import java.util.List;
+
+import at.gv.egiz.stal.ErrorResponse;
+import at.gv.egiz.stal.HashDataInput;
+import at.gv.egiz.stal.STAL;
+import at.gv.egiz.stal.STALRequest;
+import at.gv.egiz.stal.STALResponse;
+import at.gv.egiz.stal.SignRequest;
+import at.gv.egiz.stal.SignResponse;
+//import at.gv.egiz.stal.HashDataInputCallback;
+import java.util.ArrayList;
+
+/**
+ * A signature service provider implementation that uses STAL to sign.
+ *
+ * @author mcentner
+ */
+public class STALSignature extends SignatureSpi {
+
+// private static final Log log = LogFactory.getLog(STALSignature.class);
+
+ /**
+ * The private key.
+ */
+ protected STALPrivateKey privateKey;
+
+ /**
+ * The to-be signed data.
+ */
+ protected ByteArrayOutputStream data = new ByteArrayOutputStream();
+
+ /* (non-Javadoc)
+ * @see java.security.SignatureSpi#engineGetParameter(java.lang.String)
+ */
+ @Override
+ protected Object engineGetParameter(String param)
+ throws InvalidParameterException {
+ throw new InvalidParameterException();
+ }
+
+ /* (non-Javadoc)
+ * @see java.security.SignatureSpi#engineInitSign(java.security.PrivateKey)
+ */
+ @Override
+ protected void engineInitSign(PrivateKey privateKey)
+ throws InvalidKeyException {
+
+ if (!(privateKey instanceof STALPrivateKey)) {
+ throw new InvalidKeyException("STALSignature supports STALKeys only.");
+ }
+
+ this.privateKey = (STALPrivateKey) privateKey;
+
+ }
+
+ /* (non-Javadoc)
+ * @see java.security.SignatureSpi#engineInitVerify(java.security.PublicKey)
+ */
+ @Override
+ protected void engineInitVerify(PublicKey publicKey)
+ throws InvalidKeyException {
+
+ throw new UnsupportedOperationException("STALSignature does not support signature verification.");
+ }
+
+ /* (non-Javadoc)
+ * @see java.security.SignatureSpi#engineSetParameter(java.lang.String, java.lang.Object)
+ */
+ @Override
+ protected void engineSetParameter(String param, Object value)
+ throws InvalidParameterException {
+ }
+
+ /* (non-Javadoc)
+ * @see java.security.SignatureSpi#engineSign()
+ */
+ @Override
+ protected byte[] engineSign() throws SignatureException {
+
+ STAL stal = privateKey.getStal();
+
+ if (stal == null) {
+ throw new SignatureException("STALSignature requires the STALPrivateKey " +
+ "to provide a STAL implementation reference.");
+ }
+
+ String keyboxIdentifier = privateKey.getKeyboxIdentifier();
+
+ if (keyboxIdentifier == null) {
+ throw new SignatureException("STALSignature requires the STALPrivateKey " +
+ "to provide a KeyboxIdentifier.");
+ }
+
+ // get hashDataInputs (DigestInputStreams) once slcommands.impl.xsect.Signature::sign() was called
+ List<DataObject> dataObjects = privateKey.getDataObjects();
+// log.debug("got " + dataObjects.size() + " DataObjects, passing HashDataInputs to STAL SignRequest");
+
+ List<HashDataInput> hashDataInputs = new ArrayList<HashDataInput>();
+ for (DataObject dataObject : dataObjects) {
+ try {
+ dataObject.validateHashDataInput();
+ } catch (SLViewerException e) {
+ throw new STALSignatureException(e);
+ }
+ hashDataInputs.add(new DataObjectHashDataInput(dataObject));
+ }
+
+ SignRequest signRequest = new SignRequest();
+ signRequest.setKeyIdentifier(keyboxIdentifier);
+ signRequest.setSignedInfo(data.toByteArray());
+ signRequest.setHashDataInput(hashDataInputs);
+
+ List<STALResponse> responses = stal.handleRequest(Collections.singletonList((STALRequest) signRequest));
+
+ if (responses == null || responses.size() != 1) {
+ throw new SignatureException("Failed to access STAL.");
+ }
+
+ STALResponse response = responses.get(0);
+ if (response instanceof SignResponse) {
+ return ((SignResponse) response).getSignatureValue();
+ } else if (response instanceof ErrorResponse) {
+ throw new STALSignatureException(((ErrorResponse) response).getErrorCode());
+ } else {
+ throw new SignatureException("Failed to access STAL.");
+ }
+
+ }
+
+ /* (non-Javadoc)
+ * @see java.security.SignatureSpi#engineUpdate(byte)
+ */
+ @Override
+ protected void engineUpdate(byte b) throws SignatureException {
+ data.write(b);
+ }
+
+ /* (non-Javadoc)
+ * @see java.security.SignatureSpi#engineUpdate(byte[], int, int)
+ */
+ @Override
+ protected void engineUpdate(byte[] b, int off, int len)
+ throws SignatureException {
+ data.write(b, off, len);
+ }
+
+ /* (non-Javadoc)
+ * @see java.security.SignatureSpi#engineVerify(byte[])
+ */
+ @Override
+ protected boolean engineVerify(byte[] sigBytes) throws SignatureException {
+ throw new UnsupportedOperationException("STALSignature des not support signature verification.");
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignatureException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignatureException.java
new file mode 100644
index 00000000..4e86b07c
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/STALSignatureException.java
@@ -0,0 +1,92 @@
+/*
+* 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.slcommands.impl.xsect;
+
+import java.security.SignatureException;
+
+/**
+ * A SignatureException thrown by the {@link STALSignature}.
+ *
+ * @author mcentner
+ */
+public class STALSignatureException extends SignatureException {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * The STAL error code.
+ */
+ private int errorCode;
+
+ /**
+ * Creates a new instance of this STALSignatureException.
+ */
+ public STALSignatureException() {
+ }
+
+ /**
+ * Creates a new instance of this STALSigantureException with
+ * the given <code>errorCode</code>.
+ *
+ * @param errorCode the error code
+ */
+ public STALSignatureException(int errorCode) {
+ this.errorCode = errorCode;
+ }
+
+ /**
+ * Creates a new instance of this STALSignatureException with
+ * the given error <code>msg</code>.
+ *
+ * @param msg the error message
+ * @see SignatureException#SignatureException(String)
+ */
+ public STALSignatureException(String msg) {
+ super(msg);
+ }
+
+ /**
+ * Creates a new instance of this STALSignatureException with
+ * the given root <code>cause</code>.
+ *
+ * @param cause the cause
+ * @see SignatureException#SignatureException(Throwable)
+ */
+ public STALSignatureException(Throwable cause) {
+ super(cause);
+ }
+
+ /**
+ * Creates a new instance of this STALSignautureException with
+ * the given error <code>message</code> and root <code>cause</code>.
+ *
+ * @param message the error message
+ * @param cause the cause
+ * @see SignatureException#SignatureException(String, Throwable)
+ */
+ public STALSignatureException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ /**
+ * @return the error code
+ */
+ public int getErrorCode() {
+ return errorCode;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/Signature.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/Signature.java
new file mode 100644
index 00000000..3cebb6a3
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/Signature.java
@@ -0,0 +1,995 @@
+/*
+* 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.slcommands.impl.xsect;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.StringWriter;
+import java.io.UnsupportedEncodingException;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.crypto.MarshalException;
+import javax.xml.crypto.dom.DOMStructure;
+import javax.xml.crypto.dsig.CanonicalizationMethod;
+import javax.xml.crypto.dsig.DigestMethod;
+import javax.xml.crypto.dsig.Reference;
+import javax.xml.crypto.dsig.SignatureMethod;
+import javax.xml.crypto.dsig.SignedInfo;
+import javax.xml.crypto.dsig.XMLObject;
+import javax.xml.crypto.dsig.XMLSignature;
+import javax.xml.crypto.dsig.XMLSignatureException;
+import javax.xml.crypto.dsig.XMLSignatureFactory;
+import javax.xml.crypto.dsig.dom.DOMSignContext;
+import javax.xml.crypto.dsig.keyinfo.KeyInfo;
+import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory;
+import javax.xml.crypto.dsig.keyinfo.X509Data;
+import javax.xml.stream.XMLStreamException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.etsi.uri._01903.v1_1.DataObjectFormatType;
+import org.etsi.uri._01903.v1_1.QualifyingPropertiesType;
+import org.w3c.dom.DOMConfiguration;
+import org.w3c.dom.DOMException;
+import org.w3c.dom.Document;
+import org.w3c.dom.DocumentFragment;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.ls.DOMImplementationLS;
+import org.w3c.dom.ls.LSException;
+import org.w3c.dom.ls.LSInput;
+import org.w3c.dom.ls.LSOutput;
+import org.w3c.dom.ls.LSParser;
+import org.w3c.dom.ls.LSResourceResolver;
+import org.w3c.dom.ls.LSSerializer;
+
+import at.buergerkarte.namespaces.securitylayer._1.Base64XMLLocRefReqRefContentType;
+import at.buergerkarte.namespaces.securitylayer._1.Base64XMLOptRefContentType;
+import at.buergerkarte.namespaces.securitylayer._1.DataObjectAssociationType;
+import at.buergerkarte.namespaces.securitylayer._1.DataObjectInfoType;
+import at.buergerkarte.namespaces.securitylayer._1.SignatureInfoCreationType;
+import at.gv.egiz.bku.binding.HttpUtil;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.bku.slexceptions.SLRequestException;
+import at.gv.egiz.bku.slexceptions.SLViewerException;
+import at.gv.egiz.bku.utils.HexDump;
+import at.gv.egiz.bku.utils.urldereferencer.StreamData;
+import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer;
+import at.gv.egiz.bku.utils.urldereferencer.URLDereferencerContext;
+import at.gv.egiz.dom.DOMUtils;
+import at.gv.egiz.slbinding.impl.XMLContentType;
+import at.gv.egiz.stal.STAL;
+import at.gv.egiz.xades.QualifyingPropertiesException;
+import at.gv.egiz.xades.QualifyingPropertiesFactory;
+
+/**
+ * This class represents an XML-Signature as to be created by the
+ * security layer command <code>CreateXMLSignatureRequest</code>.
+ *
+ * @author mcentner
+ */
+public class Signature {
+ public static final String XMLDSIG_PREFIX = "dsig";
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(Signature.class);
+
+ /**
+ * The DOM implementation used.
+ */
+ private DOMImplementationLS domImplLS;
+
+ /**
+ * The SignatureContext for the XMLSignature.
+ */
+ private SignatureContext ctx;
+
+ /**
+ * The list of {@link DataObject}s for this signature.
+ */
+ private List<DataObject> dataObjects = new ArrayList<DataObject>();
+
+ /**
+ * A mapping from the <code>Id</code>-attribute values of this signature's
+ * <code>ds:Reference</code>s to the corresponding {@link DataObject}s.
+ */
+// private Map<String, DataObject> dataObjectReferencIds = new HashMap<String, DataObject>();
+
+ /**
+ * The SignatureEnvironment for this signature.
+ */
+ private SignatureLocation signatureLocation;
+
+ /**
+ * The XML signature.
+ */
+ private XMLSignature xmlSignature;
+
+ /**
+ * A list of attributes of type <code>xsd:ID</code> to be registered in the {@link DOMSignContext}.
+ */
+ private List<IdAttribute> idAttributes = new ArrayList<IdAttribute>();
+
+ /**
+ * The signer's X509 certificate.
+ */
+ private X509Certificate signerCertificate;
+
+ /**
+ * The signing time.
+ */
+ private Date signingTime;
+
+ /**
+ * Creates a new SLXMLSignature instance.
+ */
+ public Signature(URLDereferencerContext dereferencerContext,
+ IdValueFactory idValueFactory,
+ AlgorithmMethodFactory algorithmMethodFactory) {
+
+ domImplLS = DOMUtils.getDOMImplementationLS();
+
+ ctx = new SignatureContext();
+
+ ctx.setSignatureFactory(XMLSignatureFactory.getInstance());
+
+ ctx.setDereferencerContext(dereferencerContext);
+ ctx.setIdValueFactory(idValueFactory);
+ ctx.setAlgorithmMethodFactory(algorithmMethodFactory);
+
+ }
+
+ /**
+ * @return the Document containing this Signature
+ */
+ public Document getDocument() {
+ return ctx.getDocument();
+ }
+
+ /**
+ * @return the parent Node for this Signature
+ */
+ public Node getParent() {
+ return (signatureLocation != null) ? signatureLocation.getParent() : null;
+ }
+
+ /**
+ * @return the next sibling Node for this Signature
+ */
+ public Node getNextSibling() {
+ return (signatureLocation != null) ? signatureLocation.getNextSibling() : null;
+ }
+
+ /**
+ * @return the XMLSignature
+ */
+ public XMLSignature getXMLSignature() {
+ return xmlSignature;
+ }
+
+ /**
+ * @return the list of {@link Reference}s of this Signature
+ */
+ @SuppressWarnings("unchecked")
+ public List<Reference> getReferences() {
+ return (xmlSignature != null) ? xmlSignature.getSignedInfo().getReferences() : null;
+ }
+
+ /**
+ * @return the list of {@link XMLObject}s of this Signature
+ */
+ @SuppressWarnings("unchecked")
+ public List<XMLObject> getXMLObjects() {
+ return (xmlSignature != null) ? xmlSignature.getObjects() : null;
+ }
+
+ /**
+ * Prepares the signature document with the information given by the
+ * <code>signatureInfo</code> provided.
+ *
+ * @param signatureInfo
+ * the <code>SignatureInfo</code>
+ *
+ * @throws SLCommandException
+ * if processing fails for any reason
+ * @throws IllegalStateException
+ * if the <code>parent</code> node has already been set
+ * @throws NullPointerException
+ * if <code>signatureInfo</code> is <code>null</code>
+ */
+ public void setSignatureInfo(SignatureInfoCreationType signatureInfo) throws SLCommandException {
+
+ if (signatureLocation != null) {
+ throw new IllegalStateException("SignatureEnvironment already set.");
+ }
+
+ Base64XMLOptRefContentType signatureEnvironment = signatureInfo.getSignatureEnvironment();
+
+ if (signatureEnvironment == null) {
+
+ // no SignatureEnvironment, so we use an empty document and the document as parent
+ ensureSignatureLocation();
+
+ } else {
+
+ // parse SignatureEnvrionment and use as document
+ Document document = parseSignatureEnvironment(signatureEnvironment, signatureInfo.getSupplement());
+ ctx.setDocument(document);
+
+ signatureLocation = new SignatureLocation(ctx);
+ signatureLocation.setSignatureInfo(signatureInfo);
+
+ }
+
+ }
+
+ /**
+ * Ensures a SignatureLocation for this Signature.
+ */
+ private void ensureSignatureLocation() {
+
+ if (signatureLocation == null) {
+ Document document = DOMUtils.createDocument();
+ ctx.setDocument(document);
+
+ signatureLocation = new SignatureLocation(ctx);
+ signatureLocation.setParent(document);
+ }
+
+ }
+
+ /**
+ * Adds a DataObject with the information given by the
+ * <code>dataObjectInfo</code> provided to this Signature.
+ *
+ * @param dataObjectInfo
+ * the <code>DataObjectInfo</code> element
+ *
+ * @throws SLCommandException
+ * if adding the DataObject fails
+ * @throws SLRequestException
+ * if the information provided by the given
+ * <code>dataObjectInfo</code> does not conform to the security
+ * layer specification
+ * @throws NullPointerException
+ * if <code>dataObjectInfo</code> is <code>null</code>
+ */
+ public void addDataObject(DataObjectInfoType dataObjectInfo) throws SLCommandException, SLRequestException {
+
+ ensureSignatureLocation();
+
+ DataObject dataObject = new DataObject(ctx);
+ dataObject.setDataObjectInfo(dataObjectInfo);
+
+ dataObjects.add(dataObject);
+
+// dataObjectReferencIds.put(dataObject.getReference().getId(), dataObject);
+
+ }
+
+ /**
+ * Sets the <code>SigningTime</code> qualifying property of this Signature.
+ *
+ * @param signingTime the signing time to set
+ */
+ public void setSigningTime(Date signingTime) {
+ this.signingTime = signingTime;
+ }
+
+ /**
+ * Sets the <code>SignerCertificate</code> qualifying property of this Signature.
+ *
+ * @param certificate the signer's certificate
+ */
+ public void setSignerCeritifcate(X509Certificate certificate) {
+ this.signerCertificate = certificate;
+ }
+
+ /**
+ * Builds the XMLSignature data structure of this Signature as configured by
+ * the various setter methods.
+ *
+ * @throws SLCommandException if building this signature fails
+ */
+ public void buildXMLSignature() throws SLCommandException {
+
+ String signatureId = ctx.getIdValueFactory().createIdValue("Signature");
+
+ List<XMLObject> objects = new ArrayList<XMLObject>();
+ List<Reference> references = new ArrayList<Reference>();
+
+ // add all data objects
+ for (DataObject dataObject : dataObjects) {
+ if (dataObject.getXmlObject() != null) {
+ objects.add(dataObject.getXmlObject());
+ }
+ if (dataObject.getReference() != null) {
+ references.add(dataObject.getReference());
+ }
+ }
+
+ addXAdESObjectAndReference(objects, references, signatureId);
+
+ XMLSignatureFactory signatureFactory = ctx.getSignatureFactory();
+ AlgorithmMethodFactory algorithmMethodFactory = ctx.getAlgorithmMethodFactory();
+
+ CanonicalizationMethod cm;
+ SignatureMethod sm;
+ try {
+ cm = algorithmMethodFactory.createCanonicalizationMethod(ctx);
+ sm = algorithmMethodFactory.createSignatureMethod(ctx);
+ } catch (NoSuchAlgorithmException e) {
+ log.error("Failed to get Canonicalization or Signature algorithm.", e);
+ throw new SLCommandException(4006);
+ } catch (InvalidAlgorithmParameterException e) {
+ log.error("Failed to get Canonicalization or Signature algorithm.", e);
+ throw new SLCommandException(4006);
+ }
+
+ String siId = ctx.getIdValueFactory().createIdValue("SignedInfo");
+
+ SignedInfo si = signatureFactory.newSignedInfo(cm, sm, references, siId);
+
+ KeyInfo ki = null;
+ if (signerCertificate != null) {
+ KeyInfoFactory kif = KeyInfoFactory.getInstance();
+ X509Data x509Data = kif.newX509Data(Collections.singletonList(signerCertificate));
+ ki = kif.newKeyInfo(Collections.singletonList(x509Data));
+ }
+
+ String signatureValueId = ctx.getIdValueFactory().createIdValue("SignatureValue");
+
+ xmlSignature = signatureFactory.newXMLSignature(si, ki, objects, signatureId, signatureValueId);
+
+ }
+
+ /**
+ * Sign this Signature using the given <code>signContext</code>.
+ * <p>
+ * Call's {@link #buildXMLSignature()} if it has not been called yet.
+ * </p>
+ *
+ * @param signContext
+ * the signing context
+ *
+ * @throws MarshalException
+ * if marshalling the XMLSignature fails
+ * @throws XMLSignatureException
+ * if signing the XMLSignature fails
+ * @throws SLCommandException
+ * if building the XMLSignature fails
+ * @throws SLViewerException
+ * @throws NullPointerException
+ * if <code>signContext</code> is <code>null</code>
+ */
+ public void sign(DOMSignContext signContext) throws MarshalException, XMLSignatureException, SLCommandException, SLViewerException {
+
+ if (xmlSignature == null) {
+ buildXMLSignature();
+ }
+
+ for (IdAttribute idAttribute : idAttributes) {
+ signContext.setIdAttributeNS(idAttribute.element, idAttribute.namespaceURI, idAttribute.localName);
+ }
+
+ // DO NOT USE:
+ // signContext.setProperty("iaik.xml.crypto.dsig.sign-over", Boolean.TRUE);
+
+ signContext.setProperty("javax.xml.crypto.dsig.cacheReference", Boolean.TRUE);
+
+ signContext.putNamespacePrefix(XMLSignature.XMLNS,XMLDSIG_PREFIX);
+
+ signContext.setURIDereferencer(new URIDereferncerAdapter(ctx.getDereferencerContext()));
+
+ try {
+ xmlSignature.sign(signContext);
+ } catch (XMLSignatureException e) {
+ Throwable cause = e.getCause();
+ while (cause != null) {
+ if (cause instanceof STALSignatureException) {
+ if (((STALSignatureException) cause).getCause() instanceof SLViewerException) {
+ throw (SLViewerException) ((STALSignatureException) cause).getCause();
+ }
+ int errorCode = ((STALSignatureException) cause).getErrorCode();
+ SLCommandException commandException = new SLCommandException(errorCode);
+ log.info("Failed to sign signature.", commandException);
+ throw commandException;
+ } else {
+ cause = cause.getCause();
+ }
+ }
+ throw e;
+ }
+
+ // debug
+ if (log.isTraceEnabled()) {
+ for (DataObject dataObject : dataObjects) {
+ Reference reference = dataObject.getReference();
+ InputStream digestInputStream = reference.getDigestInputStream();
+ if (digestInputStream != null) {
+ String mimeType = dataObject.getMimeType();
+ StringBuilder sb = new StringBuilder();
+ sb.append("DigestInput for Reference with id='");
+ sb.append(reference.getId());
+ sb.append("' (MIME-Type=");
+ sb.append(dataObject.getMimeType());
+ sb.append("):\n");
+ try {
+ if (mimeType != null && (
+ mimeType.startsWith("text") ||
+ "application/xhtml+xml".equals(mimeType))) {
+ byte[] b = new byte[512];
+ for (int l; (l = digestInputStream.read(b)) != -1;) {
+ sb.append(new String(b, 0, l));
+ }
+ } else {
+ sb.append(HexDump.hexDump(digestInputStream));
+ }
+ } catch (IOException e) {
+ log.error(e);
+ }
+ log.trace(sb.toString());
+ } else {
+ log.trace("Reference caching is not enabled.");
+ }
+ }
+ for (Reference reference : getReferences()) {
+ if (reference.getType() != null) {
+ InputStream digestInputStream = reference.getDigestInputStream();
+ if (digestInputStream != null) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("DigestInput for Reference with id='");
+ sb.append(reference.getId());
+ sb.append("'; Type:");
+ sb.append(reference.getType());
+ sb.append("):\n");
+ try {
+ byte[] b = new byte[512];
+ for (int l; (l = digestInputStream.read(b)) != -1;) {
+ sb.append(new String(b, 0, l));
+ }
+ } catch (IOException e) {
+ log.error(e);
+ }
+ log.trace(sb.toString());
+ } else {
+ log.trace("Reference caching is not enabled.");
+ }
+
+ }
+ }
+ }
+
+ }
+
+ /**
+ * Sign this Signature using the given <code>stal</code> implementation and
+ * <code>keyboxIdentifier</code>.
+ * <p>
+ * This method configures an appropriate {@link DOMSignContext} and calls
+ * {@link #sign(DOMSignContext)}. If {@link #buildXMLSignature()} has not been
+ * called yet, it is called by this method.
+ * </p>
+ *
+ * @param stal
+ * the STAL implementation to use
+ * @param keyboxIdentifier
+ * the KeyboxIdentifier to use
+ *
+ * @throws MarshalException
+ * if marshalling this Signature fails
+ * @throws XMLSignatureException
+ * if signing this Signature fails
+ * @throws SLCommandException
+ * if building this Signature fails
+ * @throws SLViewerException
+ * @throws NullPointerException
+ * if <code>stal</code> or <code>keyboxIdentifier</code> is
+ * <code>null</code>
+ */
+ public void sign(STAL stal, String keyboxIdentifier) throws MarshalException, XMLSignatureException, SLCommandException, SLViewerException {
+
+ if (stal == null) {
+ throw new NullPointerException("Argument 'stal' must not be null.");
+ }
+
+ if (keyboxIdentifier == null) {
+ throw new NullPointerException("Argument 'keyboxIdentifier' must not be null.");
+ }
+
+ if (xmlSignature == null) {
+ buildXMLSignature();
+ }
+
+ SignatureMethod signatureMethod = xmlSignature.getSignedInfo().getSignatureMethod();
+ String algorithm = signatureMethod.getAlgorithm();
+
+ //don't get hashDataInputs (digestInputStreams) now, only once Signature.sign() was called (cf STALSignature.engineSign)
+ PrivateKey privateKey = new STALPrivateKey(stal, algorithm, keyboxIdentifier, dataObjects); // hashDataInputs);
+
+ DOMSignContext signContext;
+ if (getNextSibling() == null) {
+ signContext = new DOMSignContext(privateKey, getParent());
+ } else {
+ signContext = new DOMSignContext(privateKey, getParent(), getNextSibling());
+ }
+
+ sign(signContext);
+ }
+
+// @Override
+// public HashDataInput getHashDataInput(final String referenceId) {
+// final DataObject dataObject = dataObjectReferencIds.get(referenceId);
+// if (dataObject != null) {
+// return new HashDataInput() {
+//
+// InputStream hashDataInput = dataObject.getReference().getDigestInputStream();
+//
+// @Override
+// public String getReferenceId() {
+// return referenceId;
+// }
+//
+// @Override
+// public String getMimeType() {
+// return dataObject.getMimeType();
+// }
+//
+// @Override
+// public InputStream getHashDataInput() {
+// return hashDataInput;
+// }
+// };
+// }
+// return null;
+// }
+
+ /**
+ * Adds the XAdES <code>QualifyingProperties</code> as an
+ * <code>ds:Object</code> and a corresponding <code>ds:Reference</code> to
+ * it's <code>SignedProperties</code> element to this Signature.
+ *
+ * @param objects
+ * the list of <code>ds:Objects</code> to add the created
+ * <code>ds:Object</code> to
+ * @param references
+ * the list of <code>ds:References</code> to add the created
+ * <code>ds:Reference</code> to
+ * @param signatureId TODO
+ * @throws SLCommandException
+ * if creating and adding the XAdES
+ * <code>QualifyingProperties</code> fails
+ * @throws NullPointerException
+ * if <code>objects</code> or <code>references</code> is
+ * <code>null</code>
+ */
+ private void addXAdESObjectAndReference(List<XMLObject> objects, List<Reference> references, String signatureId) throws SLCommandException {
+
+ QualifyingPropertiesFactory factory = QualifyingPropertiesFactory.getInstance();
+
+ String idValue = ctx.getIdValueFactory().createIdValue("SignedProperties");
+
+ Date date = (signingTime != null) ? signingTime : new Date();
+
+ List<X509Certificate> signingCertificates;
+ if (signerCertificate != null) {
+ signingCertificates = Collections.singletonList(signerCertificate);
+ } else {
+ signingCertificates = Collections.emptyList();
+ }
+
+ // TODO: report MOA-SP bug
+ //
+ // The security layer specification mandates the use of version 1.2.2. of the
+ // XAdES QualifyingProperties. However MOA-SP supports only version 1.1.1. Therefore,
+ // the version 1.1.1 is used in order to be compatible with current MOA-SP versions.
+
+ List<DataObjectFormatType> dataObjectFormats = new ArrayList<DataObjectFormatType>();
+ for (DataObject dataObject : dataObjects) {
+ if (dataObject.getMimeType() != null && dataObject.getReference() != null) {
+ Reference reference = dataObject.getReference();
+ if (reference.getId() != null) {
+ String objectReference = "#" + reference.getId();
+ dataObjectFormats.add(factory.createDataObjectFormatType(
+ objectReference, dataObject.getMimeType(), dataObject
+ .getDescription()));
+ }
+ }
+ }
+
+ String target = "#" + signatureId;
+
+ DigestMethod dm;
+ try {
+ dm = ctx.getAlgorithmMethodFactory().createDigestMethod(ctx);
+ } catch (NoSuchAlgorithmException e) {
+ log.error("Failed to get DigestMethod algorithm.", e);
+ throw new SLCommandException(4006);
+ } catch (InvalidAlgorithmParameterException e) {
+ log.error("Failed to get DigestMethod algorithm.", e);
+ throw new SLCommandException(4006);
+ }
+
+ JAXBElement<QualifyingPropertiesType> qualifyingProperties;
+ try {
+ qualifyingProperties = factory.createQualifyingProperties111(target, date, signingCertificates, idValue, dataObjectFormats, dm);
+ } catch (QualifyingPropertiesException e) {
+ log.error("Failed to create QualifyingProperties.", e);
+ throw new SLCommandException(4000);
+ }
+
+ DocumentFragment fragment = ctx.getDocument().createDocumentFragment();
+
+ try {
+ factory.marshallQualifyingProperties(qualifyingProperties, fragment);
+ } catch (JAXBException e) {
+ log.error("Failed to marshal QualifyingProperties.", e);
+ throw new SLCommandException(4000);
+ }
+
+ List<DOMStructure> content = Collections.singletonList(new DOMStructure(fragment.getFirstChild()));
+
+ String objectIdValue = ctx.getIdValueFactory().createIdValue("Object");
+
+ XMLObject object = ctx.getSignatureFactory().newXMLObject(content, objectIdValue, null, null);
+
+ objects.add(object);
+
+ // TODO: Report MOA-SP Bug
+ //
+ // Direct referencing of the SignedPorperties Id-attribute is not supported by MOA-SP
+ // because the QualifyingProperties are parsed without the XAdES schema. Therefore,
+ // the shorthand XPointer could not be resolved.
+ //
+ // The following workaround uses an XPointer to select the SignedProperties in order
+ // to allow the signature to be verified with MOA-SP.
+
+ String referenceURI = "#xmlns(xades=http://uri.etsi.org/01903/v1.1.1%23)%20xpointer(id('"
+ + objectIdValue
+ + "')/child::xades:QualifyingProperties/child::xades:SignedProperties)";
+
+ String referenceIdValue = ctx.getIdValueFactory().createIdValue("Reference");
+ String referenceType = QualifyingPropertiesFactory.SIGNED_PROPERTIES_REFERENCE_TYPE_V1_1_1;
+
+ try {
+ dm = ctx.getAlgorithmMethodFactory().createDigestMethod(ctx);
+ } catch (NoSuchAlgorithmException e) {
+ log.error("Failed to get DigestMethod algorithm.", e);
+ throw new SLCommandException(4006);
+ } catch (InvalidAlgorithmParameterException e) {
+ log.error("Failed to get DigestMethod algorithm.", e);
+ throw new SLCommandException(4006);
+ }
+
+ Reference reference = ctx.getSignatureFactory().newReference(referenceURI, dm, null, referenceType, referenceIdValue);
+
+ references.add(reference);
+
+ Node child = fragment.getFirstChild();
+ if (child instanceof Element) {
+ NodeList nodes = ((Element) child).getElementsByTagNameNS(QualifyingPropertiesFactory.NS_URI_V1_1_1, "SignedProperties");
+ if (nodes.getLength() > 0) {
+ IdAttribute idAttribute = new IdAttribute();
+ idAttribute.element = (Element) nodes.item(0);
+ idAttribute.namespaceURI = null;
+ idAttribute.localName = "Id";
+ idAttributes.add(idAttribute);
+ }
+ }
+
+ }
+
+ /**
+ * Parse the SignatureEnvironment.
+ *
+ * @param signatureEnvironment
+ * the <code>SignatureEnvironment</code> element
+ * @param supplements
+ * an optional list of <code>Supplements</code> (may be
+ * <code>null</code>)
+ *
+ * @return the parsed SignatureEnvironment document
+ *
+ * @throws SLCommandException
+ * if parsing the SignatureEnvironment fails
+ * @throws NullPointerException
+ * if <code>signatureEnvironment</code> is <code>null</code>
+ */
+ private Document parseSignatureEnvironment(
+ Base64XMLOptRefContentType signatureEnvironment,
+ List<DataObjectAssociationType> supplements) throws SLCommandException {
+
+ if (signatureEnvironment == null) {
+ throw new NullPointerException("Argument 'signatureEnvironment' must not be null.");
+ }
+
+ LSInput input;
+ try {
+ if (signatureEnvironment.getReference() != null) {
+ log.debug("SignatureEnvironment contains Reference " + signatureEnvironment.getReference() + ".");
+ input = createLSInput(signatureEnvironment.getReference());
+ } else if (signatureEnvironment.getBase64Content() != null) {
+ log.debug("SignatureEnvironment contains Base64Content.");
+ input = createLSInput(signatureEnvironment.getBase64Content());
+ } else if (signatureEnvironment.getXMLContent() != null) {
+ log.debug("SignatureEnvironment contains XMLContent.");
+ input = createLSInput((XMLContentType) signatureEnvironment.getXMLContent());
+ } else {
+ // the schema does not allow us to reach this point
+ throw new SLCommandException(4000);
+ }
+ } catch (IOException e) {
+ log.info("XML document in which the signature is to be integrated cannot be resolved.", e);
+ throw new SLCommandException(4100);
+ } catch (XMLStreamException e) {
+ log.info("XML document in which the signature is to be integrated cannot be resolved.", e);
+ throw new SLCommandException(4100);
+ }
+
+ LSParser parser = domImplLS.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS, null);
+ DOMConfiguration domConfig = parser.getDomConfig();
+ SimpleDOMErrorHandler errorHandler = new SimpleDOMErrorHandler();
+ domConfig.setParameter("error-handler", errorHandler);
+ LSResourceResolverAdapter resourceResolver = new LSResourceResolverAdapter(supplements);
+ domConfig.setParameter("resource-resolver", resourceResolver);
+ domConfig.setParameter("validate", Boolean.TRUE);
+
+ Document doc;
+ try {
+ doc = parser.parse(input);
+ } catch (DOMException e) {
+ log.info("XML document in which the signature is to be integrated cannot be parsed.", e);
+ throw new SLCommandException(4101);
+ } catch (LSException e) {
+ log.info("XML document in which the signature is to be integrated cannot be parsed.", e);
+ throw new SLCommandException(4101);
+ }
+
+ if (resourceResolver.getError() != null) {
+ log.info("Failed to resolve resource while parsing SignatureEnvironment document.", resourceResolver.getError());
+ // we don't stop here, as we only _try_ to parse validating
+ }
+
+ if (errorHandler.hasFatalErrors()) {
+ // log fatal errors
+ if (log.isInfoEnabled()) {
+ List<String> errorMessages = errorHandler.getErrorMessages();
+ StringBuffer sb = new StringBuffer();
+ for (String errorMessage : errorMessages) {
+ sb.append(" ");
+ sb.append(errorMessage);
+ }
+ log.info("XML document in which the signature is to be integrated cannot be parsed." + sb.toString());
+ }
+ throw new SLCommandException(4101);
+ }
+
+ // log parsed document
+ if (log.isTraceEnabled()) {
+
+ StringWriter writer = new StringWriter();
+
+ writer.write("SignatureEnvironment:\n");
+
+ LSOutput output = domImplLS.createLSOutput();
+ output.setCharacterStream(writer);
+ output.setEncoding("UTF-8");
+ LSSerializer serializer = domImplLS.createLSSerializer();
+ serializer.write(doc, output);
+
+ log.trace(writer.toString());
+ }
+
+ return doc;
+
+ }
+
+ /**
+ * Creates an LSInput from the given <code>reference</code> URI.
+ *
+ * @param reference
+ * the reference URL
+ *
+ * @return an LSInput from the given <code>reference</code> URI
+ *
+ * @throws IOException
+ * if dereferencing the given <code>reference</code> fails
+ */
+ private LSInput createLSInput(String reference) throws IOException {
+
+ URLDereferencer urlDereferencer = URLDereferencer.getInstance();
+ StreamData streamData = urlDereferencer.dereference(reference, ctx.getDereferencerContext());
+
+ String contentType = streamData.getContentType();
+ String charset = HttpUtil.getCharset(contentType, true);
+ InputStreamReader streamReader;
+ try {
+ streamReader = new InputStreamReader(streamData.getStream(), charset);
+ } catch (UnsupportedEncodingException e) {
+ log.info("Charset " + charset + " not supported. Using default.");
+ streamReader = new InputStreamReader(streamData.getStream());
+ }
+
+ LSInput input = domImplLS.createLSInput();
+ input = domImplLS.createLSInput();
+ input.setCharacterStream(streamReader);
+
+ return input;
+
+ }
+
+ /**
+ * Creates an LSInput from the given <code>content</code> bytes.
+ *
+ * @param content
+ * the content bytes
+ *
+ * @return an LSInput from the givne <code>content</code> bytes
+ */
+ private LSInput createLSInput(byte[] content) {
+
+ ByteArrayInputStream inputStream = new ByteArrayInputStream(content);
+ LSInput input = domImplLS.createLSInput();
+ input.setByteStream(inputStream);
+
+ return input;
+
+ }
+
+ /**
+ * Creates an LSInput from the given XML <code>content</code>.
+ *
+ * @param content
+ * the XML content
+ * @return an LSInput from the given XML <code>content</code>
+ *
+ * @throws XMLStreamException
+ * if reading the XMLStream from the given XML content fails
+ */
+ private LSInput createLSInput(XMLContentType content) throws XMLStreamException {
+
+ ByteArrayOutputStream redirectedStream = content.getRedirectedStream();
+ if (redirectedStream != null) {
+ LSInput input = domImplLS.createLSInput();
+ input.setByteStream(new ByteArrayInputStream(redirectedStream.toByteArray()));
+ return input;
+ } else {
+ return null;
+ }
+
+ }
+
+ /**
+ * Represents an <code>xsd:Id</code>-attribute value.
+ *
+ * @author mcentner
+ */
+ private class IdAttribute {
+
+ private Element element;
+
+ private String namespaceURI;
+
+ private String localName;
+
+ }
+
+ /**
+ * An implementation of the LSResourceResolver that uses a list of supplements
+ * to resolve resources.
+ *
+ * @author mcentner
+ */
+ private class LSResourceResolverAdapter implements LSResourceResolver {
+
+ List<DataObjectAssociationType> supplements;
+
+ private LSResourceResolverAdapter(
+ List<DataObjectAssociationType> supplements) {
+ this.supplements = supplements;
+ }
+
+ private Exception error;
+
+ /**
+ * @return the error
+ */
+ public Exception getError() {
+ return error;
+ }
+
+ @Override
+ public LSInput resolveResource(String type, String namespaceURI,
+ String publicId, String systemId, String baseURI) {
+
+ if (log.isTraceEnabled()) {
+ log.trace("Resolve resource :" +
+ "\n type=" + type +
+ "\n namespaceURI=" + namespaceURI +
+ "\n publicId=" + publicId +
+ "\n systemId=" + systemId +
+ "\n baseURI=" + baseURI);
+ }
+
+ if (systemId != null) {
+
+ log.debug("Resolve resource '" + systemId + "'.");
+
+ for (DataObjectAssociationType supplement : supplements) {
+
+ Base64XMLLocRefReqRefContentType content = supplement.getContent();
+ if (content != null) {
+
+ String reference = content.getReference();
+ if (systemId.equals(reference)) {
+
+ try {
+ if (content.getLocRefContent() != null) {
+ log.trace("Resolved resource '" + reference + "' to supplement with LocRefContent.");
+ return createLSInput(content.getLocRefContent());
+ } else if (content.getBase64Content() != null) {
+ log.trace("Resolved resource '" + reference + "' to supplement with Base64Content.");
+ return createLSInput(content.getBase64Content());
+ } else if (content.getXMLContent() != null) {
+ log.trace("Resolved resource '" + reference + "' to supplement with XMLContent.");
+ return createLSInput((XMLContentType) content.getXMLContent());
+ } else {
+ return null;
+ }
+ } catch (IOException e) {
+ log.info("Failed to resolve resource '" + systemId + "' to supplement.", e);
+ error = e;
+ return null;
+ } catch (XMLStreamException e) {
+ log.info("Failed to resolve resource '" + systemId + "' to supplement.", e);
+ error = e;
+ return null;
+ }
+
+ }
+
+ }
+
+ }
+
+ log.info("Failed to resolve resource '" + systemId + "' to supplement. No such supplement.");
+
+ }
+
+ return null;
+
+ }
+
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureContext.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureContext.java
new file mode 100644
index 00000000..0925f2fd
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureContext.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.slcommands.impl.xsect;
+
+import javax.xml.crypto.dsig.DigestMethod;
+import javax.xml.crypto.dsig.XMLSignatureFactory;
+
+import org.w3c.dom.Document;
+
+import at.gv.egiz.bku.utils.urldereferencer.URLDereferencerContext;
+
+/**
+ * An instance of this class carries context information for a XML-Signature
+ * created by the security layer command <code>CreateXMLSignature</code>.
+ *
+ * @author mcentner
+ */
+public class SignatureContext {
+
+ /**
+ * The document going to contain the XML signature.
+ */
+ private Document document;
+
+ /**
+ * The IdValueFactory used to create <code>xsd:ID</code>-attribute values.
+ */
+ private IdValueFactory idValueFactory;
+
+ /**
+ * The XMLSignatureFactory to create XML signature objects.
+ */
+ private XMLSignatureFactory signatureFactory;
+
+ /**
+ * The URLDereferencerContext for dereferencing URLs.
+ */
+ private URLDereferencerContext dereferencerContext;
+
+ /**
+ * The DigestMethodFactory to create {@link DigestMethod} objects.
+ */
+ private AlgorithmMethodFactory digestMethodFactory;
+
+ /**
+ * @return the document
+ */
+ public Document getDocument() {
+ return document;
+ }
+
+ /**
+ * @param document the document to set
+ */
+ public void setDocument(Document document) {
+ this.document = document;
+ }
+
+ /**
+ * @return the idValueFactory
+ */
+ public IdValueFactory getIdValueFactory() {
+ return idValueFactory;
+ }
+
+ /**
+ * @param idValueFactory the idValueFactory to set
+ */
+ public void setIdValueFactory(IdValueFactory idValueFactory) {
+ this.idValueFactory = idValueFactory;
+ }
+
+ /**
+ * @return the signatureFactory
+ */
+ public XMLSignatureFactory getSignatureFactory() {
+ return signatureFactory;
+ }
+
+ /**
+ * @param signatureFactory the signatureFactory to set
+ */
+ public void setSignatureFactory(XMLSignatureFactory signatureFactory) {
+ this.signatureFactory = signatureFactory;
+ }
+
+ /**
+ * @return the dereferencerContext
+ */
+ public URLDereferencerContext getDereferencerContext() {
+ return dereferencerContext;
+ }
+
+ /**
+ * @param dereferencerContext the dereferencerContext to set
+ */
+ public void setDereferencerContext(URLDereferencerContext dereferencerContext) {
+ this.dereferencerContext = dereferencerContext;
+ }
+
+ /**
+ * @return the digestMethodFactory
+ */
+ public AlgorithmMethodFactory getAlgorithmMethodFactory() {
+ return digestMethodFactory;
+ }
+
+ /**
+ * @param digestMethodFactory the digestMethodFactory to set
+ */
+ public void setAlgorithmMethodFactory(AlgorithmMethodFactory digestMethodFactory) {
+ this.digestMethodFactory = digestMethodFactory;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureLocation.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureLocation.java
new file mode 100644
index 00000000..5ec02893
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureLocation.java
@@ -0,0 +1,235 @@
+/*
+* 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.slcommands.impl.xsect;
+
+import java.util.Iterator;
+
+import javax.xml.XMLConstants;
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.xpath.XPath;
+import javax.xml.xpath.XPathConstants;
+import javax.xml.xpath.XPathExpression;
+import javax.xml.xpath.XPathExpressionException;
+import javax.xml.xpath.XPathFactory;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import at.buergerkarte.namespaces.securitylayer._1.SignatureInfoCreationType;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.slbinding.impl.SignatureLocationType;
+
+/**
+ * This class implements the <code>SignatureLocation</code> of an XML-Signature
+ * to be created by the security layer command <code>CreateXMLSignature</code>.
+ *
+ * @author mcentner
+ */
+public class SignatureLocation {
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(SignatureLocation.class);
+
+ /**
+ * The SignatureContext for the XML signature
+ */
+ private SignatureContext ctx;
+
+ /**
+ * The parent node for the XML signature.
+ */
+ private Node parent;
+
+ /**
+ * The next sibling node for the XML signature.
+ */
+ private Node nextSibling;
+
+ /**
+ * Creates a new SignatureLocation with the given <code>signatureContext</code>
+ *
+ * @param signatureContext the context for the XML signature creation
+ */
+ public SignatureLocation(SignatureContext signatureContext) {
+ this.ctx = signatureContext;
+ }
+
+ /**
+ * @return the parent node for the XML signature
+ */
+ public Node getParent() {
+ return parent;
+ }
+
+ /**
+ * @param parent the parent for the XML signature
+ */
+ public void setParent(Node parent) {
+ this.parent = parent;
+ }
+
+ /**
+ * @return the next sibling node for the XML signature
+ */
+ public Node getNextSibling() {
+ return nextSibling;
+ }
+
+ /**
+ * @param nextSibling the next sibling node for the XML signature
+ */
+ public void setNextSibling(Node nextSibling) {
+ this.nextSibling = nextSibling;
+ }
+
+ /**
+ * Configures this SignatureLocation with the information provided by the
+ * given <code>SignatureInfo</code> element.
+ *
+ * @param signatureInfo
+ * the <code>SignatureInfo</code> element
+ *
+ * @throws SLCommandException
+ * if configuring this SignatureLocation with given
+ * <code>signatureInfo</code>fails
+ */
+ public void setSignatureInfo(SignatureInfoCreationType signatureInfo)
+ throws SLCommandException {
+
+ // evaluate signature location XPath ...
+ SignatureLocationType signatureLocation = (SignatureLocationType) signatureInfo
+ .getSignatureLocation();
+
+ NamespaceContext namespaceContext = new MOAIDWorkaroundNamespaceContext(
+ signatureLocation.getNamespaceContext());
+
+ parent = evaluateSignatureLocation(signatureInfo.getSignatureLocation()
+ .getValue(), namespaceContext, ctx.getDocument().getDocumentElement());
+
+ // ... and index
+ nextSibling = findNextSibling(parent, signatureInfo.getSignatureLocation()
+ .getIndex().intValue());
+
+ }
+
+ /**
+ * Evaluates the given <code>xpath</code> with the document element as context node
+ * and returns the resulting node.
+ *
+ * @param xpath the XPath expression
+ * @param nsContext the namespace context of the XPath expression
+ * @param contextNode the context node for the XPath evaluation
+ *
+ * @return the result of evaluating the XPath expression
+ *
+ * @throws SLCommandException
+ */
+ private Node evaluateSignatureLocation(String xpath, NamespaceContext nsContext, Node contextNode) throws SLCommandException {
+
+ Node node = null;
+ try {
+ XPathFactory xpathFactory = XPathFactory.newInstance();
+ XPath xPath = xpathFactory.newXPath();
+ xPath.setNamespaceContext(nsContext);
+ XPathExpression xpathExpr = xPath.compile(xpath);
+ node = (Node) xpathExpr.evaluate(contextNode, XPathConstants.NODE);
+ } catch (XPathExpressionException e) {
+ log.info("Failed to evaluate SignatureLocation XPath expression '" + xpath + "' on context node.", e);
+ throw new SLCommandException(4102);
+ }
+
+ if (node == null) {
+ log.info("Failed to evaluate SignatureLocation XPath expression '" + xpath + "'. Result is empty.");
+ throw new SLCommandException(4102);
+ }
+
+ return node;
+
+ }
+
+ /**
+ * Finds the next sibling node of the <code>parent</code>'s <code>n</code>-th child node
+ * or <code>null</code> if there is no next sibling.
+ *
+ * @param parent the parent node
+ * @param n the index of the child node
+ *
+ * @return the next sibling node of the node specified by <code>parent</code> and index <code>n</code>,
+ * or <code>null</code> if there is no next sibling node.
+ *
+ * @throws SLCommandException if the <code>n</code>-th child of <code>parent</code> does not exist
+ */
+ private Node findNextSibling(Node parent, int n) throws SLCommandException {
+
+ NodeList childNodes = parent.getChildNodes();
+ Node childNode = childNodes.item(n);
+ if (childNode == null) {
+ log.info("SingatureLocation Index '" + n + "' not found in document.");
+ throw new SLCommandException(4102);
+ } else {
+ return childNode.getNextSibling();
+ }
+
+ }
+
+ /**
+ * Workaround for a missing namespace prefix declaration in MOA-ID.
+ *
+ * @author mcentner
+ */
+ private class MOAIDWorkaroundNamespaceContext implements NamespaceContext {
+
+ private NamespaceContext namespaceContext;
+
+ public MOAIDWorkaroundNamespaceContext(NamespaceContext namespaceContext) {
+ super();
+ this.namespaceContext = namespaceContext;
+ }
+
+ @Override
+ public String getNamespaceURI(String prefix) {
+
+ String namespaceURI = namespaceContext.getNamespaceURI(prefix);
+
+ if ((namespaceURI == null || XMLConstants.NULL_NS_URI.equals(namespaceURI)) && "saml".equals(prefix)) {
+ namespaceURI = "urn:oasis:names:tc:SAML:1.0:assertion";
+ log.debug("Namespace prefix '" + prefix + "' resolved to '" + namespaceURI + "' (MOA-ID Workaround).");
+ } else {
+ log.trace("Namespace prefix '" + prefix + "' resolved to '" + namespaceURI + "'.");
+ }
+
+ return namespaceURI;
+ }
+
+ @Override
+ public String getPrefix(String namespaceURI) {
+ return namespaceContext.getPrefix(namespaceURI);
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public Iterator getPrefixes(String namespaceURI) {
+ return namespaceContext.getPrefixes(namespaceURI);
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SimpleDOMErrorHandler.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SimpleDOMErrorHandler.java
new file mode 100644
index 00000000..0d54adce
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/SimpleDOMErrorHandler.java
@@ -0,0 +1,98 @@
+/*
+* 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.slcommands.impl.xsect;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.w3c.dom.DOMError;
+import org.w3c.dom.DOMErrorHandler;
+
+/**
+ * A simple DOMErrorHandler implementation.
+ *
+ * @author mcentner
+ */
+public class SimpleDOMErrorHandler implements DOMErrorHandler {
+
+ /**
+ * Have there been errors reported?
+ */
+ private boolean errors = false;
+
+ /**
+ * Have there been fatal error reported?
+ */
+ private boolean fatalErrors = false;
+
+ /**
+ * The list of error messages of reported errors.
+ */
+ private List<String> errorMessages = new ArrayList<String>();
+
+ /**
+ * @return <code>true</code> if errors have been reported, or <code>false</code> otherwise
+ */
+ public boolean hasErrors() {
+ return errors;
+ }
+
+ /**
+ * @return <code>true</code> if fatal errors have been reported, or <code>false</code> otherwise
+ */
+ public boolean hasFatalErrors() {
+ return fatalErrors;
+ }
+
+ /**
+ * @return a list of error messages that have been reported
+ */
+ public List<String> getErrorMessages() {
+ return errorMessages;
+ }
+
+ /* (non-Javadoc)
+ * @see org.w3c.dom.DOMErrorHandler#handleError(org.w3c.dom.DOMError)
+ */
+ @Override
+ public boolean handleError(DOMError error) {
+
+ switch (error.getSeverity()) {
+
+ case DOMError.SEVERITY_WARNING :
+// log.debug("[warning] " + error.getMessage());
+ return true;
+
+ case DOMError.SEVERITY_ERROR :
+// log.debug("[error] " + error.getMessage());
+ errorMessages.add(error.getMessage());
+ errors = true;
+ return false;
+
+ case DOMError.SEVERITY_FATAL_ERROR :
+// log.debug("[fatal error] " + error.getMessage());
+ errorMessages.add(error.getMessage());
+ fatalErrors = true;
+ return false;
+
+ default:
+ return false;
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/URIDereferncerAdapter.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/URIDereferncerAdapter.java
new file mode 100644
index 00000000..c94937be
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/URIDereferncerAdapter.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.slcommands.impl.xsect;
+
+import iaik.xml.crypto.utils.URIDereferencerImpl;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import javax.xml.crypto.Data;
+import javax.xml.crypto.OctetStreamData;
+import javax.xml.crypto.URIDereferencer;
+import javax.xml.crypto.URIReference;
+import javax.xml.crypto.URIReferenceException;
+import javax.xml.crypto.XMLCryptoContext;
+
+import at.gv.egiz.bku.utils.urldereferencer.StreamData;
+import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer;
+import at.gv.egiz.bku.utils.urldereferencer.URLDereferencerContext;
+
+/**
+ * An URIDereferencer implementation that uses an {@link URLDereferencer} to
+ * dereference.
+ *
+ * @author mcentner
+ */
+public class URIDereferncerAdapter implements URIDereferencer {
+
+ /**
+ * The context for dereferencing.
+ */
+ protected URLDereferencerContext urlDereferencerContext;
+
+ /**
+ * Creates a new URIDereferencerAdapter instance with the given
+ * <code>urlDereferencerContext</code>.
+ *
+ * @param urlDereferencerContext the context to be used for dereferencing
+ */
+ public URIDereferncerAdapter(URLDereferencerContext urlDereferencerContext) {
+ super();
+ this.urlDereferencerContext = urlDereferencerContext;
+ }
+
+ /* (non-Javadoc)
+ * @see javax.xml.crypto.URIDereferencer#dereference(javax.xml.crypto.URIReference, javax.xml.crypto.XMLCryptoContext)
+ */
+ @Override
+ public Data dereference(URIReference uriReference, XMLCryptoContext context)
+ throws URIReferenceException {
+
+ String uriString = uriReference.getURI();
+ if (uriString == null) {
+ return null;
+ }
+
+ URI uri;
+ try {
+ uri = new URI(uriString);
+ } catch (URISyntaxException e) {
+ throw new URIReferenceException(e.getMessage(), e);
+ }
+
+ if (uri.isAbsolute()) {
+
+ URLDereferencer dereferencer = URLDereferencer.getInstance();
+ StreamData streamData;
+ try {
+ streamData = dereferencer.dereference(uriString, urlDereferencerContext);
+ } catch (IOException e) {
+ throw new URIReferenceException(e.getMessage(), e);
+ }
+ return new OctetStreamData(streamData.getStream(), uriString, streamData.getContentType());
+
+ } else {
+
+ URIDereferencer uriDereferencer = context.getURIDereferencer();
+ if (uriDereferencer == null || uriDereferencer == this) {
+ uriDereferencer = new URIDereferencerImpl();
+ }
+
+ return uriDereferencer.dereference(uriReference, context);
+
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTReference.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTReference.java
new file mode 100644
index 00000000..6b388f2a
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTReference.java
@@ -0,0 +1,112 @@
+/*
+* 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.slcommands.impl.xsect;
+
+import iaik.xml.crypto.dsig.DigestMethodImpl;
+import iaik.xml.crypto.dsig.DigestValueImpl;
+import iaik.xml.crypto.dsig.ReferenceImpl;
+import iaik.xml.crypto.dsig.TransformImpl;
+import iaik.xml.crypto.dsig.TransformsImpl;
+
+import javax.xml.crypto.Data;
+import javax.xml.crypto.URIDereferencer;
+import javax.xml.crypto.URIReferenceException;
+import javax.xml.crypto.XMLCryptoContext;
+import javax.xml.crypto.dsig.DigestMethod;
+import javax.xml.crypto.dsig.TransformException;
+
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.bku.slexceptions.SLExceptionMessages;
+
+/**
+ * This class extends the XSECT ReferenceImpl to allow for the use
+ * of already marshalled <code>ds:Transforms</code> elements for initialization.
+ *
+ * @author mcentner
+ */
+public class XSECTReference extends ReferenceImpl {
+
+ /**
+ * The URIDereferencer to be used for dereferencing.
+ */
+ protected URIDereferencer dereferencer;
+
+ /**
+ * Creates a new instance of this XSECTReference with the given
+ * <code>uri</code>, digest method, <code>transforms</code>, <code>type</code>
+ * and <code>id</code> value.
+ *
+ * @param uri
+ * the <code>URI</code>-attribute value (may be <code>null</code>)
+ * @param dm
+ * the digest method
+ * @param transforms
+ * a TransformsImpl element (may be <code>null</code>)
+ * @param type
+ * the <code>Type</code>-attribute value (may be <code>null</code>)
+ * @param id
+ * the <code>Id</code>-attribute value (may be <code>null</code>)
+ *
+ * @throws NullPointerException
+ * if <code>digestMethod</code> is <code>null</code>
+ * @throws IllegalArgumentException
+ * if <code>uri</code> is not RFC 2396 compliant
+ * @throws ClassCastException
+ * if any of the <code>transforms</code> is not of type
+ * {@link TransformImpl}
+ */
+ public XSECTReference(String uri, DigestMethod dm, TransformsImpl transforms, String type,
+ String id) {
+ super(uri, transforms, type, id);
+ digestMethod_ = (DigestMethodImpl) dm;
+ digestValue_ = new DigestValueImpl();
+ }
+
+ /* (non-Javadoc)
+ * @see iaik.xml.crypto.dsig.ReferenceType#dereference(javax.xml.crypto.XMLCryptoContext)
+ */
+ @Override
+ public Data dereference(XMLCryptoContext context) throws TransformException,
+ URIReferenceException {
+ if (dereferencer != null) {
+ return dereferencer.dereference(this, context);
+ } else {
+ try {
+ return super.dereference(context);
+ } catch (URIReferenceException e) {
+ SLCommandException commandException = new SLCommandException(4003,
+ SLExceptionMessages.EC4003_NOT_RESOLVED, new Object[] { getURI() });
+ throw new URIReferenceException("Failed to dereference data to-be signed.", commandException);
+ }
+ }
+ }
+
+ /**
+ * @return the dereferencer to be used for dereferencing this reference
+ */
+ public URIDereferencer getDereferencer() {
+ return dereferencer;
+ }
+
+ /**
+ * @param dereferencer the dereferencer to be used for dereferencing this reference
+ */
+ public void setDereferencer(URIDereferencer dereferencer) {
+ this.dereferencer = dereferencer;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTTransforms.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTTransforms.java
new file mode 100644
index 00000000..a98e4236
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/xsect/XSECTTransforms.java
@@ -0,0 +1,124 @@
+/*
+* 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.slcommands.impl.xsect;
+
+import iaik.xml.crypto.dsig.TransformImpl;
+import iaik.xml.crypto.dsig.TransformsImpl;
+
+import java.util.List;
+
+import javax.xml.crypto.MarshalException;
+import javax.xml.crypto.dom.DOMCryptoContext;
+import javax.xml.crypto.dsig.Transform;
+
+import org.w3c.dom.Node;
+
+/**
+ * This class extends the XSECT TransformsImpl to allow for the use of an
+ * unmarshalled <code>ds:Transforms</code> element for initalization.
+ *
+ * @author mcentner
+ */
+public class XSECTTransforms extends TransformsImpl {
+
+ /**
+ * Creates a new XSECTTransforms with the given list of <code>transforms</code>.
+ *
+ * @param transforms a list of {@link TransformImpl}s
+ * @see TransformsImpl#TransformsImpl(List)
+ */
+ @SuppressWarnings("unchecked")
+ public XSECTTransforms(List transforms) {
+ super(transforms);
+ }
+
+ /**
+ * Creates a new XSECTTransforms and initializes it from the given
+ * <code>ds:Transforms</code> node.
+ *
+ * @param context the context used for unmarshalling
+ * @param node the <code>ds:Transforms</code> node
+ *
+ * @throws MarshalException if unmarshalling the <code>ds:Transforms</code> fails
+ */
+ public XSECTTransforms(DOMCryptoContext context, Node node)
+ throws MarshalException {
+ super(context, node);
+ }
+
+ /**
+ * Inserts the given <code>transform</code> at the top of the
+ * transform list.
+ *
+ * @param transform the <code>ds:Transform</code> to instert
+ */
+ @SuppressWarnings("unchecked")
+ public void insertTransform(Transform transform) {
+ if (transform == null) {
+ throw new NullPointerException("Parameter 'transform' must not be null.");
+ }
+ if (!(transform instanceof TransformImpl)) {
+ throw new ClassCastException("Transform 'transform' must be of type '" + TransformImpl.class.getName() + "'.");
+ }
+ transforms_.add(0, transform);
+ }
+
+ /**
+ * @return
+ */
+ @SuppressWarnings("unchecked")
+ private List<TransformImpl> getTransformImpls() {
+ return transforms_;
+ }
+
+ /* (non-Javadoc)
+ * @see iaik.xml.crypto.dsig.TransformsType#marshal(javax.xml.crypto.dom.DOMCryptoContext, org.w3c.dom.Node, org.w3c.dom.Node)
+ */
+ @Override
+ public Node marshal(DOMCryptoContext context, Node parent, Node nextSibling)
+ throws MarshalException {
+
+ if (getNode() != null) {
+ // If this TransformsImpl has been unmarshalled from exiting nodes,
+ // we don't want to re-marshal ...
+ state_ = STATE_MARSHALED;
+
+ // ... but append the existing node to the parent ...
+ Node transformsNode = parent.insertBefore(getNode(), nextSibling);
+
+ // ... and marshal any Transforms not yet marshalled (e.g. that
+ // have been added via insertTransform().
+ Node transformNextSibling = transformsNode.getFirstChild();
+ List<TransformImpl> transforms = getTransformImpls();
+ for (int i = 0; i < transforms.size(); i++) {
+ TransformImpl transform = transforms.get(i);
+ Node transformNode = transform.getNode();
+ if (transformNode == null) {
+ // marshall TransformImpl
+ transformNode = transform.marshal(context, transformsNode, transformNextSibling);
+ }
+ transformNextSibling = transformNode.getNextSibling();
+ }
+
+ return transformsNode;
+ } else {
+ return super.marshal(context, parent, nextSibling);
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLBindingException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLBindingException.java
new file mode 100644
index 00000000..3f1732ba
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLBindingException.java
@@ -0,0 +1,31 @@
+/*
+* 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.slexceptions;
+
+/**
+ * Error in the binding to the transport protocol (2xxx)
+ */
+public class SLBindingException extends SLException {
+
+ public SLBindingException(int errorCode) {
+ super(errorCode);
+ }
+
+ public SLBindingException(int errorCode, String msg, Object[] args) {
+ super(errorCode, msg, args);
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLCanceledException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLCanceledException.java
new file mode 100644
index 00000000..8136a093
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLCanceledException.java
@@ -0,0 +1,26 @@
+/*
+* 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.slexceptions;
+
+public class SLCanceledException extends
+ at.gv.egiz.bku.slexceptions.SLException {
+
+ public SLCanceledException(int errorCode, String msg, Object[] args) {
+ super(errorCode, msg, args);
+ // TODO Auto-generated constructor stub
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLCommandException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLCommandException.java
new file mode 100644
index 00000000..73ae3325
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLCommandException.java
@@ -0,0 +1,30 @@
+/*
+* 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.slexceptions;
+
+public class SLCommandException extends at.gv.egiz.bku.slexceptions.SLException {
+
+ private static final long serialVersionUID = 1L;
+
+ public SLCommandException(int errorCode) {
+ super(errorCode);
+ }
+
+ public SLCommandException(int errorCode, String msg, Object[] args) {
+ super(errorCode, msg, args);
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLException.java
new file mode 100644
index 00000000..4b541deb
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLException.java
@@ -0,0 +1,88 @@
+/*
+* 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.slexceptions;
+
+import java.text.MessageFormat;
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+public class SLException extends Exception {
+
+ private static String RESOURCE_BUNDLE_BASE_NAME = "at.gv.egiz.bku.slexceptions.SLExceptionMessages";
+
+ private static String MISSING_RESOURCE_PATTERN = "MISSING RESOURCE FOR ERROR MESSAGE: {0} ({1})";
+
+ private static String ILLEGAL_ARGUMENT_MESSAGE = "MESSAGE FORMAT FAILED";
+
+ private static final long serialVersionUID = 1L;
+
+ private int errorCode;
+
+ private String message;
+
+ private Object[] arguments;
+
+ public SLException(int errorCode) {
+ this.errorCode = errorCode;
+ this.message = SLExceptionMessages.STANDARD_PREFIX + Integer.toString(errorCode);
+ }
+
+ public SLException(int errorCode, String message, Object[] arguments) {
+ this.errorCode = errorCode;
+ this.message = message;
+ this.arguments = arguments;
+ }
+
+ public int getErrorCode() {
+ return errorCode;
+ }
+
+ public String getDetailedMsg() {
+ return getLocalizedMessage();
+ }
+
+ @Override
+ public String getLocalizedMessage() {
+ return getLocalizedMessage(Locale.getDefault());
+ }
+
+ public String getLocalizedMessage(Locale locale) {
+
+ String pattern;
+ Object[] arguments = this.arguments;
+ try {
+ ResourceBundle bundle = ResourceBundle.getBundle(RESOURCE_BUNDLE_BASE_NAME, locale);
+ pattern = bundle.getString(message);
+ } catch (MissingResourceException e) {
+ pattern = MISSING_RESOURCE_PATTERN;
+ arguments = new Object[]{message, e.getMessage()};
+ }
+
+ String localizedMessage;
+ try {
+ localizedMessage = MessageFormat.format(pattern, arguments);
+ } catch (IllegalArgumentException e) {
+ localizedMessage = ILLEGAL_ARGUMENT_MESSAGE + ": " + pattern;
+ }
+
+ return localizedMessage;
+
+ }
+
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLExceptionMessages.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLExceptionMessages.java
new file mode 100644
index 00000000..73ac8d1b
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLExceptionMessages.java
@@ -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.
+*/
+package at.gv.egiz.bku.slexceptions;
+
+public final class SLExceptionMessages {
+
+ private SLExceptionMessages() {
+ }
+
+ public static final String STANDARD_PREFIX = "ec";
+
+ //
+ // 3xxx
+ //
+ // Error in the XML structure of the command request
+
+ public static final String EC3000_UNCLASSIFIED = "ec3000.unclassified";
+
+ public static final String EC3002_INVALID = "ec3002.invalid";
+
+ //
+ // 4xxx
+ //
+ // Error during command execution
+
+ public static final String EC4000_UNCLASSIFIED_INFOBOX_INVALID = "ec4000.infobox.invalid";
+
+ public static final String EC4000_UNCLASSIFIED_IDLINK_TRANSFORMATION_FAILED = "ec4000.idlink.transfomation.failed";
+
+ public static final String EC4002_INFOBOX_UNKNOWN = "ec4002.infobox.unknown";
+
+ public static final String EC4003_NOT_RESOLVED = "ec4003.not.resolved";
+
+ public static final String EC4011_NOTIMPLEMENTED = "ec4011.notimplemented";
+
+ //
+ // Legacy error codes
+ //
+
+ public static final String LEC2901_NOTIMPLEMENTED = "lec2901.notimplemented";
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLRequestException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLRequestException.java
new file mode 100644
index 00000000..548732e6
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLRequestException.java
@@ -0,0 +1,30 @@
+/*
+* 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.slexceptions;
+
+public class SLRequestException extends SLException {
+
+ public SLRequestException(int errorCode) {
+ super(errorCode);
+ // TODO Auto-generated constructor stub
+ }
+
+ public SLRequestException(int errorCode, String msg, Object[] args) {
+ super(errorCode, msg, args);
+ // TODO Auto-generated constructor stub
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLRuntimeException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLRuntimeException.java
new file mode 100644
index 00000000..d09ca418
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLRuntimeException.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.slexceptions;
+
+public class SLRuntimeException extends RuntimeException {
+
+ public SLRuntimeException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public SLRuntimeException(String message) {
+ super(message);
+ }
+
+ public SLRuntimeException(Throwable cause) {
+ super(cause);
+ }
+
+ public SLRuntimeException() {
+ }
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLVersionException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLVersionException.java
new file mode 100644
index 00000000..45501746
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLVersionException.java
@@ -0,0 +1,28 @@
+package at.gv.egiz.bku.slexceptions;
+
+public class SLVersionException extends SLException {
+
+ private static final long serialVersionUID = 1L;
+
+ protected String namespaceURI;
+
+ public SLVersionException(String namespaceURI) {
+ super(2901, SLExceptionMessages.LEC2901_NOTIMPLEMENTED, new Object[] {namespaceURI});
+ this.namespaceURI = namespaceURI;
+ }
+
+ public SLVersionException(int errorCode, String namespaceURI) {
+ super(errorCode);
+ this.namespaceURI = namespaceURI;
+ }
+
+ public SLVersionException(int errorCode, String namespaceURI, String message, Object[] arguments) {
+ super(errorCode, message, arguments);
+ this.namespaceURI = namespaceURI;
+ }
+
+ public String getNamespaceURI() {
+ return namespaceURI;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLViewerException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLViewerException.java
new file mode 100644
index 00000000..853328d5
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slexceptions/SLViewerException.java
@@ -0,0 +1,28 @@
+/*
+* 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.slexceptions;
+
+public class SLViewerException extends SLException {
+
+ public SLViewerException(int errorCode) {
+ super(errorCode);
+ }
+
+ public SLViewerException(int errorCode, String msg, Object[] args) {
+ super(errorCode, msg, args);
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ResourceFontLoader.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ResourceFontLoader.java
new file mode 100644
index 00000000..8cab581d
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ResourceFontLoader.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.viewer;
+
+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;
+
+/**
+ * Loads font(s) as classpath resource.
+ * Loaded fonts are shared within all instances in this VM (classloader)
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class ResourceFontLoader implements FontProvider {
+
+ public static final String FONT_RESOURCE = "DejaVuLGCSansMono.ttf";
+
+ protected final static Log log = LogFactory.getLog(ResourceFontLoader.class);
+
+ /** TextValidator and (local) SecureViewerDialog (see LocalStalFactory) use ResourceFontLoader, load resource only once */
+ protected static Font font;
+
+ /**
+ *
+ * @return
+ * @throws FontProviderException encapsulating FontFormatException (if resource doesn't contain the plain format)
+ * or IOException (if resource cannot be retrieved)
+ */
+ @Override
+ public Font getFont() throws FontProviderException {
+ if (font == null) {
+ try {
+ if (log.isDebugEnabled()) {
+ log.debug("loading " + getClass().getClassLoader().getResource(FONT_RESOURCE));
+ }
+ font = Font.createFont(Font.PLAIN, getClass().getClassLoader().getResourceAsStream(FONT_RESOURCE));
+ } catch (Exception ex) {
+ log.error("failed to load font", ex);
+ throw new FontProviderException("failed to load font", ex);
+ }
+ }
+ log.trace("font resource loaded");
+ return font;
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidationException.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidationException.java
new file mode 100644
index 00000000..fb332a09
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidationException.java
@@ -0,0 +1,38 @@
+/*
+* 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.viewer;
+
+public class ValidationException extends Exception {
+
+ private static final long serialVersionUID = 1L;
+
+ public ValidationException() {
+ }
+
+ public ValidationException(String message) {
+ super(message);
+ }
+
+ public ValidationException(Throwable cause) {
+ super(cause);
+ }
+
+ public ValidationException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/Validator.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/Validator.java
new file mode 100644
index 00000000..08b21080
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/Validator.java
@@ -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.
+*/
+package at.gv.egiz.bku.viewer;
+
+import java.io.InputStream;
+
+public interface Validator {
+
+ public void validate(InputStream is, String charset) throws ValidationException;
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidatorFactory.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidatorFactory.java
new file mode 100644
index 00000000..ad9bf6bb
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/viewer/ValidatorFactory.java
@@ -0,0 +1,178 @@
+/*
+* 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.viewer;
+
+import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.net.URL;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class ValidatorFactory {
+
+ /**
+ * Logging facility.
+ */
+ protected static Log log = LogFactory.getLog(ValidatorFactory.class);
+
+ private static final Class<Validator> VALIDATOR_CLASS = Validator.class;
+
+ private static final String SERVICE_ID = "META-INF/services/" + VALIDATOR_CLASS.getName();
+
+ /**
+ * Creates a new Validator for the given <code>mimeType</code>.
+ *
+ * @param mimeType
+ *
+ * @return
+ *
+ * @throws IllegalArgumentException
+ * if no Validator for the <code>mimeType</code> could be found
+ */
+ public static Validator newValidator(String mimeType) throws IllegalArgumentException {
+
+ ClassLoader classLoader = ValidatorFactory.class.getClassLoader();
+ ValidatorFactory factory = new ValidatorFactory(classLoader);
+
+ Validator validator = factory.createValidator(mimeType);
+
+ if (validator == null) {
+ throw new IllegalArgumentException("Validator for '" + mimeType
+ + "' could not be found.");
+ }
+
+ return validator;
+
+ }
+
+ private ClassLoader classLoader;
+
+ /**
+ * Private constructor.
+ *
+ * @param classLoader must not be <code>null</code>
+ */
+ private ValidatorFactory(ClassLoader classLoader) {
+
+ if (classLoader == null) {
+ throw new NullPointerException("Argument 'classLoader' must no be null.");
+ }
+
+ this.classLoader = classLoader;
+
+ }
+
+ private Validator createValidator(String mimeType) {
+
+ Iterator<URL> serviceIterator = createServiceIterator();
+ while (serviceIterator.hasNext()) {
+ URL url = serviceIterator.next();
+
+ Properties properties = new Properties();
+ try {
+ properties.load(url.openStream());
+ } catch (IOException e) {
+ log.error("Failed to load service properties " + url.toExternalForm());
+ continue;
+ }
+ String className = properties.getProperty(mimeType);
+ if (className != null) {
+ try {
+ return createValidatorInstance(className);
+ } catch (Exception e) {
+ continue;
+ }
+ }
+
+ }
+
+ return null;
+
+ }
+
+ /**
+ *
+ * @throws InvocationTargetException if className's (nullary) constructor throws exception
+ */
+ private Validator createValidatorInstance(String className)
+ throws ClassNotFoundException, InstantiationException,
+ IllegalAccessException, NoSuchMethodException, InvocationTargetException {
+
+ try {
+ Constructor<?> implConstructor = classLoader.loadClass(className).getConstructor((Class[])null);
+ return (Validator) implConstructor.newInstance((Object[])null);
+ } catch (InvocationTargetException ex) {
+ //ex from constructor
+ log.error("Failed to initialize validator class '" + className + "': " + ex.getCause().getMessage(), ex.getCause());
+ throw ex;
+ } catch (NoSuchMethodException ex) {
+ log.error("Validator class '" + className + "' has no nullary constructor", ex);
+ throw ex;
+ } catch (ClassNotFoundException e) {
+ log.error("Validator class '" + className + "' not found.", e);
+ throw e;
+ } catch (InstantiationException e) {
+ log.error("Faild to initialize validator class '" + className + "'.", e);
+ throw e;
+ } catch (IllegalAccessException e) {
+ log.error("Faild to initialize validator class '" + className + "'.", e);
+ throw e;
+ } catch (ClassCastException e) {
+ log.error("Class '" + className + "' is not a validator implementation.", e);
+ throw e;
+ }
+
+ }
+
+ private Iterator<URL> createServiceIterator() {
+
+ try {
+ final Enumeration<URL> resources = classLoader.getResources(SERVICE_ID);
+ return new Iterator<URL> () {
+
+ @Override
+ public boolean hasNext() {
+ return resources.hasMoreElements();
+ }
+
+ @Override
+ public URL next() {
+ return resources.nextElement();
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException();
+ }
+
+ };
+ } catch (IOException e) {
+ log.error("Failed to enumerate resources " + SERVICE_ID);
+ List<URL> list = Collections.emptyList();
+ return list.iterator();
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/accesscontrol/config/AccessControl.xsd b/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/accesscontrol/config/AccessControl.xsd
new file mode 100644
index 00000000..9031ea78
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/accesscontrol/config/AccessControl.xsd
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+/*
+* 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.
+*/
+-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+ <xs:element name="AccessControl">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="Chains"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="Chains">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="Chain"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="Chain">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" ref="Rules"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="Rules">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" ref="Rule"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="Rule">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="AuthClass"/>
+ <xs:choice minOccurs="0">
+ <xs:element name="DomainName" type="xs:string"/>
+ <xs:element name="IPv4Address" type="xs:string"/>
+ <xs:element name="URL" type="xs:string"/>
+ </xs:choice>
+ <xs:element ref="Command" minOccurs="0"/>
+ <xs:element ref="Action" />
+ <xs:element ref="UserInteraction"/>
+ </xs:sequence>
+ <xs:attribute name="Id" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="AuthClass">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="anonymous"/>
+ <xs:enumeration value="pseudoanonymous"/>
+ <xs:enumeration value="certified"/>
+ <xs:enumeration value="certifiedGovAgency"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+
+ <xs:element name="Command">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" ref="Param"/>
+ </xs:sequence>
+ <xs:attribute name="Name" use="required"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="Param">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="Name" use="required" type="xs:NCName"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="Action">
+ <xs:complexType>
+ <xs:choice>
+ <!--xs:element name="ChainRef" type="xs:IDREF"/-->
+ <xs:element name="ChainRef" type="xs:string"/>
+ <xs:element name="RuleAction">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="allow"/>
+ <xs:enumeration value="deny"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ </xs:choice>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="UserInteraction">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="none"/>
+ <xs:enumeration value="info"/>
+ <xs:enumeration value="confirm"/>
+ <xs:enumeration value="confirmWithSecret"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+</xs:schema>
diff --git a/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/Core-1.2.xsd b/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/Core-1.2.xsd
new file mode 100644
index 00000000..594e4415
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/Core-1.2.xsd
@@ -0,0 +1,877 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Securitylayer, Schnittstellenspezifikation -->
+<!-- XML-Schema fuer Schnittstellenspezifikation Version 1.2.2 -->
+<!-- 01. 03. 2005, Bundeskanzleramt, Stabsstelle IKT-Strategie, Technik und Standards -->
+<xsd:schema targetNamespace="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.2.1" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.buergerkarte.at/namespaces/securitylayer/1.2#">
+ <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml.xsd"/>
+ <!--###################################################################### -->
+ <!--# Create CMS Signature # -->
+ <!--###################################################################### -->
+ <!--====================================================================== -->
+ <!--= Create CMS Signature Request = -->
+ <!--====================================================================== -->
+ <xsd:element name="CreateCMSSignatureRequest" type="CreateCMSSignatureRequestType"/>
+ <xsd:complexType name="CreateCMSSignatureRequestType">
+ <xsd:sequence>
+ <xsd:element name="KeyboxIdentifier" type="BoxIdentifierType"/>
+ <xsd:element name="DataObject" type="CMSDataObjectRequiredMetaType"/>
+ </xsd:sequence>
+ <xsd:attribute name="Structure" use="required">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="detached"/>
+ <xsd:enumeration value="enveloping"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:complexType>
+ <xsd:complexType name="CMSDataObjectRequiredMetaType">
+ <xsd:complexContent>
+ <xsd:restriction base="CMSDataObjectOptionalMetaType">
+ <xsd:sequence>
+ <xsd:element name="MetaInfo" type="MetaInfoType"/>
+ <xsd:element name="Content" type="Base64OptRefContentType"/>
+ </xsd:sequence>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CMSDataObjectOptionalMetaType">
+ <xsd:sequence>
+ <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/>
+ <xsd:element name="Content" type="Base64OptRefContentType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--====================================================================== -->
+ <!--= Create CMS Siganture Response = -->
+ <!--====================================================================== -->
+ <xsd:element name="CreateCMSSignatureResponse" type="CreateCMSSignatureResponseType"/>
+ <xsd:complexType name="CreateCMSSignatureResponseType">
+ <xsd:sequence>
+ <xsd:element name="CMSSignature" type="xsd:base64Binary"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--###################################################################### -->
+ <!--# Create XML Signature # -->
+ <!--###################################################################### -->
+ <!--====================================================================== -->
+ <!--= Create XML Signature Request = -->
+ <!--====================================================================== -->
+ <xsd:element name="CreateXMLSignatureRequest" type="CreateXMLSignatureRequestType"/>
+ <xsd:complexType name="CreateXMLSignatureRequestType">
+ <xsd:sequence>
+ <xsd:element name="KeyboxIdentifier" type="BoxIdentifierType"/>
+ <xsd:element name="DataObjectInfo" type="DataObjectInfoType" maxOccurs="unbounded"/>
+ <xsd:element name="SignatureInfo" type="SignatureInfoCreationType" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="SignatureInfoCreationType">
+ <xsd:sequence>
+ <xsd:element name="SignatureEnvironment" type="Base64XMLOptRefContentType"/>
+ <xsd:element name="SignatureLocation">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:token">
+ <xsd:attribute name="Index" type="xsd:nonNegativeInteger" use="required"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Supplement" type="DataObjectAssociationType" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="MetaInfoType">
+ <xsd:sequence>
+ <xsd:element name="MimeType" type="MimeTypeType"/>
+ <xsd:element name="Description" type="xsd:string" minOccurs="0"/>
+ <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="DataObjectInfoType">
+ <xsd:sequence>
+ <xsd:element name="DataObject" type="Base64XMLLocRefOptRefContentType"/>
+ <xsd:element name="TransformsInfo" type="TransformsInfoType" maxOccurs="unbounded"/>
+ <xsd:element name="Supplement" type="DataObjectAssociationType" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="Structure" use="required">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="detached"/>
+ <xsd:enumeration value="enveloping"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:complexType>
+ <xsd:complexType name="TransformsInfoType">
+ <xsd:sequence>
+ <xsd:element ref="dsig:Transforms" minOccurs="0"/>
+ <xsd:element name="FinalDataMetaInfo" type="MetaInfoType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--====================================================================== -->
+ <!--= Create XML Signature Response = -->
+ <!--====================================================================== -->
+ <xsd:element name="CreateXMLSignatureResponse" type="CreateXMLSignatureResponseType"/>
+ <xsd:complexType name="CreateXMLSignatureResponseType">
+ <xsd:sequence>
+ <xsd:any namespace="##any" processContents="lax"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--###################################################################### -->
+ <!--# Verify CMS Signature # -->
+ <!--###################################################################### -->
+ <!--====================================================================== -->
+ <!--= Verify CMS Signature Request = -->
+ <!--====================================================================== -->
+ <xsd:element name="VerifyCMSSignatureRequest" type="VerifyCMSSignatureRequestType"/>
+ <xsd:complexType name="VerifyCMSSignatureRequestType">
+ <xsd:sequence>
+ <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/>
+ <xsd:element name="CMSSignature" type="xsd:base64Binary"/>
+ <xsd:element name="DataObject" type="CMSDataObjectOptionalMetaType" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/>
+ </xsd:complexType>
+ <xsd:simpleType name="SignatoriesType">
+ <xsd:union memberTypes="AllSignatoriesType">
+ <xsd:simpleType>
+ <xsd:list itemType="xsd:positiveInteger"/>
+ </xsd:simpleType>
+ </xsd:union>
+ </xsd:simpleType>
+ <xsd:simpleType name="AllSignatoriesType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="all"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <!--====================================================================== -->
+ <!--= Verify CMS Signature Response = -->
+ <!--====================================================================== -->
+ <xsd:element name="VerifyCMSSignatureResponse" type="VerifyCMSSignatureResponseType"/>
+ <xsd:complexType name="VerifyCMSSignatureResponseType">
+ <xsd:sequence maxOccurs="unbounded">
+ <xsd:element name="SignerInfo" type="dsig:KeyInfoType"/>
+ <xsd:element name="SignatureCheck" type="CheckResultType"/>
+ <xsd:element name="CertificateCheck" type="CheckResultType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:element name="QualifiedCertificate"/>
+ <!--###################################################################### -->
+ <!--# Verify XML Signature # -->
+ <!--###################################################################### -->
+ <!--====================================================================== -->
+ <!--= Verify XML Signature Request = -->
+ <!--====================================================================== -->
+ <xsd:element name="VerifyXMLSignatureRequest" type="VerifyXMLSignatureRequestType"/>
+ <xsd:complexType name="VerifyXMLSignatureRequestType">
+ <xsd:sequence>
+ <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/>
+ <xsd:element name="SignatureInfo" type="SignatureInfoVerificationType"/>
+ <xsd:element name="Supplement" type="DataObjectAssociationType" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="SignatureInfoVerificationType">
+ <xsd:sequence>
+ <xsd:element name="SignatureEnvironment" type="Base64XMLOptRefContentType"/>
+ <xsd:element name="SignatureLocation" type="xsd:token"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--====================================================================== -->
+ <!--= Verify XML Signature Response = -->
+ <!--====================================================================== -->
+ <xsd:element name="VerifyXMLSignatureResponse" type="VerifyXMLSignatureResponseType"/>
+ <xsd:complexType name="VerifyXMLSignatureResponseType">
+ <xsd:sequence>
+ <xsd:element name="SignerInfo" type="dsig:KeyInfoType"/>
+ <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/>
+ <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType"/>
+ <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="CertificateCheck" type="CheckResultType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="ReferencesCheckResultType">
+ <xsd:sequence>
+ <xsd:element name="Code" type="xsd:nonNegativeInteger"/>
+ <xsd:element name="Info" type="ReferencesCheckResultInfoType" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="ReferencesCheckResultInfoType" mixed="true">
+ <xsd:sequence>
+ <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="ManifestRefsCheckResultType">
+ <xsd:sequence>
+ <xsd:element name="Code" type="xsd:nonNegativeInteger"/>
+ <xsd:element name="Info" type="ManifestRefsCheckResultInfoType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="ManifestRefsCheckResultInfoType" mixed="true">
+ <xsd:sequence>
+ <xsd:element name="ReferringSigReference" type="xsd:positiveInteger"/>
+ <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CheckResultType">
+ <xsd:sequence>
+ <xsd:element name="Code" type="xsd:nonNegativeInteger"/>
+ <xsd:element name="Info" type="AnyMixedChildrenType" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--###################################################################### -->
+ <!--# Encrypt a CMS message # -->
+ <!--###################################################################### -->
+ <!--====================================================================== -->
+ <!--= Encrypt a CMS message: Request = -->
+ <!--====================================================================== -->
+ <xsd:element name="EncryptCMSRequest" type="EncryptCMSRequestType"/>
+ <xsd:complexType name="EncryptCMSRequestType">
+ <xsd:sequence>
+ <xsd:element name="RecipientPublicKey" type="CMSRecipientPublicKeyType" maxOccurs="unbounded"/>
+ <xsd:element name="ToBeEncrypted" type="CMSToBeEncryptedType"/>
+ </xsd:sequence>
+ <xsd:attribute name="ReturnBinaryResult" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="CMSToBeEncryptedType">
+ <xsd:sequence>
+ <xsd:element name="MetaInfo" type="MetaInfoType"/>
+ <xsd:element name="Content" type="Base64OptRefContentType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CMSRecipientPublicKeyType">
+ <xsd:choice>
+ <xsd:element name="X509Certificate" type="xsd:base64Binary"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <!--====================================================================== -->
+ <!--= Encrypt a CMS message: Response = -->
+ <!--====================================================================== -->
+ <xsd:element name="EncryptCMSResponse" type="EncryptCMSResponseType"/>
+ <xsd:complexType name="EncryptCMSResponseType">
+ <xsd:sequence>
+ <xsd:element name="CMSMessage" type="xsd:base64Binary"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--###################################################################### -->
+ <!--# Decrypt a CMS message # -->
+ <!--###################################################################### -->
+ <!--====================================================================== -->
+ <!--= Decrypt a CMS message: Request = -->
+ <!--====================================================================== -->
+ <xsd:element name="DecryptCMSRequest" type="DecryptCMSRequestType"/>
+ <xsd:complexType name="DecryptCMSRequestType">
+ <xsd:sequence>
+ <xsd:element name="CMSMessage" type="xsd:base64Binary"/>
+ <xsd:element name="EncryptedContent" type="CMSEncryptedContentType" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="ReturnResult" type="ReturnResultType" use="optional" default="xml"/>
+ </xsd:complexType>
+ <xsd:complexType name="CMSEncryptedContentType">
+ <xsd:sequence>
+ <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/>
+ <xsd:element name="Content" type="Base64OptRefContentType" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ReturnResultType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="binary"/>
+ <xsd:enumeration value="xml"/>
+ <xsd:enumeration value="none"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <!--====================================================================== -->
+ <!--= Decrypt a CMS message: Response = -->
+ <!--====================================================================== -->
+ <xsd:element name="DecryptCMSResponse" type="DecryptCMSResponseType"/>
+ <xsd:complexType name="DecryptCMSResponseType">
+ <xsd:sequence>
+ <xsd:element name="DecryptedData" type="xsd:base64Binary"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--###################################################################### -->
+ <!--# Encrypt an XML document # -->
+ <!--###################################################################### -->
+ <!--====================================================================== -->
+ <!--= Encrypt an XML document: Request = -->
+ <!--====================================================================== -->
+ <xsd:element name="EncryptXMLRequest">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="EncryptXMLRequestType"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:complexType name="EncryptXMLRequestType">
+ <xsd:sequence>
+ <xsd:element name="RecipientPublicKey" type="XMLRecipientPublicKeyType" maxOccurs="unbounded"/>
+ <xsd:element name="ToBeEncrypted" type="ToBeEncryptedType" maxOccurs="unbounded"/>
+ <xsd:element name="EncryptionInfo" type="EncryptionInfoType" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="ToBeEncryptedType">
+ <xsd:choice>
+ <xsd:element name="Element">
+ <xsd:complexType>
+ <xsd:attribute name="Selector" type="xsd:token" use="required"/>
+ <xsd:attribute name="EncDataReference" type="xsd:anyURI" use="optional"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="ElementContent">
+ <xsd:complexType>
+ <xsd:attribute name="Selector" type="xsd:token" use="required"/>
+ <xsd:attribute name="EncDataReference" type="xsd:anyURI" use="optional"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="New" type="XMLToBeEncryptedNewType"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="XMLToBeEncryptedNewType">
+ <xsd:sequence>
+ <xsd:element name="MetaInfo" type="MetaInfoType"/>
+ <xsd:element name="Content" type="XMLToBeEncryptedNewContentType"/>
+ </xsd:sequence>
+ <xsd:attribute name="ParentSelector" type="xsd:token" use="required"/>
+ <xsd:attribute name="NodeCount" type="xsd:nonNegativeInteger" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="XMLToBeEncryptedNewContentType">
+ <xsd:complexContent>
+ <xsd:extension base="Base64XMLLocRefContentType">
+ <xsd:attribute name="EncDataReference" type="xsd:anyURI" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="XMLRecipientPublicKeyType">
+ <xsd:choice>
+ <xsd:element ref="dsig:KeyValue"/>
+ <xsd:element name="X509Certificate" type="xsd:base64Binary"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="EncryptionInfoType">
+ <xsd:sequence>
+ <xsd:element name="EncryptionEnvironment" type="Base64XMLOptRefContentType"/>
+ <xsd:element name="EncryptedKeyLocation" minOccurs="0">
+ <xsd:complexType>
+ <xsd:attribute name="ParentSelector" type="xsd:token" use="required"/>
+ <xsd:attribute name="NodeCount" type="xsd:nonNegativeInteger" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Supplement" type="DataObjectAssociationType" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--====================================================================== -->
+ <!--= Encrypt an XML document: Response = -->
+ <!--====================================================================== -->
+ <xsd:element name="EncryptXMLResponse" type="EncryptXMLResponseType"/>
+ <xsd:complexType name="EncryptXMLResponseType">
+ <xsd:sequence>
+ <xsd:element name="EncryptionEnvironment">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:any namespace="##any" processContents="lax"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="EncryptedData" type="EncryptedDataType" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="EncryptedDataType">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:base64Binary">
+ <xsd:attribute name="EncDataReference" type="xsd:anyURI" use="required"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <!--###################################################################### -->
+ <!--# Decrypt an XML document # -->
+ <!--###################################################################### -->
+ <!--====================================================================== -->
+ <!--= Decrypt an XML document: Request = -->
+ <!--====================================================================== -->
+ <xsd:element name="DecryptXMLRequest" type="DecryptXMLRequestType"/>
+ <xsd:complexType name="DecryptXMLRequestType">
+ <xsd:sequence>
+ <xsd:element name="EncryptedContent" type="Base64XMLOptRefContentType"/>
+ <xsd:element name="EncrElemsSelector" type="xsd:string"/>
+ <xsd:element name="Supplement" type="DataObjectAssociationType" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="ReturnResult" type="ReturnResultType" use="optional" default="xml"/>
+ </xsd:complexType>
+ <!--====================================================================== -->
+ <!--= Decrypt an XML document: Response = -->
+ <!--====================================================================== -->
+ <xsd:element name="DecryptXMLResponse" type="DecryptXMLResponseType"/>
+ <xsd:complexType name="DecryptXMLResponseType">
+ <xsd:sequence minOccurs="0">
+ <xsd:element name="CandidateDocument" type="XMLContentType"/>
+ <xsd:element name="DecryptedBinaryData" minOccurs="0" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:base64Binary">
+ <xsd:attribute name="EncrElemSelector" type="xsd:string" use="required"/>
+ <xsd:attribute name="MimeType" type="xsd:string" use="optional"/>
+ <xsd:attribute name="Encoding" type="xsd:anyURI" use="optional"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--###################################################################### -->
+ <!--# Hashing # -->
+ <!--###################################################################### -->
+ <!--====================================================================== -->
+ <!--= Hash Computation Request = -->
+ <!--====================================================================== -->
+ <xsd:element name="CreateHashRequest" type="CreateHashRequestType"/>
+ <xsd:complexType name="CreateHashRequestType">
+ <xsd:sequence>
+ <xsd:element name="HashInfo" type="CreateHashInfoRequestType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CreateHashInfoRequestType">
+ <xsd:sequence>
+ <xsd:element name="HashData" type="HashDataType"/>
+ <xsd:element name="HashAlgorithm" type="xsd:anyURI"/>
+ <xsd:element name="FriendlyName" type="xsd:string" minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="RespondHashData" type="xsd:boolean" use="required"/>
+ </xsd:complexType>
+ <xsd:complexType name="HashDataType">
+ <xsd:sequence>
+ <xsd:element name="MetaInfo" type="MetaInfoType"/>
+ <xsd:element name="Content" type="Base64XMLOptRefContentType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--====================================================================== -->
+ <!--= Hash Computation Response = -->
+ <!--====================================================================== -->
+ <xsd:element name="CreateHashResponse" type="CreateHashResponseType"/>
+ <xsd:complexType name="CreateHashResponseType">
+ <xsd:sequence>
+ <xsd:element name="HashInfo" type="CreateHashInfoResponseType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CreateHashInfoResponseType">
+ <xsd:sequence>
+ <xsd:element name="HashData" type="HashDataType" minOccurs="0"/>
+ <xsd:element name="HashAlgorithm" type="xsd:anyURI"/>
+ <xsd:element name="FriendlyName" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="HashValue" type="xsd:base64Binary"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--====================================================================== -->
+ <!--= Hash Verification Request = -->
+ <!--====================================================================== -->
+ <xsd:element name="VerifyHashRequest" type="VerifyHashRequestType"/>
+ <xsd:complexType name="VerifyHashRequestType">
+ <xsd:sequence>
+ <xsd:element name="HashInfo" type="VerifyHashInfoRequestType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="VerifyHashInfoRequestType">
+ <xsd:sequence>
+ <xsd:element name="HashData" type="HashDataType"/>
+ <xsd:element name="HashAlgorithm" type="xsd:anyURI"/>
+ <xsd:element name="FriendlyName" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="HashValue" type="xsd:base64Binary"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--====================================================================== -->
+ <!--= Hash Verification Response = -->
+ <!--====================================================================== -->
+ <xsd:element name="VerifyHashResponse" type="VerifyHashResponseType"/>
+ <xsd:complexType name="VerifyHashResponseType">
+ <xsd:sequence>
+ <xsd:element name="VerificationResult" type="VerificationResultType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="VerificationResultType">
+ <xsd:sequence>
+ <xsd:element name="FriendlyName" type="xsd:string" minOccurs="0"/>
+ <xsd:element name="Result" type="xsd:boolean"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--###################################################################### -->
+ <!--# Infobox Commands # -->
+ <!--###################################################################### -->
+ <!--====================================================================== -->
+ <!--= Check Available Infoboxes Request = -->
+ <!--====================================================================== -->
+ <xsd:element name="InfoboxAvailableRequest" type="InfoboxAvailableRequestType"/>
+ <xsd:complexType name="InfoboxAvailableRequestType"/>
+ <!--====================================================================== -->
+ <!--= Check Available Infoboxes Response = -->
+ <!--====================================================================== -->
+ <xsd:element name="InfoboxAvailableResponse" type="InfoboxAvailableResponseType"/>
+ <xsd:complexType name="InfoboxAvailableResponseType">
+ <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="InfoboxIdentifier" type="BoxIdentifierType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--====================================================================== -->
+ <!--= Create Infobox Request = -->
+ <!--====================================================================== -->
+ <xsd:element name="InfoboxCreateRequest" type="InfoboxCreateRequestType"/>
+ <xsd:complexType name="InfoboxCreateRequestType">
+ <xsd:sequence>
+ <xsd:element name="InfoboxIdentifier" type="BoxIdentifierType"/>
+ <xsd:element name="InfoboxType" type="InfoboxTypeType"/>
+ <xsd:element name="Creator" type="xsd:string"/>
+ <xsd:element name="Purpose" type="xsd:string"/>
+ <xsd:element name="ReadAccessAuthorization" type="AccessAuthorizationType" minOccurs="0"/>
+ <xsd:element name="UpdateAccessAuthorization" type="AccessAuthorizationType" minOccurs="0"/>
+ <xsd:element name="ReadUserConfirmation" type="UserConfirmationType" minOccurs="0"/>
+ <xsd:element name="UpdateUserConfirmation" type="UserConfirmationType" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="InfoboxTypeType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="BinaryFile"/>
+ <xsd:enumeration value="AssocArray"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="AccessAuthorizationType">
+ <xsd:sequence>
+ <xsd:element name="RequesterID" type="RequesterIDType" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="UserMayChange" type="xsd:boolean" use="required"/>
+ </xsd:complexType>
+ <xsd:simpleType name="RequesterIDSimpleType">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:complexType name="RequesterIDType">
+ <xsd:simpleContent>
+ <xsd:extension base="RequesterIDSimpleType">
+ <xsd:attribute name="AuthenticationClass" type="AuthenticationClassType" use="required"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="UserConfirmationType">
+ <xsd:simpleContent>
+ <xsd:extension base="UserConfirmationSimpleType">
+ <xsd:attribute name="UserMayChange" type="xsd:boolean" use="required"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:simpleType name="UserConfirmationSimpleType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="none"/>
+ <xsd:enumeration value="info"/>
+ <xsd:enumeration value="confirm"/>
+ <xsd:enumeration value="confirmWithSecret"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="AuthenticationClassType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="anonym"/>
+ <xsd:enumeration value="pseudoanonym"/>
+ <xsd:enumeration value="certified"/>
+ <xsd:enumeration value="certifiedGovAgency"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <!--====================================================================== -->
+ <!--= Create Infobox Response = -->
+ <!--====================================================================== -->
+ <xsd:element name="InfoboxCreateResponse" type="InfoboxCreateResponseType"/>
+ <xsd:complexType name="InfoboxCreateResponseType"/>
+ <!--====================================================================== -->
+ <!--= Delete Infobox Request = -->
+ <!--====================================================================== -->
+ <xsd:element name="InfoboxDeleteRequest" type="InfoboxDeleteRequestType"/>
+ <xsd:complexType name="InfoboxDeleteRequestType">
+ <xsd:sequence>
+ <xsd:element name="InfoboxIdentifier" type="BoxIdentifierType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--====================================================================== -->
+ <!--= Delete Infobox Response = -->
+ <!--====================================================================== -->
+ <xsd:element name="InfoboxDeleteResponse" type="InfoboxDeleteResponseType"/>
+ <xsd:complexType name="InfoboxDeleteResponseType"/>
+ <!--====================================================================== -->
+ <!--= Read Infobox Request = -->
+ <!--====================================================================== -->
+ <xsd:element name="InfoboxReadRequest" type="InfoboxReadRequestType"/>
+ <xsd:complexType name="InfoboxReadRequestType">
+ <xsd:sequence>
+ <xsd:element name="InfoboxIdentifier" type="BoxIdentifierType"/>
+ <xsd:choice>
+ <xsd:element name="BinaryFileParameters" type="InfoboxReadParamsBinaryFileType"/>
+ <xsd:element name="AssocArrayParameters" type="InfoboxReadParamsAssocArrayType"/>
+ </xsd:choice>
+ <xsd:element name="BoxSpecificParameters" type="AnyChildrenType" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="InfoboxReadParamsBinaryFileType">
+ <xsd:attribute name="ContentIsXMLEntity" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ <xsd:complexType name="InfoboxReadParamsAssocArrayType">
+ <xsd:choice>
+ <xsd:element name="ReadKeys">
+ <xsd:complexType>
+ <xsd:attribute name="SearchString" type="WildCardSearchStringType" use="required"/>
+ <xsd:attribute name="UserMakesUnique" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="ReadPairs">
+ <xsd:complexType>
+ <xsd:attribute name="SearchString" type="WildCardSearchStringType" use="required"/>
+ <xsd:attribute name="UserMakesUnique" type="xsd:boolean" use="optional" default="false"/>
+ <xsd:attribute name="ValuesAreXMLEntities" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="ReadValue">
+ <xsd:complexType>
+ <xsd:attribute name="Key" type="BoxIdentifierType" use="required"/>
+ <xsd:attribute name="ValueIsXMLEntity" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:element name="IdentityLinkDomainIdentifier" type="xsd:anyURI"/>
+ <!--====================================================================== -->
+ <!--= Read Infobox Response = -->
+ <!--====================================================================== -->
+ <xsd:element name="InfoboxReadResponse" type="InfoboxReadResponseType"/>
+ <xsd:complexType name="InfoboxReadResponseType">
+ <xsd:choice>
+ <xsd:element name="BinaryFileData" type="Base64XMLContentType"/>
+ <xsd:element name="AssocArrayData" type="InfoboxReadDataAssocArrayType"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="InfoboxReadDataAssocArrayType">
+ <xsd:choice>
+ <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="Key" type="BoxIdentifierType"/>
+ </xsd:sequence>
+ <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+ <xsd:element name="Pair" type="InfoboxAssocArrayPairType"/>
+ </xsd:sequence>
+ </xsd:choice>
+ </xsd:complexType>
+ <!--====================================================================== -->
+ <!--= Update Infobox Request = -->
+ <!--====================================================================== -->
+ <xsd:element name="InfoboxUpdateRequest" type="InfoboxUpdateRequestType"/>
+ <xsd:complexType name="InfoboxUpdateRequestType">
+ <xsd:sequence>
+ <xsd:element name="InfoboxIdentifier" type="BoxIdentifierType"/>
+ <xsd:choice>
+ <xsd:element name="BinaryFileParameters" type="Base64XMLContentType"/>
+ <xsd:element name="AssocArrayParameters" type="InfoboxUpdateParamsAssocArrayType"/>
+ </xsd:choice>
+ <xsd:element name="BoxSpecificParameters" type="AnyChildrenType" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="InfoboxUpdateParamsAssocArrayType">
+ <xsd:choice>
+ <xsd:element name="UpdateKey">
+ <xsd:complexType>
+ <xsd:attribute name="Key" type="xsd:token" use="required"/>
+ <xsd:attribute name="NewKey" type="xsd:token" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="UpdateValue" type="InfoboxAssocArrayPairType"/>
+ <xsd:element name="DeletePair">
+ <xsd:complexType>
+ <xsd:attribute name="Key" type="xsd:token" use="required"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ <!--====================================================================== -->
+ <!--= Update Infobox Response = -->
+ <!--====================================================================== -->
+ <xsd:element name="InfoboxUpdateResponse" type="InfoboxUpdateResponseType"/>
+ <xsd:complexType name="InfoboxUpdateResponseType"/>
+ <!--###################################################################### -->
+ <!--# Null-Operation # -->
+ <!--###################################################################### -->
+ <!--====================================================================== -->
+ <!--= Null-Operation ReQuest = -->
+ <!--====================================================================== -->
+ <xsd:element name="NullOperationRequest" type="NullOperationRequestType"/>
+ <xsd:complexType name="NullOperationRequestType"/>
+ <!--====================================================================== -->
+ <!--= Null-Operation Response = -->
+ <!--====================================================================== -->
+ <xsd:element name="NullOperationResponse" type="NullOperationResponseType"/>
+ <xsd:complexType name="NullOperationResponseType"/>
+ <!--###################################################################### -->
+ <!--# Get Properties # -->
+ <!--###################################################################### -->
+ <xsd:element name="GetPropertiesRequest">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="GetPropertiesRequestType"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:complexType name="GetPropertiesRequestType"/>
+ <!--====================================================================== -->
+ <!--= Get Properties Response = -->
+ <!--====================================================================== -->
+ <xsd:element name="GetPropertiesResponse" type="GetPropertiesResponseType"/>
+ <xsd:complexType name="GetPropertiesResponseType">
+ <xsd:sequence>
+ <xsd:element name="ViewerMediaType" type="MimeTypeType" maxOccurs="unbounded"/>
+ <xsd:element name="XMLSignatureTransform" type="xsd:anyURI" maxOccurs="unbounded"/>
+ <xsd:element name="KeyboxIdentifier" type="QualifiedBoxIdentifierType" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="Binding" type="BindingType" maxOccurs="unbounded"/>
+ <xsd:element name="ProtocolVersion" type="xsd:token" maxOccurs="unbounded"/>
+ <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="BindingType">
+ <xsd:complexContent>
+ <xsd:extension base="AnyChildrenType">
+ <xsd:attribute name="Identifier" type="xsd:token" use="required"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="QualifiedBoxIdentifierType">
+ <xsd:simpleContent>
+ <xsd:extension base="BoxIdentifierType">
+ <xsd:attribute name="Signature" type="xsd:boolean" use="required"/>
+ <xsd:attribute name="Encryption" type="xsd:boolean" use="required"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <!--###################################################################### -->
+ <!--# Get Token Status # -->
+ <!--###################################################################### -->
+ <!--====================================================================== -->
+ <!--= Get Token Status Request = -->
+ <!--====================================================================== -->
+ <xsd:element name="GetStatusRequest" type="GetStatusRequestType"/>
+ <xsd:complexType name="GetStatusRequestType">
+ <xsd:sequence minOccurs="0">
+ <xsd:element name="TokenStatus" type="TokenStatusType"/>
+ <xsd:element name="MaxDelay" type="xsd:nonNegativeInteger"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--====================================================================== -->
+ <!--= Get Token Status Response = -->
+ <!--====================================================================== -->
+ <xsd:element name="GetStatusResponse" type="GetStatusResponseType"/>
+ <xsd:complexType name="GetStatusResponseType">
+ <xsd:sequence>
+ <xsd:element name="TokenStatus" type="TokenStatusType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="TokenStatusType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="ready"/>
+ <xsd:enumeration value="removed"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <!--###################################################################### -->
+ <!--# Error Response # -->
+ <!--###################################################################### -->
+ <xsd:element name="ErrorResponse" type="ErrorResponseType"/>
+ <xsd:complexType name="ErrorResponseType">
+ <xsd:sequence>
+ <xsd:element name="ErrorCode" type="ErrorCodeType"/>
+ <xsd:element name="Info" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ErrorCodeType">
+ <xsd:restriction base="xsd:integer">
+ <xsd:minInclusive value="1000"/>
+ <xsd:maxInclusive value="99999"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <!--###################################################################### -->
+ <!--# Auxiliary Types # -->
+ <!--###################################################################### -->
+ <xsd:simpleType name="BoxIdentifierType">
+ <xsd:restriction base="xsd:token"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="MimeTypeType">
+ <xsd:restriction base="xsd:token"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="WildCardSearchStringType">
+ <xsd:restriction base="xsd:string">
+ <xsd:pattern value="[^\*/]*(\*[^\*/]*)?(/[^\*/]*(\*[^\*/]*)?)*"/>
+ <xsd:pattern value="\*\*"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="InfoboxAssocArrayPairType">
+ <xsd:complexContent>
+ <xsd:extension base="Base64XMLContentType">
+ <xsd:attribute name="Key" type="xsd:string" use="required"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="AnyChildrenType" mixed="false">
+ <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+ <xsd:any namespace="##any" processContents="lax"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="AnyMixedChildrenType" mixed="true">
+ <xsd:sequence minOccurs="0" maxOccurs="unbounded">
+ <xsd:any namespace="##any" processContents="lax"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="XMLContentType" mixed="true">
+ <xsd:complexContent mixed="true">
+ <xsd:extension base="AnyMixedChildrenType">
+ <xsd:attribute ref="xml:space" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="Base64XMLLocRefOptRefContentType">
+ <xsd:complexContent>
+ <xsd:extension base="Base64XMLLocRefContentType">
+ <xsd:attribute name="Reference" type="xsd:anyURI" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="Base64XMLLocRefReqRefContentType">
+ <xsd:complexContent>
+ <xsd:extension base="Base64XMLLocRefContentType">
+ <xsd:attribute name="Reference" type="xsd:anyURI" use="required"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="Base64XMLOptRefContentType">
+ <xsd:complexContent>
+ <xsd:extension base="Base64XMLContentType">
+ <xsd:attribute name="Reference" type="xsd:anyURI" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="Base64OptRefContentType">
+ <xsd:complexContent>
+ <xsd:extension base="Base64ContentType">
+ <xsd:attribute name="Reference" type="xsd:anyURI" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="Base64ContentType">
+ <xsd:choice minOccurs="0">
+ <xsd:element name="Base64Content" type="xsd:base64Binary"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="Base64XMLContentType">
+ <xsd:choice minOccurs="0">
+ <xsd:element name="Base64Content" type="xsd:base64Binary"/>
+ <xsd:element name="XMLContent" type="XMLContentType"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="Base64XMLLocRefContentType">
+ <xsd:choice minOccurs="0">
+ <xsd:element name="Base64Content" type="xsd:base64Binary"/>
+ <xsd:element name="XMLContent" type="XMLContentType"/>
+ <xsd:element name="LocRefContent" type="xsd:anyURI"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="DataObjectAssociationType">
+ <xsd:sequence>
+ <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/>
+ <xsd:element name="Content" type="Base64XMLLocRefReqRefContentType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+</xsd:schema>
diff --git a/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/Core.20020225.xsd b/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/Core.20020225.xsd
new file mode 100644
index 00000000..76d1d7cb
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/Core.20020225.xsd
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="http://www.buergerkarte.at/namespaces/securitylayer/20020225#" xmlns="http://www.buergerkarte.at/namespaces/securitylayer/20020225#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.1.0">
+ <xsd:element name="CreateCMSSignatureRequest" type="xsd:anyType"/>
+ <xsd:element name="CreateCMSSignatureResponse" type="xsd:anyType"/>
+ <xsd:element name="CreateXMLSignatureRequest" type="xsd:anyType"/>
+ <xsd:element name="CreateXMLSignatureResponse" type="xsd:anyType"/>
+ <xsd:element name="VerifyCMSSignatureRequest" type="xsd:anyType"/>
+ <xsd:element name="VerifyCMSSignatureResponse" type="xsd:anyType"/>
+ <xsd:element name="VerifyXMLSignatureRequest" type="xsd:anyType"/>
+ <xsd:element name="VerifyXMLSignatureResponse" type="xsd:anyType"/>
+ <xsd:element name="InfoboxAvailableRequest" type="xsd:anyType"/>
+ <xsd:element name="InfoboxAvailableResponse" type="xsd:anyType"/>
+ <xsd:element name="InfoboxReadRequest" type="xsd:anyType"/>
+ <xsd:element name="InfoboxReadResponse" type="xsd:anyType"/>
+ <xsd:element name="InfoboxUpdateRequest" type="xsd:anyType"/>
+ <xsd:element name="InfoboxUpdateResponse" type="xsd:anyType"/>
+ <xsd:element name="CreateSessionKeyRequest" type="xsd:anyType"/>
+ <xsd:element name="CreateSessionKeyResponse" type="xsd:anyType"/>
+ <xsd:element name="CreateSymmetricSecretRequest" type="xsd:anyType"/>
+ <xsd:element name="CreateSymmetricSecretResponse" type="xsd:anyType"/>
+ <xsd:element name="GetPropertiesRequest" type="xsd:anyType"/>
+ <xsd:element name="GetPropertiesResponse" type="xsd:anyType"/>
+ <xsd:element name="GetStatusRequest" type="xsd:anyType"/>
+ <xsd:element name="GetStatusResponse" type="xsd:anyType"/>
+ <!--########## Error Response ###-->
+ <xsd:element name="ErrorResponse" type="ErrorResponseType"/>
+ <xsd:complexType name="ErrorResponseType">
+ <xsd:sequence>
+ <xsd:element name="ErrorCode" type="xsd:integer"/>
+ <xsd:element name="Info" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+</xsd:schema>
diff --git a/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/Core.20020831.xsd b/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/Core.20020831.xsd
new file mode 100644
index 00000000..6759d791
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/Core.20020831.xsd
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema targetNamespace="http://www.buergerkarte.at/namespaces/securitylayer/20020831#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.buergerkarte.at/namespaces/securitylayer/20020831#" xmlns:sl10="http://www.buergerkarte.at/namespaces/securitylayer/20020225#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.1.0">
+ <xsd:element name="CreateXMLSignatureRequest" type="xsd:anyType"/>
+ <xsd:element name="CreateXMLSignatureResponse" type="xsd:anyType"/>
+ <xsd:element name="VerifyCMSSignatureRequest" type="xsd:anyType"/>
+ <xsd:element name="VerifyCMSSignatureResponse" type="xsd:anyType"/>
+ <xsd:element name="VerifyXMLSignatureRequest" type="xsd:anyType"/>
+ <xsd:element name="VerifyXMLSignatureResponse" type="xsd:anyType"/>
+ <xsd:element name="GetPropertiesResponse" type="xsd:anyType"/>
+</xsd:schema>
diff --git a/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/xml.xsd b/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/xml.xsd
new file mode 100644
index 00000000..eeb9db56
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/xml.xsd
@@ -0,0 +1,145 @@
+<?xml version='1.0'?>
+<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="en">
+
+ <xs:annotation>
+ <xs:documentation>
+ See http://www.w3.org/XML/1998/namespace.html and
+ http://www.w3.org/TR/REC-xml for information about this namespace.
+
+ This schema document describes the XML namespace, in a form
+ suitable for import by other schema documents.
+
+ Note that local names in this namespace are intended to be defined
+ only by the World Wide Web Consortium or its subgroups. The
+ following names are currently defined in this namespace and should
+ not be used with conflicting semantics by any Working Group,
+ specification, or document instance:
+
+ base (as an attribute name): denotes an attribute whose value
+ provides a URI to be used as the base for interpreting any
+ relative URIs in the scope of the element on which it
+ appears; its value is inherited. This name is reserved
+ by virtue of its definition in the XML Base specification.
+
+ id (as an attribute name): denotes an attribute whose value
+ should be interpreted as if declared to be of type ID.
+ This name is reserved by virtue of its definition in the
+ xml:id specification.
+
+ lang (as an attribute name): denotes an attribute whose value
+ is a language code for the natural language of the content of
+ any element; its value is inherited. This name is reserved
+ by virtue of its definition in the XML specification.
+
+ space (as an attribute name): denotes an attribute whose
+ value is a keyword indicating what whitespace processing
+ discipline is intended for the content of the element; its
+ value is inherited. This name is reserved by virtue of its
+ definition in the XML specification.
+
+ Father (in any context at all): denotes Jon Bosak, the chair of
+ the original XML Working Group. This name is reserved by
+ the following decision of the W3C XML Plenary and
+ XML Coordination groups:
+
+ In appreciation for his vision, leadership and dedication
+ the W3C XML Plenary on this 10th day of February, 2000
+ reserves for Jon Bosak in perpetuity the XML name
+ xml:Father
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>This schema defines attributes and an attribute group
+ suitable for use by
+ schemas wishing to allow xml:base, xml:lang, xml:space or xml:id
+ attributes on elements they define.
+
+ To enable this, such a schema must import this schema
+ for the XML namespace, e.g. as follows:
+ &lt;schema . . .>
+ . . .
+ &lt;import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+
+ Subsequently, qualified reference to any of the attributes
+ or the group defined below will have the desired effect, e.g.
+
+ &lt;type . . .>
+ . . .
+ &lt;attributeGroup ref="xml:specialAttrs"/>
+
+ will define a type which will schema-validate an instance
+ element with any of those attributes</xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>In keeping with the XML Schema WG's standard versioning
+ policy, this schema document will persist at
+ http://www.w3.org/2007/08/xml.xsd.
+ At the date of issue it can also be found at
+ http://www.w3.org/2001/xml.xsd.
+ The schema document at that URI may however change in the future,
+ in order to remain compatible with the latest version of XML Schema
+ itself, or with the XML namespace itself. In other words, if the XML
+ Schema or XML namespaces change, the version of this document at
+ http://www.w3.org/2001/xml.xsd will change
+ accordingly; the version at
+ http://www.w3.org/2007/08/xml.xsd will not change.
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:attribute name="lang">
+ <xs:annotation>
+ <xs:documentation>Attempting to install the relevant ISO 2- and 3-letter
+ codes as the enumerated possible values is probably never
+ going to be a realistic possibility. See
+ RFC 3066 at http://www.ietf.org/rfc/rfc3066.txt and the IANA registry
+ at http://www.iana.org/assignments/lang-tag-apps.htm for
+ further information.
+
+ The union allows for the 'un-declaration' of xml:lang with
+ the empty string.</xs:documentation>
+ </xs:annotation>
+ <xs:simpleType>
+ <xs:union memberTypes="xs:language">
+ <xs:simpleType>
+ <xs:restriction base="xs:string">
+ <xs:enumeration value=""/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:union>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="space">
+ <xs:simpleType>
+ <xs:restriction base="xs:NCName">
+ <xs:enumeration value="default"/>
+ <xs:enumeration value="preserve"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:attribute>
+
+ <xs:attribute name="base" type="xs:anyURI">
+ <xs:annotation>
+ <xs:documentation>See http://www.w3.org/TR/xmlbase/ for
+ information about this attribute.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attribute name="id" type="xs:ID">
+ <xs:annotation>
+ <xs:documentation>See http://www.w3.org/TR/xml-id/ for
+ information about this attribute.</xs:documentation>
+ </xs:annotation>
+ </xs:attribute>
+
+ <xs:attributeGroup name="specialAttrs">
+ <xs:attribute ref="xml:base"/>
+ <xs:attribute ref="xml:lang"/>
+ <xs:attribute ref="xml:space"/>
+ <xs:attribute ref="xml:id"/>
+ </xs:attributeGroup>
+
+</xs:schema>
diff --git a/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/xmldsig-core-schema.xsd b/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/xmldsig-core-schema.xsd
new file mode 100644
index 00000000..8422fdfa
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/xmldsig-core-schema.xsd
@@ -0,0 +1,308 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Schema for XML Signatures
+ http://www.w3.org/2000/09/xmldsig#
+ $Revision: 1.1 $ on $Date: 2002/02/08 20:32:26 $ by $Author: reagle $
+
+ Copyright 2001 The Internet Society and W3C (Massachusetts Institute
+ of Technology, Institut National de Recherche en Informatique et en
+ Automatique, Keio University). All Rights Reserved.
+ http://www.w3.org/Consortium/Legal/
+
+ This document is governed by the W3C Software License [1] as described
+ in the FAQ [2].
+
+ [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720
+ [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD
+-->
+
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
+ targetNamespace="http://www.w3.org/2000/09/xmldsig#"
+ version="0.1" elementFormDefault="qualified">
+
+<!-- Basic Types Defined for Signatures -->
+
+<simpleType name="CryptoBinary">
+ <restriction base="base64Binary">
+ </restriction>
+</simpleType>
+
+<!-- Start Signature -->
+
+<element name="Signature" type="ds:SignatureType"/>
+<complexType name="SignatureType">
+ <sequence>
+ <element ref="ds:SignedInfo"/>
+ <element ref="ds:SignatureValue"/>
+ <element ref="ds:KeyInfo" minOccurs="0"/>
+ <element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+</complexType>
+
+ <element name="SignatureValue" type="ds:SignatureValueType"/>
+ <complexType name="SignatureValueType">
+ <simpleContent>
+ <extension base="base64Binary">
+ <attribute name="Id" type="ID" use="optional"/>
+ </extension>
+ </simpleContent>
+ </complexType>
+
+<!-- Start SignedInfo -->
+
+<element name="SignedInfo" type="ds:SignedInfoType"/>
+<complexType name="SignedInfoType">
+ <sequence>
+ <element ref="ds:CanonicalizationMethod"/>
+ <element ref="ds:SignatureMethod"/>
+ <element ref="ds:Reference" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+</complexType>
+
+ <element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/>
+ <complexType name="CanonicalizationMethodType" mixed="true">
+ <sequence>
+ <any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
+ <!-- (0,unbounded) elements from (1,1) namespace -->
+ </sequence>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+ </complexType>
+
+ <element name="SignatureMethod" type="ds:SignatureMethodType"/>
+ <complexType name="SignatureMethodType" mixed="true">
+ <sequence>
+ <element name="HMACOutputLength" minOccurs="0" type="ds:HMACOutputLengthType"/>
+ <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ <!-- (0,unbounded) elements from (1,1) external namespace -->
+ </sequence>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+ </complexType>
+
+<!-- Start Reference -->
+
+<element name="Reference" type="ds:ReferenceType"/>
+<complexType name="ReferenceType">
+ <sequence>
+ <element ref="ds:Transforms" minOccurs="0"/>
+ <element ref="ds:DigestMethod"/>
+ <element ref="ds:DigestValue"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ <attribute name="URI" type="anyURI" use="optional"/>
+ <attribute name="Type" type="anyURI" use="optional"/>
+</complexType>
+
+ <element name="Transforms" type="ds:TransformsType"/>
+ <complexType name="TransformsType">
+ <sequence>
+ <element ref="ds:Transform" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+
+ <element name="Transform" type="ds:TransformType"/>
+ <complexType name="TransformType" mixed="true">
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <any namespace="##other" processContents="lax"/>
+ <!-- (1,1) elements from (0,unbounded) namespaces -->
+ <element name="XPath" type="string"/>
+ </choice>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+ </complexType>
+
+<!-- End Reference -->
+
+<element name="DigestMethod" type="ds:DigestMethodType"/>
+<complexType name="DigestMethodType" mixed="true">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+</complexType>
+
+<element name="DigestValue" type="ds:DigestValueType"/>
+<simpleType name="DigestValueType">
+ <restriction base="base64Binary"/>
+</simpleType>
+
+<!-- End SignedInfo -->
+
+<!-- Start KeyInfo -->
+
+<element name="KeyInfo" type="ds:KeyInfoType"/>
+<complexType name="KeyInfoType" mixed="true">
+ <choice maxOccurs="unbounded">
+ <element ref="ds:KeyName"/>
+ <element ref="ds:KeyValue"/>
+ <element ref="ds:RetrievalMethod"/>
+ <element ref="ds:X509Data"/>
+ <element ref="ds:PGPData"/>
+ <element ref="ds:SPKIData"/>
+ <element ref="ds:MgmtData"/>
+ <any processContents="lax" namespace="##other"/>
+ <!-- (1,1) elements from (0,unbounded) namespaces -->
+ </choice>
+ <attribute name="Id" type="ID" use="optional"/>
+</complexType>
+
+ <element name="KeyName" type="string"/>
+ <element name="MgmtData" type="string"/>
+
+ <element name="KeyValue" type="ds:KeyValueType"/>
+ <complexType name="KeyValueType" mixed="true">
+ <choice>
+ <element ref="ds:DSAKeyValue"/>
+ <element ref="ds:RSAKeyValue"/>
+ <any namespace="##other" processContents="lax"/>
+ </choice>
+ </complexType>
+
+ <element name="RetrievalMethod" type="ds:RetrievalMethodType"/>
+ <complexType name="RetrievalMethodType">
+ <sequence>
+ <element ref="ds:Transforms" minOccurs="0"/>
+ </sequence>
+ <attribute name="URI" type="anyURI"/>
+ <attribute name="Type" type="anyURI" use="optional"/>
+ </complexType>
+
+<!-- Start X509Data -->
+
+<element name="X509Data" type="ds:X509DataType"/>
+<complexType name="X509DataType">
+ <sequence maxOccurs="unbounded">
+ <choice>
+ <element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/>
+ <element name="X509SKI" type="base64Binary"/>
+ <element name="X509SubjectName" type="string"/>
+ <element name="X509Certificate" type="base64Binary"/>
+ <element name="X509CRL" type="base64Binary"/>
+ <any namespace="##other" processContents="lax"/>
+ </choice>
+ </sequence>
+</complexType>
+
+<complexType name="X509IssuerSerialType">
+ <sequence>
+ <element name="X509IssuerName" type="string"/>
+ <element name="X509SerialNumber" type="integer"/>
+ </sequence>
+</complexType>
+
+<!-- End X509Data -->
+
+<!-- Begin PGPData -->
+
+<element name="PGPData" type="ds:PGPDataType"/>
+<complexType name="PGPDataType">
+ <choice>
+ <sequence>
+ <element name="PGPKeyID" type="base64Binary"/>
+ <element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/>
+ <any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </sequence>
+ <sequence>
+ <element name="PGPKeyPacket" type="base64Binary"/>
+ <any namespace="##other" processContents="lax" minOccurs="0"
+ maxOccurs="unbounded"/>
+ </sequence>
+ </choice>
+</complexType>
+
+<!-- End PGPData -->
+
+<!-- Begin SPKIData -->
+
+<element name="SPKIData" type="ds:SPKIDataType"/>
+<complexType name="SPKIDataType">
+ <sequence maxOccurs="unbounded">
+ <element name="SPKISexp" type="base64Binary"/>
+ <any namespace="##other" processContents="lax" minOccurs="0"/>
+ </sequence>
+</complexType>
+
+<!-- End SPKIData -->
+
+<!-- End KeyInfo -->
+
+<!-- Start Object (Manifest, SignatureProperty) -->
+
+<element name="Object" type="ds:ObjectType"/>
+<complexType name="ObjectType" mixed="true">
+ <sequence minOccurs="0" maxOccurs="unbounded">
+ <any namespace="##any" processContents="lax"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+ <attribute name="MimeType" type="string" use="optional"/> <!-- add a grep facet -->
+ <attribute name="Encoding" type="anyURI" use="optional"/>
+</complexType>
+
+<element name="Manifest" type="ds:ManifestType"/>
+<complexType name="ManifestType">
+ <sequence>
+ <element ref="ds:Reference" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+</complexType>
+
+<element name="SignatureProperties" type="ds:SignaturePropertiesType"/>
+<complexType name="SignaturePropertiesType">
+ <sequence>
+ <element ref="ds:SignatureProperty" maxOccurs="unbounded"/>
+ </sequence>
+ <attribute name="Id" type="ID" use="optional"/>
+</complexType>
+
+ <element name="SignatureProperty" type="ds:SignaturePropertyType"/>
+ <complexType name="SignaturePropertyType" mixed="true">
+ <choice maxOccurs="unbounded">
+ <any namespace="##other" processContents="lax"/>
+ <!-- (1,1) elements from (1,unbounded) namespaces -->
+ </choice>
+ <attribute name="Target" type="anyURI" use="required"/>
+ <attribute name="Id" type="ID" use="optional"/>
+ </complexType>
+
+<!-- End Object (Manifest, SignatureProperty) -->
+
+<!-- Start Algorithm Parameters -->
+
+<simpleType name="HMACOutputLengthType">
+ <restriction base="integer"/>
+</simpleType>
+
+<!-- Start KeyValue Element-types -->
+
+<element name="DSAKeyValue" type="ds:DSAKeyValueType"/>
+<complexType name="DSAKeyValueType">
+ <sequence>
+ <sequence minOccurs="0">
+ <element name="P" type="ds:CryptoBinary"/>
+ <element name="Q" type="ds:CryptoBinary"/>
+ </sequence>
+ <element name="G" type="ds:CryptoBinary" minOccurs="0"/>
+ <element name="Y" type="ds:CryptoBinary"/>
+ <element name="J" type="ds:CryptoBinary" minOccurs="0"/>
+ <sequence minOccurs="0">
+ <element name="Seed" type="ds:CryptoBinary"/>
+ <element name="PgenCounter" type="ds:CryptoBinary"/>
+ </sequence>
+ </sequence>
+</complexType>
+
+<element name="RSAKeyValue" type="ds:RSAKeyValueType"/>
+<complexType name="RSAKeyValueType">
+ <sequence>
+ <element name="Modulus" type="ds:CryptoBinary"/>
+ <element name="Exponent" type="ds:CryptoBinary"/>
+ </sequence>
+</complexType>
+
+<!-- End KeyValue Element-types -->
+
+<!-- End Signature -->
+
+</schema>
diff --git a/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/xmldsig-transforms.xsd b/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/xmldsig-transforms.xsd
new file mode 100644
index 00000000..25fdec88
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slcommands/schema/xmldsig-transforms.xsd
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Schema for XML Signatures
+ http://www.w3.org/2000/09/xmldsig#
+ $Revision: 1.1 $ on $Date: 2002/02/08 20:32:26 $ by $Author: reagle $
+
+ Copyright 2001 The Internet Society and W3C (Massachusetts Institute
+ of Technology, Institut National de Recherche en Informatique et en
+ Automatique, Keio University). All Rights Reserved.
+ http://www.w3.org/Consortium/Legal/
+
+ This document is governed by the W3C Software License [1] as described
+ in the FAQ [2].
+
+ [1] http://www.w3.org/Consortium/Legal/copyright-software-19980720
+ [2] http://www.w3.org/Consortium/Legal/IPR-FAQ-20000620.html#DTD
+-->
+
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
+ targetNamespace="http://www.w3.org/2000/09/xmldsig#"
+ version="0.1" elementFormDefault="qualified">
+
+ <element name="Transforms" type="ds:TransformsType"/>
+ <complexType name="TransformsType">
+ <sequence>
+ <element ref="ds:Transform" maxOccurs="unbounded"/>
+ </sequence>
+ </complexType>
+
+ <element name="Transform" type="ds:TransformType"/>
+ <complexType name="TransformType" mixed="true">
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <any namespace="##other" processContents="lax"/>
+ <!-- (1,1) elements from (0,unbounded) namespaces -->
+ <element name="XPath" type="string"/>
+ </choice>
+ <attribute name="Algorithm" type="anyURI" use="required"/>
+ </complexType>
+
+</schema> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slexceptions/SLExceptionMessages.properties b/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slexceptions/SLExceptionMessages.properties
new file mode 100644
index 00000000..c5bfce18
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slexceptions/SLExceptionMessages.properties
@@ -0,0 +1,104 @@
+# 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.
+
+test.noerror=Das ist eine Test-Fehlermeldung. Es ist kein Fehler aufgetreten.
+
+ec1000=Unklassifizierter Fehler.
+ec2000=Unklassifizierter Fehler in der Transportbindung.
+ec2001=HTTP/HTTPS-Bindung: DataURL kann nicht aufgelöst werden.
+ec2002=HTTP/HTTPS-Bindung: StylesheetURL kann nicht aufgelöst werden.
+ec2003=HTTP/HTTPS-Bindung: RedirectURL kann nicht aufgelöst werden.
+ec2004=HTTP/HTTPS-Bindung: Parameter XMLRequest fehlt.
+ec2005=HTTP/HTTPS-Bindung: Unbekannte Kodierung der Parameter.
+ec2006=HTTP/HTTPS-Bindung: Fehlerhafte Kodierung der Parameter.
+ec2007=HTTP/HTTPS-Bindung: DataURL-Server sendet Fehler oder unerwartete Antwort.
+ec2008=HTTP/HTTPS-Bindung: Fehler im Stylesheet, der von der StylesheetURL bezogen wurde.
+ec2009=HTTP/HTTPS-Bindung: HTTP-Anfrage an lokale BKU wurde an unerlaubte URL gerichtet.
+ec2010=HTTPS-Bindung: Fehler beim Aufbau der TLS-Verbindung.
+ec3000=Unklassifizierter Fehler in der XML-Struktur der Befehlsanfrage.
+ec3001=XML-Struktur der Befehlsanfrage ist nicht wohlgeformt.
+ec3002=XML-Struktur der Befehlsanfrage entspricht nicht dem Schema des Security-Layers.
+ec3003=XML-Struktur der Befehlsanfrage enthält eine unerlaubte Kombination aus optionalen Elementen oder Attributen.
+ec3004=XML-Struktur enthält ein Element oder Attribut, dessen Syntax nicht der Spezifikation des Security-Layer entspricht.
+ec3005=Protokollversion des Security-Layer wird nicht unterstützt.
+ec4000=Unklassifizierter Fehler in der Befehlsabarbeitung.
+ec4001=Unbekannter Keyboxbezeichner.
+ec4002=Unbekannter Infoboxbezeichner.
+ec4003=Zu signierendes Datum kann nicht aufgelöst werden.
+ec4004=Ergänzungsobjekt kann nicht aufgelöst werden.
+ec4005=Zu verschlüsselndes Datum kann nicht aufgelöst werden.
+ec4006=Algorithmus (Signatur, Verschlüsselung, Digest, Kanonisierung, Transformation) wird nicht unterstützt.
+ec4007=Fehler bei der Algorithmusausführung (Signatur, Verschlüsselung, Digest, Kanonisierung, Transformation).
+ec4008=Fehler beim Parsen der CMS-Nachricht.
+ec4009=Kein passender Entschlüsselungsschlüssel vorhanden.
+ec4010=Parameter des Infobox-Befehls passen nicht zum Typ der Infobox.
+ec4011=Befehl ist nicht implementiert.
+ec4100=XML-Dokument, in das die Signatur integriert werden soll, kann nicht aufgelöst werden.
+ec4101=XML-Dokument, in das die Signatur integriert werden soll, kann nicht geparst werden.
+ec4102=Signatur kann nicht am spezifizierten Ort in das bestehende XML-Dokument integriert werden.
+ec4103=Signatorzertifikat ist nicht in der CMS-Signatur enthalten.
+ec4104=Signierte Daten sind weder in der CMS-Signatur noch im XML-Request enthalten.
+ec4105=XML-Dokument, das die zu prüfende Signatur enthält, kann nicht aufgelöst werden.
+ec4106=XML-Dokument, das die zu prüfende Signatur enthält, kann nicht geparst werden.
+ec4107=Am spezifizierten Ort innerhalb des XML-Dokuments befindet sich keine XML-Signatur.
+ec4108=Verschlüsseltes Datum kann nicht am spezifizierten Ort in das bestehende XML-Dokument eingefügt werden.
+ec4109=Bestehendes XML-Dokument ist notwendig, aber nicht vorhanden.
+ec4110=Bestehendes XML-Dokument kann nicht aufgelöst werden.
+ec4111=Bestehendes XML-Dokument kann nicht geparst werden.
+ec4112=Verschlüsselte Datenverschlüsselungsschlüssel können nicht am spezifizierten Ort in das bestehende XML-Dokument eingefügt werden.
+ec4113=Zu entschlüsselnde Daten sind weder in der CMS-Nachricht noch im XML-Request enthalten.
+ec4114=Zu entschlüsselndes XML-Dokument kann nicht aufgelöst werden.
+ec4115=Zu entschlüsselndes XML-Dokument kann nicht geparst werden.
+ec4116=Zumindest ein spezifiziertes Verschlüsselungselement kann nicht im zu entschlüsselnden XML-Dokument gefunden werden.
+ec4117=Kein Verschlüsselungselement für Binärantwort vorhanden.
+ec4118=Zu hashendes Datum kann nicht aufgelöst werden.
+ec4119=Datum, für das der Hashwert zu prüfen ist, kann nicht aufgelöst werden.
+ec4120=Gewählter Infoboxbezeichner bereits vergeben.
+ec4121=Infobox mit spezifiziertem Bezeichner existiert nicht.
+ec4122=Inhalt der ausgewählten Infobox kann nicht als XML dargestellt werden.
+ec4123=Assoziatives Array: Zum spezifizierten Schlüssel existiert kein Eintrag.
+ec4500=Die Sitzung ist abgelaufen.
+ec5000=Unklassifizierter Fehler in der Anzeigekomponente.
+ec5001=Anzeige von Daten des in der Befehlsanfrage angegebenen Mime-Types wird nicht unterstützt.
+ec5002=Zeichenkodierung der anzuzeigenden Daten ist fehlerhaft oder wird nicht unterstützt.
+ec5003=Anzuzeigende Daten enhalten nicht unterstützte Zeichen.
+ec5004=Standardanzeigeformat: HTML ist nicht spezifikationskonform.
+ec5005=Standardanzeigeformat: CSS ist nicht spezifikationskonform.
+ec5006=Standardanzeigeformat: Format eines eingebundenen Bildes ist nicht spezifikationskonform.
+ec5007=Standardanzeigeformat: Signatur über eingebundene Bilder fehlt oder ist nicht spezifikationskonform.
+ec6000=Unklassifizierter Abbruch durch den Bürger.
+ec6001=Abbruch durch den Bürger über die Benutzerschnittstelle.
+ec6002=Abbruch auf Grund mangelnder Rechte zur Befehlsausführung.
+
+# 3xxx
+#
+
+ec3000.unclassified=Unklassifizierter Fehler in der XML-Struktur der Befehlsanfrage. {0}
+ec3002.invalid=XML-Struktur der Befehlsanfrage entspricht nicht dem Schema des Security-Layers. {0}
+
+# 4xxx
+#
+
+ec4000.infobox.invalid=Die Infobox {0} enthält ungültige Daten.
+ec4000.idlink.transfomation.failed=Die komprimierte Personenbindung konnte mit dem Stylesheet {0} nicht transformiert werden.
+ec4002.infobox.unknown=Unbekannter Infoboxbezeichner {0}.
+ec4003.not.resolved=Zu signierendes Datum kann nicht aufgelöst werden (URI={0}).
+ec4011.notimplemented=Befehl {0} ist nicht implementiert.
+
+# Legacy error messages
+#
+
+lec2901.notimplemented=Die in der Anfrage verwendete Version des Security-Layer Protokolls ({0}) wird nicht mehr unterstützt.
+
diff --git a/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slexceptions/SLExceptionMessages_en.properties b/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slexceptions/SLExceptionMessages_en.properties
new file mode 100644
index 00000000..a8bffdc6
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/main/resources/at/gv/egiz/bku/slexceptions/SLExceptionMessages_en.properties
@@ -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.
+
+test.noerror=This is a test error-message. No error occurred.
+
+ec1000=Unclassified error.
+ec2000=Unclassified error in the transport binding.
+ec2001=HTTP/HTTPS binding: DataURL cannot be resolved.
+ec2002=HTTP/HTTPS binding: StylesheetURL cannot be resolved.
+ec2003=HTTP/HTTPS binding: RedirectURL cannot be resolved.
+ec2004=HTTP/HTTPS binding: XMLRequest parameter missing.
+ec2005=HTTP/HTTPS binding: Unknown parameter encoding.
+ec2006=HTTP/HTTPS binding: Incorrect parameter encoding.
+ec2007=HTTP/HTTPS binding: DataURL server transmits error or unexpected response.
+ec2008=HTTP/HTTPS binding: Error in stylesheet obtained from the StylesheetURL.
+ec2009=HTTP/HTTPS binding: HTTP request to local CCE directed to unauthorised URL.
+ec2010=HTTPS binding: Error while establishing the TLS connection.
+ec3000=Unclassified error in the XML structure of the command request.
+ec3001=XML structure of the command request is not well formed.
+ec3002=XML structure of the command request does not comply with the Security Layer schema.
+ec3003=XML structure of the command request contains an invalid combination of optional elements or attributes.
+ec3004=XML structure contains an element or attribute whose syntax does not match the Security Layer specification.
+ec3005=Protocol version of Security Layer not supported.
+ec4000=Unclassified error while processing command.
+ec4001=Unknown key box identifier.
+ec4002=Unknown info box identifier.
+ec4003=Date to be signed cannot be resolved.
+ec4004=Supplementary object cannot be resolved.
+ec4005=Date to be encrypted cannot be resolved.
+ec4006=Algorithm (signature, encryption, digest, canonicalisation, transformation) not supported.
+ec4007=Error while executing algorithm (signature, encryption, digest, canonicalisation, transformation).
+ec4008=Error while parsing CMS message
+ec4009=No matching decryption key.
+ec4010=Info box command parameters do not match info box type.
+ec4011=Command not implemented.
+ec4100=XML document in which the signature is to be integrated cannot be resolved.
+ec4101=XML document in which the signature is to be integrated cannot be parsed.
+ec4102=Signature cannot be integrated in the existing XML document at the specified location.
+ec4103=Signature certificate not contained in the CMS signature.
+ec4104=Signed data not contained in the CMS signature or XML request.
+ec4105=XML document containing the signature to be verified cannot be resolved.
+ec4106=XML document containing the signature to be verified cannot be parsed.
+ec4107=There is no XML signature at the specified location within the XML document.
+ec4108=Encrypted date cannot be inserted in the existing XML document at the specified location.
+ec4109=Existing XML document is required but missing.
+ec4110=Existing XML document cannot be resolved.
+ec4111=Existing XML document cannot be parsed.
+ec4112=Encrypted data encryption keys cannot be inserted in the existing XML document at the specified location.
+ec4113=Data to be decrypted not contained in either the CMS message or XML request.
+ec4114=XML document to be decrypted cannot be resolved.
+ec4115=XML document to be decrypted cannot be parsed.
+ec4116=At least one specified encryption element cannot be found in the XML document to be decrypted.
+ec4117=No encryption element for binary response.
+ec4118=Date to be hashed cannot be resolved.
+ec4119=Date for which the hash value is to be verified cannot be resolved.
+ec4120=Selected info box identifier already allocated.
+ec4121=Info box with specified identifier does not exist.
+ec4122=Contents of the selected info box cannot be displayed as XML.
+ec4123=Associative array: No entry for the specified key.
+ec4500=The session expired.
+ec5000=Unclassified error in the viewer component.
+ec5001=Display of data of the mime type specified in the command request not supported.
+ec5002=Character encoding of the data to be displayed is invalid or not supported.
+ec5003=Data to be displayed contains unsupported characters.
+ec5004=Standard display format: HTML does not conform to specification.
+ec5005=Standard display format: CSS does not conform to specification.
+ec5006=Standard display format: Format of an embedded image does not conform to specification.
+ec5007=Standard display format: Signature for embedded images missing or does not conform to specification.
+ec6000=Unclassified cancelling by the citizen.
+ec6001=Cancelled by the citizen via the user interface.
+ec6002=Cancelled because of insufficient rights to execute command.
+
+# 3xxx
+#
+
+ec3000.unclassified=Error in the XML structure of the command request. {0}
+ec3002.invalid=XML structure of the command request does not comply with the Security Layer schema. {0}
+
+# 4xxx
+#
+
+ec4000.infobox.invalid=The infobox {0} contains invalid content.
+ec4000.idlink.transfomation.failed=Failed to transform CompressedIdentityLink with Stylesheet {0}.
+ec4002.infobox.unknown=Unknown info box identifier {0}.
+ec4003.not.resolved=Data to be signed cannot be resolved from URI={0}.
+ec4011.notimplemented=Command {0} not implemented.
+
+# Legacy error codes
+#
+lec2901.notimplemented=The version ({0}) of the security-layer protocol used in the request is not supported.
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/accesscontroller/AuthenticationClassifierTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/accesscontroller/AuthenticationClassifierTest.java
new file mode 100644
index 00000000..c339704e
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/accesscontroller/AuthenticationClassifierTest.java
@@ -0,0 +1,28 @@
+package at.gv.egiz.bku.accesscontroller;
+
+import static org.junit.Assert.assertTrue;
+
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class AuthenticationClassifierTest {
+
+ private X509Certificate atrust;
+
+ @Before
+ public void setUp() throws Exception {
+ atrust = (X509Certificate) CertificateFactory.getInstance("X509")
+ .generateCertificate(
+ getClass().getClassLoader().getResourceAsStream(
+ "at/gv/egiz/bku/accesscontroller/www.a-trust.at.crt"));
+ }
+
+ @Test
+ public void testATrust() {
+ assertTrue(AuthenticationClassifier.isGovAgency(atrust));
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/accesscontroller/ConfigTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/accesscontroller/ConfigTest.java
new file mode 100644
index 00000000..bce3cdd9
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/accesscontroller/ConfigTest.java
@@ -0,0 +1,104 @@
+package at.gv.egiz.bku.accesscontroller;
+
+import javax.xml.bind.JAXBException;
+
+import org.junit.Test;
+
+import at.gv.egiz.bku.slcommands.InfoboxReadCommand;
+import at.gv.egiz.bku.slcommands.SLCommandContext;
+import at.gv.egiz.bku.slcommands.SLResult;
+import at.gv.egiz.bku.slcommands.impl.InfoboxReadCommandImpl;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.bku.slexceptions.SLException;
+import static org.junit.Assert.*;
+
+public class ConfigTest {
+
+ public final static String RESOURCE1 = "at/gv/egiz/bku/accesscontroller/AccessControlConfig.xml";
+ public final static String RESOURCE2 = "at/gv/egiz/bku/accesscontroller/SimpleChainTest.xml";
+
+ static class MyInfoBox implements InfoboxReadCommand {
+ private String domainId;
+ private String boxId;
+ private String name;
+
+ public MyInfoBox(String identifier, String domainId) {
+ this.boxId = identifier;
+ this.domainId = domainId;
+ }
+
+ @Override
+ public String getIdentityLinkDomainId() {
+ return domainId;
+ }
+
+ @Override
+ public String getInfoboxIdentifier() {
+ return boxId;
+ }
+
+ @Override
+ public SLResult execute() {
+ return null;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String getName() {
+ return "InfoboxReadRequest";
+ }
+
+ @Override
+ public void init(SLCommandContext ctx, Object unmarshalledRequest)
+ throws SLCommandException {
+ }
+ }
+
+ @Test
+ public void testUnmarshall() throws JAXBException {
+ AccessControllerFactory.getInstance().init(
+ getClass().getClassLoader().getResourceAsStream(RESOURCE1));
+ }
+
+ @Test
+ public void testBasicFunction() throws JAXBException, SLException {
+ AccessControllerFactory.getInstance().init(
+ getClass().getClassLoader().getResourceAsStream(RESOURCE2));
+ ChainChecker cc = AccessControllerFactory.getInstance().getChainChecker(
+ "InputFilter");
+ assertNotNull(cc);
+
+ AccessCheckerContext ctx = new AccessCheckerContext(null,
+ AuthenticationClass.ANONYMOUS, null);
+ ChainResult cr = cc.check(ctx);
+ assertFalse(cr.matchFound());
+
+ ctx = new AccessCheckerContext(new MyInfoBox("IdentityLink", "hansi"),
+ AuthenticationClass.CERTIFIED, null);
+ cr = cc.check(ctx);
+ assertTrue(cr.matchFound());
+
+ ctx = new AccessCheckerContext(new MyInfoBox("Something", "hansi"),
+ AuthenticationClass.CERTIFIED, null);
+ cr = cc.check(ctx);
+ assertFalse(cr.matchFound());
+
+ MyInfoBox mib = new MyInfoBox("IdentityLink", "seppl");
+ mib.setName("ReadInfoboxSchickSchnack");
+ ctx = new AccessCheckerContext(mib, AuthenticationClass.CERTIFIED, null);
+ cr = cc.check(ctx);
+ assertTrue(cr.matchFound());
+ assertTrue(cr.getAction()==Action.ALLOW);
+
+ mib = new MyInfoBox("IdentityLink", null);
+ mib.setName("ReadInfoboxSchickSchnack");
+ ctx = new AccessCheckerContext(mib, AuthenticationClass.CERTIFIED, null);
+ cr = cc.check(ctx);
+ assertTrue(cr.matchFound());
+ assertTrue(cr.getAction()==Action.DENY);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/accesscontroller/RuleCheckerTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/accesscontroller/RuleCheckerTest.java
new file mode 100644
index 00000000..88f1490c
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/accesscontroller/RuleCheckerTest.java
@@ -0,0 +1,87 @@
+package at.gv.egiz.bku.accesscontroller;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import at.gv.egiz.bku.accesscontroller.RuleChecker.PEER_TYPE;
+import at.gv.egiz.bku.slcommands.impl.InfoboxReadCommandImpl;
+import at.gv.egiz.bku.slcommands.impl.NullOperationCommandImpl;
+import static org.junit.Assert.*;
+
+public class RuleCheckerTest {
+
+ protected RuleChecker onlyAuthChecker;
+ protected RuleChecker onlyCmdChecker;
+ protected RuleChecker onlyPeerChecker;
+
+ @Before
+ public void setUp() {
+ onlyAuthChecker = new RuleChecker("OnlyAuthChecker");
+ onlyAuthChecker.setAction("allow");
+ onlyAuthChecker.setUserAction("none");
+ onlyAuthChecker.setAuthenticationClass("pseudoanonymous");
+ onlyCmdChecker = new RuleChecker("OnlyCmdChecker");
+ onlyCmdChecker.setAction("allow");
+ onlyCmdChecker.setCommandName("InfoboxReadRequest");
+ onlyPeerChecker = new RuleChecker("OnlyPeerChecker");
+ onlyPeerChecker.setAction("allow");
+ onlyPeerChecker.setPeerId("https://129.27.142..*", PEER_TYPE.URL);
+ }
+
+ @Test
+ public void testAuthClass() {
+ AccessCheckerContext ctx = new AccessCheckerContext(null,
+ AuthenticationClass.ANONYMOUS, null);
+ RuleResult rr = onlyAuthChecker.check(ctx);
+ assertFalse(rr.matchFound());
+ ctx = new AccessCheckerContext(null, AuthenticationClass.PSEUDO_ANONYMOUS,
+ null);
+ rr = onlyAuthChecker.check(ctx);
+ assertTrue(rr.matchFound());
+ ctx = new AccessCheckerContext(null, AuthenticationClass.CERTIFIED, null);
+ rr = onlyAuthChecker.check(ctx);
+ assertTrue(rr.matchFound());
+ }
+
+ @Test
+ public void testCmd() {
+ AccessCheckerContext ctx = new AccessCheckerContext(
+ new InfoboxReadCommandImpl(), null, null);
+ RuleResult rr = onlyCmdChecker.check(ctx);
+ assertTrue(rr.matchFound());
+ onlyCmdChecker.setCommandName("Info.*");
+ rr = onlyCmdChecker.check(ctx);
+ assertTrue(rr.matchFound());
+ ctx = new AccessCheckerContext(new NullOperationCommandImpl(), null, null);
+ rr = onlyCmdChecker.check(ctx);
+ assertFalse(rr.matchFound());
+ onlyCmdChecker.setCommandName(".*");
+ rr = onlyCmdChecker.check(ctx);
+ assertTrue(rr.matchFound());
+ }
+
+ @Test
+ public void testPeerId() {
+ AccessCheckerContext ctx = new AccessCheckerContext(null, null,
+ "https://129.27.142.20:80/index.html");
+ RuleResult rr = onlyPeerChecker.check(ctx);
+ assertTrue(rr.matchFound());
+
+ ctx = new AccessCheckerContext(null, null,
+ "https://129.27.14.20:80/index.html");
+ rr = onlyPeerChecker.check(ctx);
+ assertFalse(rr.matchFound());
+
+ onlyPeerChecker.setPeerId(".*.iaik..*", PEER_TYPE.HOST);
+ ctx = new AccessCheckerContext(null, null,
+ "https://129.27.142.20:80/index.html");
+ rr = onlyPeerChecker.check(ctx);
+ assertTrue(rr.matchFound());
+
+ onlyPeerChecker.setPeerId("129.27.142..*", PEER_TYPE.IP);
+ ctx = new AccessCheckerContext(null, null, "https://www.iaik.tugraz.at:80/");
+ rr = onlyPeerChecker.check(ctx);
+ assertTrue(rr.matchFound());
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/BindingProcessorManagerTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/BindingProcessorManagerTest.java
new file mode 100644
index 00000000..22a7aa3b
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/BindingProcessorManagerTest.java
@@ -0,0 +1,51 @@
+/*
+* 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.binding;
+
+import at.gv.egiz.bku.conf.Configuration;
+import at.gv.egiz.bku.conf.DummyConfiguration;
+import static org.junit.Assert.*;
+
+import java.net.MalformedURLException;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class BindingProcessorManagerTest {
+
+ @Before
+ public void setUp() {
+ IdFactory.getInstance().setNumberOfBits(24*10);
+ }
+
+
+ @Test(expected = MalformedURLException.class)
+ public void basicCreationTest() throws MalformedURLException {
+ //TODO for the moment empty config sufficient (currently only maxDataURLHops configured)
+ BindingProcessorManager manager = new BindingProcessorManagerImpl(new DummyStalFactory(), new SLCommandInvokerImpl(), new DummyConfiguration());
+ BindingProcessor bp = manager.createBindingProcessor("http://www.at/", null);
+ assertNotNull(bp.getId().toString());
+ assertEquals(40, bp.getId().toString().length());
+ String hansi = "Hansi";
+ bp = manager.createBindingProcessor("http://www.iaik.at",hansi);
+ assertEquals(hansi, bp.getId().toString());
+ bp = manager.createBindingProcessor("HtTp://www.iaik.at", null);
+ assertNotNull(bp);
+ manager.createBindingProcessor("seppl", null);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/DataUrlConnectionTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/DataUrlConnectionTest.java
new file mode 100644
index 00000000..6e48e6fa
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/DataUrlConnectionTest.java
@@ -0,0 +1,178 @@
+/*
+* 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.binding;
+
+import at.gv.egiz.bku.conf.Configuration;
+import at.gv.egiz.bku.conf.DummyConfiguration;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.net.InetSocketAddress;
+import java.net.URL;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import com.sun.net.httpserver.Headers;
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.net.httpserver.HttpHandler;
+import com.sun.net.httpserver.HttpServer;
+
+/**
+ *
+ * @author clemens
+ */
+public class DataUrlConnectionTest {
+
+ public static final String REQUEST_RESOURCE = "at/gv/egiz/bku/binding/NOPMultipartDataUrl.txt";
+
+ private static final Log log = LogFactory.getLog(DataUrlConnectionTest.class);
+
+ static HttpServer server;
+ static BindingProcessor bindingProcessor;
+ static BindingProcessorManager manager;
+
+ protected InputStream requestStream;
+
+ @BeforeClass
+ public static void setUpHTTPServer() throws IOException {
+ log.debug("setting up HTTPServer");
+ InetSocketAddress addr = new InetSocketAddress("localhost", 8081);
+ server = HttpServer.create(addr, 0);
+ server.createContext("/", new DataUrlHandler());
+ server.start();
+
+ log.debug("setting up HTTPBindingProcessor");
+ manager = new BindingProcessorManagerImpl(new DummyStalFactory(),
+ new SLCommandInvokerImpl(), new DummyConfiguration());
+ bindingProcessor = (HTTPBindingProcessor) manager.createBindingProcessor(
+ "http://www.iaik.at", null);
+ Map<String, String> headers = new HashMap<String, String>();
+ headers.put("Content-Type", InputDecoderFactory.MULTIPART_FORMDATA
+ + ";boundary=---------------------------2330864292941");
+ ((HTTPBindingProcessor) bindingProcessor).setHTTPHeaders(headers);
+ }
+
+ @Before
+ public void setUp() {
+ requestStream = getClass().getClassLoader().getResourceAsStream(
+ REQUEST_RESOURCE);
+ }
+
+ @AfterClass
+ public static void stopServer() {
+ if (server != null) {
+ log.debug("stopping HTTPServer");
+ server.stop(0);
+ }
+ }
+
+ @Test
+ public void testBasicNop() {
+ bindingProcessor.consumeRequestStream(requestStream);
+ // manager.process(bindingProcessor);
+ bindingProcessor.run();
+ }
+
+// @Test
+ public void openConnectionTest() throws Exception {
+
+ URL dataUrl = new URL("http://localhost:8081/");
+
+ log.debug("creating DataUrlConnection " + dataUrl.toString());
+ DataUrlConnectionImpl c = new DataUrlConnectionImpl();
+ c.init(dataUrl);
+
+ c.setHTTPHeader("httpHeader_1", "001");
+ ByteArrayInputStream bais = new ByteArrayInputStream("Hello, world!"
+ .getBytes());
+ c.setHTTPFormParameter("formParam_1", bais, "text/plain", "UTF-8", null);
+
+ log.debug("open dataUrl connection");
+ c.connect();
+ //TODO mock SLResult and c.transmit(result);
+ }
+
+ static class DataUrlHandler implements HttpHandler {
+
+ public DataUrlHandler() {
+ log.debug("setting up DataUrlHandler");
+ }
+
+ @Override
+ public void handle(HttpExchange exchange) throws IOException {
+ log.debug("handling incoming request");
+ logHTTPHeaders(exchange.getRequestHeaders());
+ logRequest(exchange.getRequestBody());
+
+ log.debug("sending dummy response");
+ exchange.getResponseHeaders().add("Content-type", "text/html");
+ String response = "<b>" + new Date() + "</b> for "
+ + exchange.getRequestURI();
+ exchange.sendResponseHeaders(200, response.length());
+
+ OutputStream os = exchange.getResponseBody();
+ os.write(response.getBytes());
+ os.close();
+ }
+
+ private void logRequest(InputStream in) throws IOException {
+ StringBuilder reqLogMsg = new StringBuilder("HTTP request: \n");
+ int c = 0;
+ while ((c = in.read()) != -1) {
+ reqLogMsg.append((char) c);
+ }
+ log.debug(reqLogMsg.toString());
+ in.close();
+ }
+
+ private void logHTTPHeaders(Headers headers) {
+ StringBuilder headersLogMsg = new StringBuilder("HTTP headers: \n");
+ Set<String> keys = headers.keySet();
+ Iterator<String> keysIt = keys.iterator();
+ while (keysIt.hasNext()) {
+ String key = keysIt.next();
+ List<String> values = headers.get(key);
+ Iterator<String> valuesIt = values.iterator();
+ headersLogMsg.append(' ');
+ headersLogMsg.append(key);
+ headersLogMsg.append(": ");
+ while (valuesIt.hasNext()) {
+ headersLogMsg.append(valuesIt.next());
+ headersLogMsg.append(' ');
+ }
+ headersLogMsg.append('\n');
+ }
+ log.debug(headersLogMsg.toString());
+ }
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/DummyStalFactory.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/DummyStalFactory.java
new file mode 100644
index 00000000..f832f364
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/DummyStalFactory.java
@@ -0,0 +1,38 @@
+/*
+* 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.binding;
+
+import java.util.Locale;
+
+import at.gv.egiz.stal.STAL;
+import at.gv.egiz.stal.STALFactory;
+
+public class DummyStalFactory implements STALFactory {
+
+ @Override
+ public STAL createSTAL() {
+ // TODO Auto-generated method stub
+ return new at.gv.egiz.stal.dummy.DummySTAL();
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ // TODO Auto-generated method stub
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/EmptyMultipartSLRequestTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/EmptyMultipartSLRequestTest.java
new file mode 100644
index 00000000..ee17f5e9
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/EmptyMultipartSLRequestTest.java
@@ -0,0 +1,98 @@
+/*
+ * 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.binding;
+
+import at.gv.egiz.bku.conf.Configuration;
+import iaik.security.ecc.provider.ECCProvider;
+import iaik.security.provider.IAIK;
+import iaik.xml.crypto.XSecProvider;
+
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.security.Provider;
+import java.security.Security;
+import java.security.Provider.Service;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Before;
+import org.junit.Test;
+
+import at.gv.egiz.bku.conf.Configurator;
+import at.gv.egiz.bku.conf.DummyConfiguration;
+import at.gv.egiz.bku.slcommands.SLCommandFactory;
+import at.gv.egiz.bku.slcommands.impl.xsect.STALProvider;
+
+public class EmptyMultipartSLRequestTest {
+
+ private static Log log = LogFactory.getLog(EmptyMultipartSLRequestTest.class);
+
+ protected String resourceName = "at/gv/egiz/bku/binding/MultipartEmpty.txt";
+
+ protected BindingProcessor bindingProcessor;
+ protected InputStream dataStream;
+ protected BindingProcessorManager manager;
+
+ @Before
+ public void setUp() throws MalformedURLException, ClassNotFoundException {
+ manager = new BindingProcessorManagerImpl(new DummyStalFactory(),
+ new SLCommandInvokerImpl(), new DummyConfiguration());
+ HTTPBindingProcessor http = (HTTPBindingProcessor) manager
+ .createBindingProcessor("http://www.at/", null);
+ Map<String, String> headers = new HashMap<String, String>();
+ headers.put("Content-Type", InputDecoderFactory.MULTIPART_FORMDATA
+ + ";boundary=uW10q_I9UeqKyw-1o5EW4jtEAaGs7-mC6o");
+ http.setHTTPHeaders(headers);
+ dataStream = getClass().getClassLoader().getResourceAsStream(resourceName);
+ bindingProcessor = http;
+ Map<String, String> commandMap = new HashMap<String, String>();
+ commandMap
+ .put(
+ "http://www.buergerkarte.at/namespaces/securitylayer/1.2#:CreateXMLSignatureRequest",
+ "at.gv.egiz.bku.slcommands.impl.CreateXMLSignatureCommandImpl");
+ commandMap
+ .put(
+ "http://www.buergerkarte.at/namespaces/securitylayer/1.2#:InfoboxReadRequest",
+ "at.gv.egiz.bku.slcommands.impl.InfoboxReadCommandImpl");
+ SLCommandFactory.getInstance().setCommandImpl(commandMap);
+ Security.insertProviderAt(new IAIK(), 1);
+ Security.insertProviderAt(new ECCProvider(false), 2);
+ XSecProvider.addAsProvider(false);
+ // registering STALProvider as delegation provider for XSECT
+ STALProvider stalProvider = new STALProvider();
+ Security.addProvider(stalProvider);
+ Set<Service> services = stalProvider.getServices();
+ StringBuilder sb = new StringBuilder();
+ for (Service service : services) {
+ String algorithm = service.getType() + "." + service.getAlgorithm();
+ XSecProvider.setDelegationProvider(algorithm, stalProvider.getName());
+ sb.append("\n" + algorithm);
+ }
+ log.debug(sb);
+ }
+
+ @Test
+ public void testBasicNop() {
+ bindingProcessor.consumeRequestStream(dataStream);
+ // manager.process(bindingProcessor);
+ bindingProcessor.run();
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/ExpiryRemoverTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/ExpiryRemoverTest.java
new file mode 100644
index 00000000..faf08c54
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/ExpiryRemoverTest.java
@@ -0,0 +1,70 @@
+/*
+* 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.binding;
+
+import at.gv.egiz.bku.conf.Configuration;
+import at.gv.egiz.bku.conf.DummyConfiguration;
+import java.net.MalformedURLException;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ExpiryRemoverTest {
+
+ @Test
+ public void testMe() throws InterruptedException, MalformedURLException {
+ //TODO for the moment empty config sufficient (currently only maxDataURLHops configured)
+ BindingProcessorManager manager = new BindingProcessorManagerImpl(new DummyStalFactory(),
+ new SLCommandInvokerImpl(), new DummyConfiguration());
+ BindingProcessor bp = manager.createBindingProcessor("http://www.at", null);
+ ExpiryRemover remover = new ExpiryRemover();
+ remover.setBindingProcessorManager(manager);
+ remover.execute();
+ manager.process(bp);
+ remover.execute();
+ assertTrue(manager.getManagedIds().size() == 1);
+ remover.setMaxAcceptedAge(1000);
+ Thread.sleep(100);
+ remover.execute();
+ assertTrue(manager.getManagedIds().size() == 1);
+ Thread.sleep(910);
+ remover.execute();
+ assertTrue(manager.getManagedIds().size() == 0);
+ }
+
+ @Test
+ public void testMe2() throws InterruptedException, MalformedURLException {
+ BindingProcessorManager manager = new BindingProcessorManagerImpl(new DummyStalFactory(),
+ new SLCommandInvokerImpl(), new DummyConfiguration());
+ BindingProcessor bp = manager.createBindingProcessor("http://www.iaik.at", null);
+ ExpiryRemover remover = new ExpiryRemover();
+ remover.setBindingProcessorManager(manager);
+ remover.execute();
+ manager.process(bp);
+ remover.execute();
+ assertTrue(manager.getManagedIds().size() == 1);
+ remover.setMaxAcceptedAge(1000);
+ Thread.sleep(500);
+ remover.execute();
+ assertTrue(manager.getManagedIds().size() == 1);
+ bp.updateLastAccessTime();
+ Thread.sleep(510);
+ remover.execute();
+ assertTrue(manager.getManagedIds().size() == 1);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/HttpBindingProcessorTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/HttpBindingProcessorTest.java
new file mode 100644
index 00000000..d03e1807
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/HttpBindingProcessorTest.java
@@ -0,0 +1,328 @@
+/*
+* 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.binding;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+import at.gv.egiz.bku.binding.MultiTestDataUrlConnection.DataSourceProvider;
+import at.gv.egiz.bku.conf.Configuration;
+import at.gv.egiz.bku.conf.DummyConfiguration;
+import at.gv.egiz.bku.utils.StreamUtil;
+
+public class HttpBindingProcessorTest {
+
+ public static class TestDataSource implements DataSourceProvider {
+
+ private List<Integer> responseCodes = new ArrayList<Integer>();
+ private List<String> content = new ArrayList<String>();
+ private List<Map<String, String>> responseHeaders = new ArrayList<Map<String, String>>();
+ private int counter = -1;
+
+ public void resetCounter() {
+ counter = -1;
+ }
+
+ public void addResponse(int responseCode, String content,
+ Map<String, String> headerMap) {
+ responseCodes.add(new Integer(responseCode));
+ this.content.add(content);
+ this.responseHeaders.add(headerMap);
+ }
+
+ @Override
+ public int getResponseCode() {
+ return responseCodes.get(counter);
+ }
+
+ @Override
+ public String getResponseContent() {
+ return content.get(counter);
+ }
+
+ @Override
+ public Map<String, String> getResponseHeaders() {
+ return responseHeaders.get(counter);
+ }
+
+ @Override
+ public void nextEvent() {
+ if (++counter >= responseCodes.size()) {
+ counter = 0;
+ }
+ }
+ }
+
+ protected BindingProcessorManager manager;
+ protected HTTPBindingProcessor bindingProcessor;
+ protected Map<String, String> serverHeaderMap;
+ protected Map<String, String> clientHeaderMap;
+ protected TestDataUrlConnection server;
+
+ protected static ApplicationContext appCtx;
+
+ @BeforeClass
+ public static void setUpClass() {
+ appCtx = new ClassPathXmlApplicationContext("at/gv/egiz/bku/slcommands/testApplicationContext.xml");
+ }
+
+
+ @Before
+ public void setUp() throws IOException {
+ server = new TestDataUrlConnection();
+ DataUrl.setDataUrlConnectionImpl(server);
+ serverHeaderMap = new HashMap<String, String>();
+ serverHeaderMap.put("Content-Type", HttpUtil.TXT_XML);
+ server.setResponseCode(200);
+ server.setResponseContent("<ok/>");
+ server.setResponseHeaders(serverHeaderMap);
+ manager = new BindingProcessorManagerImpl(new DummyStalFactory(),
+ new SLCommandInvokerImpl(), new DummyConfiguration());
+ bindingProcessor = (HTTPBindingProcessor) manager.createBindingProcessor(
+ "http://www.iaik.at", null);
+ clientHeaderMap = new HashMap<String, String>();
+ clientHeaderMap.put("Content-Type",
+ "application/x-www-form-urlencoded;charset=utf8");
+ bindingProcessor.setHTTPHeaders(clientHeaderMap);
+ }
+
+ protected String resultAsString(String encoding) throws IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ bindingProcessor.writeResultTo(baos, encoding);
+ return new String(baos.toByteArray(), encoding);
+ }
+
+ @Test
+ public void testWithoutDataUrlWithoutStylesheet() throws IOException {
+ RequestFactory rf = new RequestFactory();
+ rf.addForm("Haßnsi", "Wüurzel");
+ bindingProcessor.consumeRequestStream(rf.getURLencoded());
+ bindingProcessor.run();
+ assertEquals(HttpUtil.TXT_XML, bindingProcessor.getResultContentType());
+ assertTrue(resultAsString("UTF-8").indexOf("NullOperationResponse") != -1);
+ assertEquals(200, bindingProcessor.getResponseCode());
+ assertEquals(0, bindingProcessor.getResponseHeaders().size());
+ }
+
+ @Test
+ public void testWithoutDataUrlWithStylesheet() throws IOException {
+ RequestFactory rf = new RequestFactory();
+ rf.addForm("Hansi", "Wurzel");
+ rf.addFormAsResource("Styleshit", "at/gv/egiz/bku/binding/stylesheet.xslt");
+ rf.addForm(RequestFactory.STYLESHEETURL, "formdata:Styleshit");
+ bindingProcessor.consumeRequestStream(rf.getURLencoded());
+ bindingProcessor.run();
+ assertEquals(HttpUtil.TXT_HTML, bindingProcessor.getResultContentType());
+ assertTrue(resultAsString("UTF-8").indexOf("NullKommaJosef") != -1);
+ assertEquals(200, bindingProcessor.getResponseCode());
+ assertEquals(0, bindingProcessor.getResponseHeaders().size());
+ }
+
+ @Test
+ public void testWithDataUrl301WithStylesheet() throws IOException {
+ RequestFactory rf = new RequestFactory();
+ rf.addForm(RequestFactory.DATAURL, "http://localhost:8080");
+ bindingProcessor.consumeRequestStream(rf.getURLencoded());
+ server.setResponseCode(301);
+ rf = new RequestFactory();
+ rf.addFormAsResource("Styleshit", "at/gv/egiz/bku/binding/stylesheet.xslt");
+ rf.addForm(RequestFactory.STYLESHEETURL, "formdata:Styleshit");
+ server.setResponseContent(rf.getURLencodedAsString());
+ bindingProcessor.run();
+ assertEquals(HttpUtil.TXT_XML, bindingProcessor.getResultContentType());
+ assertTrue(resultAsString("UTF-8").indexOf("NullOperationRequest") != -1);
+ assertEquals(301, bindingProcessor.getResponseCode());
+ assertTrue(bindingProcessor.getResponseHeaders().size() > 0);
+ }
+
+ @Test
+ public void testWithDataUrl302WithStylesheet() throws IOException {
+ RequestFactory rf = new RequestFactory();
+ rf.addForm(RequestFactory.DATAURL, "http://localhost:8080");
+ bindingProcessor.consumeRequestStream(rf.getURLencoded());
+ server.setResponseCode(302);
+ rf = new RequestFactory();
+ rf.addFormAsResource("Styleshit", "at/gv/egiz/bku/binding/stylesheet.xslt");
+ rf.addForm(RequestFactory.STYLESHEETURL, "formdata:Styleshit");
+ server.setResponseContent(rf.getURLencodedAsString());
+ bindingProcessor.run();
+ assertEquals(HttpUtil.TXT_XML, bindingProcessor.getResultContentType());
+ assertTrue(resultAsString("UTF-8").indexOf("NullOperationRequest") != -1);
+ assertEquals(302, bindingProcessor.getResponseCode());
+ assertTrue(bindingProcessor.getResponseHeaders().size() > 0);
+ }
+
+ @Test
+ public void testWithDataUrl303WithStylesheet() throws IOException {
+ RequestFactory rf = new RequestFactory();
+ rf.addForm(RequestFactory.DATAURL, "http://localhost:8080");
+ bindingProcessor.consumeRequestStream(rf.getURLencoded());
+ server.setResponseCode(303);
+ rf = new RequestFactory();
+ rf.addFormAsResource("Styleshit", "at/gv/egiz/bku/binding/stylesheet.xslt");
+ rf.addForm(RequestFactory.STYLESHEETURL, "formdata:Styleshit");
+ server.setResponseContent(rf.getURLencodedAsString());
+ bindingProcessor.run();
+ assertEquals(HttpUtil.TXT_XML, bindingProcessor.getResultContentType());
+ assertTrue(resultAsString("UTF-8").indexOf("NullOperationRequest") != -1);
+ assertEquals(303, bindingProcessor.getResponseCode());
+ assertTrue(bindingProcessor.getResponseHeaders().size() > 0);
+ }
+
+ @Test
+ public void testWithDataUrl306WithStylesheet() throws IOException {
+ RequestFactory rf = new RequestFactory();
+ rf.addForm(RequestFactory.DATAURL, "http://localhost:8080");
+ bindingProcessor.consumeRequestStream(rf.getURLencoded());
+ server.setResponseCode(306);
+ rf = new RequestFactory();
+ rf.addFormAsResource("Styleshit", "at/gv/egiz/bku/binding/stylesheet.xslt");
+ rf.addForm(RequestFactory.STYLESHEETURL, "formdata:Styleshit");
+ server.setResponseContent(rf.getURLencodedAsString());
+ bindingProcessor.run();
+ assertEquals(HttpUtil.TXT_XML, bindingProcessor.getResultContentType());
+ assertTrue(resultAsString("UTF-8").indexOf("ErrorResponse") != -1);
+ assertEquals(200, bindingProcessor.getResponseCode());
+ assertTrue(bindingProcessor.getResponseHeaders().size() == 0);
+ }
+
+ @Test
+ public void testWithDataUrl307NonXML() throws IOException {
+ RequestFactory rf = new RequestFactory();
+ rf.addForm(RequestFactory.DATAURL, "http://localhost:8080");
+ bindingProcessor.consumeRequestStream(rf.getURLencoded());
+ server.setResponseCode(307);
+ serverHeaderMap.put("Content-Type", HttpUtil.TXT_PLAIN);
+ server.setResponseHeaders(serverHeaderMap);
+ rf = new RequestFactory();
+ rf.addFormAsResource("Styleshit", "at/gv/egiz/bku/binding/stylesheet.xslt");
+ rf.addForm(RequestFactory.STYLESHEETURL, "formdata:Styleshit");
+ server.setResponseContent(rf.getURLencodedAsString());
+ bindingProcessor.run();
+ assertEquals(HttpUtil.TXT_PLAIN, bindingProcessor.getResultContentType());
+ assertTrue(resultAsString("UTF-8").indexOf("NullOperationRequest") != -1);
+ assertEquals(307, bindingProcessor.getResponseCode());
+ assertTrue(bindingProcessor.getResponseHeaders().size() > 0);
+ }
+
+ @Test
+ public void testWithInvalidDataUrl307XML() throws IOException {
+ RequestFactory rf = new RequestFactory();
+ rf.addForm(RequestFactory.DATAURL, "http://localhost:8080");
+ bindingProcessor.consumeRequestStream(rf.getURLencoded());
+ server.setResponseCode(307);
+ serverHeaderMap.put("Content-Type", HttpUtil.TXT_XML);
+ serverHeaderMap.put("Location", "noUrl");
+ server.setResponseHeaders(serverHeaderMap);
+ rf = new RequestFactory();
+ server.setResponseContent(rf.getNullOperationXML());
+ bindingProcessor.run();
+ assertEquals(HttpUtil.TXT_XML, bindingProcessor.getResultContentType());
+ assertTrue(resultAsString("UTF-8").indexOf("ErrorResponse") != -1);
+ assertEquals(200, bindingProcessor.getResponseCode());
+ assertTrue(bindingProcessor.getResponseHeaders().size() == 0);
+ }
+
+ @Test
+ public void testWithValidDataUrl307XML() throws IOException, InterruptedException {
+ server = new MultiTestDataUrlConnection();
+ DataUrl.setDataUrlConnectionImpl(server);
+ TestDataSource tds = new TestDataSource();
+ ((MultiTestDataUrlConnection)server).setDataSource(tds);
+
+ // first server response with 307 xml and location
+ RequestFactory rf = new RequestFactory();
+ serverHeaderMap = new HashMap<String, String>();
+ serverHeaderMap.put("Location", "http://localhost:8080");
+ serverHeaderMap.put("Content-Type", HttpUtil.TXT_XML);
+ tds.addResponse(307, rf.getNullOperationXML(), serverHeaderMap);
+
+ // 2nd response with 200 text/plain and != <ok/>
+ String testString = "CheckMe";
+ serverHeaderMap = new HashMap<String, String>();
+ serverHeaderMap.put("Content-Type", HttpUtil.TXT_PLAIN);
+ String testHeader ="DummyHeader";
+ String testHeaderVal ="DummyHeaderVal";
+ serverHeaderMap.put(testHeader, testHeaderVal);
+ tds.addResponse(200, testString, serverHeaderMap);
+
+ rf = new RequestFactory();
+ rf.addForm(RequestFactory.DATAURL, "http://localhost:8080");
+ bindingProcessor.consumeRequestStream(rf.getURLencoded());
+ bindingProcessor.run();
+
+ assertTrue(bindingProcessor.getResponseHeaders().size()>0);
+ assertEquals(testHeaderVal, bindingProcessor.getResponseHeaders().get(testHeader));
+ assertEquals(200,bindingProcessor.getResponseCode());
+ assertEquals(HttpUtil.TXT_PLAIN, bindingProcessor.getResultContentType());
+ assertEquals(testString ,resultAsString("UTF-8"));
+ }
+
+ @Test
+ public void testWithValidDataUrl200Urlencoded() throws IOException {
+ RequestFactory rf = new RequestFactory();
+ rf = new RequestFactory();
+ rf.addForm(RequestFactory.DATAURL, "http://localhost:8080");
+ bindingProcessor.consumeRequestStream(rf.getURLencoded());
+ server.setResponseCode(200);
+ rf = new RequestFactory();
+ rf.addFormAsResource("Styleshit", "at/gv/egiz/bku/binding/stylesheet.xslt");
+ serverHeaderMap.put("Content-Type", HttpUtil.APPLICATION_URL_ENCODED);
+ server.setResponseHeaders(serverHeaderMap);
+ server.setResponseContent(rf.getURLencodedAsString());
+ bindingProcessor.run();
+ assertTrue(bindingProcessor.getResponseHeaders().size()==0);
+ assertEquals(200,bindingProcessor.getResponseCode());
+ assertEquals(HttpUtil.TXT_XML, bindingProcessor.getResultContentType());
+ assertTrue(resultAsString("UTF-8").indexOf("NullOperationResponse") != -1);
+ }
+
+ @Test
+ public void testWithValidDataUrl200UrlencodedAndStylesheet() throws IOException {
+ RequestFactory rf = new RequestFactory();
+ rf = new RequestFactory();
+ rf.addForm(RequestFactory.DATAURL, "http://localhost:8080");
+ bindingProcessor.consumeRequestStream(rf.getURLencoded());
+ server.setResponseCode(200);
+ rf = new RequestFactory();
+ rf.addFormAsResource("Styleshit", "at/gv/egiz/bku/binding/stylesheet.xslt");
+ rf.addForm(RequestFactory.STYLESHEETURL, "formdata:Styleshit");
+ serverHeaderMap.put("Content-Type", HttpUtil.APPLICATION_URL_ENCODED);
+ server.setResponseHeaders(serverHeaderMap);
+ server.setResponseContent(rf.getURLencodedAsString());
+ bindingProcessor.run();
+ assertTrue(bindingProcessor.getResponseHeaders().size()==0);
+ assertEquals(200,bindingProcessor.getResponseCode());
+ assertEquals(HttpUtil.TXT_HTML, bindingProcessor.getResultContentType());
+ assertTrue(resultAsString("UTF-8").indexOf("NullKommaJosef") != -1);
+ }
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/IdFactoryTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/IdFactoryTest.java
new file mode 100644
index 00000000..cd75ec38
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/IdFactoryTest.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.binding;
+
+import static org.junit.Assert.*;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class IdFactoryTest {
+
+ @Before
+ public void setUp() {
+ IdFactory.getInstance().setNumberOfBits(168);
+
+ }
+
+ @Test
+ public void testWithString() {
+ String testString = "Hansi";
+ Id hansi = IdFactory.getInstance().createId(testString);
+ assertEquals(hansi.toString(), testString);
+ }
+
+ @Test(expected = NullPointerException.class)
+ public void testFactory() {
+ IdFactory.getInstance().setSecureRandom(null);
+ }
+
+ @Test
+ public void testRandom() {
+ IdFactory fab = IdFactory.getInstance();
+ Id id = fab.createId();
+ assertEquals(id.toString().length(), 28);
+ fab.setNumberOfBits(24);
+ id = fab.createId();
+ assertEquals(id.toString().length(), 4);
+ }
+
+ @Test
+ public void testEquals() {
+ String idString = "Hansi";
+ IdFactory fab = IdFactory.getInstance();
+ Id id1 = fab.createId(idString);
+ Id id2 = fab.createId(idString);
+ assertEquals(id1, id2);
+ assertEquals(id1.hashCode(), id2.hashCode());
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/InputDecoderFactoryTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/InputDecoderFactoryTest.java
new file mode 100644
index 00000000..7d79889d
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/InputDecoderFactoryTest.java
@@ -0,0 +1,96 @@
+/*
+* 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.binding;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Iterator;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import at.gv.egiz.bku.utils.StreamUtil;
+
+public class InputDecoderFactoryTest {
+
+ protected String resourceName = "at/gv/egiz/bku/binding/Multipart.txt.bin";
+ protected byte[] data;
+
+ @Before
+ public void setUp() throws IOException {
+ InputStream is = getClass().getClassLoader().getResourceAsStream(
+ resourceName);
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ byte[] buffer = new byte[1024];
+ int i;
+
+ while ((i = is.read(buffer)) != -1) {
+ bos.write(buffer, 0, i);
+ }
+ is.close();
+ data = bos.toByteArray();
+ }
+
+ @Test
+ public void testPrefix() {
+ InputDecoder dec = InputDecoderFactory.getDecoder(
+ "multipart/form-data; boundary=AaB03x", null);
+ assertTrue(dec instanceof MultiPartFormDataInputDecoder);
+ }
+
+ @Test
+ public void testMultipart() throws IOException {
+ InputDecoder dec = InputDecoderFactory
+ .getDecoder(
+ "multipart/form-data; boundary=---------------------------15671293698853",
+ new ByteArrayInputStream(data));
+ assertNotNull(dec);
+ for (Iterator<FormParameter> fpi = dec.getFormParameterIterator(); fpi
+ .hasNext();) {
+ FormParameter fp = fpi.next();
+ if (fp.getFormParameterName().equals("XMLRequest")) {
+ assertEquals("text/xml", fp.getFormParameterContentType());
+ return;
+ }
+ }
+ assertTrue(false);
+ }
+
+ @Test
+ public void testUrlEncoded() throws IOException {
+ InputDecoder dec = InputDecoderFactory.getDecoder(
+ "application/x-www-form-urlencoded", null);
+ assertTrue(dec instanceof XWWWFormUrlInputDecoder);
+ dec = InputDecoderFactory.getDecoder(
+ "application/x-WWW-form-urlencoded;charset=UTF-8",
+ new ByteArrayInputStream(
+ "your_name=hansi+wurzel&userid=123&form_name=wasinet".getBytes()));
+ assertTrue(dec instanceof XWWWFormUrlInputDecoder);
+ Iterator<FormParameter> fpi = dec.getFormParameterIterator();
+ FormParameter fp = fpi.next();
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ StreamUtil.copyStream(fp.getFormParameterValue(), os);
+ String value = new String(os.toByteArray(), "UTF-8");
+ assertEquals("hansi wurzel", value);
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/MultiTestDataUrlConnection.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/MultiTestDataUrlConnection.java
new file mode 100644
index 00000000..5d2a7544
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/MultiTestDataUrlConnection.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.binding;
+
+import java.io.IOException;
+import java.util.Map;
+
+public class MultiTestDataUrlConnection extends TestDataUrlConnection {
+
+ public static interface DataSourceProvider {
+ public Map<String, String> getResponseHeaders();
+ public String getResponseContent();
+ public int getResponseCode();
+ public void nextEvent();
+ }
+
+
+ protected DataSourceProvider dataSource;
+
+ public void setDataSource(DataSourceProvider dataSource) {
+ this.dataSource = dataSource;
+ }
+
+ public DataUrlResponse getResponse() throws IOException {
+ if (dataSource == null) {
+ return super.getResponse();
+ }
+ dataSource.nextEvent();
+ responseHeaders = dataSource.getResponseHeaders();
+ responseCode = dataSource.getResponseCode();
+ responseContent = dataSource.getResponseContent();
+ return super.getResponse();
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/MultipartSLRequestTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/MultipartSLRequestTest.java
new file mode 100644
index 00000000..1a9a6a70
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/MultipartSLRequestTest.java
@@ -0,0 +1,59 @@
+/*
+* 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.binding;
+
+import at.gv.egiz.bku.conf.DummyConfiguration;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class MultipartSLRequestTest {
+
+ protected String resourceName = "at/gv/egiz/bku/binding/MultipartFromTutorial.txt";
+
+ protected BindingProcessor bindingProcessor;
+ protected InputStream dataStream;
+ protected BindingProcessorManager manager;
+
+ @Before
+ public void setUp() throws MalformedURLException {
+ manager = new BindingProcessorManagerImpl(new DummyStalFactory(),
+ new SLCommandInvokerImpl(), new DummyConfiguration());
+ HTTPBindingProcessor http = (HTTPBindingProcessor) manager
+ .createBindingProcessor("http://www.at/", null);
+ Map<String, String> headers = new HashMap<String, String>();
+ headers.put("Content-Type", InputDecoderFactory.MULTIPART_FORMDATA
+ + ";boundary=---------------------------2330864292941");
+ http.setHTTPHeaders(headers);
+ dataStream = getClass().getClassLoader().getResourceAsStream(resourceName);
+ bindingProcessor = http;
+ }
+
+ @Test
+ public void testBasicNop() {
+ bindingProcessor.consumeRequestStream(dataStream);
+ // manager.process(bindingProcessor);
+ bindingProcessor.run();
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/NullOperationTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/NullOperationTest.java
new file mode 100644
index 00000000..58c82c49
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/NullOperationTest.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.binding;
+
+import at.gv.egiz.bku.conf.DummyConfiguration;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class NullOperationTest {
+
+ protected String resourceName = "at/gv/egiz/bku/binding/NulloperationRequest.txt.bin";
+
+ protected BindingProcessor bindingProcessor;
+ protected InputStream dataStream;
+ protected BindingProcessorManager manager;
+
+ @Before
+ public void setUp() throws MalformedURLException {
+ manager = new BindingProcessorManagerImpl(new DummyStalFactory(), new SLCommandInvokerImpl(), new DummyConfiguration());
+ HTTPBindingProcessor http = (HTTPBindingProcessor) manager.createBindingProcessor("http://www.at/", null);
+ Map<String, String> headers = new HashMap<String, String>();
+ headers.put("Content-Type", "application/x-www-form-urlencoded");
+ http.setHTTPHeaders(headers);
+ dataStream = getClass().getClassLoader().getResourceAsStream(resourceName);
+ bindingProcessor = http;
+ }
+
+ @Test
+ public void testBasicNop() {
+ bindingProcessor.consumeRequestStream(dataStream);
+ //manager.process(bindingProcessor);
+ bindingProcessor.run();
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/RequestFactory.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/RequestFactory.java
new file mode 100644
index 00000000..77157a41
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/RequestFactory.java
@@ -0,0 +1,116 @@
+/*
+* 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.binding;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URLEncoder;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+import at.gv.egiz.bku.utils.StreamUtil;
+
+public class RequestFactory implements FixedFormParameters {
+
+ protected String requestResourceName = "at/gv/egiz/bku/binding/Nulloperation.xml";
+
+ protected Map<String, String> formString = new HashMap<String, String>();
+ protected Map<String, String> formResources = new HashMap<String, String>();
+
+ public RequestFactory() {
+ formResources.put(XMLREQUEST, requestResourceName);
+ }
+
+ public void addForm(String formName, String content) {
+ formString.put(formName, content);
+ }
+
+ public void addFormAsResource(String formName, String resourceName) {
+ formResources.put(formName, resourceName);
+ }
+
+ public InputStream getURLencoded() throws IOException {
+ StringBuffer sb = new StringBuffer();
+ for (Iterator<String> si = formString.keySet().iterator(); si.hasNext();) {
+ String formName = si.next();
+ String formVal = formString.get(formName);
+ sb.append(URLEncoder.encode(formName, "UTF-8"));
+ sb.append("=");
+ sb.append(URLEncoder.encode(formVal, "UTF-8"));
+ if (si.hasNext()) {
+ sb.append("&");
+ } else {
+ if (formResources.keySet().iterator().hasNext()) {
+ sb.append("&");
+ }
+ }
+ }
+
+ for (Iterator<String> si = formResources.keySet().iterator(); si.hasNext();) {
+ String formName = si.next();
+ String formVal = URLEncoder.encode(StreamUtil.asString(getClass()
+ .getClassLoader().getResourceAsStream(formResources.get(formName)),
+ "UTF-8"), "UTF-8");
+ sb.append(URLEncoder.encode(formName, "UTF-8"));
+ sb.append("=");
+ sb.append(formVal);
+ if (si.hasNext()) {
+ sb.append("&");
+ }
+ }
+ return new ByteArrayInputStream(sb.toString().getBytes("UTF-8"));
+ }
+
+ public String getURLencodedAsString() throws IOException {
+ StringBuffer sb = new StringBuffer();
+ for (Iterator<String> si = formString.keySet().iterator(); si.hasNext();) {
+ String formName = si.next();
+ String formVal = formString.get(formName);
+ sb.append(URLEncoder.encode(formName, "UTF-8"));
+ sb.append("=");
+ sb.append(URLEncoder.encode(formVal, "UTF-8"));
+ if (si.hasNext()) {
+ sb.append("&");
+ } else {
+ if (formResources.keySet().iterator().hasNext()) {
+ sb.append("&");
+ }
+ }
+ }
+
+ for (Iterator<String> si = formResources.keySet().iterator(); si.hasNext();) {
+ String formName = si.next();
+ String formVal = URLEncoder.encode(StreamUtil.asString(getClass()
+ .getClassLoader().getResourceAsStream(formResources.get(formName)),
+ "UTF-8"), "UTF-8");
+ sb.append(URLEncoder.encode(formName, "UTF-8"));
+ sb.append("=");
+ sb.append(formVal);
+ if (si.hasNext()) {
+ sb.append("&");
+ }
+ }
+ return sb.toString();
+ }
+
+ public String getNullOperationXML() throws IOException {
+ return StreamUtil.asString(getClass().getClassLoader().getResourceAsStream(
+ requestResourceName), "UTF-8");
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/SSLDataUrlConnectionTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/SSLDataUrlConnectionTest.java
new file mode 100644
index 00000000..79757244
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/SSLDataUrlConnectionTest.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.binding;
+
+import static org.junit.Assert.assertNotNull;
+
+import java.io.IOException;
+import java.net.URL;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+@Ignore
+public class SSLDataUrlConnectionTest {
+
+ @Test
+ public void testVerisign() throws IOException {
+ URL url = new URL("https://www.verisign.com:443");
+ DataUrlConnectionImpl uc = new DataUrlConnectionImpl();
+ uc.init(url);
+ uc.connect();
+ assertNotNull(uc.getServerCertificate());
+ //uc.transmit(null);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/TestDataUrlConnection.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/TestDataUrlConnection.java
new file mode 100644
index 00000000..0a24b5c5
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/TestDataUrlConnection.java
@@ -0,0 +1,150 @@
+/*
+* 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.binding;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.SocketTimeoutException;
+import java.net.URL;
+import java.security.cert.X509Certificate;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLSocketFactory;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Ignore;
+
+import at.gv.egiz.bku.slcommands.SLResult;
+
+@Ignore
+public class TestDataUrlConnection implements DataUrlConnectionSPI {
+
+
+ protected Log log = LogFactory.getLog(TestDataUrlConnection.class);
+ protected X509Certificate serverCertificate;
+ protected Map<String, String> responseHeaders = Collections.EMPTY_MAP;
+ protected Map<String, String> requestHeaders = new HashMap<String, String>();
+ protected String responseContent = "";
+ protected int responseCode = 200;
+
+ protected URL url;
+
+ @Override
+ public void init(URL url) {
+ log.debug("Init Testdataurlconnection to url: " + url);
+ this.url = url;
+ }
+
+ @Override
+ public void connect() throws SocketTimeoutException, IOException {
+ log.debug("Dummy connect to Testdataurlconnection to url: " + url);
+
+ }
+
+ @Override
+ public String getProtocol() {
+ return url.getProtocol();
+ }
+
+ @Override
+ public DataUrlResponse getResponse() throws IOException {
+ String ct = responseHeaders.get(HttpUtil.HTTP_HEADER_CONTENT_TYPE);
+ if (ct != null) {
+ ct = HttpUtil.getCharset(ct, true);
+ } else {
+ ct = HttpUtil.DEFAULT_CHARSET;
+ }
+ DataUrlResponse response = new DataUrlResponse(url.toString(), responseCode, new ByteArrayInputStream(responseContent.getBytes(ct)));
+ response.setResponseHttpHeaders(responseHeaders);
+ return response;
+ }
+
+ @Override
+ public X509Certificate getServerCertificate() {
+ return serverCertificate;
+ }
+
+ @Override
+ public void setHTTPFormParameter(String name, InputStream data,
+ String contentType, String charSet, String transferEncoding) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ public void setHTTPHeader(String key, String value) {
+ requestHeaders.put(key, value);
+ }
+
+ @Override
+ public void transmit(SLResult slResult) throws IOException {
+ log.debug("Dummy transmit to url: " + url);
+ }
+
+ public void setServerCertificate(X509Certificate serverCertificate) {
+ this.serverCertificate = serverCertificate;
+ }
+
+ public void setResponseHeaders(Map<String, String> responseHeaders) {
+ this.responseHeaders = responseHeaders;
+ }
+
+ public void setResponseContent(String responseContent) {
+ this.responseContent = responseContent;
+ }
+
+ public void setResponseCode(int responseCode) {
+ this.responseCode = responseCode;
+ }
+
+ public Map<String, String> getRequestHeaders() {
+ return requestHeaders;
+ }
+
+ @Override
+ public DataUrlConnectionSPI newInstance() {
+ return this;
+ }
+
+ @Override
+ public URL getUrl() {
+ return url;
+ }
+
+ @Override
+ public void setConfiguration(Properties config) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setHostnameVerifier(HostnameVerifier hostnameVerifier) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setSSLSocketFactory(SSLSocketFactory socketFactory) {
+ // TODO Auto-generated method stub
+
+ }
+ }
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/XWWWFormUrlInputIteratorTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/XWWWFormUrlInputIteratorTest.java
new file mode 100644
index 00000000..4d81f038
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/binding/XWWWFormUrlInputIteratorTest.java
@@ -0,0 +1,299 @@
+package at.gv.egiz.bku.binding;
+
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.nio.CharBuffer;
+import java.nio.channels.FileChannel;
+import java.nio.charset.Charset;
+
+import org.junit.Ignore;
+import org.junit.Test;
+
+import at.gv.egiz.bku.utils.URLEncodingWriter;
+import static org.junit.Assert.*;
+
+public class XWWWFormUrlInputIteratorTest {
+
+ @Test
+ public void testEmpty() throws IOException {
+
+ ByteArrayInputStream emptyStream = new ByteArrayInputStream(new byte[] {});
+
+ XWWWFormUrlInputIterator decoder = new XWWWFormUrlInputIterator(emptyStream);
+
+ assertFalse(decoder.hasNext());
+
+ }
+
+ @Test
+ public void testOneParam() throws IOException {
+
+ final String name = "name";
+ final String value = "value";
+
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ OutputStreamWriter w = new OutputStreamWriter(os, Charset.forName("UTF-8"));
+ w.write(name);
+ w.write("=");
+ w.write(value);
+ w.flush();
+ w.close();
+
+ ByteArrayInputStream in = new ByteArrayInputStream(os.toByteArray());
+ XWWWFormUrlInputIterator decoder = new XWWWFormUrlInputIterator(in);
+
+ assertTrue(decoder.hasNext());
+ FormParameter param = decoder.next();
+ assertNotNull(param);
+ assertEquals(name, param.getFormParameterName());
+ InputStream vis = param.getFormParameterValue();
+ assertNotNull(vis);
+ InputStreamReader r = new InputStreamReader(vis);
+ char[] buf = new char[value.length() + 1];
+ int len = r.read(buf);
+ assertEquals(value.length(), len);
+ assertEquals(value, new String(buf, 0, len));
+ assertFalse(decoder.hasNext());
+ Exception ex = null;
+ try {
+ decoder.next();
+ } catch (Exception e) {
+ ex = e;
+ }
+ assertNotNull(ex);
+
+ }
+
+ @Test
+ public void testTwoParam() throws IOException {
+
+ final String name1 = "name";
+ final String value1 = "value";
+ final String name2 = "Name_2";
+ final String value2 = "Value 2";
+
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ OutputStreamWriter w = new OutputStreamWriter(os, Charset.forName("UTF-8"));
+ w.write(name1);
+ w.write("=");
+ w.write(value1);
+ w.write("&");
+ w.write(URLEncoder.encode(name2, "UTF-8"));
+ w.write("=");
+ w.write(URLEncoder.encode(value2, "UTF-8"));
+ w.flush();
+ w.close();
+
+ ByteArrayInputStream in = new ByteArrayInputStream(os.toByteArray());
+ XWWWFormUrlInputIterator decoder = new XWWWFormUrlInputIterator(in);
+
+ assertTrue(decoder.hasNext());
+ FormParameter param = decoder.next();
+ assertNotNull(param);
+ assertEquals(name1, param.getFormParameterName());
+ InputStream vis = param.getFormParameterValue();
+ assertNotNull(vis);
+ InputStreamReader r = new InputStreamReader(vis);
+ char[] buf = new char[value1.length() + 1];
+ int len = r.read(buf);
+ assertEquals(value1.length(), len);
+ assertEquals(value1, new String(buf, 0, len));
+
+ assertTrue(decoder.hasNext());
+ param = decoder.next();
+ assertNotNull(param);
+ assertEquals(name2, param.getFormParameterName());
+ vis = param.getFormParameterValue();
+ assertNotNull(vis);
+ r = new InputStreamReader(vis);
+ buf = new char[value2.length() + 1];
+ len = r.read(buf);
+ assertEquals(value2.length(), len);
+ assertEquals(value2, new String(buf, 0, len));
+
+ assertFalse(decoder.hasNext());
+ }
+
+ @Test
+ public void testURLEnc() throws IOException {
+
+ String name = "name";
+ byte[] value = new byte[128];
+ for (int i = 0; i < value.length; i++) {
+ value[i] = (byte) i;
+ }
+
+ String encValue = URLEncoder.encode(new String(value, "UTF-8"), "ASCII");
+ System.out.println(encValue);
+
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ OutputStreamWriter w = new OutputStreamWriter(os, Charset.forName("UTF-8"));
+ w.write(name);
+ w.write("=");
+ w.write(encValue);
+ w.flush();
+ w.close();
+
+ ByteArrayInputStream in = new ByteArrayInputStream(os.toByteArray());
+ XWWWFormUrlInputIterator decoder = new XWWWFormUrlInputIterator(in);
+
+ assertTrue(decoder.hasNext());
+ FormParameter param = decoder.next();
+ assertNotNull(param);
+ assertEquals(name, param.getFormParameterName());
+ InputStream vis = param.getFormParameterValue();
+ assertNotNull(vis);
+ byte[] buf = new byte[value.length];
+ int len = vis.read(buf);
+ assertArrayEquals(value, buf);
+ assertEquals(value.length, len);
+ assertFalse(decoder.hasNext());
+ Exception ex = null;
+ try {
+ decoder.next();
+ } catch (Exception e) {
+ ex = e;
+ }
+ assertNotNull(ex);
+
+ }
+
+ @Test
+ public void testURLEnc1() throws IOException {
+
+ InputStream urlEncStream = new BufferedInputStream(getClass()
+ .getResourceAsStream("XWWWFormUrlEncoded1.txt"));
+
+ XWWWFormUrlInputIterator decoder = new XWWWFormUrlInputIterator(urlEncStream);
+
+ assertTrue(decoder.hasNext());
+ FormParameter param = decoder.next();
+ assertNotNull(param);
+ assertEquals("XMLRequest", param.getFormParameterName());
+ InputStream vis = param.getFormParameterValue();
+ assertNotNull(vis);
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ byte[] buf = new byte[1024];
+ for (int l; (l = vis.read(buf)) != -1;) {
+ os.write(buf, 0, l);
+ }
+ assertEquals(-1, vis.read());
+ assertFalse(decoder.hasNext());
+ assertEquals(-1, urlEncStream.read());
+
+ }
+
+ @Test
+ public void testURLEnc2() throws IOException {
+
+ InputStream urlEncStream = new BufferedInputStream(getClass()
+ .getResourceAsStream("XWWWFormUrlEncoded2.txt"));
+
+ XWWWFormUrlInputIterator decoder = new XWWWFormUrlInputIterator(urlEncStream);
+
+ assertTrue(decoder.hasNext());
+ FormParameter param = decoder.next();
+ assertNotNull(param);
+ assertEquals("XMLRequest", param.getFormParameterName());
+ InputStream vis = param.getFormParameterValue();
+ assertNotNull(vis);
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ byte[] buf = new byte[1024];
+ for (int l; (l = vis.read(buf)) != -1;) {
+ os.write(buf, 0, l);
+ }
+ assertEquals(-1, vis.read());
+ vis.close();
+
+ assertTrue(decoder.hasNext());
+ param = decoder.next();
+ assertNotNull(param);
+ assertEquals("EmptyParam", param.getFormParameterName());
+ vis = param.getFormParameterValue();
+ assertNotNull(vis);
+ assertEquals(-1, vis.read());
+ vis.close();
+
+ assertTrue(decoder.hasNext());
+ param = decoder.next();
+ assertNotNull(param);
+ assertEquals("TransferParam__", param.getFormParameterName());
+ vis = param.getFormParameterValue();
+ assertNotNull(vis);
+ for (int l = 0; (l = vis.read(buf)) != -1;) {
+ os.write(buf, 0, l);
+ }
+ assertEquals(-1, vis.read());
+ vis.close();
+
+ }
+
+ @Ignore
+ @Test
+ public void testURLEncLoremIpsum() throws IOException {
+
+ InputStream urlEncStream = new BufferedInputStream(getClass()
+ .getResourceAsStream("UrlEncodedLoremIpsum.txt"));
+
+ XWWWFormUrlInputIterator decoder = new XWWWFormUrlInputIterator(urlEncStream);
+
+ assertTrue(decoder.hasNext());
+ FormParameter param = decoder.next();
+ assertNotNull(param);
+ assertEquals("LoremIpsum", param.getFormParameterName());
+ InputStream vis = param.getFormParameterValue();
+ assertNotNull(vis);
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ byte[] buf = new byte[1024];
+ for (int l; (l = vis.read(buf)) != -1;) {
+ os.write(buf, 0, l);
+ }
+ assertEquals(-1, vis.read());
+ vis.close();
+
+ assertFalse(decoder.hasNext());
+
+ }
+
+
+ public static void main(String[] args) throws IOException {
+
+ URL resource = XWWWFormUrlInputIteratorTest.class
+ .getResource("LoremIpsum.txt");
+
+ BufferedInputStream is = new BufferedInputStream(resource.openStream());
+
+ InputStreamReader reader = new InputStreamReader(is, "UTF-8");
+
+ StringBuilder sb = new StringBuilder();
+ char[] b = new char[1024];
+ for (int l; (l = reader.read(b)) != -1;) {
+ sb.append(b, 0, l);
+ }
+ String li = sb.toString();
+
+ FileOutputStream os = new FileOutputStream("UrlEncodedLoremIpsum.txt");
+ OutputStreamWriter writer = new OutputStreamWriter(new BufferedOutputStream(os), "ISO-8859-1");
+ URLEncodingWriter encoder = new URLEncodingWriter(writer);
+
+ for (int i = 0; i < 100; i++) {
+ encoder.write(li);
+ }
+
+ encoder.flush();
+ encoder.close();
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/conf/CertValidatorTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/conf/CertValidatorTest.java
new file mode 100644
index 00000000..d97d741d
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/conf/CertValidatorTest.java
@@ -0,0 +1,35 @@
+package at.gv.egiz.bku.conf;
+
+import iaik.x509.X509Certificate;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.security.cert.CertificateException;
+
+import static org.junit.Assert.*;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class CertValidatorTest {
+
+ private CertValidator cv;
+
+ @Before
+ public void setUp() throws URISyntaxException {
+ cv = new CertValidatorImpl();
+ URL caDir = getClass().getClassLoader().getResource("at/gv/egiz/bku/conf/certs/CACerts");
+ URL certDir = getClass().getClassLoader().getResource("at/gv/egiz/bku/conf/certs/certStore");
+ cv.init(new File(caDir.toURI()), new File(certDir.toURI()));
+ }
+
+ @Test
+ public void testValid() throws CertificateException, IOException {
+ X509Certificate cert = new X509Certificate(getClass().getClassLoader().getResourceAsStream("at/gv/egiz/bku/conf/certs/testCerts/www.a-trust.at.der"));
+ assertTrue(cv.isCertificateValid("TID", new X509Certificate[]{cert}));
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/conf/DummyConfiguration.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/conf/DummyConfiguration.java
new file mode 100644
index 00000000..1e0e5aa9
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/conf/DummyConfiguration.java
@@ -0,0 +1,32 @@
+/*
+ * 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.conf;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class DummyConfiguration extends Configuration {
+
+ public DummyConfiguration() {
+ this.setMaxDataUrlHops(MAX_DATAURL_HOPS_DEFAULT);
+ //this.set...
+ }
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/SLCommandFactoryTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/SLCommandFactoryTest.java
new file mode 100644
index 00000000..7a087b38
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/SLCommandFactoryTest.java
@@ -0,0 +1,90 @@
+/*
+* 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.slcommands;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.Reader;
+import java.io.StringReader;
+
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamSource;
+
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.bku.slexceptions.SLRequestException;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+import at.gv.egiz.bku.slexceptions.SLVersionException;
+import at.gv.egiz.stal.dummy.DummySTAL;
+
+public class SLCommandFactoryTest {
+
+ protected static ApplicationContext appCtx;
+ SLCommandFactory factory;
+ SLCommandContext context;
+
+ @BeforeClass
+ public static void setUpClass() {
+ appCtx = new ClassPathXmlApplicationContext("at/gv/egiz/bku/slcommands/testApplicationContext.xml");
+ }
+
+ @Before
+ public void setUp() {
+ factory = SLCommandFactory.getInstance();
+ context = new SLCommandContext();
+ context.setSTAL(new DummySTAL());
+ }
+
+ @Test
+ public void createNullOperationCommand() throws SLCommandException, SLRuntimeException, SLRequestException, SLVersionException {
+ Reader requestReader = new StringReader(
+ "<NullOperationRequest xmlns=\"http://www.buergerkarte.at/namespaces/securitylayer/1.2#\"/>");
+ Source source = new StreamSource(requestReader);
+
+ SLCommand slCommand = factory.createSLCommand(source, context);
+
+ assertTrue(slCommand instanceof NullOperationCommand);
+ }
+
+ @Test(expected=SLCommandException.class)
+ public void createUnsupportedCommand() throws SLCommandException, SLRuntimeException, SLRequestException, SLVersionException {
+ Reader requestReader = new StringReader(
+ "<CreateCMSSignatureRequest xmlns=\"http://www.buergerkarte.at/namespaces/securitylayer/1.2#\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.buergerkarte.at/namespaces/securitylayer/1.2# file:/home/clemens/IAIK/BKU2/svn/bku/utils/src/main/schema/Core-1.2.xsd\" Structure=\"detached\"><KeyboxIdentifier></KeyboxIdentifier><DataObject><MetaInfo><MimeType></MimeType></MetaInfo><Content><Base64Content></Base64Content></Content></DataObject></CreateCMSSignatureRequest>");
+ Source source = new StreamSource(requestReader);
+
+ factory.createSLCommand(source, context);
+
+ }
+
+ @Test(expected=SLRequestException.class)
+ public void createMalformedCommand() throws SLCommandException, SLRuntimeException, SLRequestException, SLVersionException {
+ Reader requestReader = new StringReader(
+ "<NullOperationRequest xmlns=\"http://www.buergerkarte.at/namespaces/securitylayer/1.2#\">" +
+ "missplacedContent" +
+ "</NullOperationRequest>");
+ Source source = new StreamSource(requestReader);
+
+ factory.createSLCommand(source, context);
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureComandImplTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureComandImplTest.java
new file mode 100644
index 00000000..4e9b4cd7
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/CreateXMLSignatureComandImplTest.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.slcommands.impl;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import iaik.xml.crypto.XSecProvider;
+
+import java.io.InputStream;
+import java.security.Security;
+
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+import at.gv.egiz.bku.slcommands.CreateXMLSignatureCommand;
+import at.gv.egiz.bku.slcommands.InfoboxReadCommand;
+import at.gv.egiz.bku.slcommands.SLCommand;
+import at.gv.egiz.bku.slcommands.SLCommandContext;
+import at.gv.egiz.bku.slcommands.SLCommandFactory;
+import at.gv.egiz.bku.slcommands.SLResult;
+import at.gv.egiz.bku.slcommands.impl.xsect.STALProvider;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.bku.slexceptions.SLRequestException;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+import at.gv.egiz.bku.slexceptions.SLVersionException;
+import at.gv.egiz.stal.STAL;
+import at.gv.egiz.stal.dummy.DummySTAL;
+//@Ignore
+public class CreateXMLSignatureComandImplTest {
+
+ private SLCommandFactory factory;
+
+ private STAL stal;
+
+ @BeforeClass
+ public static void setUpClass() {
+
+ new ClassPathXmlApplicationContext("at/gv/egiz/bku/slcommands/testApplicationContext.xml");
+
+ Security.addProvider(new STALProvider());
+ XSecProvider.addAsProvider(true);
+ }
+
+ @Before
+ public void setUp() {
+ factory = SLCommandFactory.getInstance();
+ stal = new DummySTAL();
+ }
+
+ @Test
+ public void testCreateXMLSignatureRequest() throws SLCommandException, SLRuntimeException, SLRequestException, SLVersionException {
+ InputStream inputStream = getClass().getClassLoader().getResourceAsStream("at/gv/egiz/bku/slcommands/createxmlsignaturerequest/CreateXMLSignatureRequest.xml");
+ assertNotNull(inputStream);
+
+ SLCommandContext context = new SLCommandContext();
+ context.setSTAL(stal);
+ SLCommand command = factory.createSLCommand(new StreamSource(inputStream), context);
+ assertTrue(command instanceof CreateXMLSignatureCommand);
+
+ SLResult result = command.execute();
+ result.writeTo(new StreamResult(System.out), false);
+ }
+
+// @Test(expected=SLCommandException.class)
+ public void testInfboxReadRequestInvalid1() throws SLCommandException, SLRuntimeException, SLRequestException, SLVersionException {
+ InputStream inputStream = getClass().getClassLoader().getResourceAsStream("at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.Invalid-1.xml");
+ assertNotNull(inputStream);
+
+ SLCommandContext context = new SLCommandContext();
+ SLCommand command = factory.createSLCommand(new StreamSource(inputStream), context);
+ assertTrue(command instanceof InfoboxReadCommand);
+ }
+
+// @Test(expected=SLCommandException.class)
+ public void testInfboxReadRequestInvalid2() throws SLCommandException, SLRuntimeException, SLRequestException, SLVersionException {
+ InputStream inputStream = getClass().getClassLoader().getResourceAsStream("at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.Invalid-2.xml");
+ assertNotNull(inputStream);
+
+ SLCommandContext context = new SLCommandContext();
+ SLCommand command = factory.createSLCommand(new StreamSource(inputStream), context);
+ assertTrue(command instanceof InfoboxReadCommand);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/ErrorResultImplTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/ErrorResultImplTest.java
new file mode 100644
index 00000000..aa2bcd62
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/ErrorResultImplTest.java
@@ -0,0 +1,46 @@
+/*
+* 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.slcommands.impl;
+
+import java.io.ByteArrayOutputStream;
+import java.util.Locale;
+
+import javax.xml.transform.stream.StreamResult;
+
+import org.junit.Test;
+
+import at.gv.egiz.bku.slcommands.ErrorResult;
+import at.gv.egiz.bku.slexceptions.SLException;
+
+public class ErrorResultImplTest {
+
+ @Test
+ public void writeTo() {
+
+ SLException slException = new SLException(0,"test.noerror", null);
+ ErrorResult errorResult = new ErrorResultImpl(slException, Locale.getDefault());
+
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ StreamResult result = new StreamResult(stream);
+ errorResult.writeTo(result, false);
+
+ System.out.println(stream.toString());
+
+ }
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadComandImplTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadComandImplTest.java
new file mode 100644
index 00000000..bfc784f7
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/InfoboxReadComandImplTest.java
@@ -0,0 +1,104 @@
+/*
+* 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.slcommands.impl;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.InputStream;
+
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+import at.gv.egiz.bku.slcommands.ErrorResult;
+import at.gv.egiz.bku.slcommands.InfoboxReadCommand;
+import at.gv.egiz.bku.slcommands.SLCommand;
+import at.gv.egiz.bku.slcommands.SLCommandContext;
+import at.gv.egiz.bku.slcommands.SLCommandFactory;
+import at.gv.egiz.bku.slcommands.SLResult;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.bku.slexceptions.SLRequestException;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+import at.gv.egiz.bku.slexceptions.SLVersionException;
+import at.gv.egiz.stal.STAL;
+import at.gv.egiz.stal.dummy.DummySTAL;
+
+//@Ignore
+public class InfoboxReadComandImplTest {
+
+ private static ApplicationContext appCtx;
+
+ private SLCommandFactory factory;
+
+ private STAL stal;
+
+ @BeforeClass
+ public static void setUpClass() {
+ appCtx = new ClassPathXmlApplicationContext("at/gv/egiz/bku/slcommands/testApplicationContext.xml");
+ }
+
+ @Before
+ public void setUp() {
+ factory = SLCommandFactory.getInstance();
+ stal = new DummySTAL();
+ }
+
+ @Test
+ public void testInfboxReadRequest() throws SLCommandException, SLRuntimeException, SLRequestException, SLVersionException {
+ InputStream inputStream = getClass().getClassLoader().getResourceAsStream("at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.xml");
+ assertNotNull(inputStream);
+
+ SLCommandContext context = new SLCommandContext();
+ context.setSTAL(stal);
+ SLCommand command = factory.createSLCommand(new StreamSource(inputStream), context);
+ assertTrue(command instanceof InfoboxReadCommand);
+
+ SLResult result = command.execute();
+ result.writeTo(new StreamResult(System.out), false);
+ }
+
+ @Test(expected=SLCommandException.class)
+ public void testInfboxReadRequestInvalid1() throws SLCommandException, SLRuntimeException, SLRequestException, SLVersionException {
+ InputStream inputStream = getClass().getClassLoader().getResourceAsStream("at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.Invalid-1.xml");
+ assertNotNull(inputStream);
+
+ SLCommandContext context = new SLCommandContext();
+ context.setSTAL(stal);
+ SLCommand command = factory.createSLCommand(new StreamSource(inputStream), context);
+ assertTrue(command instanceof InfoboxReadCommand);
+ }
+
+ public void testInfboxReadRequestInvalid2() throws SLCommandException, SLRuntimeException, SLRequestException, SLVersionException {
+ InputStream inputStream = getClass().getClassLoader().getResourceAsStream("at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.Invalid-2.xml");
+ assertNotNull(inputStream);
+
+ SLCommandContext context = new SLCommandContext();
+ context.setSTAL(stal);
+ SLCommand command = factory.createSLCommand(new StreamSource(inputStream), context);
+ assertTrue(command instanceof InfoboxReadCommand);
+
+ SLResult result = command.execute();
+ assertTrue(result instanceof ErrorResult);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/NullOperationResultImplTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/NullOperationResultImplTest.java
new file mode 100644
index 00000000..e9b0775f
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/NullOperationResultImplTest.java
@@ -0,0 +1,42 @@
+/*
+* 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.slcommands.impl;
+
+import java.io.ByteArrayOutputStream;
+
+import javax.xml.transform.stream.StreamResult;
+
+import org.junit.Test;
+
+import at.gv.egiz.bku.slcommands.NullOperationResult;
+
+public class NullOperationResultImplTest {
+
+ @Test
+ public void writeTo() {
+
+ NullOperationResult nullOperationResult = new NullOperationResultImpl();
+
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ StreamResult result = new StreamResult(stream);
+ nullOperationResult.writeTo(result, false);
+
+ System.out.println(stream.toString());
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/SVPersonendatenInfoboxImplTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/SVPersonendatenInfoboxImplTest.java
new file mode 100644
index 00000000..a17f0797
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/SVPersonendatenInfoboxImplTest.java
@@ -0,0 +1,146 @@
+/*
+* 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.slcommands.impl;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import iaik.asn1.CodingException;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import org.junit.Ignore;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+import at.buergerkarte.namespaces.cardchannel.AttributeList;
+import at.buergerkarte.namespaces.cardchannel.ObjectFactory;
+import at.gv.egiz.bku.slcommands.ErrorResult;
+import at.gv.egiz.bku.slcommands.InfoboxReadCommand;
+import at.gv.egiz.bku.slcommands.SLCommand;
+import at.gv.egiz.bku.slcommands.SLCommandContext;
+import at.gv.egiz.bku.slcommands.SLCommandFactory;
+import at.gv.egiz.bku.slcommands.SLMarshallerFactory;
+import at.gv.egiz.bku.slcommands.SLResult;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.bku.slexceptions.SLRequestException;
+import at.gv.egiz.bku.slexceptions.SLRuntimeException;
+import at.gv.egiz.bku.slexceptions.SLVersionException;
+import at.gv.egiz.stal.STAL;
+import at.gv.egiz.stal.dummy.DummySTAL;
+
+//@Ignore
+public class SVPersonendatenInfoboxImplTest {
+
+ private byte[] EHIC = new byte[] {
+ (byte) 0x30, (byte) 0x6b, (byte) 0x30, (byte) 0x12, (byte) 0x06, (byte) 0x08, (byte) 0x2a, (byte) 0x28,
+ (byte) 0x00, (byte) 0x0a, (byte) 0x01, (byte) 0x04, (byte) 0x01, (byte) 0x14, (byte) 0x31, (byte) 0x06,
+ (byte) 0x04, (byte) 0x04, (byte) 0x42, (byte) 0x47, (byte) 0x4b, (byte) 0x4b, (byte) 0x30, (byte) 0x12,
+ (byte) 0x06, (byte) 0x08, (byte) 0x2a, (byte) 0x28, (byte) 0x00, (byte) 0x0a, (byte) 0x01, (byte) 0x04,
+ (byte) 0x01, (byte) 0x15, (byte) 0x31, (byte) 0x06, (byte) 0x12, (byte) 0x04, (byte) 0x31, (byte) 0x33,
+ (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x22, (byte) 0x06, (byte) 0x08, (byte) 0x2a, (byte) 0x28,
+ (byte) 0x00, (byte) 0x0a, (byte) 0x01, (byte) 0x04, (byte) 0x01, (byte) 0x16, (byte) 0x31, (byte) 0x16,
+ (byte) 0x12, (byte) 0x14, (byte) 0x38, (byte) 0x30, (byte) 0x30, (byte) 0x34, (byte) 0x30, (byte) 0x30,
+ (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x32, (byte) 0x33, (byte) 0x30, (byte) 0x30,
+ (byte) 0x34, (byte) 0x37, (byte) 0x30, (byte) 0x37, (byte) 0x35, (byte) 0x39, (byte) 0x30, (byte) 0x1d,
+ (byte) 0x06, (byte) 0x08, (byte) 0x2a, (byte) 0x28, (byte) 0x00, (byte) 0x0a, (byte) 0x01, (byte) 0x04,
+ (byte) 0x01, (byte) 0x17, (byte) 0x31, (byte) 0x11, (byte) 0x18, (byte) 0x0f, (byte) 0x32, (byte) 0x30,
+ (byte) 0x30, (byte) 0x35, (byte) 0x30, (byte) 0x37, (byte) 0x30, (byte) 0x31, (byte) 0x31, (byte) 0x32,
+ (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x5a
+ };
+
+ private static ApplicationContext appCtx;
+
+ private SLCommandFactory factory;
+
+ private STAL stal;
+
+// @BeforeClass
+ public static void setUpClass() {
+ appCtx = new ClassPathXmlApplicationContext("at/gv/egiz/bku/slcommands/testApplicationContext.xml");
+ }
+
+// @Before
+ public void setUp() {
+ factory = SLCommandFactory.getInstance();
+ stal = new DummySTAL();
+ }
+
+ @Test
+ public void testEHIC() throws SLCommandException, JAXBException, CodingException, IOException {
+
+ AttributeList attributeList = SVPersonendatenInfoboxImpl.createAttributeList(EHIC);
+
+ JAXBElement<AttributeList> ehic = new ObjectFactory().createEHIC(attributeList);
+
+ Marshaller marshaller = SLMarshallerFactory.getInstance().createMarshaller(false);
+
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
+
+ marshaller.marshal(ehic, System.out);
+
+ }
+
+ @Ignore
+ @Test
+ public void testInfboxReadRequest() throws SLCommandException, SLRuntimeException, SLRequestException, SLVersionException {
+ InputStream inputStream = getClass().getClassLoader().getResourceAsStream("at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.xml");
+ assertNotNull(inputStream);
+
+ SLCommandContext context = new SLCommandContext();
+ context.setSTAL(stal);
+ SLCommand command = factory.createSLCommand(new StreamSource(inputStream), context);
+ assertTrue(command instanceof InfoboxReadCommand);
+
+ SLResult result = command.execute();
+ result.writeTo(new StreamResult(System.out), false);
+ }
+
+ @Ignore
+ @Test(expected=SLCommandException.class)
+ public void testInfboxReadRequestInvalid1() throws SLCommandException, SLRuntimeException, SLRequestException, SLVersionException {
+ InputStream inputStream = getClass().getClassLoader().getResourceAsStream("at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.Invalid-1.xml");
+ assertNotNull(inputStream);
+
+ SLCommandContext context = new SLCommandContext();
+ context.setSTAL(stal);
+ SLCommand command = factory.createSLCommand(new StreamSource(inputStream), context);
+ assertTrue(command instanceof InfoboxReadCommand);
+ }
+
+ @Ignore
+ public void testInfboxReadRequestInvalid2() throws SLCommandException, SLRuntimeException, SLRequestException, SLVersionException {
+ InputStream inputStream = getClass().getClassLoader().getResourceAsStream("at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.Invalid-2.xml");
+ assertNotNull(inputStream);
+
+ SLCommandContext context = new SLCommandContext();
+ context.setSTAL(stal);
+ SLCommand command = factory.createSLCommand(new StreamSource(inputStream), context);
+ assertTrue(command instanceof InfoboxReadCommand);
+
+ SLResult result = command.execute();
+ assertTrue(result instanceof ErrorResult);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureTest.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureTest.java
new file mode 100644
index 00000000..ccd29e85
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/bku/slcommands/impl/xsect/SignatureTest.java
@@ -0,0 +1,853 @@
+/*
+* 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.slcommands.impl.xsect;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import iaik.xml.crypto.XSecProvider;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.UnrecoverableKeyException;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import java.util.List;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLSocketFactory;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.crypto.MarshalException;
+import javax.xml.crypto.dsig.CanonicalizationMethod;
+import javax.xml.crypto.dsig.DigestMethod;
+import javax.xml.crypto.dsig.Reference;
+import javax.xml.crypto.dsig.SignatureMethod;
+import javax.xml.crypto.dsig.Transform;
+import javax.xml.crypto.dsig.XMLObject;
+import javax.xml.crypto.dsig.XMLSignatureException;
+import javax.xml.crypto.dsig.XMLSignatureFactory;
+import javax.xml.crypto.dsig.dom.DOMSignContext;
+import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
+import javax.xml.crypto.dsig.spec.DigestMethodParameterSpec;
+import javax.xml.crypto.dsig.spec.SignatureMethodParameterSpec;
+import javax.xml.stream.XMLEventReader;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamException;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.w3c.dom.Document;
+import org.w3c.dom.Node;
+import org.w3c.dom.ls.DOMImplementationLS;
+import org.w3c.dom.ls.LSOutput;
+import org.w3c.dom.ls.LSSerializer;
+
+import at.buergerkarte.namespaces.securitylayer._1.CreateXMLSignatureRequestType;
+import at.buergerkarte.namespaces.securitylayer._1.DataObjectInfoType;
+import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory;
+import at.buergerkarte.namespaces.securitylayer._1.SignatureInfoCreationType;
+import at.gv.egiz.bku.slexceptions.SLCommandException;
+import at.gv.egiz.bku.slexceptions.SLRequestException;
+import at.gv.egiz.bku.slexceptions.SLViewerException;
+import at.gv.egiz.bku.utils.urldereferencer.StreamData;
+import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer;
+import at.gv.egiz.bku.utils.urldereferencer.URLDereferencerContext;
+import at.gv.egiz.bku.utils.urldereferencer.URLProtocolHandler;
+import at.gv.egiz.dom.DOMUtils;
+import at.gv.egiz.slbinding.RedirectEventFilter;
+import at.gv.egiz.slbinding.RedirectUnmarshallerListener;
+import org.junit.Ignore;
+
+public class SignatureTest {
+
+ private class AlgorithmMethodFactoryImpl implements AlgorithmMethodFactory {
+
+ @Override
+ public CanonicalizationMethod createCanonicalizationMethod(
+ SignatureContext signatureContext) {
+
+ XMLSignatureFactory signatureFactory = signatureContext.getSignatureFactory();
+
+ try {
+ return signatureFactory.newCanonicalizationMethod(CanonicalizationMethod.EXCLUSIVE, (C14NMethodParameterSpec) null);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public DigestMethod createDigestMethod(SignatureContext signatureContext) {
+
+ XMLSignatureFactory signatureFactory = signatureContext.getSignatureFactory();
+
+ try {
+ return signatureFactory.newDigestMethod(DigestMethod.SHA1, (DigestMethodParameterSpec) null);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public SignatureMethod createSignatureMethod(
+ SignatureContext signatureContext) {
+
+ XMLSignatureFactory signatureFactory = signatureContext.getSignatureFactory();
+
+ try {
+ return signatureFactory.newSignatureMethod(SignatureMethod.RSA_SHA1, (SignatureMethodParameterSpec) null);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ }
+
+ private static final String RESOURCE_PREFIX = "at/gv/egiz/bku/slcommands/impl/";
+
+ private static Unmarshaller unmarshaller;
+
+ private static PrivateKey privateKey;
+
+ private static X509Certificate certificate;
+
+ @BeforeClass
+ public static void setUpClass() throws JAXBException, NoSuchAlgorithmException, KeyStoreException, CertificateException, IOException, UnrecoverableKeyException {
+
+ XSecProvider.addAsProvider(true);
+
+ String packageName = ObjectFactory.class.getPackage().getName();
+ packageName += ":"
+ + org.w3._2000._09.xmldsig_.ObjectFactory.class.getPackage().getName();
+ JAXBContext jaxbContext = JAXBContext.newInstance(packageName);
+
+ unmarshaller = jaxbContext.createUnmarshaller();
+
+ initURLDereferencer();
+
+ ClassLoader classLoader = SignatureTest.class.getClassLoader();
+ InputStream certStream = classLoader.getResourceAsStream(RESOURCE_PREFIX + "Cert.p12");
+ assertNotNull("Certificate not found.", certStream);
+
+ char[] passwd = "1622".toCharArray();
+
+ KeyStore keystore = KeyStore.getInstance("PKCS12");
+ keystore.load(certStream, passwd);
+ String firstAlias = keystore.aliases().nextElement();
+ certificate = (X509Certificate) keystore.getCertificate(firstAlias);
+ privateKey = (PrivateKey) keystore.getKey(firstAlias, passwd);
+
+ }
+
+ private static void initURLDereferencer() {
+
+ URLDereferencer.getInstance().registerHandler("testlocal", new URLProtocolHandler() {
+
+ @Override
+ public StreamData dereference(String url, URLDereferencerContext context)
+ throws IOException {
+
+ ClassLoader classLoader = SignatureTest.class.getClassLoader();
+
+ String filename = url.split(":", 2)[1];
+
+ InputStream stream = classLoader.getResourceAsStream(RESOURCE_PREFIX + filename);
+
+ if (stream == null) {
+
+ throw new IOException("Failed to resolve resource '" + url + "'.");
+
+ } else {
+
+ String contentType;
+ if (filename.endsWith(".xml")) {
+ contentType = "text/xml";
+ } else if (filename.endsWith(".txt")) {
+ contentType = "text/plain";
+ } else {
+ contentType = "";
+ }
+
+ return new StreamData(url, contentType, stream);
+
+ }
+
+ }
+
+ @Override
+ public void setHostnameVerifier(HostnameVerifier hostnameVerifier) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setSSLSocketFactory(SSLSocketFactory socketFactory) {
+ // TODO Auto-generated method stub
+
+ }
+
+ });
+
+ }
+
+ private Object unmarshal(String file) throws XMLStreamException, JAXBException {
+
+ ClassLoader classLoader = SignatureTest.class.getClassLoader();
+ InputStream resourceStream = classLoader.getResourceAsStream(RESOURCE_PREFIX + file);
+ assertNotNull(resourceStream);
+
+ XMLInputFactory inputFactory = XMLInputFactory.newInstance();
+ XMLEventReader eventReader = inputFactory.createXMLEventReader(resourceStream);
+ RedirectEventFilter redirectEventFilter = new RedirectEventFilter();
+ XMLEventReader filteredReader = inputFactory.createFilteredReader(eventReader, redirectEventFilter);
+
+ unmarshaller.setListener(new RedirectUnmarshallerListener(redirectEventFilter));
+
+ return unmarshaller.unmarshal(filteredReader);
+
+ }
+
+ //
+ //
+ // SignatureInfo
+ //
+ //
+
+ @SuppressWarnings("unchecked")
+ private SignatureInfoCreationType unmarshalSignatureInfo(String file) throws JAXBException, XMLStreamException {
+
+ Object object = unmarshal(file);
+
+ Object requestType = ((JAXBElement) object).getValue();
+
+ assertTrue(requestType instanceof CreateXMLSignatureRequestType);
+
+ SignatureInfoCreationType signatureInfo = ((CreateXMLSignatureRequestType) requestType).getSignatureInfo();
+
+ assertNotNull(signatureInfo);
+
+ return signatureInfo;
+
+ }
+
+ @Test
+ public void testSetSignatureInfo_Base64_1() throws JAXBException, SLCommandException, XMLStreamException {
+
+ SignatureInfoCreationType signatureInfo = unmarshalSignatureInfo("SignatureInfo_Base64_1.xml");
+
+ Signature signature = new Signature(null, new IdValueFactoryImpl(), null);
+
+ signature.setSignatureInfo(signatureInfo);
+
+ Node parent = signature.getParent();
+ Node nextSibling = signature.getNextSibling();
+
+ assertNotNull(parent);
+ assertTrue("urn:document".equals(parent.getNamespaceURI()));
+ assertTrue("XMLDocument".equals(parent.getLocalName()));
+
+ assertNotNull(nextSibling);
+ assertTrue("urn:document".equals(nextSibling.getNamespaceURI()));
+ assertTrue("Paragraph".equals(nextSibling.getLocalName()));
+
+ }
+
+ @Test
+ public void testSetSignature_Base64_2() throws JAXBException, SLCommandException, XMLStreamException {
+
+ SignatureInfoCreationType signatureInfo = unmarshalSignatureInfo("SignatureInfo_Base64_2.xml");
+
+ Signature signature = new Signature(null, new IdValueFactoryImpl(), null);
+
+ signature.setSignatureInfo(signatureInfo);
+
+ Node parent = signature.getParent();
+ Node nextSibling = signature.getNextSibling();
+
+ assertNotNull(parent);
+ assertTrue("XMLDocument".equals(parent.getLocalName()));
+
+ assertNotNull(nextSibling);
+ assertTrue("Paragraph".equals(nextSibling.getLocalName()));
+
+ }
+
+ @Test
+ public void testSetSignature_Base64_3() throws JAXBException, SLCommandException, XMLStreamException {
+
+ SignatureInfoCreationType signatureInfo = unmarshalSignatureInfo("SignatureInfo_Base64_3.xml");
+
+ Signature signature = new Signature(null, new IdValueFactoryImpl(), null);
+
+ signature.setSignatureInfo(signatureInfo);
+
+ Node parent = signature.getParent();
+ Node nextSibling = signature.getNextSibling();
+
+ assertNotNull(parent);
+ assertTrue("XMLDocument".equals(parent.getLocalName()));
+
+ assertNotNull(nextSibling);
+ assertTrue("Paragraph".equals(nextSibling.getLocalName()));
+
+ }
+
+ @Test
+ public void testSetSignatureInfo_XMLContent_1() throws JAXBException, SLCommandException, XMLStreamException {
+
+ SignatureInfoCreationType signatureInfo = unmarshalSignatureInfo("SignatureInfo_XMLContent_1.xml");
+
+ Signature signature = new Signature(null, new IdValueFactoryImpl(), null);
+
+ signature.setSignatureInfo(signatureInfo);
+
+ Node parent = signature.getParent();
+ Node nextSibling = signature.getNextSibling();
+
+ assertNotNull(parent);
+ assertTrue("urn:document".equals(parent.getNamespaceURI()));
+ assertTrue("Whole".equals(parent.getLocalName()));
+
+ assertNull(nextSibling);
+
+ }
+
+ @Test
+ public void testSetSignature_Reference_1() throws JAXBException, SLCommandException, XMLStreamException {
+
+ SignatureInfoCreationType signatureInfo = unmarshalSignatureInfo("SignatureInfo_Reference_1.xml");
+
+ Signature signature = new Signature(null, new IdValueFactoryImpl(), null);
+
+ signature.setSignatureInfo(signatureInfo);
+
+ Node parent = signature.getParent();
+ Node nextSibling = signature.getNextSibling();
+
+ assertNotNull(parent);
+ assertTrue("urn:document".equals(parent.getNamespaceURI()));
+ assertTrue("Paragraph".equals(parent.getLocalName()));
+
+ assertNull(nextSibling);
+
+ }
+
+ //
+ //
+ // DataObject
+ //
+ //
+
+ @SuppressWarnings("unchecked")
+ private List<DataObjectInfoType> unmarshalDataObjectInfo(String file) throws JAXBException, XMLStreamException {
+
+ Object object = unmarshal(file);
+
+ Object requestType = ((JAXBElement) object).getValue();
+
+ assertTrue(requestType instanceof CreateXMLSignatureRequestType);
+
+ List<DataObjectInfoType> dataObjectInfos = ((CreateXMLSignatureRequestType) requestType).getDataObjectInfo();
+
+ assertNotNull(dataObjectInfos);
+
+ return dataObjectInfos;
+
+ }
+
+ private void signAndMarshalSignature(Signature signature) throws MarshalException, XMLSignatureException, SLCommandException, SLViewerException {
+
+ Node parent = signature.getParent();
+ Node nextSibling = signature.getNextSibling();
+
+ DOMSignContext signContext = (nextSibling == null)
+ ? new DOMSignContext(privateKey, parent)
+ : new DOMSignContext(privateKey, parent, nextSibling);
+
+ signature.sign(signContext);
+
+ Document document = signature.getDocument();
+
+ DOMImplementationLS domImplLS = DOMUtils.getDOMImplementationLS();
+ LSOutput output = domImplLS.createLSOutput();
+ output.setByteStream(System.out);
+
+ LSSerializer serializer = domImplLS.createLSSerializer();
+// serializer.getDomConfig().setParameter("format-pretty-print", Boolean.TRUE);
+ serializer.getDomConfig().setParameter("namespaces", Boolean.FALSE);
+ serializer.write(document, output);
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testDataObject_Base64Content_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
+
+ List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_Base64Content_1.xml");
+
+ Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
+
+ for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
+ signature.addDataObject(dataObjectInfo);
+ }
+
+ signature.setSignerCeritifcate(certificate);
+
+ signature.buildXMLSignature();
+
+ signAndMarshalSignature(signature);
+
+ List<Reference> references = signature.getReferences();
+ assertTrue(references.size() == 2);
+
+ Reference reference = references.get(0);
+ assertNotNull(reference.getId());
+
+ List<Transform> transforms = reference.getTransforms();
+ assertTrue(transforms.size() == 1);
+
+ Transform transform = transforms.get(0);
+ assertTrue(Transform.BASE64.equals(transform.getAlgorithm()));
+
+ List<XMLObject> objects = signature.getXMLObjects();
+ assertNotNull(objects);
+ assertTrue("Size " + objects.size() + " but should be 2.", objects.size() == 2);
+
+ XMLObject object = objects.get(0);
+
+ assertTrue(("#" + object.getId()).equals(reference.getURI()));
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+
+ public void testDataObject_XMLContent_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
+
+ System.out.println("\n ****************** testDataObject_XMLContent_1 \n");
+
+ List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_XMLContent_1.xml");
+
+ Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
+
+ for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
+ signature.addDataObject(dataObjectInfo);
+ }
+
+ signature.setSignerCeritifcate(certificate);
+
+ signature.buildXMLSignature();
+
+ signAndMarshalSignature(signature);
+
+ List<Reference> references = signature.getReferences();
+ assertTrue(references.size() == 2);
+
+ Reference reference = references.get(0);
+ assertNotNull(reference.getId());
+
+ List<Transform> transforms = reference.getTransforms();
+ assertTrue(transforms.size() == 2);
+
+ Transform transform = transforms.get(0);
+ assertTrue(Transform.XPATH2.equals(transform.getAlgorithm()));
+
+ List<XMLObject> objects = signature.getXMLObjects();
+ assertNotNull(objects);
+ assertTrue("Size " + objects.size() + " but should be 2.", objects.size() == 2);
+
+ XMLObject object = objects.get(0);
+
+ assertTrue(("#" + object.getId()).equals(reference.getURI()));
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testDataObject_XMLContent_2() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
+
+ System.out.println("\n ****************** testDataObject_XMLContent_2 \n");
+
+ List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_XMLContent_2.xml");
+
+ Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
+
+ for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
+ signature.addDataObject(dataObjectInfo);
+ }
+
+ signature.setSignerCeritifcate(certificate);
+
+ signature.buildXMLSignature();
+
+ signAndMarshalSignature(signature);
+
+ List<Reference> references = signature.getReferences();
+ assertTrue(references.size() == 2);
+
+ Reference reference = references.get(0);
+ assertNotNull(reference.getId());
+
+ List<Transform> transforms = reference.getTransforms();
+ assertTrue(transforms.size() == 2);
+
+ Transform transform = transforms.get(0);
+ assertTrue(Transform.XPATH2.equals(transform.getAlgorithm()));
+
+ List<XMLObject> objects = signature.getXMLObjects();
+ assertNotNull(objects);
+ assertTrue("Size " + objects.size() + " but should be 2.", objects.size() == 2);
+
+ XMLObject object = objects.get(0);
+
+ assertTrue(("#" + object.getId()).equals(reference.getURI()));
+
+ }
+
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testDataObject_LocRefContent_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
+
+ System.out.println("\n ****************** testDataObject_LocRefContent_1 \n");
+
+ List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_LocRefContent_1.xml");
+
+ Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
+
+ for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
+ signature.addDataObject(dataObjectInfo);
+ }
+
+ signature.buildXMLSignature();
+
+ signAndMarshalSignature(signature);
+
+ List<Reference> references = signature.getReferences();
+ assertTrue(references.size() == 2);
+
+ Reference reference = references.get(0);
+ assertNotNull(reference.getId());
+
+ List<Transform> transforms = reference.getTransforms();
+ assertTrue(transforms.size() == 2);
+
+ Transform transform = transforms.get(0);
+ assertTrue(Transform.XPATH2.equals(transform.getAlgorithm()));
+
+ List<XMLObject> objects = signature.getXMLObjects();
+ assertNotNull(objects);
+ assertTrue("Size " + objects.size() + " but should be 2.", objects.size() == 2);
+
+ XMLObject object = objects.get(0);
+
+ assertTrue(("#" + object.getId()).equals(reference.getURI()));
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testDataObject_LocRefContent_2() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
+
+ System.out.println("\n ****************** testDataObject_LocRefContent_2 \n");
+
+ List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_LocRefContent_2.xml");
+
+ Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
+
+ for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
+ signature.addDataObject(dataObjectInfo);
+ }
+
+ signature.buildXMLSignature();
+
+ signAndMarshalSignature(signature);
+
+ List<Reference> references = signature.getReferences();
+ assertTrue(references.size() == 2);
+
+ Reference reference = references.get(0);
+ assertNotNull(reference.getId());
+
+ List<Transform> transforms = reference.getTransforms();
+ assertTrue(transforms.size() == 1);
+
+ Transform transform = transforms.get(0);
+ assertTrue(Transform.BASE64.equals(transform.getAlgorithm()));
+
+ List<XMLObject> objects = signature.getXMLObjects();
+ assertNotNull(objects);
+ assertTrue("Size " + objects.size() + " but should be 2.", objects.size() == 2);
+
+ XMLObject object = objects.get(0);
+
+ assertTrue(("#" + object.getId()).equals(reference.getURI()));
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testDataObject_Reference_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
+
+ System.out.println("\n ****************** testDataObject_Reference_1 \n");
+
+ List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_Reference_1.xml");
+
+ Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
+
+ for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
+ signature.addDataObject(dataObjectInfo);
+ }
+
+ signature.buildXMLSignature();
+
+ signAndMarshalSignature(signature);
+
+ List<Reference> references = signature.getReferences();
+ assertTrue(references.size() == 2);
+
+ Reference reference = references.get(0);
+ assertNotNull(reference.getId());
+
+ List<Transform> transforms = reference.getTransforms();
+ assertTrue(transforms.size() == 1);
+
+ Transform transform = transforms.get(0);
+ assertTrue(Transform.BASE64.equals(transform.getAlgorithm()));
+
+ List<XMLObject> objects = signature.getXMLObjects();
+ assertNotNull(objects);
+ assertTrue("Size " + objects.size() + " but should be 2.", objects.size() == 2);
+
+ XMLObject object = objects.get(0);
+
+ assertTrue(("#" + object.getId()).equals(reference.getURI()));
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testDataObject_Detached_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
+
+ System.out.println("\n ****************** testDataObject_Detached_1 \n");
+
+ List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_Detached_1.xml");
+
+ Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
+
+ for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
+ signature.addDataObject(dataObjectInfo);
+ }
+
+ signature.buildXMLSignature();
+
+ signAndMarshalSignature(signature);
+
+ List<Reference> references = signature.getReferences();
+ assertTrue(references.size() == 2);
+
+ Reference reference = references.get(0);
+ assertNotNull(reference.getId());
+
+ List<Transform> transforms = reference.getTransforms();
+ assertTrue(transforms.size() == 0);
+
+ List<XMLObject> objects = signature.getXMLObjects();
+ assertNotNull(objects);
+ assertTrue(objects.size() == 1);
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testDataObject_Detached_Base64Content() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
+
+ System.out.println("\n ****************** testDataObject_Detached_Base64Content \n");
+
+ List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_Detached_Base64Content.xml");
+
+ Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
+
+ for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
+ signature.addDataObject(dataObjectInfo);
+ }
+
+ signature.buildXMLSignature();
+
+ signAndMarshalSignature(signature);
+
+ List<Reference> references = signature.getReferences();
+ assertTrue(references.size() == 2);
+
+ Reference reference = references.get(0);
+ assertNotNull(reference.getId());
+
+ List<Transform> transforms = reference.getTransforms();
+ assertTrue(transforms.size() == 0);
+
+ List<XMLObject> objects = signature.getXMLObjects();
+ assertNotNull(objects);
+ assertTrue(objects.size() == 1);
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testDataObject_Detached_LocRefContent() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
+
+ System.out.println("\n ****************** testDataObject_Detached_LocRefContent \n");
+
+ List<DataObjectInfoType> dataObjectInfos = unmarshalDataObjectInfo("DataObjectInfo_Detached_LocRefContent.xml");
+
+ Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
+
+ for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
+ signature.addDataObject(dataObjectInfo);
+ }
+
+ signature.buildXMLSignature();
+
+ signAndMarshalSignature(signature);
+
+ List<Reference> references = signature.getReferences();
+ assertTrue(references.size() == 2);
+
+ Reference reference = references.get(0);
+ assertNotNull(reference.getId());
+
+ List<Transform> transforms = reference.getTransforms();
+ assertTrue(transforms.size() == 0);
+
+ List<XMLObject> objects = signature.getXMLObjects();
+ assertNotNull(objects);
+ assertTrue(objects.size() == 1);
+
+ }
+
+ //
+ //
+ // TransformsInfo
+ //
+ //
+
+ @SuppressWarnings("unchecked")
+ private CreateXMLSignatureRequestType unmarshalCreateXMLSignatureRequest(String file) throws JAXBException, XMLStreamException {
+
+ Object object = unmarshal(file);
+
+ Object requestType = ((JAXBElement) object).getValue();
+
+ assertTrue(requestType instanceof CreateXMLSignatureRequestType);
+
+ return (CreateXMLSignatureRequestType) requestType;
+
+ }
+
+
+ @SuppressWarnings("unchecked")
+ @Test
+ public void testTransformsInfo_1() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
+
+ CreateXMLSignatureRequestType requestType = unmarshalCreateXMLSignatureRequest("TransformsInfo_1.xml");
+
+ Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
+
+
+ signature.setSignatureInfo(requestType.getSignatureInfo());
+
+ List<DataObjectInfoType> dataObjectInfos = requestType.getDataObjectInfo();
+
+ for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
+ signature.addDataObject(dataObjectInfo);
+ }
+
+ signature.setSignerCeritifcate(certificate);
+
+ signature.buildXMLSignature();
+
+ signAndMarshalSignature(signature);
+
+ List<Reference> references = signature.getReferences();
+ assertTrue(references.size() == 2);
+
+ Reference reference = references.get(0);
+ assertNotNull(reference.getId());
+
+ List<Transform> transforms = reference.getTransforms();
+ assertTrue("Size " + transforms.size() + "", transforms.size() == 3);
+
+ Transform transform = transforms.get(0);
+ assertTrue(Transform.ENVELOPED.equals(transform.getAlgorithm()));
+
+ List<XMLObject> objects = signature.getXMLObjects();
+ assertNotNull(objects);
+ assertTrue("Size " + objects.size() + " but should be 1.", objects.size() == 1);
+
+ }
+
+ @SuppressWarnings("unchecked")
+ @Test
+ @Ignore
+ public void testTransformsInfo_2() throws JAXBException, SLCommandException, XMLStreamException, SLRequestException, MarshalException, XMLSignatureException, SLViewerException {
+
+ CreateXMLSignatureRequestType requestType = unmarshalCreateXMLSignatureRequest("TransformsInfo_2.xml");
+
+ Signature signature = new Signature(null, new IdValueFactoryImpl(), new AlgorithmMethodFactoryImpl());
+
+
+ signature.setSignatureInfo(requestType.getSignatureInfo());
+
+ List<DataObjectInfoType> dataObjectInfos = requestType.getDataObjectInfo();
+
+ for (DataObjectInfoType dataObjectInfo : dataObjectInfos) {
+ signature.addDataObject(dataObjectInfo);
+ }
+
+ signature.setSignerCeritifcate(certificate);
+
+ signature.buildXMLSignature();
+
+ signAndMarshalSignature(signature);
+
+ List<Reference> references = signature.getReferences();
+ assertTrue(references.size() == 2);
+
+ Reference reference = references.get(0);
+ assertNotNull(reference.getId());
+
+ List<Transform> transforms = reference.getTransforms();
+ assertTrue("Size " + transforms.size() + "", transforms.size() == 2);
+
+ Transform transform = transforms.get(0);
+ assertTrue(Transform.XSLT.equals(transform.getAlgorithm()));
+
+ List<XMLObject> objects = signature.getXMLObjects();
+ assertNotNull(objects);
+ assertTrue("Size " + objects.size() + " but should be 1.", objects.size() == 1);
+
+ }
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/stal/dummy/DummySTAL.java b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/stal/dummy/DummySTAL.java
new file mode 100644
index 00000000..8adeadee
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/at/gv/egiz/stal/dummy/DummySTAL.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.stal.dummy;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.KeyStore;
+import java.security.PrivateKey;
+import java.security.Signature;
+import java.security.cert.CertificateEncodingException;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Locale;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.stal.ErrorResponse;
+import at.gv.egiz.stal.InfoboxReadRequest;
+import at.gv.egiz.stal.InfoboxReadResponse;
+import at.gv.egiz.stal.STAL;
+import at.gv.egiz.stal.STALRequest;
+import at.gv.egiz.stal.STALResponse;
+import at.gv.egiz.stal.SignRequest;
+import at.gv.egiz.stal.SignResponse;
+
+public class DummySTAL implements STAL {
+
+ static Log log = LogFactory.getLog(DummySTAL.class);
+
+ protected X509Certificate cert = null;
+ protected PrivateKey privateKey = null;
+
+ public DummySTAL() {
+ try {
+ KeyStore ks = KeyStore.getInstance("pkcs12");
+ InputStream ksStream = getClass().getClassLoader().getResourceAsStream(
+ "at/gv/egiz/bku/slcommands/impl/Cert.p12");
+ ks.load(ksStream, "1622".toCharArray());
+ for (Enumeration<String> aliases = ks.aliases(); aliases
+ .hasMoreElements();) {
+ String alias = aliases.nextElement();
+ log.debug("Found alias " + alias + " in keystore");
+ if (ks.isKeyEntry(alias)) {
+ log.debug("Found key entry for alias: " + alias);
+ privateKey = (PrivateKey) ks.getKey(alias, "1622".toCharArray());
+ cert = (X509Certificate) ks.getCertificate(alias);
+ System.out.println(cert);
+ }
+ }
+ } catch (Exception e) {
+ log.error(e);
+ }
+
+ }
+
+ @Override
+ public List<STALResponse> handleRequest(List<? extends STALRequest> requestList) {
+
+ List<STALResponse> responses = new ArrayList<STALResponse>();
+ for (STALRequest request : requestList) {
+
+ log.debug("Got STALRequest " + request + ".");
+
+ if (request instanceof InfoboxReadRequest) {
+
+ String infoboxIdentifier = ((InfoboxReadRequest) request)
+ .getInfoboxIdentifier();
+ InputStream stream = getClass().getClassLoader().getResourceAsStream(
+ "at/gv/egiz/stal/dummy/infoboxes4/" + infoboxIdentifier + ".bin");
+
+ STALResponse response;
+ if (stream != null) {
+
+ log.debug("Infobox " + infoboxIdentifier + " found.");
+
+ byte[] infobox;
+ try {
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+ int b;
+ while ((b = stream.read()) != -1) {
+ buffer.write(b);
+ }
+ infobox = buffer.toByteArray();
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+
+ InfoboxReadResponse infoboxReadResponse = new InfoboxReadResponse();
+ infoboxReadResponse.setInfoboxValue(infobox);
+ response = infoboxReadResponse;
+
+ } else if ((infoboxIdentifier.equals("SecureSignatureKeypair")) ||(infoboxIdentifier.equals("CertifiedKeypair"))) {
+ try {
+ InfoboxReadResponse infoboxReadResponse = new InfoboxReadResponse();
+ infoboxReadResponse.setInfoboxValue(cert.getEncoded());
+ response = infoboxReadResponse;
+ } catch (CertificateEncodingException e) {
+ log.error(e);
+ response = new ErrorResponse();
+ }
+ } else {
+
+ log.debug("Infobox " + infoboxIdentifier + " not found.");
+
+ response = new ErrorResponse();
+ }
+ responses.add(response);
+
+ } else if (request instanceof SignRequest) {
+ try {
+
+ SignRequest signReq = (SignRequest) request;
+ Signature s = Signature.getInstance("SHA1withRSA");
+ s.initSign(privateKey);
+ s.update(signReq.getSignedInfo());
+ byte[] sigVal = s.sign();
+ SignResponse resp = new SignResponse();
+ resp.setSignatureValue(sigVal);
+ responses.add(resp);
+ } catch (Exception e) {
+ log.error(e);
+ responses.add(new ErrorResponse());
+ }
+
+ } else {
+
+ log.debug("Request not implemented.");
+
+ responses.add(new ErrorResponse());
+ }
+
+ }
+
+ return responses;
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/MOASPClient.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/MOASPClient.java
new file mode 100644
index 00000000..ade5b38b
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/MOASPClient.java
@@ -0,0 +1,276 @@
+/*
+* 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 moaspss;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.SchemaOutputResolver;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.bind.Validator;
+import javax.xml.namespace.QName;
+import javax.xml.transform.Result;
+
+import moaspss.generated.ContentOptionalRefType;
+import moaspss.generated.InputDataType;
+import moaspss.generated.MOAFault;
+import moaspss.generated.ObjectFactory;
+import moaspss.generated.SignatureVerificationPortType;
+import moaspss.generated.SignatureVerificationService;
+import moaspss.generated.VerifyXMLSignatureRequestType;
+import moaspss.generated.VerifyXMLSignatureResponseType;
+import moaspss.generated.VerifyXMLSignatureRequestType.VerifySignatureInfo;
+
+import org.w3c.dom.Node;
+import org.w3c.dom.bootstrap.DOMImplementationRegistry;
+import org.w3c.dom.ls.DOMImplementationLS;
+import org.w3c.dom.ls.LSOutput;
+import org.w3c.dom.ls.LSSerializer;
+
+import com.sun.xml.bind.api.Bridge;
+import com.sun.xml.bind.api.BridgeContext;
+import com.sun.xml.bind.api.JAXBRIContext;
+import com.sun.xml.bind.api.RawAccessor;
+import com.sun.xml.bind.api.TypeReference;
+import com.sun.xml.bind.marshaller.NamespacePrefixMapper;
+import com.sun.xml.ws.api.model.SEIModel;
+import com.sun.xml.ws.developer.JAXBContextFactory;
+import com.sun.xml.ws.developer.UsesJAXBContextFeature;
+
+@SuppressWarnings("deprecation")
+public class MOASPClient {
+
+ private static class JAXBContextHolder {
+
+ private static final JAXBContext context;
+
+ static {
+ try {
+ context = JAXBRIContext.newInstance(VerifyXMLSignatureRequestType.class.getPackage().getName());
+ } catch (JAXBException e) {
+ throw new RuntimeException("Failed to setup JAXBContext.", e);
+ }
+ }
+
+ }
+
+ public static JAXBContext getJAXBContext() {
+ return JAXBContextHolder.context;
+ }
+
+ public static class ClientJAXBContextFactory implements JAXBContextFactory {
+
+ @SuppressWarnings("unchecked")
+ public JAXBRIContext createJAXBContext(final SEIModel sei,
+ final List<Class> classesToBind, final List<TypeReference> typeReferences)
+ throws JAXBException {
+
+ System.out.println("Create Context");
+
+ return new JAXBRIContext() {
+
+ JAXBRIContext context = JAXBRIContext.newInstance(classesToBind.toArray
+ (new Class[classesToBind.size()]),
+ typeReferences, null, sei.getTargetNamespace(), false, null);
+
+ @Override
+ public Validator createValidator() throws JAXBException {
+ return context.createValidator();
+ }
+
+ @Override
+ public Unmarshaller createUnmarshaller() throws JAXBException {
+ return context.createUnmarshaller();
+ }
+
+ @Override
+ public Marshaller createMarshaller() throws JAXBException {
+ Marshaller marshaller = context.createMarshaller();
+ ClientNamespacePrefixMapper pm = new ClientNamespacePrefixMapper();
+ System.out.println(pm.toString());
+ marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", pm);
+ return marshaller;
+ }
+
+ @Override
+ public boolean hasSwaRef() {
+ return context.hasSwaRef();
+ }
+
+ @Override
+ public QName getTypeName(TypeReference arg0) {
+ return context.getTypeName(arg0);
+ }
+
+ @Override
+ public List<String> getKnownNamespaceURIs() {
+ return context.getKnownNamespaceURIs();
+ }
+
+ @Override
+ public <B, V> RawAccessor<B, V> getElementPropertyAccessor(Class<B> arg0,
+ String arg1, String arg2) throws JAXBException {
+ return context.getElementPropertyAccessor(arg0, arg1, arg2);
+ }
+
+ @Override
+ public QName getElementName(Object arg0) throws JAXBException {
+ return context.getElementName(arg0);
+ }
+
+ @Override
+ public String getBuildId() {
+ return context.getBuildId();
+ }
+
+ @Override
+ public void generateSchema(SchemaOutputResolver arg0) throws IOException {
+ context.generateSchema(arg0);
+ }
+
+ @Override
+ public void generateEpisode(Result arg0) {
+ context.generateEpisode(arg0);
+ }
+
+ @Override
+ public BridgeContext createBridgeContext() {
+ return context.createBridgeContext();
+ }
+
+ @Override
+ public Bridge createBridge(TypeReference arg0) {
+ return context.createBridge(arg0);
+ }
+ };
+
+ }
+
+ }
+
+ public static class ClientNamespacePrefixMapper extends NamespacePrefixMapper {
+
+ protected static final Map<String, String> prefixMap = new HashMap<String, String>();
+
+ static {
+ prefixMap.put("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+ prefixMap.put("http://reference.e-government.gv.at/namespace/moa/20020822#", "moa");
+ prefixMap.put("http://www.w3.org/2000/09/xmldsig#", "dsig");
+ prefixMap.put("http://uri.etsi.org/01903/v1.1.1#", "xades");
+ }
+
+
+ @Override
+ public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) {
+
+ String prefix = prefixMap.get(namespaceUri);
+
+ return (prefix != null) ? prefix : suggestion;
+ }
+
+ /**
+ * Returns a list of namespace URIs that should be declared
+ * at the root element.
+ * <p>
+ * By default, the JAXB RI produces namespace declarations only when
+ * they are necessary, only at where they are used. Because of this
+ * lack of look-ahead, sometimes the marshaller produces a lot of
+ * namespace declarations that look redundant to human eyes. For example,
+ */
+ @Override
+ public String[] getPreDeclaredNamespaceUris() {
+ return new String[]{ "http://www.w3.org/2000/09/xmldsig#" };
+ }
+ }
+
+
+ private SignatureVerificationPortType port;
+
+ public MOASPClient() {
+ QName serviceName = new QName("http://reference.e-government.gv.at/namespace/moa/wsdl/20020822#", "SignatureVerificationService");
+
+ URL wsdlURL = MOASPClient.class.getClassLoader().getResource("MOA-SPSS-1.3.wsdl");
+
+ SignatureVerificationService service = new SignatureVerificationService(wsdlURL, serviceName);
+
+ UsesJAXBContextFeature feature = new UsesJAXBContextFeature(ClientJAXBContextFactory.class);
+
+ port = service.getSignatureVerificationPort(feature);
+ }
+
+ public JAXBElement<VerifyXMLSignatureResponseType> verifySignature(Node node,
+ String signatureLocation, String trustProfileId) throws JAXBException,
+ IOException, ClassCastException, ClassNotFoundException,
+ InstantiationException, IllegalAccessException {
+
+ DOMImplementationLS domImpl = (DOMImplementationLS) DOMImplementationRegistry
+ .newInstance().getDOMImplementation("LS");
+
+ LSSerializer serializer = domImpl.createLSSerializer();
+
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ LSOutput output = domImpl.createLSOutput();
+ output.setByteStream(bos);
+ serializer.write(node, output);
+
+ ObjectFactory factory = new ObjectFactory();
+
+ ContentOptionalRefType contentOptionalRefType = factory.createContentOptionalRefType();
+ contentOptionalRefType.setBase64Content(bos.toByteArray());
+
+ VerifySignatureInfo verifySignatureInfo = factory.createVerifyXMLSignatureRequestTypeVerifySignatureInfo();
+ verifySignatureInfo.setVerifySignatureEnvironment(contentOptionalRefType);
+ verifySignatureInfo.setVerifySignatureLocation(signatureLocation);
+
+ VerifyXMLSignatureRequestType verifyXMLSignatureRequestType = factory.createVerifyXMLSignatureRequestType();
+ verifyXMLSignatureRequestType.setVerifySignatureInfo(verifySignatureInfo);
+ verifyXMLSignatureRequestType.setTrustProfileID(trustProfileId);
+ verifyXMLSignatureRequestType.setReturnHashInputData(Boolean.TRUE);
+
+ VerifyXMLSignatureResponseType resp = null;
+ try {
+ resp = port.verifyXMLSignature(verifyXMLSignatureRequestType);
+ } catch (MOAFault e) {
+ e.printStackTrace();
+ }
+
+ JAXBElement<VerifyXMLSignatureResponseType> verifyXMLSignatureResponse = factory.createVerifyXMLSignatureResponse(resp);
+
+ Marshaller marshaller = getJAXBContext().createMarshaller();
+ marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
+ marshaller.marshal(verifyXMLSignatureResponse, System.out);
+
+ List<InputDataType> hashInputData = resp.getHashInputData();
+ for (InputDataType inputDataType : hashInputData) {
+ System.out.println("------------------------------------------");
+ System.out.println("HashInputData: " + inputDataType.getPartOf() + " " + inputDataType.getReferringSigReference());
+ System.out.println("------------------------------------------");
+ System.out.write(inputDataType.getBase64Content());
+ System.out.println();
+ }
+
+ return verifyXMLSignatureResponse;
+ }
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/SLClient.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/SLClient.java
new file mode 100644
index 00000000..c3561bfe
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/SLClient.java
@@ -0,0 +1,175 @@
+package moaspss;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.UnsupportedEncodingException;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.ProtocolException;
+import java.net.URL;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+
+import at.gv.egiz.bku.utils.URLEncodingWriter;
+
+public class SLClient {
+
+ private static class JAXBContextHolder {
+
+ private static JAXBContext context;
+
+ {
+ String slPkg = at.buergerkarte.namespaces.securitylayer._1.ObjectFactory.class.getPackage().getName();
+ String xmldsigPkg = org.w3._2000._09.xmldsig_.ObjectFactory.class.getPackage().getName();
+ String samlPkg = oasis.names.tc.saml._1_0.assertion.ObjectFactory.class.getPackage().getName();
+ String prPkg = at.buergerkarte.namespaces.personenbindung._20020506_.ObjectFactory.class.getPackage().getName();
+ try {
+ context = JAXBContext.newInstance(slPkg + ":" + xmldsigPkg + ":" + samlPkg + ":" + prPkg);
+ } catch (JAXBException e) {
+ throw new RuntimeException("Failed to setup JAXBContext.", e);
+ }
+ }
+
+ }
+
+ public static JAXBContext getJAXBContext() {
+ return JAXBContextHolder.context;
+ }
+
+ private URL slUrl;
+
+ private URL slUrlSSL;
+
+ private boolean useSSL = false;
+
+ public SLClient() {
+ try {
+ slUrl = new URL("http://localhost:3495/http-security-layer-request");
+ slUrlSSL = new URL("https://localhost:3496/https-security-layer-request");
+ } catch (MalformedURLException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public Object submitRequest(Element request, Class<?> responseType)
+ throws SLException, TransformerException, IOException {
+
+ URL url = (useSSL) ? slUrlSSL : slUrl;
+
+ HttpURLConnection connection;
+ int responseCode;
+ try {
+ connection = (HttpURLConnection) url.openConnection();
+ connection.setRequestMethod("POST");
+ connection.setDoOutput(true);
+ connection.setDoInput(true);
+ connection.connect();
+
+ OutputStream outputStream = connection.getOutputStream();
+ OutputStreamWriter streamWriter = new OutputStreamWriter(outputStream, "ISO-8859-1");
+ streamWriter.write("XMLRequest=");
+ URLEncodingWriter urlEnc = new URLEncodingWriter(streamWriter);
+
+ TransformerFactory tf = TransformerFactory.newInstance();
+ Transformer transformer = tf.newTransformer();
+ Source source = new DOMSource(request);
+ Result result = new StreamResult(urlEnc);
+ transformer.transform(source, result);
+ urlEnc.flush();
+ streamWriter.flush();
+ outputStream.close();
+ responseCode = connection.getResponseCode();
+
+ } catch (ProtocolException e) {
+ throw new RuntimeException(e);
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException(e);
+ }
+
+ if (responseCode == 200) {
+ String[] contentType = connection.getContentType().split(";", 2);
+
+ if ("text/xml".equals(contentType[0])) {
+
+ Reader streamReader;
+ try {
+ InputStream inputStream = connection.getInputStream();
+
+ String charset = "ISO-8859-1";
+ if (contentType.length > 1
+ && (contentType[1].trim()).startsWith("charset=")) {
+ charset = contentType[1].split("=", 2)[1];
+ }
+
+ streamReader = new InputStreamReader(inputStream, charset);
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException(e);
+ }
+
+ if (JAXBElement.class.isAssignableFrom(responseType)) {
+ Object obj;
+ try {
+ Unmarshaller unmarshaller = getJAXBContext().createUnmarshaller();
+ obj = unmarshaller.unmarshal(streamReader);
+ } catch (JAXBException e) {
+ throw new SLException(9000, e);
+ }
+ if (obj instanceof JAXBElement<?>) {
+ return obj;
+ } else {
+ throw new SLException(9000, "Got unexpected response.");
+ }
+ } else if (Element.class.isAssignableFrom(responseType)) {
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ dbf.setNamespaceAware(true);
+ Document doc;
+ try {
+ DocumentBuilder db = dbf.newDocumentBuilder();
+ doc = db.parse(new InputSource(streamReader));
+ } catch (ParserConfigurationException e) {
+ throw new SLException(9000, e);
+ } catch (SAXException e) {
+ throw new SLException(9000, e);
+ } catch (IOException e) {
+ throw new SLException(9000, e);
+ }
+ return doc.getDocumentElement();
+ } else {
+ throw new SLException(9000, "Unsupported response type "
+ + responseType);
+ }
+
+ } else {
+ throw new SLException(9000, "Got unexpected content type "
+ + contentType + ".");
+ }
+ } else {
+ throw new SLException(9000, "Got unexpected response code "
+ + responseCode + ".");
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/SLException.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/SLException.java
new file mode 100644
index 00000000..4b43d6e7
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/SLException.java
@@ -0,0 +1,40 @@
+package moaspss;
+
+public class SLException extends Exception {
+
+ private static final long serialVersionUID = 1L;
+
+ private int code;
+
+ private String info;
+
+ public SLException() {
+ super();
+ }
+
+ public SLException(int code, String info) {
+ super(code + ": " + info);
+ this.code = code;
+ this.info = info;
+ }
+
+ public SLException(Throwable cause, int code, String info) {
+ super(code + ": " + info, cause);
+ this.code = code;
+ this.info = info;
+ }
+
+ public SLException(int code, Throwable cause) {
+ super(code + ": " + cause.getMessage(), cause);
+ this.code = code;
+ }
+
+ public int getCode() {
+ return code;
+ }
+
+ public String getInfo() {
+ return info;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/TestCreateAndVerifySignature.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/TestCreateAndVerifySignature.java
new file mode 100644
index 00000000..a9397d31
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/TestCreateAndVerifySignature.java
@@ -0,0 +1,163 @@
+package moaspss;
+
+import static junit.framework.Assert.fail;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+import java.util.Iterator;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.TransformerException;
+
+import moaspss.generated.KeyInfoType;
+import moaspss.generated.VerifyXMLSignatureResponseType;
+import moaspss.generated.X509DataType;
+
+import org.junit.Ignore;
+import org.junit.Test;
+import org.w3c.dom.Document;
+import org.w3c.dom.DocumentFragment;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.xml.sax.SAXException;
+
+import at.buergerkarte.namespaces.securitylayer._1.ErrorResponseType;
+
+//@Ignore
+public class TestCreateAndVerifySignature {
+
+ protected Element parseCreateXMLSignatureRequest(InputStream is)
+ throws ParserConfigurationException, SAXException, IOException {
+
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ dbf.setNamespaceAware(true);
+ Document doc;
+ DocumentBuilder db = dbf.newDocumentBuilder();
+ doc = db.parse(is);
+
+ Element docElem = doc.getDocumentElement();
+ if ("http://www.buergerkarte.at/namespaces/securitylayer/1.2#".equals(docElem.getNamespaceURI())
+ && "CreateXMLSignatureRequest".equals(docElem.getLocalName())) {
+ return docElem;
+ } else {
+ return null;
+ }
+
+ }
+
+ protected DocumentFragment getXMLSignatureFromResponse(String xpath, Object response) throws SLException, JAXBException {
+
+ if (response instanceof Element) {
+
+ Element respElem = (Element) response;
+ if ("http://www.buergerkarte.at/namespaces/securitylayer/1.2#".equals(respElem.getNamespaceURI())
+ && "CreateXMLSignatureResponse".equals(respElem.getLocalName())) {
+
+ NodeList childNodes = respElem.getChildNodes();
+
+ Document doc = respElem.getOwnerDocument();
+ DocumentFragment fragment = doc.createDocumentFragment();
+
+ for (int i = 0; i < childNodes.getLength(); i++) {
+ fragment.appendChild(childNodes.item(i));
+ }
+
+ return fragment;
+
+ } else {
+ Unmarshaller unmarshaller = SLClient.getJAXBContext().createUnmarshaller();
+ Object obj = unmarshaller.unmarshal(respElem);
+
+ if (obj instanceof JAXBElement<?>) {
+ JAXBElement<?> element = (JAXBElement<?>) obj;
+ if (element.getValue() instanceof ErrorResponseType) {
+ ErrorResponseType error = (ErrorResponseType) element.getValue();
+ throw new SLException(error.getErrorCode(), error.getInfo());
+ }
+ }
+ }
+ }
+
+ return null;
+
+ }
+
+ public X509Certificate getCertFromKeyInfo(KeyInfoType keyInfo) throws CertificateException {
+
+ Iterator<Object> keyInfos = keyInfo.getContent().iterator();
+ while (keyInfos.hasNext()) {
+ Object ki = keyInfos.next();
+ if (ki instanceof JAXBElement<?>
+ && X509DataType.class.isAssignableFrom(((JAXBElement<?>) ki)
+ .getDeclaredType())) {
+ X509DataType x509data = (X509DataType) ((JAXBElement<?>) ki).getValue();
+ Iterator<Object> contents = x509data
+ .getX509IssuerSerialOrX509SKIOrX509SubjectName().iterator();
+ while (contents.hasNext()) {
+ Object content = (Object) contents.next();
+ if (byte[].class.isAssignableFrom(((JAXBElement<?>) content)
+ .getDeclaredType())) {
+ CertificateFactory certFactory = CertificateFactory.getInstance("X509");
+ byte[] b = (byte[]) ((JAXBElement<?>) content).getValue();
+ return (X509Certificate) certFactory.generateCertificate(new ByteArrayInputStream(b));
+ }
+ }
+
+ }
+ }
+
+ return null;
+
+ }
+
+ @Test
+ public void testCreateAndVerifyXMLSignature()
+ throws ParserConfigurationException, SAXException, IOException,
+ TransformerException, JAXBException, ClassCastException,
+ ClassNotFoundException, InstantiationException, IllegalAccessException, CertificateException {
+
+ ClassLoader cl = TestCreateAndVerifySignature.class.getClassLoader();
+ InputStream is = cl.getResourceAsStream("moaspss/CreateXMLSignatureRequest.xml");
+ Element cxsReq = parseCreateXMLSignatureRequest(is);
+
+ Node cxsResp;
+ try {
+ SLClient slClient = new SLClient();
+ Object response = slClient.submitRequest(cxsReq, Element.class);
+ cxsResp = getXMLSignatureFromResponse(".", response);
+ } catch (SLException e) {
+ fail(e.getMessage());
+ return;
+ }
+
+ MOASPClient spClient = new MOASPClient();
+ JAXBElement<VerifyXMLSignatureResponseType> verifySignature = spClient.verifySignature(cxsResp, ".", "qualifiedSignature+Test");
+ VerifyXMLSignatureResponseType vxsResp = verifySignature.getValue();
+ int signatureCheck = vxsResp.getSignatureCheck().getCode().intValue();
+ if (signatureCheck != 0) {
+ fail("SignatureCheck = " + signatureCheck);
+ }
+ int certificateCheck = vxsResp.getCertificateCheck().getCode().intValue();
+ if (certificateCheck != 0) {
+
+ X509Certificate certificate = getCertFromKeyInfo(vxsResp.getSignerInfo());
+ if (certificate != null) {
+ System.out.println(certificate);
+ }
+
+ fail("CertificateCheck = " + certificateCheck);
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/AllSignatoriesType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/AllSignatoriesType.java
new file mode 100644
index 00000000..99e28c1a
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/AllSignatoriesType.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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for AllSignatoriesType.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="AllSignatoriesType">
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="all"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ *
+ */
+@XmlType(name = "AllSignatoriesType")
+@XmlEnum
+public enum AllSignatoriesType {
+
+ @XmlEnumValue("all")
+ ALL("all");
+ private final String value;
+
+ AllSignatoriesType(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static AllSignatoriesType fromValue(String v) {
+ for (AllSignatoriesType c: AllSignatoriesType.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ throw new IllegalArgumentException(v);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/AnyChildrenType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/AnyChildrenType.java
new file mode 100644
index 00000000..81dd4472
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/AnyChildrenType.java
@@ -0,0 +1,96 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for AnyChildrenType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AnyChildrenType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AnyChildrenType", propOrder = {
+ "content"
+})
+@XmlSeeAlso({
+ ReferencesCheckResultInfoType.class,
+ XMLContentType.class,
+ ManifestRefsCheckResultInfoType.class
+})
+public class AnyChildrenType {
+
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ * {@link Object }
+ * {@link Element }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CMSContentBaseType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CMSContentBaseType.java
new file mode 100644
index 00000000..7356b655
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CMSContentBaseType.java
@@ -0,0 +1,51 @@
+/*
+* 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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CMSContentBaseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CMSContentBaseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://reference.e-government.gv.at/namespace/moa/20020822#}ContentOptionalRefType">
+ * &lt;choice minOccurs="0">
+ * &lt;element name="Base64Content" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CMSContentBaseType")
+public class CMSContentBaseType
+ extends ContentOptionalRefType
+{
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CMSDataObjectOptionalMetaType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CMSDataObjectOptionalMetaType.java
new file mode 100644
index 00000000..887e7de5
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CMSDataObjectOptionalMetaType.java
@@ -0,0 +1,106 @@
+/*
+* 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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CMSDataObjectOptionalMetaType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CMSDataObjectOptionalMetaType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="MetaInfo" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}MetaInfoType" minOccurs="0"/>
+ * &lt;element name="Content" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}CMSContentBaseType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CMSDataObjectOptionalMetaType", propOrder = {
+ "metaInfo",
+ "content"
+})
+public class CMSDataObjectOptionalMetaType {
+
+ @XmlElement(name = "MetaInfo")
+ protected MetaInfoType metaInfo;
+ @XmlElement(name = "Content", required = true)
+ protected CMSContentBaseType content;
+
+ /**
+ * Gets the value of the metaInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link MetaInfoType }
+ *
+ */
+ public MetaInfoType getMetaInfo() {
+ return metaInfo;
+ }
+
+ /**
+ * Sets the value of the metaInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link MetaInfoType }
+ *
+ */
+ public void setMetaInfo(MetaInfoType value) {
+ this.metaInfo = value;
+ }
+
+ /**
+ * Gets the value of the content property.
+ *
+ * @return
+ * possible object is
+ * {@link CMSContentBaseType }
+ *
+ */
+ public CMSContentBaseType getContent() {
+ return content;
+ }
+
+ /**
+ * Sets the value of the content property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CMSContentBaseType }
+ *
+ */
+ public void setContent(CMSContentBaseType value) {
+ this.content = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CanonicalizationMethodType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CanonicalizationMethodType.java
new file mode 100644
index 00000000..889419db
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CanonicalizationMethodType.java
@@ -0,0 +1,118 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CanonicalizationMethodType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CanonicalizationMethodType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;attribute name="Algorithm" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CanonicalizationMethodType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "content"
+})
+public class CanonicalizationMethodType {
+
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+ @XmlAttribute(name = "Algorithm", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String algorithm;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Object }
+ * {@link String }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+ /**
+ * Gets the value of the algorithm property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAlgorithm() {
+ return algorithm;
+ }
+
+ /**
+ * Sets the value of the algorithm property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAlgorithm(String value) {
+ this.algorithm = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CheckResultType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CheckResultType.java
new file mode 100644
index 00000000..48f28dac
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CheckResultType.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 moaspss.generated;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CheckResultType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CheckResultType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Code" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger"/>
+ * &lt;element name="Info" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}AnyChildrenType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CheckResultType", propOrder = {
+ "code",
+ "info"
+})
+@XmlSeeAlso({
+ ManifestRefsCheckResultType.class,
+ ReferencesCheckResultType.class
+})
+public class CheckResultType {
+
+ @XmlElement(name = "Code", required = true)
+ @XmlSchemaType(name = "nonNegativeInteger")
+ protected BigInteger code;
+ @XmlElement(name = "Info")
+ protected AnyChildrenType info;
+
+ /**
+ * Gets the value of the code property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getCode() {
+ return code;
+ }
+
+ /**
+ * Sets the value of the code property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setCode(BigInteger value) {
+ this.code = value;
+ }
+
+ /**
+ * Gets the value of the info property.
+ *
+ * @return
+ * possible object is
+ * {@link AnyChildrenType }
+ *
+ */
+ public AnyChildrenType getInfo() {
+ return info;
+ }
+
+ /**
+ * Sets the value of the info property.
+ *
+ * @param value
+ * allowed object is
+ * {@link AnyChildrenType }
+ *
+ */
+ public void setInfo(AnyChildrenType value) {
+ this.info = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentBaseType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentBaseType.java
new file mode 100644
index 00000000..ffd96202
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentBaseType.java
@@ -0,0 +1,139 @@
+/*
+* 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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ContentBaseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ContentBaseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice minOccurs="0">
+ * &lt;element name="Base64Content" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="XMLContent" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}XMLContentType"/>
+ * &lt;element name="LocRefContent" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ContentBaseType", propOrder = {
+ "base64Content",
+ "xmlContent",
+ "locRefContent"
+})
+@XmlSeeAlso({
+ ContentExLocRefBaseType.class,
+ ContentOptionalRefType.class
+})
+public class ContentBaseType {
+
+ @XmlElement(name = "Base64Content")
+ protected byte[] base64Content;
+ @XmlElement(name = "XMLContent")
+ protected XMLContentType xmlContent;
+ @XmlElement(name = "LocRefContent")
+ @XmlSchemaType(name = "anyURI")
+ protected String locRefContent;
+
+ /**
+ * Gets the value of the base64Content property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getBase64Content() {
+ return base64Content;
+ }
+
+ /**
+ * Sets the value of the base64Content property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setBase64Content(byte[] value) {
+ this.base64Content = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the xmlContent property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLContentType }
+ *
+ */
+ public XMLContentType getXMLContent() {
+ return xmlContent;
+ }
+
+ /**
+ * Sets the value of the xmlContent property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLContentType }
+ *
+ */
+ public void setXMLContent(XMLContentType value) {
+ this.xmlContent = value;
+ }
+
+ /**
+ * Gets the value of the locRefContent property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getLocRefContent() {
+ return locRefContent;
+ }
+
+ /**
+ * Sets the value of the locRefContent property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setLocRefContent(String value) {
+ this.locRefContent = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentExLocRefBaseType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentExLocRefBaseType.java
new file mode 100644
index 00000000..00a884f0
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentExLocRefBaseType.java
@@ -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.
+*/
+
+package moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ContentExLocRefBaseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ContentExLocRefBaseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://reference.e-government.gv.at/namespace/moa/20020822#}ContentBaseType">
+ * &lt;choice minOccurs="0">
+ * &lt;element name="Base64Content" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="XMLContent" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}XMLContentType"/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ContentExLocRefBaseType")
+@XmlSeeAlso({
+ InputDataType.class
+})
+public class ContentExLocRefBaseType
+ extends ContentBaseType
+{
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentOptionalRefType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentOptionalRefType.java
new file mode 100644
index 00000000..73cdfcf9
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentOptionalRefType.java
@@ -0,0 +1,84 @@
+/*
+* 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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ContentOptionalRefType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ContentOptionalRefType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/moa/20020822#}ContentBaseType">
+ * &lt;attribute name="Reference" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ContentOptionalRefType")
+@XmlSeeAlso({
+ CMSContentBaseType.class,
+ ContentRequiredRefType.class,
+ moaspss.generated.DataObjectInfoType.DataObject.class
+})
+public class ContentOptionalRefType
+ extends ContentBaseType
+{
+
+ @XmlAttribute(name = "Reference")
+ @XmlSchemaType(name = "anyURI")
+ protected String reference;
+
+ /**
+ * Gets the value of the reference property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getReference() {
+ return reference;
+ }
+
+ /**
+ * Sets the value of the reference property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setReference(String value) {
+ this.reference = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentRequiredRefType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentRequiredRefType.java
new file mode 100644
index 00000000..4b9f7524
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ContentRequiredRefType.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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ContentRequiredRefType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ContentRequiredRefType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://reference.e-government.gv.at/namespace/moa/20020822#}ContentOptionalRefType">
+ * &lt;choice minOccurs="0">
+ * &lt;element name="Base64Content" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="XMLContent" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}XMLContentType"/>
+ * &lt;element name="LocRefContent" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;/choice>
+ * &lt;attribute name="Reference" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ContentRequiredRefType")
+public class ContentRequiredRefType
+ extends ContentOptionalRefType
+{
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateSignatureEnvironmentProfile.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateSignatureEnvironmentProfile.java
new file mode 100644
index 00000000..22d7ef7c
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateSignatureEnvironmentProfile.java
@@ -0,0 +1,115 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="CreateSignatureLocation" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}CreateSignatureLocationType"/>
+ * &lt;element name="Supplement" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}XMLDataObjectAssociationType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "createSignatureLocation",
+ "supplement"
+})
+@XmlRootElement(name = "CreateSignatureEnvironmentProfile")
+public class CreateSignatureEnvironmentProfile {
+
+ @XmlElement(name = "CreateSignatureLocation", required = true)
+ protected CreateSignatureLocationType createSignatureLocation;
+ @XmlElement(name = "Supplement")
+ protected List<XMLDataObjectAssociationType> supplement;
+
+ /**
+ * Gets the value of the createSignatureLocation property.
+ *
+ * @return
+ * possible object is
+ * {@link CreateSignatureLocationType }
+ *
+ */
+ public CreateSignatureLocationType getCreateSignatureLocation() {
+ return createSignatureLocation;
+ }
+
+ /**
+ * Sets the value of the createSignatureLocation property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CreateSignatureLocationType }
+ *
+ */
+ public void setCreateSignatureLocation(CreateSignatureLocationType value) {
+ this.createSignatureLocation = value;
+ }
+
+ /**
+ * Gets the value of the supplement property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the supplement property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSupplement().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link XMLDataObjectAssociationType }
+ *
+ *
+ */
+ public List<XMLDataObjectAssociationType> getSupplement() {
+ if (supplement == null) {
+ supplement = new ArrayList<XMLDataObjectAssociationType>();
+ }
+ return this.supplement;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateSignatureLocationType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateSignatureLocationType.java
new file mode 100644
index 00000000..f6278d07
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateSignatureLocationType.java
@@ -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.
+*/
+
+package moaspss.generated;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for CreateSignatureLocationType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CreateSignatureLocationType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>token">
+ * &lt;attribute name="Index" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CreateSignatureLocationType", propOrder = {
+ "value"
+})
+public class CreateSignatureLocationType {
+
+ @XmlValue
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String value;
+ @XmlAttribute(name = "Index", required = true)
+ protected BigInteger index;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the index property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getIndex() {
+ return index;
+ }
+
+ /**
+ * Sets the value of the index property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setIndex(BigInteger value) {
+ this.index = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateTransformsInfoProfile.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateTransformsInfoProfile.java
new file mode 100644
index 00000000..d39c2a63
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateTransformsInfoProfile.java
@@ -0,0 +1,115 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="CreateTransformsInfo" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}TransformsInfoType"/>
+ * &lt;element ref="{http://reference.e-government.gv.at/namespace/moa/20020822#}Supplement" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "createTransformsInfo",
+ "supplement"
+})
+@XmlRootElement(name = "CreateTransformsInfoProfile")
+public class CreateTransformsInfoProfile {
+
+ @XmlElement(name = "CreateTransformsInfo", required = true)
+ protected TransformsInfoType createTransformsInfo;
+ @XmlElement(name = "Supplement")
+ protected List<XMLDataObjectAssociationType> supplement;
+
+ /**
+ * Gets the value of the createTransformsInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link TransformsInfoType }
+ *
+ */
+ public TransformsInfoType getCreateTransformsInfo() {
+ return createTransformsInfo;
+ }
+
+ /**
+ * Sets the value of the createTransformsInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TransformsInfoType }
+ *
+ */
+ public void setCreateTransformsInfo(TransformsInfoType value) {
+ this.createTransformsInfo = value;
+ }
+
+ /**
+ * Gets the value of the supplement property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the supplement property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSupplement().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link XMLDataObjectAssociationType }
+ *
+ *
+ */
+ public List<XMLDataObjectAssociationType> getSupplement() {
+ if (supplement == null) {
+ supplement = new ArrayList<XMLDataObjectAssociationType>();
+ }
+ return this.supplement;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateXMLSignatureRequest.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateXMLSignatureRequest.java
new file mode 100644
index 00000000..92dc9b4b
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateXMLSignatureRequest.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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/moa/20020822#}CreateXMLSignatureRequestType">
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "")
+@XmlRootElement(name = "CreateXMLSignatureRequest")
+public class CreateXMLSignatureRequest
+ extends CreateXMLSignatureRequestType
+{
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateXMLSignatureRequestType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateXMLSignatureRequestType.java
new file mode 100644
index 00000000..aad14567
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateXMLSignatureRequestType.java
@@ -0,0 +1,466 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for CreateXMLSignatureRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CreateXMLSignatureRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="KeyIdentifier" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}KeyIdentifierType"/>
+ * &lt;element name="SingleSignatureInfo" maxOccurs="unbounded">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="DataObjectInfo" maxOccurs="unbounded">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/moa/20020822#}DataObjectInfoType">
+ * &lt;attribute name="ChildOfManifest" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="CreateSignatureInfo" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="CreateSignatureEnvironment" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}ContentOptionalRefType"/>
+ * &lt;choice>
+ * &lt;element ref="{http://reference.e-government.gv.at/namespace/moa/20020822#}CreateSignatureEnvironmentProfile"/>
+ * &lt;element name="CreateSignatureEnvironmentProfileID" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}ProfileIdentifierType"/>
+ * &lt;/choice>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;attribute name="SecurityLayerConformity" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CreateXMLSignatureRequestType", propOrder = {
+ "keyIdentifier",
+ "singleSignatureInfo"
+})
+@XmlSeeAlso({
+ CreateXMLSignatureRequest.class
+})
+public class CreateXMLSignatureRequestType {
+
+ @XmlElement(name = "KeyIdentifier", required = true)
+ protected String keyIdentifier;
+ @XmlElement(name = "SingleSignatureInfo", required = true)
+ protected List<CreateXMLSignatureRequestType.SingleSignatureInfo> singleSignatureInfo;
+
+ /**
+ * Gets the value of the keyIdentifier property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getKeyIdentifier() {
+ return keyIdentifier;
+ }
+
+ /**
+ * Sets the value of the keyIdentifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setKeyIdentifier(String value) {
+ this.keyIdentifier = value;
+ }
+
+ /**
+ * Gets the value of the singleSignatureInfo property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the singleSignatureInfo property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSingleSignatureInfo().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link CreateXMLSignatureRequestType.SingleSignatureInfo }
+ *
+ *
+ */
+ public List<CreateXMLSignatureRequestType.SingleSignatureInfo> getSingleSignatureInfo() {
+ if (singleSignatureInfo == null) {
+ singleSignatureInfo = new ArrayList<CreateXMLSignatureRequestType.SingleSignatureInfo>();
+ }
+ return this.singleSignatureInfo;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="DataObjectInfo" maxOccurs="unbounded">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/moa/20020822#}DataObjectInfoType">
+ * &lt;attribute name="ChildOfManifest" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="CreateSignatureInfo" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="CreateSignatureEnvironment" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}ContentOptionalRefType"/>
+ * &lt;choice>
+ * &lt;element ref="{http://reference.e-government.gv.at/namespace/moa/20020822#}CreateSignatureEnvironmentProfile"/>
+ * &lt;element name="CreateSignatureEnvironmentProfileID" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}ProfileIdentifierType"/>
+ * &lt;/choice>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;attribute name="SecurityLayerConformity" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "", propOrder = {
+ "dataObjectInfo",
+ "createSignatureInfo"
+ })
+ public static class SingleSignatureInfo {
+
+ @XmlElement(name = "DataObjectInfo", required = true)
+ protected List<CreateXMLSignatureRequestType.SingleSignatureInfo.DataObjectInfo> dataObjectInfo;
+ @XmlElement(name = "CreateSignatureInfo")
+ protected CreateXMLSignatureRequestType.SingleSignatureInfo.CreateSignatureInfo createSignatureInfo;
+ @XmlAttribute(name = "SecurityLayerConformity")
+ protected Boolean securityLayerConformity;
+
+ /**
+ * Gets the value of the dataObjectInfo property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the dataObjectInfo property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getDataObjectInfo().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link CreateXMLSignatureRequestType.SingleSignatureInfo.DataObjectInfo }
+ *
+ *
+ */
+ public List<CreateXMLSignatureRequestType.SingleSignatureInfo.DataObjectInfo> getDataObjectInfo() {
+ if (dataObjectInfo == null) {
+ dataObjectInfo = new ArrayList<CreateXMLSignatureRequestType.SingleSignatureInfo.DataObjectInfo>();
+ }
+ return this.dataObjectInfo;
+ }
+
+ /**
+ * Gets the value of the createSignatureInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link CreateXMLSignatureRequestType.SingleSignatureInfo.CreateSignatureInfo }
+ *
+ */
+ public CreateXMLSignatureRequestType.SingleSignatureInfo.CreateSignatureInfo getCreateSignatureInfo() {
+ return createSignatureInfo;
+ }
+
+ /**
+ * Sets the value of the createSignatureInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CreateXMLSignatureRequestType.SingleSignatureInfo.CreateSignatureInfo }
+ *
+ */
+ public void setCreateSignatureInfo(CreateXMLSignatureRequestType.SingleSignatureInfo.CreateSignatureInfo value) {
+ this.createSignatureInfo = value;
+ }
+
+ /**
+ * Gets the value of the securityLayerConformity property.
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public boolean isSecurityLayerConformity() {
+ if (securityLayerConformity == null) {
+ return true;
+ } else {
+ return securityLayerConformity;
+ }
+ }
+
+ /**
+ * Sets the value of the securityLayerConformity property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setSecurityLayerConformity(Boolean value) {
+ this.securityLayerConformity = value;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="CreateSignatureEnvironment" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}ContentOptionalRefType"/>
+ * &lt;choice>
+ * &lt;element ref="{http://reference.e-government.gv.at/namespace/moa/20020822#}CreateSignatureEnvironmentProfile"/>
+ * &lt;element name="CreateSignatureEnvironmentProfileID" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}ProfileIdentifierType"/>
+ * &lt;/choice>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "", propOrder = {
+ "createSignatureEnvironment",
+ "createSignatureEnvironmentProfile",
+ "createSignatureEnvironmentProfileID"
+ })
+ public static class CreateSignatureInfo {
+
+ @XmlElement(name = "CreateSignatureEnvironment", required = true)
+ protected ContentOptionalRefType createSignatureEnvironment;
+ @XmlElement(name = "CreateSignatureEnvironmentProfile")
+ protected CreateSignatureEnvironmentProfile createSignatureEnvironmentProfile;
+ @XmlElement(name = "CreateSignatureEnvironmentProfileID")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected String createSignatureEnvironmentProfileID;
+
+ /**
+ * Gets the value of the createSignatureEnvironment property.
+ *
+ * @return
+ * possible object is
+ * {@link ContentOptionalRefType }
+ *
+ */
+ public ContentOptionalRefType getCreateSignatureEnvironment() {
+ return createSignatureEnvironment;
+ }
+
+ /**
+ * Sets the value of the createSignatureEnvironment property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ContentOptionalRefType }
+ *
+ */
+ public void setCreateSignatureEnvironment(ContentOptionalRefType value) {
+ this.createSignatureEnvironment = value;
+ }
+
+ /**
+ * Gets the value of the createSignatureEnvironmentProfile property.
+ *
+ * @return
+ * possible object is
+ * {@link CreateSignatureEnvironmentProfile }
+ *
+ */
+ public CreateSignatureEnvironmentProfile getCreateSignatureEnvironmentProfile() {
+ return createSignatureEnvironmentProfile;
+ }
+
+ /**
+ * Sets the value of the createSignatureEnvironmentProfile property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CreateSignatureEnvironmentProfile }
+ *
+ */
+ public void setCreateSignatureEnvironmentProfile(CreateSignatureEnvironmentProfile value) {
+ this.createSignatureEnvironmentProfile = value;
+ }
+
+ /**
+ * Gets the value of the createSignatureEnvironmentProfileID property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getCreateSignatureEnvironmentProfileID() {
+ return createSignatureEnvironmentProfileID;
+ }
+
+ /**
+ * Sets the value of the createSignatureEnvironmentProfileID property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setCreateSignatureEnvironmentProfileID(String value) {
+ this.createSignatureEnvironmentProfileID = value;
+ }
+
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/moa/20020822#}DataObjectInfoType">
+ * &lt;attribute name="ChildOfManifest" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "")
+ public static class DataObjectInfo
+ extends DataObjectInfoType
+ {
+
+ @XmlAttribute(name = "ChildOfManifest")
+ protected Boolean childOfManifest;
+
+ /**
+ * Gets the value of the childOfManifest property.
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public boolean isChildOfManifest() {
+ if (childOfManifest == null) {
+ return false;
+ } else {
+ return childOfManifest;
+ }
+ }
+
+ /**
+ * Sets the value of the childOfManifest property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setChildOfManifest(Boolean value) {
+ this.childOfManifest = value;
+ }
+
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateXMLSignatureResponseType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateXMLSignatureResponseType.java
new file mode 100644
index 00000000..1b320998
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/CreateXMLSignatureResponseType.java
@@ -0,0 +1,160 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for CreateXMLSignatureResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CreateXMLSignatureResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice maxOccurs="unbounded">
+ * &lt;element name="SignatureEnvironment">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element ref="{http://reference.e-government.gv.at/namespace/moa/20020822#}ErrorResponse"/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CreateXMLSignatureResponseType", propOrder = {
+ "signatureEnvironmentOrErrorResponse"
+})
+public class CreateXMLSignatureResponseType {
+
+ @XmlElements({
+ @XmlElement(name = "ErrorResponse", type = ErrorResponseType.class),
+ @XmlElement(name = "SignatureEnvironment", type = CreateXMLSignatureResponseType.SignatureEnvironment.class)
+ })
+ protected List<Object> signatureEnvironmentOrErrorResponse;
+
+ /**
+ * Gets the value of the signatureEnvironmentOrErrorResponse property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the signatureEnvironmentOrErrorResponse property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSignatureEnvironmentOrErrorResponse().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link ErrorResponseType }
+ * {@link CreateXMLSignatureResponseType.SignatureEnvironment }
+ *
+ *
+ */
+ public List<Object> getSignatureEnvironmentOrErrorResponse() {
+ if (signatureEnvironmentOrErrorResponse == null) {
+ signatureEnvironmentOrErrorResponse = new ArrayList<Object>();
+ }
+ return this.signatureEnvironmentOrErrorResponse;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "", propOrder = {
+ "any"
+ })
+ public static class SignatureEnvironment {
+
+ @XmlAnyElement(lax = true)
+ protected Object any;
+
+ /**
+ * Gets the value of the any property.
+ *
+ * @return
+ * possible object is
+ * {@link Object }
+ * {@link Element }
+ *
+ */
+ public Object getAny() {
+ return any;
+ }
+
+ /**
+ * Sets the value of the any property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Object }
+ * {@link Element }
+ *
+ */
+ public void setAny(Object value) {
+ this.any = value;
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/DSAKeyValueType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/DSAKeyValueType.java
new file mode 100644
index 00000000..085452f4
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/DSAKeyValueType.java
@@ -0,0 +1,236 @@
+/*
+* 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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DSAKeyValueType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="DSAKeyValueType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;sequence minOccurs="0">
+ * &lt;element name="P" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ * &lt;element name="Q" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ * &lt;/sequence>
+ * &lt;element name="G" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary" minOccurs="0"/>
+ * &lt;element name="Y" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ * &lt;element name="J" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary" minOccurs="0"/>
+ * &lt;sequence minOccurs="0">
+ * &lt;element name="Seed" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ * &lt;element name="PgenCounter" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ * &lt;/sequence>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DSAKeyValueType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "p",
+ "q",
+ "g",
+ "y",
+ "j",
+ "seed",
+ "pgenCounter"
+})
+public class DSAKeyValueType {
+
+ @XmlElement(name = "P")
+ protected byte[] p;
+ @XmlElement(name = "Q")
+ protected byte[] q;
+ @XmlElement(name = "G")
+ protected byte[] g;
+ @XmlElement(name = "Y", required = true)
+ protected byte[] y;
+ @XmlElement(name = "J")
+ protected byte[] j;
+ @XmlElement(name = "Seed")
+ protected byte[] seed;
+ @XmlElement(name = "PgenCounter")
+ protected byte[] pgenCounter;
+
+ /**
+ * Gets the value of the p property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getP() {
+ return p;
+ }
+
+ /**
+ * Sets the value of the p property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setP(byte[] value) {
+ this.p = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the q property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getQ() {
+ return q;
+ }
+
+ /**
+ * Sets the value of the q property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setQ(byte[] value) {
+ this.q = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the g property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getG() {
+ return g;
+ }
+
+ /**
+ * Sets the value of the g property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setG(byte[] value) {
+ this.g = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the y property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getY() {
+ return y;
+ }
+
+ /**
+ * Sets the value of the y property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setY(byte[] value) {
+ this.y = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the j property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getJ() {
+ return j;
+ }
+
+ /**
+ * Sets the value of the j property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setJ(byte[] value) {
+ this.j = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the seed property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getSeed() {
+ return seed;
+ }
+
+ /**
+ * Sets the value of the seed property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setSeed(byte[] value) {
+ this.seed = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the pgenCounter property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getPgenCounter() {
+ return pgenCounter;
+ }
+
+ /**
+ * Sets the value of the pgenCounter property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setPgenCounter(byte[] value) {
+ this.pgenCounter = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/DataObjectInfoType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/DataObjectInfoType.java
new file mode 100644
index 00000000..b5f6fe27
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/DataObjectInfoType.java
@@ -0,0 +1,211 @@
+/*
+* 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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for DataObjectInfoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="DataObjectInfoType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="DataObject">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/moa/20020822#}ContentOptionalRefType">
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;choice>
+ * &lt;element ref="{http://reference.e-government.gv.at/namespace/moa/20020822#}CreateTransformsInfoProfile"/>
+ * &lt;element name="CreateTransformsInfoProfileID" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}ProfileIdentifierType"/>
+ * &lt;/choice>
+ * &lt;/sequence>
+ * &lt;attribute name="Structure" use="required">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="detached"/>
+ * &lt;enumeration value="enveloping"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/attribute>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DataObjectInfoType", propOrder = {
+ "dataObject",
+ "createTransformsInfoProfile",
+ "createTransformsInfoProfileID"
+})
+@XmlSeeAlso({
+ moaspss.generated.CreateXMLSignatureRequestType.SingleSignatureInfo.DataObjectInfo.class
+})
+public class DataObjectInfoType {
+
+ @XmlElement(name = "DataObject", required = true)
+ protected DataObjectInfoType.DataObject dataObject;
+ @XmlElement(name = "CreateTransformsInfoProfile")
+ protected CreateTransformsInfoProfile createTransformsInfoProfile;
+ @XmlElement(name = "CreateTransformsInfoProfileID")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected String createTransformsInfoProfileID;
+ @XmlAttribute(name = "Structure", required = true)
+ protected String structure;
+
+ /**
+ * Gets the value of the dataObject property.
+ *
+ * @return
+ * possible object is
+ * {@link DataObjectInfoType.DataObject }
+ *
+ */
+ public DataObjectInfoType.DataObject getDataObject() {
+ return dataObject;
+ }
+
+ /**
+ * Sets the value of the dataObject property.
+ *
+ * @param value
+ * allowed object is
+ * {@link DataObjectInfoType.DataObject }
+ *
+ */
+ public void setDataObject(DataObjectInfoType.DataObject value) {
+ this.dataObject = value;
+ }
+
+ /**
+ * Gets the value of the createTransformsInfoProfile property.
+ *
+ * @return
+ * possible object is
+ * {@link CreateTransformsInfoProfile }
+ *
+ */
+ public CreateTransformsInfoProfile getCreateTransformsInfoProfile() {
+ return createTransformsInfoProfile;
+ }
+
+ /**
+ * Sets the value of the createTransformsInfoProfile property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CreateTransformsInfoProfile }
+ *
+ */
+ public void setCreateTransformsInfoProfile(CreateTransformsInfoProfile value) {
+ this.createTransformsInfoProfile = value;
+ }
+
+ /**
+ * Gets the value of the createTransformsInfoProfileID property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getCreateTransformsInfoProfileID() {
+ return createTransformsInfoProfileID;
+ }
+
+ /**
+ * Sets the value of the createTransformsInfoProfileID property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setCreateTransformsInfoProfileID(String value) {
+ this.createTransformsInfoProfileID = value;
+ }
+
+ /**
+ * Gets the value of the structure property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getStructure() {
+ return structure;
+ }
+
+ /**
+ * Sets the value of the structure property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setStructure(String value) {
+ this.structure = value;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/moa/20020822#}ContentOptionalRefType">
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "")
+ public static class DataObject
+ extends ContentOptionalRefType
+ {
+
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/DigestMethodType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/DigestMethodType.java
new file mode 100644
index 00000000..7abbc50f
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/DigestMethodType.java
@@ -0,0 +1,120 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for DigestMethodType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="DigestMethodType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;attribute name="Algorithm" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DigestMethodType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "content"
+})
+public class DigestMethodType {
+
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+ @XmlAttribute(name = "Algorithm", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String algorithm;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ * {@link Object }
+ * {@link Element }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+ /**
+ * Gets the value of the algorithm property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAlgorithm() {
+ return algorithm;
+ }
+
+ /**
+ * Sets the value of the algorithm property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAlgorithm(String value) {
+ this.algorithm = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ErrorResponseType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ErrorResponseType.java
new file mode 100644
index 00000000..e39bcf55
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ErrorResponseType.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 moaspss.generated;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ErrorResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ErrorResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ErrorCode" type="{http://www.w3.org/2001/XMLSchema}integer"/>
+ * &lt;element name="Info" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ErrorResponseType", propOrder = {
+ "errorCode",
+ "info"
+})
+public class ErrorResponseType {
+
+ @XmlElement(name = "ErrorCode", required = true)
+ protected BigInteger errorCode;
+ @XmlElement(name = "Info", required = true)
+ protected String info;
+
+ /**
+ * Gets the value of the errorCode property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getErrorCode() {
+ return errorCode;
+ }
+
+ /**
+ * Sets the value of the errorCode property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setErrorCode(BigInteger value) {
+ this.errorCode = value;
+ }
+
+ /**
+ * Gets the value of the info property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getInfo() {
+ return info;
+ }
+
+ /**
+ * Sets the value of the info property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setInfo(String value) {
+ this.info = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/FinalDataMetaInfoType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/FinalDataMetaInfoType.java
new file mode 100644
index 00000000..64fff8ed
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/FinalDataMetaInfoType.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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for FinalDataMetaInfoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="FinalDataMetaInfoType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/moa/20020822#}MetaInfoType">
+ * &lt;sequence>
+ * &lt;element name="Type" type="{http://www.w3.org/2001/XMLSchema}anyURI" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "FinalDataMetaInfoType", propOrder = {
+ "type"
+})
+public class FinalDataMetaInfoType
+ extends MetaInfoType
+{
+
+ @XmlElement(name = "Type")
+ @XmlSchemaType(name = "anyURI")
+ protected String type;
+
+ /**
+ * Gets the value of the type property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * Sets the value of the type property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setType(String value) {
+ this.type = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/InputDataType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/InputDataType.java
new file mode 100644
index 00000000..a95bdce9
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/InputDataType.java
@@ -0,0 +1,120 @@
+/*
+* 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 moaspss.generated;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for InputDataType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InputDataType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/moa/20020822#}ContentExLocRefBaseType">
+ * &lt;attribute name="PartOf" default="SignedInfo">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token">
+ * &lt;enumeration value="SignedInfo"/>
+ * &lt;enumeration value="XMLDSIGManifest"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/attribute>
+ * &lt;attribute name="ReferringSigReference" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InputDataType")
+public class InputDataType
+ extends ContentExLocRefBaseType
+{
+
+ @XmlAttribute(name = "PartOf")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected String partOf;
+ @XmlAttribute(name = "ReferringSigReference")
+ @XmlSchemaType(name = "nonNegativeInteger")
+ protected BigInteger referringSigReference;
+
+ /**
+ * Gets the value of the partOf property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getPartOf() {
+ if (partOf == null) {
+ return "SignedInfo";
+ } else {
+ return partOf;
+ }
+ }
+
+ /**
+ * Sets the value of the partOf property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPartOf(String value) {
+ this.partOf = value;
+ }
+
+ /**
+ * Gets the value of the referringSigReference property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getReferringSigReference() {
+ return referringSigReference;
+ }
+
+ /**
+ * Sets the value of the referringSigReference property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setReferringSigReference(BigInteger value) {
+ this.referringSigReference = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/KeyInfoType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/KeyInfoType.java
new file mode 100644
index 00000000..d12ac599
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/KeyInfoType.java
@@ -0,0 +1,151 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for KeyInfoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="KeyInfoType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice maxOccurs="unbounded">
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}KeyName"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}KeyValue"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}RetrievalMethod"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}X509Data"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}PGPData"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}SPKIData"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}MgmtData"/>
+ * &lt;any/>
+ * &lt;/choice>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "KeyInfoType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "content"
+})
+public class KeyInfoType {
+
+ @XmlElementRefs({
+ @XmlElementRef(name = "MgmtData", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "SPKIData", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "X509Data", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "RetrievalMethod", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "KeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "PGPData", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "KeyName", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class)
+ })
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link JAXBElement }{@code <}{@link String }{@code >}
+ * {@link Element }
+ * {@link JAXBElement }{@code <}{@link SPKIDataType }{@code >}
+ * {@link String }
+ * {@link JAXBElement }{@code <}{@link X509DataType }{@code >}
+ * {@link JAXBElement }{@code <}{@link RetrievalMethodType }{@code >}
+ * {@link JAXBElement }{@code <}{@link KeyValueType }{@code >}
+ * {@link Object }
+ * {@link JAXBElement }{@code <}{@link PGPDataType }{@code >}
+ * {@link JAXBElement }{@code <}{@link String }{@code >}
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/KeyStorageType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/KeyStorageType.java
new file mode 100644
index 00000000..b03332aa
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/KeyStorageType.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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for KeyStorageType.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="KeyStorageType">
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="Software"/>
+ * &lt;enumeration value="Hardware"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ *
+ */
+@XmlType(name = "KeyStorageType")
+@XmlEnum
+public enum KeyStorageType {
+
+ @XmlEnumValue("Software")
+ SOFTWARE("Software"),
+ @XmlEnumValue("Hardware")
+ HARDWARE("Hardware");
+ private final String value;
+
+ KeyStorageType(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static KeyStorageType fromValue(String v) {
+ for (KeyStorageType c: KeyStorageType.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ throw new IllegalArgumentException(v);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/KeyValueType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/KeyValueType.java
new file mode 100644
index 00000000..2744b3e7
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/KeyValueType.java
@@ -0,0 +1,101 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for KeyValueType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="KeyValueType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}DSAKeyValue"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}RSAKeyValue"/>
+ * &lt;any/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "KeyValueType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "content"
+})
+public class KeyValueType {
+
+ @XmlElementRefs({
+ @XmlElementRef(name = "RSAKeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "DSAKeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class)
+ })
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Element }
+ * {@link String }
+ * {@link Object }
+ * {@link JAXBElement }{@code <}{@link DSAKeyValueType }{@code >}
+ * {@link JAXBElement }{@code <}{@link RSAKeyValueType }{@code >}
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/MOAFault.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/MOAFault.java
new file mode 100644
index 00000000..ea986aed
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/MOAFault.java
@@ -0,0 +1,70 @@
+/*
+* 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 moaspss.generated;
+
+import javax.xml.ws.WebFault;
+
+
+/**
+ * This class was generated by the JAX-WS RI.
+ * JAX-WS RI 2.1.3-b02-
+ * Generated source version: 2.1
+ *
+ */
+@WebFault(name = "ErrorResponse", targetNamespace = "http://reference.e-government.gv.at/namespace/moa/20020822#")
+public class MOAFault
+ extends Exception
+{
+
+ /**
+ * Java type that goes as soapenv:Fault detail element.
+ *
+ */
+ private ErrorResponseType faultInfo;
+
+ /**
+ *
+ * @param message
+ * @param faultInfo
+ */
+ public MOAFault(String message, ErrorResponseType faultInfo) {
+ super(message);
+ this.faultInfo = faultInfo;
+ }
+
+ /**
+ *
+ * @param message
+ * @param faultInfo
+ * @param cause
+ */
+ public MOAFault(String message, ErrorResponseType faultInfo, Throwable cause) {
+ super(message, cause);
+ this.faultInfo = faultInfo;
+ }
+
+ /**
+ *
+ * @return
+ * returns fault bean: moaspss.generated.ErrorResponseType
+ */
+ public ErrorResponseType getFaultInfo() {
+ return faultInfo;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ManifestRefsCheckResultInfoType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ManifestRefsCheckResultInfoType.java
new file mode 100644
index 00000000..a6935534
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ManifestRefsCheckResultInfoType.java
@@ -0,0 +1,53 @@
+/*
+* 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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ManifestRefsCheckResultInfoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ManifestRefsCheckResultInfoType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://reference.e-government.gv.at/namespace/moa/20020822#}AnyChildrenType">
+ * &lt;sequence>
+ * &lt;any/>
+ * &lt;element name="FailedReference" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="ReferringSigReference" type="{http://www.w3.org/2001/XMLSchema}positiveInteger"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ManifestRefsCheckResultInfoType")
+public class ManifestRefsCheckResultInfoType
+ extends AnyChildrenType
+{
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ManifestRefsCheckResultType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ManifestRefsCheckResultType.java
new file mode 100644
index 00000000..96b95ba6
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ManifestRefsCheckResultType.java
@@ -0,0 +1,52 @@
+/*
+* 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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ManifestRefsCheckResultType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ManifestRefsCheckResultType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://reference.e-government.gv.at/namespace/moa/20020822#}CheckResultType">
+ * &lt;sequence>
+ * &lt;element name="Code" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger"/>
+ * &lt;element name="Info" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}ManifestRefsCheckResultInfoType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ManifestRefsCheckResultType")
+public class ManifestRefsCheckResultType
+ extends CheckResultType
+{
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ManifestType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ManifestType.java
new file mode 100644
index 00000000..7fcf45ac
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ManifestType.java
@@ -0,0 +1,120 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for ManifestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ManifestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Reference" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ManifestType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "reference"
+})
+public class ManifestType {
+
+ @XmlElement(name = "Reference", required = true)
+ protected List<ReferenceType> reference;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the reference property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the reference property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getReference().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link ReferenceType }
+ *
+ *
+ */
+ public List<ReferenceType> getReference() {
+ if (reference == null) {
+ reference = new ArrayList<ReferenceType>();
+ }
+ return this.reference;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/MetaInfoType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/MetaInfoType.java
new file mode 100644
index 00000000..3c00c24b
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/MetaInfoType.java
@@ -0,0 +1,151 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for MetaInfoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="MetaInfoType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="MimeType" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}MimeTypeType"/>
+ * &lt;element name="Description" type="{http://www.w3.org/2001/XMLSchema}anyURI" minOccurs="0"/>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "MetaInfoType", propOrder = {
+ "mimeType",
+ "description",
+ "any"
+})
+@XmlSeeAlso({
+ FinalDataMetaInfoType.class
+})
+public class MetaInfoType {
+
+ @XmlElement(name = "MimeType", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected String mimeType;
+ @XmlElement(name = "Description")
+ @XmlSchemaType(name = "anyURI")
+ protected String description;
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * Gets the value of the mimeType property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getMimeType() {
+ return mimeType;
+ }
+
+ /**
+ * Sets the value of the mimeType property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setMimeType(String value) {
+ this.mimeType = value;
+ }
+
+ /**
+ * Gets the value of the description property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ * Sets the value of the description property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setDescription(String value) {
+ this.description = value;
+ }
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ObjectFactory.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ObjectFactory.java
new file mode 100644
index 00000000..de270fec
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ObjectFactory.java
@@ -0,0 +1,1032 @@
+/*
+* 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 moaspss.generated;
+
+import java.math.BigInteger;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each
+ * Java content interface and Java element interface
+ * generated in the moaspss.generated package.
+ * <p>An ObjectFactory allows you to programatically
+ * construct new instances of the Java representation
+ * for XML content. The Java representation of XML
+ * content can consist of schema derived interfaces
+ * and classes representing the binding of schema
+ * type definitions, element declarations and model
+ * groups. Factory methods for each of these are
+ * provided in this class.
+ *
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _CreateXMLSignatureResponse_QNAME = new QName("http://reference.e-government.gv.at/namespace/moa/20020822#", "CreateXMLSignatureResponse");
+ private final static QName _PGPData_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "PGPData");
+ private final static QName _Signature_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Signature");
+ private final static QName _DSAKeyValue_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "DSAKeyValue");
+ private final static QName _VerifyCMSSignatureResponse_QNAME = new QName("http://reference.e-government.gv.at/namespace/moa/20020822#", "VerifyCMSSignatureResponse");
+ private final static QName _SupplementProfile_QNAME = new QName("http://reference.e-government.gv.at/namespace/moa/20020822#", "SupplementProfile");
+ private final static QName _VerifyXMLSignatureRequest_QNAME = new QName("http://reference.e-government.gv.at/namespace/moa/20020822#", "VerifyXMLSignatureRequest");
+ private final static QName _SPKIData_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SPKIData");
+ private final static QName _SignedInfo_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SignedInfo");
+ private final static QName _RetrievalMethod_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "RetrievalMethod");
+ private final static QName _CanonicalizationMethod_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "CanonicalizationMethod");
+ private final static QName _PublicAuthority_QNAME = new QName("http://reference.e-government.gv.at/namespace/moa/20020822#", "PublicAuthority");
+ private final static QName _Object_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Object");
+ private final static QName _SignatureProperty_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SignatureProperty");
+ private final static QName _Transforms_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Transforms");
+ private final static QName _Manifest_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Manifest");
+ private final static QName _SignatureValue_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SignatureValue");
+ private final static QName _Transform_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Transform");
+ private final static QName _X509Data_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "X509Data");
+ private final static QName _SignatureMethod_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SignatureMethod");
+ private final static QName _ErrorResponse_QNAME = new QName("http://reference.e-government.gv.at/namespace/moa/20020822#", "ErrorResponse");
+ private final static QName _KeyInfo_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "KeyInfo");
+ private final static QName _DigestMethod_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "DigestMethod");
+ private final static QName _DigestValue_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "DigestValue");
+ private final static QName _MgmtData_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "MgmtData");
+ private final static QName _SignatureProperties_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SignatureProperties");
+ private final static QName _KeyName_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "KeyName");
+ private final static QName _KeyValue_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "KeyValue");
+ private final static QName _Reference_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Reference");
+ private final static QName _VerifyXMLSignatureResponse_QNAME = new QName("http://reference.e-government.gv.at/namespace/moa/20020822#", "VerifyXMLSignatureResponse");
+ private final static QName _QualifiedCertificate_QNAME = new QName("http://reference.e-government.gv.at/namespace/moa/20020822#", "QualifiedCertificate");
+ private final static QName _RSAKeyValue_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "RSAKeyValue");
+ private final static QName _Supplement_QNAME = new QName("http://reference.e-government.gv.at/namespace/moa/20020822#", "Supplement");
+ private final static QName _X509DataTypeX509IssuerSerial_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "X509IssuerSerial");
+ private final static QName _X509DataTypeX509Certificate_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "X509Certificate");
+ private final static QName _X509DataTypeX509SKI_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "X509SKI");
+ private final static QName _X509DataTypeX509SubjectName_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "X509SubjectName");
+ private final static QName _X509DataTypeX509CRL_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "X509CRL");
+ private final static QName _TransformTypeXPath_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "XPath");
+ private final static QName _VerifyCMSSignatureResponseTypeCertificateCheck_QNAME = new QName("http://reference.e-government.gv.at/namespace/moa/20020822#", "CertificateCheck");
+ private final static QName _VerifyCMSSignatureResponseTypeSignerInfo_QNAME = new QName("http://reference.e-government.gv.at/namespace/moa/20020822#", "SignerInfo");
+ private final static QName _VerifyCMSSignatureResponseTypeSignatureCheck_QNAME = new QName("http://reference.e-government.gv.at/namespace/moa/20020822#", "SignatureCheck");
+ private final static QName _PGPDataTypePGPKeyID_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "PGPKeyID");
+ private final static QName _PGPDataTypePGPKeyPacket_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "PGPKeyPacket");
+ private final static QName _SPKIDataTypeSPKISexp_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SPKISexp");
+ private final static QName _SignatureMethodTypeHMACOutputLength_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "HMACOutputLength");
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: moaspss.generated
+ *
+ */
+ public ObjectFactory() {
+ }
+
+ /**
+ * Create an instance of {@link VerifyXMLSignatureRequestType }
+ *
+ */
+ public VerifyXMLSignatureRequestType createVerifyXMLSignatureRequestType() {
+ return new VerifyXMLSignatureRequestType();
+ }
+
+ /**
+ * Create an instance of {@link TransformsType }
+ *
+ */
+ public TransformsType createTransformsType() {
+ return new TransformsType();
+ }
+
+ /**
+ * Create an instance of {@link CanonicalizationMethodType }
+ *
+ */
+ public CanonicalizationMethodType createCanonicalizationMethodType() {
+ return new CanonicalizationMethodType();
+ }
+
+ /**
+ * Create an instance of {@link PublicAuthorityType }
+ *
+ */
+ public PublicAuthorityType createPublicAuthorityType() {
+ return new PublicAuthorityType();
+ }
+
+ /**
+ * Create an instance of {@link ContentExLocRefBaseType }
+ *
+ */
+ public ContentExLocRefBaseType createContentExLocRefBaseType() {
+ return new ContentExLocRefBaseType();
+ }
+
+ /**
+ * Create an instance of {@link ManifestRefsCheckResultInfoType }
+ *
+ */
+ public ManifestRefsCheckResultInfoType createManifestRefsCheckResultInfoType() {
+ return new ManifestRefsCheckResultInfoType();
+ }
+
+ /**
+ * Create an instance of {@link KeyValueType }
+ *
+ */
+ public KeyValueType createKeyValueType() {
+ return new KeyValueType();
+ }
+
+ /**
+ * Create an instance of {@link SignatureType }
+ *
+ */
+ public SignatureType createSignatureType() {
+ return new SignatureType();
+ }
+
+ /**
+ * Create an instance of {@link CreateTransformsInfoProfile }
+ *
+ */
+ public CreateTransformsInfoProfile createCreateTransformsInfoProfile() {
+ return new CreateTransformsInfoProfile();
+ }
+
+ /**
+ * Create an instance of {@link ManifestType }
+ *
+ */
+ public ManifestType createManifestType() {
+ return new ManifestType();
+ }
+
+ /**
+ * Create an instance of {@link CreateSignatureLocationType }
+ *
+ */
+ public CreateSignatureLocationType createCreateSignatureLocationType() {
+ return new CreateSignatureLocationType();
+ }
+
+ /**
+ * Create an instance of {@link SignatureValueType }
+ *
+ */
+ public SignatureValueType createSignatureValueType() {
+ return new SignatureValueType();
+ }
+
+ /**
+ * Create an instance of {@link ObjectType }
+ *
+ */
+ public ObjectType createObjectType() {
+ return new ObjectType();
+ }
+
+ /**
+ * Create an instance of {@link AnyChildrenType }
+ *
+ */
+ public AnyChildrenType createAnyChildrenType() {
+ return new AnyChildrenType();
+ }
+
+ /**
+ * Create an instance of {@link X509IssuerSerialType }
+ *
+ */
+ public X509IssuerSerialType createX509IssuerSerialType() {
+ return new X509IssuerSerialType();
+ }
+
+ /**
+ * Create an instance of {@link CreateXMLSignatureRequestType.SingleSignatureInfo.CreateSignatureInfo }
+ *
+ */
+ public CreateXMLSignatureRequestType.SingleSignatureInfo.CreateSignatureInfo createCreateXMLSignatureRequestTypeSingleSignatureInfoCreateSignatureInfo() {
+ return new CreateXMLSignatureRequestType.SingleSignatureInfo.CreateSignatureInfo();
+ }
+
+ /**
+ * Create an instance of {@link CreateSignatureEnvironmentProfile }
+ *
+ */
+ public CreateSignatureEnvironmentProfile createCreateSignatureEnvironmentProfile() {
+ return new CreateSignatureEnvironmentProfile();
+ }
+
+ /**
+ * Create an instance of {@link VerifyXMLSignatureResponseType }
+ *
+ */
+ public VerifyXMLSignatureResponseType createVerifyXMLSignatureResponseType() {
+ return new VerifyXMLSignatureResponseType();
+ }
+
+ /**
+ * Create an instance of {@link ReferenceType }
+ *
+ */
+ public ReferenceType createReferenceType() {
+ return new ReferenceType();
+ }
+
+ /**
+ * Create an instance of {@link ContentOptionalRefType }
+ *
+ */
+ public ContentOptionalRefType createContentOptionalRefType() {
+ return new ContentOptionalRefType();
+ }
+
+ /**
+ * Create an instance of {@link TransformType }
+ *
+ */
+ public TransformType createTransformType() {
+ return new TransformType();
+ }
+
+ /**
+ * Create an instance of {@link ReferencesCheckResultInfoType }
+ *
+ */
+ public ReferencesCheckResultInfoType createReferencesCheckResultInfoType() {
+ return new ReferencesCheckResultInfoType();
+ }
+
+ /**
+ * Create an instance of {@link VerifyXMLSignatureRequestType.VerifySignatureInfo }
+ *
+ */
+ public VerifyXMLSignatureRequestType.VerifySignatureInfo createVerifyXMLSignatureRequestTypeVerifySignatureInfo() {
+ return new VerifyXMLSignatureRequestType.VerifySignatureInfo();
+ }
+
+ /**
+ * Create an instance of {@link VerifyCMSSignatureRequestType }
+ *
+ */
+ public VerifyCMSSignatureRequestType createVerifyCMSSignatureRequestType() {
+ return new VerifyCMSSignatureRequestType();
+ }
+
+ /**
+ * Create an instance of {@link ReferencesCheckResultType }
+ *
+ */
+ public ReferencesCheckResultType createReferencesCheckResultType() {
+ return new ReferencesCheckResultType();
+ }
+
+ /**
+ * Create an instance of {@link VerifyCMSSignatureResponseType }
+ *
+ */
+ public VerifyCMSSignatureResponseType createVerifyCMSSignatureResponseType() {
+ return new VerifyCMSSignatureResponseType();
+ }
+
+ /**
+ * Create an instance of {@link TransformParameterType.Hash }
+ *
+ */
+ public TransformParameterType.Hash createTransformParameterTypeHash() {
+ return new TransformParameterType.Hash();
+ }
+
+ /**
+ * Create an instance of {@link SignedInfoType }
+ *
+ */
+ public SignedInfoType createSignedInfoType() {
+ return new SignedInfoType();
+ }
+
+ /**
+ * Create an instance of {@link X509DataType }
+ *
+ */
+ public X509DataType createX509DataType() {
+ return new X509DataType();
+ }
+
+ /**
+ * Create an instance of {@link CreateXMLSignatureRequestType.SingleSignatureInfo.DataObjectInfo }
+ *
+ */
+ public CreateXMLSignatureRequestType.SingleSignatureInfo.DataObjectInfo createCreateXMLSignatureRequestTypeSingleSignatureInfoDataObjectInfo() {
+ return new CreateXMLSignatureRequestType.SingleSignatureInfo.DataObjectInfo();
+ }
+
+ /**
+ * Create an instance of {@link VerifyXMLSignatureRequestType.SignatureManifestCheckParams }
+ *
+ */
+ public VerifyXMLSignatureRequestType.SignatureManifestCheckParams createVerifyXMLSignatureRequestTypeSignatureManifestCheckParams() {
+ return new VerifyXMLSignatureRequestType.SignatureManifestCheckParams();
+ }
+
+ /**
+ * Create an instance of {@link SignaturePropertiesType }
+ *
+ */
+ public SignaturePropertiesType createSignaturePropertiesType() {
+ return new SignaturePropertiesType();
+ }
+
+ /**
+ * Create an instance of {@link XMLContentType }
+ *
+ */
+ public XMLContentType createXMLContentType() {
+ return new XMLContentType();
+ }
+
+ /**
+ * Create an instance of {@link SPKIDataType }
+ *
+ */
+ public SPKIDataType createSPKIDataType() {
+ return new SPKIDataType();
+ }
+
+ /**
+ * Create an instance of {@link MetaInfoType }
+ *
+ */
+ public MetaInfoType createMetaInfoType() {
+ return new MetaInfoType();
+ }
+
+ /**
+ * Create an instance of {@link SignaturePropertyType }
+ *
+ */
+ public SignaturePropertyType createSignaturePropertyType() {
+ return new SignaturePropertyType();
+ }
+
+ /**
+ * Create an instance of {@link FinalDataMetaInfoType }
+ *
+ */
+ public FinalDataMetaInfoType createFinalDataMetaInfoType() {
+ return new FinalDataMetaInfoType();
+ }
+
+ /**
+ * Create an instance of {@link CMSDataObjectOptionalMetaType }
+ *
+ */
+ public CMSDataObjectOptionalMetaType createCMSDataObjectOptionalMetaType() {
+ return new CMSDataObjectOptionalMetaType();
+ }
+
+ /**
+ * Create an instance of {@link CreateXMLSignatureRequest }
+ *
+ */
+ public CreateXMLSignatureRequest createCreateXMLSignatureRequest() {
+ return new CreateXMLSignatureRequest();
+ }
+
+ /**
+ * Create an instance of {@link TransformParameterType }
+ *
+ */
+ public TransformParameterType createTransformParameterType() {
+ return new TransformParameterType();
+ }
+
+ /**
+ * Create an instance of {@link PGPDataType }
+ *
+ */
+ public PGPDataType createPGPDataType() {
+ return new PGPDataType();
+ }
+
+ /**
+ * Create an instance of {@link ErrorResponseType }
+ *
+ */
+ public ErrorResponseType createErrorResponseType() {
+ return new ErrorResponseType();
+ }
+
+ /**
+ * Create an instance of {@link ContentBaseType }
+ *
+ */
+ public ContentBaseType createContentBaseType() {
+ return new ContentBaseType();
+ }
+
+ /**
+ * Create an instance of {@link CreateXMLSignatureResponseType.SignatureEnvironment }
+ *
+ */
+ public CreateXMLSignatureResponseType.SignatureEnvironment createCreateXMLSignatureResponseTypeSignatureEnvironment() {
+ return new CreateXMLSignatureResponseType.SignatureEnvironment();
+ }
+
+ /**
+ * Create an instance of {@link XMLDataObjectAssociationType }
+ *
+ */
+ public XMLDataObjectAssociationType createXMLDataObjectAssociationType() {
+ return new XMLDataObjectAssociationType();
+ }
+
+ /**
+ * Create an instance of {@link ContentRequiredRefType }
+ *
+ */
+ public ContentRequiredRefType createContentRequiredRefType() {
+ return new ContentRequiredRefType();
+ }
+
+ /**
+ * Create an instance of {@link RSAKeyValueType }
+ *
+ */
+ public RSAKeyValueType createRSAKeyValueType() {
+ return new RSAKeyValueType();
+ }
+
+ /**
+ * Create an instance of {@link ManifestRefsCheckResultType }
+ *
+ */
+ public ManifestRefsCheckResultType createManifestRefsCheckResultType() {
+ return new ManifestRefsCheckResultType();
+ }
+
+ /**
+ * Create an instance of {@link VerifyCMSSignatureRequest }
+ *
+ */
+ public VerifyCMSSignatureRequest createVerifyCMSSignatureRequest() {
+ return new VerifyCMSSignatureRequest();
+ }
+
+ /**
+ * Create an instance of {@link InputDataType }
+ *
+ */
+ public InputDataType createInputDataType() {
+ return new InputDataType();
+ }
+
+ /**
+ * Create an instance of {@link CreateXMLSignatureResponseType }
+ *
+ */
+ public CreateXMLSignatureResponseType createCreateXMLSignatureResponseType() {
+ return new CreateXMLSignatureResponseType();
+ }
+
+ /**
+ * Create an instance of {@link CreateXMLSignatureRequestType }
+ *
+ */
+ public CreateXMLSignatureRequestType createCreateXMLSignatureRequestType() {
+ return new CreateXMLSignatureRequestType();
+ }
+
+ /**
+ * Create an instance of {@link VerifyTransformsDataType }
+ *
+ */
+ public VerifyTransformsDataType createVerifyTransformsDataType() {
+ return new VerifyTransformsDataType();
+ }
+
+ /**
+ * Create an instance of {@link VerifyTransformsInfoProfile }
+ *
+ */
+ public VerifyTransformsInfoProfile createVerifyTransformsInfoProfile() {
+ return new VerifyTransformsInfoProfile();
+ }
+
+ /**
+ * Create an instance of {@link DataObjectInfoType }
+ *
+ */
+ public DataObjectInfoType createDataObjectInfoType() {
+ return new DataObjectInfoType();
+ }
+
+ /**
+ * Create an instance of {@link CheckResultType }
+ *
+ */
+ public CheckResultType createCheckResultType() {
+ return new CheckResultType();
+ }
+
+ /**
+ * Create an instance of {@link TransformsInfoType }
+ *
+ */
+ public TransformsInfoType createTransformsInfoType() {
+ return new TransformsInfoType();
+ }
+
+ /**
+ * Create an instance of {@link KeyInfoType }
+ *
+ */
+ public KeyInfoType createKeyInfoType() {
+ return new KeyInfoType();
+ }
+
+ /**
+ * Create an instance of {@link RetrievalMethodType }
+ *
+ */
+ public RetrievalMethodType createRetrievalMethodType() {
+ return new RetrievalMethodType();
+ }
+
+ /**
+ * Create an instance of {@link DataObjectInfoType.DataObject }
+ *
+ */
+ public DataObjectInfoType.DataObject createDataObjectInfoTypeDataObject() {
+ return new DataObjectInfoType.DataObject();
+ }
+
+ /**
+ * Create an instance of {@link CreateXMLSignatureRequestType.SingleSignatureInfo }
+ *
+ */
+ public CreateXMLSignatureRequestType.SingleSignatureInfo createCreateXMLSignatureRequestTypeSingleSignatureInfo() {
+ return new CreateXMLSignatureRequestType.SingleSignatureInfo();
+ }
+
+ /**
+ * Create an instance of {@link DigestMethodType }
+ *
+ */
+ public DigestMethodType createDigestMethodType() {
+ return new DigestMethodType();
+ }
+
+ /**
+ * Create an instance of {@link DSAKeyValueType }
+ *
+ */
+ public DSAKeyValueType createDSAKeyValueType() {
+ return new DSAKeyValueType();
+ }
+
+ /**
+ * Create an instance of {@link CMSContentBaseType }
+ *
+ */
+ public CMSContentBaseType createCMSContentBaseType() {
+ return new CMSContentBaseType();
+ }
+
+ /**
+ * Create an instance of {@link SignatureMethodType }
+ *
+ */
+ public SignatureMethodType createSignatureMethodType() {
+ return new SignatureMethodType();
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CreateXMLSignatureResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/moa/20020822#", name = "CreateXMLSignatureResponse")
+ public JAXBElement<CreateXMLSignatureResponseType> createCreateXMLSignatureResponse(CreateXMLSignatureResponseType value) {
+ return new JAXBElement<CreateXMLSignatureResponseType>(_CreateXMLSignatureResponse_QNAME, CreateXMLSignatureResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link PGPDataType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "PGPData")
+ public JAXBElement<PGPDataType> createPGPData(PGPDataType value) {
+ return new JAXBElement<PGPDataType>(_PGPData_QNAME, PGPDataType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignatureType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Signature")
+ public JAXBElement<SignatureType> createSignature(SignatureType value) {
+ return new JAXBElement<SignatureType>(_Signature_QNAME, SignatureType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link DSAKeyValueType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "DSAKeyValue")
+ public JAXBElement<DSAKeyValueType> createDSAKeyValue(DSAKeyValueType value) {
+ return new JAXBElement<DSAKeyValueType>(_DSAKeyValue_QNAME, DSAKeyValueType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link VerifyCMSSignatureResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/moa/20020822#", name = "VerifyCMSSignatureResponse")
+ public JAXBElement<VerifyCMSSignatureResponseType> createVerifyCMSSignatureResponse(VerifyCMSSignatureResponseType value) {
+ return new JAXBElement<VerifyCMSSignatureResponseType>(_VerifyCMSSignatureResponse_QNAME, VerifyCMSSignatureResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link XMLDataObjectAssociationType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/moa/20020822#", name = "SupplementProfile")
+ public JAXBElement<XMLDataObjectAssociationType> createSupplementProfile(XMLDataObjectAssociationType value) {
+ return new JAXBElement<XMLDataObjectAssociationType>(_SupplementProfile_QNAME, XMLDataObjectAssociationType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link VerifyXMLSignatureRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/moa/20020822#", name = "VerifyXMLSignatureRequest")
+ public JAXBElement<VerifyXMLSignatureRequestType> createVerifyXMLSignatureRequest(VerifyXMLSignatureRequestType value) {
+ return new JAXBElement<VerifyXMLSignatureRequestType>(_VerifyXMLSignatureRequest_QNAME, VerifyXMLSignatureRequestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SPKIDataType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SPKIData")
+ public JAXBElement<SPKIDataType> createSPKIData(SPKIDataType value) {
+ return new JAXBElement<SPKIDataType>(_SPKIData_QNAME, SPKIDataType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignedInfoType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SignedInfo")
+ public JAXBElement<SignedInfoType> createSignedInfo(SignedInfoType value) {
+ return new JAXBElement<SignedInfoType>(_SignedInfo_QNAME, SignedInfoType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link RetrievalMethodType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "RetrievalMethod")
+ public JAXBElement<RetrievalMethodType> createRetrievalMethod(RetrievalMethodType value) {
+ return new JAXBElement<RetrievalMethodType>(_RetrievalMethod_QNAME, RetrievalMethodType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CanonicalizationMethodType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "CanonicalizationMethod")
+ public JAXBElement<CanonicalizationMethodType> createCanonicalizationMethod(CanonicalizationMethodType value) {
+ return new JAXBElement<CanonicalizationMethodType>(_CanonicalizationMethod_QNAME, CanonicalizationMethodType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link PublicAuthorityType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/moa/20020822#", name = "PublicAuthority")
+ public JAXBElement<PublicAuthorityType> createPublicAuthority(PublicAuthorityType value) {
+ return new JAXBElement<PublicAuthorityType>(_PublicAuthority_QNAME, PublicAuthorityType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ObjectType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Object")
+ public JAXBElement<ObjectType> createObject(ObjectType value) {
+ return new JAXBElement<ObjectType>(_Object_QNAME, ObjectType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignaturePropertyType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SignatureProperty")
+ public JAXBElement<SignaturePropertyType> createSignatureProperty(SignaturePropertyType value) {
+ return new JAXBElement<SignaturePropertyType>(_SignatureProperty_QNAME, SignaturePropertyType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TransformsType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Transforms")
+ public JAXBElement<TransformsType> createTransforms(TransformsType value) {
+ return new JAXBElement<TransformsType>(_Transforms_QNAME, TransformsType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ManifestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Manifest")
+ public JAXBElement<ManifestType> createManifest(ManifestType value) {
+ return new JAXBElement<ManifestType>(_Manifest_QNAME, ManifestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignatureValueType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SignatureValue")
+ public JAXBElement<SignatureValueType> createSignatureValue(SignatureValueType value) {
+ return new JAXBElement<SignatureValueType>(_SignatureValue_QNAME, SignatureValueType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TransformType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Transform")
+ public JAXBElement<TransformType> createTransform(TransformType value) {
+ return new JAXBElement<TransformType>(_Transform_QNAME, TransformType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link X509DataType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "X509Data")
+ public JAXBElement<X509DataType> createX509Data(X509DataType value) {
+ return new JAXBElement<X509DataType>(_X509Data_QNAME, X509DataType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignatureMethodType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SignatureMethod")
+ public JAXBElement<SignatureMethodType> createSignatureMethod(SignatureMethodType value) {
+ return new JAXBElement<SignatureMethodType>(_SignatureMethod_QNAME, SignatureMethodType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ErrorResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/moa/20020822#", name = "ErrorResponse")
+ public JAXBElement<ErrorResponseType> createErrorResponse(ErrorResponseType value) {
+ return new JAXBElement<ErrorResponseType>(_ErrorResponse_QNAME, ErrorResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link KeyInfoType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "KeyInfo")
+ public JAXBElement<KeyInfoType> createKeyInfo(KeyInfoType value) {
+ return new JAXBElement<KeyInfoType>(_KeyInfo_QNAME, KeyInfoType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link DigestMethodType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "DigestMethod")
+ public JAXBElement<DigestMethodType> createDigestMethod(DigestMethodType value) {
+ return new JAXBElement<DigestMethodType>(_DigestMethod_QNAME, DigestMethodType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "DigestValue")
+ public JAXBElement<byte[]> createDigestValue(byte[] value) {
+ return new JAXBElement<byte[]>(_DigestValue_QNAME, byte[].class, null, ((byte[]) value));
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "MgmtData")
+ public JAXBElement<String> createMgmtData(String value) {
+ return new JAXBElement<String>(_MgmtData_QNAME, String.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignaturePropertiesType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SignatureProperties")
+ public JAXBElement<SignaturePropertiesType> createSignatureProperties(SignaturePropertiesType value) {
+ return new JAXBElement<SignaturePropertiesType>(_SignatureProperties_QNAME, SignaturePropertiesType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "KeyName")
+ public JAXBElement<String> createKeyName(String value) {
+ return new JAXBElement<String>(_KeyName_QNAME, String.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link KeyValueType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "KeyValue")
+ public JAXBElement<KeyValueType> createKeyValue(KeyValueType value) {
+ return new JAXBElement<KeyValueType>(_KeyValue_QNAME, KeyValueType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ReferenceType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Reference")
+ public JAXBElement<ReferenceType> createReference(ReferenceType value) {
+ return new JAXBElement<ReferenceType>(_Reference_QNAME, ReferenceType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link VerifyXMLSignatureResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/moa/20020822#", name = "VerifyXMLSignatureResponse")
+ public JAXBElement<VerifyXMLSignatureResponseType> createVerifyXMLSignatureResponse(VerifyXMLSignatureResponseType value) {
+ return new JAXBElement<VerifyXMLSignatureResponseType>(_VerifyXMLSignatureResponse_QNAME, VerifyXMLSignatureResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/moa/20020822#", name = "QualifiedCertificate")
+ public JAXBElement<Object> createQualifiedCertificate(Object value) {
+ return new JAXBElement<Object>(_QualifiedCertificate_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link RSAKeyValueType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "RSAKeyValue")
+ public JAXBElement<RSAKeyValueType> createRSAKeyValue(RSAKeyValueType value) {
+ return new JAXBElement<RSAKeyValueType>(_RSAKeyValue_QNAME, RSAKeyValueType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link XMLDataObjectAssociationType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/moa/20020822#", name = "Supplement")
+ public JAXBElement<XMLDataObjectAssociationType> createSupplement(XMLDataObjectAssociationType value) {
+ return new JAXBElement<XMLDataObjectAssociationType>(_Supplement_QNAME, XMLDataObjectAssociationType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link X509IssuerSerialType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "X509IssuerSerial", scope = X509DataType.class)
+ public JAXBElement<X509IssuerSerialType> createX509DataTypeX509IssuerSerial(X509IssuerSerialType value) {
+ return new JAXBElement<X509IssuerSerialType>(_X509DataTypeX509IssuerSerial_QNAME, X509IssuerSerialType.class, X509DataType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "X509Certificate", scope = X509DataType.class)
+ public JAXBElement<byte[]> createX509DataTypeX509Certificate(byte[] value) {
+ return new JAXBElement<byte[]>(_X509DataTypeX509Certificate_QNAME, byte[].class, X509DataType.class, ((byte[]) value));
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "X509SKI", scope = X509DataType.class)
+ public JAXBElement<byte[]> createX509DataTypeX509SKI(byte[] value) {
+ return new JAXBElement<byte[]>(_X509DataTypeX509SKI_QNAME, byte[].class, X509DataType.class, ((byte[]) value));
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "X509SubjectName", scope = X509DataType.class)
+ public JAXBElement<String> createX509DataTypeX509SubjectName(String value) {
+ return new JAXBElement<String>(_X509DataTypeX509SubjectName_QNAME, String.class, X509DataType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "X509CRL", scope = X509DataType.class)
+ public JAXBElement<byte[]> createX509DataTypeX509CRL(byte[] value) {
+ return new JAXBElement<byte[]>(_X509DataTypeX509CRL_QNAME, byte[].class, X509DataType.class, ((byte[]) value));
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "XPath", scope = TransformType.class)
+ public JAXBElement<String> createTransformTypeXPath(String value) {
+ return new JAXBElement<String>(_TransformTypeXPath_QNAME, String.class, TransformType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CheckResultType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/moa/20020822#", name = "CertificateCheck", scope = VerifyCMSSignatureResponseType.class)
+ public JAXBElement<CheckResultType> createVerifyCMSSignatureResponseTypeCertificateCheck(CheckResultType value) {
+ return new JAXBElement<CheckResultType>(_VerifyCMSSignatureResponseTypeCertificateCheck_QNAME, CheckResultType.class, VerifyCMSSignatureResponseType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link KeyInfoType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/moa/20020822#", name = "SignerInfo", scope = VerifyCMSSignatureResponseType.class)
+ public JAXBElement<KeyInfoType> createVerifyCMSSignatureResponseTypeSignerInfo(KeyInfoType value) {
+ return new JAXBElement<KeyInfoType>(_VerifyCMSSignatureResponseTypeSignerInfo_QNAME, KeyInfoType.class, VerifyCMSSignatureResponseType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CheckResultType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/moa/20020822#", name = "SignatureCheck", scope = VerifyCMSSignatureResponseType.class)
+ public JAXBElement<CheckResultType> createVerifyCMSSignatureResponseTypeSignatureCheck(CheckResultType value) {
+ return new JAXBElement<CheckResultType>(_VerifyCMSSignatureResponseTypeSignatureCheck_QNAME, CheckResultType.class, VerifyCMSSignatureResponseType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "PGPKeyID", scope = PGPDataType.class)
+ public JAXBElement<byte[]> createPGPDataTypePGPKeyID(byte[] value) {
+ return new JAXBElement<byte[]>(_PGPDataTypePGPKeyID_QNAME, byte[].class, PGPDataType.class, ((byte[]) value));
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "PGPKeyPacket", scope = PGPDataType.class)
+ public JAXBElement<byte[]> createPGPDataTypePGPKeyPacket(byte[] value) {
+ return new JAXBElement<byte[]>(_PGPDataTypePGPKeyPacket_QNAME, byte[].class, PGPDataType.class, ((byte[]) value));
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SPKISexp", scope = SPKIDataType.class)
+ public JAXBElement<byte[]> createSPKIDataTypeSPKISexp(byte[] value) {
+ return new JAXBElement<byte[]>(_SPKIDataTypeSPKISexp_QNAME, byte[].class, SPKIDataType.class, ((byte[]) value));
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link BigInteger }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "HMACOutputLength", scope = SignatureMethodType.class)
+ public JAXBElement<BigInteger> createSignatureMethodTypeHMACOutputLength(BigInteger value) {
+ return new JAXBElement<BigInteger>(_SignatureMethodTypeHMACOutputLength_QNAME, BigInteger.class, SignatureMethodType.class, value);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ObjectType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ObjectType.java
new file mode 100644
index 00000000..1ebf8425
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ObjectType.java
@@ -0,0 +1,180 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for ObjectType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ObjectType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;attribute name="MimeType" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="Encoding" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ObjectType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "content"
+})
+public class ObjectType {
+
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+ @XmlAttribute(name = "MimeType")
+ protected String mimeType;
+ @XmlAttribute(name = "Encoding")
+ @XmlSchemaType(name = "anyURI")
+ protected String encoding;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ * {@link Object }
+ * {@link Element }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+ /**
+ * Gets the value of the mimeType property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getMimeType() {
+ return mimeType;
+ }
+
+ /**
+ * Sets the value of the mimeType property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setMimeType(String value) {
+ this.mimeType = value;
+ }
+
+ /**
+ * Gets the value of the encoding property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getEncoding() {
+ return encoding;
+ }
+
+ /**
+ * Sets the value of the encoding property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setEncoding(String value) {
+ this.encoding = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/PGPDataType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/PGPDataType.java
new file mode 100644
index 00000000..ca3851f0
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/PGPDataType.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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for PGPDataType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="PGPDataType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice>
+ * &lt;sequence>
+ * &lt;element name="PGPKeyID" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="PGPKeyPacket" type="{http://www.w3.org/2001/XMLSchema}base64Binary" minOccurs="0"/>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;sequence>
+ * &lt;element name="PGPKeyPacket" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PGPDataType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "content"
+})
+public class PGPDataType {
+
+ @XmlElementRefs({
+ @XmlElementRef(name = "PGPKeyPacket", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "PGPKeyID", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class)
+ })
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+
+ /**
+ * Gets the rest of the content model.
+ *
+ * <p>
+ * You are getting this "catch-all" property because of the following reason:
+ * The field name "PGPKeyPacket" is used by two different parts of a schema. See:
+ * line 208 of file:/home/clemens/workspace/bku/bkucommon/src/test/wsdl/xmldsig-core-schema.xsd
+ * line 203 of file:/home/clemens/workspace/bku/bkucommon/src/test/wsdl/xmldsig-core-schema.xsd
+ * <p>
+ * To get rid of this property, apply a property customization to one
+ * of both of the following declarations to change their names:
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
+ * {@link Element }
+ * {@link Object }
+ * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/PublicAuthorityType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/PublicAuthorityType.java
new file mode 100644
index 00000000..c33c353c
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/PublicAuthorityType.java
@@ -0,0 +1,78 @@
+/*
+* 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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for PublicAuthorityType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="PublicAuthorityType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Code" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PublicAuthorityType", propOrder = {
+ "code"
+})
+public class PublicAuthorityType {
+
+ @XmlElement(name = "Code")
+ protected String code;
+
+ /**
+ * Gets the value of the code property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getCode() {
+ return code;
+ }
+
+ /**
+ * Sets the value of the code property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setCode(String value) {
+ this.code = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/RSAKeyValueType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/RSAKeyValueType.java
new file mode 100644
index 00000000..37babf4d
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/RSAKeyValueType.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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RSAKeyValueType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="RSAKeyValueType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Modulus" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ * &lt;element name="Exponent" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RSAKeyValueType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "modulus",
+ "exponent"
+})
+public class RSAKeyValueType {
+
+ @XmlElement(name = "Modulus", required = true)
+ protected byte[] modulus;
+ @XmlElement(name = "Exponent", required = true)
+ protected byte[] exponent;
+
+ /**
+ * Gets the value of the modulus property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getModulus() {
+ return modulus;
+ }
+
+ /**
+ * Sets the value of the modulus property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setModulus(byte[] value) {
+ this.modulus = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the exponent property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getExponent() {
+ return exponent;
+ }
+
+ /**
+ * Sets the value of the exponent property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setExponent(byte[] value) {
+ this.exponent = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ReferenceType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ReferenceType.java
new file mode 100644
index 00000000..b46eac19
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ReferenceType.java
@@ -0,0 +1,223 @@
+/*
+* 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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for ReferenceType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ReferenceType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Transforms" minOccurs="0"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}DigestMethod"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}DigestValue"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;attribute name="URI" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;attribute name="Type" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ReferenceType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "transforms",
+ "digestMethod",
+ "digestValue"
+})
+public class ReferenceType {
+
+ @XmlElement(name = "Transforms")
+ protected TransformsType transforms;
+ @XmlElement(name = "DigestMethod", required = true)
+ protected DigestMethodType digestMethod;
+ @XmlElement(name = "DigestValue", required = true)
+ protected byte[] digestValue;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+ @XmlAttribute(name = "URI")
+ @XmlSchemaType(name = "anyURI")
+ protected String uri;
+ @XmlAttribute(name = "Type")
+ @XmlSchemaType(name = "anyURI")
+ protected String type;
+
+ /**
+ * Gets the value of the transforms property.
+ *
+ * @return
+ * possible object is
+ * {@link TransformsType }
+ *
+ */
+ public TransformsType getTransforms() {
+ return transforms;
+ }
+
+ /**
+ * Sets the value of the transforms property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TransformsType }
+ *
+ */
+ public void setTransforms(TransformsType value) {
+ this.transforms = value;
+ }
+
+ /**
+ * Gets the value of the digestMethod property.
+ *
+ * @return
+ * possible object is
+ * {@link DigestMethodType }
+ *
+ */
+ public DigestMethodType getDigestMethod() {
+ return digestMethod;
+ }
+
+ /**
+ * Sets the value of the digestMethod property.
+ *
+ * @param value
+ * allowed object is
+ * {@link DigestMethodType }
+ *
+ */
+ public void setDigestMethod(DigestMethodType value) {
+ this.digestMethod = value;
+ }
+
+ /**
+ * Gets the value of the digestValue property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getDigestValue() {
+ return digestValue;
+ }
+
+ /**
+ * Sets the value of the digestValue property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setDigestValue(byte[] value) {
+ this.digestValue = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+ /**
+ * Gets the value of the uri property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getURI() {
+ return uri;
+ }
+
+ /**
+ * Sets the value of the uri property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setURI(String value) {
+ this.uri = value;
+ }
+
+ /**
+ * Gets the value of the type property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * Sets the value of the type property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setType(String value) {
+ this.type = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ReferencesCheckResultInfoType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ReferencesCheckResultInfoType.java
new file mode 100644
index 00000000..f2e6a02d
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ReferencesCheckResultInfoType.java
@@ -0,0 +1,52 @@
+/*
+* 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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ReferencesCheckResultInfoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ReferencesCheckResultInfoType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://reference.e-government.gv.at/namespace/moa/20020822#}AnyChildrenType">
+ * &lt;sequence>
+ * &lt;any/>
+ * &lt;element name="FailedReference" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ReferencesCheckResultInfoType")
+public class ReferencesCheckResultInfoType
+ extends AnyChildrenType
+{
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ReferencesCheckResultType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ReferencesCheckResultType.java
new file mode 100644
index 00000000..8b94be91
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/ReferencesCheckResultType.java
@@ -0,0 +1,52 @@
+/*
+* 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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ReferencesCheckResultType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ReferencesCheckResultType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://reference.e-government.gv.at/namespace/moa/20020822#}CheckResultType">
+ * &lt;sequence>
+ * &lt;element name="Code" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger"/>
+ * &lt;element name="Info" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}ReferencesCheckResultInfoType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ReferencesCheckResultType")
+public class ReferencesCheckResultType
+ extends CheckResultType
+{
+
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/RetrievalMethodType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/RetrievalMethodType.java
new file mode 100644
index 00000000..dae84047
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/RetrievalMethodType.java
@@ -0,0 +1,136 @@
+/*
+* 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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RetrievalMethodType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="RetrievalMethodType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Transforms" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="URI" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;attribute name="Type" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RetrievalMethodType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "transforms"
+})
+public class RetrievalMethodType {
+
+ @XmlElement(name = "Transforms")
+ protected TransformsType transforms;
+ @XmlAttribute(name = "URI")
+ @XmlSchemaType(name = "anyURI")
+ protected String uri;
+ @XmlAttribute(name = "Type")
+ @XmlSchemaType(name = "anyURI")
+ protected String type;
+
+ /**
+ * Gets the value of the transforms property.
+ *
+ * @return
+ * possible object is
+ * {@link TransformsType }
+ *
+ */
+ public TransformsType getTransforms() {
+ return transforms;
+ }
+
+ /**
+ * Sets the value of the transforms property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TransformsType }
+ *
+ */
+ public void setTransforms(TransformsType value) {
+ this.transforms = value;
+ }
+
+ /**
+ * Gets the value of the uri property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getURI() {
+ return uri;
+ }
+
+ /**
+ * Sets the value of the uri property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setURI(String value) {
+ this.uri = value;
+ }
+
+ /**
+ * Gets the value of the type property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * Sets the value of the type property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setType(String value) {
+ this.type = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SPKIDataType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SPKIDataType.java
new file mode 100644
index 00000000..1f5cab5b
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SPKIDataType.java
@@ -0,0 +1,92 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for SPKIDataType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SPKIDataType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence maxOccurs="unbounded">
+ * &lt;element name="SPKISexp" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SPKIDataType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "spkiSexpAndAny"
+})
+public class SPKIDataType {
+
+ @XmlElementRef(name = "SPKISexp", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class)
+ @XmlAnyElement(lax = true)
+ protected List<Object> spkiSexpAndAny;
+
+ /**
+ * Gets the value of the spkiSexpAndAny property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the spkiSexpAndAny property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSPKISexpAndAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
+ * {@link Object }
+ * {@link Element }
+ *
+ *
+ */
+ public List<Object> getSPKISexpAndAny() {
+ if (spkiSexpAndAny == null) {
+ spkiSexpAndAny = new ArrayList<Object>();
+ }
+ return this.spkiSexpAndAny;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureMethodType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureMethodType.java
new file mode 100644
index 00000000..e92e9fec
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureMethodType.java
@@ -0,0 +1,124 @@
+/*
+* 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 moaspss.generated;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SignatureMethodType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignatureMethodType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="HMACOutputLength" type="{http://www.w3.org/2000/09/xmldsig#}HMACOutputLengthType" minOccurs="0"/>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;attribute name="Algorithm" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignatureMethodType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "content"
+})
+public class SignatureMethodType {
+
+ @XmlElementRef(name = "HMACOutputLength", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class)
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+ @XmlAttribute(name = "Algorithm", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String algorithm;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ * {@link Object }
+ * {@link JAXBElement }{@code <}{@link BigInteger }{@code >}
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+ /**
+ * Gets the value of the algorithm property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAlgorithm() {
+ return algorithm;
+ }
+
+ /**
+ * Sets the value of the algorithm property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAlgorithm(String value) {
+ this.algorithm = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignaturePropertiesType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignaturePropertiesType.java
new file mode 100644
index 00000000..b602c9d6
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignaturePropertiesType.java
@@ -0,0 +1,120 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for SignaturePropertiesType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignaturePropertiesType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}SignatureProperty" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignaturePropertiesType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "signatureProperty"
+})
+public class SignaturePropertiesType {
+
+ @XmlElement(name = "SignatureProperty", required = true)
+ protected List<SignaturePropertyType> signatureProperty;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the signatureProperty property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the signatureProperty property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSignatureProperty().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link SignaturePropertyType }
+ *
+ *
+ */
+ public List<SignaturePropertyType> getSignatureProperty() {
+ if (signatureProperty == null) {
+ signatureProperty = new ArrayList<SignaturePropertyType>();
+ }
+ return this.signatureProperty;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignaturePropertyType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignaturePropertyType.java
new file mode 100644
index 00000000..ebe8c7d0
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignaturePropertyType.java
@@ -0,0 +1,153 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for SignaturePropertyType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignaturePropertyType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice maxOccurs="unbounded">
+ * &lt;any/>
+ * &lt;/choice>
+ * &lt;attribute name="Target" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignaturePropertyType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "content"
+})
+public class SignaturePropertyType {
+
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+ @XmlAttribute(name = "Target", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String target;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ * {@link Object }
+ * {@link Element }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+ /**
+ * Gets the value of the target property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getTarget() {
+ return target;
+ }
+
+ /**
+ * Sets the value of the target property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setTarget(String value) {
+ this.target = value;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureType.java
new file mode 100644
index 00000000..0eec1637
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureType.java
@@ -0,0 +1,204 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for SignatureType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignatureType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}SignedInfo"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}SignatureValue"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}KeyInfo" minOccurs="0"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Object" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignatureType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "signedInfo",
+ "signatureValue",
+ "keyInfo",
+ "object"
+})
+public class SignatureType {
+
+ @XmlElement(name = "SignedInfo", required = true)
+ protected SignedInfoType signedInfo;
+ @XmlElement(name = "SignatureValue", required = true)
+ protected SignatureValueType signatureValue;
+ @XmlElement(name = "KeyInfo")
+ protected KeyInfoType keyInfo;
+ @XmlElement(name = "Object")
+ protected List<ObjectType> object;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the signedInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link SignedInfoType }
+ *
+ */
+ public SignedInfoType getSignedInfo() {
+ return signedInfo;
+ }
+
+ /**
+ * Sets the value of the signedInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignedInfoType }
+ *
+ */
+ public void setSignedInfo(SignedInfoType value) {
+ this.signedInfo = value;
+ }
+
+ /**
+ * Gets the value of the signatureValue property.
+ *
+ * @return
+ * possible object is
+ * {@link SignatureValueType }
+ *
+ */
+ public SignatureValueType getSignatureValue() {
+ return signatureValue;
+ }
+
+ /**
+ * Sets the value of the signatureValue property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignatureValueType }
+ *
+ */
+ public void setSignatureValue(SignatureValueType value) {
+ this.signatureValue = value;
+ }
+
+ /**
+ * Gets the value of the keyInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link KeyInfoType }
+ *
+ */
+ public KeyInfoType getKeyInfo() {
+ return keyInfo;
+ }
+
+ /**
+ * Sets the value of the keyInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link KeyInfoType }
+ *
+ */
+ public void setKeyInfo(KeyInfoType value) {
+ this.keyInfo = value;
+ }
+
+ /**
+ * Gets the value of the object property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the object property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getObject().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link ObjectType }
+ *
+ *
+ */
+ public List<ObjectType> getObject() {
+ if (object == null) {
+ object = new ArrayList<ObjectType>();
+ }
+ return this.object;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureValueType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureValueType.java
new file mode 100644
index 00000000..3e82e93c
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureValueType.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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for SignatureValueType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignatureValueType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>base64Binary">
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignatureValueType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "value"
+})
+public class SignatureValueType {
+
+ @XmlValue
+ protected byte[] value;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setValue(byte[] value) {
+ this.value = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureVerificationPortType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureVerificationPortType.java
new file mode 100644
index 00000000..a9dd3795
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureVerificationPortType.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 moaspss.generated;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import javax.xml.bind.annotation.XmlSeeAlso;
+
+
+/**
+ * This class was generated by the JAX-WS RI.
+ * JAX-WS RI 2.1.3-b02-
+ * Generated source version: 2.1
+ *
+ */
+@WebService(name = "SignatureVerificationPortType", targetNamespace = "http://reference.e-government.gv.at/namespace/moa/wsdl/20020822#")
+@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
+@XmlSeeAlso({
+ ObjectFactory.class
+})
+public interface SignatureVerificationPortType {
+
+
+ /**
+ *
+ * @param body
+ * @return
+ * returns moaspss.generated.VerifyXMLSignatureResponseType
+ * @throws MOAFault
+ */
+ @WebMethod(action = "urn:VerifyXMLSignatureAction")
+ @WebResult(name = "VerifyXMLSignatureResponse", targetNamespace = "http://reference.e-government.gv.at/namespace/moa/20020822#", partName = "body")
+ public VerifyXMLSignatureResponseType verifyXMLSignature(
+ @WebParam(name = "VerifyXMLSignatureRequest", targetNamespace = "http://reference.e-government.gv.at/namespace/moa/20020822#", partName = "body")
+ VerifyXMLSignatureRequestType body)
+ throws MOAFault
+ ;
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureVerificationService.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureVerificationService.java
new file mode 100644
index 00000000..32c2e725
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignatureVerificationService.java
@@ -0,0 +1,87 @@
+/*
+* 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 moaspss.generated;
+
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.logging.Logger;
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+import javax.xml.ws.WebEndpoint;
+import javax.xml.ws.WebServiceClient;
+import javax.xml.ws.WebServiceFeature;
+
+
+/**
+ * This class was generated by the JAX-WS RI.
+ * JAX-WS RI 2.1.3-b02-
+ * Generated source version: 2.1
+ *
+ */
+@WebServiceClient(name = "SignatureVerificationService", targetNamespace = "http://reference.e-government.gv.at/namespace/moa/wsdl/20020822#", wsdlLocation = "file:/home/clemens/workspace/bku/bkucommon/src/test/wsdl/MOA-SPSS-1.3.wsdl")
+public class SignatureVerificationService
+ extends Service
+{
+
+ private final static URL SIGNATUREVERIFICATIONSERVICE_WSDL_LOCATION;
+ private final static Logger logger = Logger.getLogger(moaspss.generated.SignatureVerificationService.class.getName());
+
+ static {
+ URL url = null;
+ try {
+ URL baseUrl;
+ baseUrl = moaspss.generated.SignatureVerificationService.class.getResource(".");
+ url = new URL(baseUrl, "file:/home/clemens/workspace/bku/bkucommon/src/test/wsdl/MOA-SPSS-1.3.wsdl");
+ } catch (MalformedURLException e) {
+ logger.warning("Failed to create URL for the wsdl Location: 'file:/home/clemens/workspace/bku/bkucommon/src/test/wsdl/MOA-SPSS-1.3.wsdl', retrying as a local file");
+ logger.warning(e.getMessage());
+ }
+ SIGNATUREVERIFICATIONSERVICE_WSDL_LOCATION = url;
+ }
+
+ public SignatureVerificationService(URL wsdlLocation, QName serviceName) {
+ super(wsdlLocation, serviceName);
+ }
+
+ public SignatureVerificationService() {
+ super(SIGNATUREVERIFICATIONSERVICE_WSDL_LOCATION, new QName("http://reference.e-government.gv.at/namespace/moa/wsdl/20020822#", "SignatureVerificationService"));
+ }
+
+ /**
+ *
+ * @return
+ * returns SignatureVerificationPortType
+ */
+ @WebEndpoint(name = "SignatureVerificationPort")
+ public SignatureVerificationPortType getSignatureVerificationPort() {
+ return super.getPort(new QName("http://reference.e-government.gv.at/namespace/moa/wsdl/20020822#", "SignatureVerificationPort"), SignatureVerificationPortType.class);
+ }
+
+ /**
+ *
+ * @param features
+ * A list of {@link javax.xml.ws.WebServiceFeature} to configure on the proxy. Supported features not in the <code>features</code> parameter will have their default values.
+ * @return
+ * returns SignatureVerificationPortType
+ */
+ @WebEndpoint(name = "SignatureVerificationPort")
+ public SignatureVerificationPortType getSignatureVerificationPort(WebServiceFeature... features) {
+ return super.getPort(new QName("http://reference.e-government.gv.at/namespace/moa/wsdl/20020822#", "SignatureVerificationPort"), SignatureVerificationPortType.class, features);
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignedInfoType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignedInfoType.java
new file mode 100644
index 00000000..26261204
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/SignedInfoType.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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for SignedInfoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignedInfoType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}SignatureMethod"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Reference" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignedInfoType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "canonicalizationMethod",
+ "signatureMethod",
+ "reference"
+})
+public class SignedInfoType {
+
+ @XmlElement(name = "CanonicalizationMethod", required = true)
+ protected CanonicalizationMethodType canonicalizationMethod;
+ @XmlElement(name = "SignatureMethod", required = true)
+ protected SignatureMethodType signatureMethod;
+ @XmlElement(name = "Reference", required = true)
+ protected List<ReferenceType> reference;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the canonicalizationMethod property.
+ *
+ * @return
+ * possible object is
+ * {@link CanonicalizationMethodType }
+ *
+ */
+ public CanonicalizationMethodType getCanonicalizationMethod() {
+ return canonicalizationMethod;
+ }
+
+ /**
+ * Sets the value of the canonicalizationMethod property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CanonicalizationMethodType }
+ *
+ */
+ public void setCanonicalizationMethod(CanonicalizationMethodType value) {
+ this.canonicalizationMethod = value;
+ }
+
+ /**
+ * Gets the value of the signatureMethod property.
+ *
+ * @return
+ * possible object is
+ * {@link SignatureMethodType }
+ *
+ */
+ public SignatureMethodType getSignatureMethod() {
+ return signatureMethod;
+ }
+
+ /**
+ * Sets the value of the signatureMethod property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignatureMethodType }
+ *
+ */
+ public void setSignatureMethod(SignatureMethodType value) {
+ this.signatureMethod = value;
+ }
+
+ /**
+ * Gets the value of the reference property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the reference property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getReference().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link ReferenceType }
+ *
+ *
+ */
+ public List<ReferenceType> getReference() {
+ if (reference == null) {
+ reference = new ArrayList<ReferenceType>();
+ }
+ return this.reference;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformParameterType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformParameterType.java
new file mode 100644
index 00000000..62bf071c
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformParameterType.java
@@ -0,0 +1,226 @@
+/*
+* 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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for TransformParameterType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="TransformParameterType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice minOccurs="0">
+ * &lt;element name="Base64Content" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="Hash">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}DigestMethod"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}DigestValue"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/choice>
+ * &lt;attribute name="URI" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TransformParameterType", propOrder = {
+ "base64Content",
+ "hash"
+})
+public class TransformParameterType {
+
+ @XmlElement(name = "Base64Content")
+ protected byte[] base64Content;
+ @XmlElement(name = "Hash")
+ protected TransformParameterType.Hash hash;
+ @XmlAttribute(name = "URI", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String uri;
+
+ /**
+ * Gets the value of the base64Content property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getBase64Content() {
+ return base64Content;
+ }
+
+ /**
+ * Sets the value of the base64Content property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setBase64Content(byte[] value) {
+ this.base64Content = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the hash property.
+ *
+ * @return
+ * possible object is
+ * {@link TransformParameterType.Hash }
+ *
+ */
+ public TransformParameterType.Hash getHash() {
+ return hash;
+ }
+
+ /**
+ * Sets the value of the hash property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TransformParameterType.Hash }
+ *
+ */
+ public void setHash(TransformParameterType.Hash value) {
+ this.hash = value;
+ }
+
+ /**
+ * Gets the value of the uri property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getURI() {
+ return uri;
+ }
+
+ /**
+ * Sets the value of the uri property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setURI(String value) {
+ this.uri = value;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}DigestMethod"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}DigestValue"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "", propOrder = {
+ "digestMethod",
+ "digestValue"
+ })
+ public static class Hash {
+
+ @XmlElement(name = "DigestMethod", namespace = "http://www.w3.org/2000/09/xmldsig#", required = true)
+ protected DigestMethodType digestMethod;
+ @XmlElement(name = "DigestValue", namespace = "http://www.w3.org/2000/09/xmldsig#", required = true)
+ protected byte[] digestValue;
+
+ /**
+ * Gets the value of the digestMethod property.
+ *
+ * @return
+ * possible object is
+ * {@link DigestMethodType }
+ *
+ */
+ public DigestMethodType getDigestMethod() {
+ return digestMethod;
+ }
+
+ /**
+ * Sets the value of the digestMethod property.
+ *
+ * @param value
+ * allowed object is
+ * {@link DigestMethodType }
+ *
+ */
+ public void setDigestMethod(DigestMethodType value) {
+ this.digestMethod = value;
+ }
+
+ /**
+ * Gets the value of the digestValue property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getDigestValue() {
+ return digestValue;
+ }
+
+ /**
+ * Sets the value of the digestValue property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setDigestValue(byte[] value) {
+ this.digestValue = ((byte[]) value);
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformType.java
new file mode 100644
index 00000000..192843c5
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformType.java
@@ -0,0 +1,125 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for TransformType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="TransformType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice maxOccurs="unbounded" minOccurs="0">
+ * &lt;any/>
+ * &lt;element name="XPath" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;/choice>
+ * &lt;attribute name="Algorithm" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TransformType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "content"
+})
+public class TransformType {
+
+ @XmlElementRef(name = "XPath", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class)
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+ @XmlAttribute(name = "Algorithm", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String algorithm;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Element }
+ * {@link JAXBElement }{@code <}{@link String }{@code >}
+ * {@link Object }
+ * {@link String }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+ /**
+ * Gets the value of the algorithm property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAlgorithm() {
+ return algorithm;
+ }
+
+ /**
+ * Sets the value of the algorithm property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAlgorithm(String value) {
+ this.algorithm = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformsInfoType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformsInfoType.java
new file mode 100644
index 00000000..1977f157
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformsInfoType.java
@@ -0,0 +1,106 @@
+/*
+* 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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for TransformsInfoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="TransformsInfoType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Transforms" minOccurs="0"/>
+ * &lt;element name="FinalDataMetaInfo" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}FinalDataMetaInfoType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TransformsInfoType", propOrder = {
+ "transforms",
+ "finalDataMetaInfo"
+})
+public class TransformsInfoType {
+
+ @XmlElement(name = "Transforms", namespace = "http://www.w3.org/2000/09/xmldsig#")
+ protected TransformsType transforms;
+ @XmlElement(name = "FinalDataMetaInfo", required = true)
+ protected FinalDataMetaInfoType finalDataMetaInfo;
+
+ /**
+ * Gets the value of the transforms property.
+ *
+ * @return
+ * possible object is
+ * {@link TransformsType }
+ *
+ */
+ public TransformsType getTransforms() {
+ return transforms;
+ }
+
+ /**
+ * Sets the value of the transforms property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TransformsType }
+ *
+ */
+ public void setTransforms(TransformsType value) {
+ this.transforms = value;
+ }
+
+ /**
+ * Gets the value of the finalDataMetaInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link FinalDataMetaInfoType }
+ *
+ */
+ public FinalDataMetaInfoType getFinalDataMetaInfo() {
+ return finalDataMetaInfo;
+ }
+
+ /**
+ * Sets the value of the finalDataMetaInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link FinalDataMetaInfoType }
+ *
+ */
+ public void setFinalDataMetaInfo(FinalDataMetaInfoType value) {
+ this.finalDataMetaInfo = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformsType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformsType.java
new file mode 100644
index 00000000..25510db9
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/TransformsType.java
@@ -0,0 +1,85 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for TransformsType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="TransformsType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Transform" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TransformsType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "transform"
+})
+public class TransformsType {
+
+ @XmlElement(name = "Transform", required = true)
+ protected List<TransformType> transform;
+
+ /**
+ * Gets the value of the transform property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the transform property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getTransform().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link TransformType }
+ *
+ *
+ */
+ public List<TransformType> getTransform() {
+ if (transform == null) {
+ transform = new ArrayList<TransformType>();
+ }
+ return this.transform;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyCMSSignatureRequest.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyCMSSignatureRequest.java
new file mode 100644
index 00000000..ced1e0c5
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyCMSSignatureRequest.java
@@ -0,0 +1,85 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/moa/20020822#}VerifyCMSSignatureRequestType">
+ * &lt;attribute name="Signatories" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}SignatoriesType" default="1" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "")
+@XmlRootElement(name = "VerifyCMSSignatureRequest")
+public class VerifyCMSSignatureRequest
+ extends VerifyCMSSignatureRequestType
+{
+
+ @XmlAttribute(name = "Signatories")
+ protected List<String> signatories;
+
+ /**
+ * Gets the value of the signatories property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the signatories property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSignatories().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getSignatories() {
+ if (signatories == null) {
+ signatories = new ArrayList<String>();
+ }
+ return this.signatories;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyCMSSignatureRequestType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyCMSSignatureRequestType.java
new file mode 100644
index 00000000..ca514c70
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyCMSSignatureRequestType.java
@@ -0,0 +1,171 @@
+/*
+* 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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * <p>Java class for VerifyCMSSignatureRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="VerifyCMSSignatureRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="DateTime" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
+ * &lt;element name="CMSSignature" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="DataObject" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}CMSDataObjectOptionalMetaType" minOccurs="0"/>
+ * &lt;element name="TrustProfileID" type="{http://www.w3.org/2001/XMLSchema}token"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "VerifyCMSSignatureRequestType", propOrder = {
+ "dateTime",
+ "cmsSignature",
+ "dataObject",
+ "trustProfileID"
+})
+@XmlSeeAlso({
+ VerifyCMSSignatureRequest.class
+})
+public class VerifyCMSSignatureRequestType {
+
+ @XmlElement(name = "DateTime")
+ @XmlSchemaType(name = "dateTime")
+ protected XMLGregorianCalendar dateTime;
+ @XmlElement(name = "CMSSignature", required = true)
+ protected byte[] cmsSignature;
+ @XmlElement(name = "DataObject")
+ protected CMSDataObjectOptionalMetaType dataObject;
+ @XmlElement(name = "TrustProfileID", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String trustProfileID;
+
+ /**
+ * Gets the value of the dateTime property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public XMLGregorianCalendar getDateTime() {
+ return dateTime;
+ }
+
+ /**
+ * Sets the value of the dateTime property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public void setDateTime(XMLGregorianCalendar value) {
+ this.dateTime = value;
+ }
+
+ /**
+ * Gets the value of the cmsSignature property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getCMSSignature() {
+ return cmsSignature;
+ }
+
+ /**
+ * Sets the value of the cmsSignature property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setCMSSignature(byte[] value) {
+ this.cmsSignature = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the dataObject property.
+ *
+ * @return
+ * possible object is
+ * {@link CMSDataObjectOptionalMetaType }
+ *
+ */
+ public CMSDataObjectOptionalMetaType getDataObject() {
+ return dataObject;
+ }
+
+ /**
+ * Sets the value of the dataObject property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CMSDataObjectOptionalMetaType }
+ *
+ */
+ public void setDataObject(CMSDataObjectOptionalMetaType value) {
+ this.dataObject = value;
+ }
+
+ /**
+ * Gets the value of the trustProfileID property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getTrustProfileID() {
+ return trustProfileID;
+ }
+
+ /**
+ * Sets the value of the trustProfileID property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setTrustProfileID(String value) {
+ this.trustProfileID = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyCMSSignatureResponseType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyCMSSignatureResponseType.java
new file mode 100644
index 00000000..65508d4f
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyCMSSignatureResponseType.java
@@ -0,0 +1,95 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for VerifyCMSSignatureResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="VerifyCMSSignatureResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence maxOccurs="unbounded">
+ * &lt;element name="SignerInfo" type="{http://www.w3.org/2000/09/xmldsig#}KeyInfoType"/>
+ * &lt;element name="SignatureCheck" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}CheckResultType"/>
+ * &lt;element name="CertificateCheck" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}CheckResultType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "VerifyCMSSignatureResponseType", propOrder = {
+ "signerInfoAndSignatureCheckAndCertificateCheck"
+})
+public class VerifyCMSSignatureResponseType {
+
+ @XmlElementRefs({
+ @XmlElementRef(name = "CertificateCheck", namespace = "http://reference.e-government.gv.at/namespace/moa/20020822#", type = JAXBElement.class),
+ @XmlElementRef(name = "SignerInfo", namespace = "http://reference.e-government.gv.at/namespace/moa/20020822#", type = JAXBElement.class),
+ @XmlElementRef(name = "SignatureCheck", namespace = "http://reference.e-government.gv.at/namespace/moa/20020822#", type = JAXBElement.class)
+ })
+ protected List<JAXBElement<?>> signerInfoAndSignatureCheckAndCertificateCheck;
+
+ /**
+ * Gets the value of the signerInfoAndSignatureCheckAndCertificateCheck property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the signerInfoAndSignatureCheckAndCertificateCheck property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSignerInfoAndSignatureCheckAndCertificateCheck().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link JAXBElement }{@code <}{@link KeyInfoType }{@code >}
+ * {@link JAXBElement }{@code <}{@link CheckResultType }{@code >}
+ * {@link JAXBElement }{@code <}{@link CheckResultType }{@code >}
+ *
+ *
+ */
+ public List<JAXBElement<?>> getSignerInfoAndSignatureCheckAndCertificateCheck() {
+ if (signerInfoAndSignatureCheckAndCertificateCheck == null) {
+ signerInfoAndSignatureCheckAndCertificateCheck = new ArrayList<JAXBElement<?>>();
+ }
+ return this.signerInfoAndSignatureCheckAndCertificateCheck;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyTransformsDataType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyTransformsDataType.java
new file mode 100644
index 00000000..85bc0303
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyTransformsDataType.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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for VerifyTransformsDataType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="VerifyTransformsDataType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice maxOccurs="unbounded">
+ * &lt;element ref="{http://reference.e-government.gv.at/namespace/moa/20020822#}VerifyTransformsInfoProfile"/>
+ * &lt;element name="VerifyTransformsInfoProfileID" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "VerifyTransformsDataType", propOrder = {
+ "verifyTransformsInfoProfileOrVerifyTransformsInfoProfileID"
+})
+public class VerifyTransformsDataType {
+
+ @XmlElements({
+ @XmlElement(name = "VerifyTransformsInfoProfile", type = VerifyTransformsInfoProfile.class),
+ @XmlElement(name = "VerifyTransformsInfoProfileID", type = String.class)
+ })
+ protected List<Object> verifyTransformsInfoProfileOrVerifyTransformsInfoProfileID;
+
+ /**
+ * Gets the value of the verifyTransformsInfoProfileOrVerifyTransformsInfoProfileID property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the verifyTransformsInfoProfileOrVerifyTransformsInfoProfileID property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getVerifyTransformsInfoProfileOrVerifyTransformsInfoProfileID().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link VerifyTransformsInfoProfile }
+ * {@link String }
+ *
+ *
+ */
+ public List<Object> getVerifyTransformsInfoProfileOrVerifyTransformsInfoProfileID() {
+ if (verifyTransformsInfoProfileOrVerifyTransformsInfoProfileID == null) {
+ verifyTransformsInfoProfileOrVerifyTransformsInfoProfileID = new ArrayList<Object>();
+ }
+ return this.verifyTransformsInfoProfileOrVerifyTransformsInfoProfileID;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyTransformsInfoProfile.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyTransformsInfoProfile.java
new file mode 100644
index 00000000..9e023df1
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyTransformsInfoProfile.java
@@ -0,0 +1,115 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Transforms" minOccurs="0"/>
+ * &lt;element name="TransformParameter" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}TransformParameterType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "", propOrder = {
+ "transforms",
+ "transformParameter"
+})
+@XmlRootElement(name = "VerifyTransformsInfoProfile")
+public class VerifyTransformsInfoProfile {
+
+ @XmlElement(name = "Transforms", namespace = "http://www.w3.org/2000/09/xmldsig#")
+ protected TransformsType transforms;
+ @XmlElement(name = "TransformParameter")
+ protected List<TransformParameterType> transformParameter;
+
+ /**
+ * Gets the value of the transforms property.
+ *
+ * @return
+ * possible object is
+ * {@link TransformsType }
+ *
+ */
+ public TransformsType getTransforms() {
+ return transforms;
+ }
+
+ /**
+ * Sets the value of the transforms property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TransformsType }
+ *
+ */
+ public void setTransforms(TransformsType value) {
+ this.transforms = value;
+ }
+
+ /**
+ * Gets the value of the transformParameter property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the transformParameter property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getTransformParameter().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link TransformParameterType }
+ *
+ *
+ */
+ public List<TransformParameterType> getTransformParameter() {
+ if (transformParameter == null) {
+ transformParameter = new ArrayList<TransformParameterType>();
+ }
+ return this.transformParameter;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyXMLSignatureRequestType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyXMLSignatureRequestType.java
new file mode 100644
index 00000000..4d0c09b7
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyXMLSignatureRequestType.java
@@ -0,0 +1,439 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * <p>Java class for VerifyXMLSignatureRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="VerifyXMLSignatureRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="DateTime" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
+ * &lt;element name="VerifySignatureInfo">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="VerifySignatureEnvironment" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}ContentOptionalRefType"/>
+ * &lt;element name="VerifySignatureLocation" type="{http://www.w3.org/2001/XMLSchema}token"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;choice maxOccurs="unbounded" minOccurs="0">
+ * &lt;element ref="{http://reference.e-government.gv.at/namespace/moa/20020822#}SupplementProfile"/>
+ * &lt;element name="SupplementProfileID" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;/choice>
+ * &lt;element name="SignatureManifestCheckParams" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ReferenceInfo" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}VerifyTransformsDataType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;attribute name="ReturnReferenceInputData" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="ReturnHashInputData" type="{http://www.w3.org/2001/XMLSchema}anyType" minOccurs="0"/>
+ * &lt;element name="TrustProfileID" type="{http://www.w3.org/2001/XMLSchema}token"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "VerifyXMLSignatureRequestType", propOrder = {
+ "dateTime",
+ "verifySignatureInfo",
+ "supplementProfileOrSupplementProfileID",
+ "signatureManifestCheckParams",
+ "returnHashInputData",
+ "trustProfileID"
+})
+public class VerifyXMLSignatureRequestType {
+
+ @XmlElement(name = "DateTime")
+ @XmlSchemaType(name = "dateTime")
+ protected XMLGregorianCalendar dateTime;
+ @XmlElement(name = "VerifySignatureInfo", required = true)
+ protected VerifyXMLSignatureRequestType.VerifySignatureInfo verifySignatureInfo;
+ @XmlElements({
+ @XmlElement(name = "SupplementProfileID", type = String.class),
+ @XmlElement(name = "SupplementProfile", type = XMLDataObjectAssociationType.class)
+ })
+ protected List<Object> supplementProfileOrSupplementProfileID;
+ @XmlElement(name = "SignatureManifestCheckParams")
+ protected VerifyXMLSignatureRequestType.SignatureManifestCheckParams signatureManifestCheckParams;
+ @XmlElement(name = "ReturnHashInputData")
+ protected Object returnHashInputData;
+ @XmlElement(name = "TrustProfileID", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String trustProfileID;
+
+ /**
+ * Gets the value of the dateTime property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public XMLGregorianCalendar getDateTime() {
+ return dateTime;
+ }
+
+ /**
+ * Sets the value of the dateTime property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public void setDateTime(XMLGregorianCalendar value) {
+ this.dateTime = value;
+ }
+
+ /**
+ * Gets the value of the verifySignatureInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link VerifyXMLSignatureRequestType.VerifySignatureInfo }
+ *
+ */
+ public VerifyXMLSignatureRequestType.VerifySignatureInfo getVerifySignatureInfo() {
+ return verifySignatureInfo;
+ }
+
+ /**
+ * Sets the value of the verifySignatureInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link VerifyXMLSignatureRequestType.VerifySignatureInfo }
+ *
+ */
+ public void setVerifySignatureInfo(VerifyXMLSignatureRequestType.VerifySignatureInfo value) {
+ this.verifySignatureInfo = value;
+ }
+
+ /**
+ * Gets the value of the supplementProfileOrSupplementProfileID property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the supplementProfileOrSupplementProfileID property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSupplementProfileOrSupplementProfileID().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ * {@link XMLDataObjectAssociationType }
+ *
+ *
+ */
+ public List<Object> getSupplementProfileOrSupplementProfileID() {
+ if (supplementProfileOrSupplementProfileID == null) {
+ supplementProfileOrSupplementProfileID = new ArrayList<Object>();
+ }
+ return this.supplementProfileOrSupplementProfileID;
+ }
+
+ /**
+ * Gets the value of the signatureManifestCheckParams property.
+ *
+ * @return
+ * possible object is
+ * {@link VerifyXMLSignatureRequestType.SignatureManifestCheckParams }
+ *
+ */
+ public VerifyXMLSignatureRequestType.SignatureManifestCheckParams getSignatureManifestCheckParams() {
+ return signatureManifestCheckParams;
+ }
+
+ /**
+ * Sets the value of the signatureManifestCheckParams property.
+ *
+ * @param value
+ * allowed object is
+ * {@link VerifyXMLSignatureRequestType.SignatureManifestCheckParams }
+ *
+ */
+ public void setSignatureManifestCheckParams(VerifyXMLSignatureRequestType.SignatureManifestCheckParams value) {
+ this.signatureManifestCheckParams = value;
+ }
+
+ /**
+ * Gets the value of the returnHashInputData property.
+ *
+ * @return
+ * possible object is
+ * {@link Object }
+ *
+ */
+ public Object getReturnHashInputData() {
+ return returnHashInputData;
+ }
+
+ /**
+ * Sets the value of the returnHashInputData property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Object }
+ *
+ */
+ public void setReturnHashInputData(Object value) {
+ this.returnHashInputData = value;
+ }
+
+ /**
+ * Gets the value of the trustProfileID property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getTrustProfileID() {
+ return trustProfileID;
+ }
+
+ /**
+ * Sets the value of the trustProfileID property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setTrustProfileID(String value) {
+ this.trustProfileID = value;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ReferenceInfo" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}VerifyTransformsDataType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;attribute name="ReturnReferenceInputData" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "", propOrder = {
+ "referenceInfo"
+ })
+ public static class SignatureManifestCheckParams {
+
+ @XmlElement(name = "ReferenceInfo", required = true)
+ protected List<VerifyTransformsDataType> referenceInfo;
+ @XmlAttribute(name = "ReturnReferenceInputData")
+ protected Boolean returnReferenceInputData;
+
+ /**
+ * Gets the value of the referenceInfo property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the referenceInfo property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getReferenceInfo().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link VerifyTransformsDataType }
+ *
+ *
+ */
+ public List<VerifyTransformsDataType> getReferenceInfo() {
+ if (referenceInfo == null) {
+ referenceInfo = new ArrayList<VerifyTransformsDataType>();
+ }
+ return this.referenceInfo;
+ }
+
+ /**
+ * Gets the value of the returnReferenceInputData property.
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public boolean isReturnReferenceInputData() {
+ if (returnReferenceInputData == null) {
+ return true;
+ } else {
+ return returnReferenceInputData;
+ }
+ }
+
+ /**
+ * Sets the value of the returnReferenceInputData property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setReturnReferenceInputData(Boolean value) {
+ this.returnReferenceInputData = value;
+ }
+
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="VerifySignatureEnvironment" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}ContentOptionalRefType"/>
+ * &lt;element name="VerifySignatureLocation" type="{http://www.w3.org/2001/XMLSchema}token"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "", propOrder = {
+ "verifySignatureEnvironment",
+ "verifySignatureLocation"
+ })
+ public static class VerifySignatureInfo {
+
+ @XmlElement(name = "VerifySignatureEnvironment", required = true)
+ protected ContentOptionalRefType verifySignatureEnvironment;
+ @XmlElement(name = "VerifySignatureLocation", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String verifySignatureLocation;
+
+ /**
+ * Gets the value of the verifySignatureEnvironment property.
+ *
+ * @return
+ * possible object is
+ * {@link ContentOptionalRefType }
+ *
+ */
+ public ContentOptionalRefType getVerifySignatureEnvironment() {
+ return verifySignatureEnvironment;
+ }
+
+ /**
+ * Sets the value of the verifySignatureEnvironment property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ContentOptionalRefType }
+ *
+ */
+ public void setVerifySignatureEnvironment(ContentOptionalRefType value) {
+ this.verifySignatureEnvironment = value;
+ }
+
+ /**
+ * Gets the value of the verifySignatureLocation property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getVerifySignatureLocation() {
+ return verifySignatureLocation;
+ }
+
+ /**
+ * Sets the value of the verifySignatureLocation property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setVerifySignatureLocation(String value) {
+ this.verifySignatureLocation = value;
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyXMLSignatureResponseType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyXMLSignatureResponseType.java
new file mode 100644
index 00000000..18c9ddec
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/VerifyXMLSignatureResponseType.java
@@ -0,0 +1,263 @@
+/*
+* 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 moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for VerifyXMLSignatureResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="VerifyXMLSignatureResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="SignerInfo" type="{http://www.w3.org/2000/09/xmldsig#}KeyInfoType"/>
+ * &lt;element name="HashInputData" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}InputDataType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="ReferenceInputData" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}InputDataType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="SignatureCheck" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}ReferencesCheckResultType"/>
+ * &lt;element name="SignatureManifestCheck" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}ReferencesCheckResultType" minOccurs="0"/>
+ * &lt;element name="XMLDSIGManifestCheck" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}ManifestRefsCheckResultType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="CertificateCheck" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}CheckResultType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "VerifyXMLSignatureResponseType", propOrder = {
+ "signerInfo",
+ "hashInputData",
+ "referenceInputData",
+ "signatureCheck",
+ "signatureManifestCheck",
+ "xmldsigManifestCheck",
+ "certificateCheck"
+})
+public class VerifyXMLSignatureResponseType {
+
+ @XmlElement(name = "SignerInfo", required = true)
+ protected KeyInfoType signerInfo;
+ @XmlElement(name = "HashInputData")
+ protected List<InputDataType> hashInputData;
+ @XmlElement(name = "ReferenceInputData")
+ protected List<InputDataType> referenceInputData;
+ @XmlElement(name = "SignatureCheck", required = true)
+ protected ReferencesCheckResultType signatureCheck;
+ @XmlElement(name = "SignatureManifestCheck")
+ protected ReferencesCheckResultType signatureManifestCheck;
+ @XmlElement(name = "XMLDSIGManifestCheck")
+ protected List<ManifestRefsCheckResultType> xmldsigManifestCheck;
+ @XmlElement(name = "CertificateCheck", required = true)
+ protected CheckResultType certificateCheck;
+
+ /**
+ * Gets the value of the signerInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link KeyInfoType }
+ *
+ */
+ public KeyInfoType getSignerInfo() {
+ return signerInfo;
+ }
+
+ /**
+ * Sets the value of the signerInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link KeyInfoType }
+ *
+ */
+ public void setSignerInfo(KeyInfoType value) {
+ this.signerInfo = value;
+ }
+
+ /**
+ * Gets the value of the hashInputData property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the hashInputData property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getHashInputData().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link InputDataType }
+ *
+ *
+ */
+ public List<InputDataType> getHashInputData() {
+ if (hashInputData == null) {
+ hashInputData = new ArrayList<InputDataType>();
+ }
+ return this.hashInputData;
+ }
+
+ /**
+ * Gets the value of the referenceInputData property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the referenceInputData property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getReferenceInputData().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link InputDataType }
+ *
+ *
+ */
+ public List<InputDataType> getReferenceInputData() {
+ if (referenceInputData == null) {
+ referenceInputData = new ArrayList<InputDataType>();
+ }
+ return this.referenceInputData;
+ }
+
+ /**
+ * Gets the value of the signatureCheck property.
+ *
+ * @return
+ * possible object is
+ * {@link ReferencesCheckResultType }
+ *
+ */
+ public ReferencesCheckResultType getSignatureCheck() {
+ return signatureCheck;
+ }
+
+ /**
+ * Sets the value of the signatureCheck property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ReferencesCheckResultType }
+ *
+ */
+ public void setSignatureCheck(ReferencesCheckResultType value) {
+ this.signatureCheck = value;
+ }
+
+ /**
+ * Gets the value of the signatureManifestCheck property.
+ *
+ * @return
+ * possible object is
+ * {@link ReferencesCheckResultType }
+ *
+ */
+ public ReferencesCheckResultType getSignatureManifestCheck() {
+ return signatureManifestCheck;
+ }
+
+ /**
+ * Sets the value of the signatureManifestCheck property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ReferencesCheckResultType }
+ *
+ */
+ public void setSignatureManifestCheck(ReferencesCheckResultType value) {
+ this.signatureManifestCheck = value;
+ }
+
+ /**
+ * Gets the value of the xmldsigManifestCheck property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the xmldsigManifestCheck property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getXMLDSIGManifestCheck().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link ManifestRefsCheckResultType }
+ *
+ *
+ */
+ public List<ManifestRefsCheckResultType> getXMLDSIGManifestCheck() {
+ if (xmldsigManifestCheck == null) {
+ xmldsigManifestCheck = new ArrayList<ManifestRefsCheckResultType>();
+ }
+ return this.xmldsigManifestCheck;
+ }
+
+ /**
+ * Gets the value of the certificateCheck property.
+ *
+ * @return
+ * possible object is
+ * {@link CheckResultType }
+ *
+ */
+ public CheckResultType getCertificateCheck() {
+ return certificateCheck;
+ }
+
+ /**
+ * Sets the value of the certificateCheck property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CheckResultType }
+ *
+ */
+ public void setCertificateCheck(CheckResultType value) {
+ this.certificateCheck = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/X509DataType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/X509DataType.java
new file mode 100644
index 00000000..cab7852d
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/X509DataType.java
@@ -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.
+*/
+
+package moaspss.generated;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for X509DataType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="X509DataType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence maxOccurs="unbounded">
+ * &lt;choice>
+ * &lt;element name="X509IssuerSerial" type="{http://www.w3.org/2000/09/xmldsig#}X509IssuerSerialType"/>
+ * &lt;element name="X509SKI" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="X509SubjectName" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="X509Certificate" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="X509CRL" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;any/>
+ * &lt;/choice>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "X509DataType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "x509IssuerSerialOrX509SKIOrX509SubjectName"
+})
+public class X509DataType {
+
+ @XmlElementRefs({
+ @XmlElementRef(name = "X509CRL", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "X509Certificate", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "X509SKI", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "X509SubjectName", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "X509IssuerSerial", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class)
+ })
+ @XmlAnyElement(lax = true)
+ protected List<Object> x509IssuerSerialOrX509SKIOrX509SubjectName;
+
+ /**
+ * Gets the value of the x509IssuerSerialOrX509SKIOrX509SubjectName property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the x509IssuerSerialOrX509SKIOrX509SubjectName property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getX509IssuerSerialOrX509SKIOrX509SubjectName().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
+ * {@link Element }
+ * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
+ * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
+ * {@link JAXBElement }{@code <}{@link String }{@code >}
+ * {@link JAXBElement }{@code <}{@link X509IssuerSerialType }{@code >}
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getX509IssuerSerialOrX509SKIOrX509SubjectName() {
+ if (x509IssuerSerialOrX509SKIOrX509SubjectName == null) {
+ x509IssuerSerialOrX509SKIOrX509SubjectName = new ArrayList<Object>();
+ }
+ return this.x509IssuerSerialOrX509SKIOrX509SubjectName;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/X509IssuerSerialType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/X509IssuerSerialType.java
new file mode 100644
index 00000000..fc3c90d5
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/X509IssuerSerialType.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 moaspss.generated;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for X509IssuerSerialType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="X509IssuerSerialType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="X509IssuerName" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="X509SerialNumber" type="{http://www.w3.org/2001/XMLSchema}integer"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "X509IssuerSerialType", namespace = "http://www.w3.org/2000/09/xmldsig#", propOrder = {
+ "x509IssuerName",
+ "x509SerialNumber"
+})
+public class X509IssuerSerialType {
+
+ @XmlElement(name = "X509IssuerName", required = true)
+ protected String x509IssuerName;
+ @XmlElement(name = "X509SerialNumber", required = true)
+ protected BigInteger x509SerialNumber;
+
+ /**
+ * Gets the value of the x509IssuerName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getX509IssuerName() {
+ return x509IssuerName;
+ }
+
+ /**
+ * Sets the value of the x509IssuerName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setX509IssuerName(String value) {
+ this.x509IssuerName = value;
+ }
+
+ /**
+ * Gets the value of the x509SerialNumber property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getX509SerialNumber() {
+ return x509SerialNumber;
+ }
+
+ /**
+ * Sets the value of the x509SerialNumber property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setX509SerialNumber(BigInteger value) {
+ this.x509SerialNumber = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/XMLContentType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/XMLContentType.java
new file mode 100644
index 00000000..da6a4708
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/XMLContentType.java
@@ -0,0 +1,79 @@
+/*
+* 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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for XMLContentType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="XMLContentType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/moa/20020822#}AnyChildrenType">
+ * &lt;attribute ref="{http://www.w3.org/XML/1998/namespace}space"/>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "XMLContentType")
+public class XMLContentType
+ extends AnyChildrenType
+{
+
+ @XmlAttribute(namespace = "http://www.w3.org/XML/1998/namespace")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected String space;
+
+ /**
+ * Gets the value of the space property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getSpace() {
+ return space;
+ }
+
+ /**
+ * Sets the value of the space property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSpace(String value) {
+ this.space = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/XMLDataObjectAssociationType.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/XMLDataObjectAssociationType.java
new file mode 100644
index 00000000..6615981c
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/XMLDataObjectAssociationType.java
@@ -0,0 +1,106 @@
+/*
+* 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 moaspss.generated;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for XMLDataObjectAssociationType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="XMLDataObjectAssociationType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="MetaInfo" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}MetaInfoType" minOccurs="0"/>
+ * &lt;element name="Content" type="{http://reference.e-government.gv.at/namespace/moa/20020822#}ContentRequiredRefType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "XMLDataObjectAssociationType", propOrder = {
+ "metaInfo",
+ "content"
+})
+public class XMLDataObjectAssociationType {
+
+ @XmlElement(name = "MetaInfo")
+ protected MetaInfoType metaInfo;
+ @XmlElement(name = "Content", required = true)
+ protected ContentRequiredRefType content;
+
+ /**
+ * Gets the value of the metaInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link MetaInfoType }
+ *
+ */
+ public MetaInfoType getMetaInfo() {
+ return metaInfo;
+ }
+
+ /**
+ * Sets the value of the metaInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link MetaInfoType }
+ *
+ */
+ public void setMetaInfo(MetaInfoType value) {
+ this.metaInfo = value;
+ }
+
+ /**
+ * Gets the value of the content property.
+ *
+ * @return
+ * possible object is
+ * {@link ContentRequiredRefType }
+ *
+ */
+ public ContentRequiredRefType getContent() {
+ return content;
+ }
+
+ /**
+ * Sets the value of the content property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ContentRequiredRefType }
+ *
+ */
+ public void setContent(ContentRequiredRefType value) {
+ this.content = value;
+ }
+
+}
diff --git a/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/package-info.java b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/package-info.java
new file mode 100644
index 00000000..aadb75fc
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/java/moaspss/generated/package-info.java
@@ -0,0 +1,18 @@
+/*
+* 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.
+*/
+@javax.xml.bind.annotation.XmlSchema(namespace = "http://reference.e-government.gv.at/namespace/moa/20020822#", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package moaspss.generated;
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/MOA-SPSS-1.3.wsdl b/mocca-1.2.11/bkucommon/src/test/resources/MOA-SPSS-1.3.wsdl
new file mode 100644
index 00000000..25accfce
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/MOA-SPSS-1.3.wsdl
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Web Service Description for MOA SP/SS 1.4
+ modified for BKU2 testing
+-->
+<definitions name="MOA"
+ targetNamespace="http://reference.e-government.gv.at/namespace/moa/wsdl/20020822#"
+ xmlns="http://schemas.xmlsoap.org/wsdl/"
+ xmlns:tns="http://reference.e-government.gv.at/namespace/moa/wsdl/20020822#"
+ xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+ xmlns:moa="http://reference.e-government.gv.at/namespace/moa/20020822#"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
+ <types>
+ <xsd:schema targetNamespace="http://reference.e-government.gv.at/namespace/moa/wsdl/20020822#">
+ <xsd:import namespace="http://reference.e-government.gv.at/namespace/moa/20020822#" schemaLocation="MOA-SPSS-1.3.xsd"/>
+ </xsd:schema>
+ </types>
+
+ <message name="VerifyXMLSignatureInput">
+ <part name="body" element="moa:VerifyXMLSignatureRequest"/>
+ </message>
+ <message name="VerifyXMLSignatureOutput">
+ <part name="body" element="moa:VerifyXMLSignatureResponse"/>
+ </message>
+ <message name="MOAFault">
+ <part name="body" element="moa:ErrorResponse"/>
+ </message>
+ <portType name="SignatureVerificationPortType">
+ <operation name="verifyXMLSignature">
+ <input message="tns:VerifyXMLSignatureInput"/>
+ <output message="tns:VerifyXMLSignatureOutput"/>
+ <fault name="MOAFault" message="tns:MOAFault"/>
+ </operation>
+ </portType>
+ <binding name="SignatureVerificationBinding" type="tns:SignatureVerificationPortType">
+ <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
+ <operation name="verifyXMLSignature">
+ <soap:operation soapAction="urn:VerifyXMLSignatureAction"/>
+ <input>
+ <soap:body use="literal" namespace="http://reference.e-government.gv.at/namespace/moa/20020822#"/>
+ </input>
+ <output>
+ <soap:body use="literal" namespace="http://reference.e-government.gv.at/namespace/moa/20020822#"/>
+ </output>
+ <fault name="MOAFault">
+ <soap:fault name="MOAFault" use="literal" namespace="http://reference.e-government.gv.at/namespace/moa/20020822#"/>
+ </fault>
+ </operation>
+ </binding>
+ <service name="SignatureVerificationService">
+ <port name="SignatureVerificationPort" binding="tns:SignatureVerificationBinding">
+ <soap:address location="http://localhost:8080/moa-spss/services/SignatureVerification"/>
+ </port>
+ </service>
+</definitions>
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/MOA-SPSS-1.3.xsd b/mocca-1.2.11/bkucommon/src/test/resources/MOA-SPSS-1.3.xsd
new file mode 100644
index 00000000..756b5127
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/MOA-SPSS-1.3.xsd
@@ -0,0 +1,469 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ MOA SP/SS 1.3 Schema
+-->
+<xsd:schema targetNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#">
+ <xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd"/>
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>
+ <!--########## Create XML Signature ###-->
+ <!--### Create XML Signature Request ###-->
+ <xsd:element name="CreateXMLSignatureRequest">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="CreateXMLSignatureRequestType"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:complexType name="CreateXMLSignatureRequestType">
+ <xsd:sequence>
+ <xsd:element name="KeyIdentifier" type="KeyIdentifierType"/>
+ <xsd:element name="SingleSignatureInfo" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>Ermöglichung der Stapelsignatur durch wiederholte Angabe dieses Elements</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="DataObjectInfo" maxOccurs="unbounded">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="DataObjectInfoType">
+ <xsd:attribute name="ChildOfManifest" type="xsd:boolean" use="optional" default="false"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="CreateSignatureInfo" minOccurs="0">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="CreateSignatureEnvironment" type="ContentOptionalRefType"/>
+ <xsd:choice>
+ <xsd:annotation>
+ <xsd:documentation>Auswahl: Entweder explizite Angabe des Signaturorts sowie ggf. sinnvoller Supplements im Zshg. mit der Signaturumgebung, oder Verweis auf ein benanntes Profil</xsd:documentation>
+ </xsd:annotation>
+ <xsd:element ref="CreateSignatureEnvironmentProfile"/>
+ <xsd:element name="CreateSignatureEnvironmentProfileID" type="ProfileIdentifierType"/>
+ </xsd:choice>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="SecurityLayerConformity" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--### Create XML Signature Response ###-->
+ <xsd:complexType name="CreateXMLSignatureResponseType">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>Kardinalität 1..oo erlaubt die Antwort auf eine Stapelsignatur-Anfrage</xsd:documentation>
+ </xsd:annotation>
+ <xsd:element name="SignatureEnvironment">
+ <xsd:annotation>
+ <xsd:documentation>Resultat, falls die Signaturerstellung erfolgreich war</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:any namespace="##any" processContents="lax"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element ref="ErrorResponse"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:element name="CreateXMLSignatureResponse" type="CreateXMLSignatureResponseType"/>
+ <!--########## Verify CMS Signature ###-->
+ <!--### Verifiy CMS Signature Request ###-->
+ <xsd:element name="VerifyCMSSignatureRequest">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="VerifyCMSSignatureRequestType">
+ <xsd:attribute name="Signatories" type="SignatoriesType" use="optional" default="1"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:complexType name="VerifyCMSSignatureRequestType">
+ <xsd:sequence>
+ <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/>
+ <xsd:element name="CMSSignature" type="xsd:base64Binary"/>
+ <xsd:element name="DataObject" type="CMSDataObjectOptionalMetaType" minOccurs="0"/>
+ <xsd:element name="TrustProfileID" type="xsd:token">
+ <xsd:annotation>
+ <xsd:documentation>mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--### Verify CMS Signature Response ###-->
+ <xsd:element name="VerifyCMSSignatureResponse" type="VerifyCMSSignatureResponseType"/>
+ <xsd:complexType name="VerifyCMSSignatureResponseType">
+ <xsd:sequence maxOccurs="unbounded">
+ <xsd:element name="SignerInfo" type="dsig:KeyInfoType">
+ <xsd:annotation>
+ <xsd:documentation>only ds:X509Data and RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any;publicAuthority is included as X509Data/any</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="SignatureCheck" type="CheckResultType"/>
+ <xsd:element name="CertificateCheck" type="CheckResultType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--########## Verify XML Signature ###-->
+ <!--### Verify XML Signature Request ###-->
+ <xsd:element name="VerifyXMLSignatureRequest" type="VerifyXMLSignatureRequestType"/>
+ <xsd:complexType name="VerifyXMLSignatureRequestType">
+ <xsd:sequence>
+ <xsd:element name="DateTime" type="xsd:dateTime" minOccurs="0"/>
+ <xsd:element name="VerifySignatureInfo">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="VerifySignatureEnvironment" type="ContentOptionalRefType"/>
+ <xsd:element name="VerifySignatureLocation" type="xsd:token"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:choice minOccurs="0" maxOccurs="unbounded">
+ <xsd:element ref="SupplementProfile"/>
+ <xsd:element name="SupplementProfileID" type="xsd:string"/>
+ </xsd:choice>
+ <xsd:element name="SignatureManifestCheckParams" minOccurs="0">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="ReferenceInfo" type="VerifyTransformsDataType" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>Pro dsig:Reference-Element in der zu überprüfenden XML-Signatur muss hier ein ReferenceInfo-Element erscheinen. Die Reihenfolge der einzelnen ReferenceInfo Elemente entspricht jener der dsig:Reference Elemente in der XML-Signatur.</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="ReturnReferenceInputData" type="xsd:boolean" use="optional" default="true"/>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="ReturnHashInputData" minOccurs="0"/>
+ <xsd:element name="TrustProfileID" type="xsd:token">
+ <xsd:annotation>
+ <xsd:documentation>mit diesem Profil wird eine Menge von vertrauenswürdigen Wurzelzertifikaten spezifiziert</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--### Verify XML Signature Response ###-->
+ <xsd:element name="VerifyXMLSignatureResponse" type="VerifyXMLSignatureResponseType"/>
+ <xsd:complexType name="VerifyXMLSignatureResponseType">
+ <xsd:sequence>
+ <xsd:element name="SignerInfo" type="dsig:KeyInfoType">
+ <xsd:annotation>
+ <xsd:documentation>only ds:X509Data and ds:RetrievalMethod is supported; QualifiedCertificate is included as X509Data/any; PublicAuthority is included as X509Data/any</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="HashInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="ReferenceInputData" type="InputDataType" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="SignatureCheck" type="ReferencesCheckResultType"/>
+ <xsd:element name="SignatureManifestCheck" type="ReferencesCheckResultType" minOccurs="0"/>
+ <xsd:element name="XMLDSIGManifestCheck" type="ManifestRefsCheckResultType" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="CertificateCheck" type="CheckResultType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="ProfileIdentifierType">
+ <xsd:restriction base="xsd:token"/>
+ </xsd:simpleType>
+ <xsd:complexType name="InputDataType">
+ <xsd:complexContent>
+ <xsd:extension base="ContentExLocRefBaseType">
+ <xsd:attribute name="PartOf" use="optional" default="SignedInfo">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:token">
+ <xsd:enumeration value="SignedInfo"/>
+ <xsd:enumeration value="XMLDSIGManifest"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ <xsd:attribute name="ReferringSigReference" type="xsd:nonNegativeInteger" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="MetaInfoType">
+ <xsd:sequence>
+ <xsd:element name="MimeType" type="MimeTypeType"/>
+ <xsd:element name="Description" type="xsd:anyURI" minOccurs="0"/>
+ <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="FinalDataMetaInfoType">
+ <xsd:complexContent>
+ <xsd:extension base="MetaInfoType">
+ <xsd:sequence>
+ <xsd:element name="Type" type="xsd:anyURI" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="DataObjectInfoType">
+ <xsd:sequence>
+ <xsd:element name="DataObject">
+ <xsd:complexType>
+ <xsd:complexContent>
+ <xsd:extension base="ContentOptionalRefType"/>
+ </xsd:complexContent>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:choice>
+ <xsd:annotation>
+ <xsd:documentation>Auswahl: Entweder explizite Angabe EINER Transformationskette inklusive ggf. sinnvoller Supplements oder Verweis auf ein benanntes Profil</xsd:documentation>
+ </xsd:annotation>
+ <xsd:element ref="CreateTransformsInfoProfile"/>
+ <xsd:element name="CreateTransformsInfoProfileID" type="ProfileIdentifierType"/>
+ </xsd:choice>
+ </xsd:sequence>
+ <xsd:attribute name="Structure" use="required">
+ <xsd:simpleType>
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="detached"/>
+ <xsd:enumeration value="enveloping"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ </xsd:attribute>
+ </xsd:complexType>
+ <xsd:complexType name="TransformsInfoType">
+ <xsd:sequence>
+ <xsd:element ref="dsig:Transforms" minOccurs="0"/>
+ <xsd:element name="FinalDataMetaInfo" type="FinalDataMetaInfoType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="XMLDataObjectAssociationType">
+ <xsd:sequence>
+ <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/>
+ <xsd:element name="Content" type="ContentRequiredRefType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CMSDataObjectOptionalMetaType">
+ <xsd:sequence>
+ <xsd:element name="MetaInfo" type="MetaInfoType" minOccurs="0"/>
+ <xsd:element name="Content" type="CMSContentBaseType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="CMSContentBaseType">
+ <xsd:complexContent>
+ <xsd:restriction base="ContentOptionalRefType">
+ <xsd:choice minOccurs="0">
+ <xsd:element name="Base64Content" type="xsd:base64Binary"/>
+ </xsd:choice>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="CheckResultType">
+ <xsd:sequence>
+ <xsd:element name="Code" type="xsd:nonNegativeInteger"/>
+ <xsd:element name="Info" type="AnyChildrenType" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="ReferencesCheckResultType">
+ <xsd:complexContent>
+ <xsd:restriction base="CheckResultType">
+ <xsd:sequence>
+ <xsd:element name="Code" type="xsd:nonNegativeInteger"/>
+ <xsd:element name="Info" type="ReferencesCheckResultInfoType" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="ReferencesCheckResultInfoType" mixed="true">
+ <xsd:complexContent mixed="true">
+ <xsd:restriction base="AnyChildrenType">
+ <xsd:sequence>
+ <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="ManifestRefsCheckResultType">
+ <xsd:complexContent>
+ <xsd:restriction base="CheckResultType">
+ <xsd:sequence>
+ <xsd:element name="Code" type="xsd:nonNegativeInteger"/>
+ <xsd:element name="Info" type="ManifestRefsCheckResultInfoType"/>
+ </xsd:sequence>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="ManifestRefsCheckResultInfoType" mixed="true">
+ <xsd:complexContent mixed="true">
+ <xsd:restriction base="AnyChildrenType">
+ <xsd:sequence>
+ <xsd:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="FailedReference" type="xsd:positiveInteger" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="ReferringSigReference" type="xsd:positiveInteger"/>
+ </xsd:sequence>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <!--########## Error Response ###-->
+ <xsd:element name="ErrorResponse" type="ErrorResponseType">
+ <xsd:annotation>
+ <xsd:documentation>Resultat, falls die Signaturerstellung gescheitert ist</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:complexType name="ErrorResponseType">
+ <xsd:sequence>
+ <xsd:element name="ErrorCode" type="xsd:integer"/>
+ <xsd:element name="Info" type="xsd:string"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <!--########## Auxiliary Types ###-->
+ <xsd:simpleType name="KeyIdentifierType">
+ <xsd:restriction base="xsd:string"/>
+ </xsd:simpleType>
+ <xsd:simpleType name="KeyStorageType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="Software"/>
+ <xsd:enumeration value="Hardware"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:simpleType name="MimeTypeType">
+ <xsd:restriction base="xsd:token"/>
+ </xsd:simpleType>
+ <xsd:complexType name="AnyChildrenType" mixed="true">
+ <xsd:sequence>
+ <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:complexType name="XMLContentType" mixed="true">
+ <xsd:complexContent mixed="true">
+ <xsd:extension base="AnyChildrenType">
+ <xsd:attribute ref="xml:space" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="ContentBaseType">
+ <xsd:choice minOccurs="0">
+ <xsd:element name="Base64Content" type="xsd:base64Binary"/>
+ <xsd:element name="XMLContent" type="XMLContentType"/>
+ <xsd:element name="LocRefContent" type="xsd:anyURI"/>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:complexType name="ContentExLocRefBaseType">
+ <xsd:complexContent>
+ <xsd:restriction base="ContentBaseType">
+ <xsd:choice minOccurs="0">
+ <xsd:element name="Base64Content" type="xsd:base64Binary"/>
+ <xsd:element name="XMLContent" type="XMLContentType"/>
+ </xsd:choice>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="ContentOptionalRefType">
+ <xsd:complexContent>
+ <xsd:extension base="ContentBaseType">
+ <xsd:attribute name="Reference" type="xsd:anyURI" use="optional"/>
+ </xsd:extension>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="ContentRequiredRefType">
+ <xsd:complexContent>
+ <xsd:restriction base="ContentOptionalRefType">
+ <xsd:choice minOccurs="0">
+ <xsd:element name="Base64Content" type="xsd:base64Binary"/>
+ <xsd:element name="XMLContent" type="XMLContentType"/>
+ <xsd:element name="LocRefContent" type="xsd:anyURI"/>
+ </xsd:choice>
+ <xsd:attribute name="Reference" type="xsd:anyURI" use="required"/>
+ </xsd:restriction>
+ </xsd:complexContent>
+ </xsd:complexType>
+ <xsd:complexType name="VerifyTransformsDataType">
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>Ein oder mehrere Transformationswege können von der Applikation an MOA mitgeteilt werden. Die zu prüfende Signatur hat zumindest einem dieser Transformationswege zu entsprechen. Die Angabe kann explizit oder als Profilbezeichner erfolgen.</xsd:documentation>
+ </xsd:annotation>
+ <xsd:element ref="VerifyTransformsInfoProfile"/>
+ <xsd:element name="VerifyTransformsInfoProfileID" type="xsd:string">
+ <xsd:annotation>
+ <xsd:documentation>Profilbezeichner für einen Transformationsweg</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:choice>
+ </xsd:complexType>
+ <xsd:element name="QualifiedCertificate"/>
+ <xsd:element name="PublicAuthority" type="PublicAuthorityType"/>
+ <xsd:complexType name="PublicAuthorityType">
+ <xsd:sequence>
+ <xsd:element name="Code" type="xsd:string" minOccurs="0"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ <xsd:simpleType name="SignatoriesType">
+ <xsd:union memberTypes="AllSignatoriesType">
+ <xsd:simpleType>
+ <xsd:list itemType="xsd:positiveInteger"/>
+ </xsd:simpleType>
+ </xsd:union>
+ </xsd:simpleType>
+ <xsd:simpleType name="AllSignatoriesType">
+ <xsd:restriction base="xsd:string">
+ <xsd:enumeration value="all"/>
+ </xsd:restriction>
+ </xsd:simpleType>
+ <xsd:complexType name="CreateSignatureLocationType">
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:token">
+ <xsd:attribute name="Index" type="xsd:integer" use="required"/>
+ </xsd:extension>
+ </xsd:simpleContent>
+ </xsd:complexType>
+ <xsd:complexType name="TransformParameterType">
+ <xsd:choice minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>Die Angabe des Transformationsparameters (explizit oder als Hashwert) kann unterlassen werden, wenn die Applikation von der Unveränderlichkeit des Inhalts der in "Transformationsparamter", Attribut "URI" angegebenen URI ausgehen kann.</xsd:documentation>
+ </xsd:annotation>
+ <xsd:element name="Base64Content" type="xsd:base64Binary">
+ <xsd:annotation>
+ <xsd:documentation>Der Transformationsparameter explizit angegeben.</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="Hash">
+ <xsd:annotation>
+ <xsd:documentation>Der Hashwert des Transformationsparameters.</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="dsig:DigestMethod"/>
+ <xsd:element ref="dsig:DigestValue"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ </xsd:choice>
+ <xsd:attribute name="URI" type="xsd:anyURI" use="required"/>
+ </xsd:complexType>
+ <xsd:element name="CreateSignatureEnvironmentProfile">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="CreateSignatureLocation" type="CreateSignatureLocationType"/>
+ <xsd:element name="Supplement" type="XMLDataObjectAssociationType" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="VerifyTransformsInfoProfile">
+ <xsd:annotation>
+ <xsd:documentation>Explizite Angabe des Transformationswegs</xsd:documentation>
+ </xsd:annotation>
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="dsig:Transforms" minOccurs="0"/>
+ <xsd:element name="TransformParameter" type="TransformParameterType" minOccurs="0" maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>Alle impliziten Transformationsparameter, die zum Durchlaufen der oben angeführten Transformationskette bekannt sein müssen, müssen hier angeführt werden. Das Attribut "URI" bezeichnet den Transformationsparameter in exakt jener Weise, wie er in der zu überprüfenden Signatur gebraucht wird.</xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+ <xsd:element name="Supplement" type="XMLDataObjectAssociationType"/>
+ <xsd:element name="SupplementProfile" type="XMLDataObjectAssociationType"/>
+ <xsd:element name="CreateTransformsInfoProfile">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element name="CreateTransformsInfo" type="TransformsInfoType"/>
+ <xsd:element ref="Supplement" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema>
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/accesscontroller/AccessControlConfig.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/accesscontroller/AccessControlConfig.xml
new file mode 100644
index 00000000..22f9e4a5
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/accesscontroller/AccessControlConfig.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<AccessControl>
+ <Chains>
+ <Chain Id="Identification">
+ <Rules>
+ <Rule Id="rule-1">
+ <AuthClass>certifiedGovAgency</AuthClass>
+ <AnyPeer />
+ <Action>
+ <RuleAction>allow</RuleAction>
+ </Action>
+ <UserInteraction>confirm</UserInteraction>
+ </Rule>
+ <Rule Id="rule-2">
+ <AuthClass>pseudoanonymous</AuthClass>
+ <AnyPeer />
+ <Action>
+ <ChainRef>Command</ChainRef>
+ </Action>
+ <UserInteraction>none</UserInteraction>
+ </Rule>
+ <Rule Id="rule-3">
+ <AuthClass>anonymous</AuthClass>
+ <IPv4Address>127.0.0.1</IPv4Address>
+ <Action>
+ <ChainRef>Command</ChainRef>
+ </Action>
+ <UserInteraction>none</UserInteraction>
+ </Rule>
+ <Rule Id="rule-4">
+ <AuthClass>anonymous</AuthClass>
+ <DomainName>$.gv.at</DomainName>
+ <Action>
+ <RuleAction>allow</RuleAction>
+ </Action>
+ <UserInteraction>confirm</UserInteraction>
+ </Rule>
+ </Rules>
+ </Chain>
+ <Chain Id="Command">
+ <Rules>
+ <Rule Id="cmd-rule-1">
+ <AuthClass>certified</AuthClass>
+ <AnyPeer />
+ <Command Name="Infobox*">
+ <Param Name="InfoboxIdentifier">IdentityLink</Param>
+ <Param Name="PersonIdentifier">.*</Param>
+ </Command>
+ <Action>
+ <RuleAction>allow</RuleAction>
+ </Action>
+ <UserInteraction>confirm</UserInteraction>
+ </Rule>
+ <Rule Id="cmd-rule-2">
+ <AuthClass>certified</AuthClass>
+ <URL>https://finanzonline.bmf.gv.at/*</URL>
+ <Command Name="InfoboxReadRequest">
+ <Param Name="InfoboxIdentifier">Mandates</Param>
+ <Param Name="PersonIdentifier">.*</Param>
+ </Command>
+ <Action>
+ <RuleAction>allow</RuleAction>
+ </Action>
+ <UserInteraction>info</UserInteraction>
+ </Rule>
+ <Rule Id="cmd-rule-3">
+ <AuthClass>certified</AuthClass>
+ <AnyPeer />
+ <Command Name="InfoboxReadRequest" />
+ <Action>
+ <RuleAction>allow</RuleAction>
+ </Action>
+ <UserInteraction>none</UserInteraction>
+ </Rule>
+ </Rules>
+ </Chain>
+ </Chains>
+</AccessControl>
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/accesscontroller/SimpleChainTest.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/accesscontroller/SimpleChainTest.xml
new file mode 100644
index 00000000..92490fb2
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/accesscontroller/SimpleChainTest.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<AccessControl>
+ <Chains>
+ <Chain Id="InputFilter">
+ <Rules>
+ <Rule Id="rule-IF1">
+ <AuthClass>pseudoanonymous</AuthClass>
+ <Action>
+ <ChainRef>DelegateFilter</ChainRef>
+ </Action>
+ </Rule>
+ </Rules>
+ </Chain>
+
+ <Chain Id="DelegateFilter">
+ <Rules>
+ <Rule Id="rule-DF1">
+ <AuthClass>certified</AuthClass>
+ <Command Name="Infobox.*">
+ <Param Name="InfoboxIdentifier">IdentityLink</Param>
+ <Param Name="PersonIdentifier">derived</Param>
+ </Command>
+ <Action>
+ <RuleAction>allow</RuleAction>
+ </Action>
+ </Rule>
+ <Rule Id="rule-DF2">
+ <AuthClass>certified</AuthClass>
+ <Command Name="Infobox.*">
+ <Param Name="InfoboxIdentifier">IdentityLink</Param>
+ </Command>
+ <Action>
+ <RuleAction>deny</RuleAction>
+ </Action>
+ </Rule>
+ </Rules>
+ </Chain>
+ </Chains>
+</AccessControl> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/accesscontroller/www.a-trust.at.crt b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/accesscontroller/www.a-trust.at.crt
new file mode 100644
index 00000000..11cde026
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/accesscontroller/www.a-trust.at.crt
@@ -0,0 +1,28 @@
+-----BEGIN CERTIFICATE-----
+MIIEyjCCA7KgAwIBAgIDA4LFMA0GCSqGSIb3DQEBBQUAMIGHMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRYwFAYDVQQLDA1hLXNpZ24tU1NM
+LTAzMRYwFAYDVQQDDA1hLXNpZ24tU1NMLTAzMB4XDTA3MTIxMTExMTQ0NFoXDTEy
+MTIxMTExMTQ0NFowYTELMAkGA1UEBhMCQVQxEDAOBgNVBAoMB0EtVHJ1c3QxEDAO
+BgNVBAsMB0EtVHJ1c3QxFzAVBgNVBAMMDnd3dy5hLXRydXN0LmF0MRUwEwYDVQQF
+Eww2NDk2ODY0MDkzMzkwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAK2oRtJ4
+R9ipr/NUH5F4p86cjWtzT1g+ytpjg1lwh4HNY+lTjdUcx/VKBrtf0N8qnMK1UHhA
+LLvvZeKTFi3L15i5or1WjZRi4RfH/4vcL0o1w/91liwMOKH3D30omnVceuxmQp2j
+V9QrGPbz0/IsP51cnBWCBTWGqgfBebB8v1FLAgMBAAGjggHmMIIB4jATBgNVHSME
+DDAKgAhAPqHTYrQD3TByBggrBgEFBQcBAQRmMGQwJwYIKwYBBQUHMAGGG2h0dHA6
+Ly9vY3NwLmEtdHJ1c3QuYXQvb2NzcDA5BggrBgEFBQcwAoYtaHR0cDovL3d3dy5h
+LXRydXN0LmF0L2NlcnRzL2Etc2lnbi1zc2wtMDMuY3J0MEsGA1UdIAREMEIwQAYG
+KigAEQEUMDYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cuYS10cnVzdC5hdC9kb2Nz
+L2NwL2Etc2lnbi1zc2wwgY8GA1UdHwSBhzCBhDCBgaB/oH2Ge2xkYXA6Ly9sZGFw
+LmEtdHJ1c3QuYXQvb3U9YS1zaWduLVNTTC0wMyxvPUEtVHJ1c3QsYz1BVD9jZXJ0
+aWZpY2F0ZXJldm9jYXRpb25saXN0P2Jhc2U/b2JqZWN0Y2xhc3M9ZWlkQ2VydGlm
+aWNhdGlvbkF1dGhvcml0eTARBgNVHQ4ECgQIRu1a/pOZZpMwDgYDVR0PAQH/BAQD
+AgWgMEoGA1UdEQRDMEGBEW9mZmljZUBhLXRydXN0LmF0gg53d3cuYS10cnVzdC5h
+dIIcemRhLnNvemlhbHZlcnNpY2hlcnVuZy5ndi5hdDAJBgNVHRMEAjAAMA0GCSqG
+SIb3DQEBBQUAA4IBAQCQGheDpci0lnSEoKw/N3tbJqn/KG49/OWZcsw6XZiAEHsx
+Rx9TlNJhL2d/SqFXBmmqfR496gdzTb4823WJsmXtyBY2t5ZnmD9tY5oJi5bHKchO
+50QCd1x24HzH1mxPReCJzRxzLEM/znojEMdYqQ5Y+BZuj7n9BY+l2nY0Qnhn09FE
+dxXAfNcuZnZavLJgk7vTBg8OFkAh6DJ21ACxf/y+rN53gKFK4Jh+PodRu0J2tK8B
+wAZg7HlnT8U7tcEsf1JnsBhlzAWCHgZc6whgBbDHFs6WSFWuobKN+maU91g/Tvgk
+Obos/EhVNti54Zhu1PO9RSKpKkwzTJT4kmGtaOJN
+-----END CERTIFICATE-----
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Multipart.txt.bin b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Multipart.txt.bin
new file mode 100644
index 00000000..6b00acc5
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Multipart.txt.bin
@@ -0,0 +1,337 @@
+POST http://www.opinionatedgeek.com:80/dotnet/tools/Base64Encode/Default.aspx HTTP/1.1
+Host: www.opinionatedgeek.com
+User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15
+Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
+Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
+Accept-Encoding: gzip,deflate
+Accept-Charset: UTF-8,*
+Keep-Alive: 300
+Proxy-Connection: keep-alive
+Referer: http://www.opinionatedgeek.com/dotnet/tools/Base64Encode/
+Cookie: __utma=87673542.1058874134.1202897575.1205922938.1215441720.3; __utmz=87673542.1215441720.3.3.utmccn=(organic)|utmcsr=google|utmctr=base64+encoder|utmcmd=organic; __utmb=87673542; __utmc=87673542
+Content-Type: multipart/form-data; boundary=---------------------------15671293698853
+Content-length: 11576
+
+-----------------------------15671293698853
+Content-Disposition: form-data; name="ctl00$ctl00$ctl00$WholeBody$ContentPane$ContentArea$ctl01$ctl01$Body$ctl00_Hidden"
+
+False
+-----------------------------15671293698853
+Content-Disposition: form-data; name="__VIEWSTATE"
+
+/wEPDwUJNzM1NDA1ODc3D2QWAmYPZBYCZg9kFgJmD2QWAgIFD2QWAgIFD2QWAgIBD2QWAgIBDxYCHgdlbmN0eXBlBRNtdWx0aXBhcnQvZm9ybS1kYXRhFgICAQ9kFgICAw9kFgICAQ9kFgICAQ8PFCsDA2hoZ2QWBGYPDxYEHghDc3NDbGFzcwUPc3Vic2VjdGlvbnRpdGxlHgRfIVNCAgJkFgJmDw8WBB8BBQ9zdWJzZWN0aW9udGl0bGUfAgICZBYCZg8PFgQeC05hdmlnYXRlVXJsBQEjHgdUb29sVGlwBRhDbGljayB0byBleHBhbmQvY29sbGFwc2UWBh4Hb25jbGljawXCAXJldHVybiB0b2dnbGVfZXhjX29wZ2VlayAoJ2N0bDAwX2N0bDAwX2N0bDAwX1dob2xlQm9keV9Db250ZW50UGFuZV9Db250ZW50QXJlYV9jdGwwMV9jdGwwMV9Cb2R5X2N0bDAwX2N0bDAwJywgJ2N0bDAwJGN0bDAwJGN0bDAwJFdob2xlQm9keSRDb250ZW50UGFuZSRDb250ZW50QXJlYSRjdGwwMSRjdGwwMSRCb2R5JGN0bDAwX0hpZGRlbicpHgtvbm1vdXNlb3ZlcgU3d2luZG93LnN0YXR1cyA9ICdDbGljayB0byBleHBhbmQvY29sbGFwc2UnOyByZXR1cm4gdHJ1ZR4Kb25tb3VzZW91dAUfd2luZG93LnN0YXR1cyA9ICcnOyByZXR1cm4gdHJ1ZWQCAQ8PFgQfAQULc2VjdGlvbmJvZHkfAgICZBYCZg8PFgQfAQULc2VjdGlvbmJvZHkfAgICZGQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFSmN0bDAwJGN0bDAwJGN0bDAwJFdob2xlQm9keSRDb250ZW50UGFuZSRDb250ZW50QXJlYSRjdGwwMSRjdGwwMSRCb2R5JGN0bDAwm1Yd0S+llPVzX/xfKb3tdvK8fNQ=
+-----------------------------15671293698853
+Content-Disposition: form-data; name="ctl00$ctl00$ctl00$WholeBody$ContentPane$ContentArea$ctl01$ctl01$Body$ctl00$ctl02"
+
+False
+-----------------------------15671293698853
+Content-Disposition: form-data; name="XMLRequest"; filename="project.xml"
+Content-Type: text/xml
+
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+-->
+
+<project>
+ <pomVersion>3</pomVersion>
+
+ <name>FileUpload</name>
+ <groupId>commons-fileupload</groupId>
+ <artifactId>commons-fileupload</artifactId>
+ <currentVersion>1.3-SNAPSHOT</currentVersion>
+ <inceptionYear>2002</inceptionYear>
+ <shortDescription>File upload component for Java servlets</shortDescription>
+ <description>
+ The FileUpload component provides a simple yet flexible means of adding
+ support for multipart file upload functionality to servlets and web
+ applications.
+ </description>
+ <logo>/images/logo.png</logo>
+
+ <url>http://commons.apache.org/${pom.artifactId.substring(8)}/</url>
+ <package>org.apache.commons.${pom.artifactId.substring(8)}</package>
+
+ <organization>
+ <name>The Apache Software Foundation</name>
+ <url>http://commons.apache.org/</url>
+ <logo>http://commons.apache.org/images/logo.png</logo>
+ </organization>
+
+ <licenses>
+ <license>
+ <name>The Apache Software License, Version 2.0</name>
+ <url>/LICENSE.txt</url>
+ <distribution>repo</distribution>
+ </license>
+ </licenses>
+
+ <gumpRepositoryId>commons</gumpRepositoryId>
+ <issueTrackingUrl>http://issues.apache.org/jira/</issueTrackingUrl>
+ <siteAddress>people.apache.org</siteAddress>
+ <siteDirectory>/www/commons.apache.org/${pom.artifactId.substring(8)}/</siteDirectory>
+ <distributionDirectory>/www/people.apache.org/builds/commons/${pom.artifactId.substring(8)}/</distributionDirectory>
+
+ <repository>
+ <connection>scm:svn:http://svn.apache.org/repos/asf/commons/proper/${pom.artifactId.substring(8)}/trunk</connection>
+ <url>http://svn.apache.org/repos/asf</url>
+ </repository>
+
+ <mailingLists>
+ <mailingList>
+ <name>Commons Dev List</name>
+ <subscribe>dev-subscribe@commons.apache.org</subscribe>
+ <unsubscribe>dev-unsubscribe@commons.apache.org</unsubscribe>
+ <archive>http://mail-archives.apache.org/mod_mbox/commons-dev/</archive>
+ </mailingList>
+ <mailingList>
+ <name>Commons User List</name>
+ <subscribe>user-subscribe@commons.apache.org</subscribe>
+ <unsubscribe>user-unsubscribe@commons.apache.org</unsubscribe>
+ <archive>http://mail-archives.apache.org/mod_mbox/commons-user/</archive>
+ </mailingList>
+ </mailingLists>
+
+
+ <versions>
+ <version>
+ <id>1.2.1</id>
+ <name>1.2.1</name>
+ <tag>commons-fileupload-1.2.1</tag>
+ </version>
+ <version>
+ <id>1.2</id>
+ <name>1.2</name>
+ <tag>commons-fileupload-1.2</tag>
+ </version>
+ <version>
+ <id>1.1.1</id>
+ <name>1.1.1</name>
+ <tag>FILEUPLOAD_1_1_1</tag>
+ </version>
+ <version>
+ <id>1.1</id>
+ <name>1.1</name>
+ <tag>FILEUPLOAD_1_1</tag>
+ </version>
+ <version>
+ <id>1.1-rc2</id>
+ <name>1.1-rc2</name>
+ <tag>FILEUPLOAD_1_1_RC2</tag>
+ </version>
+ <version>
+ <id>1.1-rc1</id>
+ <name>1.1-rc1</name>
+ <tag>FILEUPLOAD_1_1_RC1</tag>
+ </version>
+ <version>
+ <id>1.0</id>
+ <name>1.0</name>
+ <tag>FILEUPLOAD_1_0</tag>
+ </version>
+ <version>
+ <id>1.0-rc1</id>
+ <name>1.0-rc1</name>
+ <tag>FILEUPLOAD_1_0_RC1</tag>
+ </version>
+ <version>
+ <id>1.0-beta-1</id>
+ <name>1.0-beta-1</name>
+ <tag>FILEUPLOAD_1_0_B1</tag>
+ </version>
+ </versions>
+
+ <developers>
+ <developer>
+ <name>Martin Cooper</name>
+ <id>martinc</id>
+ <email>martinc@apache.org</email>
+ <organization>EMC</organization>
+ </developer>
+ <developer>
+ <name>dIon Gillard</name>
+ <id>dion</id>
+ <email>dion@apache.org</email>
+ <organization>Multitask Consulting</organization>
+ </developer>
+ <developer>
+ <name>John McNally</name>
+ <id>jmcnally</id>
+ <email>jmcnally@collab.net</email>
+ <organization>CollabNet</organization>
+ </developer>
+ <developer>
+ <name>Daniel Rall</name>
+ <id>dlr</id>
+ <email>dlr@finemaltcoding.com</email>
+ <organization>CollabNet</organization>
+ </developer>
+ <developer>
+ <name>Jason van Zyl</name>
+ <id>jvanzyl</id>
+ <email>jason@zenplex.com</email>
+ <organization>Zenplex</organization>
+ </developer>
+ <developer>
+ <name>Robert Burrell Donkin</name>
+ <id>rdonkin</id>
+ <email>rdonkin@apache.org</email>
+ <organization/>
+ </developer>
+ <developer>
+ <name>Sean C. Sullivan</name>
+ <id>sullis</id>
+ <email>sean |at| seansullivan |dot| com</email>
+ <organization></organization>
+ </developer>
+ <developer>
+ <name>Jochen Wiedmann</name>
+ <id>jochen</id>
+ <email>jochen.wiedmann@gmail.com</email>
+ <organization/>
+ </developer>
+ </developers>
+
+ <dependencies>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>1.3.2</version>
+ <url>http://commons.apache.org/io/</url>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.4</version>
+ <url>http://java.sun.com/products/servlet/</url>
+ <properties>
+ <scope>provided</scope>
+ </properties>
+ </dependency>
+ <dependency>
+ <groupId>javax.portlet</groupId>
+ <artifactId>portlet-api</artifactId>
+ <version>1.0</version>
+ <url>http://portals.apache.org/pluto</url>
+ <properties>
+ <scope>provided</scope>
+ <comment>
+ Required only when using FileUpload in a portlet environment.
+ </comment>
+ </properties>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <url>http://www.junit.org/</url>
+ <properties>
+ <scope>test</scope>
+ <comment>
+ &lt;strong&gt;Test Only&lt;/strong&gt; - required only for
+ running the FileUpload unit tests.
+ </comment>
+ </properties>
+ </dependency>
+
+ <dependency>
+ <groupId>maven</groupId>
+ <artifactId>maven-xdoc-plugin</artifactId>
+ <version>1.9.2</version>
+ <url>http://maven.apache.org/reference/plugins/xdoc/</url>
+ <type>plugin</type>
+ <properties>
+ <comment>
+ &lt;strong&gt;Site Only&lt;/strong&gt; - v1.9.2 (minimum)
+ required for building the FileUpload Site documentation.
+ </comment>
+ </properties>
+ </dependency>
+
+ <dependency>
+ <groupId>maven</groupId>
+ <artifactId>maven-changelog-plugin</artifactId>
+ <version>1.9.1</version>
+ <url>http://maven.apache.org/reference/plugins/changelog/</url>
+ <type>plugin</type>
+ <properties>
+ <comment>
+ &lt;strong&gt;Site Only&lt;/strong&gt; - v1.9.1 (minimum)
+ required for building the FileUpload Site documentation.
+ </comment>
+ </properties>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <nagEmailAddress>dev@commons.apache.org</nagEmailAddress>
+ <sourceDirectory>src/java</sourceDirectory>
+ <unitTestSourceDirectory>src/test</unitTestSourceDirectory>
+ <unitTest>
+ <includes>
+ <include>**/*Test.java</include>
+ </includes>
+ <resources>
+ <resource>
+ <directory>${pom.build.unitTestSourceDirectory}</directory>
+ <includes>
+ <include>**/*.xml</include>
+ </includes>
+ </resource>
+ </resources>
+ </unitTest>
+
+ <resources>
+ <resource>
+ <directory>${basedir}</directory>
+ <targetPath>META-INF</targetPath>
+ <includes>
+ <include>NOTICE.txt</include>
+ </includes>
+ </resource>
+ </resources>
+ </build>
+
+ <reports>
+ <report>maven-changes-plugin</report>
+ <report>maven-changelog-plugin</report>
+ <report>maven-checkstyle-plugin</report>
+ <!--report>maven-clover-plugin</report-->
+ <report>maven-developer-activity-plugin</report>
+ <report>maven-faq-plugin</report>
+ <report>maven-file-activity-plugin</report>
+ <report>maven-javadoc-plugin</report>
+ <report>maven-jdepend-plugin</report>
+ <report>maven-junit-report-plugin</report>
+ <report>maven-jxr-plugin</report>
+ <report>maven-license-plugin</report>
+ <!--report>maven-linkcheck-plugin</report-->
+ <report>maven-pmd-plugin</report>
+ <report>maven-simian-plugin</report>
+ <report>maven-tasklist-plugin</report>
+ </reports>
+
+</project>
+
+-----------------------------15671293698853
+Content-Disposition: form-data; name="ctl00$ctl00$ctl00$WholeBody$ContentPane$ContentArea$ctl01$ctl01$Body$textToEncode"
+
+
+-----------------------------15671293698853
+Content-Disposition: form-data; name="ctl00$ctl00$ctl00$WholeBody$ContentPane$ContentArea$ctl01$ctl01$Body$butSubmit"
+
+Encode
+-----------------------------15671293698853--
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/MultipartEmpty.txt b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/MultipartEmpty.txt
new file mode 100644
index 00000000..97c29894
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/MultipartEmpty.txt
@@ -0,0 +1,17 @@
+POST /http-security-layer-request HTTP/1.1
+User-Agent: Jakarta Commons-HttpClient/3.0
+Host: 127.0.0.1:13495
+Content-Length: 855
+Content-Type: multipart/form-data; boundary=uW10q_I9UeqKyw-1o5EW4jtEAaGs7-mC6o
+
+--uW10q_I9UeqKyw-1o5EW4jtEAaGs7-mC6o
+Content-Disposition: form-data; name="XMLRequest"
+
+<?xml version="1.0" encoding="UTF-8"?><sl:CreateXMLSignatureRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#"><sl:KeyboxIdentifier>SecureSignatureKeypair</sl:KeyboxIdentifier><sl:DataObjectInfo Structure="detached"><sl:DataObject Reference="urn:Document"><sl:LocRefContent>formdata:fileupload</sl:LocRefContent></sl:DataObject><sl:TransformsInfo><sl:FinalDataMetaInfo><sl:MimeType>text/plain</sl:MimeType></sl:FinalDataMetaInfo></sl:TransformsInfo></sl:DataObjectInfo></sl:CreateXMLSignatureRequest>
+--uW10q_I9UeqKyw-1o5EW4jtEAaGs7-mC6o
+Content-Disposition: form-data; name="fileupload"; filename="myfile.txt"
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: binary
+
+
+--uW10q_I9UeqKyw-1o5EW4jtEAaGs7-mC6o--
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/MultipartFromTutorial.txt b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/MultipartFromTutorial.txt
new file mode 100644
index 00000000..7014b1cf
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/MultipartFromTutorial.txt
@@ -0,0 +1,37 @@
+POST /http-security-layer-request HTTP/1.1
+Host: 127.0.0.1
+User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0
+Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
+Accept-Language: de-at,de;q=0.7,en;q=0.3
+Accept-Encoding: gzip,deflate
+Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
+Keep-Alive: 300
+Connection: keep-alive
+Content-Type: multipart/form-data; boundary=---------------------------2330864292941
+Content-Length: 1800
+
+-----------------------------2330864292941
+Content-Disposition: form-data; name="Vorname_"
+
+Thassilo
+-----------------------------2330864292941
+Content-Disposition: form-data; name="Nachname_"
+
+Tester
+-----------------------------2330864292941
+Content-Disposition: form-data; name="Beilage_"; filename="Beilage.png"
+Content-Type: image/png
+
+‰PNG
+
+ IHDR   <Œ"¢ tRNS n¦‘ pHYs  ÒÝ~ü tEXtComment ‰*? WIDATxœ­”½NÂPÇ?qö|ŸÁ„÷18XB\HtpëÀ.nº ƒpcÀ&°2ºº¢.LþšÓ\n/åzÁ›œ¶çãÿç«­¬¦õÅUŠ ˆ>ÔU6J0®Žd…¦RÖÖÑåsÓDT ”*[°jÜM?‚þ{”‚)?¯¶ Sl»8X?ªàªÈh‚ÃZÏ&AÇc8röff#Ãì0Á¸Ð¼;ôQ@ÇÉËé#ÛAP0Ý}???û—v.LœkP÷ ÛV–†dvÖuV㬠€<? üƒ ÷-?€| ~€0¦ š‚º šSèÄCwçq{øF½óó­-M¦À~¢•?X G ….®SO»vJ?àí/P4@3ïí›?)6…SœÕôBÃÔìŒj'á, ðóc
+{©À Oþ÷c®ÿä‚!ÿgÆäŠÙcÌÙ¯"¾Æç]u@{C¿Ií$õC¨ IEND®B`‚
+-----------------------------2330864292941
+Content-Disposition: form-data; name="XMLRequest"
+
+<?xml version="1.0" encoding="UTF-8"?><sl:CreateHashRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#"> <sl:HashInfo RespondHashData="false"> <sl:HashData> <sl:MetaInfo> <sl:MimeType>application/octet-stream</sl:MimeType> </sl:MetaInfo> <sl:Content Reference="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20040514/tutorial/examples/bindings/signattachments/Beilage.png"/> </sl:HashData> <sl:HashAlgorithm>http://www.w3.org/2000/09/xmldsig#sha1</sl:HashAlgorithm> <sl:FriendlyName>Beilage zum Formular 0815</sl:FriendlyName> </sl:HashInfo></sl:CreateHashRequest>
+-----------------------------2330864292941
+Content-Disposition: form-data; name="DataURL"
+
+http://localhost:18080/SL12Tutorial/SignAttachments;jsessionid=2BAF01A9069F6AF073A25B4D9B8E803E?use=sign
+-----------------------------2330864292941--
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/NOPMultipartDataUrl.txt b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/NOPMultipartDataUrl.txt
new file mode 100644
index 00000000..fb8cc1c3
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/NOPMultipartDataUrl.txt
@@ -0,0 +1,47 @@
+POST /http-security-layer-request HTTP/1.1
+Host: 127.0.0.1
+User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0
+Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
+Accept-Language: de-at,de;q=0.7,en;q=0.3
+Accept-Encoding: gzip,deflate
+Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
+Keep-Alive: 300
+Connection: keep-alive
+Content-Type: multipart/form-data; boundary=---------------------------2330864292941
+Content-Length: 1800
+
+-----------------------------2330864292941
+Content-Disposition: form-data; name="Vorname_"
+Content-Type:text/xml;charset=UTF-8
+
+Thassilo
+-----------------------------2330864292941
+Content-Disposition: form-data; name="Nachname_"
+
+Tester
+-----------------------------2330864292941
+Content-Disposition: form-data; name="Beilage_"; filename="Beilage.png"
+Content-Type: image/png
+
+�PNG
+
+
+IHDR   <�"� tRNS n�� pHYs  ��~� tEXtComment �*? WIDATx����N�P�?q�|�D�18XB\Htp��.n�
+�pc�&�2���.L���\n/�z[�����竭����U���>�U6J0��d��R����s�DT
+�*[�j�M?��{��)?�� Sl�8X?���h��Z�&A�c8r�ff#��0xм;�Q@����#�AP0�}???�v.L�kP� �V��dv�uV� �<? � �-?�|
+~�0����� �S��Cw�q{�F����-M��~��?X G �.�SO�vJ?��/P4@3��?)6�S���B���j'�, ��c
+{�� O��c���!�g���c�ٯ"���]u@{C�I�$�C� IEND�B`�
+-----------------------------2330864292941
+Content-Disposition: form-data; name="XMLRequest"
+
+<?xml version="1.0" encoding="UTF-8"?><sl:NullOperationRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#"/>
+-----------------------------2330864292941
+Content-Disposition: form-data; name="WeitergabeHeader__";
+
+MyHeader:veryUgly
+
+-----------------------------2330864292941
+Content-Disposition: form-data; name="DataURL"
+
+http://localhost:8080/
+-----------------------------2330864292941--
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Nulloperation.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Nulloperation.xml
new file mode 100644
index 00000000..29ab2d41
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Nulloperation.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><sl:NullOperationRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#"/> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/NulloperationRequest.txt.bin b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/NulloperationRequest.txt.bin
new file mode 100644
index 00000000..5ee5aee6
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/NulloperationRequest.txt.bin
@@ -0,0 +1 @@
+XMLRequest=%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%3CNullOperationRequest+xmlns%3D%22http%3A%2F%2Fwww.buergerkarte.at%2Fnamespaces%2Fsecuritylayer%2F1.2%23%22%2F%3E&RedirectURL=https%3A%2F%2Fdemo.egiz.gv.at%2Fbku-erkennung%2Fv1.1%2Fbku-erkennung%2Fbku-erkennung_helper.html \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Statemachine1.txt b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Statemachine1.txt
new file mode 100644
index 00000000..92d75066
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Statemachine1.txt
@@ -0,0 +1,36 @@
+
+-----------------------------2330864292941
+Content-Disposition: form-data; name="Vorname_"
+Content-Type:text/plain;charset=UTF-8
+
+Thassilo
+-----------------------------2330864292941
+Content-Disposition: form-data; name="Nachname_"
+
+Tester
+-----------------------------2330864292941
+Content-Disposition: form-data; name="Beilage_"; filename="Beilage.png"
+Content-Type: image/png
+
+�PNG
+
+
+IHDR   <�"� tRNS n�� pHYs  ��~� tEXtComment �*? WIDATx����N�P�?q�|�D�18XB\Htp��.n�
+�pc�&�2���.L���\n/�z[�����竭����U���>�U6J0��d��R����s�DT
+�*[�j�M?��{��)?�� Sl�8X?���h��Z�&A�c8r�ff#��0xм;�Q@����#�AP0�}???�v.L�kP� �V��dv�uV� �<? � �-?�|
+~�0����� �S��Cw�q{�F����-M��~��?X G �.�SO�vJ?��/P4@3��?)6�S���B���j'�, ��c
+{�� O��c���!�g���c�ٯ"���]u@{C�I�$�C� IEND�B`�
+-----------------------------2330864292941
+Content-Disposition: form-data; name="XMLRequest"
+Content-Type:text/xml;charset=UTF-8
+
+<?xml version="1.0" encoding="UTF-8"?><sl:NullOperationRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#"/>
+-----------------------------2330864292941
+Content-Disposition: form-data; name="WeitergabeHeader__";
+
+MyHeader:veryUgly
+-----------------------------2330864292941
+Content-Disposition: form-data; name="DataURL"
+
+http://localhost:8080/
+-----------------------------2330864292941--
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Stylesheet.txt b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Stylesheet.txt
new file mode 100644
index 00000000..71dbd103
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/Stylesheet.txt
@@ -0,0 +1,56 @@
+
+-----------------------------2330864292941
+Content-Disposition: form-data; name="Vorname_"
+Content-Type:text/plain;charset=UTF-8
+
+Thassilo
+-----------------------------2330864292941
+Content-Disposition: form-data; name="Nachname_"
+
+Tester
+-----------------------------2330864292941
+Content-Disposition: form-data; name="StylesheetURL"
+
+formdata:Stylesheet
+-----------------------------2330864292941
+Content-Disposition: form-data; name="Beilage_"; filename="Beilage.png"
+Content-Type: image/png
+
+�PNG
+
+
+IHDR   <�"� tRNS n�� pHYs  ��~� tEXtComment �*? WIDATx����N�P�?q�|�D�18XB\Htp��.n�
+�pc�&�2���.L���\n/�z[�����竭����U���>�U6J0��d��R����s�DT
+�*[�j�M?��{��)?�� Sl�8X?���h��Z�&A�c8r�ff#��0xм;�Q@����#�AP0�}???�v.L�kP� �V��dv�uV� �<? � �-?�|
+~�0����� �S��Cw�q{�F����-M��~��?X G �.�SO�vJ?��/P4@3��?)6�S���B���j'�, ��c
+{�� O��c���!�g���c�ٯ"���]u@{C�I�$�C� IEND�B`�
+-----------------------------2330864292941
+Content-Disposition: form-data; name="XMLRequest"
+Content-Type:text/xml;charset=UTF-8
+
+<?xml version="1.0" encoding="UTF-8"?><sl:NullOperationRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#"/>
+-----------------------------2330864292941
+Content-Disposition: form-data; name="Stylesheet";
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:output media-type="text/html" encoding="ISO8859-1"/>
+ <xsl:template match="/">
+ <html>
+ <body>
+ <xsl:choose>
+ <xsl:when test="ok">
+ <h1>Alles Roger</h1>
+ </xsl:when>
+ <xsl:otherwise>
+ <h1>Uuups</h1>
+ </xsl:otherwise>
+ </xsl:choose>
+ </body>
+ </html>
+ </xsl:template>
+</xsl:stylesheet>
+-----------------------------2330864292941
+Content-Disposition: form-data; name="DataURL"
+
+http://localhost:8080/
+-----------------------------2330864292941--
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/XWWWFormUrlEncoded1.txt b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/XWWWFormUrlEncoded1.txt
new file mode 100644
index 00000000..32804c17
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/XWWWFormUrlEncoded1.txt
@@ -0,0 +1 @@
+XMLRequest=%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Csl%3ACreateXMLSignatureRequest+%0D%0A++xmlns%3Asl%3D%22http%3A%2F%2Fwww.buergerkarte.at%2Fnamespaces%2Fsecuritylayer%2F1.2%23%22%3E%0D%0A%3Csl%3AKeyboxIdentifier%3ESecureSignatureKeypair%3C%2Fsl%3AKeyboxIdentifier%3E%0D%0A++%3Csl%3ADataObjectInfo+Structure%3D%22enveloping%22%3E%0D%0A++++%3Csl%3ADataObject%3E%0D%0A++++++%3Csl%3AXMLContent%3ELorem+ipsum+dolor+sit+amet%2C+consectetur+adipiscing+elit.+Pellentesque+sed+dui+sed+enim+lobortis+ullamcorper+eu+sit+amet+libero.+Cras+mi+dolor%2C+ultrices+quis+tincidunt+non%2C+imperdiet+in+orci.+Nulla+placerat+sodales+nibh+sit+amet+ornare.+Suspendisse+potenti.+Duis+ultricies+metus+tortor%2C+id+mattis+nulla.+Proin+cursus+commodo+aliquet.+In+posuere%2C+lorem+sit+amet+egestas+consequat%2C+diam+ligula+accumsan+dui%2C+non+placerat+diam+nisl+id+tortor.+Aliquam+blandit+viverra+tellus%2C+vel+facilisis+eros+fermentum+ultrices.+Nullam+sodales+mattis+vulputate.+Suspendisse+luctus+dapibus+odio%2C+tincidunt+tempus+dui+sollicitudin+sed.%0D%0A%0D%0AMauris+auctor%2C+est+non+mattis+consequat%2C+ante+sem+tristique+sem%2C+eget+porttitor+nisl+magna+consectetur+tortor.+Sed+semper+diam+nec+leo+fermentum+dictum.+Suspendisse+sed+ipsum+orci.+Phasellus+rhoncus+odio+sed+lorem+rhoncus+et+tincidunt+mi+semper.+Etiam+accumsan+aliquam+augue%2C+id+aliquet+dui+lacinia+non.+Suspendisse+non+purus+a+turpis+imperdiet+vestibulum+id+in+nisi.+Sed+quis+leo+nec+massa+rhoncus+pharetra+ac+non+ipsum.+Proin+tristique+est+eget+dolor+euismod+vitae+rhoncus+metus+molestie.+Duis+volutpat+leo+libero%2C+molestie+fermentum+turpis.+Praesent+interdum+tellus+mattis+lorem+mollis+sit+amet+elementum+risus+cursus.+Nam+erat+nulla%2C+mollis+sit+amet+rutrum+ut%2C+pharetra+gravida+ligula.+In+hac+habitasse+platea+dictumst.+Maecenas+non+massa+ac+ipsum+eleifend+tempor.+Ut+sed+diam+nisi%2C+in+volutpat+libero.+Duis+vehicula+purus+eu+risus+ultricies+rutrum.+Duis+risus+mi%2C+aliquam+nec+venenatis+vel%2C+scelerisque+eget+eros.+Pellentesque+mollis+aliquet+nibh%2C+et+hendrerit+tortor+lobortis+sed.%0D%0A%0D%0AAenean+odio+sem%2C+pretium+eget+sagittis+sed%2C+rhoncus+a+nisi.+Nulla+cursus+diam+sit+amet+massa+iaculis+ultricies.+Aenean+odio+lorem%2C+bibendum+vitae+consequat+vel%2C+luctus+id+diam.+Proin+congue%2C+dui+non+eleifend+interdum%2C+lorem+lorem+semper+ligula%2C+in+condimentum+orci+enim+eget+tellus.+Aliquam+erat+volutpat.+Quisque+porttitor+volutpat+elit%2C+quis+ultricies+elit+imperdiet+at.+Donec+dictum+ultricies+ligula.+Aliquam+in+condimentum+quam.+Ut+placerat+suscipit+dolor%2C+a+aliquet+arcu+suscipit+ut.+Suspendisse+et+arcu+id+quam+vehicula+ultrices.+Duis+erat+leo%2C+tempor+vel+aliquet+eu%2C+feugiat+eget+erat.+Nulla+facilisi.+Nulla+sed+lorem+sapien.+Aliquam+ullamcorper+dui+sed+nisl+sollicitudin+tempus.+Donec+ipsum+quam%2C+placerat+at+tincidunt+et%2C+condimentum+sit+amet+sapien.+In+luctus+ullamcorper+molestie.+Cras+non+augue+elit.+Ut+cursus+volutpat+augue%2C+sed+condimentum+est+mollis+vitae.+Class+aptent+taciti+sociosqu+ad+litora+torquent+per+conubia+nostra%2C+per+inceptos+himenaeos.+Donec+consectetur+lacus+quis+turpis+semper+elementum+vitae+eleifend+dui.%0D%0A%0D%0APraesent+sed+libero+metus.+Nulla+est+nulla%2C+condimentum+non+volutpat+nec%2C+elementum+at+nisi.+Vivamus+posuere+dignissim+ultricies.+Fusce+massa+velit%2C+dignissim+quis+vehicula+in%2C+consequat+at+purus.+Duis+accumsan+lacinia+mattis.+Aliquam+eget+felis+eget+odio+viverra+ornare+ut+non+orci.+Vivamus+porta%2C+magna+sit+amet+ornare+lacinia%2C+sem+erat+porta+lectus%2C+at+porttitor+nisl+nisl+tincidunt+nisi.+Pellentesque+ornare+massa+ac+urna+feugiat+dignissim.+Ut+at+metus+nunc%2C+sit+amet+vulputate+arcu.+In+hac+habitasse+platea+dictumst.+Suspendisse+eget+elit+nec+erat+iaculis+accumsan+ac+nec+velit.+Aliquam+erat+volutpat.+Proin+id+nibh+odio.+Cras+ullamcorper%2C+dolor+a+rutrum+pharetra%2C+turpis+ligula+adipiscing+nisl%2C+a+tristique+tortor+lorem+in+dolor.+Proin+ac+ligula+felis%2C+et+malesuada+orci.+Aliquam+erat+volutpat.+Phasellus+faucibus+ipsum+quis+libero+posuere+vitae+accumsan+enim+mollis.+Cras+metus+odio%2C+eleifend+sed+suscipit+at%2C+gravida+quis+diam.%0D%0A%0D%0AEtiam+lorem+turpis%2C+consequat+sit+amet+vestibulum+faucibus%2C+accumsan+in+libero.+Nam+ornare+laoreet+placerat.+Nam+pellentesque+lectus+at+urna+tincidunt+facilisis.+Suspendisse+a+libero+in+arcu+eleifend+semper+vitae+sed+tortor.+Curabitur+ac+magna+a+eros+blandit+eleifend+vel+in+tortor.+Morbi+pretium+ullamcorper+ligula+rutrum+porta.+Pellentesque+vitae+viverra+erat.+Quisque+neque+orci%2C+condimentum+id+tempus+in%2C+porttitor+nec+nibh.+Donec+a+odio+a+lectus+dapibus+fermentum+a+sit+amet+sem.+Cras+risus+dolor%2C+ultricies+eget+suscipit+nec%2C+tempus+eget+justo.+Aenean+suscipit+fermentum+nisl%2C+vel+sodales+elit+euismod+ac.+In+non+laoreet+mi.+Morbi+aliquet+quam+id+nunc+aliquet+facilisis.+Nulla+elementum+fringilla+eleifend.+Sed+tristique+nunc+eget+turpis+ullamcorper+varius.+Pellentesque+non+diam+nec+lorem+mollis+vulputate.+In+hac+habitasse+platea+dictumst.+Aenean+pellentesque+leo+ac+augue+molestie+non+varius+nibh+consectetur.+Donec+quis+dui+eget+tortor+pharetra+convallis+vel+quis+orci.+Nulla+at+odio+nisi%2C+sit+amet+luctus+diam.%0D%0A%0D%0ANam+nisl+nibh%2C+faucibus+eu+aliquet+non%2C+elementum+vitae+quam.+Etiam+massa+massa%2C+gravida+ut+pharetra+non%2C+mollis+in+augue.+Integer+urna+quam%2C+tincidunt+et+lacinia+et%2C+vehicula+sit+amet+justo.+Nulla+dui+dui%2C+semper+eget+adipiscing+rutrum%2C+dignissim+a+mi.+Cras+sit+amet+mauris+ac+neque+pretium+ultricies+sit+amet+non+elit.+Praesent+viverra+vehicula+orci+ut+congue.+Quisque+fermentum+neque+eu+turpis+scelerisque+sit+amet+luctus+erat+imperdiet.+Nulla+volutpat+quam+ut+ante+eleifend+in+tempus+diam+laoreet.+Cum+sociis+natoque+penatibus+et+magnis+dis+parturient+montes%2C+nascetur+ridiculus+mus.+Proin+et+lacus+ligula%2C+eget+fermentum+urna.+Ut+quis+urna+ac+nibh+molestie+sollicitudin.+Morbi+interdum+arcu+mauris.%0D%0A%0D%0ASed+posuere%2C+eros+eu+tempus+tempus%2C+nulla+felis+ultrices+tortor%2C+vel+fermentum+nunc+lectus+a+nisi.+Duis+enim+nisl%2C+facilisis+sit+amet+ullamcorper+nec%2C+imperdiet+vulputate+massa.+Nam+semper+aliquet+nunc%2C+vitae+malesuada+turpis+congue+a.+Proin+dolor+eros%2C+sollicitudin+eget+gravida+id%2C+adipiscing+a+risus.+Praesent+sed+mauris+ut+diam+mollis+tempus.+Curabitur+pulvinar+tortor+non+sapien+interdum+in+aliquet+metus+dignissim.+Aliquam+ut+orci+id+nunc+elementum+dapibus+non+ac+odio.+Etiam+nibh+ligula%2C+varius+sed+congue+et%2C+euismod+ac+dui.+Suspendisse+sit+amet+malesuada+ligula.+Aliquam+tempus+nunc+et+massa+mattis+iaculis.%0D%0A%0D%0ADonec+sit+amet+tincidunt+elit.+Vestibulum+ante+ipsum+primis+in+faucibus+orci+luctus+et+ultrices+posuere+cubilia+Curae%3B+Aenean+id+ante+ligula.+Fusce+at+libero+sed+nisl+luctus+sagittis.+Vivamus+sodales+nibh+eros%2C+at+pulvinar+neque.+Lorem+ipsum+dolor+sit+amet%2C+consectetur+adipiscing+elit.+Proin+augue+libero%2C+euismod+nec+semper+quis%2C+sollicitudin+ut+nulla.+Suspendisse+egestas+sapien+et+ante+interdum+ac+sollicitudin+arcu+malesuada.+Nulla+posuere+pretium+felis+id+ultricies.+Curabitur+nec+porttitor+lectus.%0D%0A%0D%0ANam+consectetur+tempor+sapien.+Nam+lobortis+porttitor+bibendum.+Maecenas+ac+enim+at+magna+tempor+imperdiet.+Donec+sed+ligula+ligula.+Morbi+et+orci+tortor.+Nulla+egestas+enim+vitae+libero+tincidunt+quis+rhoncus+quam+aliquam.+Etiam+non+justo+orci%2C+sit+amet+aliquam+eros.+Proin+vestibulum+leo+convallis+velit+tincidunt+nec+egestas+odio+lacinia.+Quisque+pellentesque+tempus+nisl%2C+ut+porta+tellus+aliquet+in.+Vestibulum+mollis+dapibus+velit+non+egestas.+Proin+vel+viverra+sapien.+Aliquam+erat+volutpat.+Curabitur+enim+eros%2C+aliquam+nec+dictum+eu%2C+fermentum+quis+nibh.+Donec+eget+enim+in+velit+viverra+scelerisque+sit+amet+in+lectus.+Etiam+sit+amet+orci+nisi.+Maecenas+ullamcorper%2C+nibh+quis+eleifend+euismod%2C+enim+turpis+pretium+nibh%2C+nec+venenatis+velit+risus+eu+tellus.%0D%0A%0D%0APraesent+elementum+mattis+placerat.+Curabitur+at+interdum+nibh.+Quisque+ullamcorper+eleifend+nunc+a+mollis.+Cras+ut+nulla+risus%2C+et+suscipit+risus.+Aenean+erat+diam%2C+facilisis+at+placerat+id%2C+placerat+sed+est.+Ut+nibh+libero%2C+varius+eget+suscipit+sed%2C+ultrices+eget+nisl.+Aenean+dignissim+enim+eget+dui+malesuada+et+consectetur+lorem+ullamcorper.+Class+aptent+taciti+sociosqu+ad+litora+torquent+per+conubia+nostra%2C+per+inceptos+himenaeos.+Donec+at+nisl+ut+eros+facilisis+congue+nec+at+dui.+Vestibulum+ante+ipsum+primis+in+faucibus+orci+luctus+et+ultrices+posuere+cubilia+Curae%3B+Proin+in+sem+nulla.+Class+aptent+taciti+sociosqu+ad+litora+torquent+per+conubia+nostra%2C+per+inceptos+himenaeos.+Integer+facilisis%2C+odio+vel+euismod+pretium%2C+libero+lorem+elementum+lorem%2C+at+accumsan+nisl+est+sed+nibh.+Etiam+blandit+diam+sed+tortor+molestie+at+rutrum+neque+viverra.%0D%0A%0D%0AUt+ultricies+pharetra+velit%2C+a+viverra+metus+elementum+vel.+Pellentesque+vitae+interdum+lorem.+Nam+tincidunt+nibh+eu+neque+rutrum+vehicula.+Vestibulum+vitae+arcu+vel+ante+commodo+blandit.+Sed+placerat+lobortis+nisi%2C+et+hendrerit+justo+ultrices+aliquam.+Suspendisse+eget+risus+vel+sapien+hendrerit+dignissim.+Sed+interdum+pellentesque+varius.+Nam+scelerisque%2C+mauris+ut+cursus+hendrerit%2C+purus+felis+rutrum+ante%2C+in+convallis+velit+urna+ornare+nisi.+Vestibulum+et+sapien+quis+justo+pretium+interdum.+Praesent+volutpat%2C+nisi+at+hendrerit+aliquet%2C+elit+libero+tincidunt+purus%2C+egestas+viverra+risus+magna+quis+risus.%0D%0A%0D%0ADonec+id+justo+sem.+Aenean+facilisis+pulvinar+est+ut+auctor.+Morbi+tincidunt+mollis+adipiscing.+Sed+pulvinar+lorem+neque.+Duis+eros+felis%2C+ultricies+eget+ultrices+ut%2C+dignissim+vitae+arcu.+Proin+quis+quam+mi.+Nunc+sagittis+ultricies+nibh%2C+eu+porttitor+urna+eleifend+in.+Sed+eget+lorem+eros.+Duis+non+tincidunt+sapien.+Vivamus+blandit+facilisis+ante.+Quisque+lectus+neque%2C+varius+vel+fringilla+eget%2C+vulputate+non+libero.%0D%0A%0D%0AClass+aptent+taciti+sociosqu+ad+litora+torquent+per+conubia+nostra%2C+per+inceptos+himenaeos.+Aenean+varius+congue+ultrices.+Phasellus+suscipit+vulputate+tristique.+Donec+nec+libero+vel+diam+sagittis+dignissim.+Donec+sed+dui+at+augue+sollicitudin+tristique+sollicitudin+in+nulla.+Nullam+id+magna+enim.+Etiam+convallis+mollis+urna+a+malesuada.+Duis+ac+iaculis+tellus.+Donec+scelerisque+eleifend+elit+ut+ornare.+Cras+vitae+sem+augue%2C+quis+lacinia+elit.+Pellentesque+sit+amet+nunc+metus%2C+luctus+lobortis+erat.+Nulla+lacus+lorem%2C+pharetra+ac+consectetur+at%2C+mattis+id+arcu.%0D%0A%0D%0ANunc+mi+est%2C+pharetra+vel+mattis+sit+amet%2C+faucibus+ut+tortor.+Morbi+ut+ante+eget+purus+gravida+dictum+in+sit+amet+ligula.+Aliquam+malesuada+metus+quis+nunc+placerat+lobortis.+Nulla+venenatis+vehicula+lacus%2C+sed+vestibulum+nibh+egestas+ornare.+Sed+a+lorem+nulla.+Donec+malesuada+dolor+congue+est+condimentum+eu+tincidunt+orci+ullamcorper.+Nam+porttitor+fermentum+purus+nec+molestie.+Nunc+porttitor+tincidunt+lobortis.+Nullam+vulputate+imperdiet+neque%2C+et+consectetur+lectus+molestie+vitae.+Nulla+facilisi.%0D%0A%0D%0APhasellus+laoreet+auctor+elit%2C+ac+sagittis+mi+tincidunt+eu.+Nunc+cursus+ipsum+eget+nulla+molestie+sollicitudin.+Vivamus+sapien+orci%2C+cursus+ut+fringilla+sed%2C+suscipit+id+libero.+Proin+convallis+lectus+et+mauris+suscipit+aliquet+non+quis+urna.+Donec+sit+amet+consequat+metus.+Praesent+lacus+ligula%2C+interdum+quis+rutrum+ut%2C+sodales+in+neque.+Donec+sed+nisi+nibh%2C+aliquet+volutpat+est.+Curabitur+volutpat+nunc+ante.+Nullam+pharetra+enim+at+eros+pulvinar+in+tincidunt+augue+interdum.+Maecenas+mi+quam%2C+placerat+nec+mollis+nec%2C+iaculis+eu+lorem.+Suspendisse+potenti.+Aenean+eu+neque+sit+amet+sapien+pulvinar+pretium.+Etiam+augue+quam%2C+malesuada+non+pretium+at%2C+feugiat+sit+amet+tortor.%0D%0A%0D%0ADonec+a+dui+in+augue+lacinia+pellentesque.+Praesent+vitae+tortor+sit+amet+velit+posuere+accumsan.+Phasellus+et+augue+ac+mauris+porttitor+tempus.+Pellentesque+non+odio+quis+nulla+dictum+facilisis.+Donec+blandit+odio+quam.+Mauris+quam+nunc%2C+semper+semper+posuere+eu%2C+pharetra+sed+diam.+Donec+tincidunt+ultrices+cursus.+Sed+venenatis+rhoncus+nisl%2C+nec+tempus+augue+imperdiet+non.+Nulla+facilisi.+Sed+rutrum+accumsan+velit+sit+amet+placerat.+Sed+rhoncus+quam+nec+enim+feugiat+ultricies.+Sed+et+lorem+elit.+Integer+semper+aliquam+nibh%2C+non+lobortis+lorem+fringilla+a.+Suspendisse+potenti.+Suspendisse+suscipit+est+mattis+massa+imperdiet+lacinia.+Integer+interdum+nisl+a+neque+posuere+porta.+Ut+eget+velit+ut+leo+elementum+vulputate.+Maecenas+congue+dignissim+bibendum.%0D%0A%0D%0ACurabitur+sed+cursus+nunc.+Pellentesque+aliquet+odio+et+augue+cursus+lacinia.+Nullam+molestie%2C+lorem+nec+gravida+aliquet%2C+augue+diam+vestibulum+tellus%2C+vitae+gravida+eros+ante+consequat+metus.+Donec+tempor+rhoncus+interdum.+Proin+laoreet+pretium+placerat.+Mauris+id+eros+eget+nisl+cursus+consequat+et+id+mauris.+Cras+non+nulla+a+tellus+sodales+eleifend+nec+quis+augue.+Class+aptent+taciti+sociosqu+ad+litora+torquent+per+conubia+nostra%2C+per+inceptos+himenaeos.+Nunc+blandit+est+nec+dolor+facilisis+eget+placerat+libero+imperdiet.+Cras+ultricies+mollis+nulla%2C+ut+ullamcorper+neque+bibendum+a.+Fusce+ullamcorper+orci+vitae+metus+auctor+tempor.+In+sit+amet+tellus+sed+libero+sagittis+consequat.+Aenean+posuere+nisi+id+sapien+tristique+a+malesuada+lorem+fermentum.+Quisque+pretium+malesuada+fermentum.+Sed+ut+nunc+ac+risus+consectetur+consequat+a+quis+dolor.+Cras+sit+amet+leo+felis.%0D%0A%0D%0ASed+vitae+justo+dolor%2C+eu+adipiscing+nibh.+Aliquam+ut+ultrices+ligula.+Cum+sociis+natoque+penatibus+et+magnis+dis+parturient+montes%2C+nascetur+ridiculus+mus.+Ut+sed+porttitor+felis.+Etiam+lectus+dolor%2C+egestas+id+scelerisque+vitae%2C+tristique+sed+justo.+Pellentesque+habitant+morbi+tristique+senectus+et+netus+et+malesuada+fames+ac+turpis+egestas.+Suspendisse+eu+quam+vel+lorem+sollicitudin+mattis.+Nulla+dictum+consequat+convallis.+Morbi+convallis+ligula+ac+sem+pellentesque+consequat.+Nam+et+est+nec+diam+eleifend+blandit+at+ac+metus.+Duis+rutrum+elementum+consequat.+Sed+semper+accumsan+pharetra.+Suspendisse+volutpat+nisi+hendrerit+justo+tincidunt+tempus.+Ut+venenatis+tincidunt+pretium.+Phasellus+porta+diam+in+purus+pulvinar+et+iaculis+massa+mollis.+Nulla+facilisi.+Vivamus+justo+felis%2C+euismod+vel+volutpat+vel%2C+euismod+at+orci.+Morbi+cursus%2C+massa+nec+ornare+consequat%2C+quam+leo+laoreet+lectus%2C+non+placerat+tortor+enim+eu+tellus.+Sed+ut+purus+nibh%2C+eget+dictum+purus.%0D%0A%0D%0ADonec+nisl+est%2C+pretium+sit+amet+faucibus+id%2C+vestibulum+et+nisl.+Morbi+egestas+pulvinar+sollicitudin.+Duis+tincidunt+enim+id+nulla+commodo+nec+lobortis+lacus+tristique.+Mauris+iaculis+mattis+turpis+non+molestie.+Quisque+non+ante+sed+orci+dictum+egestas.+In+ac+enim+at+dolor+posuere+laoreet.+Morbi+tortor+libero%2C+iaculis+nec+rhoncus+id%2C+laoreet+at+elit.+Cras+orci+dui%2C+interdum+at+lacinia+non%2C+venenatis+a+elit.+Etiam+suscipit+massa+in+ante+auctor+faucibus.+Praesent+non+quam+a+diam+viverra+gravida+sit+amet+eu+eros.+Quisque+sit+amet+suscipit+turpis.%0D%0A%0D%0APhasellus+non+tellus+purus%2C+sed+tempor+elit.+Cras+rutrum+condimentum+congue.+Sed+nec+felis+nibh.+Nam+condimentum+nisi+et+nulla+eleifend+in+imperdiet+velit+imperdiet.+Cras+ut+leo+sed+lectus+interdum+vehicula+quis+in+erat.+Nulla+et+semper+risus.+Cras+velit+sem%2C+sagittis+sit+amet+scelerisque+ut%2C+cursus+vitae+quam.+Maecenas+neque+dui%2C+dictum+non+porttitor+sed%2C+adipiscing+at+massa.+Phasellus+pulvinar+dui+ut+turpis+sagittis+et+imperdiet+nisl+porttitor.+Curabitur+porttitor+velit+in+justo+luctus+vel+placerat+est+tristique.+Maecenas+non+nisi+eget+est+feugiat+blandit.+Proin+eget+dui+lorem.+Aenean+id+sem+non+velit+commodo+sagittis+eget+in+quam.+Mauris+vitae+diam+quam%2C+et+mattis+turpis.+Integer+a+fringilla+erat.+Nunc+ligula+enim%2C+varius+eget+varius+non%2C+consectetur+sit+amet+nibh.+In+interdum+justo+sollicitudin+ipsum+pulvinar+ornare.+Aenean+et+gravida+nunc.+Fusce+in+ipsum+quis+lectus+commodo+laoreet+eu+eget+lorem.%0D%0A%0D%0APhasellus+dui+justo%2C+pulvinar+scelerisque+consectetur+nec%2C+mollis+vitae+metus.+Integer+id+tortor+nec+dui+rhoncus+vulputate+sed+id+tellus.+Nulla+sodales+suscipit+dolor%2C+vitae+pharetra+lacus+sagittis+ullamcorper.+Aenean+convallis+dapibus+sapien%2C+eget+interdum+tellus+accumsan+eget.+Nulla+at+purus+vel+nulla+auctor+fermentum+sed+aliquet+odio.+Pellentesque+habitant+morbi+tristique+senectus+et+netus+et+malesuada+fames+ac+turpis+egestas.+Pellentesque+laoreet%2C+nunc+vitae+venenatis+viverra%2C+velit+purus+aliquam+neque%2C+vitae+luctus+risus+magna+a+ante.+Proin+et+lectus+odio%2C+id+pulvinar+sapien.+Maecenas+vulputate+gravida+laoreet.+Sed+ut+nisl+vel+risus+malesuada+auctor.+Aenean+viverra+fermentum+sem+nec+sodales.+Etiam+eget+arcu+nibh.+Sed+eget+euismod+massa.+Sed+feugiat+nibh+aliquam+odio+lobortis+vehicula.+Duis+vulputate+mattis+enim+at+semper.+Pellentesque+habitant+morbi+tristique+senectus+et+netus+et+malesuada+fames+ac+turpis+egestas.+Aenean+laoreet+ultricies+neque.+Vestibulum+ante+ipsum+primis+in+faucibus+orci+luctus+et+ultrices+posuere+cubilia+Curae%3B%0D%0A%0D%0ACras+condimentum+magna+nec+mauris+viverra+eu+vulputate+nunc+feugiat.+Proin+lobortis+ultrices+mauris.+Sed+euismod%2C+nunc+et+ullamcorper+tincidunt%2C+eros+lectus+egestas+lectus%2C+eget+aliquam+elit+augue+in+eros.+Aenean+in+lorem+sed+tellus+porta+convallis.+Phasellus+sem+nunc%2C+facilisis+vel+luctus+ut%2C+mattis+vel+risus.+Donec+quis+feugiat+nulla.+Donec+eleifend+tempor+sodales.+Sed+mattis+congue+orci+non+tincidunt.+Fusce+massa+nisi%2C+pretium+ac+consequat+non%2C+sagittis+et+justo.+Phasellus+est+velit%2C+placerat+quis+posuere+et%2C+pellentesque+at+est.+Etiam+quis+lacus+a+nibh+eleifend+adipiscing.+Sed+vel+leo+arcu.+Fusce+porta+fringilla+felis+in+blandit.%0D%0A%0D%0ADonec+pretium%2C+eros+eget+auctor+elementum%2C+neque+tortor+placerat+urna%2C+id+dapibus+magna+lacus+sed+elit.+Quisque+auctor+molestie+turpis+et+mollis.+Nam+ipsum+metus%2C+lacinia+et+blandit+a%2C+egestas+aliquam+quam.+Suspendisse+potenti.+Morbi+tempus+lorem+eget+nibh+ultricies+congue.+Maecenas+in+enim+sed+odio+cursus+tincidunt.+Aliquam+erat+volutpat.+Fusce+fermentum+consectetur+bibendum.+Aenean+adipiscing+augue+non+ante+mattis+egestas.+Maecenas+porttitor+egestas+convallis.+Pellentesque+rhoncus+tincidunt+volutpat.+Aliquam+sed+sem+ac+augue+placerat+placerat+nec+sed+neque.%0D%0A%0D%0AMorbi+congue+eleifend+metus+at+pellentesque.+Maecenas+odio+mauris%2C+suscipit+eu+placerat+rutrum%2C+venenatis+ac+libero.+Duis+eleifend%2C+risus+placerat+congue+vestibulum%2C+neque+sem+varius+diam%2C+ultricies+auctor+nisi+massa+et+tellus.+Morbi+neque+odio%2C+suscipit+eleifend+dapibus+eget%2C+sodales+ac+massa.+Nullam+laoreet%2C+libero+sit+amet+ultricies+gravida%2C+neque+sem+eleifend+metus%2C+nec+consectetur+eros+lacus+ac+mauris.+Quisque+sollicitudin+consectetur+ante+non+lacinia.+Sed+quis+dolor+dolor%2C+eu+euismod+turpis.+In+posuere+metus+et+ligula+imperdiet+vitae+placerat+eros+bibendum.+Nullam+tincidunt+tincidunt+nisl+ac+mollis.+Mauris+at+augue+justo.+Nam+ac+vestibulum+justo.+In+id+elit+tortor.+Nunc+feugiat+molestie+orci%2C+in+molestie+elit+bibendum+eu.+Proin+libero+ipsum%2C+consectetur+sit+amet+facilisis+euismod%2C+bibendum+vel+felis.+Aliquam+posuere+quam+non+sapien+placerat+porttitor.%0D%0A%0D%0ANunc+volutpat%2C+arcu+sed+fringilla+blandit%2C+odio+risus+gravida+odio%2C+sollicitudin+tincidunt+lacus+odio+a+lectus.+Morbi+lacus+quam%2C+hendrerit+nec+facilisis+non%2C+luctus+ac+velit.+Lorem+ipsum+dolor+sit+amet%2C+consectetur+adipiscing+elit.+Proin+vitae+quam+orci%2C+quis+pellentesque+nisl.+Nullam+congue+risus+non+nisl+pulvinar+iaculis.+Integer+id+nisl+lorem%2C+eget+egestas+lacus.+Sed+nec+felis+eget+nisl+sagittis+sagittis.+Nunc+eu+laoreet+velit.+Vestibulum+quis+turpis+mi%2C+eget+tempor+ipsum.+Mauris+aliquet+tristique+feugiat.+Nulla+condimentum+bibendum+augue%2C+et+hendrerit+quam+porta+eget.+Etiam+imperdiet+tellus+nisl%2C+non+laoreet+neque.+Integer+sit+amet+pulvinar+lectus.+Cras+aliquam+turpis+at+urna+aliquam+vitae+dignissim+enim+tempor.+In+hac+habitasse+platea+dictumst.+Nulla+facilisi.+Integer+id+metus+orci.+Fusce+posuere+fermentum+scelerisque.+Praesent+non+facilisis+arcu.+Mauris+cursus+sem+sed+est+consequat+et+iaculis+orci+tincidunt.%0D%0A%0D%0ACurabitur+vulputate+faucibus+elit%2C+vitae+euismod+enim+condimentum+quis.+Aenean+pretium+cursus+odio%2C+in+interdum+magna+elementum+eu.+Donec+mi+lacus%2C+pulvinar+at+euismod+id%2C+mattis+sed+mi.+Vivamus+vehicula+dolor+id+arcu+commodo+scelerisque.+Nunc+ante+enim%2C+elementum+eu+sodales+pharetra%2C+placerat+id+orci.+Pellentesque+habitant+morbi+tristique+senectus+et+netus+et+malesuada+fames+ac+turpis+egestas.+Nam+porttitor+ornare+sapien%2C+sit+amet+ultrices+lorem+viverra+ac.+Nunc+nec+consequat+arcu.+Pellentesque+quis+pharetra+purus.+Vestibulum+consequat+sapien+non+velit+euismod+ultrices.+Donec+ultrices+mattis+metus%2C+id+suscipit+ipsum+tempus+vitae.+Duis+sodales%2C+arcu+et+tempor+molestie%2C+nibh+enim+ornare+dolor%2C+eu+rutrum+sapien+mauris+porttitor+sem.+Cras+at+convallis+dui.+Integer+sed+magna+turpis.+Morbi+congue+dictum+mauris%2C+ut+pellentesque+lorem+rhoncus+sit+amet.+Praesent+venenatis+purus+a+augue+rutrum+scelerisque.+Nulla+vitae+enim+quis+massa+mattis+malesuada+vitae+sed+purus.+Integer+luctus+posuere+arcu%2C+eu+lacinia+nunc+porttitor+vitae.+Curabitur+ullamcorper+consectetur+velit%2C+ut+porttitor+nulla+consequat+at.+Proin+quis+sapien+quis+lorem+venenatis+venenatis+sed+a+ante.%0D%0A%0D%0ANam+elementum+mauris+in+felis+accumsan+dignissim.+Etiam+sit+amet+elit+velit%2C+id+pellentesque+lorem.+Suspendisse+potenti.+Nam+imperdiet+interdum+lacus+et+facilisis.+Mauris+a+erat+leo%2C+posuere+dignissim+ante.+Pellentesque+at+turpis+sit+amet+odio+venenatis+accumsan+ut+in+diam.+Duis+vel+dolor+condimentum+erat+cursus+ornare.+Praesent+tempor+erat+vel+sapien+tempus+tincidunt.+Curabitur+consequat+lectus+lacus.+Suspendisse+ac+lectus+mauris%2C+ut+pharetra+diam.+Nam+massa+eros%2C+tincidunt+sit+amet+rhoncus+quis%2C+tincidunt+id+ipsum.+Aenean+tempus+porta+nibh+volutpat+iaculis.+Nulla+eleifend+laoreet+laoreet.+Aliquam+erat+volutpat.+Praesent+dolor+purus%2C+congue+eu+condimentum+sollicitudin%2C+posuere+ac+purus.+Sed+dolor+augue%2C+pretium+vel+mattis+sit+amet%2C+volutpat+eget+elit.%0D%0A%0D%0AAenean+sed+turpis+ac+odio+varius+bibendum.+Suspendisse+nulla+metus%2C+accumsan+non+euismod+nec%2C+fermentum+id+turpis.+Integer+venenatis+ante+et+odio+viverra+eget+condimentum+ipsum+blandit.+Morbi+convallis+venenatis+massa+ut+varius.+Vivamus+non+massa+sed+augue+pulvinar+porta.+Phasellus+sem+orci%2C+ultricies+et+lobortis+ac%2C+iaculis+non+libero.+Donec+non+magna+sit+amet+dolor+eleifend+pharetra+eu+eu+risus.+Duis+in+nisi+nulla%2C+sed+egestas+diam.+Morbi+at+nisl+metus%2C+in+tincidunt+tellus.+Mauris+a+rutrum+justo.+Proin+ligula+quam%2C+hendrerit+eu+viverra+non%2C+blandit+at+massa.+Praesent+ornare+nisi+et+dolor+vulputate+vel+porttitor+quam+varius.%0D%0A%0D%0ASuspendisse+tempor+pretium+luctus.+Nunc+cursus+sapien+rutrum+dolor+dictum+a+tincidunt+leo+pretium.+Ut+porta%2C+magna+bibendum+cursus+mollis%2C+lorem+augue+rhoncus+metus%2C+in+convallis+diam+elit+rhoncus+ante.+Integer+ut+condimentum+turpis.+Nulla+quis+erat+lectus.+Phasellus+volutpat+pulvinar+convallis.+Donec+quis+ante+sem%2C+ac+elementum+urna.+Suspendisse+ullamcorper+commodo+tortor%2C+a+venenatis+nisl+ullamcorper+a.+Integer+euismod+lobortis+purus%2C+non+fringilla+nunc+aliquam+vitae.+Sed+sit+amet+dolor+dui.+Donec+ultricies+bibendum+condimentum.+Nunc+mi+elit%2C+viverra+vitae+volutpat+blandit%2C+laoreet+id+diam.%0D%0A%0D%0AAenean+at+venenatis+nisi.+Morbi+vulputate+elit+sit+amet+felis+placerat+nec+bibendum+erat+aliquam.+Nullam+dignissim+nulla+sit+amet+tortor+dictum+pulvinar+ut+at+massa.+Sed+a+feugiat+nisi.+Quisque+ultricies+egestas+dui%2C+imperdiet+accumsan+leo+rhoncus+eget.+Mauris+molestie+diam+eget+nulla+sollicitudin+ut+lobortis+purus+rhoncus.+Aenean+ut+ligula+et+lacus+iaculis+ullamcorper.+Mauris+non+felis+sed+massa+imperdiet+mollis.+Proin+tristique+lorem+id+sem+placerat+ac+egestas+ipsum+vestibulum.+Maecenas+enim+nisl%2C+sollicitudin+quis+consequat+eu%2C+mollis+quis+ipsum.+Proin+leo+mauris%2C+pulvinar+sit+amet+vestibulum+ac%2C+pulvinar+ac+quam.%0D%0A%0D%0AFusce+sem+odio%2C+pretium+non+bibendum+nec%2C+suscipit+nec+tortor.+Donec+elit+odio%2C+sollicitudin+vitae+pretium+in%2C+ultricies+sit+amet+turpis.+Curabitur+at+justo+nunc.+Sed+in+consectetur+magna.+Cras+imperdiet+felis+a+turpis+ultricies+blandit.+In+aliquam+dictum+ante+eget+vehicula.+Aliquam+erat+volutpat.+Nulla+interdum+purus+dolor.+Nullam+convallis+hendrerit+commodo.+Donec+consectetur+nulla+ac+ligula+suscipit+dignissim.+Pellentesque+eget+mauris+nec+orci+pharetra+tempus+at+eu+quam.+Phasellus+neque+massa%2C+convallis+sed+interdum+et%2C+iaculis+vel+tellus.%0D%0A%0D%0ADonec+tincidunt+nulla+sed+orci+tempor+eget+pretium+magna+ultrices.+Fusce+vestibulum+lacus+vel+ante+hendrerit+fringilla.+Donec+risus+felis%2C+varius+sit+amet+semper+a%2C+porttitor+at+metus.+Curabitur+dui+nulla%2C+convallis+in+posuere+eget%2C+iaculis+non+arcu.+In+facilisis+erat+vitae+ligula+rhoncus+eget+mollis+nibh+tempor.+Nunc+posuere+pretium+lacinia.+Sed+condimentum+bibendum+fringilla.+Donec+sit+amet+purus+id+odio+venenatis+pulvinar.+Nam+vitae+risus+sed+libero+luctus+blandit.+In+eget+massa+sit+amet+mi+tempor+semper+in+quis+nisi.+Fusce+nec+semper+ligula.+Aliquam+a+orci+id+lectus+adipiscing+bibendum+eget+non+nulla.+Morbi+vitae+ornare+lorem.+Nunc+faucibus%2C+enim+vel+vehicula+faucibus%2C+ligula+nibh+interdum+ipsum%2C+ut+eleifend+nisl+dolor+nec+nisi.%0D%0A%0D%0AIn+et+venenatis+ligula.+Quisque+pulvinar%2C+tellus+sed+molestie+vulputate%2C+lacus+odio+ultrices+lorem%2C+a+ornare+tortor+sapien+ac+sem.+Vestibulum+nibh+enim%2C+auctor+at+condimentum+ut%2C+tincidunt+at+orci.+Phasellus+placerat+sem+id+purus+consequat+non+venenatis+dui+consequat.+Cum+sociis+natoque+penatibus+et+magnis+dis+parturient+montes%2C+nascetur+ridiculus+mus.+Vivamus+aliquam+rutrum+diam+at+rutrum.+Vivamus+a+nunc+eros.+Donec+aliquam+turpis+facilisis+lorem+aliquam+sit+amet+euismod+augue+lacinia.+Duis+ligula+orci%2C+dictum+sed+venenatis+vitae%2C+elementum+scelerisque+neque.+Pellentesque+habitant+morbi+tristique+senectus+et+netus+et+malesuada+fames+ac+turpis+egestas.+Curabitur+imperdiet+tincidunt+auctor.+Integer+ut+tellus+sed+justo+blandit+congue+sit+amet+malesuada+diam.+Aenean+egestas+congue+augue+ac+mattis.+Nam+vestibulum+dapibus+mattis.+Morbi+elit+metus%2C+sagittis+quis+faucibus+sit+amet%2C+varius+in+elit.+Maecenas+eu+ante+et+arcu+sagittis+sodales+at+in+volutpat.%3C%2Fsl%3AXMLContent%3E%0D%0A++++%3C%2Fsl%3ADataObject%3E%0D%0A+++%3Csl%3ATransformsInfo%3E%0D%0A+++++%3Csl%3AFinalDataMetaInfo%3E%0D%0A++++++%3Csl%3AMimeType%3Etext%2Fplain%3C%2Fsl%3AMimeType%3E%0D%0A++++++%3C%2Fsl%3AFinalDataMetaInfo%3E%0D%0A+++%3C%2Fsl%3ATransformsInfo%3E%0D%0A+%3C%2Fsl%3ADataObjectInfo%3E%0D%0A%3C%2Fsl%3ACreateXMLSignatureRequest%3E \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/XWWWFormUrlEncoded2.txt b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/XWWWFormUrlEncoded2.txt
new file mode 100644
index 00000000..de63c03c
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/XWWWFormUrlEncoded2.txt
@@ -0,0 +1 @@
+XMLRequest=%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Csl%3ACreateXMLSignatureRequest+%0D%0A++xmlns%3Asl%3D%22http%3A%2F%2Fwww.buergerkarte.at%2Fnamespaces%2Fsecuritylayer%2F1.2%23%22%3E%0D%0A%3Csl%3AKeyboxIdentifier%3ESecureSignatureKeypair%3C%2Fsl%3AKeyboxIdentifier%3E%0D%0A++%3Csl%3ADataObjectInfo+Structure%3D%22enveloping%22%3E%0D%0A++++%3Csl%3ADataObject%3E%0D%0A++++++%3Csl%3AXMLContent%3ELorem+ipsum+dolor+sit+amet%2C+consectetur+adipiscing+elit.+Pellentesque+sed+dui+sed+enim+lobortis+ullamcorper+eu+sit+amet+libero.+Cras+mi+dolor%2C+ultrices+quis+tincidunt+non%2C+imperdiet+in+orci.+Nulla+placerat+sodales+nibh+sit+amet+ornare.+Suspendisse+potenti.+Duis+ultricies+metus+tortor%2C+id+mattis+nulla.+Proin+cursus+commodo+aliquet.+In+posuere%2C+lorem+sit+amet+egestas+consequat%2C+diam+ligula+accumsan+dui%2C+non+placerat+diam+nisl+id+tortor.+Aliquam+blandit+viverra+tellus%2C+vel+facilisis+eros+fermentum+ultrices.+Nullam+sodales+mattis+vulputate.+Suspendisse+luctus+dapibus+odio%2C+tincidunt+tempus+dui+sollicitudin+sed.%0D%0A%0D%0AMauris+auctor%2C+est+non+mattis+consequat%2C+ante+sem+tristique+sem%2C+eget+porttitor+nisl+magna+consectetur+tortor.+Sed+semper+diam+nec+leo+fermentum+dictum.+Suspendisse+sed+ipsum+orci.+Phasellus+rhoncus+odio+sed+lorem+rhoncus+et+tincidunt+mi+semper.+Etiam+accumsan+aliquam+augue%2C+id+aliquet+dui+lacinia+non.+Suspendisse+non+purus+a+turpis+imperdiet+vestibulum+id+in+nisi.+Sed+quis+leo+nec+massa+rhoncus+pharetra+ac+non+ipsum.+Proin+tristique+est+eget+dolor+euismod+vitae+rhoncus+metus+molestie.+Duis+volutpat+leo+libero%2C+molestie+fermentum+turpis.+Praesent+interdum+tellus+mattis+lorem+mollis+sit+amet+elementum+risus+cursus.+Nam+erat+nulla%2C+mollis+sit+amet+rutrum+ut%2C+pharetra+gravida+ligula.+In+hac+habitasse+platea+dictumst.+Maecenas+non+massa+ac+ipsum+eleifend+tempor.+Ut+sed+diam+nisi%2C+in+volutpat+libero.+Duis+vehicula+purus+eu+risus+ultricies+rutrum.+Duis+risus+mi%2C+aliquam+nec+venenatis+vel%2C+scelerisque+eget+eros.+Pellentesque+mollis+aliquet+nibh%2C+et+hendrerit+tortor+lobortis+sed.%0D%0A%0D%0AAenean+odio+sem%2C+pretium+eget+sagittis+sed%2C+rhoncus+a+nisi.+Nulla+cursus+diam+sit+amet+massa+iaculis+ultricies.+Aenean+odio+lorem%2C+bibendum+vitae+consequat+vel%2C+luctus+id+diam.+Proin+congue%2C+dui+non+eleifend+interdum%2C+lorem+lorem+semper+ligula%2C+in+condimentum+orci+enim+eget+tellus.+Aliquam+erat+volutpat.+Quisque+porttitor+volutpat+elit%2C+quis+ultricies+elit+imperdiet+at.+Donec+dictum+ultricies+ligula.+Aliquam+in+condimentum+quam.+Ut+placerat+suscipit+dolor%2C+a+aliquet+arcu+suscipit+ut.+Suspendisse+et+arcu+id+quam+vehicula+ultrices.+Duis+erat+leo%2C+tempor+vel+aliquet+eu%2C+feugiat+eget+erat.+Nulla+facilisi.+Nulla+sed+lorem+sapien.+Aliquam+ullamcorper+dui+sed+nisl+sollicitudin+tempus.+Donec+ipsum+quam%2C+placerat+at+tincidunt+et%2C+condimentum+sit+amet+sapien.+In+luctus+ullamcorper+molestie.+Cras+non+augue+elit.+Ut+cursus+volutpat+augue%2C+sed+condimentum+est+mollis+vitae.+Class+aptent+taciti+sociosqu+ad+litora+torquent+per+conubia+nostra%2C+per+inceptos+himenaeos.+Donec+consectetur+lacus+quis+turpis+semper+elementum+vitae+eleifend+dui.%0D%0A%0D%0APraesent+sed+libero+metus.+Nulla+est+nulla%2C+condimentum+non+volutpat+nec%2C+elementum+at+nisi.+Vivamus+posuere+dignissim+ultricies.+Fusce+massa+velit%2C+dignissim+quis+vehicula+in%2C+consequat+at+purus.+Duis+accumsan+lacinia+mattis.+Aliquam+eget+felis+eget+odio+viverra+ornare+ut+non+orci.+Vivamus+porta%2C+magna+sit+amet+ornare+lacinia%2C+sem+erat+porta+lectus%2C+at+porttitor+nisl+nisl+tincidunt+nisi.+Pellentesque+ornare+massa+ac+urna+feugiat+dignissim.+Ut+at+metus+nunc%2C+sit+amet+vulputate+arcu.+In+hac+habitasse+platea+dictumst.+Suspendisse+eget+elit+nec+erat+iaculis+accumsan+ac+nec+velit.+Aliquam+erat+volutpat.+Proin+id+nibh+odio.+Cras+ullamcorper%2C+dolor+a+rutrum+pharetra%2C+turpis+ligula+adipiscing+nisl%2C+a+tristique+tortor+lorem+in+dolor.+Proin+ac+ligula+felis%2C+et+malesuada+orci.+Aliquam+erat+volutpat.+Phasellus+faucibus+ipsum+quis+libero+posuere+vitae+accumsan+enim+mollis.+Cras+metus+odio%2C+eleifend+sed+suscipit+at%2C+gravida+quis+diam.%0D%0A%0D%0AEtiam+lorem+turpis%2C+consequat+sit+amet+vestibulum+faucibus%2C+accumsan+in+libero.+Nam+ornare+laoreet+placerat.+Nam+pellentesque+lectus+at+urna+tincidunt+facilisis.+Suspendisse+a+libero+in+arcu+eleifend+semper+vitae+sed+tortor.+Curabitur+ac+magna+a+eros+blandit+eleifend+vel+in+tortor.+Morbi+pretium+ullamcorper+ligula+rutrum+porta.+Pellentesque+vitae+viverra+erat.+Quisque+neque+orci%2C+condimentum+id+tempus+in%2C+porttitor+nec+nibh.+Donec+a+odio+a+lectus+dapibus+fermentum+a+sit+amet+sem.+Cras+risus+dolor%2C+ultricies+eget+suscipit+nec%2C+tempus+eget+justo.+Aenean+suscipit+fermentum+nisl%2C+vel+sodales+elit+euismod+ac.+In+non+laoreet+mi.+Morbi+aliquet+quam+id+nunc+aliquet+facilisis.+Nulla+elementum+fringilla+eleifend.+Sed+tristique+nunc+eget+turpis+ullamcorper+varius.+Pellentesque+non+diam+nec+lorem+mollis+vulputate.+In+hac+habitasse+platea+dictumst.+Aenean+pellentesque+leo+ac+augue+molestie+non+varius+nibh+consectetur.+Donec+quis+dui+eget+tortor+pharetra+convallis+vel+quis+orci.+Nulla+at+odio+nisi%2C+sit+amet+luctus+diam.%0D%0A%0D%0ANam+nisl+nibh%2C+faucibus+eu+aliquet+non%2C+elementum+vitae+quam.+Etiam+massa+massa%2C+gravida+ut+pharetra+non%2C+mollis+in+augue.+Integer+urna+quam%2C+tincidunt+et+lacinia+et%2C+vehicula+sit+amet+justo.+Nulla+dui+dui%2C+semper+eget+adipiscing+rutrum%2C+dignissim+a+mi.+Cras+sit+amet+mauris+ac+neque+pretium+ultricies+sit+amet+non+elit.+Praesent+viverra+vehicula+orci+ut+congue.+Quisque+fermentum+neque+eu+turpis+scelerisque+sit+amet+luctus+erat+imperdiet.+Nulla+volutpat+quam+ut+ante+eleifend+in+tempus+diam+laoreet.+Cum+sociis+natoque+penatibus+et+magnis+dis+parturient+montes%2C+nascetur+ridiculus+mus.+Proin+et+lacus+ligula%2C+eget+fermentum+urna.+Ut+quis+urna+ac+nibh+molestie+sollicitudin.+Morbi+interdum+arcu+mauris.%0D%0A%0D%0ASed+posuere%2C+eros+eu+tempus+tempus%2C+nulla+felis+ultrices+tortor%2C+vel+fermentum+nunc+lectus+a+nisi.+Duis+enim+nisl%2C+facilisis+sit+amet+ullamcorper+nec%2C+imperdiet+vulputate+massa.+Nam+semper+aliquet+nunc%2C+vitae+malesuada+turpis+congue+a.+Proin+dolor+eros%2C+sollicitudin+eget+gravida+id%2C+adipiscing+a+risus.+Praesent+sed+mauris+ut+diam+mollis+tempus.+Curabitur+pulvinar+tortor+non+sapien+interdum+in+aliquet+metus+dignissim.+Aliquam+ut+orci+id+nunc+elementum+dapibus+non+ac+odio.+Etiam+nibh+ligula%2C+varius+sed+congue+et%2C+euismod+ac+dui.+Suspendisse+sit+amet+malesuada+ligula.+Aliquam+tempus+nunc+et+massa+mattis+iaculis.%0D%0A%0D%0ADonec+sit+amet+tincidunt+elit.+Vestibulum+ante+ipsum+primis+in+faucibus+orci+luctus+et+ultrices+posuere+cubilia+Curae%3B+Aenean+id+ante+ligula.+Fusce+at+libero+sed+nisl+luctus+sagittis.+Vivamus+sodales+nibh+eros%2C+at+pulvinar+neque.+Lorem+ipsum+dolor+sit+amet%2C+consectetur+adipiscing+elit.+Proin+augue+libero%2C+euismod+nec+semper+quis%2C+sollicitudin+ut+nulla.+Suspendisse+egestas+sapien+et+ante+interdum+ac+sollicitudin+arcu+malesuada.+Nulla+posuere+pretium+felis+id+ultricies.+Curabitur+nec+porttitor+lectus.%0D%0A%0D%0ANam+consectetur+tempor+sapien.+Nam+lobortis+porttitor+bibendum.+Maecenas+ac+enim+at+magna+tempor+imperdiet.+Donec+sed+ligula+ligula.+Morbi+et+orci+tortor.+Nulla+egestas+enim+vitae+libero+tincidunt+quis+rhoncus+quam+aliquam.+Etiam+non+justo+orci%2C+sit+amet+aliquam+eros.+Proin+vestibulum+leo+convallis+velit+tincidunt+nec+egestas+odio+lacinia.+Quisque+pellentesque+tempus+nisl%2C+ut+porta+tellus+aliquet+in.+Vestibulum+mollis+dapibus+velit+non+egestas.+Proin+vel+viverra+sapien.+Aliquam+erat+volutpat.+Curabitur+enim+eros%2C+aliquam+nec+dictum+eu%2C+fermentum+quis+nibh.+Donec+eget+enim+in+velit+viverra+scelerisque+sit+amet+in+lectus.+Etiam+sit+amet+orci+nisi.+Maecenas+ullamcorper%2C+nibh+quis+eleifend+euismod%2C+enim+turpis+pretium+nibh%2C+nec+venenatis+velit+risus+eu+tellus.%0D%0A%0D%0APraesent+elementum+mattis+placerat.+Curabitur+at+interdum+nibh.+Quisque+ullamcorper+eleifend+nunc+a+mollis.+Cras+ut+nulla+risus%2C+et+suscipit+risus.+Aenean+erat+diam%2C+facilisis+at+placerat+id%2C+placerat+sed+est.+Ut+nibh+libero%2C+varius+eget+suscipit+sed%2C+ultrices+eget+nisl.+Aenean+dignissim+enim+eget+dui+malesuada+et+consectetur+lorem+ullamcorper.+Class+aptent+taciti+sociosqu+ad+litora+torquent+per+conubia+nostra%2C+per+inceptos+himenaeos.+Donec+at+nisl+ut+eros+facilisis+congue+nec+at+dui.+Vestibulum+ante+ipsum+primis+in+faucibus+orci+luctus+et+ultrices+posuere+cubilia+Curae%3B+Proin+in+sem+nulla.+Class+aptent+taciti+sociosqu+ad+litora+torquent+per+conubia+nostra%2C+per+inceptos+himenaeos.+Integer+facilisis%2C+odio+vel+euismod+pretium%2C+libero+lorem+elementum+lorem%2C+at+accumsan+nisl+est+sed+nibh.+Etiam+blandit+diam+sed+tortor+molestie+at+rutrum+neque+viverra.%0D%0A%0D%0AUt+ultricies+pharetra+velit%2C+a+viverra+metus+elementum+vel.+Pellentesque+vitae+interdum+lorem.+Nam+tincidunt+nibh+eu+neque+rutrum+vehicula.+Vestibulum+vitae+arcu+vel+ante+commodo+blandit.+Sed+placerat+lobortis+nisi%2C+et+hendrerit+justo+ultrices+aliquam.+Suspendisse+eget+risus+vel+sapien+hendrerit+dignissim.+Sed+interdum+pellentesque+varius.+Nam+scelerisque%2C+mauris+ut+cursus+hendrerit%2C+purus+felis+rutrum+ante%2C+in+convallis+velit+urna+ornare+nisi.+Vestibulum+et+sapien+quis+justo+pretium+interdum.+Praesent+volutpat%2C+nisi+at+hendrerit+aliquet%2C+elit+libero+tincidunt+purus%2C+egestas+viverra+risus+magna+quis+risus.%0D%0A%0D%0ADonec+id+justo+sem.+Aenean+facilisis+pulvinar+est+ut+auctor.+Morbi+tincidunt+mollis+adipiscing.+Sed+pulvinar+lorem+neque.+Duis+eros+felis%2C+ultricies+eget+ultrices+ut%2C+dignissim+vitae+arcu.+Proin+quis+quam+mi.+Nunc+sagittis+ultricies+nibh%2C+eu+porttitor+urna+eleifend+in.+Sed+eget+lorem+eros.+Duis+non+tincidunt+sapien.+Vivamus+blandit+facilisis+ante.+Quisque+lectus+neque%2C+varius+vel+fringilla+eget%2C+vulputate+non+libero.%0D%0A%0D%0AClass+aptent+taciti+sociosqu+ad+litora+torquent+per+conubia+nostra%2C+per+inceptos+himenaeos.+Aenean+varius+congue+ultrices.+Phasellus+suscipit+vulputate+tristique.+Donec+nec+libero+vel+diam+sagittis+dignissim.+Donec+sed+dui+at+augue+sollicitudin+tristique+sollicitudin+in+nulla.+Nullam+id+magna+enim.+Etiam+convallis+mollis+urna+a+malesuada.+Duis+ac+iaculis+tellus.+Donec+scelerisque+eleifend+elit+ut+ornare.+Cras+vitae+sem+augue%2C+quis+lacinia+elit.+Pellentesque+sit+amet+nunc+metus%2C+luctus+lobortis+erat.+Nulla+lacus+lorem%2C+pharetra+ac+consectetur+at%2C+mattis+id+arcu.%0D%0A%0D%0ANunc+mi+est%2C+pharetra+vel+mattis+sit+amet%2C+faucibus+ut+tortor.+Morbi+ut+ante+eget+purus+gravida+dictum+in+sit+amet+ligula.+Aliquam+malesuada+metus+quis+nunc+placerat+lobortis.+Nulla+venenatis+vehicula+lacus%2C+sed+vestibulum+nibh+egestas+ornare.+Sed+a+lorem+nulla.+Donec+malesuada+dolor+congue+est+condimentum+eu+tincidunt+orci+ullamcorper.+Nam+porttitor+fermentum+purus+nec+molestie.+Nunc+porttitor+tincidunt+lobortis.+Nullam+vulputate+imperdiet+neque%2C+et+consectetur+lectus+molestie+vitae.+Nulla+facilisi.%0D%0A%0D%0APhasellus+laoreet+auctor+elit%2C+ac+sagittis+mi+tincidunt+eu.+Nunc+cursus+ipsum+eget+nulla+molestie+sollicitudin.+Vivamus+sapien+orci%2C+cursus+ut+fringilla+sed%2C+suscipit+id+libero.+Proin+convallis+lectus+et+mauris+suscipit+aliquet+non+quis+urna.+Donec+sit+amet+consequat+metus.+Praesent+lacus+ligula%2C+interdum+quis+rutrum+ut%2C+sodales+in+neque.+Donec+sed+nisi+nibh%2C+aliquet+volutpat+est.+Curabitur+volutpat+nunc+ante.+Nullam+pharetra+enim+at+eros+pulvinar+in+tincidunt+augue+interdum.+Maecenas+mi+quam%2C+placerat+nec+mollis+nec%2C+iaculis+eu+lorem.+Suspendisse+potenti.+Aenean+eu+neque+sit+amet+sapien+pulvinar+pretium.+Etiam+augue+quam%2C+malesuada+non+pretium+at%2C+feugiat+sit+amet+tortor.%0D%0A%0D%0ADonec+a+dui+in+augue+lacinia+pellentesque.+Praesent+vitae+tortor+sit+amet+velit+posuere+accumsan.+Phasellus+et+augue+ac+mauris+porttitor+tempus.+Pellentesque+non+odio+quis+nulla+dictum+facilisis.+Donec+blandit+odio+quam.+Mauris+quam+nunc%2C+semper+semper+posuere+eu%2C+pharetra+sed+diam.+Donec+tincidunt+ultrices+cursus.+Sed+venenatis+rhoncus+nisl%2C+nec+tempus+augue+imperdiet+non.+Nulla+facilisi.+Sed+rutrum+accumsan+velit+sit+amet+placerat.+Sed+rhoncus+quam+nec+enim+feugiat+ultricies.+Sed+et+lorem+elit.+Integer+semper+aliquam+nibh%2C+non+lobortis+lorem+fringilla+a.+Suspendisse+potenti.+Suspendisse+suscipit+est+mattis+massa+imperdiet+lacinia.+Integer+interdum+nisl+a+neque+posuere+porta.+Ut+eget+velit+ut+leo+elementum+vulputate.+Maecenas+congue+dignissim+bibendum.%0D%0A%0D%0ACurabitur+sed+cursus+nunc.+Pellentesque+aliquet+odio+et+augue+cursus+lacinia.+Nullam+molestie%2C+lorem+nec+gravida+aliquet%2C+augue+diam+vestibulum+tellus%2C+vitae+gravida+eros+ante+consequat+metus.+Donec+tempor+rhoncus+interdum.+Proin+laoreet+pretium+placerat.+Mauris+id+eros+eget+nisl+cursus+consequat+et+id+mauris.+Cras+non+nulla+a+tellus+sodales+eleifend+nec+quis+augue.+Class+aptent+taciti+sociosqu+ad+litora+torquent+per+conubia+nostra%2C+per+inceptos+himenaeos.+Nunc+blandit+est+nec+dolor+facilisis+eget+placerat+libero+imperdiet.+Cras+ultricies+mollis+nulla%2C+ut+ullamcorper+neque+bibendum+a.+Fusce+ullamcorper+orci+vitae+metus+auctor+tempor.+In+sit+amet+tellus+sed+libero+sagittis+consequat.+Aenean+posuere+nisi+id+sapien+tristique+a+malesuada+lorem+fermentum.+Quisque+pretium+malesuada+fermentum.+Sed+ut+nunc+ac+risus+consectetur+consequat+a+quis+dolor.+Cras+sit+amet+leo+felis.%0D%0A%0D%0ASed+vitae+justo+dolor%2C+eu+adipiscing+nibh.+Aliquam+ut+ultrices+ligula.+Cum+sociis+natoque+penatibus+et+magnis+dis+parturient+montes%2C+nascetur+ridiculus+mus.+Ut+sed+porttitor+felis.+Etiam+lectus+dolor%2C+egestas+id+scelerisque+vitae%2C+tristique+sed+justo.+Pellentesque+habitant+morbi+tristique+senectus+et+netus+et+malesuada+fames+ac+turpis+egestas.+Suspendisse+eu+quam+vel+lorem+sollicitudin+mattis.+Nulla+dictum+consequat+convallis.+Morbi+convallis+ligula+ac+sem+pellentesque+consequat.+Nam+et+est+nec+diam+eleifend+blandit+at+ac+metus.+Duis+rutrum+elementum+consequat.+Sed+semper+accumsan+pharetra.+Suspendisse+volutpat+nisi+hendrerit+justo+tincidunt+tempus.+Ut+venenatis+tincidunt+pretium.+Phasellus+porta+diam+in+purus+pulvinar+et+iaculis+massa+mollis.+Nulla+facilisi.+Vivamus+justo+felis%2C+euismod+vel+volutpat+vel%2C+euismod+at+orci.+Morbi+cursus%2C+massa+nec+ornare+consequat%2C+quam+leo+laoreet+lectus%2C+non+placerat+tortor+enim+eu+tellus.+Sed+ut+purus+nibh%2C+eget+dictum+purus.%0D%0A%0D%0ADonec+nisl+est%2C+pretium+sit+amet+faucibus+id%2C+vestibulum+et+nisl.+Morbi+egestas+pulvinar+sollicitudin.+Duis+tincidunt+enim+id+nulla+commodo+nec+lobortis+lacus+tristique.+Mauris+iaculis+mattis+turpis+non+molestie.+Quisque+non+ante+sed+orci+dictum+egestas.+In+ac+enim+at+dolor+posuere+laoreet.+Morbi+tortor+libero%2C+iaculis+nec+rhoncus+id%2C+laoreet+at+elit.+Cras+orci+dui%2C+interdum+at+lacinia+non%2C+venenatis+a+elit.+Etiam+suscipit+massa+in+ante+auctor+faucibus.+Praesent+non+quam+a+diam+viverra+gravida+sit+amet+eu+eros.+Quisque+sit+amet+suscipit+turpis.%0D%0A%0D%0APhasellus+non+tellus+purus%2C+sed+tempor+elit.+Cras+rutrum+condimentum+congue.+Sed+nec+felis+nibh.+Nam+condimentum+nisi+et+nulla+eleifend+in+imperdiet+velit+imperdiet.+Cras+ut+leo+sed+lectus+interdum+vehicula+quis+in+erat.+Nulla+et+semper+risus.+Cras+velit+sem%2C+sagittis+sit+amet+scelerisque+ut%2C+cursus+vitae+quam.+Maecenas+neque+dui%2C+dictum+non+porttitor+sed%2C+adipiscing+at+massa.+Phasellus+pulvinar+dui+ut+turpis+sagittis+et+imperdiet+nisl+porttitor.+Curabitur+porttitor+velit+in+justo+luctus+vel+placerat+est+tristique.+Maecenas+non+nisi+eget+est+feugiat+blandit.+Proin+eget+dui+lorem.+Aenean+id+sem+non+velit+commodo+sagittis+eget+in+quam.+Mauris+vitae+diam+quam%2C+et+mattis+turpis.+Integer+a+fringilla+erat.+Nunc+ligula+enim%2C+varius+eget+varius+non%2C+consectetur+sit+amet+nibh.+In+interdum+justo+sollicitudin+ipsum+pulvinar+ornare.+Aenean+et+gravida+nunc.+Fusce+in+ipsum+quis+lectus+commodo+laoreet+eu+eget+lorem.%0D%0A%0D%0APhasellus+dui+justo%2C+pulvinar+scelerisque+consectetur+nec%2C+mollis+vitae+metus.+Integer+id+tortor+nec+dui+rhoncus+vulputate+sed+id+tellus.+Nulla+sodales+suscipit+dolor%2C+vitae+pharetra+lacus+sagittis+ullamcorper.+Aenean+convallis+dapibus+sapien%2C+eget+interdum+tellus+accumsan+eget.+Nulla+at+purus+vel+nulla+auctor+fermentum+sed+aliquet+odio.+Pellentesque+habitant+morbi+tristique+senectus+et+netus+et+malesuada+fames+ac+turpis+egestas.+Pellentesque+laoreet%2C+nunc+vitae+venenatis+viverra%2C+velit+purus+aliquam+neque%2C+vitae+luctus+risus+magna+a+ante.+Proin+et+lectus+odio%2C+id+pulvinar+sapien.+Maecenas+vulputate+gravida+laoreet.+Sed+ut+nisl+vel+risus+malesuada+auctor.+Aenean+viverra+fermentum+sem+nec+sodales.+Etiam+eget+arcu+nibh.+Sed+eget+euismod+massa.+Sed+feugiat+nibh+aliquam+odio+lobortis+vehicula.+Duis+vulputate+mattis+enim+at+semper.+Pellentesque+habitant+morbi+tristique+senectus+et+netus+et+malesuada+fames+ac+turpis+egestas.+Aenean+laoreet+ultricies+neque.+Vestibulum+ante+ipsum+primis+in+faucibus+orci+luctus+et+ultrices+posuere+cubilia+Curae%3B%0D%0A%0D%0ACras+condimentum+magna+nec+mauris+viverra+eu+vulputate+nunc+feugiat.+Proin+lobortis+ultrices+mauris.+Sed+euismod%2C+nunc+et+ullamcorper+tincidunt%2C+eros+lectus+egestas+lectus%2C+eget+aliquam+elit+augue+in+eros.+Aenean+in+lorem+sed+tellus+porta+convallis.+Phasellus+sem+nunc%2C+facilisis+vel+luctus+ut%2C+mattis+vel+risus.+Donec+quis+feugiat+nulla.+Donec+eleifend+tempor+sodales.+Sed+mattis+congue+orci+non+tincidunt.+Fusce+massa+nisi%2C+pretium+ac+consequat+non%2C+sagittis+et+justo.+Phasellus+est+velit%2C+placerat+quis+posuere+et%2C+pellentesque+at+est.+Etiam+quis+lacus+a+nibh+eleifend+adipiscing.+Sed+vel+leo+arcu.+Fusce+porta+fringilla+felis+in+blandit.%0D%0A%0D%0ADonec+pretium%2C+eros+eget+auctor+elementum%2C+neque+tortor+placerat+urna%2C+id+dapibus+magna+lacus+sed+elit.+Quisque+auctor+molestie+turpis+et+mollis.+Nam+ipsum+metus%2C+lacinia+et+blandit+a%2C+egestas+aliquam+quam.+Suspendisse+potenti.+Morbi+tempus+lorem+eget+nibh+ultricies+congue.+Maecenas+in+enim+sed+odio+cursus+tincidunt.+Aliquam+erat+volutpat.+Fusce+fermentum+consectetur+bibendum.+Aenean+adipiscing+augue+non+ante+mattis+egestas.+Maecenas+porttitor+egestas+convallis.+Pellentesque+rhoncus+tincidunt+volutpat.+Aliquam+sed+sem+ac+augue+placerat+placerat+nec+sed+neque.%0D%0A%0D%0AMorbi+congue+eleifend+metus+at+pellentesque.+Maecenas+odio+mauris%2C+suscipit+eu+placerat+rutrum%2C+venenatis+ac+libero.+Duis+eleifend%2C+risus+placerat+congue+vestibulum%2C+neque+sem+varius+diam%2C+ultricies+auctor+nisi+massa+et+tellus.+Morbi+neque+odio%2C+suscipit+eleifend+dapibus+eget%2C+sodales+ac+massa.+Nullam+laoreet%2C+libero+sit+amet+ultricies+gravida%2C+neque+sem+eleifend+metus%2C+nec+consectetur+eros+lacus+ac+mauris.+Quisque+sollicitudin+consectetur+ante+non+lacinia.+Sed+quis+dolor+dolor%2C+eu+euismod+turpis.+In+posuere+metus+et+ligula+imperdiet+vitae+placerat+eros+bibendum.+Nullam+tincidunt+tincidunt+nisl+ac+mollis.+Mauris+at+augue+justo.+Nam+ac+vestibulum+justo.+In+id+elit+tortor.+Nunc+feugiat+molestie+orci%2C+in+molestie+elit+bibendum+eu.+Proin+libero+ipsum%2C+consectetur+sit+amet+facilisis+euismod%2C+bibendum+vel+felis.+Aliquam+posuere+quam+non+sapien+placerat+porttitor.%0D%0A%0D%0ANunc+volutpat%2C+arcu+sed+fringilla+blandit%2C+odio+risus+gravida+odio%2C+sollicitudin+tincidunt+lacus+odio+a+lectus.+Morbi+lacus+quam%2C+hendrerit+nec+facilisis+non%2C+luctus+ac+velit.+Lorem+ipsum+dolor+sit+amet%2C+consectetur+adipiscing+elit.+Proin+vitae+quam+orci%2C+quis+pellentesque+nisl.+Nullam+congue+risus+non+nisl+pulvinar+iaculis.+Integer+id+nisl+lorem%2C+eget+egestas+lacus.+Sed+nec+felis+eget+nisl+sagittis+sagittis.+Nunc+eu+laoreet+velit.+Vestibulum+quis+turpis+mi%2C+eget+tempor+ipsum.+Mauris+aliquet+tristique+feugiat.+Nulla+condimentum+bibendum+augue%2C+et+hendrerit+quam+porta+eget.+Etiam+imperdiet+tellus+nisl%2C+non+laoreet+neque.+Integer+sit+amet+pulvinar+lectus.+Cras+aliquam+turpis+at+urna+aliquam+vitae+dignissim+enim+tempor.+In+hac+habitasse+platea+dictumst.+Nulla+facilisi.+Integer+id+metus+orci.+Fusce+posuere+fermentum+scelerisque.+Praesent+non+facilisis+arcu.+Mauris+cursus+sem+sed+est+consequat+et+iaculis+orci+tincidunt.%0D%0A%0D%0ACurabitur+vulputate+faucibus+elit%2C+vitae+euismod+enim+condimentum+quis.+Aenean+pretium+cursus+odio%2C+in+interdum+magna+elementum+eu.+Donec+mi+lacus%2C+pulvinar+at+euismod+id%2C+mattis+sed+mi.+Vivamus+vehicula+dolor+id+arcu+commodo+scelerisque.+Nunc+ante+enim%2C+elementum+eu+sodales+pharetra%2C+placerat+id+orci.+Pellentesque+habitant+morbi+tristique+senectus+et+netus+et+malesuada+fames+ac+turpis+egestas.+Nam+porttitor+ornare+sapien%2C+sit+amet+ultrices+lorem+viverra+ac.+Nunc+nec+consequat+arcu.+Pellentesque+quis+pharetra+purus.+Vestibulum+consequat+sapien+non+velit+euismod+ultrices.+Donec+ultrices+mattis+metus%2C+id+suscipit+ipsum+tempus+vitae.+Duis+sodales%2C+arcu+et+tempor+molestie%2C+nibh+enim+ornare+dolor%2C+eu+rutrum+sapien+mauris+porttitor+sem.+Cras+at+convallis+dui.+Integer+sed+magna+turpis.+Morbi+congue+dictum+mauris%2C+ut+pellentesque+lorem+rhoncus+sit+amet.+Praesent+venenatis+purus+a+augue+rutrum+scelerisque.+Nulla+vitae+enim+quis+massa+mattis+malesuada+vitae+sed+purus.+Integer+luctus+posuere+arcu%2C+eu+lacinia+nunc+porttitor+vitae.+Curabitur+ullamcorper+consectetur+velit%2C+ut+porttitor+nulla+consequat+at.+Proin+quis+sapien+quis+lorem+venenatis+venenatis+sed+a+ante.%0D%0A%0D%0ANam+elementum+mauris+in+felis+accumsan+dignissim.+Etiam+sit+amet+elit+velit%2C+id+pellentesque+lorem.+Suspendisse+potenti.+Nam+imperdiet+interdum+lacus+et+facilisis.+Mauris+a+erat+leo%2C+posuere+dignissim+ante.+Pellentesque+at+turpis+sit+amet+odio+venenatis+accumsan+ut+in+diam.+Duis+vel+dolor+condimentum+erat+cursus+ornare.+Praesent+tempor+erat+vel+sapien+tempus+tincidunt.+Curabitur+consequat+lectus+lacus.+Suspendisse+ac+lectus+mauris%2C+ut+pharetra+diam.+Nam+massa+eros%2C+tincidunt+sit+amet+rhoncus+quis%2C+tincidunt+id+ipsum.+Aenean+tempus+porta+nibh+volutpat+iaculis.+Nulla+eleifend+laoreet+laoreet.+Aliquam+erat+volutpat.+Praesent+dolor+purus%2C+congue+eu+condimentum+sollicitudin%2C+posuere+ac+purus.+Sed+dolor+augue%2C+pretium+vel+mattis+sit+amet%2C+volutpat+eget+elit.%0D%0A%0D%0AAenean+sed+turpis+ac+odio+varius+bibendum.+Suspendisse+nulla+metus%2C+accumsan+non+euismod+nec%2C+fermentum+id+turpis.+Integer+venenatis+ante+et+odio+viverra+eget+condimentum+ipsum+blandit.+Morbi+convallis+venenatis+massa+ut+varius.+Vivamus+non+massa+sed+augue+pulvinar+porta.+Phasellus+sem+orci%2C+ultricies+et+lobortis+ac%2C+iaculis+non+libero.+Donec+non+magna+sit+amet+dolor+eleifend+pharetra+eu+eu+risus.+Duis+in+nisi+nulla%2C+sed+egestas+diam.+Morbi+at+nisl+metus%2C+in+tincidunt+tellus.+Mauris+a+rutrum+justo.+Proin+ligula+quam%2C+hendrerit+eu+viverra+non%2C+blandit+at+massa.+Praesent+ornare+nisi+et+dolor+vulputate+vel+porttitor+quam+varius.%0D%0A%0D%0ASuspendisse+tempor+pretium+luctus.+Nunc+cursus+sapien+rutrum+dolor+dictum+a+tincidunt+leo+pretium.+Ut+porta%2C+magna+bibendum+cursus+mollis%2C+lorem+augue+rhoncus+metus%2C+in+convallis+diam+elit+rhoncus+ante.+Integer+ut+condimentum+turpis.+Nulla+quis+erat+lectus.+Phasellus+volutpat+pulvinar+convallis.+Donec+quis+ante+sem%2C+ac+elementum+urna.+Suspendisse+ullamcorper+commodo+tortor%2C+a+venenatis+nisl+ullamcorper+a.+Integer+euismod+lobortis+purus%2C+non+fringilla+nunc+aliquam+vitae.+Sed+sit+amet+dolor+dui.+Donec+ultricies+bibendum+condimentum.+Nunc+mi+elit%2C+viverra+vitae+volutpat+blandit%2C+laoreet+id+diam.%0D%0A%0D%0AAenean+at+venenatis+nisi.+Morbi+vulputate+elit+sit+amet+felis+placerat+nec+bibendum+erat+aliquam.+Nullam+dignissim+nulla+sit+amet+tortor+dictum+pulvinar+ut+at+massa.+Sed+a+feugiat+nisi.+Quisque+ultricies+egestas+dui%2C+imperdiet+accumsan+leo+rhoncus+eget.+Mauris+molestie+diam+eget+nulla+sollicitudin+ut+lobortis+purus+rhoncus.+Aenean+ut+ligula+et+lacus+iaculis+ullamcorper.+Mauris+non+felis+sed+massa+imperdiet+mollis.+Proin+tristique+lorem+id+sem+placerat+ac+egestas+ipsum+vestibulum.+Maecenas+enim+nisl%2C+sollicitudin+quis+consequat+eu%2C+mollis+quis+ipsum.+Proin+leo+mauris%2C+pulvinar+sit+amet+vestibulum+ac%2C+pulvinar+ac+quam.%0D%0A%0D%0AFusce+sem+odio%2C+pretium+non+bibendum+nec%2C+suscipit+nec+tortor.+Donec+elit+odio%2C+sollicitudin+vitae+pretium+in%2C+ultricies+sit+amet+turpis.+Curabitur+at+justo+nunc.+Sed+in+consectetur+magna.+Cras+imperdiet+felis+a+turpis+ultricies+blandit.+In+aliquam+dictum+ante+eget+vehicula.+Aliquam+erat+volutpat.+Nulla+interdum+purus+dolor.+Nullam+convallis+hendrerit+commodo.+Donec+consectetur+nulla+ac+ligula+suscipit+dignissim.+Pellentesque+eget+mauris+nec+orci+pharetra+tempus+at+eu+quam.+Phasellus+neque+massa%2C+convallis+sed+interdum+et%2C+iaculis+vel+tellus.%0D%0A%0D%0ADonec+tincidunt+nulla+sed+orci+tempor+eget+pretium+magna+ultrices.+Fusce+vestibulum+lacus+vel+ante+hendrerit+fringilla.+Donec+risus+felis%2C+varius+sit+amet+semper+a%2C+porttitor+at+metus.+Curabitur+dui+nulla%2C+convallis+in+posuere+eget%2C+iaculis+non+arcu.+In+facilisis+erat+vitae+ligula+rhoncus+eget+mollis+nibh+tempor.+Nunc+posuere+pretium+lacinia.+Sed+condimentum+bibendum+fringilla.+Donec+sit+amet+purus+id+odio+venenatis+pulvinar.+Nam+vitae+risus+sed+libero+luctus+blandit.+In+eget+massa+sit+amet+mi+tempor+semper+in+quis+nisi.+Fusce+nec+semper+ligula.+Aliquam+a+orci+id+lectus+adipiscing+bibendum+eget+non+nulla.+Morbi+vitae+ornare+lorem.+Nunc+faucibus%2C+enim+vel+vehicula+faucibus%2C+ligula+nibh+interdum+ipsum%2C+ut+eleifend+nisl+dolor+nec+nisi.%0D%0A%0D%0AIn+et+venenatis+ligula.+Quisque+pulvinar%2C+tellus+sed+molestie+vulputate%2C+lacus+odio+ultrices+lorem%2C+a+ornare+tortor+sapien+ac+sem.+Vestibulum+nibh+enim%2C+auctor+at+condimentum+ut%2C+tincidunt+at+orci.+Phasellus+placerat+sem+id+purus+consequat+non+venenatis+dui+consequat.+Cum+sociis+natoque+penatibus+et+magnis+dis+parturient+montes%2C+nascetur+ridiculus+mus.+Vivamus+aliquam+rutrum+diam+at+rutrum.+Vivamus+a+nunc+eros.+Donec+aliquam+turpis+facilisis+lorem+aliquam+sit+amet+euismod+augue+lacinia.+Duis+ligula+orci%2C+dictum+sed+venenatis+vitae%2C+elementum+scelerisque+neque.+Pellentesque+habitant+morbi+tristique+senectus+et+netus+et+malesuada+fames+ac+turpis+egestas.+Curabitur+imperdiet+tincidunt+auctor.+Integer+ut+tellus+sed+justo+blandit+congue+sit+amet+malesuada+diam.+Aenean+egestas+congue+augue+ac+mattis.+Nam+vestibulum+dapibus+mattis.+Morbi+elit+metus%2C+sagittis+quis+faucibus+sit+amet%2C+varius+in+elit.+Maecenas+eu+ante+et+arcu+sagittis+sodales+at+in+volutpat.%3C%2Fsl%3AXMLContent%3E%0D%0A++++%3C%2Fsl%3ADataObject%3E%0D%0A+++%3Csl%3ATransformsInfo%3E%0D%0A+++++%3Csl%3AFinalDataMetaInfo%3E%0D%0A++++++%3Csl%3AMimeType%3Etext%2Fplain%3C%2Fsl%3AMimeType%3E%0D%0A++++++%3C%2Fsl%3AFinalDataMetaInfo%3E%0D%0A+++%3C%2Fsl%3ATransformsInfo%3E%0D%0A+%3C%2Fsl%3ADataObjectInfo%3E%0D%0A%3C%2Fsl%3ACreateXMLSignatureRequest%3E&EmptyParam=&TransferParam__=%21%22%23%24%25%26%27%28%29*%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D%7E%C2%A1%C2%A2%C2%A3%C2%A4%C2%A5%C2%A6%C2%A7%C2%A8%C2%A9%C2%AA%C2%AB%C2%AC+%C2%AE%C2%AF%C2%B0%C2%B1%C2%B2%C2%B3%C2%B4%C2%B5%C2%B6%C2%B7%C2%B8%C2%B9%C2%BA%C2%BB%C2%BC%C2%BD%C2%BE%C2%BF%C3%80%C3%81%C3%82%C3%83%C3%84%C3%85%C3%86%C3%87%C3%88%C3%89%C3%8A%C3%8B%C3%8C%C3%8D%C3%8E%C3%8F%C3%90%C3%91%C3%92%C3%93%C3%94%C3%95%C3%96%C3%97%C3%98%C3%99%C3%9A%C3%9B%C3%9C%C3%9D%C3%9E%C3%9F%C3%A0%C3%A1%C3%A2%C3%A3%C3%A4%C3%A5%C3%A6%C3%A7%C3%A8%C3%A9%C3%AA%C3%AB%C3%AC%C3%AD%C3%AE%C3%AF%C3%B0%C3%B1%C3%B2%C3%B3%C3%B4%C3%B5%C3%B6%C3%B7%C3%B8%C3%B9%C3%BA%C3%BB%C3%BC%C3%BD%C3%BE%C3%BF%CE%8E%CE%8F%CE%90%CE%91%CE%92%CE%93%CE%94%CE%95%CE%96%CE%97%CE%98%CE%99%CE%9A%CE%9B%CE%9C%CE%9D%CE%9E%CE%9F%CE%A0%CE%A1%CE%A3%CE%A4%CE%A5%CE%A6%CE%A7%CE%A8%CE%A9%CE%AA%CE%AB%CE%AC%CE%AD%CE%AE%CE%AF%CE%B0%CE%B1%CE%B2%CE%B3%CE%B4%CE%B5%CE%B6%CE%B7%CE%B8%CE%B9%CE%BA%CE%BB%CE%BC%CE%BD%CE%BE%CE%BF%CF%80%CF%81%CF%82%CF%83%CF%84%CF%85%CF%86%CF%87%CF%88%CF%89%CF%8A%CF%8B%CF%8C%CF%8D%CF%8E%CF%90%CF%91%CF%92%CF%93%CF%94%CF%95%CF%96%CF%97%CF%98%CF%99%CF%9A%CF%9B%CF%9C%CF%9D%CF%9E%CF%9F%CF%A0%CF%A1%D0%80%D0%81%D0%82%D0%83%D0%84%D0%85%D0%86%D0%87%D0%88%D0%89%D0%8A%D0%8B%D0%8C%D0%8D%D0%8E%D0%8F%D0%90%D0%91%D0%92%D0%93%D0%94%D0%95%D0%96%D0%97%D0%98%D0%99%D0%9A%D0%9B%D0%9C%D0%9D%D0%9E%D0%9F%D0%A0%D0%A1%D0%A2%D0%A3%D0%A4%D0%A5%D0%A6%D0%A7%D0%A8%D0%A9%D0%AA%D0%AB%D0%AC%D0%AD%D0%AE%D0%AF%D0%B0%D0%B1%D0%B2%D0%B3%D0%B4%D0%B5%D0%B6%D0%B7%D0%B8%D0%B9%D0%BA%D0%BB%D0%BC%D0%BD%D0%BE%D0%BF%D1%80%D1%81%D1%82%D1%83%D1%84%D1%85%D1%86%D1%87%D1%88%D1%89%D1%8A%D1%8B%D1%8C%D1%8D%D1%8E%D1%8F%D1%90%D1%91%D1%92%D1%93%D1%94%D1%95%D1%96%D1%97%D1%98%D1%99%D1%9A%D1%9B%D1%9C%D1%9D%D1%9E%D1%9F%D2%90%D2%91%D2%92%D2%93%D2%94%D2%95%D2%96%D2%97%D2%98%D2%99%D2%9A%D2%9B%D2%B0%D2%B1%D2%B2%D2%B3%D3%80%D3%81%D3%82%D3%83%D3%84%D3%90%D3%91%D3%92%D3%93%D3%94%D3%95%D3%96%D3%97%D3%98%D3%99%D3%9A%D3%9B%D3%9C%D3%9D%D3%9E%D3%9F%D3%A0%D3%A1%D3%A2%D3%A3%D3%A4%D3%A5%D3%A6%D3%A7%D3%A8%D3%A9%D3%AA%D3%AB%D3%AC%D3%AD%D3%AE%D3%AF%D3%B0%D3%B1%D3%B2%D3%B3%D3%B4%D3%B5%D3%B6%D3%B7%D3%B8%D3%B9 \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/stylesheet.xslt b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/stylesheet.xslt
new file mode 100644
index 00000000..bc1abc19
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/binding/stylesheet.xslt
@@ -0,0 +1,16 @@
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sl12="http://www.buergerkarte.at/namespaces/securitylayer/1.2#">
+ <xsl:output media-type="text/html"/>
+ <xsl:template match="/">
+ <html>
+ <body>
+ <xsl:apply-templates/>
+ </body>
+ </html>
+ </xsl:template>
+ <xsl:template match="ok">
+ Alles Roger
+ </xsl:template>
+ <xsl:template match="/sl12:NullOperationResponse">
+ NullKommaJosef
+ </xsl:template>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-Qual-01a.cer b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-Qual-01a.cer
new file mode 100644
index 00000000..f9fef65f
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-Qual-01a.cer
Binary files differ
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-Qual-02a.cer b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-Qual-02a.cer
new file mode 100644
index 00000000..36a442b8
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-Qual-02a.cer
Binary files differ
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-Qual-03a.cer b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-Qual-03a.cer
new file mode 100644
index 00000000..ab9e0cd7
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-Qual-03a.cer
Binary files differ
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-nQual-01a.cer b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-nQual-01a.cer
new file mode 100644
index 00000000..efa28178
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-nQual-01a.cer
Binary files differ
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-nQual-03.cer b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-nQual-03.cer
new file mode 100644
index 00000000..33e77636
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/CACerts/A-Trust-nQual-03.cer
Binary files differ
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-Qual-01a.cer b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-Qual-01a.cer
new file mode 100644
index 00000000..f9fef65f
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-Qual-01a.cer
Binary files differ
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-Qual-02a.cer b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-Qual-02a.cer
new file mode 100644
index 00000000..36a442b8
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-Qual-02a.cer
Binary files differ
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-Qual-03a.cer b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-Qual-03a.cer
new file mode 100644
index 00000000..ab9e0cd7
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-Qual-03a.cer
Binary files differ
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-nQual-01a.cer b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-nQual-01a.cer
new file mode 100644
index 00000000..efa28178
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-nQual-01a.cer
Binary files differ
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-nQual-03.cer b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-nQual-03.cer
new file mode 100644
index 00000000..33e77636
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/A-Trust-nQual-03.cer
Binary files differ
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-SSL-03.cer b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-SSL-03.cer
new file mode 100644
index 00000000..ee859434
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-SSL-03.cer
@@ -0,0 +1,26 @@
+-----BEGIN CERTIFICATE-----
+MIIEdzCCA1+gAwIBAgIDAmU4MA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R
+dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTA2MDgxNjIyMDAw
+MFoXDTE2MDgxNjIyMDAwMFowgYcxCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy
+dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52
+ZXJrZWhyIEdtYkgxFjAUBgNVBAsMDWEtc2lnbi1TU0wtMDMxFjAUBgNVBAMMDWEt
+c2lnbi1TU0wtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDMjPM6
+PqgdPBPV4Efudpytt2Y4GZJfjeRdZo5SCuULDvvL+23xxBWnR3scFvfE1ekHN/YK
+k+2/qhU2B2ntoSNJSyDchNM8YPc9Lx67zZyhQTZgbBzh3IZAVb/hwuRRRV68JCBj
+r3r6v7IbwjH5XcVISdB4szx0z93aAQyKW9QkV+tD5a1vWFETvdHsZeVmDzfqcdsG
+AznPJw+9HrImCsswCWYUgPcFRkPNjj2r2NoyckVN781aWmNTAqJPf/Ckj9l9pUIt
+Vjhy8XNJW4iVDBkkykBXcGSkIau0ypJrRjsD1jKqUTIRZ/y2HlyltmwWi8OuyBLd
+LaHDbjc0b6JmqoivAgMBAAGjgeMwgeAwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4E
+CgQIQD6h02K0A90wEwYDVR0jBAwwCoAIRGqVZ1V5EU8wDgYDVR0PAQH/BAQDAgEG
+MIGUBgNVHR8EgYwwgYkwgYaggYOggYCGfmxkYXA6Ly9sZGFwLmEtdHJ1c3QuYXQv
+b3U9QS1UcnVzdC1uUXVhbC0wMyxvPUEtVHJ1c3QsYz1BVD9jZXJ0aWZpY2F0ZXJl
+dm9jYXRpb25saXN0P2Jhc2U/b2JqZWN0Y2xhc3M9ZWlkQ2VydGlmaWNhdGlvbkF1
+dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEAHKlnV3R9sbXojtONugyazkZCEzmC
+nZF1Dz4cOL0vPzzvS8MVWtG43zAgVI1NT/0ETSWsXD3YfzRi+f+/CxrGn0gwZX2t
+VGx+Z9w5ufiy1vuhxDUPmpos1TbJ4Wv3Une0E7iuHmNLg5qVlKeHWpcU8t1Y0nCt
+eRz34Qm87AVAykta33XST1fYvGoPKsDtn3qx9ye/pcbDvWjPwmqF2UUoql+d5hmJ
+Umgzwezqk4I+FS98BrnaPgC5UVFHg+yUjiUDLjYy7UvDZ5Led6kkLXuzVhQolLvr
+KTrGp5k42PG2MMkw8f6GMF/6yePXgzFMCRN8ReR7J5Htv33SytLRmFRd8g==
+-----END CERTIFICATE-----
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-03.cer b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-03.cer
new file mode 100644
index 00000000..7e67be95
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-03.cer
@@ -0,0 +1,27 @@
+-----BEGIN CERTIFICATE-----
+MIIEgzCCA2ugAwIBAgIDAarsMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R
+dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTA1MTExMzIzMDAw
+MFoXDTE1MTExMzIzMDAwMFowgZMxCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy
+dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52
+ZXJrZWhyIEdtYkgxHDAaBgNVBAsME2Etc2lnbi1jb3Jwb3JhdGUtMDMxHDAaBgNV
+BAMME2Etc2lnbi1jb3Jwb3JhdGUtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
+ggEKAoIBAQCp44qY+AiVXlcnHoKvch9s3ujoWFNktvcteIPwK7s0mb/uxTUW9UIF
+Die9n3AbyTsJE6R3nZYSJVHHi+1DKD72/WEo/B5NOOtd6KUMfJgca1tDmcsIwhFn
+82qkZrbNQwdIIdLe6+nDmjd9UBIaKv7yy1kq20jh09HOK3/bWhafVQE7EAgDfNrn
+8f0JfnnF0EA/La5kkg878L22fh9lRzt8H21THqJPtK4/e9SttjrJnPhFk2/MjAGS
+uaDufG6BV5Hnn7klR5qm5q32ypleLA6Zi4m9jRCVtPd4jRPYM40XpRkrJuFw+lxp
+rejfEZt/SRh1eQXiXDUgtgX8OaIylH9pAgMBAAGjgeMwgeAwDwYDVR0TAQH/BAUw
+AwEB/zARBgNVHQ4ECgQIQj75YZ1a5XIwEwYDVR0jBAwwCoAIRGqVZ1V5EU8wDgYD
+VR0PAQH/BAQDAgEGMIGUBgNVHR8EgYwwgYkwgYaggYOggYCGfmxkYXA6Ly9sZGFw
+LmEtdHJ1c3QuYXQvb3U9QS1UcnVzdC1uUXVhbC0wMyxvPUEtVHJ1c3QsYz1BVD9j
+ZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0P2Jhc2U/b2JqZWN0Y2xhc3M9ZWlkQ2Vy
+dGlmaWNhdGlvbkF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOCAQEARu7e1SyBRjlA
+g/thtFwtKQRvopTZKWj2LWpEdvPvwThOvf8Depnas+ly5af8r8YzsqJzfX3XWvhN
+qOOI24g5FmXfCUTq/kbtaeTq/AqV94793IJfcilPnpMOEHMqXNDiRUoAgR/9EVj8
+mDVvL2lLlJzeAltqOD5Bi9QwguaD2/3/E5ymFnqkf1dnlXbo8AhcwPEzReNKn1eM
+Ilg4FwP1bP0HUK3Fyz1UQ/Hncg+MS7c+SkjpNEd4sH7/GdxuQs5Sk7IRwot1+sbX
+3CkkPhSqiUzig9raxJYrtbb2kyiUO8+d5HzRyoP4BNzsdZdPc0gDYweXg5qarHOQ
+16IEOtBmKg==
+-----END CERTIFICATE-----
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-light-01a.cer b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-light-01a.cer
new file mode 100644
index 00000000..0c68e593
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-light-01a.cer
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIEJjCCAw6gAwIBAgIDAOJEMA0GCSqGSIb3DQEBBQUAMFUxCzAJBgNVBAYTAkFUMRAwDgYDVQQK
+EwdBLVRydXN0MRkwFwYDVQQLExBBLVRydXN0LW5RdWFsLTAxMRkwFwYDVQQDExBBLVRydXN0LW5R
+dWFsLTAxMB4XDTA0MTEzMDIzMDAwMFoXDTA4MTEzMDIzMDAwMFowgZ8xCzAJBgNVBAYTAkFUMUgw
+RgYDVQQKEz9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0
+ZW52ZXJrZWhyIEdtYkgxIjAgBgNVBAsTGWEtc2lnbi1jb3Jwb3JhdGUtbGlnaHQtMDExIjAgBgNV
+BAMTGWEtc2lnbi1jb3Jwb3JhdGUtbGlnaHQtMDEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
+AoIBAQDGC65v8rni63DojEBriynPwRqNCp14/SkN5ROkTUGNvLSabfSJV4PKGLTzasPAaChwX0g/
+kebahFM3R7nIyeVx2YB8VRvC4I/spP/mCs5+6pf1N+6Kiq4NcswgNBBfqAteaQIylBMy6HDkjoXY
+X/c+SxjyrqAkeZCK+SHMOraXCO1PZHWbYwleKXf4R2Z6ayEfJ2XWeVuqqon76WHp/POI0RADBchA
+6Vm1ROzSAHz39bay1TZunQXSs3VQ9cE3uQPjN+80efmf0ZgNF0sXsDTssoZg2feTANSOkTGM1bMC
+5xe1hWFL8MZNe4yZ+NSgFN2fofb8BPvyQAW0no2PNA6PAgMBAAGjgbMwgbAwDwYDVR0TAQH/BAUw
+AwEB/zARBgNVHQ4ECgQITp5/1C/JHx8wEwYDVR0jBAwwCoAITlnOxwIyhzAwDgYDVR0PAQH/BAQD
+AgEGMGUGA1UdHwReMFwwWqBYoFaGVGxkYXA6Ly9sZGFwLmEtdHJ1c3QuYXQvb3U9QS1UcnVzdC1u
+UXVhbC0wMSxvPUEtVHJ1c3QsYz1BVD9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0PzANBgkqhkiG
+9w0BAQUFAAOCAQEAOtuz2GqnTibk/poCLrdYKpZSrLyfWFsJJpfBYA9HMasnfpJBCHgRHJud6DAO
+xD900Vhmwy66D8dqsN3+fR8Bx8ZMKspnFN1B2Wz7LWOxMaKqP3JolJ/oVwzJRm0afcUMAfAumkc5
+Yqu0nC5qCF9zYY9YbJklh84uEzEg9j85kuRBHOCUc+5MVrnv7WPbirx6c95YFqXBQ0arA5QE9zYq
+MDO8aUYPOWEHgtrVI+kMwELYHqLDX7i9VqsXhgFPeVz1wIV7s/i3budGeHMS6hjnyIc30FqM7CTY
+fcvqVNZliErbjD1k1W1gMgvjLJowNvQC0W7K9/yoQhwTqtNMR4WZwA==
+-----END CERTIFICATE-----
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-light-02a.cer b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-light-02a.cer
new file mode 100644
index 00000000..c300891d
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-light-02a.cer
@@ -0,0 +1,27 @@
+-----BEGIN CERTIFICATE-----
+MIIEizCCA3OgAwIBAgIDAOSoMA0GCSqGSIb3DQEBBQUAMIGLMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1
+YWwtMDIxGDAWBgNVBAMMD0EtVHJ1c3QtUXVhbC0wMjAeFw0wNDEyMTQyMzAwMDBa
+Fw0xNDEyMTMyMzAwMDBaMIGfMQswCQYDVQQGEwJBVDFIMEYGA1UECgw/QS1UcnVz
+dCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy
+a2VociBHbWJIMSIwIAYDVQQLDBlhLXNpZ24tY29ycG9yYXRlLWxpZ2h0LTAyMSIw
+IAYDVQQDDBlhLXNpZ24tY29ycG9yYXRlLWxpZ2h0LTAyMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAk6V4oEauvXgEICqgjTbGHaiDhBVo2nosX23osoKM
+LTkkO/nOCgpdCYpLKgURxwrgHgVh9XT99yxhy6lDwt2rASajj0sQ1fY5BmWVyrXS
+dQ78ISMPb73XaG4M8H7PJFcsVEo9n8veVQwnMY5mSWy0r1IO8n93Bjbmmi4Zt8oS
+p9olWo5/8ByYW8S/AKZuQx+q+bFJv7geuApVjK2iVFe8yQqHhAgDsAsDlMvxDAQ/
+vhrGwHRv8N3sLsjirnbf5S2dGLDjASOMUFvwfLQd7gHH7PV37Xa+aQqa97eE6O4O
+sIhcGRYhoLk/tWTBDapcgHJ0yTtrftuwORVteLUAy0gBNwIDAQABo4HhMIHeMA8G
+A1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECEkcWDpP6A0DMBMGA1UdIwQMMAqACEI9
+KySmwUXOMA4GA1UdDwEB/wQEAwIBBjCBkgYDVR0fBIGKMIGHMIGEoIGBoH+GfWxk
+YXA6Ly9sZGFwLmEtdHJ1c3QuYXQvb3U9QS1UcnVzdC1RdWFsLTAyLG89QS1UcnVz
+dCxjPUFUP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3Q/YmFzZT9vYmplY3RjbGFz
+cz1laWRDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5MA0GCSqGSIb3DQEBBQUAA4IBAQBH
+opWG7LKmPBvuGjZnRV4KGKzzUYVuxSRS1E0VIUPbVLf5xW2r5uUpR8ud5EpiPrcw
+k6K0dzu2Vb4ZbMIP+6J16S/0qvTp/3A/3q87+nJ+ot+IT8GZFJfSw18th2WmZdzR
+ShbM6sgViPtGsFROCdWeiHl248w2+zG+09sf8Bu3UyvwLRAiiKaxuwVdQ9kc0TL3
+gvv+K5eisWWthQOX2IF2jGSEqoAVwfHhl7bc9Vt7XnJSpQFebHnsIVuV4Mv6w4ww
+86hQPCLLvvV7wWDiBQ8l2FWneX0pNH3Wg+A1TRUoptc+pPDdpoP272MDm4fXyPKV
+7QgIaIK+gXNUj2GGt1K9
+-----END CERTIFICATE-----
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-light-03.cer b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-light-03.cer
new file mode 100644
index 00000000..2251ca22
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-light-03.cer
@@ -0,0 +1,27 @@
+-----BEGIN CERTIFICATE-----
+MIIEjzCCA3egAwIBAgIDAartMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5R
+dWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5RdWFsLTAzMB4XDTA1MTExMzIzMDAw
+MFoXDTE1MTExMzIzMDAwMFowgZ8xCzAJBgNVBAYTAkFUMUgwRgYDVQQKDD9BLVRy
+dXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0ZW52
+ZXJrZWhyIEdtYkgxIjAgBgNVBAsMGWEtc2lnbi1jb3Jwb3JhdGUtbGlnaHQtMDMx
+IjAgBgNVBAMMGWEtc2lnbi1jb3Jwb3JhdGUtbGlnaHQtMDMwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQC359oitbHkkEgdErRPeBdkcYRK2DLdxfcnn+SI
+umSEYzWVscRTchPKSzb7f1a6EHPbB5WZsGJaUDX9KfTqsJNMo+7bASKk3gsLVxNZ
+qY2t2G+y8HvREYYejDOIzjAkcBQrt+nvuBUlGYVJQjEuyAn18f2vG0Y3VNvZFGKn
+PK8AVycUMk0Uw21RbK3vX5tbbPgQ/kcZkN4czi5VHepMvf6hAwwLoJj+KL9zxm8j
+yPK88qCBKAjMNCpZKsEhyanw1CjYbVmHs45Q5W6FBtqDcS6Iq4mC6TtUPGtCTuoH
+7/JLuhEp075ohp87v3fSlzeLJjBpkUDP9U8Tv7l2euD0t1UVAgMBAAGjgeMwgeAw
+DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIQZFpHL+t2JgwEwYDVR0jBAwwCoAI
+RGqVZ1V5EU8wDgYDVR0PAQH/BAQDAgEGMIGUBgNVHR8EgYwwgYkwgYaggYOggYCG
+fmxkYXA6Ly9sZGFwLmEtdHJ1c3QuYXQvb3U9QS1UcnVzdC1uUXVhbC0wMyxvPUEt
+VHJ1c3QsYz1BVD9jZXJ0aWZpY2F0ZXJldm9jYXRpb25saXN0P2Jhc2U/b2JqZWN0
+Y2xhc3M9ZWlkQ2VydGlmaWNhdGlvbkF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC
+AQEADTRIaQtPwoPS6/TpyBhOw4wAHk/RM4gkLT76URPY2sUHihxqy+8qEElN+f5l
+I61myCP3IFTClflcHVR1QCoMg0ZI5/EcQTI8Dgd5iQkXuVjh3wCj87Ka2Tu7d1K+
+i9VJ4BR/ph/qmPKR7Lx/PtATw/vWo4k2rbt5o1QwixZ7CPt+BF9xCaAC4uL0bB0M
+9M3i9W2ePmqX6WIB3jMkT9FQC0KihPPfw/17KddNi4rFMMEiTyKvJTtTqDnIAwWW
+TqsL1G7oxMMtnnYaKWMQ6gQiOiRzCY7efcAi/3YwUX6ULW5zxqapNs1vqEbSGsQE
+l1eFl67HBZHYAPdoHGUnZF0KaQ==
+-----END CERTIFICATE-----
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-medium-01a.cer b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-medium-01a.cer
new file mode 100644
index 00000000..2d7f1a03
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-medium-01a.cer
@@ -0,0 +1,21 @@
+-----BEGIN CERTIFICATE-----
+MIIEKDCCAxCgAwIBAgIDAOKKMA0GCSqGSIb3DQEBBQUAMFUxCzAJBgNVBAYTAkFUMRAwDgYDVQQK
+EwdBLVRydXN0MRkwFwYDVQQLExBBLVRydXN0LW5RdWFsLTAxMRkwFwYDVQQDExBBLVRydXN0LW5R
+dWFsLTAxMB4XDTA0MTIwNTIzMDAwMFoXDTA4MTEzMDIzMDAwMFowgaExCzAJBgNVBAYTAkFUMUgw
+RgYDVQQKEz9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0
+ZW52ZXJrZWhyIEdtYkgxIzAhBgNVBAsTGmEtc2lnbi1jb3Jwb3JhdGUtbWVkaXVtLTAxMSMwIQYD
+VQQDExphLXNpZ24tY29ycG9yYXRlLW1lZGl1bS0wMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
+AQoCggEBANEbZyIMIXZYBjTj/+3TrNGssRKNNdTedQlWB3vJQWLzeG89Kzmhy1WDX8IqDrMtvpXH
+5w6urK3ZT7HGu2Jldrib8rkEOdE9+uNGRtkP8Kuz//CvdXCbIDvBLqgvWn9a3Sl/rUicPqKwcEcN
+bP2Q0iU6NvvALmoqs93PymfTZlkGOwzUe+O88huXkauGWT/DkJd4JYDNJ0wlaGrJa+OorT4Izk1J
+EipqqedUjsAj4Gq3SKrZKG/H/CkoH9uWTzrzFgg8zQhCES4AClo84XVk//EIv3ABDw4hr+lqV1nF
+eXch9o4mLIe5u045471YLJLmyuCPDopb8U2VUoyldpMx+Y8CAwEAAaOBszCBsDAPBgNVHRMBAf8E
+BTADAQH/MBEGA1UdDgQKBAhOuHKxmCmfZDATBgNVHSMEDDAKgAhOWc7HAjKHMDAOBgNVHQ8BAf8E
+BAMCAQYwZQYDVR0fBF4wXDBaoFigVoZUbGRhcDovL2xkYXAuYS10cnVzdC5hdC9vdT1BLVRydXN0
+LW5RdWFsLTAxLG89QS1UcnVzdCxjPUFUP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3Q/MA0GCSqG
+SIb3DQEBBQUAA4IBAQDaukYSeJVxWAh8QShqGqA6Plp9aXCTzwl9hE2gb+/xGPASo+NVQi/sUa0+
+bx29oSJaW6lKzdHQLAx4dwW9XTpJ+0mebB4fQfYHH0lGc1O4au/4O9k+C3SrD6x4WeY9k/SpUFu1
+qjzH+tjta81UWtU7Jve1BhckNwdOFx7cR8fdW+pUQSDV9XnPJfyb+gb9KWhvX+XAbgJoXW1HjJOO
+P5sx6mFhMb3UqAfKQVoAuGbl4+uxIThBTqpICkaaD8WLdukqQjomUMDRbWIf6SblPuOEpPi1G/WM
+qkTkpqX77Wkj08QY/yj5DDrsYJ5NymnWvu7jcoxCFCKvEQ8Q4g7AYKnG
+-----END CERTIFICATE-----
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-medium-02a.cer b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-medium-02a.cer
new file mode 100644
index 00000000..194d4d7c
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/certStore/a-sign-corporate-medium-02a.cer
@@ -0,0 +1,27 @@
+-----BEGIN CERTIFICATE-----
+MIIEjTCCA3WgAwIBAgIDAOSpMA0GCSqGSIb3DQEBBQUAMIGLMQswCQYDVQQGEwJB
+VDFIMEYGA1UECgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBp
+bSBlbGVrdHIuIERhdGVudmVya2VociBHbWJIMRgwFgYDVQQLDA9BLVRydXN0LVF1
+YWwtMDIxGDAWBgNVBAMMD0EtVHJ1c3QtUXVhbC0wMjAeFw0wNDEyMTQyMzAwMDBa
+Fw0xNDEyMTMyMzAwMDBaMIGhMQswCQYDVQQGEwJBVDFIMEYGA1UECgw/QS1UcnVz
+dCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy
+a2VociBHbWJIMSMwIQYDVQQLDBphLXNpZ24tY29ycG9yYXRlLW1lZGl1bS0wMjEj
+MCEGA1UEAwwaYS1zaWduLWNvcnBvcmF0ZS1tZWRpdW0tMDIwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQCuaTBb6rHd5JZqAdvpmGIl5ne0Hg6GbpJvBeCI
+U6l9Rs8ebMY6aIS++qJOE9rnJHdfZNzLzduuoWEzEuwm9a/azQThM+eT+xlG/Vcf
+NuOQTTjAuXHLvYQ7WxSrBIT/kmAyqJgq/DEPvdX4jmCtVkuZ1gbxYIChLOVBWkVC
+FCK49BuXECtNy5fzK/GyfouZOVoQgiQ1YfecqzibcwO0t+f68Pvp/s6HESAH5tXY
+PdENDw4c/W/qKaeR87jPq98AJ8Lr4bmjWLjK8/ITtGglnJy8osFz22oR7f6fbWl6
+5LdhJ3giM68WEabQcZkw8cx3RDOzbnL2Kn+PVNHHyp3Wh849AgMBAAGjgeEwgd4w
+DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISoLnpz/+q98wEwYDVR0jBAwwCoAI
+Qj0rJKbBRc4wDgYDVR0PAQH/BAQDAgEGMIGSBgNVHR8EgYowgYcwgYSggYGgf4Z9
+bGRhcDovL2xkYXAuYS10cnVzdC5hdC9vdT1BLVRydXN0LVF1YWwtMDIsbz1BLVRy
+dXN0LGM9QVQ/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdD9iYXNlP29iamVjdGNs
+YXNzPWVpZENlcnRpZmljYXRpb25BdXRob3JpdHkwDQYJKoZIhvcNAQEFBQADggEB
+ABqg1oRs/TZ0hJLJRV/xJglFzgn2fDAXeoVvWnAE09F1d0n+ZorKAKbMfiZ2CuKs
+M0AhU23/5zM90DdrtYWXpa+P8ONALZtHJIqGfVuRKYJq7jY5TpE3yRkTcrp47smp
+WqTwUgG+0aBeU9m+ZtGUFOsBkq+MudD8IZGc7VcLd1n4ltND9ITjX20hu01ju56c
+YC69vFa5hmIccXg/Q3dGEV5Amx8MTQJluG3QvqBOY74yrAFICvK1zsvu+vOGvJQj
+i+PxKlbQdehrV82VDxyfSjpEUADWMGRfE5vg4YBGgfRosh4w7a6ThD2LMLFPmIhy
+P6+VGUBCm2tMDDOo9DVkXFs=
+-----END CERTIFICATE-----
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/testCerts/www.a-trust.at.der b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/testCerts/www.a-trust.at.der
new file mode 100644
index 00000000..61ce8dff
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/conf/certs/testCerts/www.a-trust.at.der
Binary files differ
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/createxmlsignaturerequest/CreateXMLSignatureRequest.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/createxmlsignaturerequest/CreateXMLSignatureRequest.xml
new file mode 100644
index 00000000..e8622526
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/createxmlsignaturerequest/CreateXMLSignatureRequest.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sl:CreateXMLSignatureRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <sl:KeyboxIdentifier>CertifiedKeypair</sl:KeyboxIdentifier>
+ <sl:DataObjectInfo Structure="enveloping">
+ <sl:DataObject>
+ <sl:XMLContent>Von der Signatur umschlossene Daten.</sl:XMLContent>
+ </sl:DataObject>
+ <sl:TransformsInfo>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>text/plain</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ </sl:DataObjectInfo>
+ <sl:SignatureInfo>
+ <sl:SignatureEnvironment Reference="http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20040514/tutorial/examples/interface/common/XMLDocument.withSchemaHint.xml"/>
+ <sl:SignatureLocation Index="4" xmlns:doc="urn:document">/doc:XMLDocument</sl:SignatureLocation>
+ <sl:Supplement>
+ <sl:Content Reference="urn:XMLDocument.xsd">
+ <sl:LocRefContent>http://www.buergerkarte.at/konzept/securitylayer/spezifikation/20040514/tutorial/examples/interface/common/XMLDocument.xsd</sl:LocRefContent>
+ </sl:Content>
+ </sl:Supplement>
+ </sl:SignatureInfo>
+</sl:CreateXMLSignatureRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/Cert.p12 b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/Cert.p12
new file mode 100644
index 00000000..7d42c4b3
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/Cert.p12
Binary files differ
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObject1.bin b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObject1.bin
new file mode 100644
index 00000000..34cace45
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObject1.bin
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<doc:XMLDocument xmlns:doc="urn:document" xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:document urn:XMLDocument.xsd">
+ <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph>
+ <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument.
+Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
+</doc:XMLDocument> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObject1.txt b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObject1.txt
new file mode 100644
index 00000000..7448a1e3
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObject1.txt
@@ -0,0 +1 @@
+Ich bin ein einfacher Text. \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObject1.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObject1.xml
new file mode 100644
index 00000000..92a106b7
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObject1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<doc:XMLDocument xmlns:doc="urn:document" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:document urn:XMLDocument.xsd">
+ <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph>
+ <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument.
+Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
+</doc:XMLDocument> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Base64Content_1.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Base64Content_1.xml
new file mode 100644
index 00000000..a76308ae
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Base64Content_1.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sl:CreateXMLSignatureRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <sl:DataObjectInfo Structure="enveloping">
+ <sl:DataObject>
+ <sl:Base64Content>SWNoIGJpbiBlaW4gZWluZmFjaGVyIFRleHQu</sl:Base64Content>
+ </sl:DataObject>
+ <sl:TransformsInfo>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>text/plain</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ </sl:DataObjectInfo>
+</sl:CreateXMLSignatureRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Detached_1.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Detached_1.xml
new file mode 100644
index 00000000..72e16347
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Detached_1.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sl:CreateXMLSignatureRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <sl:DataObjectInfo Structure="detached">
+ <sl:DataObject Reference=""/>
+ <sl:TransformsInfo>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>text/xml</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ </sl:DataObjectInfo>
+</sl:CreateXMLSignatureRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Detached_Base64Content.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Detached_Base64Content.xml
new file mode 100644
index 00000000..61fb446d
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Detached_Base64Content.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sl:CreateXMLSignatureRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <sl:DataObjectInfo Structure="detached">
+ <sl:DataObject Reference="testlocal:DataObject1.xml">
+ <sl:Base64Content>SWNoIGJpbiBlaW4gZWluZmFjaGVyIFRleHQu</sl:Base64Content>
+ </sl:DataObject>
+ <sl:TransformsInfo>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>text/xml</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ </sl:DataObjectInfo>
+</sl:CreateXMLSignatureRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Detached_LocRefContent.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Detached_LocRefContent.xml
new file mode 100644
index 00000000..75f45ff0
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Detached_LocRefContent.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sl:CreateXMLSignatureRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <sl:DataObjectInfo Structure="detached">
+ <sl:DataObject Reference="http://example.com/path/filenameNoExt#fragmentNoExt">
+ <sl:LocRefContent>testlocal:DataObject1.bin</sl:LocRefContent>
+ </sl:DataObject>
+ <sl:TransformsInfo>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>application/octet-stream</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ </sl:DataObjectInfo>
+</sl:CreateXMLSignatureRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_LocRefContent_1.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_LocRefContent_1.xml
new file mode 100644
index 00000000..65bafc0c
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_LocRefContent_1.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sl:CreateXMLSignatureRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <sl:DataObjectInfo Structure="enveloping">
+ <sl:DataObject Reference="testlocal:DataObject1.xml"/>
+ <sl:TransformsInfo>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>text/xml</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ </sl:DataObjectInfo>
+</sl:CreateXMLSignatureRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_LocRefContent_2.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_LocRefContent_2.xml
new file mode 100644
index 00000000..a94f51b6
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_LocRefContent_2.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sl:CreateXMLSignatureRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <sl:DataObjectInfo Structure="enveloping">
+ <sl:DataObject>
+ <sl:LocRefContent>testlocal:DataObject1.bin</sl:LocRefContent>
+ </sl:DataObject>
+ <sl:TransformsInfo>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>application/octet-stream</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ </sl:DataObjectInfo>
+</sl:CreateXMLSignatureRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Reference_1.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Reference_1.xml
new file mode 100644
index 00000000..7bcb5113
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_Reference_1.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sl:CreateXMLSignatureRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <sl:DataObjectInfo Structure="enveloping">
+ <sl:DataObject>
+ <sl:LocRefContent>testlocal:DataObject1.txt</sl:LocRefContent>
+ </sl:DataObject>
+ <sl:TransformsInfo>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>text/plain</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ </sl:DataObjectInfo>
+</sl:CreateXMLSignatureRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_XMLContent_1.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_XMLContent_1.xml
new file mode 100644
index 00000000..2adda980
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_XMLContent_1.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sl:CreateXMLSignatureRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <sl:DataObjectInfo Structure="enveloping">
+ <sl:DataObject>
+ <sl:XMLContent>I am a simple <funny>funny</funny> text.</sl:XMLContent>
+ </sl:DataObject>
+ <sl:TransformsInfo>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>text/xml</sl:MimeType>
+ <sl:Description>I am a fancy description.</sl:Description>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ </sl:DataObjectInfo>
+</sl:CreateXMLSignatureRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_XMLContent_2.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_XMLContent_2.xml
new file mode 100644
index 00000000..cad96fc8
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/DataObjectInfo_XMLContent_2.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sl:CreateXMLSignatureRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <sl:DataObjectInfo Structure="enveloping">
+ <sl:DataObject>
+ <sl:XMLContent>I am a simple <funny>funny</funny> text.</sl:XMLContent>
+ </sl:DataObject>
+ <sl:TransformsInfo>
+ <dsig:Transforms xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <dsig:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"></dsig:Transform>
+ </dsig:Transforms>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>text/xml</sl:MimeType>
+ <sl:Description>I am a fancy description.</sl:Description>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ </sl:DataObjectInfo>
+</sl:CreateXMLSignatureRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/Document.dtd b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/Document.dtd
new file mode 100644
index 00000000..b645cef9
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/Document.dtd
@@ -0,0 +1,3 @@
+<!ELEMENT XMLDocument (#PCDATA | Paragraph)*>
+<!ELEMENT Paragraph (#PCDATA)>
+<!ATTLIST Paragraph ParaId CDATA #IMPLIED>
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureEnvironment1.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureEnvironment1.xml
new file mode 100644
index 00000000..91fd7ccb
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureEnvironment1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<doc:XMLDocument xmlns:doc="urn:document" xmlns="http://reference.e-government.gv.at/namespace/moa/20020822#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:document urn:XMLDocument.xsd">
+ <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph>
+ <doc:Paragraph ParaId="Para2">Und ich bin der zweite Absatz in diesem Dokument.
+Ich habe weiters ein eigenens ID-Attribut bekommen.</doc:Paragraph>
+</doc:XMLDocument>
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Base64_1.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Base64_1.xml
new file mode 100644
index 00000000..dac81be7
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Base64_1.xml
@@ -0,0 +1,23 @@
+<!--
+
+SignatureEnvironment:
+
+<?xml version="1.0" encoding="UTF-8"?>
+<doc:XMLDocument xmlns:doc="urn:document">
+ <doc:Paragraph>Ich bin der erste Absatz in diesem Dokument.</doc:Paragraph>
+ <doc:Paragraph>Und ich bin der zweite Absatz in diesem Dokument.</doc:Paragraph>
+</doc:XMLDocument>
+
+ -->
+<sl:CreateXMLSignatureRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <sl:SignatureInfo>
+ <sl:SignatureEnvironment>
+ <sl:Base64Content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxkb2M6WE1MRG9jdW1lbnQg
+eG1sbnM6ZG9jPSJ1cm46ZG9jdW1lbnQiPg0KICA8ZG9jOlBhcmFncmFwaD5JY2ggYmluIGRlciBl
+cnN0ZSBBYnNhdHogaW4gZGllc2VtIERva3VtZW50LjwvZG9jOlBhcmFncmFwaD4NCiAgPGRvYzpQ
+YXJhZ3JhcGg+VW5kIGljaCBiaW4gZGVyIHp3ZWl0ZSBBYnNhdHogaW4gZGllc2VtIERva3VtZW50
+LjwvZG9jOlBhcmFncmFwaD4NCjwvZG9jOlhNTERvY3VtZW50Pg0K</sl:Base64Content>
+ </sl:SignatureEnvironment>
+ <sl:SignatureLocation xmlns:doc="urn:document" Index="2">/doc:XMLDocument</sl:SignatureLocation>
+ </sl:SignatureInfo>
+</sl:CreateXMLSignatureRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Base64_2.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Base64_2.xml
new file mode 100644
index 00000000..7d8c7c01
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Base64_2.xml
@@ -0,0 +1,18 @@
+<sl:CreateXMLSignatureRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <sl:SignatureInfo>
+ <sl:SignatureEnvironment>
+ <sl:Base64Content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjwhRE9DVFlQRSBYTUxEb2N1
+bWVudCBTWVNURU0gInVybjpEb2N1bWVudC5kdGQiPg0KPFhNTERvY3VtZW50Pg0KICAgIDxQYXJh
+Z3JhcGg+SWNoIGJpbiBkZXIgZXJzdGUgQWJzYXR6IGluIGRpZXNlbSBEb2t1bWVudC48L1BhcmFn
+cmFwaD4NCiAgICA8UGFyYWdyYXBoIFBhcmFJZD0iUGFyYTIiPlVuZCBpY2ggYmluIGRlciB6d2Vp
+dGUgQWJzYXR6IGluIGRpZXNlbSBEb2t1bWVudC4NCiAgICBJY2ggaGFiZSB3ZWl0ZXJzIGVpbiBl
+aWdlbmVucyBJRC1BdHRyaWJ1dCBiZWtvbW1lbi48L1BhcmFncmFwaD4NCjwvWE1MRG9jdW1lbnQ+</sl:Base64Content>
+ </sl:SignatureEnvironment>
+ <sl:SignatureLocation xmlns:doc="urn:document" Index="2">/XMLDocument</sl:SignatureLocation>
+ <sl:Supplement>
+ <sl:Content Reference="urn:Document.dtd">
+ <sl:LocRefContent>testlocal:Document.dtd</sl:LocRefContent>
+ </sl:Content>
+ </sl:Supplement>
+ </sl:SignatureInfo>
+</sl:CreateXMLSignatureRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Base64_3.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Base64_3.xml
new file mode 100644
index 00000000..91425a93
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Base64_3.xml
@@ -0,0 +1,20 @@
+<sl:CreateXMLSignatureRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <sl:SignatureInfo>
+ <sl:SignatureEnvironment>
+ <sl:Base64Content>PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjwhRE9DVFlQRSBYTUxEb2N1
+bWVudCBTWVNURU0gInVybjpEb2N1bWVudC5kdGQiPg0KPFhNTERvY3VtZW50Pg0KICAgIDxQYXJh
+Z3JhcGg+SWNoIGJpbiBkZXIgZXJzdGUgQWJzYXR6IGluIGRpZXNlbSBEb2t1bWVudC48L1BhcmFn
+cmFwaD4NCiAgICA8UGFyYWdyYXBoIFBhcmFJZD0iUGFyYTIiPlVuZCBpY2ggYmluIGRlciB6d2Vp
+dGUgQWJzYXR6IGluIGRpZXNlbSBEb2t1bWVudC4NCiAgICBJY2ggaGFiZSB3ZWl0ZXJzIGVpbiBl
+aWdlbmVucyBJRC1BdHRyaWJ1dCBiZWtvbW1lbi48L1BhcmFncmFwaD4NCjwvWE1MRG9jdW1lbnQ+</sl:Base64Content>
+ </sl:SignatureEnvironment>
+ <sl:SignatureLocation xmlns:doc="urn:document" Index="2">/XMLDocument</sl:SignatureLocation>
+ <sl:Supplement>
+ <sl:Content Reference="urn:Document.dtd">
+ <sl:Base64Content>PCFFTEVNRU5UIFhNTERvY3VtZW50ICgjUENEQVRBIHwgUGFyYWdyYXBoKSo+DQo8IUVMRU1FTlQg
+UGFyYWdyYXBoICgjUENEQVRBKT4NCjwhQVRUTElTVCBQYXJhZ3JhcGggUGFyYUlkIENEQVRBICNJ
+TVBMSUVEPg==</sl:Base64Content>
+ </sl:Content>
+ </sl:Supplement>
+ </sl:SignatureInfo>
+</sl:CreateXMLSignatureRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Reference_1.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Reference_1.xml
new file mode 100644
index 00000000..d1589f24
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_Reference_1.xml
@@ -0,0 +1,11 @@
+<sl:CreateXMLSignatureRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <sl:SignatureInfo>
+ <sl:SignatureEnvironment Reference="testlocal:SignatureEnvironment1.xml"/>
+ <sl:SignatureLocation Index="0" xmlns:doc="urn:document">id("Para2")</sl:SignatureLocation>
+ <sl:Supplement>
+ <sl:Content Reference="urn:XMLDocument.xsd">
+ <sl:LocRefContent>testlocal:XMLDocument.xsd</sl:LocRefContent>
+ </sl:Content>
+ </sl:Supplement>
+ </sl:SignatureInfo>
+</sl:CreateXMLSignatureRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_XMLContent_1.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_XMLContent_1.xml
new file mode 100644
index 00000000..79e91992
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/SignatureInfo_XMLContent_1.xml
@@ -0,0 +1,13 @@
+<sl:CreateXMLSignatureRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <sl:SignatureInfo>
+ <sl:SignatureEnvironment>
+ <sl:XMLContent>
+ <doc:Whole xmlns:doc="urn:document">
+ <doc:Part1>Text in Teil 1</doc:Part1>
+ <doc:Part2>Text in Teil 2</doc:Part2>
+ </doc:Whole>
+ </sl:XMLContent>
+ </sl:SignatureEnvironment>
+ <sl:SignatureLocation xmlns:doc="urn:document" Index="4">/doc:Whole</sl:SignatureLocation>
+ </sl:SignatureInfo>
+</sl:CreateXMLSignatureRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/TransformsInfo_1.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/TransformsInfo_1.xml
new file mode 100644
index 00000000..7631534e
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/TransformsInfo_1.xml
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<sl:CreateXMLSignatureRequest xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
+ xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#">
+ <sl:KeyboxIdentifier>SecureSignatureKeypair</sl:KeyboxIdentifier>
+ <sl:DataObjectInfo Structure="detached">
+ <sl:DataObject Reference=""/>
+ <sl:TransformsInfo>
+ <dsig:Transforms xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
+ <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
+ xmlns:pr="http://reference.e-government.gv.at/namespace/persondata/20020228#">
+ <xsl:template match="/" xmlns="http://www.w3.org/1999/xhtml">
+ <html>
+ <head>
+ <title>Signatur der Anmeldedaten</title>
+ <style type="text/css" media="screen">
+ .boldstyle { font-weight: bold; }
+ .italicstyle { font-style: italic; }
+ .annotationstyle { font-size: 0.8em; }
+ </style>
+ </head>
+ <body>
+ <h1>Signatur der Anmeldedaten</h1>
+ <p/>
+ <h4>Mit meiner elektronischen Signatur beantrage ich, <span
+ class="boldstyle">
+ <xsl:value-of select="//@Issuer"/>
+ </span>, geboren am <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,9,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,6,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,1,4)"
+ />, <xsl:if
+ test="//saml:Attribute[@AttributeName='OIDTextualDescription']"
+ > in der Rolle als <xsl:value-of
+ select="//saml:Attribute[@AttributeName='OIDTextualDescription']/saml:AttributeValue"
+ /> (OID***= <xsl:value-of
+ select="//saml:Attribute[@AttributeName='OID']/saml:AttributeValue"
+ />), </xsl:if> den Zugang zur gesicherten Anwendung. </h4>
+ <p/>
+ <h4>Datum und Uhrzeit: <xsl:value-of
+ select="substring(//@IssueInstant,9,2)"/>. <xsl:value-of
+ select="substring(//@IssueInstant,6,2)"/>. <xsl:value-of
+ select="substring(//@IssueInstant,1,4)"/>, <xsl:value-of
+ select="substring(//@IssueInstant,12,2)"/>:
+ <xsl:value-of select="substring(//@IssueInstant,15,2)"
+ />: <xsl:value-of select="substring(//@IssueInstant,18,2)"/>
+ </h4>
+ <xsl:if test="//saml:Attribute[@AttributeName='HPI']">
+ <h4>HPI(**): <xsl:value-of
+ select="//saml:Attribute[@AttributeName='HPI']/saml:AttributeValue"
+ /></h4>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='wbPK']">
+ <h4>wbPK(*): <xsl:value-of
+ select="//saml:Attribute[@AttributeName='wbPK']/saml:AttributeValue/pr:Identification/pr:Value"
+ /></h4>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='MandatorName']">
+ <hr/>
+ <h4>Ich bin weiters ermächtigt als <xsl:value-of
+ select="//saml:Attribute[@AttributeName='RepresentationType']/saml:AttributeValue/text()"
+ /> von <xsl:value-of
+ select="//saml:Attribute[@AttributeName='MandatorName']/saml:AttributeValue/text()"/>
+ <xsl:if
+ test="//saml:Attribute[@AttributeName='MandatorDateOfBirth']"
+ >, geboren am <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,9,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,6,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,1,4)"
+ />
+ </xsl:if>
+ <xsl:if
+ test="//saml:Attribute[@AttributeName='MandatorDomainIdentifier']"
+ >, <xsl:value-of
+ select="//saml:Attribute[@AttributeName='MandatorDomainIdentifier']/saml:AttributeValue/text()"
+ />
+ </xsl:if>, in deren Auftrag zu handeln. <xsl:if
+ test="//saml:Attribute[@AttributeName='MandatorWbpk']">
+ <h4>wbPK(*) des Vollmachtgebers: <xsl:value-of
+ select="//saml:Attribute[@AttributeName='MandatorWbpk']/saml:AttributeValue/text()"
+ /></h4>
+ </xsl:if>
+ </h4>
+ <p/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="//saml:Attribute[@AttributeName='OID']">
+ <p/>
+ <hr/>
+ </xsl:when>
+ <xsl:when test="//saml:Attribute[@AttributeName='HPI']">
+ <p/>
+ <hr/>
+ </xsl:when>
+ <xsl:when test="//saml:Attribute[@AttributeName='wbPK']">
+ <p/>
+ <hr/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:if test="//saml:Attribute[@AttributeName='wbPK']">
+ <div class="annotationstyle">(*) wbPK: Das <span
+ class="italicstyle">wirtschaftsbereichsspezifische
+ Personenkennzeichen</span> wird aus den jeweiligen
+ Stammzahlen des Bürgers und des Wirtschaftsunternehmens
+ berechnet und ermöglicht eine eindeutige Zuordnung des
+ Bürgers zum Wirtschaftsunternehmen.</div>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='HPI']">
+ <div class="annotationstyle">(**) HPI: Der <span
+ class="italicstyle">eHealth Professional
+ Identifier</span> wird aus den jeweiligen Stammzahlen
+ der Gesundheitsdiensteanbieterinnen /
+ Gesundheitsdiensteanbieter berechnet und ermöglicht eine
+ eindeutige Zuordnung der Gesundheitsdiensteanbieterin /
+ des Gesundheitsdiensteanbieters im
+ Gesundheitsbereich.</div>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='OID']">
+ <div class="annotationstyle">(***) OID: <span
+ class="italicstyle">Object Identifier</span> sind
+ standardisierte Objekt-Bezeichner und beschreiben
+ eindeutig die Rollen des GDA-Token Inhabers.</div>
+ </xsl:if>
+ </body>
+ </html>
+ </xsl:template>
+ </xsl:stylesheet>
+ </dsig:Transform>
+ <dsig:Transform
+ Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
+ </dsig:Transforms>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>application/xhtml+xml</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ <sl:TransformsInfo>
+ <dsig:Transforms xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
+ <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
+ xmlns:pr="http://reference.e-government.gv.at/namespace/persondata/20020228#">
+ <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
+ <xsl:template match="/" xmlns="http://www.w3.org/1999/xhtml">
+ <html>
+ <head>
+ <title>Signatur der Anmeldedaten</title>
+ </head>
+ <body>
+ <h1>Signatur der Anmeldedaten</h1>
+ <p/>
+ <h4>Mit meiner elektronischen Signatur beantrage ich, <b>
+ <xsl:value-of select="//@Issuer"/>
+ </b>, geboren am <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,9,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,6,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,1,4)"
+ />, <xsl:if
+ test="//saml:Attribute[@AttributeName='OIDTextualDescription']"
+ > in der Rolle als <xsl:value-of
+ select="//saml:Attribute[@AttributeName='OIDTextualDescription']/saml:AttributeValue"
+ /> (OID***= <xsl:value-of
+ select="//saml:Attribute[@AttributeName='OID']/saml:AttributeValue"
+ />), </xsl:if> den Zugang zur gesicherten Anwendung. </h4>
+ <p/>
+ <h4>Datum und Uhrzeit: <xsl:value-of
+ select="substring(//@IssueInstant,9,2)"/>. <xsl:value-of
+ select="substring(//@IssueInstant,6,2)"/>. <xsl:value-of
+ select="substring(//@IssueInstant,1,4)"/>, <xsl:value-of
+ select="substring(//@IssueInstant,12,2)"/>:
+ <xsl:value-of select="substring(//@IssueInstant,15,2)"
+ />: <xsl:value-of select="substring(//@IssueInstant,18,2)"/>
+ </h4>
+ <xsl:if test="//saml:Attribute[@AttributeName='HPI']">
+ <h4>HPI(**): <xsl:value-of
+ select="//saml:Attribute[@AttributeName='HPI']/saml:AttributeValue"
+ /></h4>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='wbPK']">
+ <h4>wbPK(*): <xsl:value-of
+ select="//saml:Attribute[@AttributeName='wbPK']/saml:AttributeValue/pr:Identification/pr:Value"
+ /></h4>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='MandatorName']">
+ <hr/>
+ <h4>Ich bin weiters ermächtigt als <xsl:value-of
+ select="//saml:Attribute[@AttributeName='RepresentationType']/saml:AttributeValue/text()"
+ /> von <xsl:value-of
+ select="//saml:Attribute[@AttributeName='MandatorName']/saml:AttributeValue/text()"/>
+ <xsl:if
+ test="//saml:Attribute[@AttributeName='MandatorDateOfBirth']"
+ >, geboren am <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,9,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,6,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,1,4)"
+ />
+ </xsl:if>
+ <xsl:if
+ test="//saml:Attribute[@AttributeName='MandatorDomainIdentifier']"
+ >, <xsl:value-of
+ select="//saml:Attribute[@AttributeName='MandatorDomainIdentifier']/saml:AttributeValue/text()"
+ />
+ </xsl:if>, in deren Auftrag zu handeln. <xsl:if
+ test="//saml:Attribute[@AttributeName='MandatorWbpk']">
+ <h4>wbPK(*) des Vollmachtgebers: <xsl:value-of
+ select="//saml:Attribute[@AttributeName='MandatorWbpk']/saml:AttributeValue/text()"
+ /></h4>
+ </xsl:if>
+ </h4>
+ <p/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="//saml:Attribute[@AttributeName='OID']">
+ <p/>
+ <hr/>
+ </xsl:when>
+ <xsl:when test="//saml:Attribute[@AttributeName='HPI']">
+ <p/>
+ <hr/>
+ </xsl:when>
+ <xsl:when test="//saml:Attribute[@AttributeName='wbPK']">
+ <p/>
+ <hr/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:if test="//saml:Attribute[@AttributeName='wbPK']">
+ <h6>(*) wbPK: Das <i>wirtschaftsbereichsspezifische
+ Personenkennzeichen</i> wird aus den jeweiligen
+ Stammzahlen des Bürgers und des Wirtschaftsunternehmens
+ berechnet und ermöglicht eine eindeutige Zuordnung des
+ Bürgers zum Wirtschaftsunternehmen.</h6>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='HPI']">
+ <h6>(**) HPI: Der <i>eHealth Professional Identifier</i>
+ wird aus den jeweiligen Stammzahlen der
+ Gesundheitsdiensteanbieterinnen /
+ Gesundheitsdiensteanbieter berechnet und ermöglicht eine
+ eindeutige Zuordnung der Gesundheitsdiensteanbieterin /
+ des Gesundheitsdiensteanbieters im
+ Gesundheitsbereich.</h6>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='OID']">
+ <h6>(***) OID: <i>Object Identifier</i> sind standardisierte
+ Objekt-Bezeichner und beschreiben eindeutig die Rollen
+ des GDA-Token Inhabers.</h6>
+ </xsl:if>
+ </body>
+ </html>
+ </xsl:template>
+ </xsl:stylesheet>
+ </dsig:Transform>
+ <dsig:Transform
+ Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
+ </dsig:Transforms>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>text/html</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ </sl:DataObjectInfo>
+ <sl:SignatureInfo>
+ <sl:SignatureEnvironment>
+ <sl:XMLContent>
+ <saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
+ xmlns:pr="http://reference.e-government.gv.at/namespace/persondata/20020228#"
+ MajorVersion="1" MinorVersion="0" AssertionID="any" Issuer="Klämens Örthäçké"
+ IssueInstant="2008-06-05T11:26:10+02:00">
+ <saml:AttributeStatement>
+ <saml:Subject>
+ <saml:NameIdentifier>https://demo.egiz.gv.at/exchange-moa-id-auth/</saml:NameIdentifier>
+ </saml:Subject>
+ <saml:Attribute AttributeName="wbPK"
+ AttributeNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#">
+ <saml:AttributeValue>
+ <pr:Identification>
+ <pr:Value>LTpz8VYzns2jrx0J8Gm/R/nAhxA=</pr:Value>
+ <pr:Type>urn:publicid:gv.at:wbpk+FN+TODO</pr:Type>
+ </pr:Identification>
+ </saml:AttributeValue>
+ </saml:Attribute>
+ <saml:Attribute AttributeName="OA"
+ AttributeNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#">
+ <saml:AttributeValue>https://apps.egiz.gv.at/urlaubsschein-frontend/moaid-login</saml:AttributeValue>
+ </saml:Attribute>
+ <saml:Attribute AttributeName="Geburtsdatum"
+ AttributeNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#">
+ <saml:AttributeValue>1971-11-10</saml:AttributeValue>
+ </saml:Attribute>
+ </saml:AttributeStatement>
+ </saml:Assertion>
+ </sl:XMLContent>
+ </sl:SignatureEnvironment>
+ <sl:SignatureLocation Index="2" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion">/saml:Assertion</sl:SignatureLocation>
+ </sl:SignatureInfo>
+</sl:CreateXMLSignatureRequest>
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/TransformsInfo_2.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/TransformsInfo_2.xml
new file mode 100644
index 00000000..f43dc61a
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/TransformsInfo_2.xml
@@ -0,0 +1,397 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<sl:CreateXMLSignatureRequest xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
+ xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#">
+ <sl:KeyboxIdentifier>SecureSignatureKeypair</sl:KeyboxIdentifier>
+ <sl:DataObjectInfo Structure="detached">
+ <sl:DataObject Reference=""/>
+ <sl:TransformsInfo>
+ <dsig:Transforms xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
+ <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
+ xmlns:pr="http://reference.e-government.gv.at/namespace/persondata/20020228#">
+ <xsl:template match="/" xmlns="http://www.w3.org/1999/xhtml">
+ <html>
+ <head>
+ <title>Signatur der Anmeldedaten</title>
+ <style type="text/css" media="screen">
+ .boldstyle { font-weight: bold; }
+ .italicstyle { font-style: italic; }
+ .annotationstyle { font-size: 0.8em; }
+ </style>
+ </head>
+ <body>
+ <h1>Signatur der Anmeldedaten</h1>
+ <p/>
+ <h4>Mit meiner elektronischen Signatur beantrage ich, <span
+ class="boldstyle">
+ <xsl:value-of select="//@Issuer"/>
+ </span>, geboren am <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,9,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,6,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,1,4)"
+ />, <xsl:if
+ test="//saml:Attribute[@AttributeName='OIDTextualDescription']"
+ > in der Rolle als <xsl:value-of
+ select="//saml:Attribute[@AttributeName='OIDTextualDescription']/saml:AttributeValue"
+ /> (OID***= <xsl:value-of
+ select="//saml:Attribute[@AttributeName='OID']/saml:AttributeValue"
+ />), </xsl:if> den Zugang zur gesicherten Anwendung. </h4>
+ <p/>
+ <h4>Datum und Uhrzeit: <xsl:value-of
+ select="substring(//@IssueInstant,9,2)"/>. <xsl:value-of
+ select="substring(//@IssueInstant,6,2)"/>. <xsl:value-of
+ select="substring(//@IssueInstant,1,4)"/>, <xsl:value-of
+ select="substring(//@IssueInstant,12,2)"/>:
+ <xsl:value-of select="substring(//@IssueInstant,15,2)"
+ />: <xsl:value-of select="substring(//@IssueInstant,18,2)"/>
+ </h4>
+ <xsl:if test="//saml:Attribute[@AttributeName='HPI']">
+ <h4>HPI(**): <xsl:value-of
+ select="//saml:Attribute[@AttributeName='HPI']/saml:AttributeValue"
+ /></h4>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='wbPK']">
+ <h4>wbPK(*): <xsl:value-of
+ select="//saml:Attribute[@AttributeName='wbPK']/saml:AttributeValue/pr:Identification/pr:Value"
+ /></h4>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='MandatorName']">
+ <hr/>
+ <h4>Ich bin weiters ermächtigt als <xsl:value-of
+ select="//saml:Attribute[@AttributeName='RepresentationType']/saml:AttributeValue/text()"
+ /> von <xsl:value-of
+ select="//saml:Attribute[@AttributeName='MandatorName']/saml:AttributeValue/text()"/>
+ <xsl:if
+ test="//saml:Attribute[@AttributeName='MandatorDateOfBirth']"
+ >, geboren am <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,9,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,6,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,1,4)"
+ />
+ </xsl:if>
+ <xsl:if
+ test="//saml:Attribute[@AttributeName='MandatorDomainIdentifier']"
+ >, <xsl:value-of
+ select="//saml:Attribute[@AttributeName='MandatorDomainIdentifier']/saml:AttributeValue/text()"
+ />
+ </xsl:if>, in deren Auftrag zu handeln. <xsl:if
+ test="//saml:Attribute[@AttributeName='MandatorWbpk']">
+ <h4>wbPK(*) des Vollmachtgebers: <xsl:value-of
+ select="//saml:Attribute[@AttributeName='MandatorWbpk']/saml:AttributeValue/text()"
+ /></h4>
+ </xsl:if>
+ </h4>
+ <p/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="//saml:Attribute[@AttributeName='OID']">
+ <p/>
+ <hr/>
+ </xsl:when>
+ <xsl:when test="//saml:Attribute[@AttributeName='HPI']">
+ <p/>
+ <hr/>
+ </xsl:when>
+ <xsl:when test="//saml:Attribute[@AttributeName='wbPK']">
+ <p/>
+ <hr/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:if test="//saml:Attribute[@AttributeName='wbPK']">
+ <div class="annotationstyle">(*) wbPK: Das <span
+ class="italicstyle">wirtschaftsbereichsspezifische
+ Personenkennzeichen</span> wird aus den jeweiligen
+ Stammzahlen des Bürgers und des Wirtschaftsunternehmens
+ berechnet und ermöglicht eine eindeutige Zuordnung des
+ Bürgers zum Wirtschaftsunternehmen.</div>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='HPI']">
+ <div class="annotationstyle">(**) HPI: Der <span
+ class="italicstyle">eHealth Professional
+ Identifier</span> wird aus den jeweiligen Stammzahlen
+ der Gesundheitsdiensteanbieterinnen /
+ Gesundheitsdiensteanbieter berechnet und ermöglicht eine
+ eindeutige Zuordnung der Gesundheitsdiensteanbieterin /
+ des Gesundheitsdiensteanbieters im
+ Gesundheitsbereich.</div>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='OID']">
+ <div class="annotationstyle">(***) OID: <span
+ class="italicstyle">Object Identifier</span> sind
+ standardisierte Objekt-Bezeichner und beschreiben
+ eindeutig die Rollen des GDA-Token Inhabers.</div>
+ </xsl:if>
+ </body>
+ </html>
+ </xsl:template>
+ </xsl:stylesheet>
+ </dsig:Transform>
+ <dsig:Transform
+ Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
+ </dsig:Transforms>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>application/xhtml+xml</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ <sl:TransformsInfo>
+ <dsig:Transforms xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+ <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
+ <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
+ xmlns:pr="http://reference.e-government.gv.at/namespace/persondata/20020228#">
+ <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
+ <xsl:template match="/" xmlns="http://www.w3.org/1999/xhtml">
+ <html>
+ <head>
+ <title>Signatur der Anmeldedaten</title>
+ </head>
+ <body>
+ <h1>Signatur der Anmeldedaten</h1>
+ <p/>
+ <h4>Mit meiner elektronischen Signatur beantrage ich, <b>
+ <xsl:value-of select="//@Issuer"/>
+ </b>, geboren am <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,9,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,6,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,1,4)"
+ />, <xsl:if
+ test="//saml:Attribute[@AttributeName='OIDTextualDescription']"
+ > in der Rolle als <xsl:value-of
+ select="//saml:Attribute[@AttributeName='OIDTextualDescription']/saml:AttributeValue"
+ /> (OID***= <xsl:value-of
+ select="//saml:Attribute[@AttributeName='OID']/saml:AttributeValue"
+ />), </xsl:if> den Zugang zur gesicherten Anwendung. </h4>
+ <p/>
+ <h4>Datum und Uhrzeit: <xsl:value-of
+ select="substring(//@IssueInstant,9,2)"/>. <xsl:value-of
+ select="substring(//@IssueInstant,6,2)"/>. <xsl:value-of
+ select="substring(//@IssueInstant,1,4)"/>, <xsl:value-of
+ select="substring(//@IssueInstant,12,2)"/>:
+ <xsl:value-of select="substring(//@IssueInstant,15,2)"
+ />: <xsl:value-of select="substring(//@IssueInstant,18,2)"/>
+ </h4>
+ <xsl:if test="//saml:Attribute[@AttributeName='HPI']">
+ <h4>HPI(**): <xsl:value-of
+ select="//saml:Attribute[@AttributeName='HPI']/saml:AttributeValue"
+ /></h4>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='wbPK']">
+ <h4>wbPK(*): <xsl:value-of
+ select="//saml:Attribute[@AttributeName='wbPK']/saml:AttributeValue/pr:Identification/pr:Value"
+ /></h4>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='MandatorName']">
+ <hr/>
+ <h4>Ich bin weiters ermächtigt als <xsl:value-of
+ select="//saml:Attribute[@AttributeName='RepresentationType']/saml:AttributeValue/text()"
+ /> von <xsl:value-of
+ select="//saml:Attribute[@AttributeName='MandatorName']/saml:AttributeValue/text()"/>
+ <xsl:if
+ test="//saml:Attribute[@AttributeName='MandatorDateOfBirth']"
+ >, geboren am <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,9,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,6,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,1,4)"
+ />
+ </xsl:if>
+ <xsl:if
+ test="//saml:Attribute[@AttributeName='MandatorDomainIdentifier']"
+ >, <xsl:value-of
+ select="//saml:Attribute[@AttributeName='MandatorDomainIdentifier']/saml:AttributeValue/text()"
+ />
+ </xsl:if>, in deren Auftrag zu handeln. <xsl:if
+ test="//saml:Attribute[@AttributeName='MandatorWbpk']">
+ <h4>wbPK(*) des Vollmachtgebers: <xsl:value-of
+ select="//saml:Attribute[@AttributeName='MandatorWbpk']/saml:AttributeValue/text()"
+ /></h4>
+ </xsl:if>
+ </h4>
+ <p/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="//saml:Attribute[@AttributeName='OID']">
+ <p/>
+ <hr/>
+ </xsl:when>
+ <xsl:when test="//saml:Attribute[@AttributeName='HPI']">
+ <p/>
+ <hr/>
+ </xsl:when>
+ <xsl:when test="//saml:Attribute[@AttributeName='wbPK']">
+ <p/>
+ <hr/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:if test="//saml:Attribute[@AttributeName='wbPK']">
+ <h6>(*) wbPK: Das <i>wirtschaftsbereichsspezifische
+ Personenkennzeichen</i> wird aus den jeweiligen
+ Stammzahlen des Bürgers und des Wirtschaftsunternehmens
+ berechnet und ermöglicht eine eindeutige Zuordnung des
+ Bürgers zum Wirtschaftsunternehmen.</h6>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='HPI']">
+ <h6>(**) HPI: Der <i>eHealth Professional Identifier</i>
+ wird aus den jeweiligen Stammzahlen der
+ Gesundheitsdiensteanbieterinnen /
+ Gesundheitsdiensteanbieter berechnet und ermöglicht eine
+ eindeutige Zuordnung der Gesundheitsdiensteanbieterin /
+ des Gesundheitsdiensteanbieters im
+ Gesundheitsbereich.</h6>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='OID']">
+ <h6>(***) OID: <i>Object Identifier</i> sind standardisierte
+ Objekt-Bezeichner und beschreiben eindeutig die Rollen
+ des GDA-Token Inhabers.</h6>
+ </xsl:if>
+ </body>
+ </html>
+ </xsl:template>
+ </xsl:stylesheet>
+ </dsig:Transform>
+ <dsig:Transform
+ Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
+ </dsig:Transforms>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>text/html</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ <sl:TransformsInfo>
+ <dsig:Transforms> <!-- xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"-->
+ <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:pr="http://reference.e-government.gv.at/namespace/persondata/20020228#" exclude-result-prefixes="pr saml">
+ <xsl:output method="xml" xml:space="default"/>
+ <xsl:template match="/" xmlns="">
+ <text>
+ <xsl:text>Mit meiner elektronischen Signatur beantrage ich, </xsl:text>
+ <xsl:value-of select="//@Issuer"/>
+ <xsl:text>, geboren am </xsl:text>
+ <xsl:value-of select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,9,2)"/>
+ <xsl:text>.</xsl:text>
+ <xsl:value-of select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,6,2)"/>
+ <xsl:text>.</xsl:text>
+ <xsl:value-of select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,1,4)"/>
+ <xsl:text>, </xsl:text>
+ <xsl:if test="//saml:Attribute[@AttributeName='OIDTextualDescription']">
+ <xsl:text>in der Rolle als </xsl:text>
+ <xsl:value-of select="//saml:Attribute[@AttributeName='OIDTextualDescription']/saml:AttributeValue"/>
+ <xsl:text>(OID***= </xsl:text>
+ <xsl:value-of select="//saml:Attribute[@AttributeName='OID']/saml:AttributeValue"/>)
+ <xsl:text>, </xsl:text>
+ </xsl:if>
+ <xsl:text>den Zugang zur gesicherten Anwendung.</xsl:text>
+ <xsl:text>&#xa;&#xa;Datum und Uhrzeit: </xsl:text>
+ <xsl:value-of select="substring(//@IssueInstant,9,2)"/>
+ <xsl:text>.</xsl:text>
+ <xsl:value-of select="substring(//@IssueInstant,6,2)"/>
+ <xsl:text>.</xsl:text>
+ <xsl:value-of select="substring(//@IssueInstant,1,4)"/>
+ <xsl:text>, </xsl:text>
+ <xsl:value-of select="substring(//@IssueInstant,12,2)"/>
+ <xsl:text>:</xsl:text>
+ <xsl:value-of select="substring(//@IssueInstant,15,2)"/>
+ <xsl:text>:</xsl:text>
+ <xsl:value-of select="substring(//@IssueInstant,18,2)"/>
+
+ <xsl:if test="//saml:Attribute[@AttributeName='HPI']">
+ <xsl:text>&#xa;&#xa;HPI(**): </xsl:text>
+ <xsl:value-of select="//saml:Attribute[@AttributeName='HPI']/saml:AttributeValue"/>
+ </xsl:if>
+
+ <xsl:if test="//saml:Attribute[@AttributeName='wbPK']">
+ <xsl:text>&#xa;&#xa;wbPK(*): </xsl:text>
+ <xsl:value-of select="//saml:Attribute[@AttributeName='wbPK']/saml:AttributeValue/pr:Identification/pr:Value"/>
+ </xsl:if>
+
+ <xsl:if test="//saml:Attribute[@AttributeName='MandatorName']">
+ <xsl:text>&#xa;&#xa;Ich bin weiters ermächtigt als </xsl:text>
+ <xsl:value-of select="//saml:Attribute[@AttributeName='RepresentationType']/saml:AttributeValue/text()"/>
+ <xsl:text>von </xsl:text>
+ <xsl:value-of select="//saml:Attribute[@AttributeName='MandatorName']/saml:AttributeValue/text()"/>
+ <xsl:if test="//saml:Attribute[@AttributeName='MandatorDateOfBirth']">
+ <xsl:text>, geboren am </xsl:text>
+ <xsl:value-of select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,9,2)"/>
+ <xsl:text>.</xsl:text>
+ <xsl:value-of select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,6,2)"/>
+ <xsl:text>.</xsl:text>
+ <xsl:value-of select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,1,4)"/>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='MandatorDomainIdentifier']">
+ <xsl:text>,</xsl:text>
+ <xsl:value-of select="//saml:Attribute[@AttributeName='MandatorDomainIdentifier']/saml:AttributeValue/text()"/>
+ </xsl:if>
+ <xsl:text>, in deren Auftrag zu handeln.</xsl:text>
+
+ <xsl:if test="//saml:Attribute[@AttributeName='MandatorWbpk']">
+ <xsl:text>&#xa;&#xa;wbPK(*) des Vollmachtgebers: </xsl:text>
+ <xsl:value-of select="//saml:Attribute[@AttributeName='MandatorWbpk']/saml:AttributeValue/text()"/>
+ </xsl:if>
+ </xsl:if>
+
+ <xsl:if test="//saml:Attribute[@AttributeName='wbPK']">
+ <xsl:text>&#xa;&#xa;(*) wbPK: Das wirtschaftsbereichsspezifische Personenkennzeichen wird aus den jeweiligen Stammzahlen des Bürgers und des Wirtschaftsunternehmens berechnet und ermöglicht eine eindeutige Zuordnung des Bürgers zum Wirtschaftsunternehmen.</xsl:text>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='HPI']">
+ <xsl:text>&#xa;&#xa;(**) HPI: Der eHealth Professional Identifier wird aus den jeweiligen Stammzahlen der Gesundheitsdiensteanbieterinnen / Gesundheitsdiensteanbieter berechnet und ermöglicht eine eindeutige Zuordnung der Gesundheitsdiensteanbieterin / des Gesundheitsdiensteanbieters im Gesundheitsbereich.</xsl:text>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='OID']">
+ <xsl:text>&#xa;&#xa;(***) OID: Object Identifier sind standardisierte Objekt-Bezeichner und beschreiben eindeutig die Rollen des GDA-Token Inhabers.</xsl:text>
+ </xsl:if>
+ </text>
+ </xsl:template>
+ </xsl:stylesheet>
+ </dsig:Transform>
+ <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
+ <dsig:XPath>not(text())</dsig:XPath>
+ </dsig:Transform>
+ </dsig:Transforms>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>text/plain</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ </sl:DataObjectInfo>
+ <sl:SignatureInfo>
+ <sl:SignatureEnvironment>
+ <sl:XMLContent>
+ <saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
+ xmlns:pr="http://reference.e-government.gv.at/namespace/persondata/20020228#"
+ MajorVersion="1" MinorVersion="0" AssertionID="any" Issuer="Klämens Örthäçké"
+ IssueInstant="2008-06-05T11:26:10+02:00">
+ <saml:AttributeStatement>
+ <saml:Subject>
+ <saml:NameIdentifier>https://demo.egiz.gv.at/exchange-moa-id-auth/</saml:NameIdentifier>
+ </saml:Subject>
+ <saml:Attribute AttributeName="wbPK"
+ AttributeNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#">
+ <saml:AttributeValue>
+ <pr:Identification>
+ <pr:Value>LTpz8VYzns2jrx0J8Gm/R/nAhxA=</pr:Value>
+ <pr:Type>urn:publicid:gv.at:wbpk+FN+TODO</pr:Type>
+ </pr:Identification>
+ </saml:AttributeValue>
+ </saml:Attribute>
+ <saml:Attribute AttributeName="OA"
+ AttributeNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#">
+ <saml:AttributeValue>https://apps.egiz.gv.at/urlaubsschein-frontend/moaid-login</saml:AttributeValue>
+ </saml:Attribute>
+ <saml:Attribute AttributeName="Geburtsdatum"
+ AttributeNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#">
+ <saml:AttributeValue>1971-11-10</saml:AttributeValue>
+ </saml:Attribute>
+ </saml:AttributeStatement>
+ </saml:Assertion>
+ </sl:XMLContent>
+ </sl:SignatureEnvironment>
+ <sl:SignatureLocation Index="2" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion">/saml:Assertion</sl:SignatureLocation>
+ </sl:SignatureInfo>
+</sl:CreateXMLSignatureRequest>
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/XMLDocument.xsd b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/XMLDocument.xsd
new file mode 100644
index 00000000..a2930f1d
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/impl/XMLDocument.xsd
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema targetNamespace="urn:document" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="urn:document" elementFormDefault="qualified" attributeFormDefault="unqualified">
+ <xs:element name="XMLDocument">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Paragraph" maxOccurs="unbounded">
+ <xs:complexType mixed="true">
+ <xs:attribute name="ParaId" type="xs:ID" use="optional"/>
+ </xs:complexType>
+ </xs:element>
+ <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.Invalid-1.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.Invalid-1.xml
new file mode 100644
index 00000000..1a2857da
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.Invalid-1.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?> <sl:InfoboxReadRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#"> <sl:InfoboxIdentifier>IdentityLink</sl:InfoboxIdentifier> <sl:AssocArrayParameters> <sl:ReadKeys SearchString="*"/> </sl:AssocArrayParameters> </sl:InfoboxReadRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.Invalid-2.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.Invalid-2.xml
new file mode 100644
index 00000000..96311ff6
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.Invalid-2.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?> <sl:InfoboxReadRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#"> <sl:InfoboxIdentifier>IdentityLink</sl:InfoboxIdentifier> <sl:BinaryFileParameters ContentIsXMLEntity="true"/> <sl:BoxSpecificParameters> <sl:ReadValue Key="SecureSignatureKeyPair"/> </sl:BoxSpecificParameters> </sl:InfoboxReadRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.xml
new file mode 100644
index 00000000..10964e06
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/infoboxreadcommand/IdentityLink.Binary.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?> <sl:InfoboxReadRequest xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#"> <sl:InfoboxIdentifier>IdentityLink</sl:InfoboxIdentifier> <sl:BinaryFileParameters ContentIsXMLEntity="true"/> <sl:BoxSpecificParameters> <sl:IdentityLinkDomainIdentifier>urn:publicid:gv.at:wbpk+FN+468924i</sl:IdentityLinkDomainIdentifier> </sl:BoxSpecificParameters> </sl:InfoboxReadRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/testApplicationContext.xml b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/testApplicationContext.xml
new file mode 100644
index 00000000..a7b588aa
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/at/gv/egiz/bku/slcommands/testApplicationContext.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ 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.
+ -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
+
+
+ <bean id="slCommandFactory" class="at.gv.egiz.bku.slcommands.SLCommandFactory"
+ factory-method="getInstance">
+ <property name="commandImpl">
+ <map>
+ <entry
+ key="http://www.buergerkarte.at/namespaces/securitylayer/1.2#:NullOperationRequest"
+ value="at.gv.egiz.bku.slcommands.impl.NullOperationCommandImpl" />
+ <entry
+ key="http://www.buergerkarte.at/namespaces/securitylayer/1.2#:InfoboxReadRequest"
+ value="at.gv.egiz.bku.slcommands.impl.InfoboxReadCommandImpl" />
+ <entry
+ key="http://www.buergerkarte.at/namespaces/securitylayer/1.2#:CreateXMLSignatureRequest"
+ value="at.gv.egiz.bku.slcommands.impl.CreateXMLSignatureCommandImpl" />
+ </map>
+ </property>
+ </bean>
+
+ <bean id="infoboxFactory" class="at.gv.egiz.bku.slcommands.impl.InfoboxFactory"
+ factory-method="getInstance">
+ <property name="infoboxImpl">
+ <map>
+ <entry
+ key="Certificates"
+ value="at.gv.egiz.bku.slcommands.impl.CertificatesInfoboxImpl" />
+ <entry
+ key="IdentityLink"
+ value="at.gv.egiz.bku.slcommands.impl.IdentityLinkInfoboxImpl" />
+ <!--<entry
+ key="CardChannel"
+ value="at.gv.egiz.bku.slcommands.impl.CardChannel" />
+ --></map>
+ </property>
+ </bean>
+
+</beans> \ No newline at end of file
diff --git a/mocca-1.2.11/bkucommon/src/test/resources/commons-logging.properties b/mocca-1.2.11/bkucommon/src/test/resources/commons-logging.properties
new file mode 100644
index 00000000..29292562
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/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/bkucommon/src/test/resources/log4j.properties b/mocca-1.2.11/bkucommon/src/test/resources/log4j.properties
new file mode 100644
index 00000000..053eac17
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/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/bkucommon/src/test/resources/moaspss/CreateXMLSignatureRequest.xml b/mocca-1.2.11/bkucommon/src/test/resources/moaspss/CreateXMLSignatureRequest.xml
new file mode 100644
index 00000000..586b1494
--- /dev/null
+++ b/mocca-1.2.11/bkucommon/src/test/resources/moaspss/CreateXMLSignatureRequest.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sl:CreateXMLSignatureRequest
+ xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#">
+<sl:KeyboxIdentifier>SecureSignatureKeypair</sl:KeyboxIdentifier>
+ <sl:DataObjectInfo Structure="enveloping">
+ <sl:DataObject>
+ <sl:XMLContent>I'm a simple text.</sl:XMLContent>
+ </sl:DataObject>
+ <sl:TransformsInfo>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>text/plain</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ </sl:DataObjectInfo>
+</sl:CreateXMLSignatureRequest>
+ \ No newline at end of file
diff --git a/mocca-1.2.11/htdocs/index.php b/mocca-1.2.11/htdocs/index.php
new file mode 100644
index 00000000..a0b2f9fb
--- /dev/null
+++ b/mocca-1.2.11/htdocs/index.php
@@ -0,0 +1,127 @@
+<?php
+
+$domain=ereg_replace('[^\.]*\.(.*)$','\1',$_SERVER['HTTP_HOST']);
+$group_name=ereg_replace('([^\.]*)\..*$','\1',$_SERVER['HTTP_HOST']);
+
+echo '<?xml version="1.0" encoding="UTF-8"?>';
+?>
+<!DOCTYPE html
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de">
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <title><?php echo $project_name; ?></title>
+ <script language="JavaScript" type="text/javascript">
+ <!--
+ function help_window(helpurl) {
+ HelpWin = window.open( helpurl,'HelpWindow','scrollbars=yes,resizable=yes,toolbar=no,height=400,width=400');
+ }
+ // -->
+ </script>
+
+<style type="text/css">
+ <!--
+ BODY {
+ margin-top: 3;
+ margin-left: 3;
+ margin-right: 3;
+ margin-bottom: 3;
+ background-color: #FFFFFF;
+ }
+ ol,ul,p,body,td,tr,th,form { font-family: verdana,arial,helvetica,sans-serif; font-size:small;
+ color: #333333; }
+
+ h1 {
+ font-size: x-large;
+ font-family: verdana,arial,helvetica,sans-serif;
+ background-color: #CCCCCC;
+}
+ h2 {
+ font-size: large;
+ font-family: verdana,arial,helvetica,sans-serif;
+ background-color: #CCCCCC;
+}
+ h3 { font-size: medium; font-family: verdana,arial,helvetica,sans-serif; }
+ h4 { font-size: small; font-family: verdana,arial,helvetica,sans-serif; }
+ h5 { font-size: x-small; font-family: verdana,arial,helvetica,sans-serif; }
+ h6 { font-size: xx-small; font-family: verdana,arial,helvetica,sans-serif; }
+
+ pre,tt { font-family: courier,sans-serif }
+
+ a:link { text-decoration:none }
+ a:visited { text-decoration:none }
+ a:active { text-decoration:none }
+ a:hover { text-decoration:none; color:red }
+
+ .titlebar { color: black; text-decoration: none; font-weight: bold; }
+ a.tablink { color: black; text-decoration: none; font-weight: bold; font-size: x-small; }
+ a.tablink:visited { color: black; text-decoration: none; font-weight: bold; font-size: x-small; }
+ a.tablink:hover { text-decoration: none; color: black; font-weight: bold; font-size: x-small; }
+ a.tabsellink { color: black; text-decoration: none; font-weight: bold; font-size: x-small; }
+ a.tabsellink:visited { color: black; text-decoration: none; font-weight: bold; font-size: x-small; }
+ a.tabsellink:hover { text-decoration: none; color: black; font-weight: bold; font-size: x-small; }
+ a.logo { color: black; text-decoration: none; font-weight: bold; font-size: x-small; }
+ a.logo:visited { color: black; text-decoration: none; font-weight: bold; font-size: x-small; }
+ a.logo:hover {
+ text-decoration: none;
+ color: red;
+ font-weight: bold;
+ font-size: x-small;
+}
+ -->
+</style>
+
+</head>
+
+<body>
+
+<a href="/" class="logo"><img src="mocca-t_s.png" border="0" alt="Logo" width="281" height="100" /></a>
+
+<h2>Welcome to the MOCCA project!</h2>
+<div style="float:right;background-color:#d5d5d7;width:300px">
+<div class="titlebar" style="text-align:center;margin:2px">Project summary</div>
+<span>
+<?php if($handle=fopen('http://'.$domain.'/export/projhtml.php?group_name='.$group_name,'r')){
+$contents = '';
+while (!feof($handle)) {
+ $contents .= fread($handle, 8192);
+}
+fclose($handle);
+$contents=str_replace('href="/','href="http://'.$domain.'/',$contents);
+$contents=str_replace('src="/','src="http://'.$domain.'/',$contents);
+echo $contents; } ?>
+</span>
+</div>
+<p><a href="#news">News</a><br/>
+ <a href="http://egovlabs.gv.at/docman/?group_id=13&amp;language_id=*">Documentation</a><br />
+ <a href="http://egovlabs.gv.at/frs/?group_id=13">Downloads</a><br />
+ <a href="#licenses">Licence conditions</a>
+<p><strong>MOCCA - Modular Open Citizen Card Architecture</strong>
+<p>MOCCA is a project initiated by the <a href="http://www.egiz.gv.at">E-Government Innovation Center (EGIZ)</a> to implement a modular, open source <a href="http://www.buergerkarte.at">citizen card environment</a>.</p>
+<a name="news" id="news"/>
+ <?php if ($handle=fopen('http://'.$domain.'/export/projnews.php?group_name='.$group_name,'r')){
+$contents = '';
+while (!feof($handle)) {
+ $contents .= fread($handle, 8192);
+}
+fclose($handle);
+$contents=str_replace('href="/','href="http://'.$domain.'/',$contents);
+echo $contents; } ?>
+ <h3><a name="licenses" id="licenses"></a>License conditions</h3>
+ <p>The MOCCA project as provided by the <a href="http://www.egiz.gv.at">E-Government Innovation Center (EGIZ)</a> is licensed according to the terms of the <a href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a>.</p>
+ <p>The MOCCA project includes software provided by third parties. This software is either <a href="http://www.opensource.org">open source software</a> or commercial software. The licensee is responsible for optaining appropriate licenses.</p>
+<p>The MOCCA project uses software provided by <a href="http://www.sic.st">Stiftung Secure Information and Communication Technologies (SIC)</a>. The uses of the software provided by Stiftung Secure Information and Communication Technologies (SIC) together with the unchanged software provided by the MOCCA project is free of charge. For details see <a href="http://jce.iaik.tugraz.at/sic/sales/licences/license_agreement_moa">License Agreement IAIK</a>.</p>
+</td>
+
+<!-- PLEASE LEAVE "Powered By GForge" on your site -->
+<br />
+<center>
+<a href="http://gforge.org/"><img src="http://gforge.org/images/pow-gforge.png" alt="Powered By GForge Collaborative Development Environment" border="0" /></a>
+</center>
+
+
+</body>
+</html>
diff --git a/mocca-1.2.11/htdocs/mocca-t_s.png b/mocca-1.2.11/htdocs/mocca-t_s.png
new file mode 100644
index 00000000..bbf27a66
--- /dev/null
+++ b/mocca-1.2.11/htdocs/mocca-t_s.png
Binary files differ
diff --git a/mocca-1.2.11/htdocs/mocca_s.png b/mocca-1.2.11/htdocs/mocca_s.png
new file mode 100644
index 00000000..2857f398
--- /dev/null
+++ b/mocca-1.2.11/htdocs/mocca_s.png
Binary files differ
diff --git a/mocca-1.2.11/nbactions.xml b/mocca-1.2.11/nbactions.xml
new file mode 100644
index 00000000..8e96c5d7
--- /dev/null
+++ b/mocca-1.2.11/nbactions.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<actions>
+ <action>
+ <actionName>CUSTOM-Install_SkipTest</actionName>
+ <displayName>Install_SkipTest</displayName>
+ <goals>
+ <goal>install</goal>
+ </goals>
+ <properties>
+ <maven.test.skip>true</maven.test.skip>
+ </properties>
+ </action>
+ <action>
+ <actionName>CUSTOM-release:prepare</actionName>
+ <displayName>release:prepare</displayName>
+ <goals>
+ <goal>release:prepare</goal>
+ </goals>
+ </action>
+ <action>
+ <actionName>CUSTOM-release:rollback</actionName>
+ <displayName>release:rollback</displayName>
+ <goals>
+ <goal>release:rollback</goal>
+ </goals>
+ </action>
+ </actions>
diff --git a/mocca-1.2.11/pom.xml b/mocca-1.2.11/pom.xml
new file mode 100644
index 00000000..9347bcf9
--- /dev/null
+++ b/mocca-1.2.11/pom.xml
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>bku</artifactId>
+ <packaging>pom</packaging>
+ <version>1.2.11</version>
+ <name>BKU</name>
+ <url>http://bku.egiz.gv.at</url>
+ <modules>
+ <module>utils</module>
+ <module>bkucommon</module>
+ <module>STAL</module>
+ <module>BKUOnline</module>
+ <module>smcc</module>
+ <module>BKULocal</module>
+ <module>BKUApplet</module>
+ <module>smccSTAL</module>
+ <module>STALService</module>
+ <module>BKUCommonGUI</module>
+ <module>BKUViewer</module>
+ <module>STALExt</module>
+ <module>STALXService</module>
+ <module>BKUAppletExt</module>
+ <module>BKUWebStart</module>
+ <module>BKUCertificates</module>
+ <module>BKUHelp</module>
+ <module>BKUGuiExt</module>
+ <module>smccSTALExt</module>
+ <!--module>BKUWebStartPackage</module-->
+ <module>BKUFonts</module>
+ </modules>
+ <developers>
+ <developer>
+ <id>mcentner</id>
+ <name>Martin Centner</name>
+ <email>mcentner@egiz.gv.at</email>
+ </developer>
+ <developer>
+ <id>wbauer</id>
+ <name>Wolfgang Bauer</name>
+ <email>wbauer@egiz.gv.at</email>
+ </developer>
+ <developer>
+ <id>corthacker</id>
+ <name>Clemens Orthacker</name>
+ <email>corthacker@egiz.gv.at</email>
+ </developer>
+ </developers>
+ <scm>
+ <connection>scm:svn:svn://svn.egovlabs.gv.at/svnroot/mocca/tags/mocca-1.2.11</connection>
+ <developerConnection>scm:svn:svn+ssh://svn.egovlabs.gv.at/svnroot/mocca/tags/mocca-1.2.11</developerConnection>
+ <url>svn://svn.egovlabs.gv.at/svnroot/mocca/tags/mocca-1.2.11</url>
+ </scm>
+ <organization>
+ <name>E-Government Innovation Center (EGIZ)</name>
+ <url>http://www.egiz.gv.at</url>
+ </organization>
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <version>2.0.2</version>
+ <configuration>
+ <!--
+ <fork>true</fork>
+ <executable>${java_150_sun}/bin/javac</executable>
+ <compilerVersion>1.5</compilerVersion>
+ -->
+ <source>1.6</source>
+ <target>1.6</target>
+ <verbose>true</verbose>
+ <showWarnings>true</showWarnings>
+ <encoding>UTF-8</encoding>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-resources-plugin</artifactId>
+ <configuration>
+ <encoding>UTF-8</encoding>
+ </configuration>
+ </plugin>
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <version>2.2-beta-4</version>
+ </plugin>
+ <plugin>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <version>2.1</version>
+ </plugin>
+ <!--
+ plugin> <artifactId>maven-jaxb2-plugin</artifactId>
+ <groupId>org.jvnet.jaxb2.maven2</groupId> <version>0.6.0</version>
+ </plugin -->
+ <plugin>
+ <artifactId>jaxws-maven-plugin</artifactId>
+ <groupId>org.codehaus.mojo</groupId>
+ <version>1.10</version>
+ </plugin>
+ <plugin>
+ <artifactId>maven-release-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <version>2.0-beta-7</version>
+ </plugin>
+ <plugin>
+ <artifactId>maven-buildnumber-plugin</artifactId>
+ <groupId>org.codehaus.mojo</groupId>
+ <version>0.9.6</version>
+ </plugin>
+ <plugin>
+ <artifactId>webstart-maven-plugin</artifactId>
+ <groupId>org.codehaus.mojo.webstart</groupId>
+ <!-- for pkcs11-sign, use patched webstart-maven-plugin
+ <version>1.0-beta-1-SNAPSHOT</version-->
+ <version>1.0-alpha-2</version>
+ </plugin>
+ <plugin>
+ <artifactId>maven-jar-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <version>2.2</version>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+ <repositories>
+ <repository>
+ <id>mocca-egovlabs</id>
+ <name>MOCCA EGovLabs</name>
+ <url>http://mocca.egovlabs.gv.at/m2/repository/</url>
+ </repository>
+ <repository>
+ <id>maven2-repository.dev.java.net</id>
+ <name>Java.net Repository for Maven 2</name>
+ <url>http://download.java.net/maven/2/</url>
+ </repository>
+ <repository>
+ <id>maven1-repository.dev.java.net</id>
+ <name>Java.net Repository for Maven 1</name>
+ <url>http://download.java.net/maven/1/</url>
+ <layout>legacy</layout>
+ </repository>
+ </repositories>
+ <dependencies>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.12</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>1.1.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.4</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>xerces</groupId>
+ <artifactId>xercesImpl</artifactId>
+ <version>2.9.1</version>
+ </dependency>
+ <dependency>
+ <groupId>xalan</groupId>
+ <artifactId>xalan</artifactId>
+ <version>2.7.1</version>
+ </dependency>
+ <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_jce_full_signed</artifactId>
+ <version>3.16</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_jce_me4se</artifactId>
+ <version>3.04</version>
+ </dependency>
+ <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_ecc_signed</artifactId>
+ <version>2.15</version>
+ </dependency>
+ <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_xsect</artifactId>
+ <version>1.14</version>
+ </dependency>
+ <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_pki</artifactId>
+ <version>1.0-MOCCA</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-fileupload</groupId>
+ <artifactId>commons-fileupload</artifactId>
+ <version>1.2.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>3.1</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-core</artifactId>
+ <version>2.5.5</version>
+ </dependency>
+ <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-context</artifactId>
+ <version>2.5.5</version>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ <version>2.1.9</version>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.xml.ws</groupId>
+ <artifactId>jaxws-rt</artifactId>
+ <version>2.1.5</version>
+ </dependency>
+ <!-- version not defined in BKUOnline pom "include-webstart" profile,
+ | it wouldn't be adjusted by release:prepare -->
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUWebStart</artifactId>
+ <version>1.2.11</version>
+ <type>zip</type>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+</project> \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/keystore.ks b/mocca-1.2.11/smcc/keystore.ks
new file mode 100644
index 00000000..824c3a40
--- /dev/null
+++ b/mocca-1.2.11/smcc/keystore.ks
Binary files differ
diff --git a/mocca-1.2.11/smcc/pom.xml b/mocca-1.2.11/smcc/pom.xml
new file mode 100644
index 00000000..1a2a8566
--- /dev/null
+++ b/mocca-1.2.11/smcc/pom.xml
@@ -0,0 +1,46 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>smcc</artifactId>
+ <name>smcc</name>
+ <packaging>jar</packaging>
+ <version>1.2.11</version>
+ <url>http://bku.egiz.gv.at</url>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <configuration>
+ <debug>false</debug>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_jce_full_signed</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <!-- FIXME just for testing
+ <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_jce_full_signed</artifactId>
+ </dependency> -->
+ </dependencies>
+</project> \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/main/java/META-INF/MANIFEST.MF b/mocca-1.2.11/smcc/src/main/java/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..5e949512
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path:
+
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java
new file mode 100644
index 00000000..9b3b88ed
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ACOSCard.java
@@ -0,0 +1,805 @@
+/*
+* 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.smcc;
+
+import at.gv.egiz.smcc.pin.gui.ModifyPINGUI;
+import at.gv.egiz.smcc.pin.gui.PINGUI;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.AlgorithmParameters;
+import java.security.GeneralSecurityException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.crypto.Cipher;
+import javax.crypto.SecretKey;
+import javax.crypto.SecretKeyFactory;
+import javax.crypto.spec.DESedeKeySpec;
+import javax.crypto.spec.IvParameterSpec;
+import javax.smartcardio.Card;
+import javax.smartcardio.CardChannel;
+import javax.smartcardio.CardException;
+import javax.smartcardio.CardTerminal;
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.smcc.util.ISO7816Utils;
+import at.gv.egiz.smcc.util.SMCCHelper;
+import at.gv.egiz.smcc.util.TransparentFileInputStream;
+
+public class ACOSCard extends AbstractSignatureCard implements PINMgmtSignatureCard {
+
+ private static Log log = LogFactory.getLog(ACOSCard.class);
+
+ public static final byte[] AID_DEC = new byte[] { (byte) 0xA0, (byte) 0x00,
+ (byte) 0x00, (byte) 0x01, (byte) 0x18, (byte) 0x45, (byte) 0x4E };
+
+ public static final byte[] DF_DEC = new byte[] { (byte) 0xdf, (byte) 0x71 };
+
+ public static final byte[] AID_SIG = new byte[] { (byte) 0xA0, (byte) 0x00,
+ (byte) 0x00, (byte) 0x01, (byte) 0x18, (byte) 0x45, (byte) 0x43 };
+
+ public static final byte[] DF_SIG = new byte[] { (byte) 0xdf, (byte) 0x70 };
+
+ public static final byte[] EF_C_CH_EKEY = new byte[] { (byte) 0xc0,
+ (byte) 0x01 };
+
+ public static final int EF_C_CH_EKEY_MAX_SIZE = 2000;
+
+ public static final byte[] EF_C_CH_DS = new byte[] { (byte) 0xc0, (byte) 0x02 };
+
+ public static final int EF_C_CH_DS_MAX_SIZE = 2000;
+
+ public static final byte[] EF_PK_CH_EKEY = new byte[] { (byte) 0xb0,
+ (byte) 0x01 };
+
+ public static final byte[] EF_INFOBOX = new byte[] { (byte) 0xc0, (byte) 0x02 };
+
+ public static final byte[] EF_INFO = new byte[] { (byte) 0xd0, (byte) 0x02 };
+
+ public static final int EF_INFOBOX_MAX_SIZE = 1500;
+
+ public static final byte KID_PIN_SIG = (byte) 0x81;
+
+ public static final byte KID_PUK_SIG = (byte) 0x83;
+
+ public static final byte KID_PIN_DEC = (byte) 0x81;
+
+ public static final byte KID_PUK_DEC = (byte) 0x82;
+
+ public static final byte KID_PIN_INF = (byte) 0x83;
+
+ public static final byte KID_PUK_INF = (byte) 0x84;
+
+ public static final byte[] DST_SIG = new byte[] { (byte) 0x84, (byte) 0x01, // tag
+ // ,
+ // length
+ // (
+ // key
+ // ID
+ // )
+ (byte) 0x88, // SK.CH.SIGN
+ (byte) 0x80, (byte) 0x01, // tag, length (algorithm ID)
+ (byte) 0x14 // ECDSA
+ };
+
+ public static final byte[] AT_DEC = new byte[] { (byte) 0x84, (byte) 0x01, // tag
+ // ,
+ // length
+ // (
+ // key
+ // ID
+ // )
+ (byte) 0x88, // SK.CH.EKEY
+ (byte) 0x80, (byte) 0x01, // tag, length (algorithm ID)
+ (byte) 0x01 // RSA // TODO: Not verified yet
+ };
+
+ private static final PINSpec DEC_PIN_SPEC = new PINSpec(0, 8, "[0-9]",
+ "at/gv/egiz/smcc/ACOSCard", "dec.pin", KID_PIN_DEC, AID_DEC);
+
+ private static final PINSpec SIG_PIN_SPEC = new PINSpec(0, 8, "[0-9]",
+ "at/gv/egiz/smcc/ACOSCard", "sig.pin", KID_PIN_SIG, AID_SIG);
+
+ private static final PINSpec INF_PIN_SPEC = new PINSpec(0, 8, "[0-9]",
+ "at/gv/egiz/smcc/ACOSCard", "inf.pin", KID_PIN_INF, AID_DEC);
+
+ static {
+ if (SignatureCardFactory.ENFORCE_RECOMMENDED_PIN_LENGTH) {
+ DEC_PIN_SPEC.setRecLength(4);
+ SIG_PIN_SPEC.setRecLength(6);
+ INF_PIN_SPEC.setRecLength(4);
+ }
+ }
+
+ /**
+ * The version of the card's digital signature application.
+ */
+ protected int appVersion = -1;
+
+ public ACOSCard() {
+ super("at/gv/egiz/smcc/ACOSCard");
+ }
+
+ @Override
+ public void init(Card card, CardTerminal cardTerminal) {
+ super.init(card, cardTerminal);
+
+ // determine application version
+ try {
+ CardChannel channel = getCardChannel();
+ // SELECT application
+ execSELECT_AID(channel, AID_SIG);
+ // SELECT file
+ execSELECT_FID(channel, EF_INFO);
+ // READ BINARY
+ TransparentFileInputStream is = ISO7816Utils.openTransparentFileInputStream(channel, 8);
+ appVersion = is.read();
+ log.info("a-sign premium application version = " + appVersion);
+ } catch (FileNotFoundException e) {
+ appVersion = 1;
+ log.info("a-sign premium application version = " + appVersion);
+ } catch (SignatureCardException e) {
+ log.warn(e);
+ appVersion = 0;
+ } catch (IOException e) {
+ log.warn(e);
+ appVersion = 0;
+ } catch (CardException e) {
+ log.warn(e);
+ appVersion = 0;
+ }
+
+ pinSpecs.add(DEC_PIN_SPEC);
+ pinSpecs.add(SIG_PIN_SPEC);
+ if (appVersion < 2) {
+ pinSpecs.add(INF_PIN_SPEC);
+ }
+
+ }
+
+ @Override
+ @Exclusive
+ public byte[] getCertificate(KeyboxName keyboxName)
+ throws SignatureCardException, InterruptedException {
+
+ byte[] aid;
+ byte[] fid;
+ if (keyboxName == KeyboxName.SECURE_SIGNATURE_KEYPAIR) {
+ aid = AID_SIG;
+ fid = EF_C_CH_DS;
+ } else if (keyboxName == KeyboxName.CERITIFIED_KEYPAIR) {
+ aid = AID_DEC;
+ fid = EF_C_CH_EKEY;
+ } else {
+ throw new IllegalArgumentException("Keybox " + keyboxName
+ + " not supported.");
+ }
+
+ try {
+ CardChannel channel = getCardChannel();
+ // SELECT application
+ execSELECT_AID(channel, aid);
+ // SELECT file
+ byte[] fcx = execSELECT_FID(channel, fid);
+ int maxSize = -1;
+ if (getAppVersion() < 2) {
+ maxSize = ISO7816Utils.getLengthFromFCx(fcx);
+ log.debug("Size of selected file = " + maxSize);
+ }
+ // READ BINARY
+ byte[] certificate = ISO7816Utils.readTransparentFileTLV(channel, maxSize, (byte) 0x30);
+ if (certificate == null) {
+ throw new NotActivatedException();
+ }
+ return certificate;
+ } catch (FileNotFoundException e) {
+ throw new NotActivatedException();
+ } catch (CardException e) {
+ log.info("Failed to get certificate.", e);
+ throw new SignatureCardException(e);
+ }
+
+
+ }
+
+ @Override
+ @Exclusive
+ public byte[] getInfobox(String infobox, PINGUI provider, String domainId)
+ throws SignatureCardException, InterruptedException {
+
+ if ("IdentityLink".equals(infobox)) {
+ if (getAppVersion() < 2) {
+ return getIdentityLinkV1(provider, domainId);
+ } else {
+ return getIdentityLinkV2(provider, domainId);
+ }
+ } else {
+ throw new IllegalArgumentException("Infobox '" + infobox
+ + "' not supported.");
+ }
+
+ }
+
+ protected byte[] getIdentityLinkV1(PINGUI provider, String domainId)
+ throws SignatureCardException, InterruptedException {
+
+ try {
+ CardChannel channel = getCardChannel();
+ // SELECT application
+ execSELECT_AID(channel, AID_DEC);
+ // SELECT file
+ byte[] fcx = execSELECT_FID(channel, EF_INFOBOX);
+ int maxSize = ISO7816Utils.getLengthFromFCx(fcx);
+ log.debug("Size of selected file = " + maxSize);
+ // READ BINARY
+ while(true) {
+ try {
+ return ISO7816Utils.readTransparentFileTLV(channel, maxSize, (byte) 0x30);
+ } catch (SecurityStatusNotSatisfiedException e) {
+ verifyPINLoop(channel, INF_PIN_SPEC, provider);
+ }
+ }
+
+ } catch (FileNotFoundException e) {
+ throw new NotActivatedException();
+ } catch (CardException e) {
+ log.info("Faild to get infobox.", e);
+ throw new SignatureCardException(e);
+ }
+
+ }
+
+ protected byte[] getIdentityLinkV2(PINGUI provider, String domainId)
+ throws SignatureCardException, InterruptedException {
+
+ try {
+ CardChannel channel = getCardChannel();
+ // SELECT application
+ execSELECT_AID(channel, AID_DEC);
+ // SELECT file
+ execSELECT_FID(channel, EF_INFOBOX);
+
+ // READ BINARY
+ TransparentFileInputStream is = ISO7816Utils.openTransparentFileInputStream(channel, -1);
+
+ int b = is.read();
+ if (b == 0x00) {
+ return null;
+ }
+ if (b != 0x41 || is.read() != 0x49 || is.read() != 0x4b) {
+ String msg = "Infobox structure invalid.";
+ log.info(msg);
+ throw new SignatureCardException(msg);
+ }
+
+ b = is.read();
+ if (b != 0x01) {
+ String msg = "Infobox structure v" + b + " not supported.";
+ log.info(msg);
+ throw new SignatureCardException(msg);
+ }
+
+ while ((b = is.read()) != 0x01 && b != 00) {
+ is.read(); // modifiers
+ is.skip(is.read() + (is.read() << 8)); // length
+ }
+
+ if (b != 0x01) {
+ return null;
+ }
+
+ int modifiers = is.read();
+ int length = is.read() + (is.read() << 8);
+
+ byte[] bytes;
+ byte[] key = null;
+
+ switch (modifiers) {
+ case 0x00:
+ bytes = new byte[length];
+ break;
+ case 0x01:
+ key = new byte[is.read() + (is.read() << 8)];
+ is.read(key);
+ bytes = new byte[length - key.length - 2];
+ break;
+ default:
+ String msg = "Compressed infobox structure not yet supported.";
+ log.info(msg);
+ throw new SignatureCardException(msg);
+ }
+
+ is.read(bytes);
+
+ if (key == null) {
+ return bytes;
+ }
+
+ execMSE(channel, 0x41, 0xb8, new byte[] {
+ (byte) 0x84, (byte) 0x01, (byte) 0x88, (byte) 0x80, (byte) 0x01,
+ (byte) 0x02 });
+
+
+ byte[] plainKey = null;
+
+ while (true) {
+ try {
+ plainKey = execPSO_DECIPHER(channel, key);
+ break;
+ } catch(SecurityStatusNotSatisfiedException e) {
+ verifyPINLoop(channel, DEC_PIN_SPEC, provider);
+ }
+ }
+
+ try {
+ Cipher cipher = Cipher
+ .getInstance("DESede/CBC/PKCS5Padding");
+ byte[] iv = new byte[8];
+ Arrays.fill(iv, (byte) 0x00);
+ IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);
+ AlgorithmParameters parameters = AlgorithmParameters
+ .getInstance("DESede");
+ parameters.init(ivParameterSpec);
+
+ DESedeKeySpec keySpec = new DESedeKeySpec(plainKey);
+ SecretKeyFactory keyFactory = SecretKeyFactory
+ .getInstance("DESede");
+ SecretKey secretKey = keyFactory.generateSecret(keySpec);
+
+ cipher.init(Cipher.DECRYPT_MODE, secretKey, parameters);
+
+ return cipher.doFinal(bytes);
+
+ } catch (GeneralSecurityException e) {
+ String msg = "Failed to decrypt infobox.";
+ log.info(msg, e);
+ throw new SignatureCardException(msg, e);
+ }
+
+
+ } catch (FileNotFoundException e) {
+ throw new NotActivatedException();
+ } catch (CardException e) {
+ log.info("Faild to get infobox.", e);
+ throw new SignatureCardException(e);
+ } catch (IOException e) {
+ if (e.getCause() instanceof SignatureCardException) {
+ throw (SignatureCardException) e.getCause();
+ } else {
+ throw new SignatureCardException(e);
+ }
+ }
+
+ }
+
+ @Override
+ @Exclusive
+ public byte[] createSignature(InputStream input, KeyboxName keyboxName,
+ PINGUI provider, String alg) throws SignatureCardException, InterruptedException, IOException {
+
+ ByteArrayOutputStream dst = new ByteArrayOutputStream();
+ // key ID
+ dst.write(new byte[]{(byte) 0x84, (byte) 0x01, (byte) 0x88});
+ // algorithm ID
+ dst.write(new byte[]{(byte) 0x80, (byte) 0x01});
+
+ MessageDigest md;
+ try {
+ if (KeyboxName.SECURE_SIGNATURE_KEYPAIR.equals(keyboxName)
+ && (alg == null || "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1".equals(alg))) {
+ dst.write((byte) 0x14); // SHA-1/ECC
+ md = MessageDigest.getInstance("SHA-1");
+ } else if (KeyboxName.CERITIFIED_KEYPAIR.equals(keyboxName)
+ && (alg == null || "http://www.w3.org/2000/09/xmldsig#rsa-sha1".equals(alg))) {
+ dst.write((byte) 0x12); // SHA-1 with padding according to PKCS#1 block type 01
+ md = MessageDigest.getInstance("SHA-1");
+ } else if (KeyboxName.SECURE_SIGNATURE_KEYPAIR.equals(keyboxName)
+ && appVersion >= 2
+ && "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256".equals(alg)) {
+ dst.write((byte) 0x44); // SHA-256/ECC
+ md = MessageDigest.getInstance("SHA256");
+ } else if (KeyboxName.CERITIFIED_KEYPAIR.equals(keyboxName)
+ && appVersion >= 2
+ && "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256".equals(alg)) {
+ dst.write((byte) 0x41); // SHA-256 with padding according to PKCS#1
+ md = MessageDigest.getInstance("SHA256");
+ } else {
+ throw new SignatureCardException("Card does not support signature algorithm " + alg + ".");
+ }
+ } catch (NoSuchAlgorithmException e) {
+ log.error("Failed to get MessageDigest.", e);
+ throw new SignatureCardException(e);
+ }
+
+ byte[] digest = new byte[md.getDigestLength()];
+ for (int l; (l = input.read(digest)) != -1;) {
+ md.update(digest, 0, l);
+ }
+ digest = md.digest();
+
+ try {
+
+ CardChannel channel = getCardChannel();
+
+ if (KeyboxName.SECURE_SIGNATURE_KEYPAIR.equals(keyboxName)) {
+
+ PINSpec spec = SIG_PIN_SPEC;
+
+ // SELECT application
+ execSELECT_AID(channel, AID_SIG);
+ // MANAGE SECURITY ENVIRONMENT : SET DST
+ execMSE(channel, 0x41, 0xb6, dst.toByteArray());
+ // VERIFY
+ verifyPINLoop(channel, spec, provider);
+ // PERFORM SECURITY OPERATION : HASH
+ execPSO_HASH(channel, digest);
+ // PERFORM SECURITY OPERATION : COMPUTE DIGITAL SIGNATRE
+ return execPSO_COMPUTE_DIGITAL_SIGNATURE(channel);
+
+ } else if (KeyboxName.CERITIFIED_KEYPAIR.equals(keyboxName)) {
+
+ PINSpec spec = DEC_PIN_SPEC;
+
+ // SELECT application
+ execSELECT_AID(channel, AID_DEC);
+ // MANAGE SECURITY ENVIRONMENT : SET AT
+ execMSE(channel, 0x41, 0xa4, AT_DEC);
+
+ while (true) {
+ try {
+ // INTERNAL AUTHENTICATE
+ return execINTERNAL_AUTHENTICATE(channel, digest);
+ } catch (SecurityStatusNotSatisfiedException e) {
+ verifyPINLoop(channel, spec, provider);
+ }
+ }
+
+ } else {
+ throw new IllegalArgumentException("KeyboxName '" + keyboxName
+ + "' not supported.");
+ }
+
+ } catch (CardException e) {
+ log.warn(e);
+ throw new SignatureCardException("Failed to access card.", e);
+ }
+
+ }
+
+ public int getAppVersion() {
+ return appVersion;
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.smcc.AbstractSignatureCard#verifyPIN(at.gv.egiz.smcc.PINSpec, at.gv.egiz.smcc.PINProvider)
+ */
+ @Override
+ public void verifyPIN(PINSpec pinSpec, PINGUI pinProvider)
+ throws LockedException, NotActivatedException, CancelledException,
+ TimeoutException, SignatureCardException, InterruptedException {
+
+ CardChannel channel = getCardChannel();
+
+ try {
+ // SELECT application
+ execSELECT_AID(channel, pinSpec.getContextAID());
+ // VERIFY
+ verifyPINLoop(channel, pinSpec, pinProvider);
+ } catch (CardException e) {
+ log.info("Failed to verify PIN.", e);
+ throw new SignatureCardException("Failed to verify PIN.", e);
+ }
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.smcc.AbstractSignatureCard#changePIN(at.gv.egiz.smcc.PINSpec, at.gv.egiz.smcc.ChangePINProvider)
+ */
+ @Override
+ public void changePIN(PINSpec pinSpec, ModifyPINGUI pinProvider)
+ throws LockedException, NotActivatedException, CancelledException,
+ TimeoutException, SignatureCardException, InterruptedException {
+
+ CardChannel channel = getCardChannel();
+
+ try {
+ // SELECT application
+ execSELECT_AID(channel, pinSpec.getContextAID());
+ // CHANGE REFERENCE DATA
+ changePINLoop(channel, pinSpec, pinProvider);
+ } catch (CardException e) {
+ log.info("Failed to change PIN.", e);
+ throw new SignatureCardException("Failed to change PIN.", e);
+ }
+
+ }
+
+ @Override
+ public void activatePIN(PINSpec pinSpec, ModifyPINGUI pinGUI)
+ throws CancelledException, SignatureCardException, CancelledException,
+ TimeoutException, InterruptedException {
+ log.error("ACTIVATE PIN not supported by ACOS");
+ throw new SignatureCardException("PIN activation not supported by this card.");
+ }
+
+ @Override
+ public void unblockPIN(PINSpec pinSpec, ModifyPINGUI pinGUI)
+ throws CancelledException, SignatureCardException, InterruptedException {
+ throw new SignatureCardException("Unblock PIN not supported.");
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.smcc.PINMgmtSignatureCard#getPINSpecs()
+ */
+ @Override
+ public List<PINSpec> getPINSpecs() {
+ if (getAppVersion() < 2) {
+ return Arrays.asList(new PINSpec[] {DEC_PIN_SPEC, SIG_PIN_SPEC, INF_PIN_SPEC});
+ } else {
+ return Arrays.asList(new PINSpec[] {DEC_PIN_SPEC, SIG_PIN_SPEC});
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.smcc.PINMgmtSignatureCard#getPINStatus(at.gv.egiz.smcc.PINSpec)
+ */
+ @Override
+ public PIN_STATE getPINState(PINSpec pinSpec) throws SignatureCardException {
+ return PIN_STATE.UNKNOWN;
+ }
+
+ @Override
+ public String toString() {
+ return "a-sign premium (version " + getAppVersion() + ")";
+ }
+
+ ////////////////////////////////////////////////////////////////////////
+ // PROTECTED METHODS (assume exclusive card access)
+ ////////////////////////////////////////////////////////////////////////
+
+ protected void verifyPINLoop(CardChannel channel, PINSpec spec, PINGUI provider)
+ throws InterruptedException, CardException, SignatureCardException {
+
+ int retries = -1;
+ do {
+ retries = verifyPIN(channel, spec, provider, retries);
+ } while (retries > 0);
+ }
+
+ protected void changePINLoop(CardChannel channel, PINSpec spec, ModifyPINGUI provider)
+ throws InterruptedException, CardException, SignatureCardException {
+
+ int retries = -1;
+ do {
+ retries = changePIN(channel, spec, provider, retries);
+ } while (retries > 0);
+ }
+
+ protected int verifyPIN(CardChannel channel, PINSpec pinSpec,
+ PINGUI provider, int retries) throws InterruptedException, CardException, SignatureCardException {
+
+ VerifyAPDUSpec apduSpec = new VerifyAPDUSpec(
+ new byte[] {
+ (byte) 0x00, (byte) 0x20, (byte) 0x00, pinSpec.getKID(), (byte) 0x08,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00 },
+ 0, VerifyAPDUSpec.PIN_FORMAT_ASCII, 8);
+
+ ResponseAPDU resp = reader.verify(channel, apduSpec, provider, pinSpec, retries);
+
+ if (resp.getSW() == 0x9000) {
+ return -1;
+ }
+ if (resp.getSW() >> 4 == 0x63c) {
+ return 0x0f & resp.getSW();
+ }
+
+ switch (resp.getSW()) {
+ case 0x6983:
+ // authentication method blocked
+ throw new LockedException();
+
+ default:
+ String msg = "VERIFY failed. SW=" + Integer.toHexString(resp.getSW());
+ log.info(msg);
+ throw new SignatureCardException(msg);
+ }
+
+ }
+
+ protected int changePIN(CardChannel channel, PINSpec pinSpec,
+ ModifyPINGUI pinProvider, int retries) throws CancelledException, InterruptedException, CardException, SignatureCardException {
+
+ ChangeReferenceDataAPDUSpec apduSpec = new ChangeReferenceDataAPDUSpec(
+ new byte[] {
+ (byte) 0x00, (byte) 0x24, (byte) 0x00, pinSpec.getKID(), (byte) 0x10,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00
+ },
+ 0, VerifyAPDUSpec.PIN_FORMAT_ASCII, 8);
+
+
+
+ ResponseAPDU resp = reader.modify(channel, apduSpec, pinProvider, pinSpec, retries);
+
+ if (resp.getSW() == 0x9000) {
+ return -1;
+ }
+ if (resp.getSW() >> 4 == 0x63c) {
+ return 0x0f & resp.getSW();
+ }
+
+ switch (resp.getSW()) {
+ case 0x6983:
+ // authentication method blocked
+ throw new LockedException();
+
+ default:
+ String msg = "CHANGE REFERENCE DATA failed. SW=" + Integer.toHexString(resp.getSW());
+ log.info(msg);
+ throw new SignatureCardException(msg);
+ }
+
+ }
+
+ protected byte[] execSELECT_AID(CardChannel channel, byte[] aid)
+ throws SignatureCardException, CardException {
+
+ ResponseAPDU resp = channel.transmit(
+ new CommandAPDU(0x00, 0xA4, 0x04, 0x00, aid, 256));
+
+ if (resp.getSW() == 0x6A82) {
+ String msg = "File or application not found AID="
+ + SMCCHelper.toString(aid) + " SW="
+ + Integer.toHexString(resp.getSW()) + ".";
+ log.info(msg);
+ throw new FileNotFoundException(msg);
+ } else if (resp.getSW() != 0x9000) {
+ String msg = "Failed to select application AID="
+ + SMCCHelper.toString(aid) + " SW="
+ + Integer.toHexString(resp.getSW()) + ".";
+ log.info(msg);
+ throw new SignatureCardException(msg);
+ } else {
+ return resp.getBytes();
+ }
+
+ }
+
+ protected byte[] execSELECT_FID(CardChannel channel, byte[] fid)
+ throws SignatureCardException, CardException {
+
+ ResponseAPDU resp = channel.transmit(
+ new CommandAPDU(0x00, 0xA4, 0x00, 0x00, fid, 256));
+
+ if (resp.getSW() == 0x6A82) {
+ String msg = "File or application not found FID="
+ + SMCCHelper.toString(fid) + " SW="
+ + Integer.toHexString(resp.getSW()) + ".";
+ log.info(msg);
+ throw new FileNotFoundException(msg);
+ } else if (resp.getSW() != 0x9000) {
+ String msg = "Failed to select application FID="
+ + SMCCHelper.toString(fid) + " SW="
+ + Integer.toHexString(resp.getSW()) + ".";
+ log.error(msg);
+ throw new SignatureCardException(msg);
+ } else {
+ return resp.getBytes();
+ }
+
+
+ }
+
+ protected void execMSE(CardChannel channel, int p1,
+ int p2, byte[] data) throws SignatureCardException, CardException {
+
+ ResponseAPDU resp = channel.transmit(
+ new CommandAPDU(0x00, 0x22, p1, p2, data));
+
+ if (resp.getSW() != 0x9000) {
+ String msg = "MSE failed: SW="
+ + Integer.toHexString(resp.getSW());
+ log.error(msg);
+ throw new SignatureCardException(msg);
+ }
+
+ }
+
+ protected byte[] execPSO_DECIPHER(CardChannel channel, byte [] cipher) throws CardException, SignatureCardException {
+
+ byte[] data = new byte[cipher.length + 1];
+ data[0] = 0x00;
+ System.arraycopy(cipher, 0, data, 1, cipher.length);
+ ResponseAPDU resp = channel.transmit(new CommandAPDU(0x00, 0x2A, 0x80, 0x86, data, 256));
+ if (resp.getSW() == 0x6982) {
+ throw new SecurityStatusNotSatisfiedException();
+ } else if (resp.getSW() != 0x9000) {
+ throw new SignatureCardException(
+ "PSO - DECIPHER failed: SW="
+ + Integer.toHexString(resp.getSW()));
+ }
+
+ return resp.getData();
+
+ }
+
+ protected void execPSO_HASH(CardChannel channel, byte[] hash) throws CardException, SignatureCardException {
+
+ ResponseAPDU resp = channel.transmit(
+ new CommandAPDU(0x00, 0x2A, 0x90, 0x81, hash));
+ if (resp.getSW() != 0x9000) {
+ throw new SignatureCardException("PSO - HASH failed: SW="
+ + Integer.toHexString(resp.getSW()));
+ }
+
+ }
+
+ protected byte[] execPSO_COMPUTE_DIGITAL_SIGNATURE(CardChannel channel) throws CardException,
+ SignatureCardException {
+
+ ResponseAPDU resp = channel.transmit(
+ new CommandAPDU(0x00, 0x2A, 0x9E, 0x9A, 256));
+ if (resp.getSW() == 0x6982) {
+ throw new SecurityStatusNotSatisfiedException();
+ }
+ if (resp.getSW() != 0x9000) {
+ throw new SignatureCardException(
+ "PSO - COMPUTE DIGITAL SIGNATRE failed: SW="
+ + Integer.toHexString(resp.getSW()));
+ } else {
+ return resp.getData();
+ }
+
+ }
+
+ protected byte[] execINTERNAL_AUTHENTICATE(CardChannel channel, byte[] hash) throws CardException,
+ SignatureCardException {
+
+ byte[] digestInfo = new byte[] { (byte) 0x30, (byte) 0x21, (byte) 0x30,
+ (byte) 0x09, (byte) 0x06, (byte) 0x05, (byte) 0x2B, (byte) 0x0E,
+ (byte) 0x03, (byte) 0x02, (byte) 0x1A, (byte) 0x05, (byte) 0x00,
+ (byte) 0x04 };
+
+ byte[] data = new byte[digestInfo.length + hash.length + 1];
+
+ System.arraycopy(digestInfo, 0, data, 0, digestInfo.length);
+ data[digestInfo.length] = (byte) hash.length;
+ System.arraycopy(hash, 0, data, digestInfo.length + 1, hash.length);
+
+ ResponseAPDU resp = channel.transmit(new CommandAPDU(0x00, 0x88, 0x10, 0x00, data, 256));
+ if (resp.getSW() == 0x6982) {
+ throw new SecurityStatusNotSatisfiedException();
+ } else if (resp.getSW() == 0x6983) {
+ throw new LockedException();
+ } else if (resp.getSW() != 0x9000) {
+ throw new SignatureCardException("INTERNAL AUTHENTICATE failed: SW="
+ + Integer.toHexString(resp.getSW()));
+ } else {
+ return resp.getData();
+ }
+ }
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/AbstractSignatureCard.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/AbstractSignatureCard.java
new file mode 100644
index 00000000..fcb94fc6
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/AbstractSignatureCard.java
@@ -0,0 +1,121 @@
+/*
+* 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.smcc;
+
+import at.gv.egiz.smcc.reader.CardReader;
+import at.gv.egiz.smcc.reader.ReaderFactory;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.ResourceBundle;
+
+import javax.smartcardio.Card;
+import javax.smartcardio.CardChannel;
+import javax.smartcardio.CardException;
+import javax.smartcardio.CardTerminal;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public abstract class AbstractSignatureCard implements SignatureCard {
+
+ private static Log log = LogFactory.getLog(AbstractSignatureCard.class);
+
+ protected List<PINSpec> pinSpecs = new ArrayList<PINSpec>();
+
+ private ResourceBundle i18n;
+ private String resourceBundleName;
+
+ private Locale locale = Locale.getDefault();
+
+ private Card card_;
+
+ protected CardReader reader;
+
+ protected AbstractSignatureCard(String resourceBundleName) {
+ this.resourceBundleName = resourceBundleName;
+ }
+
+ protected String toString(byte[] b) {
+ StringBuffer sb = new StringBuffer();
+ if (b != null && b.length > 0) {
+ sb.append(Integer.toHexString((b[0] & 240) >> 4));
+ sb.append(Integer.toHexString(b[0] & 15));
+ }
+ for (int i = 1; i < b.length; i++) {
+ sb.append(':');
+ sb.append(Integer.toHexString((b[i] & 240) >> 4));
+ sb.append(Integer.toHexString(b[i] & 15));
+ }
+ return sb.toString();
+ }
+
+ @Override
+ public void init(Card card, CardTerminal cardTerminal) {
+ this.card_ = card;
+ this.reader = ReaderFactory.getReader(card, cardTerminal);
+ }
+
+ @Override
+ public Card getCard() {
+ return card_;
+ }
+
+ protected CardChannel getCardChannel() {
+ return new LogCardChannel(card_.getBasicChannel());
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ if (locale == null) {
+ throw new NullPointerException("Locale must not be set to null");
+ }
+ this.locale = locale;
+ }
+
+ protected ResourceBundle getResourceBundle() {
+ if (i18n == null) {
+ i18n = ResourceBundle.getBundle(resourceBundleName, locale);
+ }
+ return i18n;
+ }
+
+ @Override
+ public void disconnect(boolean reset) {
+ log.debug("Disconnect called");
+ if (card_ != null) {
+ try {
+ card_.disconnect(reset);
+ } catch (Exception e) {
+ log.info("Error while resetting card", e);
+ }
+ }
+ }
+
+ @Override
+ public void reset() throws SignatureCardException {
+ try {
+ log.debug("Disconnect and reset smart card.");
+ card_.disconnect(true);
+ log.debug("Reconnect smart card.");
+ card_ = reader.connect();
+ } catch (CardException e) {
+ throw new SignatureCardException("Failed to reset card.", e);
+ }
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/BELPICCard.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/BELPICCard.java
new file mode 100644
index 00000000..41358bb5
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/BELPICCard.java
@@ -0,0 +1,284 @@
+/*
+* 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.smcc;
+
+import at.gv.egiz.smcc.pin.gui.PINGUI;
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+import javax.smartcardio.CardChannel;
+import javax.smartcardio.CardException;
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.smcc.util.ISO7816Utils;
+import at.gv.egiz.smcc.util.SMCCHelper;
+
+public class BELPICCard extends AbstractSignatureCard implements SignatureCard {
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(BELPICCard.class);
+
+ public static final byte[] MF = new byte[] { (byte) 0x3F, (byte) 0x00 };
+
+ public static final byte[] DF_BELPIC = new byte[] { (byte) 0xDF,
+ (byte) 0x00 };
+
+ public static final byte[] DF_ID = new byte[] { (byte) 0xDF, (byte) 0x01 };
+
+ public static final byte[] SIGN_CERT = new byte[] { (byte) 0x50,
+ (byte) 0x39 };
+
+// public static final byte MSE_SET_ALGO_REF = (byte) 0x02;
+
+// public static final byte MSE_SET_PRIV_KEY_REF = (byte) 0x83;
+
+ public static final int SIGNATURE_LENGTH = (int) 0x80;
+
+ public static final byte KID = (byte) 0x01;
+
+ public static final int READ_BUFFER_LENGTH = 256;
+
+ public static final int PINSPEC_SS = 0;
+
+ private static final PINSpec SS_PIN_SPEC =
+ new PINSpec(4, 12, "[0-9]",
+ "at/gv/egiz/smcc/BELPICCard", "sig.pin", KID, DF_BELPIC);
+
+ /**
+ * Creates a new instance.
+ */
+ public BELPICCard() {
+ super("at/gv/egiz/smcc/BelpicCard");
+ pinSpecs.add(SS_PIN_SPEC);
+ }
+
+ @Override
+ @Exclusive
+ public byte[] getCertificate(KeyboxName keyboxName)
+ throws SignatureCardException {
+
+ if (keyboxName != KeyboxName.SECURE_SIGNATURE_KEYPAIR) {
+ throw new IllegalArgumentException("Keybox " + keyboxName
+ + " not supported");
+ }
+
+ try {
+ CardChannel channel = getCardChannel();
+ // SELECT MF
+ execSELECT_FID(channel, MF);
+ // SELECT application
+ execSELECT_FID(channel, DF_BELPIC);
+ // SELECT file
+ execSELECT_FID(channel, SIGN_CERT);
+ // READ BINARY
+ byte[] certificate = ISO7816Utils.readTransparentFileTLV(channel, -1, (byte) 0x30);
+ if (certificate == null) {
+ throw new NotActivatedException();
+ }
+ return certificate;
+ } catch (FileNotFoundException e) {
+ throw new NotActivatedException();
+ } catch (CardException e) {
+ log.info("Failed to get certificate.", e);
+ throw new SignatureCardException(e);
+ }
+
+ }
+
+ @Override
+ @Exclusive
+ public byte[] getInfobox(String infobox, PINGUI provider, String domainId)
+ throws SignatureCardException, InterruptedException {
+
+ throw new IllegalArgumentException("Infobox '" + infobox
+ + "' not supported.");
+ }
+
+ @Override
+ @Exclusive
+ public byte[] createSignature(InputStream input, KeyboxName keyboxName,
+ PINGUI provider, String alg) throws SignatureCardException, InterruptedException, IOException {
+
+ if (KeyboxName.SECURE_SIGNATURE_KEYPAIR != keyboxName) {
+ throw new SignatureCardException("Card does not support key " + keyboxName + ".");
+ }
+ if (!"http://www.w3.org/2000/09/xmldsig#rsa-sha1".equals(alg)) {
+ throw new SignatureCardException("Card does not support algorithm " + alg + ".");
+ }
+
+ byte[] dst = new byte[] { (byte) 0x04, // number of following
+ // bytes
+ (byte) 0x80, // tag for algorithm reference
+ (byte) 0x02, // algorithm reference
+ (byte) 0x84, // tag for private key reference
+ (byte) 0x83 // private key reference
+ };
+
+ MessageDigest md;
+ try {
+ md = MessageDigest.getInstance("SHA-1");
+ } catch (NoSuchAlgorithmException e) {
+ log.error("Failed to get MessageDigest.", e);
+ throw new SignatureCardException(e);
+ }
+ // calculate message digest
+ byte[] digest = new byte[md.getDigestLength()];
+ for (int l; (l = input.read(digest)) != -1;) {
+ md.update(digest, 0, l);
+ }
+ digest = md.digest();
+
+ try {
+
+ CardChannel channel = getCardChannel();
+
+ // SELECT MF
+ execSELECT_FID(channel, MF);
+ // VERIFY
+ execMSE(channel, 0x41, 0xb6, dst);
+ // PERFORM SECURITY OPERATION : COMPUTE DIGITAL SIGNATURE
+ verifyPINLoop(channel, SS_PIN_SPEC, provider);
+ // MANAGE SECURITY ENVIRONMENT : SET DST
+ return execPSO_COMPUTE_DIGITAL_SIGNATURE(channel, digest);
+
+ } catch (CardException e) {
+ log.warn(e);
+ throw new SignatureCardException("Failed to access card.", e);
+ }
+
+ }
+
+ public String toString() {
+ return "Belpic Card";
+ }
+
+ protected void verifyPINLoop(CardChannel channel, PINSpec spec,
+ PINGUI provider) throws LockedException, NotActivatedException,
+ SignatureCardException, InterruptedException, CardException {
+
+ int retries = -1; //verifyPIN(channel, spec, null, -1);
+ do {
+ retries = verifyPIN(channel, spec, provider, retries);
+ } while (retries > 0);
+ }
+
+ protected int verifyPIN(CardChannel channel, PINSpec pinSpec,
+ PINGUI provider, int retries) throws SignatureCardException,
+ LockedException, NotActivatedException, InterruptedException,
+ CardException {
+
+ VerifyAPDUSpec apduSpec = new VerifyAPDUSpec(
+ new byte[] {
+ (byte) 0x00, (byte) 0x20, (byte) 0x00, pinSpec.getKID(), (byte) 0x08,
+ (byte) 0x20, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff },
+ 1, VerifyAPDUSpec.PIN_FORMAT_BCD, 7, 4, 4);
+
+ ResponseAPDU resp = reader.verify(channel, apduSpec, provider, pinSpec, retries);
+
+ if (resp.getSW() == 0x9000) {
+ return -1;
+ }
+ if (resp.getSW() >> 4 == 0x63c) {
+ return 0x0f & resp.getSW();
+ }
+
+ switch (resp.getSW()) {
+ case 0x6983:
+ // authentication method blocked
+ throw new LockedException();
+ case 0x6984:
+ // reference data not usable
+ throw new NotActivatedException();
+ case 0x6985:
+ // conditions of use not satisfied
+ throw new NotActivatedException();
+
+ default:
+ String msg = "VERIFY failed. SW=" + Integer.toHexString(resp.getSW());
+ log.info(msg);
+ throw new SignatureCardException(msg);
+ }
+
+ }
+
+ protected byte[] execSELECT_FID(CardChannel channel, byte[] fid)
+ throws SignatureCardException, CardException {
+
+ ResponseAPDU resp = channel.transmit(
+ new CommandAPDU(0x00, 0xA4, 0x02, 0x0C, fid, 256));
+
+ if (resp.getSW() == 0x6A82) {
+ String msg = "File or application not found FID="
+ + SMCCHelper.toString(fid) + " SW="
+ + Integer.toHexString(resp.getSW()) + ".";
+ log.info(msg);
+ throw new FileNotFoundException(msg);
+ } else if (resp.getSW() != 0x9000) {
+ String msg = "Failed to select application FID="
+ + SMCCHelper.toString(fid) + " SW="
+ + Integer.toHexString(resp.getSW()) + ".";
+ log.error(msg);
+ throw new SignatureCardException(msg);
+ } else {
+ return resp.getBytes();
+ }
+
+ }
+
+ protected void execMSE(CardChannel channel, int p1, int p2, byte[] data)
+ throws CardException, SignatureCardException {
+ ResponseAPDU resp = channel.transmit(
+ new CommandAPDU(0x00, 0x22, p1, p2, data, 256));
+ if (resp.getSW() != 0x9000) {
+ throw new SignatureCardException("MSE:SET failed: SW="
+ + Integer.toHexString(resp.getSW()));
+ }
+ }
+
+ protected byte[] execPSO_COMPUTE_DIGITAL_SIGNATURE(CardChannel channel, byte[] hash)
+ throws CardException, SignatureCardException {
+ ResponseAPDU resp;
+ resp = channel.transmit(
+ new CommandAPDU(0x00, 0x2A, 0x9E, 0x9A, hash, 256));
+ if (resp.getSW() == 0x6982) {
+ throw new SecurityStatusNotSatisfiedException();
+ } else if (resp.getSW() == 0x6983) {
+ throw new LockedException();
+ } else if (resp.getSW() != 0x9000) {
+ throw new SignatureCardException(
+ "PSO: COMPUTE DIGITAL SIGNATRE failed: SW="
+ + Integer.toHexString(resp.getSW()));
+ } else {
+ return resp.getData();
+ }
+ }
+
+
+
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/CancelledException.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/CancelledException.java
new file mode 100644
index 00000000..347d74c9
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/CancelledException.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.smcc;
+
+public class CancelledException extends SignatureCardException {
+
+ private static final long serialVersionUID = 1L;
+
+ public CancelledException() {
+ super();
+ }
+
+ public CancelledException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public CancelledException(String message) {
+ super(message);
+ }
+
+ public CancelledException(Throwable cause) {
+ super(cause);
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/CardNotSupportedException.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/CardNotSupportedException.java
new file mode 100644
index 00000000..1cde093d
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/CardNotSupportedException.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.
+*/
+package at.gv.egiz.smcc;
+
+public class CardNotSupportedException extends Exception {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Creates a new instance of this <code>CardNotSupportedException</code>.
+ *
+ */
+ public CardNotSupportedException() {
+ super();
+ }
+
+ /**
+ * Creates a new instance of this <code>CardNotSupportedException</code>.
+ *
+ * @param message
+ * @param cause
+ */
+ public CardNotSupportedException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ /**
+ * Creates a new instance of this <code>CardNotSupportedException</code>.
+ *
+ * @param message
+ */
+ public CardNotSupportedException(String message) {
+ super(message);
+ }
+
+ /**
+ * Creates a new instance of this <code>CardNotSupportedException</code>.
+ *
+ * @param cause
+ */
+ public CardNotSupportedException(Throwable cause) {
+ super(cause);
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ChangeReferenceDataAPDUSpec.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ChangeReferenceDataAPDUSpec.java
new file mode 100644
index 00000000..0b10d88f
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ChangeReferenceDataAPDUSpec.java
@@ -0,0 +1,95 @@
+/*
+* 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.smcc;
+
+public class ChangeReferenceDataAPDUSpec extends VerifyAPDUSpec {
+
+ /**
+ * The offset for the insertion of the old PIN. (Default: 0)
+ */
+ protected int pinInsertionOffsetOld = 0;
+
+ /**
+ * The offset for the insertion of the new PIN. (Default:
+ * {@link VerifyAPDUSpec#pinLength} + 1})
+ */
+ protected int pinInsertionOffsetNew = pinLength;
+
+ public ChangeReferenceDataAPDUSpec(byte[] apdu, int pinPosition, int pinFormat, int pinLength) {
+ super(apdu, pinPosition, pinFormat, pinLength);
+ }
+
+ /**
+ * @param apdu
+ * @param pinPosition
+ * @param pinFormat
+ * @param pinLength
+ * @param pinLengthSize
+ * @param pinLengthPos
+ */
+ public ChangeReferenceDataAPDUSpec(byte[] apdu, int pinPosition,
+ int pinFormat, int pinLength, int pinLengthSize, int pinLengthPos) {
+ super(apdu, pinPosition, pinFormat, pinLength, pinLengthSize, pinLengthPos);
+ }
+
+ /**
+ * @param apdu
+ * @param pinPosition
+ * @param pinFormat
+ * @param pinLength
+ * @param pinLengthSize
+ * @param pinLengthPos
+ * @param pinInsertionOffsetNew
+ */
+ public ChangeReferenceDataAPDUSpec(byte[] apdu, int pinPosition,
+ int pinFormat, int pinLength, int pinLengthSize, int pinLengthPos,
+ int pinInsertionOffsetNew) {
+ super(apdu, pinPosition, pinFormat, pinLength, pinLengthSize, pinLengthPos);
+ this.pinInsertionOffsetNew = pinInsertionOffsetNew;
+ }
+
+ /**
+ * @return the pinInsertionOffsetOld
+ */
+ public int getPinInsertionOffsetOld() {
+ return pinInsertionOffsetOld;
+ }
+
+ /**
+ * @param pinInsertionOffsetOld the pinInsertionOffsetOld to set
+ */
+ public void setPinInsertionOffsetOld(int pinInsertionOffsetOld) {
+ this.pinInsertionOffsetOld = pinInsertionOffsetOld;
+ }
+
+ /**
+ * @return the pinInsertionOffsetNew
+ */
+ public int getPinInsertionOffsetNew() {
+ return pinInsertionOffsetNew;
+ }
+
+ /**
+ * @param pinInsertionOffsetNew the pinInsertionOffsetNew to set
+ */
+ public void setPinInsertionOffsetNew(int pinInsertionOffsetNew) {
+ this.pinInsertionOffsetNew = pinInsertionOffsetNew;
+ }
+
+
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ExclSignatureCardProxy.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ExclSignatureCardProxy.java
new file mode 100644
index 00000000..bfbd0063
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ExclSignatureCardProxy.java
@@ -0,0 +1,110 @@
+/*
+* 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.smcc;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.ArrayList;
+
+import javax.smartcardio.Card;
+import javax.smartcardio.CardException;
+import javax.smartcardio.CardTerminal;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class ExclSignatureCardProxy implements InvocationHandler {
+
+ private static Log log = LogFactory.getLog(ExclSignatureCardProxy.class);
+
+ private static final Method init;
+
+ static {
+ try {
+ init = SignatureCard.class.getMethod("init", new Class<?>[] { Card.class,
+ CardTerminal.class });
+ } catch (SecurityException e) {
+ throw new RuntimeException(e);
+ } catch (NoSuchMethodException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private SignatureCard signatureCard;
+
+ public ExclSignatureCardProxy(SignatureCard signatureCard) {
+ this.signatureCard = signatureCard;
+ }
+
+ public static SignatureCard newInstance(SignatureCard signatureCard) {
+ ArrayList<Class<?>> proxyInterfaces = new ArrayList<Class<?>>();
+ proxyInterfaces.add(SignatureCard.class);
+ if (PINMgmtSignatureCard.class.isAssignableFrom(signatureCard.getClass())) {
+ proxyInterfaces.add(PINMgmtSignatureCard.class);
+ }
+ ClassLoader loader = signatureCard.getClass().getClassLoader();
+ return (SignatureCard) Proxy.newProxyInstance(loader, proxyInterfaces
+ .toArray(new Class[proxyInterfaces.size()]),
+ new ExclSignatureCardProxy(signatureCard));
+ }
+
+ public static PINMgmtSignatureCard newInstance(PINMgmtSignatureCard signatureCard) {
+ return null;
+ }
+
+ @Override
+ public Object invoke(Object proxy, Method method, Object[] args)
+ throws Throwable {
+
+ Card card = null;
+
+ Method target = signatureCard.getClass().getMethod(method.getName(),
+ method.getParameterTypes());
+
+ if (target.isAnnotationPresent(Exclusive.class)) {
+ card = (Card) ((method.equals(init))
+ ? args[0]
+ : signatureCard.getCard());
+ }
+
+ if (card != null) {
+ try {
+ log.trace("Invoking method " + method.getName() + "() with exclusive access.");
+ card.beginExclusive();
+ } catch (CardException e) {
+ log.info("Failed to get exclusive access to signature card "
+ + signatureCard.toString() + ".");
+ throw new SignatureCardException(e);
+ }
+ }
+
+ try {
+ return method.invoke(signatureCard, args);
+ } catch (InvocationTargetException e) {
+ throw e.getTargetException();
+ } finally {
+ if (card != null) {
+ card.endExclusive();
+ }
+ }
+
+
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/Exclusive.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/Exclusive.java
new file mode 100644
index 00000000..b796b045
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/Exclusive.java
@@ -0,0 +1,28 @@
+/*
+* 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.smcc;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface Exclusive {
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/FileNotFoundException.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/FileNotFoundException.java
new file mode 100644
index 00000000..f96611c2
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/FileNotFoundException.java
@@ -0,0 +1,38 @@
+/*
+* 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.smcc;
+
+public class FileNotFoundException extends SignatureCardException {
+
+ private static final long serialVersionUID = 1L;
+
+ public FileNotFoundException() {
+ }
+
+ public FileNotFoundException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public FileNotFoundException(String message) {
+ super(message);
+ }
+
+ public FileNotFoundException(Throwable cause) {
+ super(cause);
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ITCard.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ITCard.java
new file mode 100644
index 00000000..64389190
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ITCard.java
@@ -0,0 +1,298 @@
+/*
+* 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.smcc;
+
+import at.gv.egiz.smcc.pin.gui.PINGUI;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+
+import javax.smartcardio.CardChannel;
+import javax.smartcardio.CardException;
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.smcc.util.ISO7816Utils;
+import at.gv.egiz.smcc.util.SMCCHelper;
+
+public class ITCard extends AbstractSignatureCard {
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(STARCOSCard.class);
+
+ public static final byte[] MF = new byte[] { (byte) 0x3F, (byte) 0x00 };
+
+ public static final byte[] DF1 = new byte[] { (byte) 0x11, (byte) 0x00 };
+
+ public static final byte[] EF_C_Carta = new byte[] { (byte) 0x11, (byte) 0x01 };
+
+ private static final PINSpec SS_PIN_SPEC =
+ new PINSpec(5, 8, "[0-9]",
+ "at/gv/egiz/smcc/ITCard", "sig.pin", (byte) 0x10,
+ new byte[] { (byte) 0x11, (byte) 0x00 });
+
+ /**
+ * Creates a new instance.
+ */
+ public ITCard() {
+ super("at/gv/egiz/smcc/ITCard");
+ pinSpecs.add(SS_PIN_SPEC);
+ }
+
+ @Override
+ @Exclusive
+ public byte[] getCertificate(KeyboxName keyboxName)
+ throws SignatureCardException, InterruptedException {
+
+ if (keyboxName != KeyboxName.SECURE_SIGNATURE_KEYPAIR) {
+ throw new IllegalArgumentException("Keybox " + keyboxName
+ + " not supported");
+ }
+
+ try {
+ CardChannel channel = getCardChannel();
+ // SELECT MF
+ execSELECT_FID(channel, MF);
+ // SELECT application
+ execSELECT_FID(channel, DF1);
+ // SELECT EF_C_Carta
+ byte[] fcx = execSELECT_FID(channel, EF_C_Carta);
+ int maxsize = ISO7816Utils.getLengthFromFCx(fcx);
+ // READ BINARY
+ byte[] certificate = ISO7816Utils.readTransparentFileTLV(channel, maxsize, (byte) 0x30);
+ if (certificate == null) {
+ throw new NotActivatedException();
+ }
+ return certificate;
+ } catch (FileNotFoundException e) {
+ throw new NotActivatedException();
+ } catch (CardException e) {
+ log.info("Failed to get certificate.", e);
+ throw new SignatureCardException(e);
+ }
+
+ }
+
+ @Override
+ @Exclusive
+ public byte[] getInfobox(String infobox, PINGUI provider, String domainId)
+ throws SignatureCardException, InterruptedException {
+
+ throw new IllegalArgumentException("Infobox '" + infobox
+ + "' not supported.");
+ }
+
+ @Override
+ @Exclusive
+ public byte[] createSignature(InputStream input, KeyboxName keyboxName,
+ PINGUI provider, String alg) throws SignatureCardException,
+ InterruptedException, IOException {
+
+ if (KeyboxName.SECURE_SIGNATURE_KEYPAIR != keyboxName) {
+ throw new SignatureCardException("Card does not support key " + keyboxName + ".");
+ }
+ if (!"http://www.w3.org/2000/09/xmldsig#rsa-sha1".equals(alg)) {
+ throw new SignatureCardException("Card does not support algorithm " + alg + ".");
+ }
+
+ byte[] dst = new byte[] {
+ (byte) 0x83, // tag for algorithm reference
+ (byte) 0x01, // algorithm reference
+ (byte) 0x01 // private key reference
+ };
+
+ MessageDigest md;
+ try {
+ md = MessageDigest.getInstance("SHA-1");
+ } catch (NoSuchAlgorithmException e) {
+ log.error("Failed to get MessageDigest.", e);
+ throw new SignatureCardException(e);
+ }
+ // calculate message digest
+ byte[] digest = new byte[md.getDigestLength()];
+ for (int l; (l = input.read(digest)) != -1;) {
+ md.update(digest, 0, l);
+ }
+ digest = md.digest();
+
+ try {
+
+ CardChannel channel = getCardChannel();
+
+ // SELECT MF
+ execSELECT_FID(channel, MF);
+ // VERIFY
+ verifyPINLoop(channel, SS_PIN_SPEC, provider);
+ // MANAGE SECURITY ENVIRONMENT : RESTORE SE
+ execMSE(channel, 0xF3, 0x03, null);
+ // MANAGE SECURITY ENVIRONMENT : SET DST
+ execMSE(channel, 0xF1, 0xB8, dst);
+ // PERFORM SECURITY OPERATION : COMPUTE DIGITAL SIGNATURE
+ return execPSO_COMPUTE_DIGITAL_SIGNATURE(channel, digest);
+
+ } catch (CardException e) {
+ log.warn(e);
+ throw new SignatureCardException("Failed to access card.", e);
+ }
+
+ }
+
+ protected void verifyPINLoop(CardChannel channel, PINSpec spec,
+ PINGUI provider) throws LockedException, NotActivatedException,
+ SignatureCardException, InterruptedException, CardException {
+
+ int retries = -1;
+ do {
+ retries = verifyPIN(channel, spec, provider, retries);
+ } while (retries >= -1);
+ }
+
+ protected int verifyPIN(CardChannel channel, PINSpec pinSpec,
+ PINGUI provider, int retries) throws SignatureCardException,
+ LockedException, NotActivatedException, InterruptedException,
+ CardException {
+
+ VerifyAPDUSpec apduSpec = new VerifyAPDUSpec(
+ new byte[] {
+ (byte) 0x00, (byte) 0x20, (byte) 0x00, pinSpec.getKID(), (byte) 0x08,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff },
+ 0, VerifyAPDUSpec.PIN_FORMAT_ASCII, 8);
+
+ ResponseAPDU resp = reader.verify(channel, apduSpec, provider, pinSpec, retries);
+
+ if (resp.getSW() == 0x9000) {
+ return -2;
+ }
+ if (resp.getSW() >> 4 == 0x63c) {
+ return 0x0f & resp.getSW();
+ }
+
+ switch (resp.getSW()) {
+ case 0x6300:
+ // incorrect PIN, number of retries not provided
+ return -1;
+ case 0x6983:
+ // authentication method blocked
+ throw new LockedException();
+ case 0x6984:
+ // reference data not usable
+ throw new NotActivatedException();
+ case 0x6985:
+ // conditions of use not satisfied
+ throw new NotActivatedException();
+
+ default:
+ String msg = "VERIFY failed. SW=" + Integer.toHexString(resp.getSW());
+ log.info(msg);
+ throw new SignatureCardException(msg);
+ }
+
+ }
+
+ protected byte[] execSELECT_FID(CardChannel channel, byte[] fid)
+ throws SignatureCardException, CardException {
+
+ ResponseAPDU resp = channel.transmit(
+ new CommandAPDU(0x00, 0xA4, 0x00, 0x00, fid, 256));
+
+ if (resp.getSW() == 0x6A82) {
+ String msg = "File or application not found FID="
+ + SMCCHelper.toString(fid) + " SW="
+ + Integer.toHexString(resp.getSW()) + ".";
+ log.info(msg);
+ throw new FileNotFoundException(msg);
+ } else if (resp.getSW() != 0x9000) {
+ String msg = "Failed to select application FID="
+ + SMCCHelper.toString(fid) + " SW="
+ + Integer.toHexString(resp.getSW()) + ".";
+ log.error(msg);
+ throw new SignatureCardException(msg);
+ } else {
+ return resp.getBytes();
+ }
+
+ }
+
+ protected void execMSE(CardChannel channel, int p1, int p2, byte[] data)
+ throws CardException, SignatureCardException {
+
+ ResponseAPDU resp;
+ if (data == null) {
+ resp = channel.transmit(new CommandAPDU(0x00, 0x22, p1, p2));
+ } else {
+ resp = channel.transmit(new CommandAPDU(0x00, 0x22, p1, p2, data));
+ }
+
+ if (resp.getSW() != 0x9000) {
+ throw new SignatureCardException("MSE:SET failed: SW="
+ + Integer.toHexString(resp.getSW()));
+ }
+ }
+
+ protected byte[] execPSO_COMPUTE_DIGITAL_SIGNATURE(CardChannel channel,
+ byte[] hash) throws CardException, SignatureCardException {
+
+ byte[] oid = new byte[] { (byte) 0x30, (byte) 0x21, (byte) 0x30,
+ (byte) 0x09, (byte) 0x06, (byte) 0x05, (byte) 0x2b,
+ (byte) 0x0e, (byte) 0x03, (byte) 0x02, (byte) 0x1a,
+ (byte) 0x05, (byte) 0x00, (byte) 0x04, (byte) 0x14 };
+
+ ByteArrayOutputStream data = new ByteArrayOutputStream();
+
+ try {
+ // header
+ data.write(new byte[] { (byte) 0x00, (byte) 0x00, (byte) 0x01 });
+ // padding
+ for (int i = 0, len = 125 - hash.length - oid.length; i < len; i++) {
+ data.write((byte) 0xFF);
+ }
+ data.write((byte) 0x00);
+ // oid
+ data.write(oid);
+ // hash
+ data.write(hash);
+ } catch (IOException e) {
+ throw new SignatureCardException(e);
+ }
+
+ ResponseAPDU resp = channel
+ .transmit(new CommandAPDU(0x00, 0x2A, 0x80, 0x86, data.toByteArray(), 0x81));
+
+
+ if (resp.getSW() == 0x6982) {
+ throw new SecurityStatusNotSatisfiedException();
+ } else if (resp.getSW() == 0x6983) {
+ throw new LockedException();
+ } else if (resp.getSW() != 0x9000) {
+ throw new SignatureCardException(
+ "PSO: COMPUTE DIGITAL SIGNATRE failed: SW="
+ + Integer.toHexString(resp.getSW()));
+ } else {
+ return resp.getData();
+ }
+}
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/LockedException.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/LockedException.java
new file mode 100644
index 00000000..e00322a0
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/LockedException.java
@@ -0,0 +1,38 @@
+/*
+* 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.smcc;
+
+public class LockedException extends SignatureCardException {
+
+ private static final long serialVersionUID = 1L;
+
+ public LockedException() {
+ }
+
+ public LockedException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public LockedException(String message) {
+ super(message);
+ }
+
+ public LockedException(Throwable cause) {
+ super(cause);
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/LogCardChannel.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/LogCardChannel.java
new file mode 100644
index 00000000..3fc80fa1
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/LogCardChannel.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.smcc;
+
+import java.nio.ByteBuffer;
+
+import javax.smartcardio.Card;
+import javax.smartcardio.CardChannel;
+import javax.smartcardio.CardException;
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class LogCardChannel extends CardChannel {
+
+ protected static Log log = LogFactory.getLog(LogCardChannel.class);
+
+ private CardChannel channel;
+
+ public LogCardChannel(CardChannel channel) {
+ if (channel == null) {
+ throw new NullPointerException();
+ }
+ this.channel = channel;
+ }
+
+ @Override
+ public void close() throws CardException {
+ channel.close();
+ }
+
+ @Override
+ public Card getCard() {
+ return channel.getCard();
+ }
+
+ @Override
+ public int getChannelNumber() {
+ return channel.getChannelNumber();
+ }
+
+ @Override
+ public ResponseAPDU transmit(CommandAPDU command) throws CardException {
+ if (log.isTraceEnabled()) {
+ switch (command.getINS()) {
+ case 0x20: // VERIFY
+ case 0x21: // VERIFY
+ case 0x24: { // CHANGE REFERENCE DATA
+ // Don't log possibly sensitive command data
+ StringBuilder sb = new StringBuilder();
+ sb.append(command);
+ sb.append('\n');
+ byte[] c = new byte[4];
+ c[0] = (byte) command.getCLA();
+ c[1] = (byte) command.getINS();
+ c[2] = (byte) command.getP1();
+ c[3] = (byte) command.getP2();
+ sb.append(toString(c));
+ if (command.getNc() > 0) {
+ sb.append(':');
+ sb.append(toString(new byte[] {(byte) command.getNc()}));
+ for (int i = 0; i < command.getNc(); i++) {
+ sb.append(":XX");
+ }
+ }
+ if (command.getNe() > 0) {
+ sb.append(':');
+ sb.append(toString(new byte[] {(byte) command.getNe()}));
+ }
+ log.trace(sb.toString());
+ }; break;
+
+ default:
+ log.trace(command + "\n" + toString(command.getBytes()));
+ }
+ long t0 = System.currentTimeMillis();
+ ResponseAPDU response = channel.transmit(command);
+ long t1 = System.currentTimeMillis();
+ log.trace(response + " [" + (t1 - t0) + "ms]\n" + toString(response.getBytes()));
+ return response;
+ } else {
+ return channel.transmit(command);
+ }
+ }
+
+ @Override
+ public int transmit(ByteBuffer command, ByteBuffer response) throws CardException {
+ if (log.isTraceEnabled()) {
+ long t0 = System.currentTimeMillis();
+ int l = channel.transmit(command, response);
+ long t1 = System.currentTimeMillis();
+ log.trace("[" + (t1 - t0) + "ms]");
+ return l;
+ } else {
+ return channel.transmit(command, response);
+ }
+ }
+
+ private String toString(byte[] b) {
+ StringBuffer sb = new StringBuffer();
+ if (b != null && b.length > 0) {
+ sb.append(Integer.toHexString((b[0] & 240) >> 4));
+ sb.append(Integer.toHexString(b[0] & 15));
+ }
+ for (int i = 1; i < b.length; i++) {
+ sb.append(':');
+ sb.append(Integer.toHexString((b[i] & 240) >> 4));
+ sb.append(Integer.toHexString(b[i] & 15));
+ }
+ return sb.toString();
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/NewReferenceDataAPDUSpec.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/NewReferenceDataAPDUSpec.java
new file mode 100644
index 00000000..2eadaf26
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/NewReferenceDataAPDUSpec.java
@@ -0,0 +1,60 @@
+/*
+* 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.smcc;
+
+public class NewReferenceDataAPDUSpec extends VerifyAPDUSpec {
+
+ /**
+ * The offset for the insertion of the new PIN. (Default:
+ * {@link VerifyAPDUSpec#pinLength} + 1})
+ */
+ protected int pinInsertionOffsetNew = 0;
+
+ public NewReferenceDataAPDUSpec(byte[] apdu, int pinPosition, int pinFormat, int pinLength) {
+ super(apdu, pinPosition, pinFormat, pinLength);
+ }
+
+ /**
+ * @param apdu
+ * @param pinPosition
+ * @param pinFormat
+ * @param pinLength
+ * @param pinLengthSize
+ * @param pinLengthPos
+ */
+ public NewReferenceDataAPDUSpec(byte[] apdu, int pinPosition,
+ int pinFormat, int pinLength, int pinLengthSize, int pinLengthPos) {
+ super(apdu, pinPosition, pinFormat, pinLength, pinLengthSize, pinLengthPos);
+ }
+
+ /**
+ * @return the pinInsertionOffsetNew
+ */
+ public int getPinInsertionOffsetNew() {
+ return pinInsertionOffsetNew;
+ }
+
+ /**
+ * @param pinInsertionOffsetNew the pinInsertionOffsetNew to set
+ */
+ public void setPinInsertionOffsetNew(int pinInsertionOffsetNew) {
+ this.pinInsertionOffsetNew = pinInsertionOffsetNew;
+ }
+
+
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/NotActivatedException.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/NotActivatedException.java
new file mode 100644
index 00000000..9181fc5f
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/NotActivatedException.java
@@ -0,0 +1,44 @@
+/*
+* 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.smcc;
+
+/**
+ * This exception is thrown upon a call to a function that
+ * has not been activated (e.g. not yet activated citizen card).
+ */
+public class NotActivatedException extends SignatureCardException {
+
+ private static final long serialVersionUID = 1L;
+
+ public NotActivatedException() {
+ super();
+ }
+
+ public NotActivatedException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public NotActivatedException(String message) {
+ super(message);
+ }
+
+ public NotActivatedException(Throwable cause) {
+ super(cause);
+ }
+
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINConfirmationException.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINConfirmationException.java
new file mode 100644
index 00000000..24dfa53c
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINConfirmationException.java
@@ -0,0 +1,26 @@
+/*
+* 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.smcc;
+
+/**
+ * TODO check whether card readers distinguish specific reason (pin too short?)
+ * and add getters/setters
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class PINConfirmationException extends SignatureCardException {
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINFormatException.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINFormatException.java
new file mode 100644
index 00000000..721c63e2
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINFormatException.java
@@ -0,0 +1,26 @@
+/*
+* 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.smcc;
+
+/**
+ * TODO check whether card readers distinguish specific reason (pin too short?)
+ * and add getters/setters
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class PINFormatException extends SignatureCardException {
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINMgmtSignatureCard.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINMgmtSignatureCard.java
new file mode 100644
index 00000000..5091c10f
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINMgmtSignatureCard.java
@@ -0,0 +1,44 @@
+/*
+* 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.smcc;
+
+import at.gv.egiz.smcc.pin.gui.ModifyPINGUI;
+
+import at.gv.egiz.smcc.pin.gui.PINGUI;
+import java.util.List;
+
+public interface PINMgmtSignatureCard extends SignatureCard {
+
+ public enum PIN_STATE {UNKNOWN, ACTIV, NOT_ACTIV, BLOCKED};
+
+ public List<PINSpec> getPINSpecs();
+
+ public PIN_STATE getPINState(PINSpec pinSpec) throws SignatureCardException;
+
+ public void verifyPIN(PINSpec pinSpec, PINGUI pinGUI)
+ throws LockedException, NotActivatedException, CancelledException, SignatureCardException, InterruptedException;
+
+ public void changePIN(PINSpec pinSpec, ModifyPINGUI changePINGUI)
+ throws LockedException, NotActivatedException, CancelledException, PINFormatException, SignatureCardException, InterruptedException;
+
+ public void activatePIN(PINSpec pinSpec, ModifyPINGUI activatePINGUI)
+ throws CancelledException, SignatureCardException, InterruptedException;
+
+ public void unblockPIN(PINSpec pinSpec, ModifyPINGUI pukGUI)
+ throws CancelledException, SignatureCardException, InterruptedException;
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINOperationAbortedException.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINOperationAbortedException.java
new file mode 100644
index 00000000..51e4904e
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINOperationAbortedException.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.smcc;
+
+/**
+ * TODO check whether card readers distinguish specific reason (pin too short?)
+ * and add getters/setters
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class PINOperationAbortedException extends SignatureCardException {
+
+ private static final long serialVersionUID = 1L;
+
+ public PINOperationAbortedException() {
+ super();
+ }
+
+ public PINOperationAbortedException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public PINOperationAbortedException(String message) {
+ super(message);
+ }
+
+ public PINOperationAbortedException(Throwable cause) {
+ super(cause);
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINSpec.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINSpec.java
new file mode 100644
index 00000000..f68edbed
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/PINSpec.java
@@ -0,0 +1,239 @@
+/*
+* 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.smcc;
+
+import java.util.Locale;
+import java.util.MissingResourceException;
+import java.util.ResourceBundle;
+
+/**
+ *
+ * @author mcentner
+ */
+public class PINSpec {
+
+ /**
+ * The minimum PIN length.
+ */
+ protected int minLength = 0;
+
+ /**
+ * The maximum PIN length or -1 if not specified.
+ */
+ protected int maxLength = -1;
+
+ /**
+ * The recommended PIN length or -1 if not specified.
+ */
+ protected int recLength = -1;
+
+ /**
+ * The regular expression pattern of a single PIN digit or character.
+ */
+ protected String rexepPattern;
+
+ /**
+ * The name of the corresponding resource bundle.
+ */
+ protected String resourceBundleName;
+
+ /**
+ * The key of the PIN name in the resource bundle.
+ */
+ protected String nameKey;
+
+ /**
+ * The name of the PIN.
+ */
+ protected String name;
+
+ /**
+ * The key id to be used in VERIFY or CHANGE REFERENCE DATA APDUs.
+ */
+ protected byte kid;
+
+ /**
+ * The context AID of the key id.
+ */
+ protected byte[] context_aid;
+
+ /**
+ * Creates a new instance of this PINSpec with the given lengths, regular
+ * expression pattern, the ResourceBundle name and key to lookup the PIN name
+ * and the KID and AID.
+ *
+ * @param minLenght the minimum length of the PIN
+ * @param maxLength the maximum length of the PIN, or -1 if there is no maximum length
+ * @param rexepPattern the regular expression pattern of a single PIN digit or character
+ * @param resourceBundleName the name of a ResourceBundle for this PIN
+ * @param resourceKey the key to look up the (localized) name of this PIN
+ * @param kid the key id of the PIN
+ * @param contextAID the AID the KID is valid in
+ */
+ public PINSpec(int minLenght, int maxLength, String rexepPattern,
+ String resourceBundleName, String resourceKey, byte kid, byte[] contextAID) {
+
+ this.minLength = minLenght;
+ this.maxLength = maxLength;
+ this.rexepPattern = rexepPattern;
+ this.resourceBundleName = resourceBundleName;
+ this.nameKey = resourceKey + ".name";
+ this.kid = kid;
+ this.context_aid = contextAID;
+ }
+
+ /**
+ * Creates a new instance of this PINSpec with the given lengths, regular
+ * expression pattern, the name of the PIN and the KID and AID.
+ *
+ * @param minLenght the minimum length of the PIN
+ * @param maxLength the maximum length of the PIN, or -1 if there is no maximum length
+ * @param rexepPattern the regular expression pattern of a single PIN digit or character
+ * @param name the name of the PIN
+ * @param kid the key id of the PIN
+ * @param contextAID the AID the KID is valid in
+ */
+ public PINSpec(int minLenght, int maxLength, String rexepPattern,
+ String name, byte kid, byte[] contextAID) {
+
+ this.minLength = minLenght;
+ this.maxLength = maxLength;
+ this.rexepPattern = rexepPattern;
+ this.name = name;
+ this.kid = kid;
+ this.context_aid = contextAID;
+ }
+
+ /**
+ * This method sets the recommended PIN length.
+ *
+ * @param recLength the recommended PIN length
+ */
+ public void setRecLength(int recLength) {
+ this.recLength = recLength;
+ }
+
+ /**
+ * @return the localized (using the default locale) name of the PIN, or the
+ * name set by
+ * {@link #PINSpec(int, int, String, String, byte, byte[])}.
+ */
+ public String getLocalizedName() {
+ if (name != null) {
+ return name;
+ } else if (resourceBundleName != null){
+ try {
+ return ResourceBundle.getBundle(resourceBundleName).getString(nameKey);
+ } catch (MissingResourceException e) {
+ }
+ }
+ return nameKey;
+ }
+
+ /**
+ * @param locale the locale for which the name should be returned
+ * @return the localized name of the PIN, or the name set by
+ * {@link #PINSpec(int, int, String, String, byte, byte[])}
+ */
+ public String getLocalizedName(Locale locale) {
+ if (name != null) {
+ return name;
+ } else if (resourceBundleName != null) {
+ try {
+ return ResourceBundle.getBundle(resourceBundleName, locale).getString(nameKey);
+ } catch (MissingResourceException e) {
+ }
+ }
+ return nameKey;
+ }
+
+ /**
+ * @return the recommended PIN length if specified and
+ * <code>recommended</code> is <code>true</code>, or
+ * <code>minLength</code>-<code>maxLength</code>
+ */
+ public String getLocalizedLength() {
+
+ if (recLength > 0) {
+ return "" + recLength;
+ } else if (maxLength == minLength) {
+ return "" + minLength;
+ } else if (maxLength > minLength) {
+ return minLength + "-" + maxLength;
+ } else {
+ return minLength + "+";
+ }
+
+ }
+
+ /**
+ * @return the minimum length of the PIN
+ */
+ public int getMinLength() {
+ return minLength;
+ }
+
+ /**
+ * @return the maximum length of the PIN, or -1 if not specified.
+ */
+ public int getMaxLength() {
+ return maxLength;
+ }
+
+ /**
+ * @return the minimum length of the PIN
+ */
+ public int getRecMinLength() {
+ return (recLength >= minLength) ? recLength : minLength;
+ }
+
+ /**
+ * @return the maximum length of the PIN
+ */
+ public int getRecMaxLength() {
+ return (recLength >= minLength) ? recLength : maxLength;
+ }
+
+ /**
+ * @return the recommended length of the PIN, or -1 if not specified
+ */
+ public int getRecLength() {
+ return recLength;
+ }
+
+ /**
+ * @return the regular expression pattern of one single digit or character
+ */
+ public String getRexepPattern() {
+ return rexepPattern;
+ }
+
+ /**
+ * @return the key id of the PIN
+ */
+ public byte getKID() {
+ return kid;
+ }
+
+ /**
+ * @return the AID the KID is valid in, or <code>null</code> if KID is global
+ */
+ public byte[] getContextAID() {
+ return context_aid;
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ResetRetryCounterAPDUSpec.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ResetRetryCounterAPDUSpec.java
new file mode 100644
index 00000000..7e71eb7e
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/ResetRetryCounterAPDUSpec.java
@@ -0,0 +1,38 @@
+/*
+* 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.smcc;
+
+public class ResetRetryCounterAPDUSpec extends ChangeReferenceDataAPDUSpec {
+
+ /**
+ * @param apdu
+ * @param pukPosition
+ * @param pukFormat
+ * @param pukLength
+ * @param pukLengthSize
+ * @param pukLengthPos
+ * @param pinInsertionOffsetNew
+ */
+ public ResetRetryCounterAPDUSpec(byte[] apdu, int pukPosition,
+ int pukFormat, int pukLength, int pukLengthSize, int pukLengthPos,
+ int pinInsertionOffsetNew) {
+ super(apdu, pukPosition, pukFormat, pukLength, pukLengthSize, pukLengthPos);
+ this.pinInsertionOffsetNew = pinInsertionOffsetNew;
+ }
+
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/STARCOSCard.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/STARCOSCard.java
new file mode 100644
index 00000000..b876847f
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/STARCOSCard.java
@@ -0,0 +1,888 @@
+/*
+* 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.smcc;
+
+import at.gv.egiz.smcc.pin.gui.ModifyPINGUI;
+import at.gv.egiz.smcc.pin.gui.PINGUI;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.smartcardio.Card;
+import javax.smartcardio.CardChannel;
+import javax.smartcardio.CardException;
+import javax.smartcardio.CardTerminal;
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.smcc.util.ISO7816Utils;
+import at.gv.egiz.smcc.util.SMCCHelper;
+
+public class STARCOSCard extends AbstractSignatureCard implements PINMgmtSignatureCard {
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(STARCOSCard.class);
+
+ public static final byte[] MF = new byte[] { (byte) 0x3F, (byte) 0x00 };
+
+ public static final byte[] EF_VERSION = new byte[] { (byte) 0x00, (byte) 0x32 };
+
+ /**
+ * Application ID <em>SV-Personendaten</em>.
+ */
+ public static final byte[] AID_SV_PERSONENDATEN = new byte[] {
+ (byte) 0xD0, (byte) 0x40, (byte) 0x00, (byte) 0x00,
+ (byte) 0x17, (byte) 0x01, (byte) 0x01, (byte) 0x01
+ };
+
+ /**
+ * File ID <em>Grunddaten</em> ({@link #AID_SV_PERSONENDATEN}).
+ */
+ public static final byte[] FID_GRUNDDATEN = new byte[] {
+ (byte) 0xEF, (byte) 0x01
+ };
+
+ /**
+ * File ID <em>EHIC</em> ({@link #AID_SV_PERSONENDATEN}).
+ */
+ public static final byte[] FID_EHIC = new byte[] {
+ (byte) 0xEF, (byte) 0x02
+ };
+
+ /**
+ * File ID <em>Status</em> ({@link #AID_SV_PERSONENDATEN}).
+ */
+ public static final byte[] FID_SV_PERSONENBINDUNG = new byte[] {
+ (byte) 0xEF, (byte) 0x03
+ };
+
+ /**
+ * File ID <em>Status</em> ({@link #AID_SV_PERSONENDATEN}).
+ */
+ public static final byte[] FID_STATUS = new byte[] {
+ (byte) 0xEF, (byte) 0x04
+ };
+
+ public static final byte[] AID_INFOBOX = new byte[] { (byte) 0xd0,
+ (byte) 0x40, (byte) 0x00, (byte) 0x00, (byte) 0x17, (byte) 0x00,
+ (byte) 0x18, (byte) 0x01 };
+
+ public static final byte[] EF_INFOBOX = new byte[] { (byte) 0xef, (byte) 0x01 };
+
+ public static final byte[] AID_SVSIG_CERT = new byte[] { (byte) 0xd0,
+ (byte) 0x40, (byte) 0x00, (byte) 0x00, (byte) 0x17, (byte) 0x00,
+ (byte) 0x10, (byte) 0x01 };
+
+ public static final byte[] EF_SVSIG_CERT_CA = new byte[] { (byte) 0x2f,
+ (byte) 0x01 };
+
+ public static final byte[] EF_SVSIG_CERT = new byte[] { (byte) 0x2f,
+ (byte) 0x02 };
+
+ // Sichere Signatur (SS)
+
+ public static final byte[] AID_DF_SS = new byte[] { (byte) 0xd0, (byte) 0x40,
+ (byte) 0x00, (byte) 0x00, (byte) 0x17, (byte) 0x00, (byte) 0x12,
+ (byte) 0x01 };
+
+ public static final byte[] EF_C_X509_CH_DS = new byte[] { (byte) 0xc0,
+ (byte) 0x00 };
+
+ public static final byte[] EF_C_X509_CA_CS_DS = new byte[] { (byte) 0xc6,
+ (byte) 0x08 };
+
+ public static final byte KID_PIN_SS = (byte) 0x81;
+
+ // Gewöhnliche Signatur (GS)
+
+ public static final byte[] AID_DF_GS = new byte[] { (byte) 0xd0, (byte) 0x40,
+ (byte) 0x00, (byte) 0x00, (byte) 0x17, (byte) 0x00, (byte) 0x13,
+ (byte) 0x01 };
+
+ public static final byte[] EF_C_X509_CH_AUT = new byte[] { (byte) 0x2f,
+ (byte) 0x01 };
+
+ public static final byte[] EF_C_X509_CA_CS = new byte[] { (byte) 0x2f,
+ (byte) 0x02 };
+
+ public static final byte KID_PIN_CARD = (byte) 0x01;
+
+ private static final PINSpec CARD_PIN_SPEC =
+ new PINSpec(4, 12, "[0-9]",
+ "at/gv/egiz/smcc/STARCOSCard", "card.pin", KID_PIN_CARD, null);
+
+ private static final PINSpec SS_PIN_SPEC =
+ new PINSpec(6, 12, "[0-9]",
+ "at/gv/egiz/smcc/STARCOSCard", "sig.pin", KID_PIN_SS, AID_DF_SS);
+
+ static {
+ if (SignatureCardFactory.ENFORCE_RECOMMENDED_PIN_LENGTH) {
+ CARD_PIN_SPEC.setRecLength(4);
+ SS_PIN_SPEC.setRecLength(6);
+ }
+ }
+
+ protected double version = 1.1;
+
+ /**
+ * Creates a new instance.
+ */
+ public STARCOSCard() {
+ super("at/gv/egiz/smcc/STARCOSCard");
+ pinSpecs.add(CARD_PIN_SPEC);
+ pinSpecs.add(SS_PIN_SPEC);
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.smcc.AbstractSignatureCard#init(javax.smartcardio.Card, javax.smartcardio.CardTerminal)
+ */
+ @Override
+ public void init(Card card, CardTerminal cardTerminal) {
+ super.init(card, cardTerminal);
+
+ // determine application version
+ CardChannel channel = getCardChannel();
+ try {
+ // SELECT MF
+ execSELECT_MF(channel);
+ // SELECT EF_VERSION
+ execSELECT_FID(channel, EF_VERSION);
+ // READ BINARY
+ byte[] ver = ISO7816Utils.readRecord(channel, 1);
+ if (ver[0] == (byte) 0xa5 && ver[2] == (byte) 0x53) {
+ version = (0x0F & ver[4]) + (0xF0 & ver[5])/160.0 + (0x0F & ver[5])/100.0;
+ String generation = (version < 1.2) ? "<= G2" : "G3";
+ log.info("e-card version=" + version + " (" + generation + ")");
+ }
+ } catch (CardException e) {
+ log.warn(e);
+ } catch (SignatureCardException e) {
+ log.warn(e);
+ }
+
+ }
+
+ @Override
+ @Exclusive
+ public byte[] getCertificate(KeyboxName keyboxName)
+ throws SignatureCardException, InterruptedException {
+
+ byte[] aid;
+ byte[] fid;
+ if (keyboxName == KeyboxName.SECURE_SIGNATURE_KEYPAIR) {
+ aid = AID_DF_SS;
+ fid = EF_C_X509_CH_DS;
+ } else if (keyboxName == KeyboxName.CERITIFIED_KEYPAIR) {
+ aid = AID_DF_GS;
+ fid = EF_C_X509_CH_AUT;
+ } else {
+ throw new IllegalArgumentException("Keybox " + keyboxName
+ + " not supported.");
+ }
+
+ try {
+ CardChannel channel = getCardChannel();
+ // SELECT application
+ execSELECT_AID(channel, aid);
+ // SELECT file
+ execSELECT_FID(channel, fid);
+ // READ BINARY
+ byte[] certificate = ISO7816Utils.readTransparentFileTLV(channel, -1, (byte) 0x30);
+ if (certificate == null) {
+ throw new NotActivatedException();
+ }
+ return certificate;
+ } catch (FileNotFoundException e) {
+ throw new NotActivatedException();
+ } catch (CardException e) {
+ log.info("Failed to get certificate.", e);
+ throw new SignatureCardException(e);
+ }
+
+ }
+
+ @Override
+ @Exclusive
+ public byte[] getInfobox(String infobox, PINGUI pinGUI, String domainId)
+ throws SignatureCardException, InterruptedException {
+
+ try {
+ if ("IdentityLink".equals(infobox)) {
+
+ PINSpec spec = CARD_PIN_SPEC;
+
+ CardChannel channel = getCardChannel();
+ // SELECT application
+ execSELECT_AID(channel, AID_INFOBOX);
+ // SELECT file
+ execSELECT_FID(channel, EF_INFOBOX);
+
+ while (true) {
+ try {
+ return ISO7816Utils.readTransparentFileTLV(channel, -1, (byte) 0x30);
+ } catch (SecurityStatusNotSatisfiedException e) {
+ verifyPINLoop(channel, spec, pinGUI);
+ }
+ }
+
+ } else if ("Status".equals(infobox)) {
+
+ CardChannel channel = getCardChannel();
+ // SELECT application
+ execSELECT_AID(channel, AID_SV_PERSONENDATEN);
+ // SELECT file
+ execSELECT_FID(channel, FID_STATUS);
+ // READ RECORDS
+ ByteArrayOutputStream bytes = new ByteArrayOutputStream();
+ try {
+ for (int record = 1; record <= 5; record++) {
+ byte[] rb = ISO7816Utils.readRecord(channel, record);
+ bytes.write(rb);
+ }
+ } catch (IOException e) {
+ throw new SignatureCardException("Failed to read infobox '" + infobox
+ + "'.", e);
+ }
+ return bytes.toByteArray();
+
+ } else {
+
+ byte[] fid;
+
+ if ("EHIC".equals(infobox)) {
+ fid = FID_EHIC;
+ } else if ("Grunddaten".equals(infobox)) {
+ fid = FID_GRUNDDATEN;
+ } else if ("SV-Personenbindung".equals(infobox)) {
+ fid = FID_SV_PERSONENBINDUNG;
+ } else {
+ throw new IllegalArgumentException("Infobox '" + infobox
+ + "' not supported.");
+ }
+
+ CardChannel channel = getCardChannel();
+ // SELECT application
+ execSELECT_AID(channel, AID_SV_PERSONENDATEN);
+ // SELECT file
+ execSELECT_FID(channel, fid);
+ // READ BINARY
+ return ISO7816Utils.readTransparentFileTLV(channel, -1, (byte) 0x30);
+
+ }
+
+ } catch (CardException e) {
+ log.warn(e);
+ throw new SignatureCardException("Failed to access card.", e);
+ }
+ }
+
+ @Override
+ @Exclusive
+ public byte[] createSignature(InputStream input, KeyboxName keyboxName,
+ PINGUI provider, String alg) throws SignatureCardException, InterruptedException, IOException {
+
+ ByteArrayOutputStream dst = new ByteArrayOutputStream();
+ byte[] ht = null;
+
+ MessageDigest md = null;
+ try {
+ if (alg == null || "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1".equals(alg)) {
+ // local key ID '02' version '00'
+ dst.write(new byte[] {(byte) 0x84, (byte) 0x03, (byte) 0x80, (byte) 0x02, (byte) 0x00});
+ if (version < 1.2) {
+ // algorithm ID ECDSA with SHA-1
+ dst.write(new byte[] {(byte) 0x89, (byte) 0x03, (byte) 0x13, (byte) 0x35, (byte) 0x10});
+ } else {
+ // portable algorithm reference
+ dst.write(new byte[] {(byte) 0x80, (byte) 0x01, (byte) 0x04});
+ // hash template
+ ht = new byte[] {(byte) 0x80, (byte) 0x01, (byte) 0x10};
+ }
+ md = MessageDigest.getInstance("SHA-1");
+ } else if (version >= 1.2 && "http://www.w3.org/2000/09/xmldsig#rsa-sha1".equals(alg)) {
+ // local key ID '03' version '00'
+ dst.write(new byte[] {(byte) 0x84, (byte) 0x03, (byte) 0x80, (byte) 0x03, (byte) 0x00});
+ // portable algorithm reference
+ dst.write(new byte[] {(byte) 0x80, (byte) 0x01, (byte) 0x02});
+ // hash template
+ ht = new byte[] {(byte) 0x80, (byte) 0x01, (byte) 0x10};
+ md = MessageDigest.getInstance("SHA-1");
+ } else if (version >= 1.2 && "http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256".equals(alg)) {
+ // local key ID '02' version '00'
+ dst.write(new byte[] {(byte) 0x84, (byte) 0x03, (byte) 0x80, (byte) 0x02, (byte) 0x00});
+ // portable algorithm reference
+ dst.write(new byte[] {(byte) 0x80, (byte) 0x01, (byte) 0x04});
+ // hash template
+ ht = new byte[] {(byte) 0x80, (byte) 0x01, (byte) 0x40};
+ md = MessageDigest.getInstance("SHA256");
+ } else if (version >= 1.2 && "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256".equals(alg)) {
+ // local key ID '03' version '00'
+ dst.write(new byte[] {(byte) 0x84, (byte) 0x03, (byte) 0x80, (byte) 0x03, (byte) 0x00});
+ // portable algorithm reference
+ dst.write(new byte[] {(byte) 0x80, (byte) 0x01, (byte) 0x02});
+ // hash template
+ ht = new byte[] {(byte) 0x80, (byte) 0x01, (byte) 0x40};
+ md = MessageDigest.getInstance("SHA256");
+ } else {
+ throw new SignatureCardException("e-card version " + version + " does not support signature algorithm " + alg + ".");
+ }
+ } catch (NoSuchAlgorithmException e) {
+ log.error("Failed to get MessageDigest.", e);
+ throw new SignatureCardException(e);
+ }
+
+ // calculate message digest
+ byte[] digest = new byte[md.getDigestLength()];
+ for (int l; (l = input.read(digest)) != -1;) {
+ md.update(digest, 0, l);
+ }
+ digest = md.digest();
+
+ try {
+
+ CardChannel channel = getCardChannel();
+
+ if (KeyboxName.SECURE_SIGNATURE_KEYPAIR.equals(keyboxName)) {
+
+ PINSpec spec = SS_PIN_SPEC;
+
+ // SELECT MF
+ execSELECT_MF(channel);
+ // SELECT application
+ execSELECT_AID(channel, AID_DF_SS);
+ // VERIFY
+ verifyPINLoop(channel, spec, provider);
+ // MANAGE SECURITY ENVIRONMENT : SET DST
+ execMSE(channel, 0x41, 0xb6, dst.toByteArray());
+ if (version < 1.2) {
+ // PERFORM SECURITY OPERATION : HASH
+ execPSO_HASH(channel, digest);
+ // PERFORM SECURITY OPERATION : COMPUTE DIGITAL SIGNATURE
+ return execPSO_COMPUTE_DIGITAL_SIGNATURE(channel, null);
+ } else {
+ if (ht != null) {
+ // PERFORM SECURITY OPERATION : SET HT
+ execMSE(channel, 0x41, 0xaa, ht);
+ }
+ // PERFORM SECURITY OPERATION : COMPUTE DIGITAL SIGNATURE
+ return execPSO_COMPUTE_DIGITAL_SIGNATURE(channel, digest);
+ }
+
+
+ } else if (KeyboxName.CERITIFIED_KEYPAIR.equals(keyboxName)) {
+
+ PINSpec spec = CARD_PIN_SPEC;
+
+ // SELECT application
+ execSELECT_AID(channel, AID_DF_GS);
+ // MANAGE SECURITY ENVIRONMENT : SET DST
+ execMSE(channel, 0x41, 0xb6, dst.toByteArray());
+ if (version >= 1.2 && ht != null) {
+ // PERFORM SECURITY OPERATION : SET HT
+ execMSE(channel, 0x41, 0xaa, ht);
+ }
+ // PERFORM SECURITY OPERATION : HASH
+ execPSO_HASH(channel, digest);
+ while (true) {
+ try {
+ // PERFORM SECURITY OPERATION : COMPUTE DIGITAL SIGNATURE
+ return execPSO_COMPUTE_DIGITAL_SIGNATURE(channel, null);
+ } catch (SecurityStatusNotSatisfiedException e) {
+ verifyPINLoop(channel, spec, provider);
+ }
+ }
+
+ } else {
+ throw new IllegalArgumentException("KeyboxName '" + keyboxName
+ + "' not supported.");
+ }
+
+ } catch (CardException e) {
+ log.warn(e);
+ throw new SignatureCardException("Failed to access card.", e);
+ }
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.smcc.AbstractSignatureCard#verifyPIN(at.gv.egiz.smcc.PINSpec, at.gv.egiz.smcc.PINProvider)
+ */
+ @Override
+ @Exclusive
+ public void verifyPIN(PINSpec pinSpec, PINGUI pinProvider)
+ throws LockedException, NotActivatedException, CancelledException,
+ TimeoutException, SignatureCardException, InterruptedException {
+
+ CardChannel channel = getCardChannel();
+
+ try {
+ if (pinSpec.getContextAID() != null) {
+ // SELECT application
+ execSELECT_AID(channel, pinSpec.getContextAID());
+ }
+ verifyPINLoop(channel, pinSpec, pinProvider);
+ } catch (CardException e) {
+ log.info("Failed to verify PIN.", e);
+ throw new SignatureCardException("Failed to verify PIN.", e);
+ }
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.smcc.AbstractSignatureCard#changePIN(at.gv.egiz.smcc.PINSpec, at.gv.egiz.smcc.ChangePINProvider)
+ */
+ @Override
+ @Exclusive
+ public void changePIN(PINSpec pinSpec, ModifyPINGUI pinGUI)
+ throws LockedException, NotActivatedException, CancelledException,
+ TimeoutException, SignatureCardException, InterruptedException {
+
+ CardChannel channel = getCardChannel();
+
+ try {
+ if (pinSpec.getContextAID() != null) {
+ // SELECT application
+ execSELECT_AID(channel, pinSpec.getContextAID());
+ }
+ changePINLoop(channel, pinSpec, pinGUI);
+ } catch (CardException e) {
+ log.info("Failed to change PIN.", e);
+ throw new SignatureCardException("Failed to change PIN.", e);
+ }
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.smcc.AbstractSignatureCard#activatePIN(at.gv.egiz.smcc.PINSpec, at.gv.egiz.smcc.PINProvider)
+ */
+ @Override
+ @Exclusive
+ public void activatePIN(PINSpec pinSpec, ModifyPINGUI activatePINGUI)
+ throws CancelledException, SignatureCardException, CancelledException,
+ TimeoutException, InterruptedException {
+
+ CardChannel channel = getCardChannel();
+
+ try {
+ if (pinSpec.getContextAID() != null) {
+ // SELECT application
+ execSELECT_AID(channel, pinSpec.getContextAID());
+ }
+ activatePIN(channel, pinSpec, activatePINGUI);
+ } catch (CardException e) {
+ log.info("Failed to activate PIN.", e);
+ throw new SignatureCardException("Failed to activate PIN.", e);
+ }
+
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.smcc.PINMgmtSignatureCard#unblockPIN(at.gv.egiz.smcc.PINSpec, at.gv.egiz.smcc.PINProvider)
+ */
+ @Override
+ public void unblockPIN(PINSpec pinSpec, ModifyPINGUI pukProvider)
+ throws CancelledException, SignatureCardException, InterruptedException {
+ CardChannel channel = getCardChannel();
+
+ try {
+ unblockPINLoop(channel, pinSpec, pukProvider);
+ } catch (CardException e) {
+ log.info("Failed to activate PIN.", e);
+ throw new SignatureCardException("Failed to activate PIN.", e);
+ }
+ }
+
+ @Override
+ public void reset() throws SignatureCardException {
+ try {
+ super.reset();
+ log.debug("select MF (e-card workaround)");
+ CardChannel channel = getCardChannel();
+ ResponseAPDU resp = channel.transmit(new CommandAPDU(0x00, 0xA4, 0x00, 0x0C));
+ if (resp.getSW() != 0x9000) {
+ throw new SignatureCardException("Failed to select MF after RESET: SW=" + Integer.toHexString(resp.getSW()) + ".");
+ }
+ } catch (CardException ex) {
+ log.error("Failed to select MF after RESET: " + ex.getMessage(), ex);
+ throw new SignatureCardException("Failed to select MF after RESET");
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.smcc.PINMgmtSignatureCard#getPINSpecs()
+ */
+ @Override
+ public List<PINSpec> getPINSpecs() {
+ return Arrays.asList(new PINSpec[] {CARD_PIN_SPEC, SS_PIN_SPEC});
+ }
+
+ /* (non-Javadoc)
+ * @see at.gv.egiz.smcc.PINMgmtSignatureCard#getPINStatus(at.gv.egiz.smcc.PINSpec)
+ */
+ @Override
+ public PIN_STATE getPINState(PINSpec pinSpec) throws SignatureCardException {
+
+ CardChannel channel = getCardChannel();
+
+ try {
+ if (pinSpec.getContextAID() != null) {
+ // SELECT AID
+ execSELECT_AID(channel, pinSpec.getContextAID());
+ }
+ verifyPIN(channel, pinSpec, null, 0);
+ return PIN_STATE.ACTIV;
+ } catch (InterruptedException e) {
+ return PIN_STATE.UNKNOWN;
+ } catch (LockedException e) {
+ return PIN_STATE.BLOCKED;
+ } catch (NotActivatedException e) {
+ return PIN_STATE.NOT_ACTIV;
+ } catch (CardException e) {
+ log.error("Failed to get PIN status.", e);
+ throw new SignatureCardException("Failed to get PIN status.", e);
+ }
+
+ }
+
+ public String toString() {
+ return "e-card";
+ }
+
+ ////////////////////////////////////////////////////////////////////////
+ // PROTECTED METHODS (assume exclusive card access)
+ ////////////////////////////////////////////////////////////////////////
+
+ protected void verifyPINLoop(CardChannel channel, PINSpec spec, PINGUI provider)
+ throws LockedException, NotActivatedException, SignatureCardException,
+ InterruptedException, CardException {
+
+ int retries = verifyPIN(channel, spec, null, -1);
+ do {
+ retries = verifyPIN(channel, spec, provider, retries);
+ } while (retries > 0);
+ }
+
+ protected void changePINLoop(CardChannel channel, PINSpec spec, ModifyPINGUI provider)
+ throws LockedException, NotActivatedException, SignatureCardException,
+ InterruptedException, CardException {
+
+ int retries = verifyPIN(channel, spec, null, -1);
+ do {
+ retries = changePIN(channel, spec, provider, retries);
+ } while (retries > 0);
+ }
+
+ protected void unblockPINLoop(CardChannel channel, PINSpec spec, ModifyPINGUI provider)
+ throws LockedException, NotActivatedException, SignatureCardException,
+ InterruptedException, CardException {
+
+ //TODO get PUK retry counter from EF FID 0036 in MF
+ int retries = -1;
+ do {
+ retries = unblockPIN(channel, spec, provider, retries);
+ } while (retries > 0);
+ }
+
+ protected int verifyPIN(CardChannel channel, PINSpec pinSpec,
+ PINGUI provider, int retries) throws SignatureCardException,
+ LockedException, NotActivatedException, InterruptedException,
+ CardException {
+
+ VerifyAPDUSpec apduSpec = new VerifyAPDUSpec(
+ new byte[] {
+ (byte) 0x00, (byte) 0x20, (byte) 0x00, pinSpec.getKID(), (byte) 0x08,
+ (byte) 0x20, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff },
+ 1, VerifyAPDUSpec.PIN_FORMAT_BCD, 7, 4, 4);
+
+ ResponseAPDU resp;
+ if (provider != null) {
+ resp = reader.verify(channel, apduSpec, provider, pinSpec, retries);
+ } else {
+ resp = channel.transmit(new CommandAPDU(0x00, 0x20, 0x00, pinSpec.getKID()));
+ }
+
+
+ if (resp.getSW() == 0x9000) {
+ return -1;
+ } else if (resp.getSW() == 0x6983 || resp.getSW() == 0x63c0) {
+ // authentication method blocked (0x63c0 returned by 'short' VERIFY)
+ throw new LockedException();
+ } else if (resp.getSW() == 0x6984 || resp.getSW() == 0x6985) {
+ // reference data not usable; conditions of use not satisfied
+ throw new NotActivatedException();
+ } else if (resp.getSW() >> 4 == 0x63c) {
+ return 0x0f & resp.getSW();
+ } else if (version >= 1.2 && resp.getSW() == 0x6400) {
+ String msg = "VERIFY failed, card not activated. SW=0x6400";
+ log.error(msg);
+ throw new SignatureCardException(msg);
+ } else {
+ String msg = "VERIFY failed. SW=" + Integer.toHexString(resp.getSW());
+ log.error(msg);
+ throw new SignatureCardException(msg);
+ }
+ }
+
+ protected int changePIN(CardChannel channel, PINSpec pinSpec,
+ ModifyPINGUI pinProvider, int retries) throws CancelledException,
+ InterruptedException, CardException, SignatureCardException {
+
+ ChangeReferenceDataAPDUSpec apduSpec = new ChangeReferenceDataAPDUSpec(
+ new byte[] {
+ (byte) 0x00, (byte) 0x24, (byte) 0x00, pinSpec.getKID(), (byte) 0x10,
+ (byte) 0x20, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0x20, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff },
+ 1, VerifyAPDUSpec.PIN_FORMAT_BCD, 7, 4, 4, 8);
+
+ ResponseAPDU resp = reader.modify(channel, apduSpec, pinProvider, pinSpec, retries);
+
+ if (resp.getSW() == 0x9000) {
+ return -1;
+ } else if (resp.getSW() == 0x6983) {
+ // authentication method blocked
+ throw new LockedException();
+ } else if (resp.getSW() == 0x6984) {
+ throw new NotActivatedException();
+ } else if (resp.getSW() >> 4 == 0x63c) {
+ return 0x0f & resp.getSW();
+ } else {
+ String msg = "CHANGE REFERENCE DATA failed. SW=" + Integer.toHexString(resp.getSW());
+ log.error(msg);
+ throw new SignatureCardException(msg);
+ }
+ }
+
+ protected int activatePIN(CardChannel channel, PINSpec pinSpec,
+ ModifyPINGUI provider) throws SignatureCardException,
+ InterruptedException, CardException {
+
+ ResponseAPDU resp;
+ if (version < 1.2) {
+ NewReferenceDataAPDUSpec apduSpec = new NewReferenceDataAPDUSpec(
+ new byte[] {
+ (byte) 0x00, (byte) 0x24, (byte) 0x01, pinSpec.getKID(), (byte) 0x08,
+ (byte) 0x20, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff },
+ 1, VerifyAPDUSpec.PIN_FORMAT_BCD, 7, 4, 4);
+
+ resp = reader.modify(channel, apduSpec, provider, pinSpec);
+ } else {
+ NewReferenceDataAPDUSpec apduSpec = new NewReferenceDataAPDUSpec(
+ new byte[] {
+ (byte) 0x00, (byte) 0x24, (byte) 0x00, pinSpec.getKID(), (byte) 0x10,
+ (byte) 0x26, (byte) 0x12, (byte) 0x34, (byte) 0x56, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0x20, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff },
+ 1, VerifyAPDUSpec.PIN_FORMAT_BCD, 7, 4, 4);
+ apduSpec.setPinInsertionOffsetNew(8);
+ resp = reader.modify(channel, apduSpec, provider, pinSpec);
+ }
+
+ if (resp.getSW() == 0x9000) {
+ return -1;
+ } else {
+ String msg = "CHANGE REFERENCE DATA failed. SW=" + Integer.toHexString(resp.getSW());
+ log.error(msg);
+ throw new SignatureCardException(msg);
+ }
+ }
+
+ protected int unblockPIN(CardChannel channel, PINSpec pinSpec,
+ ModifyPINGUI provider, int retries) throws SignatureCardException,
+ InterruptedException, CardException {
+
+ if (version < 1.2) {
+ // would return 0x6982 (Security status not satisfied)
+ throw new SignatureCardException("RESET RETRY COUNTER is not supported by this card.");
+ }
+
+ ResetRetryCounterAPDUSpec apduSpec = new ResetRetryCounterAPDUSpec(
+ new byte[] {
+ (byte) 0x00, (byte) 0x2c, (byte) 0x00, pinSpec.getKID(), (byte) 0x10,
+ (byte) 0x20, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0x20, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff },
+ 1, VerifyAPDUSpec.PIN_FORMAT_BCD, 7, 4, 4, 8);
+
+ ResponseAPDU resp = reader.modify(channel, apduSpec, provider, pinSpec, retries);
+
+ if (resp.getSW() == 0x9000) {
+ return -1;
+ } else if (resp.getSW() == 0x6983) {
+ // PUK blocked
+ throw new LockedException();
+ } else if (resp.getSW() == 0x6984) {
+ throw new NotActivatedException();
+ } else if (resp.getSW() >> 4 == 0x63c) {
+ return 0x0f & resp.getSW();
+ } else {
+ String msg = "RESET RETRY COUNTER failed. SW=" + Integer.toHexString(resp.getSW());
+ log.error(msg);
+ throw new SignatureCardException(msg);
+ }
+ }
+
+ protected void execSELECT_MF(CardChannel channel) throws CardException, SignatureCardException {
+ ResponseAPDU resp = channel.transmit(
+ new CommandAPDU(0x00, 0xA4, 0x00, 0x0C));
+ if (resp.getSW() != 0x9000) {
+ throw new SignatureCardException("Failed to select MF: SW="
+ + Integer.toHexString(resp.getSW()) + ".");
+ }
+ }
+
+ protected byte[] execSELECT_AID(CardChannel channel, byte[] aid)
+ throws SignatureCardException, CardException {
+
+ ResponseAPDU resp = channel.transmit(
+ new CommandAPDU(0x00, 0xA4, 0x04, 0x00, aid, 256));
+
+ if (resp.getSW() == 0x6A82) {
+ String msg = "File or application not found AID="
+ + SMCCHelper.toString(aid) + " SW="
+ + Integer.toHexString(resp.getSW()) + ".";
+ log.info(msg);
+ throw new FileNotFoundException(msg);
+ } else if (resp.getSW() != 0x9000) {
+ String msg = "Failed to select application AID="
+ + SMCCHelper.toString(aid) + " SW="
+ + Integer.toHexString(resp.getSW()) + ".";
+ log.info(msg);
+ throw new SignatureCardException(msg);
+ } else {
+ return resp.getBytes();
+ }
+
+ }
+
+ protected byte[] execSELECT_FID(CardChannel channel, byte[] fid)
+ throws SignatureCardException, CardException {
+
+ ResponseAPDU resp = channel.transmit(
+ new CommandAPDU(0x00, 0xA4, 0x02, 0x04, fid, 256));
+
+ if (resp.getSW() == 0x6A82) {
+ String msg = "File or application not found FID="
+ + SMCCHelper.toString(fid) + " SW="
+ + Integer.toHexString(resp.getSW()) + ".";
+ log.info(msg);
+ throw new FileNotFoundException(msg);
+ } else if (resp.getSW() != 0x9000) {
+ String msg = "Failed to select application FID="
+ + SMCCHelper.toString(fid) + " SW="
+ + Integer.toHexString(resp.getSW()) + ".";
+ log.error(msg);
+ throw new SignatureCardException(msg);
+ } else {
+ return resp.getBytes();
+ }
+
+ }
+
+ protected void execMSE(CardChannel channel, int p1, int p2, byte[] data)
+ throws CardException, SignatureCardException {
+ ResponseAPDU resp = channel.transmit(
+ new CommandAPDU(0x00, 0x22, p1, p2, data));
+ if (resp.getSW() != 0x9000) {
+ throw new SignatureCardException("MSE:SET failed: SW="
+ + Integer.toHexString(resp.getSW()));
+ }
+ }
+
+ protected void execPSO_HASH(CardChannel channel, byte[] hash) throws CardException, SignatureCardException {
+ byte[] data = new byte[hash.length + 2];
+ data[0] = (byte) 0x90; // tag
+ data[1] = (byte) (hash.length); // length
+ System.arraycopy(hash, 0, data, 2, hash.length);
+
+ ResponseAPDU resp = channel.transmit(
+ new CommandAPDU(0x00, 0x2A, 0x90, 0xA0, data));
+ if (resp.getSW() != 0x9000) {
+ throw new SignatureCardException("PSO:HASH failed: SW="
+ + Integer.toHexString(resp.getSW()));
+ }
+ }
+
+ protected void execPSO_HASH(CardChannel channel, InputStream input)
+ throws SignatureCardException, CardException {
+ ResponseAPDU resp;
+ int blockSize = 64;
+ byte[] b = new byte[blockSize];
+ try {
+ ByteArrayOutputStream data = new ByteArrayOutputStream();
+ // initialize
+ data.write((byte) 0x90);
+ data.write((byte) 0x00);
+ resp = channel.transmit(
+ new CommandAPDU(0x10, 0x2A, 0x90, 0xA0, data.toByteArray()));
+ data.reset();
+ for (int l; (l = input.read(b)) != -1;) {
+ data.write((byte) 0x80);
+ data.write(l);
+ data.write(b, 0, l);
+ resp = channel.transmit(
+ new CommandAPDU((l == blockSize) ? 0x10 : 0x00, 0x2A, 0x90, 0xA0, data.toByteArray()));
+ if (resp.getSW() != 0x9000) {
+ throw new SignatureCardException("PSO:HASH failed: SW="
+ + Integer.toHexString(resp.getSW()));
+ }
+ data.reset();
+ }
+ } catch (IOException e) {
+ throw new SignatureCardException(e);
+ }
+
+ }
+
+ protected byte[] execPSO_COMPUTE_DIGITAL_SIGNATURE(CardChannel channel, byte[] hash)
+ throws CardException, SignatureCardException {
+ ResponseAPDU resp;
+ if (hash != null) {
+ resp = channel.transmit(
+ new CommandAPDU(0x00, 0x2A, 0x9E, 0x9A, hash, 256));
+ } else {
+ resp = channel.transmit(
+ new CommandAPDU(0x00, 0x2A, 0x9E, 0x9A, 256));
+ }
+ if (resp.getSW() == 0x6982) {
+ throw new SecurityStatusNotSatisfiedException();
+ } else if (resp.getSW() == 0x6983) {
+ throw new LockedException();
+ } else if (resp.getSW() != 0x9000) {
+ throw new SignatureCardException(
+ "PSO: COMPUTE DIGITAL SIGNATRE failed: SW="
+ + Integer.toHexString(resp.getSW()));
+ } else {
+ return resp.getData();
+ }
+ }
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SWCard.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SWCard.java
new file mode 100644
index 00000000..73c7faa8
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SWCard.java
@@ -0,0 +1,396 @@
+/*
+* 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.smcc;
+
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.Charset;
+import java.security.InvalidKeyException;
+import java.security.Key;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.Signature;
+import java.security.SignatureException;
+import java.security.UnrecoverableKeyException;
+import java.security.cert.Certificate;
+import java.security.cert.CertificateEncodingException;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
+import java.util.Enumeration;
+import java.util.Locale;
+
+import javax.smartcardio.Card;
+import javax.smartcardio.CardTerminal;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.smcc.pin.gui.PINGUI;
+
+/**
+ *
+ * @author mcentner
+ */
+public class SWCard implements SignatureCard {
+
+ private static final String BKU_USER_DIR = ".mocca";
+
+ private static final String SWCARD_DIR = "smcc";
+
+ private static final String KEYSTORE_CERTIFIED_KEYPAIR = "certified.p12";
+
+ private static final String KEYSTORE_PASSWORD_CERTIFIED_KEYPAIR = "certified.pwd";
+
+ private static final String CERTIFICATE_CERTIFIED_KEYPAIR = "certified.cer";
+
+ private static final String KEYSTORE_SECURE_KEYPAIR = "secure.p12";
+
+ private static final String KEYSTORE_PASSWORD_SECURE_KEYPAIR = "secure.pwd";
+
+ private static final String CERTIFICATE_SECURE_KEYPAIR = "secure.cer";
+
+ private static String swCardDir;
+
+ private static Log log = LogFactory.getLog(SWCard.class);
+
+ private KeyStore certifiedKeyStore;
+
+ private char[] certifiedKeyStorePassword;
+
+ private KeyStore secureKeyStore;
+
+ private char[] secureKeyStorePassword;
+
+ private Certificate certifiedCertificate;
+
+ private Certificate secureCertificate;
+
+ static {
+ String userHome = System.getProperty("user.home");
+ String fs = System.getProperty("file.separator");
+ swCardDir = userHome + fs + BKU_USER_DIR + fs + SWCARD_DIR;
+ }
+
+ /**
+ * @return the swCardDir
+ */
+ public static String getSwCardDir() {
+ return swCardDir;
+ }
+
+ /**
+ * @param swCardDir the swCardDir to set
+ */
+ public static void setSwCardDir(String swCardDir) {
+ SWCard.swCardDir = swCardDir;
+ }
+
+ public void init(Card card, CardTerminal cardTerminal) {
+ }
+
+ @Override
+ public Card getCard() {
+ return null;
+ }
+
+ private String getFileName(String fileName) {
+ String fs = System.getProperty("file.separator");
+ return swCardDir + fs + fileName;
+ }
+
+ private Certificate loadCertificate(String certificateFileName) throws SignatureCardException {
+
+ final String certificateType = "x509";
+ CertificateFactory factory;
+ try {
+ factory = CertificateFactory.getInstance(certificateType);
+ } catch (CertificateException e) {
+ String msg = "Failed to get CertificateFactory instance for type '" + certificateType + "'.";
+ log.error(msg, e);
+ throw new SignatureCardException(msg, e);
+ }
+
+ // try to load Certificate file
+ String fileName = getFileName(certificateFileName);
+ log.info("Trying to load Certificate from file '" + fileName + "'.");
+
+ FileInputStream certificateFile;
+ try {
+ certificateFile = new FileInputStream(fileName);
+ } catch (FileNotFoundException e) {
+ String msg = "Certificate file '" + fileName + "' not found.";
+ log.info(msg, e);
+ throw new SignatureCardException(msg, e);
+ }
+
+ Certificate certificate;
+ try {
+ certificate = factory.generateCertificate(certificateFile);
+ } catch (CertificateException e) {
+ String msg = "Failed to load Certificate from file '" + fileName + "'.";
+ log.info(msg, e);
+ throw new SignatureCardException(msg, e);
+ }
+
+ return certificate;
+
+ }
+
+ private KeyStore loadKeyStore(String keyStoreFileName, char[] password) throws SignatureCardException {
+
+ final String keyStoreType = "pkcs12";
+ KeyStore keyStore;
+ try {
+ keyStore = KeyStore.getInstance(keyStoreType);
+ } catch (KeyStoreException e) {
+ String msg = "Failed to get KeyStore instance for KeyStore type '" + keyStoreType + "'.";
+ log.error(msg, e);
+ throw new SignatureCardException(msg, e);
+ }
+
+ // try to load KeyStore file
+ String fileName = getFileName(keyStoreFileName);
+ log.info("Trying to load KeyStore from file '" + fileName + "'.");
+
+ FileInputStream keyStoreFile;
+ try {
+ keyStoreFile = new FileInputStream(fileName);
+ } catch (FileNotFoundException e) {
+ String msg = "KeyStore file '"+ fileName + "' not found.";
+ log.info(msg, e);
+ throw new SignatureCardException(msg, e);
+ }
+
+ try {
+ keyStore.load(keyStoreFile, password);
+ } catch (Exception e) {
+ String msg = "Failed to load KeyStore from file '" + fileName + "'.";
+ log.info(msg, e);
+ throw new SignatureCardException(msg, e);
+ }
+
+ return keyStore;
+
+ }
+
+ private char[] loadKeyStorePassword(String passwordFileName) throws SignatureCardException {
+
+ String fileName = getFileName(passwordFileName);
+ FileInputStream keyStorePasswordFile;
+ try {
+ keyStorePasswordFile = new FileInputStream(fileName);
+ } catch (FileNotFoundException e) {
+ return null;
+ }
+
+ try {
+ InputStreamReader reader = new InputStreamReader(keyStorePasswordFile, Charset.forName("UTF-8"));
+ StringBuilder sb = new StringBuilder();
+ char b[] = new char[16];
+ for (int l; (l = reader.read(b)) != -1;) {
+ sb.append(b, 0, l);
+ }
+ return sb.toString().toCharArray();
+ } catch (IOException e) {
+ throw new SignatureCardException("Failed to read file '" + passwordFileName + "'.");
+ }
+
+ }
+
+ private KeyStore getKeyStore(KeyboxName keyboxName, char[] password) throws SignatureCardException {
+
+ if (keyboxName == KeyboxName.CERITIFIED_KEYPAIR) {
+ if (certifiedKeyStore == null) {
+ certifiedKeyStore = loadKeyStore(KEYSTORE_CERTIFIED_KEYPAIR, password);
+ }
+ return certifiedKeyStore;
+ } else if (keyboxName == KeyboxName.SECURE_SIGNATURE_KEYPAIR) {
+ if (secureKeyStore == null) {
+ secureKeyStore = loadKeyStore(KEYSTORE_SECURE_KEYPAIR, password);
+ }
+ return secureKeyStore;
+ } else {
+ throw new SignatureCardException("Keybox of type '" + keyboxName + "' not supported.");
+ }
+
+ }
+
+ private char[] getPassword(KeyboxName keyboxName) throws SignatureCardException {
+
+ if (keyboxName == KeyboxName.CERITIFIED_KEYPAIR) {
+ if (certifiedKeyStorePassword == null) {
+ certifiedKeyStorePassword = loadKeyStorePassword(KEYSTORE_PASSWORD_CERTIFIED_KEYPAIR);
+ }
+ return certifiedKeyStorePassword;
+ } else if (keyboxName == KeyboxName.SECURE_SIGNATURE_KEYPAIR) {
+ if (secureKeyStorePassword == null) {
+ secureKeyStorePassword = loadKeyStorePassword(KEYSTORE_PASSWORD_SECURE_KEYPAIR);
+ }
+ return secureKeyStorePassword;
+ } else {
+ throw new SignatureCardException("Keybox of type '" + keyboxName + "' not supported.");
+ }
+
+ }
+
+ public byte[] getCertificate(KeyboxName keyboxName)
+ throws SignatureCardException {
+
+ try {
+ if (keyboxName == KeyboxName.CERITIFIED_KEYPAIR) {
+ if (certifiedCertificate == null) {
+ certifiedCertificate = loadCertificate(CERTIFICATE_CERTIFIED_KEYPAIR);
+ }
+ return certifiedCertificate.getEncoded();
+ } else if (keyboxName == KeyboxName.SECURE_SIGNATURE_KEYPAIR) {
+ if (secureCertificate == null) {
+ secureCertificate = loadCertificate(CERTIFICATE_SECURE_KEYPAIR);
+ }
+ return secureCertificate.getEncoded();
+ } else {
+ throw new SignatureCardException("Keybox of type '" + keyboxName + "' not supported.");
+ }
+ } catch (CertificateEncodingException e) {
+ throw new SignatureCardException("Failed to get encoded Certificate.", e);
+ }
+
+
+ }
+
+ public byte[] getInfobox(String infobox, PINGUI provider, String domainId) throws SignatureCardException {
+
+ String fileName = getFileName(infobox + ".ibx");
+ FileInputStream file;
+ try {
+ file = new FileInputStream(fileName);
+ } catch (FileNotFoundException e) {
+ String msg = "Infobox '" + infobox + "' not found.";
+ log.info(msg, e);
+ throw new SignatureCardException(msg, e);
+ }
+ ByteArrayOutputStream bytes = new ByteArrayOutputStream();
+ try {
+ byte[] b = new byte[512];
+ for(int l; (l = file.read(b)) != -1;) {
+ bytes.write(b, 0, l);
+ }
+ file.close();
+ } catch (IOException e) {
+ String msg = "Failed to read infobox '" + infobox + "'.";
+ log.error(msg, e);
+ throw new SignatureCardException(msg, e);
+ }
+
+ return bytes.toByteArray();
+
+ }
+
+ @Override
+ public byte[] createSignature(InputStream input, KeyboxName keyboxName, PINGUI provider, String alg) throws SignatureCardException, InterruptedException, IOException {
+
+ // KeyStore password
+ char[] password = getPassword(keyboxName);
+
+ if (password == null) {
+
+ PINSpec pinSpec = new PINSpec(0, -1, ".", "KeyStore-Password", (byte) 0x01, null);
+
+ password = provider.providePIN(pinSpec, -1);
+
+ if (password == null) {
+ return null;
+ }
+
+ }
+
+ KeyStore keyStore = getKeyStore(keyboxName, password);
+
+ PrivateKey privateKey = null;
+
+ try {
+ for (Enumeration<String> aliases = keyStore.aliases(); aliases
+ .hasMoreElements() && privateKey == null;) {
+ String alias = aliases.nextElement();
+ log.debug("Found alias '" + alias + "' in keystore");
+ if (keyStore.isKeyEntry(alias)) {
+ Key key = null;
+ while (key == null) {
+ try {
+ key = keyStore.getKey(alias, password);
+ } catch (UnrecoverableKeyException e) {
+ log.info("Failed to get Key from KeyStore. Wrong password?", e);
+ }
+ }
+ privateKey = (PrivateKey) key;
+ }
+ }
+ } catch (Exception e) {
+ String msg = "Failed to get certificate from KeyStore.";
+ log.info(msg, e);
+ throw new SignatureCardException(msg, e);
+ }
+
+ if (privateKey == null) {
+ String msg = "No private key found in KeyStore.";
+ log.info(msg);
+ throw new SignatureCardException(msg);
+ }
+
+ String algorithm = privateKey.getAlgorithm();
+ algorithm = "SHA1with" + algorithm;
+ try {
+ Signature signature = Signature.getInstance(algorithm);
+ signature.initSign(privateKey);
+ int l;
+ for (byte[] b = new byte[20]; (l = input.read(b)) != -1;) {
+ signature.update(b, 0, l);
+ }
+ return signature.sign();
+ } catch (NoSuchAlgorithmException e) {
+ String msg = "Algorithm + '" + algorithm + "' not supported for signing.";
+ log.info(msg, e);
+ throw new SignatureCardException(msg, e);
+ } catch (SignatureException e) {
+ String msg = "Signing faild.";
+ log.info(msg, e);
+ throw new SignatureCardException(msg, e);
+ } catch (InvalidKeyException e) {
+ String msg = "Key not valid for algorithm + '" + algorithm + "'.";
+ log.info(msg, e);
+ throw new SignatureCardException(msg, e);
+ }
+
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ }
+
+ @Override
+ public void disconnect(boolean reset) {
+ }
+
+ @Override
+ public void reset() throws SignatureCardException {
+ }
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SecurityStatusNotSatisfiedException.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SecurityStatusNotSatisfiedException.java
new file mode 100644
index 00000000..bf0af76c
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SecurityStatusNotSatisfiedException.java
@@ -0,0 +1,38 @@
+/*
+* 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.smcc;
+
+public class SecurityStatusNotSatisfiedException extends SignatureCardException {
+
+ private static final long serialVersionUID = 1L;
+
+ public SecurityStatusNotSatisfiedException() {
+ }
+
+ public SecurityStatusNotSatisfiedException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public SecurityStatusNotSatisfiedException(String message) {
+ super(message);
+ }
+
+ public SecurityStatusNotSatisfiedException(Throwable cause) {
+ super(cause);
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SignatureCard.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SignatureCard.java
new file mode 100644
index 00000000..fa589b84
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SignatureCard.java
@@ -0,0 +1,125 @@
+/*
+* 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.smcc;
+
+import at.gv.egiz.smcc.pin.gui.PINGUI;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Locale;
+
+import javax.smartcardio.Card;
+import javax.smartcardio.CardTerminal;
+
+public interface SignatureCard {
+
+ public static class KeyboxName {
+
+ public static KeyboxName SECURE_SIGNATURE_KEYPAIR = new KeyboxName(
+ "SecureSignatureKeypair");
+ public static KeyboxName CERITIFIED_KEYPAIR = new KeyboxName(
+ "CertifiedKeypair");
+
+ private String keyboxName_;
+
+ private KeyboxName(String keyboxName_) {
+ this.keyboxName_ = keyboxName_;
+ }
+
+ public static KeyboxName getKeyboxName(String keyBox) {
+ if (SECURE_SIGNATURE_KEYPAIR.equals(keyBox)) {
+ return SECURE_SIGNATURE_KEYPAIR;
+ } else if (CERITIFIED_KEYPAIR.equals(keyBox)) {
+ return CERITIFIED_KEYPAIR;
+ } else {
+ return new KeyboxName(keyBox);
+ }
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof String) {
+ return obj.equals(keyboxName_);
+ }
+ if (obj instanceof KeyboxName) {
+ return ((KeyboxName) obj).keyboxName_.equals(keyboxName_);
+ } else {
+ return super.equals(obj);
+ }
+ }
+
+ public String getKeyboxName() {
+ return keyboxName_;
+ }
+
+ @Override
+ public String toString() {
+ return keyboxName_;
+ }
+
+ }
+
+ public void init(Card card, CardTerminal cardTerminal);
+
+ public Card getCard();
+
+ public byte[] getCertificate(KeyboxName keyboxName)
+ throws SignatureCardException, InterruptedException;
+
+ public void disconnect(boolean reset);
+
+ /**
+ * Performs a reset of the card.
+ *
+ * @throws SignatureCardException if reset fails.
+ */
+ public void reset() throws SignatureCardException;
+
+ /**
+ *
+ * @param infobox
+ * @param provider
+ * @param domainId may be null.
+ * @return
+ * @throws SignatureCardException
+ * @throws InterruptedException if applet is destroyed while in pin dialog
+ */
+ public byte[] getInfobox(String infobox, PINGUI pinGUI, String domainId)
+ throws SignatureCardException, InterruptedException;
+
+ /**
+ *
+ * @param input
+ * @param keyboxName
+ * @param provider
+ * @param alg TODO
+ * @return
+ * @throws at.gv.egiz.smcc.SignatureCardException
+ * @throws java.lang.InterruptedException if applet is destroyed while in pin dialog
+ * @throws IOException
+ */
+ public byte[] createSignature(InputStream input, KeyboxName keyboxName,
+ PINGUI pinGUI, String alg) throws SignatureCardException, InterruptedException, IOException;
+
+ /**
+ * Sets the local for evtl. required callbacks (e.g. PINSpec)
+ * @param locale must not be null;
+ */
+ public void setLocale(Locale locale);
+
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SignatureCardException.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SignatureCardException.java
new file mode 100644
index 00000000..48b4646a
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SignatureCardException.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.smcc;
+
+public class SignatureCardException extends Exception {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Creates a new instance of this <code>SignatureCardException</code>.
+ *
+ */
+ public SignatureCardException() {
+ super();
+ }
+
+ /**
+ * Creates a new instance of this <code>SignatureCardException</code>.
+ *
+ * @param message
+ * @param cause
+ */
+ public SignatureCardException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ /**
+ * Creates a new instance of this <code>SignatureCardException</code>.
+ *
+ * @param message
+ */
+ public SignatureCardException(String message) {
+ super(message);
+ }
+
+ /**
+ * Creates a new instance of this <code>SignatureCardException</code>.
+ *
+ * @param cause
+ */
+ public SignatureCardException(Throwable cause) {
+ super(cause);
+ }
+
+
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SignatureCardFactory.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SignatureCardFactory.java
new file mode 100644
index 00000000..9165a7d8
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/SignatureCardFactory.java
@@ -0,0 +1,401 @@
+/*
+* 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.smcc;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.smartcardio.ATR;
+import javax.smartcardio.Card;
+import javax.smartcardio.CardTerminal;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * A factory for creating {@link SignatureCard}s from {@link Card}s.
+ */
+public class SignatureCardFactory {
+
+ public static boolean ENFORCE_RECOMMENDED_PIN_LENGTH = false;
+
+ /**
+ * This class represents a supported smart card.
+ */
+ private class SupportedCard {
+
+ /**
+ * The ATR pattern.
+ */
+ private byte[] atrPattern;
+
+ /**
+ * The ATR mask.
+ */
+ private byte[] atrMask;
+
+ /**
+ * The implementation class.
+ */
+ private String impl;
+
+ /**
+ * Creates a new SupportedCard instance with the given ATR pattern and mask
+ * und the corresponding implementation class.
+ *
+ * @param atrPattern
+ * the ATR pattern
+ * @param atrMask
+ * the ATR mask
+ * @param implementationClass
+ * the name of the implementation class
+ *
+ * @throws NullPointerException
+ * if <code>atrPattern</code> or <code>atrMask</code> is
+ * <code>null</code>.
+ * @throws IllegalArgumentException
+ * if the lengths of <code>atrPattern</code> and
+ * <code>atrMask</code> of not equal.
+ */
+ public SupportedCard(byte[] atrPattern, byte[] atrMask, String implementationClass) {
+ if (atrPattern.length != atrMask.length) {
+ throw new IllegalArgumentException("Length of 'atr' and 'mask' must be equal.");
+ }
+ this.atrPattern = atrPattern;
+ this.atrMask = atrMask;
+ this.impl = implementationClass;
+ }
+
+ /**
+ * Returns true if the given ATR matches the ATR pattern and mask this
+ * SupportedCard object.
+ *
+ * @param atr
+ * the ATR
+ *
+ * @return <code>true</code> if the given ATR matches the ATR pattern and
+ * mask of this SupportedCard object, or <code>false</code>
+ * otherwise.
+ */
+ public boolean matches(ATR atr) {
+
+ byte[] bytes = atr.getBytes();
+ if (bytes == null) {
+ return false;
+ }
+ if (bytes.length < atrMask.length) {
+ // we cannot test for equal length here, as we get ATRs with
+ // additional bytes on systems using PCSClite (e.g. linux and OS X) sometimes
+ return false;
+ }
+
+ int l = Math.min(atrMask.length, bytes.length);
+ for (int i = 0; i < l; i++) {
+ if ((bytes[i] & atrMask[i]) != atrPattern[i]) {
+ return false;
+ }
+ }
+ return true;
+
+ }
+
+ /**
+ * @return the corresponding implementation class.
+ */
+ public String getImplementationClassName() {
+ return impl;
+ }
+
+ }
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(SignatureCardFactory.class);
+
+ /**
+ * The instance to be returned by {@link #getInstance()}.
+ */
+ private static SignatureCardFactory instance;
+
+ /**
+ * The list of supported smart cards.
+ */
+ private List<SupportedCard> supportedCards;
+
+ /**
+ * @return an instance of this SignatureCardFactory.
+ */
+ public static synchronized SignatureCardFactory getInstance() {
+ if (instance == null) {
+ instance = new SignatureCardFactory();
+ }
+ return instance;
+ }
+
+ /**
+ * Private constructor.
+ */
+ private SignatureCardFactory() {
+
+ supportedCards = new ArrayList<SupportedCard>();
+
+ // e-card
+ supportedCards.add(new SupportedCard(
+ // ATR (3b:bd:18:00:81:31:fe:45:80:51:02:00:00:00:00:00:00:00:00:00:00:00)
+ new byte[] {
+ (byte) 0x3b, (byte) 0xbd, (byte) 0x18, (byte) 0x00, (byte) 0x81, (byte) 0x31, (byte) 0xfe, (byte) 0x45,
+ (byte) 0x80, (byte) 0x51, (byte) 0x02, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00
+ },
+ // mask (ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:00:00:00:00:00:00:00:00:00:00:00)
+ new byte[] {
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00
+ },
+ "at.gv.egiz.smcc.STARCOSCard"));
+
+ // e-card G3
+ supportedCards.add(new SupportedCard(
+ // ATR (3b:dd:96:ff:81:b1:fe:45:1f:03:80:31:b0:52:02:03:64:04:1b:b4:22:81:05:18)
+ new byte[] {
+ (byte) 0x3b, (byte) 0xdd, (byte) 0x96, (byte) 0xff, (byte) 0x81, (byte) 0xb1, (byte) 0xfe, (byte) 0x45,
+ (byte) 0x1f, (byte) 0x03, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00
+ },
+ // mask (
+ new byte[] {
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00
+ },
+ "at.gv.egiz.smcc.STARCOSCard"));
+
+ // a-sign premium (EPA)
+ supportedCards.add(new SupportedCard(
+ // ATR (3b:bf:11:00:81:31:fe:45:45:50:41:00:00:00:00:00:00:00:00:00:00:00:00:00)
+ new byte[] {
+ (byte) 0x3b, (byte) 0xbf, (byte) 0x11, (byte) 0x00, (byte) 0x81, (byte) 0x31, (byte) 0xfe, (byte) 0x45,
+ (byte) 0x45, (byte) 0x50, (byte) 0x41, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00
+ },
+ // mask (ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:00:00:00:00:00:00:00:00:00:00:00:00:00)
+ new byte[] {
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00
+ },
+ "at.gv.egiz.smcc.ACOSCard"));
+
+ // a-sign premium (MCA)
+ supportedCards.add(new SupportedCard(
+ // ATR (3b:bf:11:00:81:31:fe:45:45:50:41:00:00:00:00:00:00:00:00:00:00:00:00:00)
+ new byte[] {
+ (byte) 0x3b, (byte) 0xbf, (byte) 0x11, (byte) 0x00, (byte) 0x81, (byte) 0x31, (byte) 0xfe, (byte) 0x45,
+ (byte) 0x4D, (byte) 0x43, (byte) 0x41, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00
+ },
+ // mask (ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:00:00:00:00:00:00:00:00:00:00:00:00:00)
+ new byte[] {
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00
+ },
+ "at.gv.egiz.smcc.ACOSCard"));
+
+ // BELPIC
+ supportedCards.add(new SupportedCard(
+ // ATR (3b:98:13:40:0A:A5:03:01:01:01:AD:13:11)
+ new byte[] { (byte) 0x3b, (byte) 0x98, (byte) 0x13,
+ (byte) 0x40, (byte) 0x0a, (byte) 0xa5, (byte) 0x03,
+ (byte) 0x01, (byte) 0x01, (byte) 0x01, (byte) 0xad,
+ (byte) 0x13, (byte) 0x11 },
+ // mask (ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff)
+ new byte[] { (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff },
+ "at.gv.egiz.smcc.BELPICCard"));
+ supportedCards.add(new SupportedCard(
+ // ATR [3b:98:_94_:40:_ff_:a5:03:01:01:01:ad:13:_10_]
+ new byte[] { (byte) 0x3b, (byte) 0x98, (byte) 0x94,
+ (byte) 0x40, (byte) 0xff, (byte) 0xa5, (byte) 0x03,
+ (byte) 0x01, (byte) 0x01, (byte) 0x01, (byte) 0xad,
+ (byte) 0x13, (byte) 0x10 },
+ // mask (ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff)
+ new byte[] { (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff },
+ "at.gv.egiz.smcc.BELPICCard"));
+ supportedCards.add(new SupportedCard(
+ // ATR [3b:98:_94_:40:0a:a5:03:01:01:01:ad:13:_10_]
+ new byte[] { (byte) 0x3b, (byte) 0x98, (byte) 0x94,
+ (byte) 0x40, (byte) 0x0a, (byte) 0xa5, (byte) 0x03,
+ (byte) 0x01, (byte) 0x01, (byte) 0x01, (byte) 0xad,
+ (byte) 0x13, (byte) 0x10 },
+ // mask (ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff)
+ new byte[] { (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff },
+ "at.gv.egiz.smcc.BELPICCard"));
+ supportedCards.add(new SupportedCard(
+ // ATR [3b:98:_95_:40:0a:a5:_07_:01:01:01:ad:13:_20_]
+ new byte[] { (byte) 0x3b, (byte) 0x98, (byte) 0x95,
+ (byte) 0x40, (byte) 0x0a, (byte) 0xa5, (byte) 0x07,
+ (byte) 0x01, (byte) 0x01, (byte) 0x01, (byte) 0xad,
+ (byte) 0x13, (byte) 0x20 },
+ // mask (ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff)
+ new byte[] { (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff },
+ "at.gv.egiz.smcc.BELPICCard"));
+
+ // ITCards
+ supportedCards.add(new SupportedCard(
+ // ATR =
+ // [3b:ff:18:00:ff:81:31:fe:55:00:6b:02:09:02:00:01:11:01:43:4e:53:11:31:80:8e]
+ new byte[] { (byte) 0x3b, (byte) 0xff, (byte) 0x18,
+ (byte) 0x00, (byte) 0xff, (byte) 0x81, (byte) 0x31,
+ (byte) 0xfe, (byte) 0x55, (byte) 0x00, (byte) 0x6b,
+ (byte) 0x02, (byte) 0x09 /*
+ * , (byte) 0x02, (byte) 0x00,
+ * (byte) 0x01, (byte) 0x11,
+ * (byte) 0x01, (byte) 0x43,
+ * (byte) 0x4e, (byte) 0x53,
+ * (byte) 0x11, (byte) 0x31,
+ * (byte) 0x80, (byte) 0x8e
+ */
+ },
+ // mask (ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff)
+ new byte[] { (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff /*
+ * , (byte) 0xff, (byte) 0xff,
+ * (byte) 0xff, (byte) 0xff,
+ * (byte) 0xff, (byte) 0xff,
+ * (byte) 0xff, (byte) 0xff,
+ * (byte) 0xff, (byte) 0xff,
+ * (byte) 0xff, (byte) 0xff
+ */
+ }, "at.gv.egiz.smcc.ITCard"));
+ supportedCards.add(new SupportedCard(
+ // ATR
+ // (3B:FF:18:00:FF:C1:0A:31:FE:55:00:6B:05:08:C8:05:01:01:01:43:4E:53:10:31:80:1C)
+ new byte[] { (byte) 0x3b, (byte) 0xff, (byte) 0x18,
+ (byte) 0x00, (byte) 0xFF, (byte) 0xC1, (byte) 0x0a,
+ (byte) 0x31, (byte) 0xfe, (byte) 0x55, (byte) 0x00,
+ (byte) 0x6B, (byte) 0x05, (byte) 0x08, (byte) 0xC8,
+ (byte) 0x05, (byte) 0x01, (byte) 0x01, (byte) 0x01,
+ (byte) 0x43, (byte) 0x4E, (byte) 0x53, (byte) 0x10,
+ (byte) 0x31, (byte) 0x80, (byte) 0x1C },
+ // mask
+ // (ff:ff:ff:00:00:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:00:00:00:00)
+ new byte[] { (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff },
+ "at.gv.egiz.smcc.ITCard"));
+
+
+
+ }
+
+ /**
+ * Creates a SignatureCard instance with the given smart card.
+ *
+ * @param card
+ * the smart card, or <code>null</code> if a software card should be
+ * created
+ * @param cardTerminal TODO
+ *
+ * @return a SignatureCard instance
+ *
+ * @throws CardNotSupportedException
+ * if no implementation of the given <code>card</code> could be
+ * found
+ */
+ public SignatureCard createSignatureCard(Card card, CardTerminal cardTerminal)
+ throws CardNotSupportedException {
+
+ if(card == null) {
+ SignatureCard sCard = new SWCard();
+ sCard.init(card, cardTerminal);
+ return sCard;
+ }
+
+ ATR atr = card.getATR();
+ Iterator<SupportedCard> cards = supportedCards.iterator();
+ while (cards.hasNext()) {
+ SupportedCard supportedCard = cards.next();
+ if(supportedCard.matches(atr)) {
+
+ ClassLoader cl = SignatureCardFactory.class.getClassLoader();
+ SignatureCard sc;
+ try {
+ Class<?> scClass = cl.loadClass(supportedCard.getImplementationClassName());
+ sc = (SignatureCard) scClass.newInstance();
+
+ sc = ExclSignatureCardProxy.newInstance(sc);
+
+ sc.init(card, cardTerminal);
+
+ return sc;
+
+ } catch (ClassNotFoundException e) {
+ log.warn("Cannot find signature card implementation class.", e);
+ throw new CardNotSupportedException("Cannot find signature card implementation class.", e);
+ } catch (InstantiationException e) {
+ log.warn("Failed to instantiate signature card implementation.", e);
+ throw new CardNotSupportedException("Failed to instantiate signature card implementation.", e);
+ } catch (IllegalAccessException e) {
+ log.warn("Failed to instantiate signature card implementation.", e);
+ throw new CardNotSupportedException("Failed to instantiate signature card implementation.", e);
+ }
+
+ }
+ }
+
+ throw new CardNotSupportedException("Card not supported: ATR=" + toString(atr.getBytes()));
+
+ }
+
+ public static String toString(byte[] b) {
+ StringBuffer sb = new StringBuffer();
+ if (b != null && b.length > 0) {
+ sb.append(Integer.toHexString((b[0] & 240) >> 4));
+ sb.append(Integer.toHexString(b[0] & 15));
+ }
+ for(int i = 1; i < b.length; i++) {
+ sb.append(':');
+ sb.append(Integer.toHexString((b[i] & 240) >> 4));
+ sb.append(Integer.toHexString(b[i] & 15));
+ }
+ return sb.toString();
+ }
+
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/TimeoutException.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/TimeoutException.java
new file mode 100644
index 00000000..d14a4c15
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/TimeoutException.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.smcc;
+
+public class TimeoutException extends SignatureCardException {
+
+ private static final long serialVersionUID = 1L;
+
+ public TimeoutException() {
+ super();
+ }
+
+ public TimeoutException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public TimeoutException(String message) {
+ super(message);
+ }
+
+ public TimeoutException(Throwable cause) {
+ super(cause);
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/VerificationFailedException.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/VerificationFailedException.java
new file mode 100644
index 00000000..fa066ff9
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/VerificationFailedException.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.smcc;
+
+public class VerificationFailedException extends SignatureCardException {
+
+ private static final long serialVersionUID = 1L;
+
+ public static final int UNKNOWN = -1;
+
+ private int retries = UNKNOWN;
+
+ public VerificationFailedException() {
+ }
+
+ public VerificationFailedException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public VerificationFailedException(String message) {
+ super(message);
+ }
+
+ public VerificationFailedException(Throwable cause) {
+ super(cause);
+ }
+
+ public VerificationFailedException(int retries) {
+ this.retries = retries;
+ }
+
+ public VerificationFailedException(int retries, String message, Throwable cause) {
+ super(message, cause);
+ this.retries = retries;
+ }
+
+ public VerificationFailedException(int retries, String message) {
+ super(message);
+ this.retries = retries;
+ }
+
+ public VerificationFailedException(int retries, Throwable cause) {
+ super(cause);
+ this.retries = retries;
+ }
+
+ public int getRetries() {
+ return retries;
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/VerifyAPDUSpec.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/VerifyAPDUSpec.java
new file mode 100644
index 00000000..23c1f0fd
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/VerifyAPDUSpec.java
@@ -0,0 +1,200 @@
+/*
+* 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.smcc;
+
+public class VerifyAPDUSpec {
+
+ public static final int PIN_JUSTIFICATION_LEFT = 0;
+
+ public static final int PIN_JUSTIFICATION_RIGHT = 1;
+
+ public static final int PIN_FORMAT_BINARY = 0;
+
+ public static final int PIN_FORMAT_BCD = 1;
+
+ public static final int PIN_FORMAT_ASCII = 2;
+
+ /**
+ * The APDU template.
+ */
+ protected byte[] apdu;
+
+ /**
+ * The PIN position in bytes.
+ */
+ protected int pinPosition;
+
+ /**
+ * The PIN justification (either {@link #PIN_JUSTIFICATION_LEFT} or
+ * {@link #PIN_JUSTIFICATION_RIGHT}).
+ */
+ protected int pinJustification = PIN_JUSTIFICATION_LEFT;
+
+ /**
+ * The PIN encoding format (one of {@value #PIN_FORMAT_BCD},
+ * {@link #PIN_FORMAT_ASCII}).
+ */
+ protected int pinFormat;
+
+ /**
+ * The size of the PIN length in bits or 0 for no PIN length. (Default: 0)
+ */
+ protected int pinLengthSize = 0;
+
+ /**
+ * The PIN length in the template in bytes.
+ */
+ protected int pinLength;
+
+ /**
+ * The PIN length position in the template in bits or 0 for no PIN length.
+ * (Default: 0)
+ */
+ protected int pinLengthPos = 0;
+
+ /**
+ * @param apdu
+ * @param pinPosition
+ * @param pinFormat
+ * @param pinLength TODO
+ */
+ public VerifyAPDUSpec(byte[] apdu, int pinPosition, int pinFormat, int pinLength) {
+ super();
+ this.apdu = apdu;
+ this.pinPosition = pinPosition;
+ this.pinFormat = pinFormat;
+ this.pinLength = pinLength;
+ }
+
+ /**
+ * @param apdu
+ * @param pinPosition
+ * @param pinFormat
+ * @param pinLength
+ * @param pinLengthSize
+ * @param pinLengthPos
+ */
+ public VerifyAPDUSpec(byte[] apdu, int pinPosition, int pinFormat,
+ int pinLength, int pinLengthSize, int pinLengthPos) {
+ super();
+ this.apdu = apdu;
+ this.pinPosition = pinPosition;
+ this.pinFormat = pinFormat;
+ this.pinLength = pinLength;
+ this.pinLengthSize = pinLengthSize;
+ this.pinLengthPos = pinLengthPos;
+ }
+
+ /**
+ * @return the apdu
+ */
+ public byte[] getApdu() {
+ return apdu;
+ }
+
+ /**
+ * @param apdu the apdu to set
+ */
+ public void setApdu(byte[] apdu) {
+ this.apdu = apdu;
+ }
+
+ /**
+ * @return the pinPosition
+ */
+ public int getPinPosition() {
+ return pinPosition;
+ }
+
+ /**
+ * @param pinPosition the pinPosition to set
+ */
+ public void setPinPosition(int pinPosition) {
+ this.pinPosition = pinPosition;
+ }
+
+ /**
+ * @return the pinJustification
+ */
+ public int getPinJustification() {
+ return pinJustification;
+ }
+
+ /**
+ * @param pinJustification the pinJustification to set
+ */
+ public void setPinJustification(int pinJustification) {
+ this.pinJustification = pinJustification;
+ }
+
+ /**
+ * @return the pinFormat
+ */
+ public int getPinFormat() {
+ return pinFormat;
+ }
+
+ /**
+ * @param pinFormat the pinFormat to set
+ */
+ public void setPinFormat(int pinFormat) {
+ this.pinFormat = pinFormat;
+ }
+
+ /**
+ * @return the pinLengthSize
+ */
+ public int getPinLengthSize() {
+ return pinLengthSize;
+ }
+
+ /**
+ * @param pinLengthSize the pinLengthSize to set
+ */
+ public void setPinLengthSize(int pinLengthSize) {
+ this.pinLengthSize = pinLengthSize;
+ }
+
+ /**
+ * @return the pinLength
+ */
+ public int getPinLength() {
+ return pinLength;
+ }
+
+ /**
+ * @param pinLength the pinLength to set
+ */
+ public void setPinLength(int pinLength) {
+ this.pinLength = pinLength;
+ }
+
+ /**
+ * @return the pinLengthPos
+ */
+ public int getPinLengthPos() {
+ return pinLengthPos;
+ }
+
+ /**
+ * @param pinLengthPos the pinLengthPos to set
+ */
+ public void setPinLengthPos(int pinLengthPos) {
+ this.pinLengthPos = pinLengthPos;
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/conf/SMCCConfiguration.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/conf/SMCCConfiguration.java
new file mode 100644
index 00000000..136ca283
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/conf/SMCCConfiguration.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.smcc.conf;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class SMCCConfiguration {
+
+ private static final long serialVersionUID = 1L;
+
+ boolean disablePinpad;
+
+ /**
+ * @return the disablePinpad
+ */
+ public boolean isDisablePinpad() {
+ return disablePinpad;
+ }
+
+ /**
+ * @param disablePinpad the disablePinpad to set
+ */
+ public void setDisablePinpad(boolean disablePinpad) {
+ this.disablePinpad = disablePinpad;
+ }
+
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/ModifyPINGUI.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/ModifyPINGUI.java
new file mode 100644
index 00000000..00dc2d0e
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/ModifyPINGUI.java
@@ -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.
+*/
+package at.gv.egiz.smcc.pin.gui;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.PINSpec;
+
+
+public interface ModifyPINGUI extends ModifyPINProvider {
+
+ void modifyPINDirect(PINSpec spec, int retries) throws CancelledException, InterruptedException;
+ void finishDirect();
+
+ void enterCurrentPIN(PINSpec spec, int retries);
+ void enterNewPIN(PINSpec spec);
+ void confirmNewPIN(PINSpec spec);
+ void validKeyPressed();
+ void correctionButtonPressed();
+ void allKeysCleared();
+ /** called prior to MODIFY_PIN_FINISH control command transmission (clear display or display wait message) */
+ void finish();
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/ModifyPINProvider.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/ModifyPINProvider.java
new file mode 100644
index 00000000..36f0097d
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/ModifyPINProvider.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.smcc.pin.gui;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.PINSpec;
+
+
+/**
+ * user interface for "software pin-entry" of
+ * <ul>
+ * <li> current pin and new pin (change pin)
+ * <li> new pin (pin activation, no current pin)
+ * <li> puk and new pin (probably verify only?)
+ * </ul>
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public interface ModifyPINProvider {
+
+ /**
+ *
+ * @param spec
+ * @param retries
+ * @return null if no old value for this pin
+ * @throws at.gv.egiz.smcc.CancelledException if cancelled by user
+ * @throws java.lang.InterruptedException
+ */
+ public char[] provideCurrentPIN(PINSpec spec, int retries)
+ throws CancelledException, InterruptedException;
+
+ public char[] provideNewPIN(PINSpec spec)
+ throws CancelledException, InterruptedException;
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/PINGUI.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/PINGUI.java
new file mode 100644
index 00000000..5199977b
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/PINGUI.java
@@ -0,0 +1,42 @@
+/*
+* 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.smcc.pin.gui;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.PINSpec;
+
+
+/**
+ * Display messages for pinpad pin-entry.
+ * Provides an interface for two types of pinpad pin-entry: pinpad-direct and pinpad-start/finish
+ * @author clemens.orthacker@iaik.tugraz.at
+ */
+public interface PINGUI extends PINProvider {
+
+ void enterPINDirect(PINSpec spec, int retries)
+ throws CancelledException, InterruptedException;
+
+ /**
+ * @throws CancelledException, InterruptedException if signature-data dialog is interrupted or cancelled
+ */
+ void enterPIN(PINSpec spec, int retries)
+ throws CancelledException, InterruptedException;
+ void validKeyPressed();
+ void correctionButtonPressed();
+ void allKeysCleared();
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/PINProvider.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/PINProvider.java
new file mode 100644
index 00000000..7443ee30
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/pin/gui/PINProvider.java
@@ -0,0 +1,51 @@
+/*
+* 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.smcc.pin.gui;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.PINSpec;
+
+
+/**
+ * The number of retries is not fixed and there is no way (?) to obtain this value.
+ * A PINProvider should therefore maintain an internal retry counter or flag
+ * to decide whether or not to warn the user (num retries passed in providePIN).
+ *
+ * Therefore PINProvider objects should not be reused.
+ *
+ * (ACOS: reload counter: between 0 and 15, where 15 meens deactivated)
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public interface PINProvider {
+
+ /**
+ * TODO change interface to void providePIN(char[] pin, pinspec, retries)
+ * to allow caller to clear pin afterwards.
+ *
+ * @param spec
+ * @param retries num of remaining retries or -1 if unknown
+ * (a positive value does <em>not</em> necessarily signify that there was
+ * already an unsuccessful PIN verification)
+ * @return pin != null
+ * @throws at.gv.egiz.smcc.CancelledException
+ * @throws java.lang.InterruptedException
+ */
+ char[] providePIN(PINSpec pinSpec, int retries)
+ throws CancelledException, InterruptedException;
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/CardReader.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/CardReader.java
new file mode 100644
index 00000000..a1246dd6
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/CardReader.java
@@ -0,0 +1,92 @@
+/*
+ * 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.smcc.reader;
+
+import javax.smartcardio.CardChannel;
+import javax.smartcardio.CardException;
+import javax.smartcardio.ResponseAPDU;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.ChangeReferenceDataAPDUSpec;
+import at.gv.egiz.smcc.NewReferenceDataAPDUSpec;
+import at.gv.egiz.smcc.PINSpec;
+import at.gv.egiz.smcc.ResetRetryCounterAPDUSpec;
+import at.gv.egiz.smcc.SignatureCardException;
+import at.gv.egiz.smcc.VerifyAPDUSpec;
+import at.gv.egiz.smcc.pin.gui.ModifyPINGUI;
+import at.gv.egiz.smcc.pin.gui.PINGUI;
+import javax.smartcardio.Card;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public interface CardReader {
+
+
+ String[] FEATURES = new String[]{"NO_FEATURE",
+ "FEATURE_VERIFY_PIN_START",
+ "FEATURE_VERIFY_PIN_FINISH",
+ "FEATURE_MODIFY_PIN_START",
+ "FEATURE_MODIFY_PIN_FINISH",
+ "FEATURE_GET_KEY_PRESSED",
+ "FEATURE_VERIFY_PIN_DIRECT",
+ "FEATURE_MODIFY_PIN_DIRECT",
+ "FEATURE_MCT_READER_DIRECT",
+ "FEATURE_MCT_UNIVERSAL",
+ "FEATURE_IFD_PIN_PROPERTIES",
+ "FEATURE_ABORT",
+ "FEATURE_SET_SPE_MESSAGE",
+ "FEATURE_VERIFY_PIN_DIRECT_APP_ID",
+ "FEATURE_MODIFY_PIN_DIRECT_APP_ID",
+ "FEATURE_WRITE_DISPLAY",
+ "FEATURE_GET_KEY",
+ "FEATURE_IFD_DISPLAY_PROPERTIES"};
+
+ Byte FEATURE_VERIFY_PIN_START = new Byte((byte) 0x01);
+ Byte FEATURE_VERIFY_PIN_FINISH = new Byte((byte) 0x02);
+ Byte FEATURE_MODIFY_PIN_START = new Byte((byte) 0x03);
+ Byte FEATURE_MODIFY_PIN_FINISH = new Byte((byte) 0x04);
+ Byte FEATURE_GET_KEY_PRESSED = new Byte((byte) 0x05);
+ Byte FEATURE_VERIFY_PIN_DIRECT = new Byte((byte) 0x06);
+ Byte FEATURE_MODIFY_PIN_DIRECT = new Byte((byte) 0x07);
+ Byte FEATURE_MCT_READER_DIRECT = new Byte((byte) 0x08);
+ Byte FEATURE_MCT_UNIVERSAL = new Byte((byte) 0x09);
+ Byte FEATURE_IFD_PIN_PROPERTIES = new Byte((byte) 0x0a);
+ //TODO continue list
+
+
+ Card connect() throws CardException;
+
+ boolean hasFeature(Byte feature);
+
+ ResponseAPDU verify(CardChannel channel, VerifyAPDUSpec apduSpec,
+ PINGUI pinGUI, PINSpec pinSpec, int retries)
+ throws CancelledException, InterruptedException, CardException, SignatureCardException;
+
+ ResponseAPDU modify(CardChannel channel, ChangeReferenceDataAPDUSpec apduSpec,
+ ModifyPINGUI pinGUI, PINSpec pinSpec, int retries)
+ throws CancelledException, InterruptedException, CardException, SignatureCardException;
+
+ ResponseAPDU modify(CardChannel channel, NewReferenceDataAPDUSpec apduSpec,
+ ModifyPINGUI pinGUI, PINSpec pinSpec)
+ throws CancelledException, InterruptedException, CardException, SignatureCardException;
+
+ ResponseAPDU modify(CardChannel channel, ResetRetryCounterAPDUSpec apduSpec,
+ ModifyPINGUI pinGUI, PINSpec pinSpec, int retries)
+ throws CancelledException, InterruptedException, CardException, SignatureCardException;
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/DefaultCardReader.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/DefaultCardReader.java
new file mode 100644
index 00000000..03a794fe
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/DefaultCardReader.java
@@ -0,0 +1,106 @@
+/*
+ * 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.smcc.reader;
+
+
+import javax.smartcardio.Card;
+import javax.smartcardio.CardChannel;
+import javax.smartcardio.CardException;
+import javax.smartcardio.CardTerminal;
+import javax.smartcardio.ResponseAPDU;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.smcc.ChangeReferenceDataAPDUSpec;
+import at.gv.egiz.smcc.NewReferenceDataAPDUSpec;
+import at.gv.egiz.smcc.PINSpec;
+import at.gv.egiz.smcc.ResetRetryCounterAPDUSpec;
+import at.gv.egiz.smcc.SignatureCardException;
+import at.gv.egiz.smcc.VerifyAPDUSpec;
+import at.gv.egiz.smcc.pin.gui.ModifyPINGUI;
+import at.gv.egiz.smcc.pin.gui.PINGUI;
+import at.gv.egiz.smcc.util.ISO7816Utils;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class DefaultCardReader implements CardReader {
+
+ protected final static Log log = LogFactory.getLog(DefaultCardReader.class);
+
+ protected CardTerminal ct;
+ protected String name;
+
+ public DefaultCardReader(CardTerminal ct) {
+ if (ct == null) {
+ throw new NullPointerException("no card or card terminal provided");
+ }
+ this.ct = ct;
+ this.name = ct.getName();
+ }
+
+ @Override
+ public ResponseAPDU verify(CardChannel channel, VerifyAPDUSpec apduSpec,
+ PINGUI pinGUI, PINSpec pinSpec, int retries)
+ throws SignatureCardException, CardException, InterruptedException {
+
+ log.debug("VERIFY");
+ return channel.transmit(ISO7816Utils.createVerifyAPDU(apduSpec, pinGUI.providePIN(pinSpec, retries)));
+ }
+
+ @Override
+ public ResponseAPDU modify(CardChannel channel, ChangeReferenceDataAPDUSpec apduSpec,
+ ModifyPINGUI pinGUI, PINSpec pinSpec, int retries)
+ throws SignatureCardException, CardException, InterruptedException {
+ log.debug("MODIFY (CHANGE_REFERENCE_DATA)");
+ char[] oldPIN = pinGUI.provideCurrentPIN(pinSpec, retries);
+ char[] newPIN = pinGUI.provideNewPIN(pinSpec);
+ return channel.transmit(ISO7816Utils.createChangeReferenceDataAPDU(apduSpec, oldPIN, newPIN));
+ }
+
+ @Override
+ public ResponseAPDU modify(CardChannel channel, NewReferenceDataAPDUSpec apduSpec,
+ ModifyPINGUI pinGUI, PINSpec pinSpec)
+ throws SignatureCardException, CardException, InterruptedException {
+ log.debug("MODIFY (NEW_REFERENCE_DATA)");
+ char[] newPIN = pinGUI.provideNewPIN(pinSpec);
+ return channel.transmit(ISO7816Utils.createNewReferenceDataAPDU(apduSpec, newPIN));
+ }
+
+ @Override
+ public ResponseAPDU modify(CardChannel channel, ResetRetryCounterAPDUSpec apduSpec,
+ ModifyPINGUI pinGUI, PINSpec pinSpec, int retries)
+ throws InterruptedException, CardException, SignatureCardException {
+ log.debug("MODIFY (RESET_RETRY_COUNTER)");
+ //TODO
+ return modify(channel, (ChangeReferenceDataAPDUSpec) apduSpec, pinGUI, pinSpec, retries);
+ }
+
+ @Override
+ public Card connect() throws CardException {
+ log.debug("connect icc");
+ return ct.connect("*");
+ }
+
+ @Override
+ public boolean hasFeature(Byte feature) {
+ return false;
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/PinpadCardReader.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/PinpadCardReader.java
new file mode 100644
index 00000000..c2537af8
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/PinpadCardReader.java
@@ -0,0 +1,703 @@
+/*
+ * 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.smcc.reader;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.Map;
+
+import javax.smartcardio.Card;
+import javax.smartcardio.CardChannel;
+import javax.smartcardio.CardException;
+import javax.smartcardio.CardTerminal;
+import javax.smartcardio.ResponseAPDU;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.ChangeReferenceDataAPDUSpec;
+import at.gv.egiz.smcc.NewReferenceDataAPDUSpec;
+import at.gv.egiz.smcc.PINConfirmationException;
+import at.gv.egiz.smcc.PINFormatException;
+import at.gv.egiz.smcc.PINOperationAbortedException;
+import at.gv.egiz.smcc.PINSpec;
+import at.gv.egiz.smcc.ResetRetryCounterAPDUSpec;
+import at.gv.egiz.smcc.SignatureCardException;
+import at.gv.egiz.smcc.TimeoutException;
+import at.gv.egiz.smcc.VerifyAPDUSpec;
+import at.gv.egiz.smcc.pin.gui.ModifyPINGUI;
+import at.gv.egiz.smcc.pin.gui.PINGUI;
+import at.gv.egiz.smcc.util.SMCCHelper;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class PinpadCardReader extends DefaultCardReader {
+
+ public static final int PIN_ENTRY_POLLING_INTERVAL = 10;
+
+ protected final static Log log = LogFactory.getLog(PinpadCardReader.class);
+
+ protected byte bEntryValidationCondition = 0x02; // validation key pressed
+ protected byte bTimeOut = 0x3c; // 60sec (= max on ReinerSCT)
+ protected byte bTimeOut2 = 0x00; // default (attention with SCM)
+ protected byte wPINMaxExtraDigitH = 0x00; // min pin length zero digits
+ protected byte wPINMaxExtraDigitL = 0x0c; // max pin length 12 digits
+
+ /**
+ * supported features and respective control codes
+ */
+ protected Map<Byte, Integer> features;
+ protected boolean VERIFY, MODIFY, VERIFY_DIRECT, MODIFY_DIRECT;
+
+ public PinpadCardReader(CardTerminal ct, Map<Byte, Integer> features) {
+ super(ct);
+ if (features == null) {
+ throw new NullPointerException("Pinpad card reader does not support any features");
+ }
+ this.features = features;
+
+ if (features.containsKey(FEATURE_VERIFY_PIN_START) &&
+ features.containsKey(FEATURE_GET_KEY_PRESSED) &&
+ features.containsKey(FEATURE_VERIFY_PIN_FINISH)) {
+ VERIFY = true;
+ }
+ if (features.containsKey(FEATURE_MODIFY_PIN_START) &&
+ features.containsKey(FEATURE_GET_KEY_PRESSED) &&
+ features.containsKey(FEATURE_MODIFY_PIN_FINISH)) {
+ MODIFY = true;
+ }
+ if (features.containsKey(FEATURE_VERIFY_PIN_DIRECT)) {
+ VERIFY_DIRECT = true;
+ }
+ if (features.containsKey(FEATURE_MODIFY_PIN_DIRECT)) {
+ MODIFY_DIRECT = true;
+ }
+
+ if (name != null) {
+ name = name.toLowerCase();
+ //ReinerSCT: http://support.reiner-sct.de/downloads/LINUX
+ // http://www.linux-club.de/viewtopic.php?f=61&t=101287&start=0
+ //old: REINER SCT CyberJack 00 00
+ //new (CCID): 0C4B/0300 Reiner-SCT cyberJack pinpad(a) 00 00
+ //Snow Leopard: Reiner-SCT cyberJack pinpad(a) 00 00
+ //display: REINER SCT CyberJack 00 00
+ if(name.startsWith("gemplus gempc pinpad") || name.startsWith("gemalto gempc pinpad")) {
+ log.debug("setting custom wPINMaxExtraDigitH (0x04) for " + name);
+ wPINMaxExtraDigitH = 0x04;
+ log.debug("setting custom wPINMaxExtraDigitL (0x08) for " + name);
+ wPINMaxExtraDigitL = 0x08;
+ } else if (name.startsWith("omnikey cardman 3621")) {
+ log.debug("setting custom wPINMaxExtraDigitH (0x01) for " + name);
+ wPINMaxExtraDigitH = 0x01;
+ } else if (name.startsWith("scm spr 532") || name.startsWith("scm microsystems inc. sprx32 usb smart card reader")) {
+ log.debug("setting custom bTimeOut (0x3c) for " + name);
+ bTimeOut = 0x3c;
+ log.debug("setting custom bTimeOut2 (0x0f) for " + name);
+ bTimeOut2 = 0x0f;
+ } else if (name.startsWith("cherry smartboard xx44")) {
+ log.debug("setting custom wPINMaxExtraDigitH (0x01) for " + name);
+ wPINMaxExtraDigitH = 0x01;
+ }
+ }
+
+ }
+
+ @Override
+ public boolean hasFeature(Byte feature) {
+ return features.containsKey(feature);
+ }
+
+ private void VERIFY_PIN_START(Card icc, byte[] PIN_VERIFY) throws CardException {
+ int ioctl = features.get(FEATURE_VERIFY_PIN_START);
+ if (log.isTraceEnabled()) {
+ log.trace("VERIFY_PIN_START (" + Integer.toHexString(ioctl) +
+ ") " + SMCCHelper.toString(PIN_VERIFY));
+ }
+ byte[] resp = icc.transmitControlCommand(ioctl, PIN_VERIFY);
+ if (resp != null && resp.length > 0) {
+ if (resp[0] == (byte) 0x57) {
+ log.error("Invalid parameter in PIN_VERIFY structure");
+ throw new CardException("ERROR_INVALID_PARAMETER");
+ } else {
+ log.error("unexpected response to VERIFY_PIN_START: " +
+ SMCCHelper.toString(resp));
+ throw new CardException("unexpected response to VERIFY_PIN_START: " +
+ SMCCHelper.toString(resp));
+ }
+ }
+ }
+
+ private byte GET_KEY_PRESSED(Card icc) throws CardException {
+ int ioctl = features.get(FEATURE_GET_KEY_PRESSED);
+ byte[] resp = icc.transmitControlCommand(ioctl, new byte[0]);
+ if (resp != null && resp.length == 1) {
+// if (log.isTraceEnabled()) {
+// log.trace("response " + SMCCHelper.toString(resp));
+// }
+ return resp[0];
+ }
+ log.error("unexpected response to GET_KEY_PRESSED: " +
+ SMCCHelper.toString(resp));
+ throw new CardException("unexpected response to GET_KEY_PRESSED: " +
+ SMCCHelper.toString(resp));
+ }
+
+ private byte[] VERIFY_PIN_FINISH(Card icc) throws CardException {
+ int ioctl = features.get(FEATURE_VERIFY_PIN_FINISH);
+ if (log.isTraceEnabled()) {
+ log.trace("VERIFY_PIN_FINISH (" + Integer.toHexString(ioctl) + ")");
+ }
+ byte[] resp = icc.transmitControlCommand(ioctl, new byte[0]);
+ if (resp != null && resp.length == 2) {
+ if (log.isTraceEnabled()) {
+ log.trace("response " + SMCCHelper.toString(resp));
+ }
+ return resp;
+ }
+ log.error("unexpected response to VERIFY_PIN_FINISH: " +
+ SMCCHelper.toString(resp));
+ throw new CardException("unexpected response to VERIFY_PIN_FINISH: " +
+ SMCCHelper.toString(resp));
+ }
+
+ private void MODIFY_PIN_START(Card icc, byte[] PIN_MODIFY) throws CardException {
+ int ioctl = features.get(FEATURE_MODIFY_PIN_START);
+ if (log.isTraceEnabled()) {
+ log.trace("MODFIY_PIN_START (" + Integer.toHexString(ioctl) +
+ ") " + SMCCHelper.toString(PIN_MODIFY));
+ }
+ byte[] resp = icc.transmitControlCommand(ioctl, PIN_MODIFY);
+ if (resp != null && resp.length > 0) {
+ if (resp[0] == (byte) 0x57) {
+ log.error("Invalid parameter in PIN_MODIFY structure");
+ throw new CardException("ERROR_INVALID_PARAMETER");
+ } else {
+ log.error("unexpected response to MODIFY_PIN_START: " +
+ SMCCHelper.toString(resp));
+ throw new CardException("unexpected response to MODIFY_PIN_START: " +
+ SMCCHelper.toString(resp));
+ }
+ }
+ }
+
+ private byte[] MODIFY_PIN_FINISH(Card icc) throws CardException {
+ int ioctl = features.get(FEATURE_MODIFY_PIN_FINISH);
+ if (log.isTraceEnabled()) {
+ log.trace("MODIFY_PIN_FINISH (" + Integer.toHexString(ioctl) + ")");
+ }
+ byte[] resp = icc.transmitControlCommand(ioctl, new byte[0]);
+ if (resp != null && resp.length == 2) {
+ if (log.isTraceEnabled()) {
+ log.trace("response " + SMCCHelper.toString(resp));
+ }
+ return resp;
+ }
+ log.error("unexpected response to MODIFY_PIN_FINISH: " +
+ SMCCHelper.toString(resp));
+ throw new CardException("unexpected response to MODIFY_PIN_FINISH: " +
+ SMCCHelper.toString(resp));
+ }
+
+ private byte[] VERIFY_PIN_DIRECT(Card icc, byte[] PIN_VERIFY) throws CardException {
+ int ioctl = features.get(FEATURE_VERIFY_PIN_DIRECT);
+ if (log.isTraceEnabled()) {
+ log.trace("VERIFY_PIN_DIRECT (" + Integer.toHexString(ioctl) +
+ ") " + SMCCHelper.toString(PIN_VERIFY));
+ }
+ byte[] resp = icc.transmitControlCommand(ioctl, PIN_VERIFY);
+ if (log.isTraceEnabled()) {
+ log.trace("response " + SMCCHelper.toString(resp));
+ }
+ return resp;
+ }
+
+ private byte[] verifyPin(Card icc, byte[] PIN_VERIFY, PINGUI pinGUI)
+ throws SignatureCardException, CardException, InterruptedException {
+
+// pinGUI.enterPIN(pinSpec, retries);
+
+ log.debug("VERIFY_PIN_START [" + FEATURES[FEATURE_VERIFY_PIN_START] + "]");
+ VERIFY_PIN_START(icc, PIN_VERIFY);
+
+ byte resp;
+ do {
+ resp = GET_KEY_PRESSED(icc);
+ if (resp == (byte) 0x00) {
+ synchronized(this) {
+ try {
+ wait(PIN_ENTRY_POLLING_INTERVAL);
+ } catch (InterruptedException ex) {
+ log.error("interrupted in VERIFY_PIN");
+ }
+ }
+ } else if (resp == (byte) 0x0d) {
+ log.debug("GET_KEY_PRESSED: 0x0d (user confirmed)");
+ break;
+ } else if (resp == (byte) 0x2b) {
+ log.trace("GET_KEY_PRESSED: 0x2b (user entered valid key 0-9)");
+ pinGUI.validKeyPressed();
+ } else if (resp == (byte) 0x1b) {
+ log.debug("GET_KEY_PRESSED: 0x1b (user cancelled VERIFY_PIN via cancel button)");
+ break; // returns 0x6401
+ } else if (resp == (byte) 0x08) {
+ log.debug("GET_KEY_PRESSED: 0x08 (user pressed correction/backspace button)");
+ pinGUI.correctionButtonPressed();
+ } else if (resp == (byte) 0x0e) {
+ log.debug("GET_KEY_PRESSED: 0x0e (timeout occured)");
+ break; // return 0x6400
+ } else if (resp == (byte) 0x40) {
+ log.debug("GET_KEY_PRESSED: 0x40 (PIN_Operation_Aborted)");
+ throw new PINOperationAbortedException("PIN_Operation_Aborted (0x40)");
+ } else if (resp == (byte) 0x0a) {
+ log.debug("GET_KEY_PRESSED: 0x0a (all keys cleared");
+ pinGUI.allKeysCleared();
+ } else {
+ log.error("unexpected response to GET_KEY_PRESSED: " +
+ Integer.toHexString(resp));
+ throw new CardException("unexpected response to GET_KEY_PRESSED: " +
+ Integer.toHexString(resp));
+ }
+ } while (true);
+
+ return VERIFY_PIN_FINISH(icc);
+ }
+
+ /**
+ * does not display the first pin dialog (enterCurrentPIN or enterNewPIN, depends on bConfirmPIN),
+ * since this is easier to do in calling modify()
+ */
+ private byte[] modifyPin(Card icc, byte[] PIN_MODIFY, ModifyPINGUI pinGUI, PINSpec pINSpec)
+ throws PINOperationAbortedException, CardException {
+
+ byte pinConfirmations = (byte) 0x00; //b0: new pin not entered (0) / entered (1)
+ //b1: current pin not entered (0) / entered (1)
+ byte bConfirmPIN = PIN_MODIFY[9];
+
+// if ((bConfirmPIN & (byte) 0x02) == 0) {
+// log.debug("no current PIN entry requested");
+// pinGUI.enterNewPIN(pINSpec);
+// } else {
+// log.debug("current PIN entry requested");
+// pinGUI.enterCurrentPIN(pINSpec, retries);
+// }
+
+ log.debug("MODIFY_PIN_START [" + FEATURES[FEATURE_MODIFY_PIN_START] + "]");
+ MODIFY_PIN_START(icc, PIN_MODIFY);
+
+ byte resp;
+ while (true) {
+ resp = GET_KEY_PRESSED(icc);
+ if (resp == (byte) 0x00) {
+ synchronized(this) {
+ try {
+ wait(PIN_ENTRY_POLLING_INTERVAL);
+ } catch (InterruptedException ex) {
+ log.error("interrupted in MODIFY_PIN");
+ }
+ }
+ } else if (resp == (byte) 0x0d) {
+ if (log.isTraceEnabled()) {
+ log.trace("requested pin confirmations: 0b" + Integer.toBinaryString(bConfirmPIN & 0xff));
+ log.trace("performed pin confirmations: 0b" + Integer.toBinaryString(pinConfirmations & 0xff));
+ }
+ log.debug("GET_KEY_PRESSED: 0x0d (user confirmed)");
+ if (pinConfirmations == bConfirmPIN) {
+ break;
+ } else if ((bConfirmPIN & (byte) 0x02) == 0 ||
+ (pinConfirmations & (byte) 0x02) == (byte) 0x02) {
+ // no current pin entry or current pin entry already performed
+ if ((pinConfirmations & (byte) 0x01) == 0) {
+ // new pin
+ pinConfirmations |= (byte) 0x01;
+ pinGUI.confirmNewPIN(pINSpec);
+ } // else: new pin confirmed
+ } else {
+ // current pin entry
+ pinConfirmations |= (byte) 0x02;
+ pinGUI.enterNewPIN(pINSpec);
+ }
+ } else if (resp == (byte) 0x2b) {
+ log.trace("GET_KEY_PRESSED: 0x2b (user entered valid key 0-9)");
+ pinGUI.validKeyPressed();
+ } else if (resp == (byte) 0x1b) {
+ log.debug("GET_KEY_PRESSED: 0x1b (user cancelled VERIFY_PIN via cancel button)");
+ break; // returns 0x6401
+ } else if (resp == (byte) 0x08) {
+ log.debug("GET_KEY_PRESSED: 0x08 (user pressed correction/backspace button)");
+ pinGUI.correctionButtonPressed();
+ } else if (resp == (byte) 0x0e) {
+ log.debug("GET_KEY_PRESSED: 0x0e (timeout occured)");
+ break; // return 0x6400
+ } else if (resp == (byte) 0x40) {
+ log.debug("GET_KEY_PRESSED: 0x40 (PIN_Operation_Aborted)");
+ throw new PINOperationAbortedException("PIN_Operation_Aborted (0x40)");
+ } else if (resp == (byte) 0x0a) {
+ log.debug("GET_KEY_PRESSED: 0x0a (all keys cleared");
+ pinGUI.allKeysCleared();
+ } else {
+ log.error("unexpected response to GET_KEY_PRESSED: " +
+ Integer.toHexString(resp));
+ throw new CardException("unexpected response to GET_KEY_PRESSED: " +
+ Integer.toHexString(resp));
+ }
+
+ }
+
+ pinGUI.finish();
+ return MODIFY_PIN_FINISH(icc);
+ }
+
+ private byte[] MODIFY_PIN_DIRECT(Card icc, byte[] PIN_MODIFY) throws CardException {
+ int ioctl = features.get(FEATURE_MODIFY_PIN_DIRECT);
+ if (log.isTraceEnabled()) {
+ log.trace("MODIFY_PIN_DIRECT (" + Integer.toHexString(ioctl) +
+ ") " + SMCCHelper.toString(PIN_MODIFY));
+ }
+ byte[] resp = icc.transmitControlCommand(ioctl, PIN_MODIFY);
+ if (log.isTraceEnabled()) {
+ log.trace("response " + SMCCHelper.toString(resp));
+ }
+ return resp;
+ }
+
+ protected byte[] createPINModifyStructure(NewReferenceDataAPDUSpec apduSpec, PINSpec pinSpec) {
+
+ ByteArrayOutputStream s = new ByteArrayOutputStream();
+ // bTimeOut
+ s.write(bTimeOut);
+ // bTimeOut2
+ s.write(bTimeOut2);
+ // bmFormatString
+ s.write(1 << 7 // system unit = byte
+ | (0xF & apduSpec.getPinPosition()) << 3
+ | (0x1 & apduSpec.getPinJustification() << 2)
+ | (0x3 & apduSpec.getPinFormat()));
+ // bmPINBlockString
+ s.write((0xF & apduSpec.getPinLengthSize()) << 4
+ | (0xF & apduSpec.getPinLength()));
+ // bmPINLengthFormat
+ s.write(// system unit = bit
+ (0xF & apduSpec.getPinLengthPos()));
+ // bInsertionOffsetOld
+ s.write(0x00);
+ // bInsertionOffsetNew
+ s.write(apduSpec.getPinInsertionOffsetNew());
+ // wPINMaxExtraDigit
+ s.write(Math.min(pinSpec.getMaxLength(), wPINMaxExtraDigitL));
+ s.write(Math.max(pinSpec.getMinLength(), wPINMaxExtraDigitH));
+ // bConfirmPIN
+ s.write(0x01);
+ // bEntryValidationCondition
+ s.write(bEntryValidationCondition);
+ // bNumberMessage
+ s.write(0x02);
+ // wLangId English (United States), see http://www.usb.org/developers/docs/USB_LANGIDs.pdf
+ s.write(0x09);
+ s.write(0x04);
+ // bMsgIndex1
+ s.write(0x01);
+ // bMsgIndex2
+ s.write(0x02);
+ // bMsgIndex3
+ s.write(0x00);
+
+ // bTeoPrologue
+ s.write(0x00);
+ s.write(0x00);
+ s.write(0x00);
+ // ulDataLength
+ s.write(apduSpec.getApdu().length);
+ s.write(0x00);
+ s.write(0x00);
+ s.write(0x00);
+ // abData
+ try {
+ s.write(apduSpec.getApdu());
+ } catch (IOException e) {
+ // As we are dealing with ByteArrayOutputStreams no exception is to be
+ // expected.
+ throw new RuntimeException(e);
+ }
+
+ return s.toByteArray();
+
+ }
+
+ protected byte[] createPINModifyStructure(ChangeReferenceDataAPDUSpec apduSpec, PINSpec pinSpec) {
+ //TODO bInsertionOffsetOld (0x00), bConfirmPIN (0x01), bNumberMessage (0x02), bMsgIndex1/2/3
+
+ ByteArrayOutputStream s = new ByteArrayOutputStream();
+ // bTimeOut
+ s.write(bTimeOut);
+ // bTimeOut2
+ s.write(bTimeOut2);
+ // bmFormatString
+ s.write(1 << 7 // system unit = byte
+ | (0xF & apduSpec.getPinPosition()) << 3
+ | (0x1 & apduSpec.getPinJustification() << 2)
+ | (0x3 & apduSpec.getPinFormat()));
+ // bmPINBlockString
+ s.write((0xF & apduSpec.getPinLengthSize()) << 4
+ | (0xF & apduSpec.getPinLength()));
+ // bmPINLengthFormat
+ s.write(// system unit = bit
+ (0xF & apduSpec.getPinLengthPos()));
+ // bInsertionOffsetOld (0x00 for no old pin?)
+ s.write(apduSpec.getPinInsertionOffsetOld());
+ // bInsertionOffsetNew
+ s.write(apduSpec.getPinInsertionOffsetNew());
+ // wPINMaxExtraDigit
+ s.write(Math.min(pinSpec.getMaxLength(), wPINMaxExtraDigitL));
+ s.write(Math.max(pinSpec.getMinLength(), wPINMaxExtraDigitH));
+ // bConfirmPIN
+ s.write(0x03);
+ // bEntryValidationCondition
+ s.write(bEntryValidationCondition);
+ // bNumberMessage
+ s.write(0x03);
+ // wLangId English (United States), see http://www.usb.org/developers/docs/USB_LANGIDs.pdf
+ s.write(0x09);
+ s.write(0x04);
+ // bMsgIndex1
+ s.write(0x00);
+ // bMsgIndex2
+ s.write(0x01);
+ // bMsgIndex3
+ s.write(0x02);
+
+ // bTeoPrologue
+ s.write(0x00);
+ s.write(0x00);
+ s.write(0x00);
+ // ulDataLength
+ s.write(apduSpec.getApdu().length);
+ s.write(0x00);
+ s.write(0x00);
+ s.write(0x00);
+ // abData
+ try {
+ s.write(apduSpec.getApdu());
+ } catch (IOException e) {
+ // As we are dealing with ByteArrayOutputStreams no exception is to be
+ // expected.
+ throw new RuntimeException(e);
+ }
+
+ return s.toByteArray();
+
+ }
+
+ protected byte[] createPINVerifyStructure(VerifyAPDUSpec apduSpec, PINSpec pinSpec) {
+
+ ByteArrayOutputStream s = new ByteArrayOutputStream();
+ // bTimeOut
+ s.write(bTimeOut);
+ // bTimeOut2
+ s.write(bTimeOut2);
+ // bmFormatString
+ s.write(1 << 7 // system unit = byte
+ | (0xF & apduSpec.getPinPosition()) << 3
+ | (0x1 & apduSpec.getPinJustification() << 2)
+ | (0x3 & apduSpec.getPinFormat()));
+ // bmPINBlockString
+ s.write((0xF & apduSpec.getPinLengthSize()) << 4
+ | (0xF & apduSpec.getPinLength()));
+ // bmPINLengthFormat
+ s.write(// system unit = bit
+ (0xF & apduSpec.getPinLengthPos()));
+ // wPINMaxExtraDigit
+ s.write(Math.min(pinSpec.getMaxLength(), wPINMaxExtraDigitL)); // max PIN length
+ s.write(Math.max(pinSpec.getMinLength(), wPINMaxExtraDigitH)); // min PIN length
+ // bEntryValidationCondition
+ s.write(bEntryValidationCondition);
+ // bNumberMessage
+ s.write(0x01);
+ // wLangId
+ s.write(0x09);
+ s.write(0x04);
+ // bMsgIndex
+ s.write(0x00);
+ // bTeoPrologue
+ s.write(0x00);
+ s.write(0x00);
+ s.write(0x00);
+ // ulDataLength
+ s.write(apduSpec.getApdu().length);
+ s.write(0x00);
+ s.write(0x00);
+ s.write(0x00);
+ // abData
+ try {
+ s.write(apduSpec.getApdu());
+ } catch (IOException e) {
+ // As we are dealing with ByteArrayOutputStreams no exception is to be
+ // expected.
+ throw new RuntimeException(e);
+ }
+
+ return s.toByteArray();
+
+ }
+
+ @Override
+ public ResponseAPDU verify(CardChannel channel, VerifyAPDUSpec apduSpec,
+ PINGUI pinGUI, PINSpec pinSpec, int retries)
+ throws SignatureCardException, CardException, InterruptedException {
+
+ ResponseAPDU resp = null;
+
+ byte[] s = createPINVerifyStructure(apduSpec, pinSpec);
+ Card icc = channel.getCard();
+
+ if (VERIFY) {
+ pinGUI.enterPIN(pinSpec, retries);
+ resp = new ResponseAPDU(verifyPin(icc, s, pinGUI));
+ } else if (VERIFY_DIRECT) {
+ pinGUI.enterPINDirect(pinSpec, retries);
+ log.debug("VERIFY_PIN_DIRECT [" + FEATURES[FEATURE_VERIFY_PIN_DIRECT] + "]");
+ resp = new ResponseAPDU(VERIFY_PIN_DIRECT(icc, s));
+ } else {
+ log.warn("falling back to default pin-entry");
+ return super.verify(channel, apduSpec, pinGUI, pinSpec, retries);
+ }
+
+ switch (resp.getSW()) {
+ case 0x6400:
+ log.debug("SPE operation timed out.");
+ throw new TimeoutException();
+ case 0x6401:
+ log.debug("SPE operation was cancelled by the 'Cancel' button.");
+ throw new CancelledException();
+ case 0x6403:
+ log.debug("User entered too short or too long PIN "
+ + "regarding MIN/MAX PIN length.");
+ throw new PINFormatException();
+ case 0x6480:
+ log.debug("SPE operation was aborted by the 'Cancel' operation "
+ + "at the host system.");
+ case 0x6b80:
+ log.info("Invalid parameter in passed structure.");
+ default:
+ return resp;
+ }
+ }
+
+ @Override
+ public ResponseAPDU modify(CardChannel channel, ChangeReferenceDataAPDUSpec apduSpec,
+ ModifyPINGUI pinGUI, PINSpec pinSpec, int retries)
+ throws SignatureCardException, CardException, InterruptedException {
+
+ ResponseAPDU resp = null;
+
+ byte[] s = createPINModifyStructure(apduSpec, pinSpec);
+ Card icc = channel.getCard();
+
+ if (MODIFY) {
+ pinGUI.enterCurrentPIN(pinSpec, retries);
+ resp = new ResponseAPDU(modifyPin(icc, s, pinGUI, pinSpec));
+ } else if (MODIFY_DIRECT) {
+ pinGUI.modifyPINDirect(pinSpec, retries);
+ log.debug("MODIFY_PIN_DIRECT [" + FEATURES[FEATURE_MODIFY_PIN_DIRECT] + "]");
+ resp = new ResponseAPDU(MODIFY_PIN_DIRECT(icc, s));
+ } else {
+ log.warn("falling back to default pin-entry");
+ return super.modify(channel, apduSpec, pinGUI, pinSpec, retries);
+ }
+
+ switch (resp.getSW()) {
+ case 0x6400:
+ log.debug("SPE operation timed out.");
+ throw new TimeoutException();
+ case 0x6401:
+ log.debug("SPE operation was cancelled by the 'Cancel' button.");
+ throw new CancelledException();
+ case 0x6402:
+ log.debug("Modify PIN operation failed because two 'new PIN' " +
+ "entries do not match");
+ throw new PINConfirmationException();
+ case 0x6403:
+ log.debug("User entered too short or too long PIN "
+ + "regarding MIN/MAX PIN length.");
+ throw new PINFormatException();
+ case 0x6480:
+ log.debug("SPE operation was aborted by the 'Cancel' operation "
+ + "at the host system.");
+ case 0x6b80:
+ log.info("Invalid parameter in passed structure.");
+ default:
+ return resp;
+ }
+ }
+
+ @Override
+ public ResponseAPDU modify(CardChannel channel, NewReferenceDataAPDUSpec apduSpec,
+ ModifyPINGUI pinGUI, PINSpec pinSpec)
+ throws SignatureCardException, CardException, InterruptedException {
+
+ ResponseAPDU resp = null;
+
+ byte[] s = createPINModifyStructure(apduSpec, pinSpec);
+ Card icc = channel.getCard();
+
+ if (MODIFY) {
+ pinGUI.enterNewPIN(pinSpec);
+ resp = new ResponseAPDU(modifyPin(icc, s, pinGUI, pinSpec));
+ } else if (MODIFY_DIRECT) {
+ pinGUI.modifyPINDirect(pinSpec, -1);
+ log.debug("MODIFY_PIN_DIRECT [" + FEATURES[FEATURE_MODIFY_PIN_DIRECT] + "]");
+ resp = new ResponseAPDU(MODIFY_PIN_DIRECT(icc, s));
+ } else {
+ log.warn("falling back to default pin-entry");
+ return super.modify(channel, apduSpec, pinGUI, pinSpec);
+ }
+
+ switch (resp.getSW()) {
+ case 0x6400:
+ log.debug("SPE operation timed out.");
+ throw new TimeoutException();
+ case 0x6401:
+ log.debug("SPE operation was cancelled by the 'Cancel' button.");
+ throw new CancelledException();
+ case 0x6402:
+ log.debug("Modify PIN operation failed because two 'new PIN' " +
+ "entries do not match");
+ throw new PINConfirmationException();
+ case 0x6403:
+ log.debug("User entered too short or too long PIN "
+ + "regarding MIN/MAX PIN length.");
+ throw new PINFormatException();
+ case 0x6480:
+ log.debug("SPE operation was aborted by the 'Cancel' operation "
+ + "at the host system.");
+ case 0x6b80:
+ log.info("Invalid parameter in passed structure.");
+ default:
+ return resp;
+ }
+ }
+
+ @Override
+ public ResponseAPDU modify(CardChannel channel, ResetRetryCounterAPDUSpec apduSpec,
+ ModifyPINGUI pinGUI, PINSpec pinSpec, int retries)
+ throws InterruptedException, CardException, SignatureCardException {
+ //TODO
+ return modify(channel, (ChangeReferenceDataAPDUSpec) apduSpec, pinGUI, pinSpec, retries);
+ }
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/ReaderFactory.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/ReaderFactory.java
new file mode 100644
index 00000000..bf1730e9
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/reader/ReaderFactory.java
@@ -0,0 +1,125 @@
+/*
+ * 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.smcc.reader;
+
+import at.gv.egiz.smcc.conf.SMCCConfiguration;
+import at.gv.egiz.smcc.util.SMCCHelper;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import javax.smartcardio.Card;
+import javax.smartcardio.CardException;
+import javax.smartcardio.CardTerminal;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class ReaderFactory {
+
+ protected final static Log log = LogFactory.getLog(ReaderFactory.class);
+
+ protected static SMCCConfiguration configuration;
+
+ public void setConfiguration(SMCCConfiguration configuration) {
+ if (configuration != null) {
+ log.debug("reader configuration: disablePinpad=" + configuration.isDisablePinpad());
+ }
+ //spring injects configuration into singleton ReaderFactory instance,
+ //but we access the ReaderFactory statically (getReader)
+ //(we rather should query the application context to obtain a reader factory)
+ ReaderFactory.configuration = configuration;
+ }
+
+ public static CardReader getReader(Card icc, CardTerminal ct) {
+
+ String name = ct.getName();
+ log.info("creating reader " + name);
+
+ Map<Byte, Integer> features;
+ if (configuration != null && configuration.isDisablePinpad()) {
+ features = Collections.emptyMap();
+ } else {
+ features = queryFeatures(icc);
+ }
+
+ CardReader reader;
+ if (features.isEmpty()) {
+ reader = new DefaultCardReader(ct);
+ } else {
+ reader = new PinpadCardReader(ct, features);
+ }
+
+ return reader;
+ }
+
+ private static int CTL_CODE(int code) {
+ String os_name = System.getProperty("os.name").toLowerCase();
+ if (os_name.indexOf("windows") > -1) {
+ // cf. WinIOCTL.h
+ return (0x31 << 16 | (code) << 2);
+ }
+ // cf. reader.h
+ return 0x42000000 + (code);
+ }
+
+ static int IOCTL_GET_FEATURE_REQUEST = CTL_CODE(3400);
+
+ private static Map<Byte, Integer> queryFeatures(Card icc) {
+ Map<Byte, Integer> features = new HashMap<Byte, Integer>();
+
+ if (icc == null) {
+ log.warn("invalid card handle, cannot query ifd features");
+ } else {
+ try {
+ if (log.isTraceEnabled()) {
+ log.trace("GET_FEATURE_REQUEST " + Integer.toHexString(IOCTL_GET_FEATURE_REQUEST));
+ }
+ byte[] resp = icc.transmitControlCommand(IOCTL_GET_FEATURE_REQUEST,
+ new byte[0]);
+
+ if (log.isTraceEnabled()) {
+ log.trace("Response TLV " + SMCCHelper.toString(resp));
+ }
+ // tag
+ // length in bytes (always 4)
+ // control code value for supported feature (in big endian)
+ for (int i = 0; i < resp.length; i += 6) {
+ Byte feature = new Byte(resp[i]);
+ Integer ioctl = new Integer((0xff & resp[i + 2]) << 24) |
+ ((0xff & resp[i + 3]) << 16) |
+ ((0xff & resp[i + 4]) << 8) |
+ (0xff & resp[i + 5]);
+ if (log.isInfoEnabled()) {
+ log.info("IFD supports " + CardReader.FEATURES[feature.intValue()] +
+ ": " + Integer.toHexString(ioctl.intValue()));
+ }
+ features.put(feature, ioctl);
+ }
+ } catch (CardException ex) {
+ log.debug("Failed to query IFD features: " + ex.getMessage());
+ log.trace(ex);
+ log.info("IFD does not support secure pin entry");
+ }
+ }
+ return features;
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/ISO7816Utils.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/ISO7816Utils.java
new file mode 100644
index 00000000..fcd0b876
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/ISO7816Utils.java
@@ -0,0 +1,368 @@
+/*
+* 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.smcc.util;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+
+import javax.smartcardio.CardChannel;
+import javax.smartcardio.CardException;
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import at.gv.egiz.smcc.ChangeReferenceDataAPDUSpec;
+import at.gv.egiz.smcc.NewReferenceDataAPDUSpec;
+import at.gv.egiz.smcc.SecurityStatusNotSatisfiedException;
+import at.gv.egiz.smcc.SignatureCardException;
+import at.gv.egiz.smcc.VerifyAPDUSpec;
+
+public class ISO7816Utils {
+
+ public static TransparentFileInputStream openTransparentFileInputStream(
+ final CardChannel channel, int maxSize) {
+
+ TransparentFileInputStream file = new TransparentFileInputStream(maxSize) {
+
+ @Override
+ protected byte[] readBinary(int offset, int len) throws IOException {
+
+ ResponseAPDU resp;
+ try {
+ resp = channel.transmit(new CommandAPDU(0x00, 0xB0,
+ 0x7F & (offset >> 8), offset & 0xFF, len));
+ } catch (CardException e) {
+ throw new IOException(e);
+ }
+
+ Throwable cause;
+ if (resp.getSW() == 0x9000) {
+ return resp.getData();
+ } else if (resp.getSW() == 0x6982) {
+ cause = new SecurityStatusNotSatisfiedException();
+ } else {
+ cause = new SignatureCardException("Failed to read bytes (offset=" + offset + ",len="
+ + len + ") SW=" + Integer.toHexString(resp.getSW()) + ".");
+ }
+ throw new IOException(cause);
+
+ }
+
+ };
+
+ return file;
+
+ }
+
+ public static byte[] readTransparentFile(CardChannel channel, int maxSize)
+ throws CardException, SignatureCardException {
+
+ TransparentFileInputStream is = openTransparentFileInputStream(channel, maxSize);
+
+ try {
+
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+
+ int len;
+ for (byte[] b = new byte[256]; (len = is.read(b)) != -1;) {
+ os.write(b, 0, len);
+ }
+
+ return os.toByteArray();
+
+ } catch (IOException e) {
+ Throwable cause = e.getCause();
+ if (cause instanceof CardException) {
+ throw (CardException) cause;
+ }
+ if (cause instanceof SignatureCardException) {
+ throw (SignatureCardException) cause;
+ }
+ throw new SignatureCardException(e);
+ }
+
+ }
+
+ public static byte[] readTransparentFileTLV(CardChannel channel, int maxSize,
+ byte expectedType) throws CardException, SignatureCardException {
+
+ TransparentFileInputStream is = openTransparentFileInputStream(channel,
+ maxSize);
+
+ return readTransparentFileTLV(is, maxSize, expectedType);
+
+ }
+
+ public static byte[] readTransparentFileTLV(TransparentFileInputStream is, int maxSize,
+ byte expectedType) throws CardException, SignatureCardException {
+
+
+ try {
+
+ is.mark(256);
+
+ // check expected type
+ int b = is.read();
+ if (b == 0x00) {
+ return null;
+ }
+ if (b == -1 || expectedType != (0xFF & b)) {
+ throw new SignatureCardException("Unexpected TLV type. Expected "
+ + Integer.toHexString(expectedType) + " but was "
+ + Integer.toHexString(b) + ".");
+ }
+
+ // get actual length
+ int actualSize = 2;
+ b = is.read();
+ if (b == -1) {
+ return null;
+ } else if ((0x80 & b) > 0) {
+ int octets = (0x0F & b);
+ actualSize += octets;
+ for (int i = 1; i <= octets; i++) {
+ b = is.read();
+ if (b == -1) {
+ return null;
+ }
+ actualSize += (0xFF & b) << ((octets - i) * 8);
+ }
+ } else {
+ actualSize += 0xFF & b;
+ }
+
+ // set limit to actual size and read into buffer
+ is.reset();
+ is.setLimit(actualSize);
+ byte[] buf = new byte[actualSize];
+ if (is.read(buf) == actualSize) {
+ return buf;
+ } else {
+ return null;
+ }
+
+ } catch (IOException e) {
+ Throwable cause = e.getCause();
+ if (cause instanceof CardException) {
+ throw (CardException) cause;
+ }
+ if (cause instanceof SignatureCardException) {
+ throw (SignatureCardException) cause;
+ }
+ throw new SignatureCardException(e);
+ }
+
+ }
+
+ public static int getLengthFromFCx(byte[] fcx) {
+
+ int len = -1;
+
+ if (fcx.length != 0 && (fcx[0] == (byte) 0x62 || fcx[0] == (byte) 0x6F)) {
+ int pos = 2;
+ while (pos < (fcx[1] - 2)) {
+ switch (fcx[pos]) {
+
+ case (byte) 0x80:
+ case (byte) 0x81: {
+ len = 0xFF & fcx[pos + 2];
+ for (int i = 1; i < fcx[pos + 1]; i++) {
+ len<<=8;
+ len+=0xFF & fcx[pos + i + 2];
+ }
+ }
+
+ default:
+ pos += 0xFF & fcx[pos + 1] + 2;
+ }
+ }
+ }
+
+ return len;
+
+ }
+
+ public static byte[] readRecord(CardChannel channel, int record) throws CardException, SignatureCardException {
+
+ ResponseAPDU resp = channel.transmit(
+ new CommandAPDU(0x00, 0xB2, record, 0x04, 256));
+ if (resp.getSW() == 0x9000) {
+ return resp.getData();
+ } else {
+ throw new SignatureCardException("Failed to read records. SW="
+ + Integer.toHexString(resp.getSW()));
+ }
+
+ }
+
+ public static void formatPIN(int pinFormat, int pinJustification, byte[] fpin, byte[] mask, char[] pin) {
+
+ boolean left = (pinJustification == VerifyAPDUSpec.PIN_JUSTIFICATION_LEFT);
+
+ int j = (left) ? 0 : fpin.length - 1;
+ int step = (left) ? 1 : - 1;
+ switch (pinFormat) {
+ case VerifyAPDUSpec.PIN_FORMAT_BINARY:
+ if (fpin.length < pin.length) {
+ throw new IllegalArgumentException();
+ }
+ for (int i = 0; i < pin.length; i++) {
+ fpin[j] = (byte) Character.digit(pin[i], 10);
+ mask[j] = (byte) 0xFF;
+ j += step;
+ }
+ break;
+
+ case VerifyAPDUSpec.PIN_FORMAT_BCD:
+ if (fpin.length * 2 < pin.length) {
+ throw new IllegalArgumentException();
+ }
+ for (int i = 0; i < pin.length; i++) {
+ int digit = Character.digit(pin[i], 10);
+ boolean h = (i % 2 == 0) ^ left;
+ fpin[j] |= h ? digit : digit << 4 ;
+ mask[j] |= h ? (byte) 0x0F : (byte) 0xF0;
+ j += (i % 2) * step;
+ }
+ break;
+
+ case VerifyAPDUSpec.PIN_FORMAT_ASCII:
+ if (fpin.length < pin.length) {
+ throw new IllegalArgumentException();
+ }
+ byte[] asciiPin = Charset.forName("ASCII").encode(CharBuffer.wrap(pin)).array();
+ for (int i = 0; i < pin.length; i++) {
+ fpin[j] = asciiPin[i];
+ mask[j] = (byte) 0xFF;
+ j += step;
+ }
+ break;
+ }
+
+ }
+
+ public static void insertPIN(byte[] apdu, int pos, byte[] fpin, byte[] mask) {
+ for (int i = 0; i < fpin.length; i++) {
+ apdu[pos + i] &= ~mask[i];
+ apdu[pos + i] |= fpin[i];
+ }
+ }
+
+ public static void insertPINLength(byte[] apdu, int length, int lengthSize, int pos, int offset) {
+
+ // use short (2 byte) to be able to shift the pin length
+ // by the number of bits given by the pin length position
+ short size = (short) (0x00FF & length);
+ short sMask = (short) ((1 << lengthSize) - 1);
+ // shift to the proper position
+ int shift = 16 - lengthSize - (pos % 8);
+ offset += (pos / 8) + 5;
+ size <<= shift;
+ sMask <<= shift;
+ // insert upper byte
+ apdu[offset] &= (0xFF & (~sMask >> 8));
+ apdu[offset] |= (0xFF & (size >> 8));
+ // insert lower byte
+ apdu[offset + 1] &= (0xFF & ~sMask);
+ apdu[offset + 1] |= (0xFF & size);
+
+ }
+
+ public static CommandAPDU createVerifyAPDU(VerifyAPDUSpec apduSpec, char[] pin) {
+
+ // format pin
+ byte[] fpin = new byte[apduSpec.getPinLength()];
+ byte[] mask = new byte[apduSpec.getPinLength()];
+ formatPIN(apduSpec.getPinFormat(), apduSpec.getPinJustification(), fpin, mask, pin);
+
+ byte[] apdu = apduSpec.getApdu();
+
+ // insert formated pin
+ insertPIN(apdu, apduSpec.getPinPosition() + 5, fpin, mask);
+
+ // insert pin length
+ if (apduSpec.getPinLengthSize() != 0) {
+ insertPINLength(apdu, pin.length, apduSpec.getPinLengthSize(), apduSpec.getPinLengthPos(), 0);
+ }
+
+ return new CommandAPDU(apdu);
+
+ }
+
+ public static CommandAPDU createChangeReferenceDataAPDU(
+ ChangeReferenceDataAPDUSpec apduSpec, char[] oldPin, char[] newPin) {
+
+ // format old pin
+ byte[] fpin = new byte[apduSpec.getPinLength()];
+ byte[] mask = new byte[apduSpec.getPinLength()];
+ formatPIN(apduSpec.getPinFormat(), apduSpec.getPinJustification(), fpin, mask, oldPin);
+
+ byte[] apdu = apduSpec.getApdu();
+
+ // insert formated old pin
+ insertPIN(apdu, apduSpec.getPinPosition() + apduSpec.getPinInsertionOffsetOld() + 5, fpin, mask);
+
+ // insert pin length
+ if (apduSpec.getPinLengthSize() != 0) {
+ insertPINLength(apdu, oldPin.length, apduSpec.getPinLengthSize(),
+ apduSpec.getPinLengthPos(), apduSpec.getPinInsertionOffsetOld());
+ }
+
+ // format new pin
+ fpin = new byte[apduSpec.getPinLength()];
+ mask = new byte[apduSpec.getPinLength()];
+ formatPIN(apduSpec.getPinFormat(), apduSpec.getPinJustification(), fpin, mask, newPin);
+
+ // insert formated new pin
+ insertPIN(apdu, apduSpec.getPinPosition() + apduSpec.getPinInsertionOffsetNew() + 5, fpin, mask);
+
+ // insert pin length
+ if (apduSpec.getPinLengthSize() != 0) {
+ insertPINLength(apdu, newPin.length, apduSpec.getPinLengthSize(),
+ apduSpec.getPinLengthPos(), apduSpec.getPinInsertionOffsetNew());
+ }
+
+ return new CommandAPDU(apdu);
+
+ }
+
+ public static CommandAPDU createNewReferenceDataAPDU(
+ NewReferenceDataAPDUSpec apduSpec, char[] newPin) {
+
+ // format old pin
+ byte[] fpin = new byte[apduSpec.getPinLength()];
+ byte[] mask = new byte[apduSpec.getPinLength()];
+ formatPIN(apduSpec.getPinFormat(), apduSpec.getPinJustification(), fpin, mask, newPin);
+
+ byte[] apdu = apduSpec.getApdu();
+
+ // insert formated new pin
+ insertPIN(apdu, apduSpec.getPinPosition() + apduSpec.getPinInsertionOffsetNew() + 5, fpin, mask);
+
+ // insert pin length
+ if (apduSpec.getPinLengthSize() != 0) {
+ insertPINLength(apdu, newPin.length, apduSpec.getPinLengthSize(),
+ apduSpec.getPinLengthPos(), apduSpec.getPinInsertionOffsetNew());
+ }
+
+ return new CommandAPDU(apdu);
+
+ }
+
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/SMCCHelper.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/SMCCHelper.java
new file mode 100644
index 00000000..f7d3bab7
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/SMCCHelper.java
@@ -0,0 +1,150 @@
+/*
+* 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.smcc.util;
+
+import java.util.Locale;
+import java.util.Map;
+
+import javax.smartcardio.ATR;
+import javax.smartcardio.Card;
+import javax.smartcardio.CardTerminal;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.smcc.CardNotSupportedException;
+import at.gv.egiz.smcc.SignatureCard;
+import at.gv.egiz.smcc.SignatureCardFactory;
+
+public class SMCCHelper {
+
+ public final static int NO_CARD = 0;
+ public final static int PC_SC_NOT_SUPPORTED = 1;
+ public final static int TERMINAL_NOT_PRESENT = 2;
+ public final static int CARD_NOT_SUPPORTED = 3;
+ public final static int CARD_FOUND = 4;
+
+ private final static Log log = LogFactory.getLog(SMCCHelper.class);
+
+ protected SmartCardIO smartCardIO = new SmartCardIO();
+ protected int resultCode = NO_CARD;
+ protected SignatureCard signatureCard = null;
+ protected static boolean useSWCard = false;
+
+ public SMCCHelper() {
+ update();
+ }
+
+ public synchronized void update() {
+ update(-1);
+ }
+
+ public synchronized void update(int sleep) {
+ SignatureCardFactory factory = SignatureCardFactory.getInstance();
+ if (useSWCard) {
+ try {
+ signatureCard = factory.createSignatureCard(null, null);
+ resultCode = CARD_FOUND;
+ } catch (CardNotSupportedException e) {
+ resultCode = CARD_NOT_SUPPORTED;
+ signatureCard = null;
+ }
+ return;
+ }
+ signatureCard = null;
+ resultCode = NO_CARD;
+ // find pcsc support
+ if (smartCardIO.isPCSCSupported()) {
+ // find supported card
+ if (smartCardIO.isTerminalPresent()) {
+ Map<CardTerminal, Card> newCards = null;
+ if (sleep > 0) {
+ smartCardIO.waitForInserted(sleep);
+
+ }
+ newCards = smartCardIO.getCards();
+ for (CardTerminal cardTerminal : newCards.keySet()) {
+ try {
+ Card c = newCards.get(cardTerminal);
+ if (c == null) {
+ throw new CardNotSupportedException();
+ }
+ signatureCard = factory.createSignatureCard(c, cardTerminal);
+ ATR atr = newCards.get(cardTerminal).getATR();
+ log.trace("Found supported card (" + signatureCard.toString() + ") "
+ + "in terminal '" + cardTerminal.getName() + "', ATR = "
+ + toString(atr.getBytes()) + ".");
+ resultCode = CARD_FOUND;
+ break;
+
+ } catch (CardNotSupportedException e) {
+ Card c = newCards.get(cardTerminal);
+ if (c != null) {
+ ATR atr = c.getATR();
+ log.info("Found unsupported card" + " in terminal '"
+ + cardTerminal.getName() + "', ATR = "
+ + toString(atr.getBytes()) + ".");
+ } else {
+ log.info("Found unsupported card in terminal '"
+ + cardTerminal.getName() + "' without ATR");
+ }
+ resultCode = CARD_NOT_SUPPORTED;
+ }
+ }
+ } else {
+ resultCode = TERMINAL_NOT_PRESENT;
+ }
+ } else {
+ resultCode = PC_SC_NOT_SUPPORTED;
+ }
+ }
+
+ public synchronized SignatureCard getSignatureCard(Locale locale) {
+ if (signatureCard != null) {
+ signatureCard.setLocale(locale);
+ }
+ return signatureCard;
+ }
+
+ public int getResultCode() {
+ return resultCode;
+ }
+
+ public static String toString(byte[] b) {
+ StringBuffer sb = new StringBuffer();
+ sb.append('[');
+ if (b != null && b.length > 0) {
+ sb.append(Integer.toHexString((b[0] & 240) >> 4));
+ sb.append(Integer.toHexString(b[0] & 15));
+ for (int i = 1; i < b.length; i++) {
+ sb.append((i % 32 == 0) ? '\n' : ':');
+ sb.append(Integer.toHexString((b[i] & 240) >> 4));
+ sb.append(Integer.toHexString(b[i] & 15));
+ }
+ }
+ sb.append(']');
+ return sb.toString();
+ }
+
+ public static boolean isUseSWCard() {
+ return useSWCard;
+ }
+
+ public static void setUseSWCard(boolean useSWCard) {
+ SMCCHelper.useSWCard = useSWCard;
+ }
+}
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/SmartCardIO.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/SmartCardIO.java
new file mode 100644
index 00000000..b1866894
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/SmartCardIO.java
@@ -0,0 +1,204 @@
+/*
+* 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.smcc.util;
+
+import java.security.NoSuchAlgorithmException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import javax.smartcardio.Card;
+import javax.smartcardio.CardException;
+import javax.smartcardio.CardTerminal;
+import javax.smartcardio.CardTerminals;
+import javax.smartcardio.TerminalFactory;
+import javax.smartcardio.CardTerminals.State;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author mcentner
+ */
+public class SmartCardIO {
+
+ private static final int STATE_INITIALIZED = 1;
+
+ private static final int STATE_TERMINAL_FACTORY = 2;
+
+ private static final int STATE_TERMINALS = 3;
+
+ private static Log log = LogFactory.getLog(SmartCardIO.class);
+
+ final Map<CardTerminal, Card> terminalCard_ = new HashMap<CardTerminal, Card>();
+
+ int state_ = STATE_INITIALIZED;
+
+ TerminalFactory terminalFactory_ = null;
+
+ CardTerminals cardTerminals_;
+
+ private void updateTerminalFactory() {
+ TerminalFactory terminalFactory;
+ try {
+ terminalFactory = TerminalFactory.getInstance("PC/SC", null);
+ } catch (NoSuchAlgorithmException e) {
+ log.info("Failed to get TerminalFactory of type 'PC/SC'.", e);
+ terminalFactory = TerminalFactory.getDefault();
+ }
+ log.debug("TerminalFactory : " + terminalFactory);
+ if ("PC/SC".equals(terminalFactory.getType())) {
+ terminalFactory_ = terminalFactory;
+ }
+ if(state_ < STATE_TERMINAL_FACTORY) {
+ state_ = STATE_TERMINAL_FACTORY;
+ }
+ }
+
+ public boolean isPCSCSupported() {
+ if(state_ < STATE_TERMINAL_FACTORY) {
+ updateTerminalFactory();
+ }
+ return terminalFactory_ != null;
+ }
+
+ private void updateCardTerminals() {
+ if(terminalFactory_ != null) {
+ cardTerminals_ = terminalFactory_.terminals();
+ }
+ log.debug("CardTerminals : " + cardTerminals_);
+ if (state_ < STATE_TERMINALS) {
+ state_ = STATE_TERMINALS;
+ }
+ }
+
+ public CardTerminals getCardTerminals() {
+ if(state_ < STATE_TERMINAL_FACTORY) {
+ updateTerminalFactory();
+ }
+ if(state_ < STATE_TERMINALS) {
+ updateCardTerminals();
+ }
+ return cardTerminals_;
+ }
+
+ public boolean isTerminalPresent() {
+ CardTerminals cardTerminals = getCardTerminals();
+ if (cardTerminals != null) {
+ List<CardTerminal> terminals = null;
+ try {
+ terminals = cardTerminals.list(State.ALL);
+
+ // logging
+ if(log.isInfoEnabled()) {
+ if (terminals == null || terminals.isEmpty()) {
+ log.info("No card terminal found.");
+ } else {
+ StringBuffer msg = new StringBuffer();
+ msg.append("Found " + terminals.size() + " card terminal(s):");
+ for (CardTerminal terminal : terminals) {
+ msg.append("\n " + terminal.getName());
+ }
+ log.info(msg.toString());
+ }
+ }
+
+ return terminals != null && !terminals.isEmpty();
+ } catch (CardException e) {
+ log.info("Failed to list card terminals.", e);
+ return false;
+ }
+ } else {
+ return false;
+ }
+ }
+
+ private Map<CardTerminal, Card> updateCards() {
+
+ // clear card references if removed
+ try {
+ log.trace("terminals.list(State.CARD_REMOVAL)");
+ for (CardTerminal terminal : cardTerminals_.list(CardTerminals.State.CARD_REMOVAL)) {
+ Card card = terminalCard_.remove(terminal);
+ log.trace("card removed : " + card);
+ }
+ } catch (CardException e) {
+ log.debug(e);
+ }
+
+ // check inserted cards
+ Map<CardTerminal, Card> newCards = new HashMap<CardTerminal, Card>();
+ try {
+ log.trace("terminals.list(State.CARD_INSERTION)");
+ for (CardTerminal terminal : cardTerminals_.list(CardTerminals.State.CARD_INSERTION)) {
+
+ Card card = null;
+ try {
+ log.trace("Trying to connect to card.");
+ // try to connect to card
+ card = terminal.connect("*");
+ } catch (CardException e) {
+ log.trace("Failed to connect to card.", e);
+ }
+
+ // have we seen this card before?
+ if (terminalCard_.put(terminal, card) == null) {
+ terminalCard_.put(terminal, card);
+ newCards.put(terminal, card);
+ log.trace("terminal '" + terminal + "' card inserted : " + card);
+ }
+ }
+ } catch (CardException e) {
+ log.debug(e);
+ }
+ return newCards;
+
+ }
+
+ public Map<CardTerminal, Card> getCards() {
+ if(state_ < STATE_TERMINAL_FACTORY) {
+ updateTerminalFactory();
+ }
+ if(state_ < STATE_TERMINALS) {
+ updateCardTerminals();
+ }
+ updateCards();
+ Map<CardTerminal, Card> terminalCard = new HashMap<CardTerminal, Card>();
+ terminalCard.putAll(terminalCard_);
+ return Collections.unmodifiableMap(terminalCard);
+ }
+
+ public Map<CardTerminal, Card> waitForInserted(int timeout) {
+ if(state_ < STATE_TERMINAL_FACTORY) {
+ updateTerminalFactory();
+ }
+ if(state_ < STATE_TERMINALS) {
+ updateCardTerminals();
+ }
+ try {
+ // just waiting for a short period of time to allow for abort
+ cardTerminals_.waitForChange(timeout);
+ } catch (CardException e) {
+ log.debug("CardTerminals.waitForChange(" + timeout + ") failed.", e);
+ }
+ Map<CardTerminal, Card> newCards = new HashMap<CardTerminal, Card>();
+ newCards.putAll(updateCards());
+ return Collections.unmodifiableMap(newCards);
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/TransparentFileInputStream.java b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/TransparentFileInputStream.java
new file mode 100644
index 00000000..781f9137
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/java/at/gv/egiz/smcc/util/TransparentFileInputStream.java
@@ -0,0 +1,194 @@
+/*
+* 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.smcc.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+
+public abstract class TransparentFileInputStream extends InputStream {
+
+ private final int chunkSize = 256;
+
+ private byte[] buf = new byte[chunkSize];
+ private int start = 0;
+ private int end = 0;
+
+ private int offset = 0;
+
+ private int length = -1;
+
+ private int limit = -1;
+
+ private int mark = -1;
+
+ private int readlimit = -1;
+
+ public TransparentFileInputStream() {
+ }
+
+ public TransparentFileInputStream(int length) {
+ this.length = length;
+ }
+
+ public void setLimit(int limit) {
+ this.limit = limit;
+ }
+
+ private int fill() throws IOException {
+ if (start == end && (limit < 0 || offset < limit)) {
+ int l;
+ if (limit > 0 && limit - offset < chunkSize) {
+ l = limit - offset;
+ } else if (length > 0) {
+ if (length - offset < chunkSize) {
+ l = length - offset;
+ } else {
+ l = chunkSize - 1;
+ }
+ } else {
+ l = chunkSize;
+ }
+ byte[] b = readBinary(offset, l);
+ offset += b.length;
+ if (mark < 0) {
+ start = 0;
+ end = b.length;
+ System.arraycopy(b, 0, buf, start, b.length);
+ } else {
+ if (end - mark + b.length > buf.length) {
+ // double buffer size
+ byte[] nbuf = new byte[buf.length * 2];
+ System.arraycopy(buf, mark, nbuf, 0, end - mark);
+ buf = nbuf;
+ } else {
+ System.arraycopy(buf, mark, buf, 0, end - mark);
+ }
+ start = start - mark;
+ end = end - mark + b.length;
+ mark = 0;
+ System.arraycopy(b, 0, buf, start, b.length);
+ }
+ if (l > b.length) {
+ // end of file reached
+ setLimit(offset);
+ }
+ }
+ return end - start;
+ }
+
+ protected abstract byte[] readBinary(int offset, int len) throws IOException;
+
+ @Override
+ public int read() throws IOException {
+ int b = (fill() > 0) ? 0xFF & buf[start++] : -1;
+ if (readlimit > 0 && start > readlimit) {
+ mark = -1;
+ readlimit = -1;
+ }
+ return b;
+ }
+
+ @Override
+ public int read(byte[] b, int off, int len) throws IOException {
+ if (b == null) {
+ throw new NullPointerException();
+ } else if (off < 0 || len < 0 || len > b.length - off) {
+ throw new IndexOutOfBoundsException();
+ } else if (len == 0) {
+ return 0;
+ }
+
+ int count = 0;
+ int l;
+ while (count < len) {
+ if (fill() > 0) {
+ l = Math.min(end - start, len - count);
+ System.arraycopy(buf, start, b, off, l);
+ start += l;
+ off += l;
+ count += l;
+ if (readlimit > 0 && start > readlimit) {
+ mark = -1;
+ readlimit = -1;
+ }
+ } else {
+ return (count > 0) ? count : -1;
+ }
+ }
+
+ return count;
+
+ }
+
+ @Override
+ public synchronized void mark(int readlimit) {
+ this.readlimit = readlimit;
+ mark = start;
+ }
+
+ @Override
+ public boolean markSupported() {
+ return true;
+ }
+
+ @Override
+ public synchronized void reset() throws IOException {
+ if (mark < 0) {
+ throw new IOException();
+ } else {
+ start = mark;
+ }
+ }
+
+ @Override
+ public long skip(long n) throws IOException {
+
+ if (n <= 0) {
+ return 0;
+ }
+
+ if (n <= end - start) {
+ start += n;
+ return n;
+ } else {
+
+ mark = -1;
+
+ long remaining = n - (end - start);
+ start = end;
+
+ if (limit >= 0 && limit < offset + remaining) {
+ remaining -= limit - offset;
+ offset = limit;
+ return n - remaining;
+ }
+
+ if (length >= 0 && length < offset + remaining) {
+ remaining -= length - offset;
+ offset = length;
+ return n - remaining;
+ }
+
+ offset += remaining;
+
+ return n;
+
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/ACOSCard.properties b/mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/ACOSCard.properties
new file mode 100644
index 00000000..15f5c990
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/ACOSCard.properties
@@ -0,0 +1,24 @@
+# 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.
+
+dec.pin.name=Geheimhaltungs-PIN
+dec.pin.length=0-8
+sig.pin.name=Signatur-PIN
+sig.pin.length=0-8
+inf.pin.name=Infobox-PIN
+inf.pin.length=0-8
diff --git a/mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/BELPICCard.properties b/mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/BELPICCard.properties
new file mode 100644
index 00000000..71267394
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/BELPICCard.properties
@@ -0,0 +1,3 @@
+#pin.name=PIN
+sig.pin.name=PIN
+sig.pin.length=4-12 \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/ITCard.properties b/mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/ITCard.properties
new file mode 100644
index 00000000..e0222a70
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/ITCard.properties
@@ -0,0 +1,3 @@
+#pin.name=PIN
+sig.pin.name=PIN
+sig.pin.length=5-8 \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/STARCOSCard.properties b/mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/STARCOSCard.properties
new file mode 100644
index 00000000..122d2aa7
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/main/resources/at/gv/egiz/smcc/STARCOSCard.properties
@@ -0,0 +1,22 @@
+# 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.
+
+sig.pin.name=Signatur-PIN
+sig.pin.length=6-12
+card.pin.name=Karten-PIN
+card.pin.length=4-12
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/AbstractAppl.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/AbstractAppl.java
new file mode 100644
index 00000000..affb06ff
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/AbstractAppl.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.smcc;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+import javax.smartcardio.CardException;
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+
+public abstract class AbstractAppl implements CardAppl {
+
+ public final HashMap<Integer, PIN> pins = new HashMap<Integer, PIN>();
+
+ protected List<File> files = new ArrayList<File>();
+
+ public void checkINS(CommandAPDU command, int ins) {
+ if (command.getINS() != ins) {
+ throw new IllegalArgumentException("INS has to be 0x" + Integer.toHexString(ins) + ".");
+ }
+ }
+
+ @Override
+ public abstract byte[] getAID();
+
+ @Override
+ public abstract byte[] getFCI();
+
+ public void putFile(File file) {
+ files.add(file);
+ }
+
+ public List<File> getFiles() {
+ return files;
+ }
+
+ @Override
+ public abstract void setPin(int kid, char[] value);
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardAppl.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardAppl.java
new file mode 100644
index 00000000..76a3e567
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardAppl.java
@@ -0,0 +1,43 @@
+/*
+* 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.smcc;
+
+import javax.smartcardio.CardException;
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+
+@SuppressWarnings("restriction")
+public interface CardAppl {
+
+ public byte[] getAID();
+
+ public byte[] getFID();
+
+ public byte[] getFCI();
+
+ public void leaveApplContext();
+
+ public ResponseAPDU cmdMANAGE_SECURITY_ENVIRONMENT(CommandAPDU command, CardChannelEmul channel) throws CardException;
+
+ public ResponseAPDU cmdPERFORM_SECURITY_OPERATION(CommandAPDU command, CardChannelEmul channel) throws CardException;
+
+ public ResponseAPDU cmdINTERNAL_AUTHENTICATE(CommandAPDU command, CardChannelEmul channel) throws CardException;
+
+ public void setPin(int kid, char[] value);
+
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardChannelEmul.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardChannelEmul.java
new file mode 100644
index 00000000..bfe4e31c
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardChannelEmul.java
@@ -0,0 +1,52 @@
+/*
+* 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.smcc;
+
+import java.nio.ByteBuffer;
+
+import javax.smartcardio.CardChannel;
+import javax.smartcardio.CardException;
+import javax.smartcardio.CommandAPDU;
+
+@SuppressWarnings("restriction")
+public abstract class CardChannelEmul extends CardChannel {
+
+ protected AbstractAppl currentAppl = null;
+ protected File currentFile = null;
+
+ public CardChannelEmul() {
+ super();
+ }
+
+ @Override
+ public int getChannelNumber() {
+ return 0;
+ }
+
+ @Override
+ public void close() throws CardException {
+ throw new IllegalStateException("Basic logical channel cannot be closed.");
+ }
+
+ @Override
+ public int transmit(ByteBuffer command, ByteBuffer response) throws CardException {
+ byte[] responseBytes = transmit(new CommandAPDU(command)).getBytes();
+ response.put(responseBytes);
+ return responseBytes.length;
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardEmul.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardEmul.java
new file mode 100644
index 00000000..3dfc8510
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardEmul.java
@@ -0,0 +1,106 @@
+/*
+* 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.smcc;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.smartcardio.Card;
+import javax.smartcardio.CardChannel;
+import javax.smartcardio.CardException;
+
+
+@SuppressWarnings("restriction")
+public abstract class CardEmul extends Card {
+
+ protected Thread exclThread; // = null;
+ protected CardChannel channel; // = newCardChannel(this);
+ protected List<AbstractAppl> applications = new ArrayList<AbstractAppl>();
+
+ public CardEmul() {
+ super();
+ }
+
+// protected abstract CardChannelEmul newCardChannel(CardEmul cardEmul);
+
+ @Override
+ public void beginExclusive() throws CardException {
+
+ if (exclThread == Thread.currentThread()) {
+ throw new CardException("Exclusive access already assigned to current thread.");
+ } else if (exclThread != null) {
+ throw new CardException("Exclusive access already assigned to another thread.");
+ }
+
+ exclThread = Thread.currentThread();
+
+ }
+
+ @Override
+ public void endExclusive() throws CardException {
+
+ if (exclThread == Thread.currentThread()) {
+ exclThread = null;
+ } else if (exclThread == null) {
+ throw new CardException("Exclusive access has not been assigned.");
+ } else {
+ throw new CardException("Exclusive access has not been assigned to current thread.");
+ }
+
+ }
+
+ @Override
+ public CardChannel getBasicChannel() {
+ return channel;
+ }
+
+ @Override
+ public void disconnect(boolean reset) throws CardException {
+// if (reset) {
+// channel = newCardChannel(this);
+// }
+ }
+
+ @Override
+ public CardChannel openLogicalChannel() throws CardException {
+ throw new CardException("Logical channels not supported.");
+ }
+
+ @Override
+ public String getProtocol() {
+ return "T1";
+ }
+
+ @Override
+ public byte[] transmitControlCommand(int arg0, byte[] arg1)
+ throws CardException {
+ throw new CardException("transmitControlCommand() not supported.");
+ }
+
+ public AbstractAppl getApplication(byte[] fid) {
+
+ for(AbstractAppl appl : applications) {
+ if (Arrays.equals(appl.getAID(), fid) || Arrays.equals(appl.getFID(), fid)) {
+ return appl;
+ }
+ }
+ return null;
+
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardTerminalEmul.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardTerminalEmul.java
new file mode 100644
index 00000000..b13de62f
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardTerminalEmul.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.smcc;
+
+import javax.smartcardio.Card;
+import javax.smartcardio.CardException;
+import javax.smartcardio.CardTerminal;
+
+public class CardTerminalEmul extends CardTerminal {
+
+ private Card card;
+
+ public CardTerminalEmul(Card card) {
+ this.card = card;
+ }
+
+ @Override
+ public Card connect(String protocol) throws CardException {
+ if ("*".equals(protocol) || "T=1".equals(protocol)) {
+ return card;
+ } else {
+ throw new CardException("Protocol '" + protocol + "' not supported.");
+ }
+ }
+
+ @Override
+ public String getName() {
+ return "CardTerminal Emulation";
+ }
+
+ @Override
+ public boolean isCardPresent() throws CardException {
+ return true;
+ }
+
+ @Override
+ public boolean waitForCardAbsent(long timeout) throws CardException {
+ try {
+ Thread.sleep(timeout);
+ } catch (InterruptedException e) {
+ }
+ return false;
+ }
+
+ @Override
+ public boolean waitForCardPresent(long timeout) throws CardException {
+ return true;
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardTest.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardTest.java
new file mode 100644
index 00000000..44e48836
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardTest.java
@@ -0,0 +1,222 @@
+/*
+* 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.smcc;
+
+import at.gv.egiz.smcc.pin.gui.CancelPINProvider;
+import at.gv.egiz.smcc.pin.gui.InterruptPINProvider;
+import at.gv.egiz.smcc.pin.gui.CancelChangePINProvider;
+import static org.junit.Assert.*;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.security.NoSuchAlgorithmException;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.smartcardio.Card;
+
+import org.junit.Test;
+
+import at.gv.egiz.smcc.SignatureCard.KeyboxName;
+import at.gv.egiz.smcc.acos.A04ApplDEC;
+import at.gv.egiz.smcc.pin.gui.DummyPINGUI;
+import at.gv.egiz.smcc.pin.gui.ModifyPINGUI;
+import at.gv.egiz.smcc.pin.gui.PINGUI;
+import at.gv.egiz.smcc.pin.gui.SMCCTestPINProvider;
+import org.junit.Ignore;
+
+@SuppressWarnings("restriction")
+public abstract class CardTest {
+
+ public CardTest() {
+ super();
+ }
+
+ protected abstract SignatureCard createSignatureCard()
+ throws CardNotSupportedException;
+
+ @Test
+ public void testGetCard() throws CardNotSupportedException {
+ SignatureCard signatureCard = createSignatureCard();
+ Card card = signatureCard.getCard();
+ assertNotNull(card);
+ }
+
+ @Test
+ public void testGetInfoboxIdentityLink() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException {
+
+ final char[] pin = "0000".toCharArray();
+
+ SignatureCard signatureCard = createSignatureCard();
+
+ SMCCTestPINProvider pinProvider = new SMCCTestPINProvider(pin);
+
+ byte[] idlink = signatureCard.getInfobox("IdentityLink",
+ pinProvider, null);
+ assertNotNull(idlink);
+ assertTrue(Arrays.equals(idlink, A04ApplDEC.IDLINK));
+ assertEquals(1, pinProvider.provided);
+
+ }
+
+ @Test(expected = CancelledException.class)
+ public void testSignSIGCancel() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException,
+ NoSuchAlgorithmException, IOException {
+
+ SignatureCard signatureCard = createSignatureCard();
+
+ PINGUI pinProvider = new CancelPINProvider();
+
+ signatureCard.createSignature(new ByteArrayInputStream("MOCCA"
+ .getBytes("ASCII")), KeyboxName.SECURE_SIGNATURE_KEYPAIR, pinProvider,
+ null);
+
+ }
+
+ @Test(expected = CancelledException.class)
+ public void testSignDECCancel() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException,
+ NoSuchAlgorithmException, IOException {
+
+ SignatureCard signatureCard = createSignatureCard();
+
+ PINGUI pinProvider = new CancelPINProvider();
+
+ signatureCard.createSignature(new ByteArrayInputStream("MOCCA"
+ .getBytes("ASCII")), KeyboxName.CERITIFIED_KEYPAIR,
+ pinProvider, null);
+
+ }
+
+ @Test(expected = InterruptedException.class)
+ public void testSignSIGInterrrupted() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException,
+ NoSuchAlgorithmException, IOException {
+
+ SignatureCard signatureCard = createSignatureCard();
+
+ PINGUI pinProvider = new InterruptPINProvider();
+
+ signatureCard.createSignature(new ByteArrayInputStream("MOCCA"
+ .getBytes("ASCII")), KeyboxName.SECURE_SIGNATURE_KEYPAIR,
+ pinProvider, null);
+
+ }
+
+ @Test(expected = InterruptedException.class)
+ public void testSignDECInterrrupted() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException,
+ NoSuchAlgorithmException, IOException {
+
+ SignatureCard signatureCard = createSignatureCard();
+
+ PINGUI pinProvider = new InterruptPINProvider();
+
+ signatureCard.createSignature(new ByteArrayInputStream("MOCCA"
+ .getBytes("ASCII")), KeyboxName.CERITIFIED_KEYPAIR,
+ pinProvider, null);
+
+ }
+
+ @Test(expected = CancelledException.class)
+ public void testSignSIGConcurrent() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException,
+ NoSuchAlgorithmException, IOException {
+
+ final SignatureCard signatureCard = createSignatureCard();
+
+ PINGUI pinProvider = new DummyPINGUI() {
+ @Override
+ public char[] providePIN(PINSpec spec, int retries)
+ throws CancelledException, InterruptedException {
+
+ try {
+ signatureCard.getCertificate(KeyboxName.SECURE_SIGNATURE_KEYPAIR);
+ assertTrue(false);
+ return null;
+ } catch (SignatureCardException e) {
+ // expected
+ throw new CancelledException();
+ }
+
+ }
+ };
+
+ signatureCard.createSignature(new ByteArrayInputStream("MOCCA"
+ .getBytes("ASCII")), KeyboxName.SECURE_SIGNATURE_KEYPAIR,
+ pinProvider, null);
+
+ }
+
+ @Test(expected = CancelledException.class)
+ public void testSignDECConcurrent() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException,
+ NoSuchAlgorithmException, IOException {
+
+ final SignatureCard signatureCard = createSignatureCard();
+
+ PINGUI pinProvider = new DummyPINGUI() {
+ @Override
+ public char[] providePIN(PINSpec spec, int retries)
+ throws CancelledException, InterruptedException {
+
+ try {
+ signatureCard.getCertificate(KeyboxName.CERITIFIED_KEYPAIR);
+ assertTrue(false);
+ return null;
+ } catch (SignatureCardException e) {
+ // expected
+ throw new CancelledException();
+ }
+ }
+ };
+
+ signatureCard.createSignature(new ByteArrayInputStream("MOCCA"
+ .getBytes("ASCII")), KeyboxName.CERITIFIED_KEYPAIR,
+ pinProvider, null);
+
+ }
+
+ @Test
+ public void testGetPinSpecs() throws CardNotSupportedException {
+
+ PINMgmtSignatureCard signatureCard = (PINMgmtSignatureCard) createSignatureCard();
+
+ List<PINSpec> specs = signatureCard.getPINSpecs();
+ assertNotNull(specs);
+ assertTrue(specs.size() > 0);
+
+ }
+
+ @Test(expected = SignatureCardException.class)
+ public void testActivatePin() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException,
+ NoSuchAlgorithmException, UnsupportedEncodingException {
+
+ PINMgmtSignatureCard signatureCard = (PINMgmtSignatureCard) createSignatureCard();
+
+ ModifyPINGUI pinProvider = new CancelChangePINProvider();
+
+ List<PINSpec> specs = signatureCard.getPINSpecs();
+
+ signatureCard.activatePIN(specs.get(0), pinProvider);
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardTestSuite.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardTestSuite.java
new file mode 100644
index 00000000..3c275a8d
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/CardTestSuite.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.smcc;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+import at.gv.egiz.smcc.acos.ACOSCardTestSuite;
+
+@RunWith(Suite.class)
+@SuiteClasses( { ACOSCardTestSuite.class, at.gv.egiz.smcc.starcos.STARCOSCardTest.class })
+public class CardTestSuite {
+
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/File.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/File.java
new file mode 100644
index 00000000..e47c5f7d
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/File.java
@@ -0,0 +1,38 @@
+/*
+* 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.smcc;
+
+public class File {
+ public byte[] fid;
+ public byte[] file;
+ public byte[] fcx;
+ public int kid = -1;
+
+ public File(byte[] fid, byte[] file, byte[] fcx) {
+ this.fid = fid;
+ this.file = file;
+ this.fcx = fcx;
+ }
+
+ public File(byte[] fid, byte[] file, byte[] fcx, int kid) {
+ this.fid = fid;
+ this.file = file;
+ this.fcx = fcx;
+ this.kid = kid;
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/PIN.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/PIN.java
new file mode 100644
index 00000000..2cda0c2f
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/PIN.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.smcc;
+
+public class PIN {
+
+ public static final int STATE_RESET = 0;
+
+ public static final int STATE_PIN_VERIFIED = 1;
+
+ public static final int STATE_PIN_BLOCKED = -1;
+
+ public static final int STATE_PIN_NOTACTIVE = 2;
+
+ public byte[] pin;
+
+ public int kid;
+
+ public int state; // = STATE_RESET;
+
+ public int kfpc; // = 10;
+
+ //TODO also provde default constructor without state param
+ public PIN(byte[] pin, int kid, int kfpc, int state) {
+ this.pin = pin;
+ this.kid = kid;
+ this.kfpc = kfpc;
+ this.state = state;
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/TransparentFileInputStreamTest.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/TransparentFileInputStreamTest.java
new file mode 100644
index 00000000..4ae48335
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/TransparentFileInputStreamTest.java
@@ -0,0 +1,208 @@
+/*
+* 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.smcc;
+
+import java.io.IOException;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import at.gv.egiz.smcc.util.TransparentFileInputStream;
+import static org.junit.Assert.*;
+
+public class TransparentFileInputStreamTest {
+
+ public class TestTransparentFileInputStream extends TransparentFileInputStream {
+
+ private byte[] data;
+
+ public TestTransparentFileInputStream(byte[] data) {
+ this.data = data;
+ }
+
+ @Override
+ protected byte[] readBinary(int offset, int len) throws IOException {
+ int l = Math.min(len, data.length - offset);
+ byte[] b = new byte[l];
+ System.arraycopy(data, offset, b, 0, l);
+ return b;
+ }
+
+ }
+
+ protected static byte[] file;
+
+ protected static byte[] file_bs;
+
+ @BeforeClass
+ public static void setUpClass() {
+
+ byte b = 0x00;
+ file = new byte[1000];
+ for (int i = 0; i < file.length; i++) {
+ file[i] = b++;
+ }
+
+ file_bs = new byte[256];
+ b = 0x00;
+ for (int i = 0; i < file_bs.length; i++) {
+ file_bs[i] = b++;
+ }
+
+ }
+
+ @Test
+ public void testReadSeq() throws IOException {
+
+ TransparentFileInputStream is = new TestTransparentFileInputStream(file);
+ int i = 0;
+ int b;
+ while ((b = is.read()) != -1) {
+ assertEquals(0xFF & i++, b);
+ }
+ assertEquals(file.length, i);
+
+ }
+
+ @Test
+ public void testReadBlock() throws IOException {
+
+ TransparentFileInputStream is = new TestTransparentFileInputStream(file);
+ int i = 0;
+ byte[] b = new byte[28];
+ int l;
+ while ((l = is.read(b)) != -1) {
+ for(int j = 0; j < l; j++) {
+ assertEquals(0xFF & i++, 0xFF & b[j]);
+ }
+ }
+ assertEquals(file.length, i);
+
+ }
+
+ @Test
+ public void testReadBlockBS() throws IOException {
+
+ TransparentFileInputStream is = new TestTransparentFileInputStream(file_bs);
+ int i = 0;
+ byte[] b = new byte[28];
+ int l;
+ while ((l = is.read(b)) != -1) {
+ for(int j = 0; j < l; j++) {
+ assertEquals(0xFF & i++, 0xFF & b[j]);
+ }
+ }
+ assertEquals(file_bs.length, i);
+
+ }
+
+ @Test(expected = IOException.class)
+ public void testReset() throws IOException {
+
+ TransparentFileInputStream is = new TestTransparentFileInputStream(file);
+ is.read(new byte[128]);
+ is.reset();
+
+ }
+
+ @Test
+ public void testMark() throws IOException {
+
+ TransparentFileInputStream is = new TestTransparentFileInputStream(file);
+ int i = 0;
+ is.mark(12);
+ byte[] b = new byte[37];
+ int l;
+ while ((l = is.read(b)) != -1) {
+ for(int j = 0; j < l; j++) {
+ assertEquals(0xFF & i++, 0xFF & b[j]);
+ }
+ }
+ assertEquals(file.length, i);
+
+ }
+
+ @Test
+ public void testMarkReset() throws IOException {
+
+ TransparentFileInputStream is = new TestTransparentFileInputStream(file);
+ int i = 128;
+ is.read(new byte[i]);
+ is.mark(512);
+ byte[] b = new byte[256];
+ is.read(b);
+ for(int j = 0; j < b.length; j++) {
+ assertEquals(0xFF & i + j, 0xFF & b[j]);
+ }
+ is.reset();
+ int l;
+ while ((l = is.read(b)) != -1) {
+ for(int j = 0; j < l; j++) {
+ assertEquals(0xFF & i++, 0xFF & b[j]);
+ }
+ }
+ assertEquals(file.length, i);
+
+ }
+
+
+ @Test(expected = IOException.class)
+ public void testMarkResetLimit() throws IOException {
+
+ TransparentFileInputStream is = new TestTransparentFileInputStream(file);
+ int i = 128;
+ is.read(new byte[i]);
+ is.mark(128);
+ byte[] b = new byte[256];
+ is.read(b);
+ for(int j = 0; j < b.length; j++) {
+ assertEquals(0xFF & i + j, 0xFF & b[j]);
+ }
+ is.reset();
+
+ }
+
+ @Test
+ public void testSkipSmall() throws IOException {
+
+ TransparentFileInputStream is = new TestTransparentFileInputStream(file);
+ int i = 0;
+ i+= is.read(new byte[128]);
+ i+= is.skip(3);
+ byte[] b = new byte[256];
+ int l = is.read(b);
+ for (int j = 0; j < l; j++) {
+ assertEquals(0xFF & i + j, 0xFF & b[j]);
+ }
+
+ }
+ @Test
+ public void testSkipBig() throws IOException {
+
+ TransparentFileInputStream is = new TestTransparentFileInputStream(file);
+ int i = 0;
+ i+= is.read(new byte[128]);
+ i+= is.skip(300);
+ byte[] b = new byte[256];
+ int l = is.read(b);
+ for (int j = 0; j < l; j++) {
+ assertEquals(0xFF & i + j, 0xFF & b[j]);
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03ApplDEC.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03ApplDEC.java
new file mode 100644
index 00000000..f4ac5c35
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03ApplDEC.java
@@ -0,0 +1,151 @@
+/*
+* 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.smcc.acos;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Arrays;
+import java.util.Random;
+
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import at.gv.egiz.smcc.CardChannelEmul;
+import at.gv.egiz.smcc.File;
+import at.gv.egiz.smcc.PIN;
+
+
+@SuppressWarnings("restriction")
+public class A03ApplDEC extends ACOSApplDEC {
+
+ public static final int KID_PIN_INF = 0x83;
+
+ public A03ApplDEC() {
+ super();
+
+ System.arraycopy(IDLINK, 0, EF_INFOBOX, 0, IDLINK.length);
+ putFile(new File(FID_EF_INFOBOX, EF_INFOBOX, FCI_EF_INFOBOX, KID_PIN_INF));
+
+ try {
+ pins.put(KID_PIN_INF, new PIN("0000\0\0\0\0".getBytes("ASCII"), KID_PIN_INF, 10, PIN.STATE_RESET));
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public ResponseAPDU cmdMANAGE_SECURITY_ENVIRONMENT(CommandAPDU command, CardChannelEmul channel) {
+
+ checkINS(command, 0x22);
+
+ switch (command.getP2()) {
+ case 0xA4:
+ switch (command.getP1()) {
+ case 0x41: {
+ // INTERNAL AUTHENTICATE
+ byte[] dst = new byte[] { (byte) 0x84, (byte) 0x01, (byte) 0x88, (byte) 0x80, (byte) 0x01, (byte) 0x01 };
+ if (Arrays.equals(dst, command.getData())) {
+ securityEnv = command.getData();
+ return new ResponseAPDU(new byte[] {(byte) 0x90, (byte) 0x00});
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6F, (byte) 0x05});
+ }
+ }
+ case 0x81:
+ // EXTERNAL AUTHENTICATE
+ }
+ case 0xB6:
+ switch (command.getP1()) {
+ case 0x41:
+ // PSO - COMPUTE DIGITAL SIGNATURE
+ case 0x81:
+ // PSO - VERIFY DGITAL SIGNATURE
+ }
+ case 0xB8:
+ switch (command.getP1()) {
+ case 0x41:
+ // PSO � DECIPHER
+ case 0x81:
+ // PSO � ENCIPHER
+ }
+ default:
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x81});
+ }
+
+ }
+
+ @Override
+ public ResponseAPDU cmdPERFORM_SECURITY_OPERATION(CommandAPDU command, CardChannelEmul channel) {
+
+ checkINS(command, 0x2A);
+
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x00});
+
+ }
+
+ @Override
+ public ResponseAPDU cmdINTERNAL_AUTHENTICATE(CommandAPDU command, CardChannelEmul channel) {
+
+ checkINS(command, 0x88);
+
+ if (command.getP1() == 0x10 && command.getP2() == 0x00) {
+
+ byte[] data = command.getData();
+
+ if (securityEnv == null) {
+ // Security Environment not set or wrong
+ return new ResponseAPDU(new byte[] {(byte) 0x6F, (byte) 0x05});
+ }
+
+ byte[] digestInfo = new byte[] {
+ (byte) 0x30, (byte) 0x21, (byte) 0x30, (byte) 0x09, (byte) 0x06, (byte) 0x05, (byte) 0x2B, (byte) 0x0E,
+ (byte) 0x03, (byte) 0x02, (byte) 0x1A, (byte) 0x05, (byte) 0x00, (byte) 0x04, (byte) 0x14
+ };
+
+ if (data.length != 35 || !Arrays.equals(digestInfo, Arrays.copyOf(data, 15))) {
+ return new ResponseAPDU(new byte[] {(byte) 0x67, (byte) 0x00});
+ }
+
+
+ if (pins.get(KID_PIN_DEC).state != PIN.STATE_PIN_VERIFIED) {
+ // Security Status not satisfied
+ return new ResponseAPDU(new byte[] {(byte) 0x69, (byte) 0x82});
+ }
+
+ byte[] signature = new byte[48];
+
+ // TODO replace by signature creation
+ Random random = new Random();
+ random.nextBytes(signature);
+
+ byte[] response = new byte[signature.length + 2];
+ System.arraycopy(signature, 0, response, 0, signature.length);
+ response[signature.length] = (byte) 0x90;
+ response[signature.length + 1] = (byte) 0x00;
+
+ hash = null;
+ pins.get(KID_PIN_DEC).state = PIN.STATE_RESET;
+
+ return new ResponseAPDU(response);
+
+
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x81});
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03ApplSIG.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03ApplSIG.java
new file mode 100644
index 00000000..d059ad57
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03ApplSIG.java
@@ -0,0 +1,77 @@
+/*
+* 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.smcc.acos;
+
+import java.util.Arrays;
+
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import at.gv.egiz.smcc.CardChannelEmul;
+
+
+@SuppressWarnings("restriction")
+public class A03ApplSIG extends ACOSApplSIG {
+
+ public A03ApplSIG() {
+ super();
+ System.arraycopy(C_CH_DS, 0, EF_C_CH_DS, 0, C_CH_DS.length);
+ }
+
+ @Override
+ public ResponseAPDU cmdMANAGE_SECURITY_ENVIRONMENT(CommandAPDU command, CardChannelEmul channel) {
+
+ checkINS(command, 0x22);
+
+ switch (command.getP2()) {
+ case 0xA4:
+ switch (command.getP1()) {
+ case 0x41:
+ // INTERNAL AUTHENTICATE
+ case 0x81:
+ // EXTERNAL AUTHENTICATE
+ }
+ case 0xB6:
+ switch (command.getP1()) {
+ case 0x41: {
+ // PSO - COMPUTE DIGITAL SIGNATURE
+ byte[] dst = new byte[] { (byte) 0x84, (byte) 0x01, (byte) 0x88, (byte) 0x80, (byte) 0x01, (byte) 0x14 };
+ if (Arrays.equals(dst, command.getData())) {
+ securityEnv = command.getData();
+ return new ResponseAPDU(new byte[] {(byte) 0x90, (byte) 0x00});
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6F, (byte) 0x05});
+ }
+ }
+ case 0x81:
+ // PSO - VERIFY DGITAL SIGNATURE
+ }
+ case 0xB8:
+ switch (command.getP1()) {
+ case 0x41:
+ // PSO � DECIPHER
+ case 0x81:
+ // PSO � ENCIPHER
+ }
+ default:
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x81});
+ }
+
+ }
+
+
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03CardChannelEmul.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03CardChannelEmul.java
new file mode 100644
index 00000000..c8d5382c
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03CardChannelEmul.java
@@ -0,0 +1,98 @@
+/*
+* 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.smcc.acos;
+
+
+import javax.smartcardio.CardException;
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import at.gv.egiz.smcc.CardEmul;
+import at.gv.egiz.smcc.PIN;
+
+
+@SuppressWarnings("restriction")
+public class A03CardChannelEmul extends ACOSCardChannelEmul {
+
+ public A03CardChannelEmul(CardEmul cardEmul) {
+ super(cardEmul);
+ }
+
+ @Override
+ public ResponseAPDU cmdREAD_BINARY(CommandAPDU command) throws CardException {
+
+ if (command.getINS() != 0xB0) {
+ throw new IllegalArgumentException("INS has to be 0xB0.");
+ }
+
+ if (currentFile == null) {
+ return new ResponseAPDU(new byte[] {(byte) 0x69, (byte) 0x86});
+ }
+
+ if ((command.getP1() & 0x80) > 0) {
+ throw new CardException("Not implemented.");
+ }
+
+ int offset = command.getP2() + (command.getP1() << 8);
+ if (offset > currentFile.file.length) {
+ // Wrong length
+ return new ResponseAPDU(new byte[] {(byte) 0x67, (byte) 0x00});
+ }
+
+ if (command.getNe() == 0) {
+ throw new CardException("Not implemented.");
+ }
+
+ if (currentFile.kid != -1) {
+ if ((currentFile.kid & 0x80) > 0) {
+ PIN pin;
+ if (currentAppl == null
+ || (pin = currentAppl.pins.get(currentFile.kid)) == null
+ || pin.state != PIN.STATE_PIN_VERIFIED) {
+ return new ResponseAPDU(new byte[] {(byte) 0x69, (byte) 0x82});
+ }
+ } else {
+ // Global PINs not implemented
+ throw new CardException("Not implemented.");
+ }
+ }
+
+ int len;
+ if (command.getNe() == 256) {
+ if (currentFile.file.length > 256) {
+ return new ResponseAPDU(new byte[] {(byte) 0x67, (byte) 0x00});
+ } else {
+ len = Math.min(command.getNe(), currentFile.file.length - offset);
+ }
+ } else {
+ if (command.getNe() >= currentFile.file.length - offset) {
+ return new ResponseAPDU(new byte[] {(byte) 0x62, (byte) 0x82});
+ } else {
+ len = command.getNe();
+ }
+ }
+
+ byte[] response = new byte[len + 2];
+ System.arraycopy(currentFile.file, offset, response, 0, len);
+ response[len] = (byte) 0x90;
+ response[len + 1] = (byte) 0x00;
+ return new ResponseAPDU(response);
+
+ }
+
+
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03CardEmul.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03CardEmul.java
new file mode 100644
index 00000000..7394bae7
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03CardEmul.java
@@ -0,0 +1,31 @@
+/*
+* 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.smcc.acos;
+
+import at.gv.egiz.smcc.CardChannelEmul;
+import at.gv.egiz.smcc.CardEmul;
+
+
+
+public class A03CardEmul extends ACOSCardEmul {
+
+ public A03CardEmul(A03ApplSIG applSIG, A03ApplDEC applDEC) {
+ channel = new A03CardChannelEmul(this);
+ applications.add(applSIG);
+ applications.add(applDEC);
+ }
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03CardTest.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03CardTest.java
new file mode 100644
index 00000000..3a8ac41c
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A03CardTest.java
@@ -0,0 +1,92 @@
+/*
+* 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.smcc.acos;
+
+import static org.junit.Assert.assertTrue;
+
+import java.util.Arrays;
+
+import org.junit.Test;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.CardEmul;
+import at.gv.egiz.smcc.CardNotSupportedException;
+import at.gv.egiz.smcc.CardTerminalEmul;
+import at.gv.egiz.smcc.pin.gui.ChangePINProvider;
+import at.gv.egiz.smcc.LockedException;
+import at.gv.egiz.smcc.NotActivatedException;
+import at.gv.egiz.smcc.PINFormatException;
+import at.gv.egiz.smcc.PINMgmtSignatureCard;
+import at.gv.egiz.smcc.pin.gui.SMCCTestPINProvider;
+import at.gv.egiz.smcc.PINSpec;
+import at.gv.egiz.smcc.SignatureCard;
+import at.gv.egiz.smcc.SignatureCardException;
+import at.gv.egiz.smcc.SignatureCardFactory;
+
+public class A03CardTest extends ACOSCardTest {
+
+ @Override
+ protected SignatureCard createSignatureCard()
+ throws CardNotSupportedException {
+ SignatureCardFactory factory = SignatureCardFactory.getInstance();
+ CardEmul card = new A03CardEmul(new A03ApplSIG(), new A03ApplDEC());
+ SignatureCard signatureCard = factory.createSignatureCard(card,
+ new CardTerminalEmul(card));
+ assertTrue(signatureCard instanceof PINMgmtSignatureCard);
+ return signatureCard;
+ }
+
+ @Override
+ protected int getVersion() {
+ return 1;
+ }
+
+ @Test
+ public void testChangePin() throws CardNotSupportedException,
+ LockedException, NotActivatedException, CancelledException,
+ PINFormatException, SignatureCardException, InterruptedException {
+
+ char[] defaultPin = "123456".toCharArray();
+
+ PINMgmtSignatureCard signatureCard = (PINMgmtSignatureCard) createSignatureCard();
+ CardEmul card = (CardEmul) signatureCard.getCard();
+ ACOSApplSIG applSIG = (ACOSApplSIG) card.getApplication(ACOSAppl.AID_SIG);
+ applSIG.setPin(ACOSApplSIG.KID_PIN_SIG, defaultPin);
+ ACOSApplDEC applDEC = (ACOSApplDEC) card.getApplication(ACOSAppl.AID_DEC);
+ applDEC.setPin(ACOSApplDEC.KID_PIN_DEC, defaultPin);
+ applDEC.setPin(A03ApplDEC.KID_PIN_INF, defaultPin);
+
+ for (PINSpec pinSpec : signatureCard.getPINSpecs()) {
+
+ char[] pin = defaultPin;
+
+ for (int i = pinSpec.getMinLength(); i <= pinSpec.getMaxLength(); i++) {
+ signatureCard.verifyPIN(pinSpec, new SMCCTestPINProvider(pin));
+ char[] newPin = new char[i];
+ Arrays.fill(newPin, '0');
+ signatureCard
+ .changePIN(pinSpec, new ChangePINProvider(pin, newPin));
+ signatureCard.verifyPIN(pinSpec, new SMCCTestPINProvider(newPin));
+ pin = newPin;
+ }
+
+ }
+
+ }
+
+
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04ApplDEC.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04ApplDEC.java
new file mode 100644
index 00000000..e38a8e80
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04ApplDEC.java
@@ -0,0 +1,296 @@
+/*
+* 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.smcc.acos;
+
+import java.io.UnsupportedEncodingException;
+import java.security.GeneralSecurityException;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.InvalidKeyException;
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.Signature;
+import java.security.interfaces.RSAPrivateKey;
+import java.security.interfaces.RSAPublicKey;
+import java.util.Arrays;
+
+import javax.crypto.BadPaddingException;
+import javax.crypto.Cipher;
+import javax.crypto.IllegalBlockSizeException;
+import javax.crypto.KeyGenerator;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.SecretKey;
+import javax.crypto.SecretKeyFactory;
+import javax.crypto.spec.IvParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
+import javax.smartcardio.CardException;
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import at.gv.egiz.smcc.CardChannelEmul;
+import at.gv.egiz.smcc.File;
+import at.gv.egiz.smcc.PIN;
+
+
+@SuppressWarnings("restriction")
+public class A04ApplDEC extends ACOSApplDEC {
+
+ private static final byte[] SEC_ENV_INTERNAL_AUTHENTICATE = new byte[] { (byte) 0x84,
+ (byte) 0x01, (byte) 0x88, (byte) 0x80, (byte) 0x01, (byte) 0x01 };
+
+ private static final byte[] SEC_ENV_DECIPHER = new byte[] { (byte) 0x84,
+ (byte) 0x01, (byte) 0x88, (byte) 0x80, (byte) 0x01, (byte) 0x02 };
+
+ private static final RSAPrivateKey SK_CH_EKEY;
+
+ private static final RSAPublicKey PK_CH_EKEY;
+
+ static {
+ try {
+ KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA");
+ gen.initialize(1536);
+ KeyPair keyPair = gen.generateKeyPair();
+ SK_CH_EKEY = (RSAPrivateKey) keyPair.getPrivate();
+ PK_CH_EKEY = (RSAPublicKey) keyPair.getPublic();
+ } catch (NoSuchAlgorithmException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public A04ApplDEC() {
+ this(false);
+ }
+
+ public A04ApplDEC(boolean encrypt) {
+
+ int offset = 0;
+
+ // HEADER 'AIK' + version
+ byte[] header;
+ try {
+ header = "AIK".getBytes("ASCII");
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException(e);
+ }
+ System.arraycopy(header, 0, EF_INFOBOX, offset, header.length);
+ offset += header.length;
+ EF_INFOBOX[offset++] = 1;
+
+ // HEADER identity link
+ EF_INFOBOX[offset++] = (byte) 0x01; // Personenbindung
+ if (encrypt) {
+ EF_INFOBOX[offset++] = (byte) 0x01; // Modifier
+
+ byte[] cipherText;
+ byte[] encKey;
+ try {
+ KeyGenerator keyGenerator = KeyGenerator.getInstance("DESede");
+ SecretKey secretKey = keyGenerator.generateKey();
+
+ byte[] keyBytes = secretKey.getEncoded();
+
+ Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");
+ byte[] iv = new byte[8];
+ Arrays.fill(iv, (byte) 0x00);
+ IvParameterSpec ivParameterSpec = new IvParameterSpec(iv);
+ cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivParameterSpec);
+ cipherText = cipher.doFinal(IDLINK);
+
+ cipher = Cipher.getInstance("RSA");
+ cipher.init(Cipher.ENCRYPT_MODE, PK_CH_EKEY);
+ encKey = cipher.doFinal(keyBytes);
+
+ } catch (GeneralSecurityException e) {
+ throw new RuntimeException(e);
+ }
+
+ int len = encKey.length + cipherText.length + 2;
+
+ EF_INFOBOX[offset++] = (byte) (0xFF & len);
+ EF_INFOBOX[offset++] = (byte) (0xFF & len >> 8);
+
+ EF_INFOBOX[offset++] = (byte) (0xFF & encKey.length);
+ EF_INFOBOX[offset++] = (byte) (0xFF & encKey.length >> 8);
+
+ System.arraycopy(encKey, 0, EF_INFOBOX, offset, encKey.length);
+ offset += encKey.length;
+
+ System.arraycopy(cipherText, 0, EF_INFOBOX, offset, cipherText.length);
+
+ } else {
+ EF_INFOBOX[offset++] = (byte) 0x00; // Modifier
+ EF_INFOBOX[offset++] = (byte) (0xFF & IDLINK.length);
+ EF_INFOBOX[offset++] = (byte) (0xFF & IDLINK.length >> 8);
+ System.arraycopy(IDLINK, 0, EF_INFOBOX, offset, IDLINK.length);
+ offset += IDLINK.length;
+ }
+
+ putFile(new File(FID_EF_INFOBOX, EF_INFOBOX, FCI_EF_INFOBOX));
+ }
+
+ @Override
+ public ResponseAPDU cmdMANAGE_SECURITY_ENVIRONMENT(CommandAPDU command, CardChannelEmul channel) {
+
+ checkINS(command, 0x22);
+
+ switch (command.getP2()) {
+ case 0xA4:
+ switch (command.getP1()) {
+ case 0x41: {
+ // INTERNAL AUTHENTICATE
+ if (Arrays.equals(SEC_ENV_INTERNAL_AUTHENTICATE, command.getData())) {
+ securityEnv = command.getData();
+ return new ResponseAPDU(new byte[] {(byte) 0x90, (byte) 0x00});
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x69, (byte) 0x85});
+ }
+ }
+ case 0x81:
+ // EXTERNAL AUTHENTICATE
+ }
+ case 0xB6:
+ switch (command.getP1()) {
+ case 0x41:
+ // PSO - COMPUTE DIGITAL SIGNATURE
+ case 0x81:
+ // PSO - VERIFY DGITAL SIGNATURE
+ }
+ case 0xB8:
+ switch (command.getP1()) {
+ case 0x41:
+ // PSO � DECIPHER
+ if (Arrays.equals(SEC_ENV_DECIPHER, command.getData())) {
+ securityEnv = command.getData();
+ return new ResponseAPDU(new byte[] {(byte) 0x90, (byte) 0x00});
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x69, (byte) 0x85});
+ }
+ case 0x81:
+ // PSO � ENCIPHER
+ }
+ default:
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x81});
+ }
+
+ }
+
+ @Override
+ public ResponseAPDU cmdPERFORM_SECURITY_OPERATION(CommandAPDU command, CardChannelEmul channel) throws CardException {
+
+ checkINS(command, 0x2A);
+
+ if (command.getP1() == 0x80 && command.getP2() == 0x86) {
+
+ byte[] data = command.getData();
+
+ if (!Arrays.equals(securityEnv, SEC_ENV_DECIPHER)) {
+ return new ResponseAPDU(new byte[] {(byte) 0x6F, (byte) 0x05});
+ }
+
+ if (data.length != 193) {
+ return new ResponseAPDU(new byte[] {(byte) 0x67, (byte) 0x00});
+ }
+
+ if (pins.get(KID_PIN_DEC).state != PIN.STATE_PIN_VERIFIED) {
+ // Security Status not satisfied
+ return new ResponseAPDU(new byte[] {(byte) 0x69, (byte) 0x82});
+ }
+
+ byte[] cipherText = Arrays.copyOfRange(data, 1, data.length);
+
+ byte[] plainText;
+ try {
+ Cipher cipher = Cipher.getInstance("RSA");
+ cipher.init(Cipher.DECRYPT_MODE, SK_CH_EKEY);
+ plainText = cipher.doFinal(cipherText);
+ } catch (GeneralSecurityException e) {
+ throw new CardException(e);
+ }
+
+ byte[] response = new byte[plainText.length + 2];
+ System.arraycopy(plainText, 0, response, 0, plainText.length);
+ response[plainText.length] = (byte) 0x90;
+ response[plainText.length + 1] = (byte) 0x00;
+
+ return new ResponseAPDU(response);
+
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x00});
+ }
+
+ }
+
+ @Override
+ public ResponseAPDU cmdINTERNAL_AUTHENTICATE(CommandAPDU command, CardChannelEmul channel) throws CardException {
+
+ checkINS(command, 0x88);
+
+ if (command.getP1() == 0x10 && command.getP2() == 0x00) {
+
+ byte[] data = command.getData();
+
+ if (!Arrays.equals(securityEnv, SEC_ENV_INTERNAL_AUTHENTICATE)) {
+ return new ResponseAPDU(new byte[] {(byte) 0x6F, (byte) 0x05});
+ }
+
+ byte[] digestInfo = new byte[] {
+ (byte) 0x30, (byte) 0x21, (byte) 0x30, (byte) 0x09, (byte) 0x06, (byte) 0x05, (byte) 0x2B, (byte) 0x0E,
+ (byte) 0x03, (byte) 0x02, (byte) 0x1A, (byte) 0x05, (byte) 0x00, (byte) 0x04, (byte) 0x14
+ };
+
+ if (data.length != 35 || !Arrays.equals(digestInfo, Arrays.copyOf(data, 15))) {
+ return new ResponseAPDU(new byte[] {(byte) 0x67, (byte) 0x00});
+ }
+
+
+ if (pins.get(KID_PIN_DEC).state != PIN.STATE_PIN_VERIFIED) {
+ // Security Status not satisfied
+ return new ResponseAPDU(new byte[] {(byte) 0x69, (byte) 0x82});
+ }
+
+ byte[] digest = Arrays.copyOfRange(data, 15, 35);
+
+ byte[] sig;
+ try {
+ Signature signature = Signature.getInstance("RSA");
+ signature.initSign(SK_CH_EKEY);
+ signature.update(digest);
+ sig = signature.sign();
+ } catch (GeneralSecurityException e) {
+ throw new CardException(e);
+ }
+
+ byte[] response = new byte[sig.length + 2];
+ System.arraycopy(sig, 0, response, 0, sig.length);
+ response[sig.length] = (byte) 0x90;
+ response[sig.length + 1] = (byte) 0x00;
+
+ hash = null;
+ pins.get(KID_PIN_DEC).state = PIN.STATE_RESET;
+
+ return new ResponseAPDU(response);
+
+
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x81});
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04ApplSIG.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04ApplSIG.java
new file mode 100644
index 00000000..aee6a7f7
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04ApplSIG.java
@@ -0,0 +1,87 @@
+/*
+* 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.smcc.acos;
+
+import java.util.Arrays;
+
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import at.gv.egiz.smcc.CardChannelEmul;
+import at.gv.egiz.smcc.File;
+
+
+@SuppressWarnings("restriction")
+public class A04ApplSIG extends ACOSApplSIG {
+
+ private static byte[] FID_EF_INFO = new byte[] { (byte) 0xd0, (byte) 0x02 };
+
+ private static byte[] FCI_EF_INFO = new byte[] { (byte) 0x6f, (byte) 0x07,
+ (byte) 0x80, (byte) 0x02, (byte) 0x00, (byte) 0x08, (byte) 0x82,
+ (byte) 0x01, (byte) 0x01 };
+
+ private static byte[] EF_INFO = new byte[] { (byte) 0x02, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x90, (byte) 0x00 };
+
+ public A04ApplSIG() {
+ putFile(new File(FID_EF_INFO, EF_INFO, FCI_EF_INFO));
+ }
+
+ @Override
+ public ResponseAPDU cmdMANAGE_SECURITY_ENVIRONMENT(CommandAPDU command, CardChannelEmul channel) {
+
+ checkINS(command, 0x22);
+
+ switch (command.getP2()) {
+ case 0xA4:
+ switch (command.getP1()) {
+ case 0x41:
+ // INTERNAL AUTHENTICATE
+ case 0x81:
+ // EXTERNAL AUTHENTICATE
+ }
+ case 0xB6:
+ switch (command.getP1()) {
+ case 0x41: {
+ // PSO - COMPUTE DIGITAL SIGNATURE
+ byte[] dst = new byte[] { (byte) 0x84, (byte) 0x01, (byte) 0x88, (byte) 0x80, (byte) 0x01, (byte) 0x14 };
+ if (Arrays.equals(dst, command.getData())) {
+ securityEnv = command.getData();
+ return new ResponseAPDU(new byte[] {(byte) 0x90, (byte) 0x00});
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6F, (byte) 0x05});
+ }
+ }
+ case 0x81:
+ // PSO - VERIFY DGITAL SIGNATURE
+ }
+ case 0xB8:
+ switch (command.getP1()) {
+ case 0x41:
+ // PSO � DECIPHER
+ case 0x81:
+ // PSO � ENCIPHER
+ }
+ default:
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x81});
+ }
+
+ }
+
+
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04CardChannelEmul.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04CardChannelEmul.java
new file mode 100644
index 00000000..3eaece91
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04CardChannelEmul.java
@@ -0,0 +1,75 @@
+/*
+* 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.smcc.acos;
+
+
+import javax.smartcardio.CardException;
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import at.gv.egiz.smcc.CardEmul;
+
+
+@SuppressWarnings("restriction")
+public class A04CardChannelEmul extends ACOSCardChannelEmul {
+
+ public A04CardChannelEmul(CardEmul cardEmul) {
+ super(cardEmul);
+ }
+
+ @Override
+ public ResponseAPDU cmdREAD_BINARY(CommandAPDU command) throws CardException {
+
+ if (command.getINS() != 0xB0) {
+ throw new IllegalArgumentException("INS has to be 0xB0.");
+ }
+
+ if (currentFile == null) {
+ return new ResponseAPDU(new byte[] {(byte) 0x69, (byte) 0x86});
+ }
+
+ if ((command.getP1() & 0x80) > 0) {
+ throw new CardException("Not implemented.");
+ }
+
+ int offset = command.getP2() + (command.getP1() << 8);
+ if (offset > currentFile.file.length) {
+ // Wrong length
+ return new ResponseAPDU(new byte[] {(byte) 0x67, (byte) 0x00});
+ }
+
+ if (command.getNe() == 0) {
+ throw new CardException("Not implemented.");
+ }
+
+ if (command.getNe() == 256 || command.getNe() <= currentFile.file.length - offset) {
+ int len = Math.min(command.getNe(), currentFile.file.length - offset);
+ byte[] response = new byte[len + 2];
+ System.arraycopy(currentFile.file, offset, response, 0, len);
+ response[len] = (byte) 0x90;
+ response[len + 1] = (byte) 0x00;
+ return new ResponseAPDU(response);
+ } else if (command.getNe() >= currentFile.file.length - offset) {
+ return new ResponseAPDU(new byte[] {(byte) 0x62, (byte) 0x82});
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x67, (byte) 0x00});
+ }
+
+ }
+
+
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04CardEmul.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04CardEmul.java
new file mode 100644
index 00000000..dd44d05b
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04CardEmul.java
@@ -0,0 +1,32 @@
+/*
+* 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.smcc.acos;
+
+import at.gv.egiz.smcc.CardChannelEmul;
+import at.gv.egiz.smcc.CardEmul;
+
+
+
+public class A04CardEmul extends ACOSCardEmul {
+
+ public A04CardEmul(A04ApplSIG applSIG, A04ApplDEC applDEC) {
+ channel = new A04CardChannelEmul(this);
+ applications.add(applSIG);
+ applications.add(applDEC);
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04CardTest.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04CardTest.java
new file mode 100644
index 00000000..1cbea1b3
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/A04CardTest.java
@@ -0,0 +1,143 @@
+/*
+* 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.smcc.acos;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import iaik.security.provider.IAIK;
+
+import java.security.Security;
+import java.util.Arrays;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.CardEmul;
+import at.gv.egiz.smcc.CardNotSupportedException;
+import at.gv.egiz.smcc.CardTerminalEmul;
+import at.gv.egiz.smcc.LockedException;
+import at.gv.egiz.smcc.NotActivatedException;
+import at.gv.egiz.smcc.PINFormatException;
+import at.gv.egiz.smcc.PINMgmtSignatureCard;
+import at.gv.egiz.smcc.PINSpec;
+import at.gv.egiz.smcc.SignatureCard;
+import at.gv.egiz.smcc.SignatureCardException;
+import at.gv.egiz.smcc.SignatureCardFactory;
+import at.gv.egiz.smcc.pin.gui.ChangePINProvider;
+import at.gv.egiz.smcc.pin.gui.SMCCTestPINProvider;
+
+public class A04CardTest extends ACOSCardTest {
+
+ @Override
+ protected SignatureCard createSignatureCard()
+ throws CardNotSupportedException {
+ SignatureCardFactory factory = SignatureCardFactory.getInstance();
+ CardEmul card = new A04CardEmul(new A04ApplSIG(), new A04ApplDEC());
+ SignatureCard signatureCard = factory.createSignatureCard(card,
+ new CardTerminalEmul(card));
+ assertTrue(signatureCard instanceof PINMgmtSignatureCard);
+ return signatureCard;
+ }
+
+ @Override
+ protected int getVersion() {
+ return 2;
+ }
+
+ @BeforeClass
+ public static void setupClass() {
+ IAIK.addAsProvider();
+ }
+
+ @Test
+ public void testChangePin() throws CardNotSupportedException,
+ LockedException, NotActivatedException, CancelledException,
+ PINFormatException, SignatureCardException, InterruptedException {
+
+ char[] defaultPin = "123456".toCharArray();
+
+ PINMgmtSignatureCard signatureCard = (PINMgmtSignatureCard) createSignatureCard();
+ CardEmul card = (CardEmul) signatureCard.getCard();
+ ACOSApplSIG applSIG = (ACOSApplSIG) card.getApplication(ACOSAppl.AID_SIG);
+ applSIG.setPin(ACOSApplSIG.KID_PIN_SIG, defaultPin);
+ ACOSApplDEC applDEC = (ACOSApplDEC) card.getApplication(ACOSAppl.AID_DEC);
+ applDEC.setPin(ACOSApplDEC.KID_PIN_DEC, defaultPin);
+
+ for (PINSpec pinSpec : signatureCard.getPINSpecs()) {
+
+ char[] pin = defaultPin;
+
+ for (int i = pinSpec.getMinLength(); i <= pinSpec.getMaxLength(); i++) {
+ char[] newPin = new char[i];
+ Arrays.fill(newPin, '0');
+ signatureCard
+ .changePIN(pinSpec, new ChangePINProvider(pin, newPin));
+ signatureCard.verifyPIN(pinSpec, new SMCCTestPINProvider(newPin));
+ pin = newPin;
+ }
+
+ }
+
+ }
+
+ @Test
+ public void testGetInfoboxIdentityLinkEncrypted()
+ throws CardNotSupportedException, SignatureCardException,
+ InterruptedException {
+
+ char[] pin = "0000".toCharArray();
+
+ SignatureCardFactory factory = SignatureCardFactory.getInstance();
+ A04ApplDEC applDEC = new A04ApplDEC(true);
+ applDEC.setPin(A04ApplDEC.KID_PIN_DEC, pin);
+ CardEmul card = new A04CardEmul(new A04ApplSIG(), applDEC);
+ SignatureCard signatureCard = factory.createSignatureCard(card,
+ new CardTerminalEmul(card));
+
+ SMCCTestPINProvider pinProvider = new SMCCTestPINProvider(pin);
+
+ byte[] idlink = signatureCard.getInfobox("IdentityLink",
+ pinProvider, null);
+ assertNotNull(idlink);
+ assertTrue(Arrays.equals(idlink, A04ApplDEC.IDLINK));
+ assertEquals(1, pinProvider.getProvided());
+
+ }
+
+ @Test
+ public void testGetInfoboxIdentityLink() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException {
+
+ final char[] pin = "0000".toCharArray();
+
+ SignatureCard signatureCard = createSignatureCard();
+
+ SMCCTestPINProvider pinProvider = new SMCCTestPINProvider(pin);
+
+ byte[] idlink = signatureCard.getInfobox("IdentityLink",
+ pinProvider, null);
+ assertNotNull(idlink);
+ assertTrue(Arrays.equals(idlink, A04ApplDEC.IDLINK));
+ assertEquals(0, pinProvider.getProvided());
+
+ }
+
+
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSAppl.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSAppl.java
new file mode 100644
index 00000000..4c340d61
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSAppl.java
@@ -0,0 +1,79 @@
+/*
+* 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.smcc.acos;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Arrays;
+import java.util.Iterator;
+
+import javax.smartcardio.CardException;
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import at.gv.egiz.smcc.AbstractAppl;
+import at.gv.egiz.smcc.CardAppl;
+import at.gv.egiz.smcc.CardChannelEmul;
+import at.gv.egiz.smcc.PIN;
+
+@SuppressWarnings("restriction")
+public abstract class ACOSAppl extends AbstractAppl implements CardAppl {
+
+ public static byte[] AID_SIG = new byte[] { (byte) 0xA0, (byte) 0x00,
+ (byte) 0x00, (byte) 0x01, (byte) 0x18, (byte) 0x45, (byte) 0x43 };
+
+ public static byte[] FID_SIG = new byte[] { (byte) 0xDF, (byte) 0x70 };
+
+ public static byte[] AID_DEC = new byte[] { (byte) 0xA0, (byte) 0x00,
+ (byte) 0x00, (byte) 0x01, (byte) 0x18, (byte) 0x45, (byte) 0x4E };
+
+ public static byte[] FID_DEC = new byte[] { (byte) 0xDF, (byte) 0x71 };
+
+ protected byte[] securityEnv;
+
+ protected byte[] hash;
+
+ @Override
+ public ResponseAPDU cmdINTERNAL_AUTHENTICATE(CommandAPDU command, CardChannelEmul channel) throws CardException {
+ return new ResponseAPDU(new byte[] {(byte) 0x6D, (byte) 0x00});
+ }
+
+ @Override
+ public void leaveApplContext() {
+ Iterator<PIN> pin = pins.values().iterator();
+ while (pin.hasNext()) {
+ pin.next().state = PIN.STATE_RESET;
+ }
+ }
+
+ public void setPin(int kid, char[] value) {
+ try {
+ PIN pin = pins.get(kid);
+ if (pin != null) {
+ if (value == null) {
+ Arrays.fill(pin.pin, (byte) 0x00);
+ pin.state = PIN.STATE_PIN_BLOCKED;
+ } else {
+ int l = pin.pin.length;
+ pin.pin = Arrays.copyOf(new String(value).getBytes("ASCII"), l);
+ }
+ }
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSApplDEC.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSApplDEC.java
new file mode 100644
index 00000000..09a754f3
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSApplDEC.java
@@ -0,0 +1,334 @@
+/*
+* 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.smcc.acos;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Arrays;
+
+import at.gv.egiz.smcc.File;
+import at.gv.egiz.smcc.PIN;
+
+public abstract class ACOSApplDEC extends ACOSAppl {
+
+ public static final byte[] IDLINK = new byte[] {
+ (byte) 0x30, (byte) 0x82, (byte) 0x02, (byte) 0x11, (byte) 0x02, (byte) 0x01, (byte) 0x01, (byte) 0x0c,
+ (byte) 0x26, (byte) 0x68, (byte) 0x74, (byte) 0x74, (byte) 0x70, (byte) 0x3a, (byte) 0x2f, (byte) 0x2f,
+ (byte) 0x77, (byte) 0x77, (byte) 0x77, (byte) 0x2e, (byte) 0x61, (byte) 0x2d, (byte) 0x74, (byte) 0x72,
+ (byte) 0x75, (byte) 0x73, (byte) 0x74, (byte) 0x2e, (byte) 0x61, (byte) 0x74, (byte) 0x2f, (byte) 0x7a,
+ (byte) 0x6d, (byte) 0x72, (byte) 0x2f, (byte) 0x70, (byte) 0x65, (byte) 0x72, (byte) 0x73, (byte) 0x62,
+ (byte) 0x32, (byte) 0x30, (byte) 0x34, (byte) 0x2e, (byte) 0x78, (byte) 0x73, (byte) 0x6c, (byte) 0x0c,
+ (byte) 0x29, (byte) 0x73, (byte) 0x7a, (byte) 0x72, (byte) 0x2e, (byte) 0x62, (byte) 0x6d, (byte) 0x69,
+ (byte) 0x2e, (byte) 0x67, (byte) 0x76, (byte) 0x2e, (byte) 0x61, (byte) 0x74, (byte) 0x2d, (byte) 0x41,
+ (byte) 0x73, (byte) 0x73, (byte) 0x65, (byte) 0x72, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e,
+ (byte) 0x49, (byte) 0x44, (byte) 0x31, (byte) 0x32, (byte) 0x33, (byte) 0x36, (byte) 0x33, (byte) 0x35,
+ (byte) 0x36, (byte) 0x33, (byte) 0x36, (byte) 0x36, (byte) 0x37, (byte) 0x39, (byte) 0x39, (byte) 0x39,
+ (byte) 0x31, (byte) 0x39, (byte) 0x0c, (byte) 0x19, (byte) 0x32, (byte) 0x30, (byte) 0x30, (byte) 0x39,
+ (byte) 0x2d, (byte) 0x30, (byte) 0x33, (byte) 0x2d, (byte) 0x30, (byte) 0x36, (byte) 0x54, (byte) 0x31,
+ (byte) 0x36, (byte) 0x3a, (byte) 0x31, (byte) 0x39, (byte) 0x3a, (byte) 0x32, (byte) 0x36, (byte) 0x2b,
+ (byte) 0x30, (byte) 0x31, (byte) 0x3a, (byte) 0x30, (byte) 0x30, (byte) 0xa0, (byte) 0x42, (byte) 0x30,
+ (byte) 0x40, (byte) 0x0c, (byte) 0x18, (byte) 0x45, (byte) 0x68, (byte) 0x42, (byte) 0x53, (byte) 0x36,
+ (byte) 0x54, (byte) 0x6f, (byte) 0x31, (byte) 0x49, (byte) 0x6c, (byte) 0x54, (byte) 0x4b, (byte) 0x4f,
+ (byte) 0x4a, (byte) 0x45, (byte) 0x39, (byte) 0x75, (byte) 0x62, (byte) 0x74, (byte) 0x48, (byte) 0x69,
+ (byte) 0x51, (byte) 0x3d, (byte) 0x3d, (byte) 0x0c, (byte) 0x0a, (byte) 0x58, (byte) 0x58, (byte) 0x58,
+ (byte) 0xc5, (byte) 0x90, (byte) 0x7a, (byte) 0x67, (byte) 0xc3, (byte) 0xbc, (byte) 0x72, (byte) 0x0c,
+ (byte) 0x0c, (byte) 0x58, (byte) 0x58, (byte) 0x58, (byte) 0x54, (byte) 0xc3, (byte) 0xbc, (byte) 0x7a,
+ (byte) 0x65, (byte) 0x6b, (byte) 0xc3, (byte) 0xa7, (byte) 0x69, (byte) 0x0c, (byte) 0x0a, (byte) 0x31,
+ (byte) 0x39, (byte) 0x37, (byte) 0x33, (byte) 0x2d, (byte) 0x30, (byte) 0x36, (byte) 0x2d, (byte) 0x30,
+ (byte) 0x34, (byte) 0x30, (byte) 0x0a, (byte) 0xa0, (byte) 0x03, (byte) 0x02, (byte) 0x01, (byte) 0x00,
+ (byte) 0xa0, (byte) 0x03, (byte) 0x02, (byte) 0x01, (byte) 0x01, (byte) 0x03, (byte) 0x82, (byte) 0x01,
+ (byte) 0x01, (byte) 0x00, (byte) 0x9f, (byte) 0xa5, (byte) 0x68, (byte) 0xa9, (byte) 0x14, (byte) 0x4c,
+ (byte) 0xa4, (byte) 0x5d, (byte) 0x9d, (byte) 0x09, (byte) 0x99, (byte) 0x2e, (byte) 0xe7, (byte) 0x45,
+ (byte) 0x2e, (byte) 0x42, (byte) 0x49, (byte) 0x02, (byte) 0x16, (byte) 0xd9, (byte) 0xcb, (byte) 0x90,
+ (byte) 0x43, (byte) 0x27, (byte) 0x03, (byte) 0x43, (byte) 0x6d, (byte) 0xb4, (byte) 0x8c, (byte) 0xdc,
+ (byte) 0x1c, (byte) 0x77, (byte) 0xd4, (byte) 0x2e, (byte) 0xa1, (byte) 0x40, (byte) 0xe7, (byte) 0xe0,
+ (byte) 0x03, (byte) 0x60, (byte) 0x15, (byte) 0xf7, (byte) 0xdb, (byte) 0x03, (byte) 0x5e, (byte) 0xca,
+ (byte) 0xe4, (byte) 0x35, (byte) 0xba, (byte) 0x2b, (byte) 0xfd, (byte) 0xe6, (byte) 0xb8, (byte) 0xd8,
+ (byte) 0xb7, (byte) 0x2a, (byte) 0x80, (byte) 0xdd, (byte) 0x38, (byte) 0xe0, (byte) 0x8a, (byte) 0x69,
+ (byte) 0xad, (byte) 0x67, (byte) 0x60, (byte) 0x65, (byte) 0x42, (byte) 0xc9, (byte) 0x41, (byte) 0x60,
+ (byte) 0x94, (byte) 0xde, (byte) 0x84, (byte) 0x54, (byte) 0xad, (byte) 0xb3, (byte) 0xf4, (byte) 0xf7,
+ (byte) 0x44, (byte) 0xd5, (byte) 0xf3, (byte) 0xd3, (byte) 0xb6, (byte) 0x87, (byte) 0x8a, (byte) 0x22,
+ (byte) 0x38, (byte) 0x00, (byte) 0xcb, (byte) 0xa4, (byte) 0x4f, (byte) 0x96, (byte) 0xc2, (byte) 0x28,
+ (byte) 0xc2, (byte) 0x8d, (byte) 0x91, (byte) 0x95, (byte) 0xb4, (byte) 0xea, (byte) 0x00, (byte) 0x59,
+ (byte) 0x2e, (byte) 0xec, (byte) 0x78, (byte) 0xd8, (byte) 0x0f, (byte) 0x26, (byte) 0x04, (byte) 0xee,
+ (byte) 0xed, (byte) 0x13, (byte) 0xbf, (byte) 0x81, (byte) 0x68, (byte) 0x81, (byte) 0x43, (byte) 0xbe,
+ (byte) 0x15, (byte) 0x0e, (byte) 0xba, (byte) 0xf9, (byte) 0x6a, (byte) 0x18, (byte) 0xeb, (byte) 0x95,
+ (byte) 0xad, (byte) 0xb4, (byte) 0x0f, (byte) 0x3c, (byte) 0x94, (byte) 0x63, (byte) 0x32, (byte) 0x81,
+ (byte) 0x90, (byte) 0xcf, (byte) 0x3f, (byte) 0x95, (byte) 0xff, (byte) 0x8d, (byte) 0x86, (byte) 0xed,
+ (byte) 0xe4, (byte) 0x75, (byte) 0xd5, (byte) 0x09, (byte) 0x32, (byte) 0x17, (byte) 0x38, (byte) 0xb2,
+ (byte) 0x68, (byte) 0x35, (byte) 0x49, (byte) 0x8c, (byte) 0xa6, (byte) 0xd0, (byte) 0x3e, (byte) 0xde,
+ (byte) 0x6e, (byte) 0x47, (byte) 0x68, (byte) 0xbf, (byte) 0x98, (byte) 0x33, (byte) 0xae, (byte) 0x59,
+ (byte) 0x9f, (byte) 0xe0, (byte) 0x19, (byte) 0x9b, (byte) 0x5b, (byte) 0x1b, (byte) 0x8f, (byte) 0x74,
+ (byte) 0xd2, (byte) 0x9c, (byte) 0x01, (byte) 0x1a, (byte) 0xdf, (byte) 0xaf, (byte) 0xf8, (byte) 0x96,
+ (byte) 0x91, (byte) 0xcb, (byte) 0xf8, (byte) 0xbf, (byte) 0x06, (byte) 0xc7, (byte) 0xd5, (byte) 0x17,
+ (byte) 0x95, (byte) 0xef, (byte) 0xc5, (byte) 0x97, (byte) 0x37, (byte) 0x1b, (byte) 0xb0, (byte) 0xa1,
+ (byte) 0x4f, (byte) 0x9f, (byte) 0x01, (byte) 0x82, (byte) 0x90, (byte) 0x4a, (byte) 0x6a, (byte) 0x04,
+ (byte) 0xdb, (byte) 0x31, (byte) 0x1a, (byte) 0x58, (byte) 0xeb, (byte) 0xcd, (byte) 0x68, (byte) 0xe3,
+ (byte) 0x68, (byte) 0x0b, (byte) 0xa0, (byte) 0x11, (byte) 0x44, (byte) 0x08, (byte) 0xa0, (byte) 0x5c,
+ (byte) 0xfc, (byte) 0x61, (byte) 0x15, (byte) 0x1f, (byte) 0xbb, (byte) 0x22, (byte) 0x87, (byte) 0x18,
+ (byte) 0xa3, (byte) 0x07, (byte) 0x9b, (byte) 0x0d, (byte) 0x13, (byte) 0x7c, (byte) 0xff, (byte) 0x30,
+ (byte) 0xcf, (byte) 0xf3, (byte) 0xaf, (byte) 0xe4, (byte) 0x45, (byte) 0x05, (byte) 0xa0, (byte) 0x8e,
+ (byte) 0x6b, (byte) 0xef, (byte) 0x70, (byte) 0xf5, (byte) 0x4b, (byte) 0x68, (byte) 0x8f, (byte) 0x61,
+ (byte) 0xd6, (byte) 0xf5, (byte) 0xa0, (byte) 0x17, (byte) 0x03, (byte) 0x15, (byte) 0x00, (byte) 0x8e,
+ (byte) 0xa8, (byte) 0xdf, (byte) 0xa9, (byte) 0x77, (byte) 0xfd, (byte) 0x9b, (byte) 0x4b, (byte) 0x91,
+ (byte) 0x89, (byte) 0x34, (byte) 0x84, (byte) 0xf3, (byte) 0x24, (byte) 0xb2, (byte) 0x5a, (byte) 0x39,
+ (byte) 0xa9, (byte) 0xf2, (byte) 0x17, (byte) 0xa1, (byte) 0x17, (byte) 0x03, (byte) 0x15, (byte) 0x00,
+ (byte) 0xdb, (byte) 0xa2, (byte) 0xfd, (byte) 0xa4, (byte) 0xe7, (byte) 0x65, (byte) 0x2e, (byte) 0x7e,
+ (byte) 0xb0, (byte) 0xc8, (byte) 0xfa, (byte) 0x4d, (byte) 0x13, (byte) 0x28, (byte) 0xdf, (byte) 0xb1,
+ (byte) 0x58, (byte) 0x3b, (byte) 0x9e, (byte) 0x29, (byte) 0xa2, (byte) 0x17, (byte) 0x03, (byte) 0x15,
+ (byte) 0x00, (byte) 0x68, (byte) 0xa0, (byte) 0x17, (byte) 0x18, (byte) 0xb7, (byte) 0xb3, (byte) 0xc3,
+ (byte) 0x60, (byte) 0x77, (byte) 0x82, (byte) 0x8d, (byte) 0xf1, (byte) 0x5e, (byte) 0x10, (byte) 0xc3,
+ (byte) 0x2d, (byte) 0x78, (byte) 0x2c, (byte) 0x11, (byte) 0x0b
+ };
+ private static byte[] FCI = new byte[] { (byte) 0x6f, (byte) 0x1a, (byte) 0x84,
+ (byte) 0x07, (byte) 0xa0, (byte) 0x00, (byte) 0x00, (byte) 0x01,
+ (byte) 0x18, (byte) 0x4e, (byte) 0x43, (byte) 0x85, (byte) 0x0f,
+ (byte) 0x50, (byte) 0x0d, (byte) 0x44, (byte) 0x49, (byte) 0x47,
+ (byte) 0x53, (byte) 0x49, (byte) 0x47, (byte) 0x20, (byte) 0x43,
+ (byte) 0x43, (byte) 0x20, (byte) 0x45, (byte) 0x4e, (byte) 0x43 };
+ protected static byte[] FID_EF_C_CH_EKEY = new byte[] { (byte) 0xc0, (byte) 0x01 };
+ protected static byte[] FCI_EF_C_CH_EKEY = new byte[] { (byte) 0x6f, (byte) 0x07,
+ (byte) 0x80, (byte) 0x02, (byte) 0x07, (byte) 0xd0, (byte) 0x82,
+ (byte) 0x01, (byte) 0x01};
+ protected static byte[] C_CH_EKEY = new byte[] {
+ (byte) 0x30, (byte) 0x82, (byte) 0x05, (byte) 0x7f, (byte) 0x30, (byte) 0x82, (byte) 0x04, (byte) 0x67,
+ (byte) 0xa0, (byte) 0x03, (byte) 0x02, (byte) 0x01, (byte) 0x02, (byte) 0x02, (byte) 0x03, (byte) 0x02,
+ (byte) 0x05, (byte) 0x51, (byte) 0x30, (byte) 0x0d, (byte) 0x06, (byte) 0x09, (byte) 0x2a, (byte) 0x86,
+ (byte) 0x48, (byte) 0x86, (byte) 0xf7, (byte) 0x0d, (byte) 0x01, (byte) 0x01, (byte) 0x05, (byte) 0x05,
+ (byte) 0x00, (byte) 0x30, (byte) 0x81, (byte) 0xa1, (byte) 0x31, (byte) 0x0b, (byte) 0x30, (byte) 0x09,
+ (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x06, (byte) 0x13, (byte) 0x02, (byte) 0x41,
+ (byte) 0x54, (byte) 0x31, (byte) 0x48, (byte) 0x30, (byte) 0x46, (byte) 0x06, (byte) 0x03, (byte) 0x55,
+ (byte) 0x04, (byte) 0x0a, (byte) 0x0c, (byte) 0x3f, (byte) 0x41, (byte) 0x2d, (byte) 0x54, (byte) 0x72,
+ (byte) 0x75, (byte) 0x73, (byte) 0x74, (byte) 0x20, (byte) 0x47, (byte) 0x65, (byte) 0x73, (byte) 0x2e,
+ (byte) 0x20, (byte) 0x66, (byte) 0x2e, (byte) 0x20, (byte) 0x53, (byte) 0x69, (byte) 0x63, (byte) 0x68,
+ (byte) 0x65, (byte) 0x72, (byte) 0x68, (byte) 0x65, (byte) 0x69, (byte) 0x74, (byte) 0x73, (byte) 0x73,
+ (byte) 0x79, (byte) 0x73, (byte) 0x74, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x20, (byte) 0x69,
+ (byte) 0x6d, (byte) 0x20, (byte) 0x65, (byte) 0x6c, (byte) 0x65, (byte) 0x6b, (byte) 0x74, (byte) 0x72,
+ (byte) 0x2e, (byte) 0x20, (byte) 0x44, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x6e, (byte) 0x76,
+ (byte) 0x65, (byte) 0x72, (byte) 0x6b, (byte) 0x65, (byte) 0x68, (byte) 0x72, (byte) 0x20, (byte) 0x47,
+ (byte) 0x6d, (byte) 0x62, (byte) 0x48, (byte) 0x31, (byte) 0x23, (byte) 0x30, (byte) 0x21, (byte) 0x06,
+ (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x0b, (byte) 0x0c, (byte) 0x1a, (byte) 0x61, (byte) 0x2d,
+ (byte) 0x73, (byte) 0x69, (byte) 0x67, (byte) 0x6e, (byte) 0x2d, (byte) 0x50, (byte) 0x72, (byte) 0x65,
+ (byte) 0x6d, (byte) 0x69, (byte) 0x75, (byte) 0x6d, (byte) 0x2d, (byte) 0x54, (byte) 0x65, (byte) 0x73,
+ (byte) 0x74, (byte) 0x2d, (byte) 0x45, (byte) 0x6e, (byte) 0x63, (byte) 0x2d, (byte) 0x30, (byte) 0x32,
+ (byte) 0x31, (byte) 0x23, (byte) 0x30, (byte) 0x21, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04,
+ (byte) 0x03, (byte) 0x0c, (byte) 0x1a, (byte) 0x61, (byte) 0x2d, (byte) 0x73, (byte) 0x69, (byte) 0x67,
+ (byte) 0x6e, (byte) 0x2d, (byte) 0x50, (byte) 0x72, (byte) 0x65, (byte) 0x6d, (byte) 0x69, (byte) 0x75,
+ (byte) 0x6d, (byte) 0x2d, (byte) 0x54, (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x2d, (byte) 0x45,
+ (byte) 0x6e, (byte) 0x63, (byte) 0x2d, (byte) 0x30, (byte) 0x32, (byte) 0x30, (byte) 0x1e, (byte) 0x17,
+ (byte) 0x0d, (byte) 0x30, (byte) 0x39, (byte) 0x30, (byte) 0x31, (byte) 0x31, (byte) 0x33, (byte) 0x30,
+ (byte) 0x39, (byte) 0x34, (byte) 0x35, (byte) 0x31, (byte) 0x32, (byte) 0x5a, (byte) 0x17, (byte) 0x0d,
+ (byte) 0x31, (byte) 0x32, (byte) 0x31, (byte) 0x32, (byte) 0x33, (byte) 0x31, (byte) 0x30, (byte) 0x39,
+ (byte) 0x34, (byte) 0x35, (byte) 0x31, (byte) 0x32, (byte) 0x5a, (byte) 0x30, (byte) 0x70, (byte) 0x31,
+ (byte) 0x0b, (byte) 0x30, (byte) 0x09, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x06,
+ (byte) 0x13, (byte) 0x02, (byte) 0x41, (byte) 0x54, (byte) 0x31, (byte) 0x1f, (byte) 0x30, (byte) 0x1d,
+ (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x03, (byte) 0x0c, (byte) 0x16, (byte) 0x58,
+ (byte) 0x58, (byte) 0x58, (byte) 0x4f, (byte) 0x74, (byte) 0x74, (byte) 0x6f, (byte) 0x20, (byte) 0x58,
+ (byte) 0x58, (byte) 0x58, (byte) 0x4f, (byte) 0x74, (byte) 0x74, (byte) 0x61, (byte) 0x6b, (byte) 0x72,
+ (byte) 0x69, (byte) 0x6e, (byte) 0x67, (byte) 0x65, (byte) 0x72, (byte) 0x31, (byte) 0x17, (byte) 0x30,
+ (byte) 0x15, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x04, (byte) 0x0c, (byte) 0x0e,
+ (byte) 0x58, (byte) 0x58, (byte) 0x58, (byte) 0x4f, (byte) 0x74, (byte) 0x74, (byte) 0x61, (byte) 0x6b,
+ (byte) 0x72, (byte) 0x69, (byte) 0x6e, (byte) 0x67, (byte) 0x65, (byte) 0x72, (byte) 0x31, (byte) 0x10,
+ (byte) 0x30, (byte) 0x0e, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x2a, (byte) 0x0c,
+ (byte) 0x07, (byte) 0x58, (byte) 0x58, (byte) 0x58, (byte) 0x4f, (byte) 0x74, (byte) 0x74, (byte) 0x6f,
+ (byte) 0x31, (byte) 0x15, (byte) 0x30, (byte) 0x13, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04,
+ (byte) 0x05, (byte) 0x13, (byte) 0x0c, (byte) 0x39, (byte) 0x37, (byte) 0x30, (byte) 0x30, (byte) 0x31,
+ (byte) 0x36, (byte) 0x38, (byte) 0x36, (byte) 0x36, (byte) 0x31, (byte) 0x37, (byte) 0x34, (byte) 0x30,
+ (byte) 0x81, (byte) 0xdf, (byte) 0x30, (byte) 0x0d, (byte) 0x06, (byte) 0x09, (byte) 0x2a, (byte) 0x86,
+ (byte) 0x48, (byte) 0x86, (byte) 0xf7, (byte) 0x0d, (byte) 0x01, (byte) 0x01, (byte) 0x01, (byte) 0x05,
+ (byte) 0x00, (byte) 0x03, (byte) 0x81, (byte) 0xcd, (byte) 0x00, (byte) 0x30, (byte) 0x81, (byte) 0xc9,
+ (byte) 0x02, (byte) 0x81, (byte) 0xc1, (byte) 0x00, (byte) 0xae, (byte) 0xe6, (byte) 0x07, (byte) 0x1d,
+ (byte) 0xb9, (byte) 0x56, (byte) 0x0a, (byte) 0x98, (byte) 0x1a, (byte) 0xde, (byte) 0x52, (byte) 0xf2,
+ (byte) 0x77, (byte) 0xdc, (byte) 0x5e, (byte) 0x76, (byte) 0x7f, (byte) 0xe5, (byte) 0xc1, (byte) 0x79,
+ (byte) 0xb9, (byte) 0x51, (byte) 0x97, (byte) 0x08, (byte) 0x20, (byte) 0x4e, (byte) 0xa6, (byte) 0xa3,
+ (byte) 0xab, (byte) 0xdf, (byte) 0x49, (byte) 0x21, (byte) 0x2b, (byte) 0x65, (byte) 0x4f, (byte) 0x7c,
+ (byte) 0x26, (byte) 0xe8, (byte) 0xb9, (byte) 0x47, (byte) 0xdf, (byte) 0x03, (byte) 0x0f, (byte) 0xf7,
+ (byte) 0x4e, (byte) 0xf4, (byte) 0x47, (byte) 0x3d, (byte) 0x32, (byte) 0x61, (byte) 0x05, (byte) 0x33,
+ (byte) 0x0f, (byte) 0xdc, (byte) 0x97, (byte) 0x3e, (byte) 0xbf, (byte) 0x9b, (byte) 0xf2, (byte) 0xf8,
+ (byte) 0xb3, (byte) 0xe2, (byte) 0xc4, (byte) 0x4d, (byte) 0xe0, (byte) 0x48, (byte) 0x6a, (byte) 0x1b,
+ (byte) 0xd2, (byte) 0xfe, (byte) 0xfa, (byte) 0xee, (byte) 0x24, (byte) 0x08, (byte) 0xdc, (byte) 0x60,
+ (byte) 0x2a, (byte) 0x78, (byte) 0x6c, (byte) 0x1d, (byte) 0xd3, (byte) 0x74, (byte) 0x43, (byte) 0x1f,
+ (byte) 0x1f, (byte) 0x4e, (byte) 0xd2, (byte) 0x0f, (byte) 0x89, (byte) 0x3c, (byte) 0xe3, (byte) 0x1e,
+ (byte) 0xfa, (byte) 0x31, (byte) 0x5a, (byte) 0xc2, (byte) 0x04, (byte) 0x24, (byte) 0xd1, (byte) 0xe5,
+ (byte) 0x51, (byte) 0xc4, (byte) 0x94, (byte) 0x26, (byte) 0xd1, (byte) 0x32, (byte) 0x1e, (byte) 0xdf,
+ (byte) 0x64, (byte) 0xaa, (byte) 0xaf, (byte) 0x2c, (byte) 0x85, (byte) 0x25, (byte) 0x88, (byte) 0x8f,
+ (byte) 0x80, (byte) 0xe4, (byte) 0x05, (byte) 0x74, (byte) 0xd5, (byte) 0xda, (byte) 0x69, (byte) 0x88,
+ (byte) 0x4a, (byte) 0x0c, (byte) 0x6a, (byte) 0x85, (byte) 0x5f, (byte) 0x67, (byte) 0x51, (byte) 0x6c,
+ (byte) 0x5c, (byte) 0x1c, (byte) 0x41, (byte) 0x88, (byte) 0x4c, (byte) 0xad, (byte) 0x83, (byte) 0xc9,
+ (byte) 0x10, (byte) 0x97, (byte) 0x45, (byte) 0x00, (byte) 0x3f, (byte) 0xbd, (byte) 0x1d, (byte) 0x2f,
+ (byte) 0x28, (byte) 0x2e, (byte) 0x78, (byte) 0x97, (byte) 0x05, (byte) 0xa5, (byte) 0x41, (byte) 0x42,
+ (byte) 0x37, (byte) 0x08, (byte) 0x60, (byte) 0x0b, (byte) 0x66, (byte) 0xb1, (byte) 0xb8, (byte) 0xdd,
+ (byte) 0x98, (byte) 0x03, (byte) 0x03, (byte) 0x33, (byte) 0xc9, (byte) 0x15, (byte) 0xf7, (byte) 0x5b,
+ (byte) 0x35, (byte) 0xa5, (byte) 0xaa, (byte) 0x7a, (byte) 0x5e, (byte) 0xe9, (byte) 0xa7, (byte) 0x60,
+ (byte) 0xba, (byte) 0xd8, (byte) 0x0d, (byte) 0x6d, (byte) 0xb3, (byte) 0x85, (byte) 0x70, (byte) 0x0e,
+ (byte) 0x38, (byte) 0x6f, (byte) 0xf0, (byte) 0xfd, (byte) 0x02, (byte) 0x03, (byte) 0x01, (byte) 0x00,
+ (byte) 0x01, (byte) 0xa3, (byte) 0x82, (byte) 0x02, (byte) 0x32, (byte) 0x30, (byte) 0x82, (byte) 0x02,
+ (byte) 0x2e, (byte) 0x30, (byte) 0x13, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x23,
+ (byte) 0x04, (byte) 0x0c, (byte) 0x30, (byte) 0x0a, (byte) 0x80, (byte) 0x08, (byte) 0x4b, (byte) 0x5d,
+ (byte) 0x02, (byte) 0x5c, (byte) 0x6d, (byte) 0x58, (byte) 0x24, (byte) 0x67, (byte) 0x30, (byte) 0x81,
+ (byte) 0x84, (byte) 0x06, (byte) 0x08, (byte) 0x2b, (byte) 0x06, (byte) 0x01, (byte) 0x05, (byte) 0x05,
+ (byte) 0x07, (byte) 0x01, (byte) 0x01, (byte) 0x04, (byte) 0x78, (byte) 0x30, (byte) 0x76, (byte) 0x30,
+ (byte) 0x2c, (byte) 0x06, (byte) 0x08, (byte) 0x2b, (byte) 0x06, (byte) 0x01, (byte) 0x05, (byte) 0x05,
+ (byte) 0x07, (byte) 0x30, (byte) 0x01, (byte) 0x86, (byte) 0x20, (byte) 0x68, (byte) 0x74, (byte) 0x74,
+ (byte) 0x70, (byte) 0x3a, (byte) 0x2f, (byte) 0x2f, (byte) 0x6f, (byte) 0x63, (byte) 0x73, (byte) 0x70,
+ (byte) 0x2d, (byte) 0x74, (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x2e, (byte) 0x61, (byte) 0x2d,
+ (byte) 0x74, (byte) 0x72, (byte) 0x75, (byte) 0x73, (byte) 0x74, (byte) 0x2e, (byte) 0x61, (byte) 0x74,
+ (byte) 0x2f, (byte) 0x6f, (byte) 0x63, (byte) 0x73, (byte) 0x70, (byte) 0x30, (byte) 0x46, (byte) 0x06,
+ (byte) 0x08, (byte) 0x2b, (byte) 0x06, (byte) 0x01, (byte) 0x05, (byte) 0x05, (byte) 0x07, (byte) 0x30,
+ (byte) 0x02, (byte) 0x86, (byte) 0x3a, (byte) 0x68, (byte) 0x74, (byte) 0x74, (byte) 0x70, (byte) 0x3a,
+ (byte) 0x2f, (byte) 0x2f, (byte) 0x77, (byte) 0x77, (byte) 0x77, (byte) 0x2e, (byte) 0x61, (byte) 0x2d,
+ (byte) 0x74, (byte) 0x72, (byte) 0x75, (byte) 0x73, (byte) 0x74, (byte) 0x2e, (byte) 0x61, (byte) 0x74,
+ (byte) 0x2f, (byte) 0x63, (byte) 0x65, (byte) 0x72, (byte) 0x74, (byte) 0x73, (byte) 0x2f, (byte) 0x61,
+ (byte) 0x2d, (byte) 0x73, (byte) 0x69, (byte) 0x67, (byte) 0x6e, (byte) 0x2d, (byte) 0x50, (byte) 0x72,
+ (byte) 0x65, (byte) 0x6d, (byte) 0x69, (byte) 0x75, (byte) 0x6d, (byte) 0x2d, (byte) 0x54, (byte) 0x65,
+ (byte) 0x73, (byte) 0x74, (byte) 0x2d, (byte) 0x45, (byte) 0x6e, (byte) 0x63, (byte) 0x2d, (byte) 0x30,
+ (byte) 0x32, (byte) 0x2e, (byte) 0x63, (byte) 0x72, (byte) 0x74, (byte) 0x30, (byte) 0x81, (byte) 0x93,
+ (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x20, (byte) 0x04, (byte) 0x81, (byte) 0x8b,
+ (byte) 0x30, (byte) 0x81, (byte) 0x88, (byte) 0x30, (byte) 0x81, (byte) 0x85, (byte) 0x06, (byte) 0x06,
+ (byte) 0x2a, (byte) 0x28, (byte) 0x00, (byte) 0x11, (byte) 0x01, (byte) 0x03, (byte) 0x30, (byte) 0x7b,
+ (byte) 0x30, (byte) 0x3d, (byte) 0x06, (byte) 0x08, (byte) 0x2b, (byte) 0x06, (byte) 0x01, (byte) 0x05,
+ (byte) 0x05, (byte) 0x07, (byte) 0x02, (byte) 0x01, (byte) 0x16, (byte) 0x31, (byte) 0x68, (byte) 0x74,
+ (byte) 0x74, (byte) 0x70, (byte) 0x3a, (byte) 0x2f, (byte) 0x2f, (byte) 0x77, (byte) 0x77, (byte) 0x77,
+ (byte) 0x2e, (byte) 0x61, (byte) 0x2d, (byte) 0x74, (byte) 0x72, (byte) 0x75, (byte) 0x73, (byte) 0x74,
+ (byte) 0x2e, (byte) 0x61, (byte) 0x74, (byte) 0x2f, (byte) 0x64, (byte) 0x6f, (byte) 0x63, (byte) 0x73,
+ (byte) 0x2f, (byte) 0x63, (byte) 0x70, (byte) 0x2f, (byte) 0x61, (byte) 0x2d, (byte) 0x73, (byte) 0x69,
+ (byte) 0x67, (byte) 0x6e, (byte) 0x2d, (byte) 0x70, (byte) 0x72, (byte) 0x65, (byte) 0x6d, (byte) 0x69,
+ (byte) 0x75, (byte) 0x6d, (byte) 0x2d, (byte) 0x74, (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x30,
+ (byte) 0x3a, (byte) 0x06, (byte) 0x08, (byte) 0x2b, (byte) 0x06, (byte) 0x01, (byte) 0x05, (byte) 0x05,
+ (byte) 0x07, (byte) 0x02, (byte) 0x02, (byte) 0x30, (byte) 0x2e, (byte) 0x1a, (byte) 0x2c, (byte) 0x44,
+ (byte) 0x69, (byte) 0x65, (byte) 0x73, (byte) 0x65, (byte) 0x73, (byte) 0x20, (byte) 0x5a, (byte) 0x65,
+ (byte) 0x72, (byte) 0x74, (byte) 0x69, (byte) 0x66, (byte) 0x69, (byte) 0x6b, (byte) 0x61, (byte) 0x74,
+ (byte) 0x20, (byte) 0x64, (byte) 0x69, (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x20, (byte) 0x6e,
+ (byte) 0x75, (byte) 0x72, (byte) 0x20, (byte) 0x7a, (byte) 0x75, (byte) 0x20, (byte) 0x54, (byte) 0x65,
+ (byte) 0x73, (byte) 0x74, (byte) 0x7a, (byte) 0x77, (byte) 0x65, (byte) 0x63, (byte) 0x6b, (byte) 0x65,
+ (byte) 0x6e, (byte) 0x20, (byte) 0x21, (byte) 0x30, (byte) 0x81, (byte) 0xa4, (byte) 0x06, (byte) 0x03,
+ (byte) 0x55, (byte) 0x1d, (byte) 0x1f, (byte) 0x04, (byte) 0x81, (byte) 0x9c, (byte) 0x30, (byte) 0x81,
+ (byte) 0x99, (byte) 0x30, (byte) 0x81, (byte) 0x96, (byte) 0xa0, (byte) 0x81, (byte) 0x93, (byte) 0xa0,
+ (byte) 0x81, (byte) 0x90, (byte) 0x86, (byte) 0x81, (byte) 0x8d, (byte) 0x6c, (byte) 0x64, (byte) 0x61,
+ (byte) 0x70, (byte) 0x3a, (byte) 0x2f, (byte) 0x2f, (byte) 0x6c, (byte) 0x64, (byte) 0x61, (byte) 0x70,
+ (byte) 0x2d, (byte) 0x74, (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x2e, (byte) 0x61, (byte) 0x2d,
+ (byte) 0x74, (byte) 0x72, (byte) 0x75, (byte) 0x73, (byte) 0x74, (byte) 0x2e, (byte) 0x61, (byte) 0x74,
+ (byte) 0x2f, (byte) 0x6f, (byte) 0x75, (byte) 0x3d, (byte) 0x61, (byte) 0x2d, (byte) 0x73, (byte) 0x69,
+ (byte) 0x67, (byte) 0x6e, (byte) 0x2d, (byte) 0x50, (byte) 0x72, (byte) 0x65, (byte) 0x6d, (byte) 0x69,
+ (byte) 0x75, (byte) 0x6d, (byte) 0x2d, (byte) 0x54, (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x2d,
+ (byte) 0x45, (byte) 0x6e, (byte) 0x63, (byte) 0x2d, (byte) 0x30, (byte) 0x32, (byte) 0x2c, (byte) 0x6f,
+ (byte) 0x3d, (byte) 0x41, (byte) 0x2d, (byte) 0x54, (byte) 0x72, (byte) 0x75, (byte) 0x73, (byte) 0x74,
+ (byte) 0x2c, (byte) 0x63, (byte) 0x3d, (byte) 0x41, (byte) 0x54, (byte) 0x3f, (byte) 0x63, (byte) 0x65,
+ (byte) 0x72, (byte) 0x74, (byte) 0x69, (byte) 0x66, (byte) 0x69, (byte) 0x63, (byte) 0x61, (byte) 0x74,
+ (byte) 0x65, (byte) 0x72, (byte) 0x65, (byte) 0x76, (byte) 0x6f, (byte) 0x63, (byte) 0x61, (byte) 0x74,
+ (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x6c, (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x3f,
+ (byte) 0x62, (byte) 0x61, (byte) 0x73, (byte) 0x65, (byte) 0x3f, (byte) 0x6f, (byte) 0x62, (byte) 0x6a,
+ (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x63, (byte) 0x6c, (byte) 0x61, (byte) 0x73, (byte) 0x73,
+ (byte) 0x3d, (byte) 0x65, (byte) 0x69, (byte) 0x64, (byte) 0x43, (byte) 0x65, (byte) 0x72, (byte) 0x74,
+ (byte) 0x69, (byte) 0x66, (byte) 0x69, (byte) 0x63, (byte) 0x61, (byte) 0x74, (byte) 0x69, (byte) 0x6f,
+ (byte) 0x6e, (byte) 0x41, (byte) 0x75, (byte) 0x74, (byte) 0x68, (byte) 0x6f, (byte) 0x72, (byte) 0x69,
+ (byte) 0x74, (byte) 0x79, (byte) 0x30, (byte) 0x11, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d,
+ (byte) 0x0e, (byte) 0x04, (byte) 0x0a, (byte) 0x04, (byte) 0x08, (byte) 0x4a, (byte) 0x24, (byte) 0x43,
+ (byte) 0xc0, (byte) 0x85, (byte) 0x2a, (byte) 0xb4, (byte) 0x51, (byte) 0x30, (byte) 0x0e, (byte) 0x06,
+ (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x0f, (byte) 0x01, (byte) 0x01, (byte) 0xff, (byte) 0x04,
+ (byte) 0x04, (byte) 0x03, (byte) 0x02, (byte) 0x04, (byte) 0xb0, (byte) 0x30, (byte) 0x25, (byte) 0x06,
+ (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x11, (byte) 0x04, (byte) 0x1e, (byte) 0x30, (byte) 0x1c,
+ (byte) 0x81, (byte) 0x1a, (byte) 0x74, (byte) 0x68, (byte) 0x6f, (byte) 0x6d, (byte) 0x61, (byte) 0x73,
+ (byte) 0x2e, (byte) 0x72, (byte) 0x6f, (byte) 0x65, (byte) 0x73, (byte) 0x73, (byte) 0x6c, (byte) 0x65,
+ (byte) 0x72, (byte) 0x40, (byte) 0x65, (byte) 0x67, (byte) 0x69, (byte) 0x7a, (byte) 0x2e, (byte) 0x67,
+ (byte) 0x76, (byte) 0x2e, (byte) 0x61, (byte) 0x74, (byte) 0x30, (byte) 0x09, (byte) 0x06, (byte) 0x03,
+ (byte) 0x55, (byte) 0x1d, (byte) 0x13, (byte) 0x04, (byte) 0x02, (byte) 0x30, (byte) 0x00, (byte) 0x30,
+ (byte) 0x0d, (byte) 0x06, (byte) 0x09, (byte) 0x2a, (byte) 0x86, (byte) 0x48, (byte) 0x86, (byte) 0xf7,
+ (byte) 0x0d, (byte) 0x01, (byte) 0x01, (byte) 0x05, (byte) 0x05, (byte) 0x00, (byte) 0x03, (byte) 0x82,
+ (byte) 0x01, (byte) 0x01, (byte) 0x00, (byte) 0x4a, (byte) 0x36, (byte) 0x02, (byte) 0xb3, (byte) 0xab,
+ (byte) 0x02, (byte) 0xe9, (byte) 0xe1, (byte) 0xaf, (byte) 0x3f, (byte) 0xd5, (byte) 0xcd, (byte) 0x3d,
+ (byte) 0x51, (byte) 0x08, (byte) 0xb8, (byte) 0x73, (byte) 0x23, (byte) 0x68, (byte) 0x0c, (byte) 0x22,
+ (byte) 0x32, (byte) 0xcd, (byte) 0xbe, (byte) 0xc8, (byte) 0x77, (byte) 0xbc, (byte) 0x47, (byte) 0x37,
+ (byte) 0xdd, (byte) 0x89, (byte) 0x7c, (byte) 0x22, (byte) 0x24, (byte) 0x2f, (byte) 0x23, (byte) 0xea,
+ (byte) 0x3e, (byte) 0xc2, (byte) 0xf4, (byte) 0x59, (byte) 0x78, (byte) 0xa6, (byte) 0xbe, (byte) 0xcd,
+ (byte) 0x71, (byte) 0xaa, (byte) 0xb5, (byte) 0xbc, (byte) 0xe3, (byte) 0xbc, (byte) 0x3f, (byte) 0xf1,
+ (byte) 0xfa, (byte) 0x1a, (byte) 0x43, (byte) 0x2b, (byte) 0x91, (byte) 0x35, (byte) 0x67, (byte) 0xa5,
+ (byte) 0x62, (byte) 0x9d, (byte) 0x55, (byte) 0x85, (byte) 0xe0, (byte) 0x3f, (byte) 0xed, (byte) 0x00,
+ (byte) 0x67, (byte) 0x80, (byte) 0x6a, (byte) 0xfb, (byte) 0x46, (byte) 0x8a, (byte) 0xed, (byte) 0x48,
+ (byte) 0x03, (byte) 0xe7, (byte) 0x9d, (byte) 0x5c, (byte) 0xac, (byte) 0xdf, (byte) 0xec, (byte) 0x2d,
+ (byte) 0x53, (byte) 0x8b, (byte) 0x01, (byte) 0xdb, (byte) 0x14, (byte) 0x91, (byte) 0x21, (byte) 0xaf,
+ (byte) 0xa7, (byte) 0x91, (byte) 0x69, (byte) 0x7e, (byte) 0x97, (byte) 0x68, (byte) 0xcc, (byte) 0x2a,
+ (byte) 0x06, (byte) 0x1a, (byte) 0xbc, (byte) 0x53, (byte) 0x35, (byte) 0xde, (byte) 0xd7, (byte) 0x62,
+ (byte) 0x12, (byte) 0xbd, (byte) 0x54, (byte) 0xb5, (byte) 0x4c, (byte) 0x3c, (byte) 0xaf, (byte) 0x55,
+ (byte) 0xa4, (byte) 0x5b, (byte) 0x28, (byte) 0x61, (byte) 0x68, (byte) 0x03, (byte) 0xc6, (byte) 0x72,
+ (byte) 0xc0, (byte) 0xa2, (byte) 0x3f, (byte) 0x84, (byte) 0x02, (byte) 0xf8, (byte) 0x3d, (byte) 0x70,
+ (byte) 0x3f, (byte) 0xde, (byte) 0x9d, (byte) 0x6a, (byte) 0x71, (byte) 0x16, (byte) 0x87, (byte) 0x9d,
+ (byte) 0x93, (byte) 0x3d, (byte) 0x46, (byte) 0x41, (byte) 0xa9, (byte) 0x6a, (byte) 0xca, (byte) 0x87,
+ (byte) 0xd4, (byte) 0xd1, (byte) 0x3f, (byte) 0x1d, (byte) 0x6e, (byte) 0x6a, (byte) 0xbf, (byte) 0x02,
+ (byte) 0x9b, (byte) 0xfb, (byte) 0x4a, (byte) 0x47, (byte) 0xe0, (byte) 0x20, (byte) 0x4a, (byte) 0x2d,
+ (byte) 0x5a, (byte) 0x0c, (byte) 0x6b, (byte) 0x25, (byte) 0xd6, (byte) 0x2d, (byte) 0xd4, (byte) 0x53,
+ (byte) 0x08, (byte) 0x41, (byte) 0xa9, (byte) 0x16, (byte) 0xa2, (byte) 0xa0, (byte) 0xef, (byte) 0x13,
+ (byte) 0xa8, (byte) 0xec, (byte) 0x7e, (byte) 0x99, (byte) 0x15, (byte) 0xf9, (byte) 0x1a, (byte) 0x18,
+ (byte) 0x5e, (byte) 0x75, (byte) 0xc7, (byte) 0x5d, (byte) 0x40, (byte) 0xd4, (byte) 0x84, (byte) 0x4a,
+ (byte) 0xd2, (byte) 0xf7, (byte) 0x7c, (byte) 0x65, (byte) 0x12, (byte) 0xc7, (byte) 0xae, (byte) 0xbc,
+ (byte) 0x9d, (byte) 0x3e, (byte) 0xce, (byte) 0x42, (byte) 0xfe, (byte) 0xe4, (byte) 0x98, (byte) 0x10,
+ (byte) 0x63, (byte) 0x0d, (byte) 0xaa, (byte) 0x2d, (byte) 0x73, (byte) 0x7d, (byte) 0x46, (byte) 0x19,
+ (byte) 0xca, (byte) 0x78, (byte) 0x94, (byte) 0xe5, (byte) 0x11, (byte) 0x83, (byte) 0x87, (byte) 0xb2,
+ (byte) 0xf7, (byte) 0x59, (byte) 0x90, (byte) 0x47, (byte) 0x86, (byte) 0x57, (byte) 0xcf, (byte) 0xc7,
+ (byte) 0x7b, (byte) 0x8f, (byte) 0xac, (byte) 0x20, (byte) 0xbd, (byte) 0x46, (byte) 0xea, (byte) 0xa2,
+ (byte) 0x10, (byte) 0xe1, (byte) 0x72, (byte) 0x3e, (byte) 0xe3, (byte) 0x72, (byte) 0x20, (byte) 0x24,
+ (byte) 0xa5, (byte) 0x2f, (byte) 0xc5
+ };
+ protected static final int KID_PIN_DEC = 0x81;
+
+ protected static byte[] FID_EF_INFOBOX = new byte[] { (byte) 0xc0, (byte) 0x02 };
+ protected static byte[] FCI_EF_INFOBOX = new byte[] { (byte) 0x6f, (byte) 0x07,
+ (byte) 0x80, (byte) 0x02, (byte) 0x05, (byte) 0xdc, (byte) 0x82,
+ (byte) 0x01, (byte) 0x01};
+
+ protected byte[] EF_INFOBOX = new byte[1500];
+
+ protected byte[] EF_C_CH_EKEY = new byte[2000];
+
+ public ACOSApplDEC() {
+ System.arraycopy(C_CH_EKEY, 0, EF_C_CH_EKEY, 0, C_CH_EKEY.length);
+ putFile(new File(FID_EF_C_CH_EKEY, EF_C_CH_EKEY, FCI_EF_C_CH_EKEY));
+ try {
+ pins.put(KID_PIN_DEC, new PIN("1234\0\0\0\0".getBytes("ASCII"), KID_PIN_DEC, 10, PIN.STATE_RESET));
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public byte[] getAID() {
+ return AID_DEC;
+ }
+
+ @Override
+ public byte[] getFID() {
+ return FID_DEC;
+ }
+
+ @Override
+ public byte[] getFCI() {
+ return FCI;
+ }
+
+ public void clearInfobox() {
+ Arrays.fill(EF_INFOBOX, (byte) 0x00);
+ }
+
+ public void setInfoboxHeader(byte b) {
+ EF_INFOBOX[0] = b;
+ }
+
+ public void clearCert() {
+ Arrays.fill(EF_C_CH_EKEY, (byte) 0x00);
+ }
+
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSApplSIG.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSApplSIG.java
new file mode 100644
index 00000000..6ab5903a
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSApplSIG.java
@@ -0,0 +1,302 @@
+/*
+* 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.smcc.acos;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Arrays;
+import java.util.Random;
+
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import at.gv.egiz.smcc.CardChannelEmul;
+import at.gv.egiz.smcc.File;
+import at.gv.egiz.smcc.PIN;
+
+@SuppressWarnings("restriction")
+public abstract class ACOSApplSIG extends ACOSAppl {
+
+ private static byte[] FCI = new byte[] { (byte) 0x6f, (byte) 0x1a,
+ (byte) 0x84, (byte) 0x07, (byte) 0xa0, (byte) 0x00, (byte) 0x00,
+ (byte) 0x01, (byte) 0x18, (byte) 0x45, (byte) 0x43, (byte) 0x85,
+ (byte) 0x0f, (byte) 0x50, (byte) 0x0d, (byte) 0x44, (byte) 0x49,
+ (byte) 0x47, (byte) 0x53, (byte) 0x49, (byte) 0x47, (byte) 0x20,
+ (byte) 0x43, (byte) 0x43, (byte) 0x20, (byte) 0x45, (byte) 0x43,
+ (byte) 0x43 };
+ protected static byte[] FID_EF_C_CH_DS = new byte[] { (byte) 0xc0, (byte) 0x02 };
+ protected static byte[] FCI_EF_C_CH_DS = new byte[] { (byte) 0x6f, (byte) 0x07,
+ (byte) 0x80, (byte) 0x02, (byte) 0x07, (byte) 0xd0, (byte) 0x82,
+ (byte) 0x01, (byte) 0x01 };
+ protected static byte[] C_CH_DS = new byte[] {
+ (byte) 0x30, (byte) 0x82, (byte) 0x05, (byte) 0x2b, (byte) 0x30, (byte) 0x82, (byte) 0x04, (byte) 0x13,
+ (byte) 0xa0, (byte) 0x03, (byte) 0x02, (byte) 0x01, (byte) 0x02, (byte) 0x02, (byte) 0x03, (byte) 0x02,
+ (byte) 0x05, (byte) 0x52, (byte) 0x30, (byte) 0x0d, (byte) 0x06, (byte) 0x09, (byte) 0x2a, (byte) 0x86,
+ (byte) 0x48, (byte) 0x86, (byte) 0xf7, (byte) 0x0d, (byte) 0x01, (byte) 0x01, (byte) 0x05, (byte) 0x05,
+ (byte) 0x00, (byte) 0x30, (byte) 0x81, (byte) 0xa1, (byte) 0x31, (byte) 0x0b, (byte) 0x30, (byte) 0x09,
+ (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x06, (byte) 0x13, (byte) 0x02, (byte) 0x41,
+ (byte) 0x54, (byte) 0x31, (byte) 0x48, (byte) 0x30, (byte) 0x46, (byte) 0x06, (byte) 0x03, (byte) 0x55,
+ (byte) 0x04, (byte) 0x0a, (byte) 0x0c, (byte) 0x3f, (byte) 0x41, (byte) 0x2d, (byte) 0x54, (byte) 0x72,
+ (byte) 0x75, (byte) 0x73, (byte) 0x74, (byte) 0x20, (byte) 0x47, (byte) 0x65, (byte) 0x73, (byte) 0x2e,
+ (byte) 0x20, (byte) 0x66, (byte) 0x2e, (byte) 0x20, (byte) 0x53, (byte) 0x69, (byte) 0x63, (byte) 0x68,
+ (byte) 0x65, (byte) 0x72, (byte) 0x68, (byte) 0x65, (byte) 0x69, (byte) 0x74, (byte) 0x73, (byte) 0x73,
+ (byte) 0x79, (byte) 0x73, (byte) 0x74, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x20, (byte) 0x69,
+ (byte) 0x6d, (byte) 0x20, (byte) 0x65, (byte) 0x6c, (byte) 0x65, (byte) 0x6b, (byte) 0x74, (byte) 0x72,
+ (byte) 0x2e, (byte) 0x20, (byte) 0x44, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x6e, (byte) 0x76,
+ (byte) 0x65, (byte) 0x72, (byte) 0x6b, (byte) 0x65, (byte) 0x68, (byte) 0x72, (byte) 0x20, (byte) 0x47,
+ (byte) 0x6d, (byte) 0x62, (byte) 0x48, (byte) 0x31, (byte) 0x23, (byte) 0x30, (byte) 0x21, (byte) 0x06,
+ (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x0b, (byte) 0x0c, (byte) 0x1a, (byte) 0x61, (byte) 0x2d,
+ (byte) 0x73, (byte) 0x69, (byte) 0x67, (byte) 0x6e, (byte) 0x2d, (byte) 0x50, (byte) 0x72, (byte) 0x65,
+ (byte) 0x6d, (byte) 0x69, (byte) 0x75, (byte) 0x6d, (byte) 0x2d, (byte) 0x54, (byte) 0x65, (byte) 0x73,
+ (byte) 0x74, (byte) 0x2d, (byte) 0x53, (byte) 0x69, (byte) 0x67, (byte) 0x2d, (byte) 0x30, (byte) 0x32,
+ (byte) 0x31, (byte) 0x23, (byte) 0x30, (byte) 0x21, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04,
+ (byte) 0x03, (byte) 0x0c, (byte) 0x1a, (byte) 0x61, (byte) 0x2d, (byte) 0x73, (byte) 0x69, (byte) 0x67,
+ (byte) 0x6e, (byte) 0x2d, (byte) 0x50, (byte) 0x72, (byte) 0x65, (byte) 0x6d, (byte) 0x69, (byte) 0x75,
+ (byte) 0x6d, (byte) 0x2d, (byte) 0x54, (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x2d, (byte) 0x53,
+ (byte) 0x69, (byte) 0x67, (byte) 0x2d, (byte) 0x30, (byte) 0x32, (byte) 0x30, (byte) 0x1e, (byte) 0x17,
+ (byte) 0x0d, (byte) 0x30, (byte) 0x39, (byte) 0x30, (byte) 0x31, (byte) 0x31, (byte) 0x33, (byte) 0x30,
+ (byte) 0x39, (byte) 0x34, (byte) 0x35, (byte) 0x31, (byte) 0x32, (byte) 0x5a, (byte) 0x17, (byte) 0x0d,
+ (byte) 0x31, (byte) 0x32, (byte) 0x31, (byte) 0x32, (byte) 0x33, (byte) 0x31, (byte) 0x30, (byte) 0x39,
+ (byte) 0x34, (byte) 0x35, (byte) 0x31, (byte) 0x32, (byte) 0x5a, (byte) 0x30, (byte) 0x70, (byte) 0x31,
+ (byte) 0x0b, (byte) 0x30, (byte) 0x09, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x06,
+ (byte) 0x13, (byte) 0x02, (byte) 0x41, (byte) 0x54, (byte) 0x31, (byte) 0x1f, (byte) 0x30, (byte) 0x1d,
+ (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x03, (byte) 0x0c, (byte) 0x16, (byte) 0x58,
+ (byte) 0x58, (byte) 0x58, (byte) 0x4f, (byte) 0x74, (byte) 0x74, (byte) 0x6f, (byte) 0x20, (byte) 0x58,
+ (byte) 0x58, (byte) 0x58, (byte) 0x4f, (byte) 0x74, (byte) 0x74, (byte) 0x61, (byte) 0x6b, (byte) 0x72,
+ (byte) 0x69, (byte) 0x6e, (byte) 0x67, (byte) 0x65, (byte) 0x72, (byte) 0x31, (byte) 0x17, (byte) 0x30,
+ (byte) 0x15, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x04, (byte) 0x0c, (byte) 0x0e,
+ (byte) 0x58, (byte) 0x58, (byte) 0x58, (byte) 0x4f, (byte) 0x74, (byte) 0x74, (byte) 0x61, (byte) 0x6b,
+ (byte) 0x72, (byte) 0x69, (byte) 0x6e, (byte) 0x67, (byte) 0x65, (byte) 0x72, (byte) 0x31, (byte) 0x10,
+ (byte) 0x30, (byte) 0x0e, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x2a, (byte) 0x0c,
+ (byte) 0x07, (byte) 0x58, (byte) 0x58, (byte) 0x58, (byte) 0x4f, (byte) 0x74, (byte) 0x74, (byte) 0x6f,
+ (byte) 0x31, (byte) 0x15, (byte) 0x30, (byte) 0x13, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04,
+ (byte) 0x05, (byte) 0x13, (byte) 0x0c, (byte) 0x39, (byte) 0x37, (byte) 0x30, (byte) 0x30, (byte) 0x31,
+ (byte) 0x36, (byte) 0x38, (byte) 0x36, (byte) 0x36, (byte) 0x31, (byte) 0x37, (byte) 0x34, (byte) 0x30,
+ (byte) 0x59, (byte) 0x30, (byte) 0x13, (byte) 0x06, (byte) 0x07, (byte) 0x2a, (byte) 0x86, (byte) 0x48,
+ (byte) 0xce, (byte) 0x3d, (byte) 0x02, (byte) 0x01, (byte) 0x06, (byte) 0x08, (byte) 0x2a, (byte) 0x86,
+ (byte) 0x48, (byte) 0xce, (byte) 0x3d, (byte) 0x03, (byte) 0x01, (byte) 0x01, (byte) 0x03, (byte) 0x42,
+ (byte) 0x00, (byte) 0x04, (byte) 0x6b, (byte) 0xde, (byte) 0x5f, (byte) 0x5e, (byte) 0xd5, (byte) 0x2b,
+ (byte) 0xbe, (byte) 0x1e, (byte) 0xb9, (byte) 0x82, (byte) 0x19, (byte) 0x75, (byte) 0xf4, (byte) 0x3b,
+ (byte) 0xc1, (byte) 0x34, (byte) 0xe9, (byte) 0xdb, (byte) 0x0b, (byte) 0x25, (byte) 0x31, (byte) 0x33,
+ (byte) 0xfa, (byte) 0x8b, (byte) 0x72, (byte) 0xd4, (byte) 0x9f, (byte) 0x21, (byte) 0xf5, (byte) 0x62,
+ (byte) 0xb9, (byte) 0xf6, (byte) 0x50, (byte) 0xdb, (byte) 0xcc, (byte) 0xbf, (byte) 0x43, (byte) 0xb9,
+ (byte) 0x5e, (byte) 0x75, (byte) 0x2a, (byte) 0x37, (byte) 0xbe, (byte) 0x32, (byte) 0xa6, (byte) 0x83,
+ (byte) 0xb1, (byte) 0x5c, (byte) 0xc3, (byte) 0x9d, (byte) 0xf0, (byte) 0xab, (byte) 0xe6, (byte) 0x8f,
+ (byte) 0xe4, (byte) 0x97, (byte) 0x83, (byte) 0x57, (byte) 0x89, (byte) 0xe0, (byte) 0x13, (byte) 0xe3,
+ (byte) 0x13, (byte) 0xa8, (byte) 0xa3, (byte) 0x82, (byte) 0x02, (byte) 0x65, (byte) 0x30, (byte) 0x82,
+ (byte) 0x02, (byte) 0x61, (byte) 0x30, (byte) 0x13, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d,
+ (byte) 0x23, (byte) 0x04, (byte) 0x0c, (byte) 0x30, (byte) 0x0a, (byte) 0x80, (byte) 0x08, (byte) 0x46,
+ (byte) 0x06, (byte) 0x9f, (byte) 0x8e, (byte) 0x41, (byte) 0x8e, (byte) 0x15, (byte) 0xbd, (byte) 0x30,
+ (byte) 0x27, (byte) 0x06, (byte) 0x08, (byte) 0x2b, (byte) 0x06, (byte) 0x01, (byte) 0x05, (byte) 0x05,
+ (byte) 0x07, (byte) 0x01, (byte) 0x03, (byte) 0x01, (byte) 0x01, (byte) 0xff, (byte) 0x04, (byte) 0x18,
+ (byte) 0x30, (byte) 0x16, (byte) 0x30, (byte) 0x08, (byte) 0x06, (byte) 0x06, (byte) 0x04, (byte) 0x00,
+ (byte) 0x8e, (byte) 0x46, (byte) 0x01, (byte) 0x01, (byte) 0x30, (byte) 0x0a, (byte) 0x06, (byte) 0x08,
+ (byte) 0x2b, (byte) 0x06, (byte) 0x01, (byte) 0x05, (byte) 0x05, (byte) 0x07, (byte) 0x0b, (byte) 0x01,
+ (byte) 0x30, (byte) 0x81, (byte) 0x84, (byte) 0x06, (byte) 0x08, (byte) 0x2b, (byte) 0x06, (byte) 0x01,
+ (byte) 0x05, (byte) 0x05, (byte) 0x07, (byte) 0x01, (byte) 0x01, (byte) 0x04, (byte) 0x78, (byte) 0x30,
+ (byte) 0x76, (byte) 0x30, (byte) 0x2c, (byte) 0x06, (byte) 0x08, (byte) 0x2b, (byte) 0x06, (byte) 0x01,
+ (byte) 0x05, (byte) 0x05, (byte) 0x07, (byte) 0x30, (byte) 0x01, (byte) 0x86, (byte) 0x20, (byte) 0x68,
+ (byte) 0x74, (byte) 0x74, (byte) 0x70, (byte) 0x3a, (byte) 0x2f, (byte) 0x2f, (byte) 0x6f, (byte) 0x63,
+ (byte) 0x73, (byte) 0x70, (byte) 0x2d, (byte) 0x74, (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x2e,
+ (byte) 0x61, (byte) 0x2d, (byte) 0x74, (byte) 0x72, (byte) 0x75, (byte) 0x73, (byte) 0x74, (byte) 0x2e,
+ (byte) 0x61, (byte) 0x74, (byte) 0x2f, (byte) 0x6f, (byte) 0x63, (byte) 0x73, (byte) 0x70, (byte) 0x30,
+ (byte) 0x46, (byte) 0x06, (byte) 0x08, (byte) 0x2b, (byte) 0x06, (byte) 0x01, (byte) 0x05, (byte) 0x05,
+ (byte) 0x07, (byte) 0x30, (byte) 0x02, (byte) 0x86, (byte) 0x3a, (byte) 0x68, (byte) 0x74, (byte) 0x74,
+ (byte) 0x70, (byte) 0x3a, (byte) 0x2f, (byte) 0x2f, (byte) 0x77, (byte) 0x77, (byte) 0x77, (byte) 0x2e,
+ (byte) 0x61, (byte) 0x2d, (byte) 0x74, (byte) 0x72, (byte) 0x75, (byte) 0x73, (byte) 0x74, (byte) 0x2e,
+ (byte) 0x61, (byte) 0x74, (byte) 0x2f, (byte) 0x63, (byte) 0x65, (byte) 0x72, (byte) 0x74, (byte) 0x73,
+ (byte) 0x2f, (byte) 0x61, (byte) 0x2d, (byte) 0x73, (byte) 0x69, (byte) 0x67, (byte) 0x6e, (byte) 0x2d,
+ (byte) 0x50, (byte) 0x72, (byte) 0x65, (byte) 0x6d, (byte) 0x69, (byte) 0x75, (byte) 0x6d, (byte) 0x2d,
+ (byte) 0x54, (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x2d, (byte) 0x53, (byte) 0x69, (byte) 0x67,
+ (byte) 0x2d, (byte) 0x30, (byte) 0x32, (byte) 0x2e, (byte) 0x63, (byte) 0x72, (byte) 0x74, (byte) 0x30,
+ (byte) 0x81, (byte) 0x9d, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x20, (byte) 0x04,
+ (byte) 0x81, (byte) 0x95, (byte) 0x30, (byte) 0x81, (byte) 0x92, (byte) 0x30, (byte) 0x81, (byte) 0x85,
+ (byte) 0x06, (byte) 0x06, (byte) 0x2a, (byte) 0x28, (byte) 0x00, (byte) 0x11, (byte) 0x01, (byte) 0x03,
+ (byte) 0x30, (byte) 0x7b, (byte) 0x30, (byte) 0x3d, (byte) 0x06, (byte) 0x08, (byte) 0x2b, (byte) 0x06,
+ (byte) 0x01, (byte) 0x05, (byte) 0x05, (byte) 0x07, (byte) 0x02, (byte) 0x01, (byte) 0x16, (byte) 0x31,
+ (byte) 0x68, (byte) 0x74, (byte) 0x74, (byte) 0x70, (byte) 0x3a, (byte) 0x2f, (byte) 0x2f, (byte) 0x77,
+ (byte) 0x77, (byte) 0x77, (byte) 0x2e, (byte) 0x61, (byte) 0x2d, (byte) 0x74, (byte) 0x72, (byte) 0x75,
+ (byte) 0x73, (byte) 0x74, (byte) 0x2e, (byte) 0x61, (byte) 0x74, (byte) 0x2f, (byte) 0x64, (byte) 0x6f,
+ (byte) 0x63, (byte) 0x73, (byte) 0x2f, (byte) 0x63, (byte) 0x70, (byte) 0x2f, (byte) 0x61, (byte) 0x2d,
+ (byte) 0x73, (byte) 0x69, (byte) 0x67, (byte) 0x6e, (byte) 0x2d, (byte) 0x70, (byte) 0x72, (byte) 0x65,
+ (byte) 0x6d, (byte) 0x69, (byte) 0x75, (byte) 0x6d, (byte) 0x2d, (byte) 0x74, (byte) 0x65, (byte) 0x73,
+ (byte) 0x74, (byte) 0x30, (byte) 0x3a, (byte) 0x06, (byte) 0x08, (byte) 0x2b, (byte) 0x06, (byte) 0x01,
+ (byte) 0x05, (byte) 0x05, (byte) 0x07, (byte) 0x02, (byte) 0x02, (byte) 0x30, (byte) 0x2e, (byte) 0x1a,
+ (byte) 0x2c, (byte) 0x44, (byte) 0x69, (byte) 0x65, (byte) 0x73, (byte) 0x65, (byte) 0x73, (byte) 0x20,
+ (byte) 0x5a, (byte) 0x65, (byte) 0x72, (byte) 0x74, (byte) 0x69, (byte) 0x66, (byte) 0x69, (byte) 0x6b,
+ (byte) 0x61, (byte) 0x74, (byte) 0x20, (byte) 0x64, (byte) 0x69, (byte) 0x65, (byte) 0x6e, (byte) 0x74,
+ (byte) 0x20, (byte) 0x6e, (byte) 0x75, (byte) 0x72, (byte) 0x20, (byte) 0x7a, (byte) 0x75, (byte) 0x20,
+ (byte) 0x54, (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x7a, (byte) 0x77, (byte) 0x65, (byte) 0x63,
+ (byte) 0x6b, (byte) 0x65, (byte) 0x6e, (byte) 0x20, (byte) 0x21, (byte) 0x30, (byte) 0x08, (byte) 0x06,
+ (byte) 0x06, (byte) 0x04, (byte) 0x00, (byte) 0x8b, (byte) 0x30, (byte) 0x01, (byte) 0x01, (byte) 0x30,
+ (byte) 0x81, (byte) 0xa4, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x1f, (byte) 0x04,
+ (byte) 0x81, (byte) 0x9c, (byte) 0x30, (byte) 0x81, (byte) 0x99, (byte) 0x30, (byte) 0x81, (byte) 0x96,
+ (byte) 0xa0, (byte) 0x81, (byte) 0x93, (byte) 0xa0, (byte) 0x81, (byte) 0x90, (byte) 0x86, (byte) 0x81,
+ (byte) 0x8d, (byte) 0x6c, (byte) 0x64, (byte) 0x61, (byte) 0x70, (byte) 0x3a, (byte) 0x2f, (byte) 0x2f,
+ (byte) 0x6c, (byte) 0x64, (byte) 0x61, (byte) 0x70, (byte) 0x2d, (byte) 0x74, (byte) 0x65, (byte) 0x73,
+ (byte) 0x74, (byte) 0x2e, (byte) 0x61, (byte) 0x2d, (byte) 0x74, (byte) 0x72, (byte) 0x75, (byte) 0x73,
+ (byte) 0x74, (byte) 0x2e, (byte) 0x61, (byte) 0x74, (byte) 0x2f, (byte) 0x6f, (byte) 0x75, (byte) 0x3d,
+ (byte) 0x61, (byte) 0x2d, (byte) 0x73, (byte) 0x69, (byte) 0x67, (byte) 0x6e, (byte) 0x2d, (byte) 0x50,
+ (byte) 0x72, (byte) 0x65, (byte) 0x6d, (byte) 0x69, (byte) 0x75, (byte) 0x6d, (byte) 0x2d, (byte) 0x54,
+ (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x2d, (byte) 0x53, (byte) 0x69, (byte) 0x67, (byte) 0x2d,
+ (byte) 0x30, (byte) 0x32, (byte) 0x2c, (byte) 0x6f, (byte) 0x3d, (byte) 0x41, (byte) 0x2d, (byte) 0x54,
+ (byte) 0x72, (byte) 0x75, (byte) 0x73, (byte) 0x74, (byte) 0x2c, (byte) 0x63, (byte) 0x3d, (byte) 0x41,
+ (byte) 0x54, (byte) 0x3f, (byte) 0x63, (byte) 0x65, (byte) 0x72, (byte) 0x74, (byte) 0x69, (byte) 0x66,
+ (byte) 0x69, (byte) 0x63, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x72, (byte) 0x65, (byte) 0x76,
+ (byte) 0x6f, (byte) 0x63, (byte) 0x61, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x6c,
+ (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x3f, (byte) 0x62, (byte) 0x61, (byte) 0x73, (byte) 0x65,
+ (byte) 0x3f, (byte) 0x6f, (byte) 0x62, (byte) 0x6a, (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x63,
+ (byte) 0x6c, (byte) 0x61, (byte) 0x73, (byte) 0x73, (byte) 0x3d, (byte) 0x65, (byte) 0x69, (byte) 0x64,
+ (byte) 0x43, (byte) 0x65, (byte) 0x72, (byte) 0x74, (byte) 0x69, (byte) 0x66, (byte) 0x69, (byte) 0x63,
+ (byte) 0x61, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x41, (byte) 0x75, (byte) 0x74,
+ (byte) 0x68, (byte) 0x6f, (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x79, (byte) 0x30, (byte) 0x11,
+ (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x0e, (byte) 0x04, (byte) 0x0a, (byte) 0x04,
+ (byte) 0x08, (byte) 0x46, (byte) 0x08, (byte) 0xda, (byte) 0x9e, (byte) 0x68, (byte) 0xf8, (byte) 0xe5,
+ (byte) 0x81, (byte) 0x30, (byte) 0x0e, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x0f,
+ (byte) 0x01, (byte) 0x01, (byte) 0xff, (byte) 0x04, (byte) 0x04, (byte) 0x03, (byte) 0x02, (byte) 0x06,
+ (byte) 0xc0, (byte) 0x30, (byte) 0x25, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x11,
+ (byte) 0x04, (byte) 0x1e, (byte) 0x30, (byte) 0x1c, (byte) 0x81, (byte) 0x1a, (byte) 0x74, (byte) 0x68,
+ (byte) 0x6f, (byte) 0x6d, (byte) 0x61, (byte) 0x73, (byte) 0x2e, (byte) 0x72, (byte) 0x6f, (byte) 0x65,
+ (byte) 0x73, (byte) 0x73, (byte) 0x6c, (byte) 0x65, (byte) 0x72, (byte) 0x40, (byte) 0x65, (byte) 0x67,
+ (byte) 0x69, (byte) 0x7a, (byte) 0x2e, (byte) 0x67, (byte) 0x76, (byte) 0x2e, (byte) 0x61, (byte) 0x74,
+ (byte) 0x30, (byte) 0x09, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x13, (byte) 0x04,
+ (byte) 0x02, (byte) 0x30, (byte) 0x00, (byte) 0x30, (byte) 0x0d, (byte) 0x06, (byte) 0x09, (byte) 0x2a,
+ (byte) 0x86, (byte) 0x48, (byte) 0x86, (byte) 0xf7, (byte) 0x0d, (byte) 0x01, (byte) 0x01, (byte) 0x05,
+ (byte) 0x05, (byte) 0x00, (byte) 0x03, (byte) 0x82, (byte) 0x01, (byte) 0x01, (byte) 0x00, (byte) 0xd8,
+ (byte) 0xec, (byte) 0xe5, (byte) 0x5c, (byte) 0x17, (byte) 0x42, (byte) 0xe8, (byte) 0x2f, (byte) 0x04,
+ (byte) 0x1f, (byte) 0xe2, (byte) 0x04, (byte) 0x57, (byte) 0x07, (byte) 0x30, (byte) 0xdc, (byte) 0x4f,
+ (byte) 0x61, (byte) 0x7d, (byte) 0xd8, (byte) 0x89, (byte) 0x36, (byte) 0x31, (byte) 0x26, (byte) 0x45,
+ (byte) 0x55, (byte) 0x64, (byte) 0xd3, (byte) 0x55, (byte) 0x1b, (byte) 0x83, (byte) 0x51, (byte) 0xa0,
+ (byte) 0x39, (byte) 0x1b, (byte) 0x6a, (byte) 0x7e, (byte) 0xfa, (byte) 0x7e, (byte) 0x2c, (byte) 0xd0,
+ (byte) 0xd3, (byte) 0x86, (byte) 0x7b, (byte) 0x8d, (byte) 0x29, (byte) 0x8f, (byte) 0xa3, (byte) 0x83,
+ (byte) 0xd2, (byte) 0x72, (byte) 0xce, (byte) 0x43, (byte) 0xcf, (byte) 0xc1, (byte) 0x27, (byte) 0xf1,
+ (byte) 0x4d, (byte) 0x11, (byte) 0xe2, (byte) 0x67, (byte) 0xbe, (byte) 0x6e, (byte) 0x34, (byte) 0x7d,
+ (byte) 0x04, (byte) 0x1f, (byte) 0xba, (byte) 0x55, (byte) 0x34, (byte) 0xea, (byte) 0xc2, (byte) 0xcf,
+ (byte) 0x0f, (byte) 0x64, (byte) 0x7b, (byte) 0x84, (byte) 0xe0, (byte) 0x55, (byte) 0x05, (byte) 0x82,
+ (byte) 0xdd, (byte) 0x9d, (byte) 0xd7, (byte) 0xeb, (byte) 0x91, (byte) 0x78, (byte) 0x69, (byte) 0x49,
+ (byte) 0x58, (byte) 0x70, (byte) 0xff, (byte) 0x83, (byte) 0x70, (byte) 0xa0, (byte) 0xb3, (byte) 0xb7,
+ (byte) 0x3d, (byte) 0x0f, (byte) 0x8e, (byte) 0xe9, (byte) 0x1b, (byte) 0x21, (byte) 0xef, (byte) 0x31,
+ (byte) 0x0b, (byte) 0xe3, (byte) 0xac, (byte) 0xc6, (byte) 0x0f, (byte) 0x57, (byte) 0x4f, (byte) 0xd8,
+ (byte) 0xd6, (byte) 0xb2, (byte) 0xd0, (byte) 0xca, (byte) 0xd9, (byte) 0x6f, (byte) 0x3f, (byte) 0x6e,
+ (byte) 0x83, (byte) 0x8c, (byte) 0xff, (byte) 0x47, (byte) 0xca, (byte) 0xbc, (byte) 0x81, (byte) 0x60,
+ (byte) 0x5f, (byte) 0xe2, (byte) 0xdd, (byte) 0xbd, (byte) 0x89, (byte) 0xb2, (byte) 0x52, (byte) 0xac,
+ (byte) 0xc3, (byte) 0x8b, (byte) 0x44, (byte) 0x99, (byte) 0x70, (byte) 0xe7, (byte) 0x2c, (byte) 0x52,
+ (byte) 0x21, (byte) 0xaa, (byte) 0xa2, (byte) 0x0f, (byte) 0x38, (byte) 0xc6, (byte) 0x98, (byte) 0x4d,
+ (byte) 0x48, (byte) 0xda, (byte) 0x65, (byte) 0x41, (byte) 0xa4, (byte) 0xad, (byte) 0x41, (byte) 0x7c,
+ (byte) 0x99, (byte) 0x14, (byte) 0xe5, (byte) 0xcb, (byte) 0x51, (byte) 0xd7, (byte) 0xab, (byte) 0x76,
+ (byte) 0xb1, (byte) 0x20, (byte) 0xce, (byte) 0x32, (byte) 0x1b, (byte) 0x11, (byte) 0x5c, (byte) 0xef,
+ (byte) 0x8b, (byte) 0x4f, (byte) 0xf3, (byte) 0x46, (byte) 0x5b, (byte) 0x11, (byte) 0xd7, (byte) 0x91,
+ (byte) 0xb6, (byte) 0x41, (byte) 0xd3, (byte) 0x23, (byte) 0xb6, (byte) 0x03, (byte) 0xa8, (byte) 0x98,
+ (byte) 0x40, (byte) 0x76, (byte) 0x13, (byte) 0x5d, (byte) 0x4c, (byte) 0xb2, (byte) 0xe9, (byte) 0xfe,
+ (byte) 0x90, (byte) 0x27, (byte) 0x04, (byte) 0xfc, (byte) 0x10, (byte) 0x45, (byte) 0x8b, (byte) 0x10,
+ (byte) 0xc3, (byte) 0xb2, (byte) 0x4b, (byte) 0x3c, (byte) 0xd2, (byte) 0x5b, (byte) 0x0f, (byte) 0xe8,
+ (byte) 0xfb, (byte) 0xb9, (byte) 0x45, (byte) 0xaf, (byte) 0x05, (byte) 0xc4, (byte) 0xba, (byte) 0xc7,
+ (byte) 0xfc, (byte) 0xa5, (byte) 0x7d, (byte) 0xdb, (byte) 0x4f, (byte) 0xa9, (byte) 0x76, (byte) 0xe2,
+ (byte) 0xfa, (byte) 0xc7, (byte) 0xe0, (byte) 0xad, (byte) 0x70, (byte) 0xaa, (byte) 0x40, (byte) 0x15,
+ (byte) 0x64, (byte) 0x01, (byte) 0xba, (byte) 0xc6, (byte) 0xc3, (byte) 0x83, (byte) 0x65, (byte) 0x95,
+ (byte) 0x3c, (byte) 0x05, (byte) 0x53, (byte) 0x88, (byte) 0xe7, (byte) 0x19, (byte) 0x98
+ };
+
+ protected static final int KID_PIN_SIG = 0x81;
+
+ protected byte[] EF_C_CH_DS = new byte[2000];
+
+ public ACOSApplSIG() {
+ // Files
+ System.arraycopy(C_CH_DS, 0, EF_C_CH_DS, 0, C_CH_DS.length);
+ putFile(new File(FID_EF_C_CH_DS, EF_C_CH_DS, FCI_EF_C_CH_DS));
+
+ // PINs
+ try {
+ pins.put(KID_PIN_SIG, new PIN(Arrays.copyOf("123456".getBytes("ASCII"), 8), KID_PIN_SIG, 3, PIN.STATE_RESET));
+ } catch (UnsupportedEncodingException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public byte[] getAID() {
+ return AID_SIG;
+ }
+
+ @Override
+ public byte[] getFID() {
+ return FID_SIG;
+ }
+
+ @Override
+ public byte[] getFCI() {
+ return FCI;
+ }
+
+ @Override
+ public ResponseAPDU cmdPERFORM_SECURITY_OPERATION(CommandAPDU command, CardChannelEmul channel) {
+
+ checkINS(command, 0x2A);
+
+ if (command.getP1() == 0x90 && command.getP2() == 0x81) {
+
+ // PUT HASH
+ hash = command.getData();
+ return new ResponseAPDU(new byte[] {(byte) 0x90, (byte) 0x00});
+
+ } else if (command.getP1() == 0x9E && command.getP2() == 0x9A) {
+
+ // COMPUTE DIGITAL SIGNATURE
+ if (securityEnv == null) {
+ // No security environment
+ return new ResponseAPDU(new byte[] {(byte) 0x6F, (byte) 0x05});
+ }
+ if (hash == null) {
+ // Command sequence not correct
+ return new ResponseAPDU(new byte[] {(byte) 0x6F, (byte) 0x03});
+ }
+ if (hash.length != 20) {
+ // Invalid hash length
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x80});
+ }
+ if (pins.get(KID_PIN_SIG).state != PIN.STATE_PIN_VERIFIED) {
+ // Security Status not satisfied
+ return new ResponseAPDU(new byte[] {(byte) 0x69, (byte) 0x82});
+ }
+
+ byte[] signature = new byte[48];
+
+ // TODO replace by signature creation
+ Random random = new Random();
+ random.nextBytes(signature);
+
+ byte[] response = new byte[signature.length + 2];
+ System.arraycopy(signature, 0, response, 0, signature.length);
+ response[signature.length] = (byte) 0x90;
+ response[signature.length + 1] = (byte) 0x00;
+
+ hash = null;
+ pins.get(KID_PIN_SIG).state = PIN.STATE_RESET;
+
+ return new ResponseAPDU(response);
+
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x00});
+ }
+
+ }
+
+ public void clearCert() {
+ Arrays.fill(EF_C_CH_DS, (byte) 0x00);
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardChannelEmul.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardChannelEmul.java
new file mode 100644
index 00000000..25923686
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardChannelEmul.java
@@ -0,0 +1,261 @@
+/*
+* 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.smcc.acos;
+
+import java.util.Arrays;
+
+import javax.smartcardio.Card;
+import javax.smartcardio.CardException;
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import at.gv.egiz.smcc.AbstractAppl;
+import at.gv.egiz.smcc.CardChannelEmul;
+import at.gv.egiz.smcc.CardEmul;
+import at.gv.egiz.smcc.File;
+import at.gv.egiz.smcc.PIN;
+
+@SuppressWarnings("restriction")
+public abstract class ACOSCardChannelEmul extends CardChannelEmul {
+
+ /**
+ *
+ */
+ protected CardEmul cardEmul;
+
+ public ACOSCardChannelEmul(CardEmul cardEmul) {
+ this.cardEmul = cardEmul;
+ }
+
+ @Override
+ public Card getCard() {
+ return cardEmul;
+ }
+
+ protected ResponseAPDU cmdSELECT(CommandAPDU command) throws CardException {
+
+ byte[] fid = command.getData();
+
+ AbstractAppl appl = cardEmul.getApplication(fid);
+ if (appl != null) {
+ if (currentAppl != null && currentAppl != appl) {
+ currentAppl.leaveApplContext();
+ currentFile = null;
+ }
+ currentAppl = appl;
+
+ byte[] fci = currentAppl.getFCI();
+ byte[] response = new byte[fci.length + 2];
+ System.arraycopy(fci, 0, response, 0, fci.length);
+ response[fci.length] = (byte) 0x90;
+ response[fci.length + 1] = (byte) 0x00;
+ return new ResponseAPDU(response);
+ }
+
+ if (command.getP1() == 0x00) {
+ // SELECT with FID
+ if (currentAppl instanceof AbstractAppl) {
+
+ for (File file : ((AbstractAppl) currentAppl).getFiles()) {
+
+ if (Arrays.equals(fid, file.fid)) {
+ currentFile = file;
+ byte[] response = new byte[file.fcx.length + 2];
+ System.arraycopy(file.fcx, 0, response, 0, file.fcx.length);
+ response[file.fcx.length] = (byte) 0x90;
+ response[file.fcx.length + 1] = (byte) 0x00;
+ return new ResponseAPDU(response);
+ }
+
+ }
+
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x82});
+
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x82});
+ }
+ }
+
+ // Not found
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x82});
+
+ }
+
+ public abstract ResponseAPDU cmdREAD_BINARY(CommandAPDU command) throws CardException;
+
+
+ @Override
+ public ResponseAPDU transmit(CommandAPDU command) throws CardException {
+
+ if (command.getCLA() == 0x00) {
+
+ switch (command.getINS()) {
+
+ // SELECT
+ case 0xA4:
+ return cmdSELECT(command);
+
+ // READ BINARY
+ case 0xB0:
+ return cmdREAD_BINARY(command);
+
+ // VERIFY
+ case 0x20:
+ if ((command.getP2() & 0x80) > 0) {
+ return cmdVERIFY(command);
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x81});
+ }
+
+ // MANAGE SECURITY ENVIRONMENT
+ case 0x22: {
+ if (currentAppl != null) {
+ return currentAppl.cmdMANAGE_SECURITY_ENVIRONMENT(command, this);
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6F, (byte) 0x05});
+ }
+ }
+
+ // CHANGE REFERENCE DATA
+ case 0x24: {
+ return cmdCHANGE_REFERENCE_DATA(command);
+ }
+
+ // PERFORM SECURITY OPERATION
+ case 0x2A: {
+ if (currentAppl != null) {
+ return currentAppl.cmdPERFORM_SECURITY_OPERATION(command, this);
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6F, (byte) 0x05});
+ }
+ }
+
+ // INTERNAL AUTHENTICATE
+ case 0x88: {
+ if (currentAppl != null) {
+ return currentAppl.cmdINTERNAL_AUTHENTICATE(command, this);
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6F, (byte) 0x05});
+ }
+ }
+
+ default:
+ return new ResponseAPDU(new byte[] { (byte) 0x6D, (byte) 0x00});
+ }
+
+ } else {
+ return new ResponseAPDU(new byte[] { (byte) 0x6E, (byte) 0x00});
+ }
+
+ }
+
+ protected ResponseAPDU verifyPin(int kid, byte[] reference) {
+
+ PIN pin;
+ if (currentAppl != null) {
+ pin = currentAppl.pins.get(kid);
+ } else {
+ pin = null;
+ }
+
+ if (pin != null) {
+
+ if (reference.length != 8) {
+ return new ResponseAPDU(new byte[] {(byte) 0x67, (byte) 0x00});
+ }
+
+ if (Arrays.equals(reference, pin.pin)) {
+ switch (pin.state) {
+ case PIN.STATE_PIN_BLOCKED:
+ return new ResponseAPDU(new byte[] { (byte) 0x69, (byte) 0x83 });
+
+ case PIN.STATE_RESET:
+ pin.state = PIN.STATE_PIN_VERIFIED;
+
+ default:
+ pin.kfpc = 10;
+ return new ResponseAPDU(new byte[] { (byte) 0x90, (byte) 0x00 });
+ }
+ } else {
+ switch (pin.state) {
+ case PIN.STATE_PIN_BLOCKED:
+ return new ResponseAPDU(new byte[] { (byte) 0x69, (byte) 0x83 });
+
+ default:
+ if (--pin.kfpc > 0) {
+ return new ResponseAPDU(new byte[] { (byte) 0x63, (byte) (pin.kfpc | 0xC0)});
+ } else {
+ pin.state = PIN.STATE_PIN_BLOCKED;
+ return new ResponseAPDU(new byte[] { (byte) 0x69, (byte) 0x83 });
+ }
+ }
+
+ }
+
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x00});
+ }
+
+ }
+
+ public ResponseAPDU cmdVERIFY(CommandAPDU command) throws CardException {
+
+ if (command.getINS() != 0x20) {
+ throw new IllegalArgumentException("INS has to be 0x20.");
+ }
+
+ if (command.getP1() != 00) {
+ return new ResponseAPDU(new byte[] {(byte) 0x6B, (byte) 0x00});
+ }
+
+ return verifyPin(command.getP2(), command.getData());
+
+ }
+
+ public ResponseAPDU cmdCHANGE_REFERENCE_DATA(CommandAPDU command) {
+
+ if (command.getINS() != 0x24) {
+ throw new IllegalArgumentException("INS has to be 0x24.");
+ }
+
+ if (command.getP1() == 0x00) {
+
+ byte[] data = command.getData();
+ if (data.length != 16) {
+ return new ResponseAPDU(new byte[] {(byte) 0x67, (byte) 0x00});
+ }
+
+ ResponseAPDU response = verifyPin(command.getP2(), Arrays.copyOf(data, 8));
+ if (response.getSW() == 0x9000) {
+ PIN pin;
+ if (currentAppl != null) {
+ pin = currentAppl.pins.get(command.getP2());
+ } else {
+ pin = null;
+ }
+ pin.pin = Arrays.copyOfRange(data, 8, 16);
+ }
+
+ return response;
+
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x81});
+ }
+
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardEmul.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardEmul.java
new file mode 100644
index 00000000..b9f70a5d
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardEmul.java
@@ -0,0 +1,38 @@
+/*
+* 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.smcc.acos;
+
+
+import javax.smartcardio.ATR;
+
+import at.gv.egiz.smcc.CardEmul;
+
+@SuppressWarnings("restriction")
+public abstract class ACOSCardEmul extends CardEmul {
+
+ protected static ATR ATR = new ATR(new byte[] {
+ (byte) 0x3b, (byte) 0xbf, (byte) 0x11, (byte) 0x00, (byte) 0x81, (byte) 0x31, (byte) 0xfe, (byte) 0x45,
+ (byte) 0x45, (byte) 0x50, (byte) 0x41, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0xf1
+ });
+
+ @Override
+ public ATR getATR() {
+ return ATR;
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java
new file mode 100644
index 00000000..4f012739
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTest.java
@@ -0,0 +1,230 @@
+/*
+* 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.smcc.acos;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
+import java.util.Arrays;
+
+import org.junit.Test;
+
+import at.gv.egiz.smcc.CardEmul;
+import at.gv.egiz.smcc.CardNotSupportedException;
+import at.gv.egiz.smcc.CardTest;
+import at.gv.egiz.smcc.LockedException;
+import at.gv.egiz.smcc.NotActivatedException;
+import at.gv.egiz.smcc.pin.gui.SMCCTestPINProvider;
+import at.gv.egiz.smcc.SignatureCard;
+import at.gv.egiz.smcc.SignatureCardException;
+import at.gv.egiz.smcc.SignatureCard.KeyboxName;
+
+public abstract class ACOSCardTest extends CardTest {
+
+ public ACOSCardTest() {
+ super();
+ }
+
+ protected abstract int getVersion();
+
+ @Test
+ public void testGetInfoboxIdentityLinkEmpty() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException {
+
+ char[] pin = "0000".toCharArray();
+
+ SignatureCard signatureCard = createSignatureCard();
+ CardEmul card = (CardEmul) signatureCard.getCard();
+ ACOSApplDEC appl = (ACOSApplDEC) card.getApplication(ACOSAppl.AID_DEC);
+ appl.clearInfobox();
+
+ byte[] idlink = signatureCard.getInfobox("IdentityLink",
+ new SMCCTestPINProvider(pin), null);
+ assertNull(idlink);
+
+ }
+
+ @Test(expected = SignatureCardException.class)
+ public void testGetInfoboxIdentityInvalid() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException {
+
+ char[] pin = "0000".toCharArray();
+
+ SignatureCard signatureCard = createSignatureCard();
+ CardEmul card = (CardEmul) signatureCard.getCard();
+ ACOSApplDEC appl = (ACOSApplDEC) card.getApplication(ACOSAppl.AID_DEC);
+ appl.setInfoboxHeader((byte) 0xFF);
+
+ signatureCard.getInfobox("IdentityLink", new SMCCTestPINProvider(pin), null);
+
+ }
+
+ @Test
+ public void testGetCerts() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException {
+
+ SignatureCard signatureCard = createSignatureCard();
+
+ byte[] cert;
+
+ cert = signatureCard.getCertificate(KeyboxName.SECURE_SIGNATURE_KEYPAIR);
+ assertNotNull(cert);
+ assertTrue(Arrays.equals(cert, A04ApplSIG.C_CH_DS));
+
+ cert = signatureCard.getCertificate(KeyboxName.CERITIFIED_KEYPAIR);
+ assertNotNull(cert);
+ assertTrue(Arrays.equals(cert, A04ApplDEC.C_CH_EKEY));
+
+ }
+
+ @Test(expected = NotActivatedException.class)
+ public void testGetSIGCertEmpty() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException {
+
+ SignatureCard signatureCard = createSignatureCard();
+ CardEmul card = (CardEmul) signatureCard.getCard();
+ ACOSApplSIG appl = (ACOSApplSIG) card.getApplication(ACOSAppl.AID_SIG);
+ appl.clearCert();
+
+ signatureCard.getCertificate(KeyboxName.SECURE_SIGNATURE_KEYPAIR);
+
+ }
+
+ @Test(expected = NotActivatedException.class)
+ public void testGetDECCertEmpty() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException {
+
+ SignatureCard signatureCard = createSignatureCard();
+ CardEmul card = (CardEmul) signatureCard.getCard();
+ ACOSApplDEC appl = (ACOSApplDEC) card.getApplication(ACOSAppl.AID_DEC);
+ appl.clearCert();
+
+ signatureCard.getCertificate(KeyboxName.CERITIFIED_KEYPAIR);
+
+ }
+
+ @Test
+ public void testSignSIG() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException,
+ NoSuchAlgorithmException, IOException {
+
+ char[] pin = "123456".toCharArray();
+
+ SignatureCard signatureCard = createSignatureCard();
+ CardEmul card = (CardEmul) signatureCard.getCard();
+ ACOSApplSIG appl = (ACOSApplSIG) card.getApplication(ACOSAppl.AID_SIG);
+ appl.setPin(ACOSApplSIG.KID_PIN_SIG, pin);
+
+ byte[] signature = signatureCard.createSignature(new ByteArrayInputStream("MOCCA"
+ .getBytes("ASCII")),
+ KeyboxName.SECURE_SIGNATURE_KEYPAIR, new SMCCTestPINProvider(pin), null);
+
+ assertNotNull(signature);
+
+ }
+
+ @Test
+ public void testSignDEC() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException,
+ NoSuchAlgorithmException, IOException {
+
+ char[] pin = "1234".toCharArray();
+
+ SignatureCard signatureCard = createSignatureCard();
+ CardEmul card = (CardEmul) signatureCard.getCard();
+ ACOSApplDEC appl = (ACOSApplDEC) card.getApplication(ACOSAppl.AID_DEC);
+ appl.setPin(ACOSApplDEC.KID_PIN_DEC, pin);
+
+ byte[] signature = signatureCard.createSignature(new ByteArrayInputStream("MOCCA"
+ .getBytes("ASCII")),
+ KeyboxName.CERITIFIED_KEYPAIR, new SMCCTestPINProvider(pin), null);
+
+ assertNotNull(signature);
+
+ }
+
+ @Test(expected = LockedException.class)
+ public void testSignSIGInvalidPin() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException,
+ NoSuchAlgorithmException, IOException {
+
+ SignatureCard signatureCard = createSignatureCard();
+
+ SMCCTestPINProvider pinProvider = new SMCCTestPINProvider("000000".toCharArray());
+
+ signatureCard.createSignature(new ByteArrayInputStream("MOCCA"
+ .getBytes("ASCII")), KeyboxName.SECURE_SIGNATURE_KEYPAIR,
+ pinProvider, null);
+
+ }
+
+ @Test(expected = LockedException.class)
+ public void testSignDECInvalidPin() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException,
+ NoSuchAlgorithmException, IOException {
+
+ SignatureCard signatureCard = createSignatureCard();
+
+ SMCCTestPINProvider pinProvider = new SMCCTestPINProvider("0000".toCharArray());
+
+ signatureCard.createSignature(new ByteArrayInputStream("MOCCA"
+ .getBytes("ASCII")), KeyboxName.CERITIFIED_KEYPAIR,
+ pinProvider, null);
+
+ }
+
+ @Test(expected = LockedException.class)
+ public void testSignSIGBlockedPin() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException,
+ NoSuchAlgorithmException, IOException {
+
+ SignatureCard signatureCard = createSignatureCard();
+ CardEmul card = (CardEmul) signatureCard.getCard();
+ ACOSApplSIG appl = (ACOSApplSIG) card.getApplication(ACOSAppl.AID_SIG);
+ appl.setPin(ACOSApplSIG.KID_PIN_SIG, null);
+
+ SMCCTestPINProvider pinProvider = new SMCCTestPINProvider("000000".toCharArray());
+
+ signatureCard.createSignature(new ByteArrayInputStream("MOCCA"
+ .getBytes("ASCII")), KeyboxName.SECURE_SIGNATURE_KEYPAIR,
+ pinProvider, null);
+
+ }
+
+ @Test(expected = LockedException.class)
+ public void testSignDECBlockedPin() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException,
+ NoSuchAlgorithmException, IOException {
+
+ SignatureCard signatureCard = createSignatureCard();
+ CardEmul card = (CardEmul) signatureCard.getCard();
+ ACOSApplDEC appl = (ACOSApplDEC) card.getApplication(ACOSAppl.AID_DEC);
+ appl.setPin(ACOSApplDEC.KID_PIN_DEC, null);
+
+ SMCCTestPINProvider pinProvider = new SMCCTestPINProvider("0000".toCharArray());
+
+ signatureCard.createSignature(new ByteArrayInputStream("MOCCA"
+ .getBytes("ASCII")), KeyboxName.CERITIFIED_KEYPAIR,
+ pinProvider, null);
+
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTestSuite.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTestSuite.java
new file mode 100644
index 00000000..101f7edc
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/acos/ACOSCardTestSuite.java
@@ -0,0 +1,27 @@
+/*
+* 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.smcc.acos;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+import org.junit.runners.Suite.SuiteClasses;
+
+@RunWith(Suite.class)
+@SuiteClasses( { A03CardTest.class, A04CardTest.class })
+public class ACOSCardTestSuite {
+
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/CancelChangePINProvider.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/CancelChangePINProvider.java
new file mode 100644
index 00000000..dffe7e29
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/CancelChangePINProvider.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.smcc.pin.gui;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.PINSpec;
+
+public class CancelChangePINProvider extends DummyChangePINGUI implements ModifyPINGUI {
+
+ public CancelChangePINProvider() {
+ }
+
+ @Override
+ public char[] provideCurrentPIN(PINSpec spec, int retries)
+ throws CancelledException, InterruptedException {
+ throw new CancelledException("cancelled by cancelPINProvider");
+ }
+
+ @Override
+ public char[] provideNewPIN(PINSpec spec)
+ throws CancelledException, InterruptedException {
+ throw new CancelledException("cancelled by cancelPINProvider");
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/CancelPINProvider.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/CancelPINProvider.java
new file mode 100644
index 00000000..77f19345
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/CancelPINProvider.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.smcc.pin.gui;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.PINSpec;
+
+public class CancelPINProvider extends DummyPINGUI implements PINGUI {
+
+ @Override
+ public char[] providePIN(PINSpec spec, int retries)
+ throws CancelledException, InterruptedException {
+ throw new CancelledException("cancelled by cancelPINProvider");
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/ChangePINProvider.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/ChangePINProvider.java
new file mode 100644
index 00000000..5eb8b9a1
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/ChangePINProvider.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.smcc.pin.gui;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.PINSpec;
+
+public class ChangePINProvider extends DummyChangePINGUI implements ModifyPINGUI {
+
+ int provided = 0;
+ char[] pin;
+ char[] oldPin;
+
+ public ChangePINProvider(char[] oldPin, char[] pin) {
+ this.pin = pin;
+ this.oldPin = oldPin;
+ }
+
+ public int getProvided() {
+ return provided;
+ }
+
+ @Override
+ public char[] provideCurrentPIN(PINSpec spec, int retries)
+ throws CancelledException, InterruptedException {
+ provided++;
+ return oldPin;
+ }
+
+ @Override
+ public char[] provideNewPIN(PINSpec spec) {
+ return pin;
+ }
+
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/DummyChangePINGUI.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/DummyChangePINGUI.java
new file mode 100644
index 00000000..fff89409
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/DummyChangePINGUI.java
@@ -0,0 +1,68 @@
+/*
+ * 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.smcc.pin.gui;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.PINSpec;
+
+public abstract class DummyChangePINGUI implements ModifyPINGUI {
+
+ @Override
+ public void validKeyPressed() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void correctionButtonPressed() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void allKeysCleared() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void finish() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void finishDirect() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void modifyPINDirect(PINSpec spec, int retries) throws CancelledException, InterruptedException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void enterCurrentPIN(PINSpec spec, int retries) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void enterNewPIN(PINSpec spec) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void confirmNewPIN(PINSpec spec) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/DummyPINGUI.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/DummyPINGUI.java
new file mode 100644
index 00000000..4d99b5c1
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/DummyPINGUI.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.smcc.pin.gui;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.PINSpec;
+
+public abstract class DummyPINGUI implements PINGUI {
+
+ @Override
+ public void enterPINDirect(PINSpec spec, int retries) throws CancelledException, InterruptedException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void enterPIN(PINSpec spec, int retries) throws CancelledException, InterruptedException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void validKeyPressed() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void correctionButtonPressed() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public void allKeysCleared() {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/InterruptPINProvider.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/InterruptPINProvider.java
new file mode 100644
index 00000000..5706b888
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/InterruptPINProvider.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.smcc.pin.gui;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.PINSpec;
+
+@SuppressWarnings("restriction")
+public class InterruptPINProvider extends DummyPINGUI implements PINGUI {
+
+ public InterruptPINProvider() {
+ }
+
+ @Override
+ public char[] providePIN(PINSpec spec, int retries)
+ throws CancelledException, InterruptedException {
+ throw new InterruptedException("interrupted by cancelPINProvider");
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/InvalidChangePINProvider.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/InvalidChangePINProvider.java
new file mode 100644
index 00000000..69c9f42a
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/InvalidChangePINProvider.java
@@ -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.
+ */
+package at.gv.egiz.smcc.pin.gui;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.PINSpec;
+
+public class InvalidChangePINProvider extends DummyChangePINGUI implements ModifyPINGUI {
+
+ int provided = 0;
+ int numWrongTries = 0;
+ char[] pin;
+ char[] oldPin;
+
+ /** emulate ChangePinProvider */
+ public InvalidChangePINProvider(char[] oldPin, char[] newPin, int numWrongTries) {
+ super();
+ this.pin = newPin;
+ this.oldPin = oldPin;
+ this.numWrongTries = numWrongTries;
+ }
+
+ @Override
+ public char[] provideCurrentPIN(PINSpec spec, int retries)
+ throws CancelledException, InterruptedException {
+ if (provided >= numWrongTries) {
+ throw new CancelledException("Number of wrong tries reached: " + provided);
+ } else {
+ provided++;
+ return oldPin;
+ }
+ }
+
+ public int getProvided() {
+ return provided;
+ }
+
+ @Override
+ public char[] provideNewPIN(PINSpec spec) {
+ return pin;
+ }
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/InvalidPINProvider.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/InvalidPINProvider.java
new file mode 100644
index 00000000..db01fd0d
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/InvalidPINProvider.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.smcc.pin.gui;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.PINSpec;
+
+public class InvalidPINProvider extends DummyPINGUI implements PINGUI {
+
+ int provided = 0;
+ int numWrongTries = 0;
+ char[] pin;
+
+ public InvalidPINProvider(char[] pin, int numWrongTries) {
+ super();
+ this.pin = pin;
+ this.numWrongTries = numWrongTries;
+ }
+
+ @Override
+ public char[] providePIN(PINSpec spec, int retries)
+ throws CancelledException, InterruptedException {
+ if (provided >= numWrongTries) {
+ throw new CancelledException("Number of wrong tries reached: " + provided);
+ } else {
+ provided++;
+ return pin;
+ }
+ }
+
+ public int getProvided() {
+ return provided;
+ }
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/SMCCTestPINProvider.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/SMCCTestPINProvider.java
new file mode 100644
index 00000000..dffc90d7
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/pin/gui/SMCCTestPINProvider.java
@@ -0,0 +1,43 @@
+/*
+ * 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.smcc.pin.gui;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.PINSpec;
+
+public class SMCCTestPINProvider extends DummyPINGUI implements PINGUI {
+
+ public int provided = 0;
+ char[] pin;
+
+ public SMCCTestPINProvider(char[] pin) {
+ this.pin = pin;
+ }
+
+ @Override
+ public char[] providePIN(PINSpec spec, int retries)
+ throws CancelledException, InterruptedException {
+ provided++;
+ return pin;
+ }
+
+ public int getProvided() {
+ return provided;
+ }
+
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSAppl.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSAppl.java
new file mode 100644
index 00000000..62528e6e
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSAppl.java
@@ -0,0 +1,72 @@
+/*
+* 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.smcc.starcos;
+
+import java.io.UnsupportedEncodingException;
+import java.math.BigInteger;
+import java.util.Arrays;
+import java.util.Iterator;
+
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import at.gv.egiz.smcc.AbstractAppl;
+import at.gv.egiz.smcc.CardAppl;
+import at.gv.egiz.smcc.CardChannelEmul;
+import at.gv.egiz.smcc.PIN;
+
+@SuppressWarnings("restriction")
+public abstract class STARCOSAppl extends AbstractAppl implements CardAppl {
+
+ public static byte[] AID_SichereSignatur = new byte[] { (byte) 0xD0, (byte) 0x40,
+ (byte) 0x00, (byte) 0x00, (byte) 0x17, (byte) 0x00, (byte) 0x12, (byte) 0x01 };
+
+ public static byte[] FID_SichereSignatur = new byte[] { (byte) 0x3F, (byte) 0x04 };
+
+ public static byte[] AID_Infobox = new byte[] { (byte) 0xD0, (byte) 0x40,
+ (byte) 0x00, (byte) 0x00, (byte) 0x17, (byte) 0x00, (byte) 0x18, (byte) 0x01 };
+
+ public static byte[] FID_Infobox = new byte[] { (byte) 0x3F, (byte) 0x06 };
+
+ public static byte[] AID_GewoehnlicheSignatur = new byte[] { (byte) 0xD0, (byte) 0x40,
+ (byte) 0x00, (byte) 0x00, (byte) 0x17, (byte) 0x00, (byte) 0x13, (byte) 0x01 };
+
+ public static byte[] FID_GewoehnlicheSignatur = new byte[] { (byte) 0x3F, (byte) 0x05 };
+
+ protected STARCOSCardChannelEmul channel;
+
+ protected byte[] securityEnv;
+
+ protected byte[] hash;
+
+ public STARCOSAppl(STARCOSCardChannelEmul channel) {
+ this.channel = channel;
+ }
+
+ @Override
+ public ResponseAPDU cmdINTERNAL_AUTHENTICATE(CommandAPDU command, CardChannelEmul channel) {
+ return new ResponseAPDU(new byte[] {(byte) 0x6D, (byte) 0x00});
+ }
+
+ @Override
+ public void leaveApplContext() {
+ Iterator<PIN> pin = pins.values().iterator();
+ while (pin.hasNext()) {
+ pin.next().state = PIN.STATE_RESET;
+ }
+ }
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSApplGewoehnlicheSignatur.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSApplGewoehnlicheSignatur.java
new file mode 100644
index 00000000..8741dd2d
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSApplGewoehnlicheSignatur.java
@@ -0,0 +1,349 @@
+/*
+* 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.smcc.starcos;
+
+import java.util.Arrays;
+import java.util.Random;
+
+import javax.smartcardio.CardException;
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import at.gv.egiz.smcc.CardChannelEmul;
+import at.gv.egiz.smcc.File;
+import at.gv.egiz.smcc.PIN;
+
+@SuppressWarnings("restriction")
+public class STARCOSApplGewoehnlicheSignatur extends STARCOSAppl {
+
+ private static byte[] FCI = new byte[] { (byte) 0x6f, (byte) 0x14,
+ (byte) 0x84, (byte) 0x08, (byte) 0xd0, (byte) 0x40, (byte) 0x00,
+ (byte) 0x00, (byte) 0x17, (byte) 0x00, (byte) 0x13, (byte) 0x01,
+ (byte) 0xa5, (byte) 0x08, (byte) 0x53, (byte) 0x02, (byte) 0x01,
+ (byte) 0x10, (byte) 0x54, (byte) 0x02, (byte) 0x01, (byte) 0x00 };
+
+ protected static byte[] FID_EF_C_X509_CH_AUT = new byte[] { (byte) 0x2f,
+ (byte) 0x01 };
+
+ protected static byte[] FCI_EF_C_X509_CH_AUT = new byte[] { (byte) 0x62,
+ (byte) 0x16, (byte) 0x80, (byte) 0x02, (byte) 0x04, (byte) 0x9c,
+ (byte) 0x82, (byte) 0x01, (byte) 0x01, (byte) 0x83, (byte) 0x02,
+ (byte) 0x2f, (byte) 0x01, (byte) 0x88, (byte) 0x01, (byte) 0x08,
+ (byte) 0x8a, (byte) 0x01, (byte) 0x05, (byte) 0xa1, (byte) 0x03,
+ (byte) 0x8b, (byte) 0x01, (byte) 0x08 };
+
+ protected static byte[] C_X509_CH_AUT = new byte[] {
+ (byte) 0x30, (byte) 0x82, (byte) 0x04, (byte) 0x98, (byte) 0x30, (byte) 0x82, (byte) 0x03, (byte) 0x80,
+ (byte) 0xa0, (byte) 0x03, (byte) 0x02, (byte) 0x01, (byte) 0x02, (byte) 0x02, (byte) 0x03, (byte) 0x02,
+ (byte) 0x06, (byte) 0x5f, (byte) 0x30, (byte) 0x0d, (byte) 0x06, (byte) 0x09, (byte) 0x2a, (byte) 0x86,
+ (byte) 0x48, (byte) 0x86, (byte) 0xf7, (byte) 0x0d, (byte) 0x01, (byte) 0x01, (byte) 0x05, (byte) 0x05,
+ (byte) 0x00, (byte) 0x30, (byte) 0x81, (byte) 0x95, (byte) 0x31, (byte) 0x0b, (byte) 0x30, (byte) 0x09,
+ (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x06, (byte) 0x13, (byte) 0x02, (byte) 0x41,
+ (byte) 0x54, (byte) 0x31, (byte) 0x48, (byte) 0x30, (byte) 0x46, (byte) 0x06, (byte) 0x03, (byte) 0x55,
+ (byte) 0x04, (byte) 0x0a, (byte) 0x0c, (byte) 0x3f, (byte) 0x41, (byte) 0x2d, (byte) 0x54, (byte) 0x72,
+ (byte) 0x75, (byte) 0x73, (byte) 0x74, (byte) 0x20, (byte) 0x47, (byte) 0x65, (byte) 0x73, (byte) 0x2e,
+ (byte) 0x20, (byte) 0x66, (byte) 0x2e, (byte) 0x20, (byte) 0x53, (byte) 0x69, (byte) 0x63, (byte) 0x68,
+ (byte) 0x65, (byte) 0x72, (byte) 0x68, (byte) 0x65, (byte) 0x69, (byte) 0x74, (byte) 0x73, (byte) 0x73,
+ (byte) 0x79, (byte) 0x73, (byte) 0x74, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x20, (byte) 0x69,
+ (byte) 0x6d, (byte) 0x20, (byte) 0x65, (byte) 0x6c, (byte) 0x65, (byte) 0x6b, (byte) 0x74, (byte) 0x72,
+ (byte) 0x2e, (byte) 0x20, (byte) 0x44, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x6e, (byte) 0x76,
+ (byte) 0x65, (byte) 0x72, (byte) 0x6b, (byte) 0x65, (byte) 0x68, (byte) 0x72, (byte) 0x20, (byte) 0x47,
+ (byte) 0x6d, (byte) 0x62, (byte) 0x48, (byte) 0x31, (byte) 0x1d, (byte) 0x30, (byte) 0x1b, (byte) 0x06,
+ (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x0b, (byte) 0x0c, (byte) 0x14, (byte) 0x61, (byte) 0x2d,
+ (byte) 0x73, (byte) 0x69, (byte) 0x67, (byte) 0x6e, (byte) 0x2d, (byte) 0x74, (byte) 0x6f, (byte) 0x6b,
+ (byte) 0x65, (byte) 0x6e, (byte) 0x2d, (byte) 0x54, (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x2d,
+ (byte) 0x30, (byte) 0x33, (byte) 0x31, (byte) 0x1d, (byte) 0x30, (byte) 0x1b, (byte) 0x06, (byte) 0x03,
+ (byte) 0x55, (byte) 0x04, (byte) 0x03, (byte) 0x0c, (byte) 0x14, (byte) 0x61, (byte) 0x2d, (byte) 0x73,
+ (byte) 0x69, (byte) 0x67, (byte) 0x6e, (byte) 0x2d, (byte) 0x74, (byte) 0x6f, (byte) 0x6b, (byte) 0x65,
+ (byte) 0x6e, (byte) 0x2d, (byte) 0x54, (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x2d, (byte) 0x30,
+ (byte) 0x33, (byte) 0x30, (byte) 0x1e, (byte) 0x17, (byte) 0x0d, (byte) 0x30, (byte) 0x39, (byte) 0x30,
+ (byte) 0x33, (byte) 0x30, (byte) 0x36, (byte) 0x31, (byte) 0x35, (byte) 0x32, (byte) 0x32, (byte) 0x33,
+ (byte) 0x38, (byte) 0x5a, (byte) 0x17, (byte) 0x0d, (byte) 0x31, (byte) 0x32, (byte) 0x30, (byte) 0x33,
+ (byte) 0x30, (byte) 0x36, (byte) 0x31, (byte) 0x35, (byte) 0x32, (byte) 0x32, (byte) 0x33, (byte) 0x38,
+ (byte) 0x5a, (byte) 0x30, (byte) 0x72, (byte) 0x31, (byte) 0x0b, (byte) 0x30, (byte) 0x09, (byte) 0x06,
+ (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x06, (byte) 0x13, (byte) 0x02, (byte) 0x41, (byte) 0x54,
+ (byte) 0x31, (byte) 0x20, (byte) 0x30, (byte) 0x1e, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04,
+ (byte) 0x03, (byte) 0x0c, (byte) 0x17, (byte) 0x58, (byte) 0x58, (byte) 0x58, (byte) 0xc5, (byte) 0x90,
+ (byte) 0x7a, (byte) 0x67, (byte) 0xc3, (byte) 0xbc, (byte) 0x72, (byte) 0x20, (byte) 0x58, (byte) 0x58,
+ (byte) 0x58, (byte) 0x54, (byte) 0xc3, (byte) 0xbc, (byte) 0x7a, (byte) 0x65, (byte) 0x6b, (byte) 0xc3,
+ (byte) 0xa7, (byte) 0x69, (byte) 0x31, (byte) 0x15, (byte) 0x30, (byte) 0x13, (byte) 0x06, (byte) 0x03,
+ (byte) 0x55, (byte) 0x04, (byte) 0x04, (byte) 0x0c, (byte) 0x0c, (byte) 0x58, (byte) 0x58, (byte) 0x58,
+ (byte) 0x54, (byte) 0xc3, (byte) 0xbc, (byte) 0x7a, (byte) 0x65, (byte) 0x6b, (byte) 0xc3, (byte) 0xa7,
+ (byte) 0x69, (byte) 0x31, (byte) 0x13, (byte) 0x30, (byte) 0x11, (byte) 0x06, (byte) 0x03, (byte) 0x55,
+ (byte) 0x04, (byte) 0x2a, (byte) 0x0c, (byte) 0x0a, (byte) 0x58, (byte) 0x58, (byte) 0x58, (byte) 0xc5,
+ (byte) 0x90, (byte) 0x7a, (byte) 0x67, (byte) 0xc3, (byte) 0xbc, (byte) 0x72, (byte) 0x31, (byte) 0x15,
+ (byte) 0x30, (byte) 0x13, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x05, (byte) 0x13,
+ (byte) 0x0c, (byte) 0x37, (byte) 0x30, (byte) 0x34, (byte) 0x38, (byte) 0x37, (byte) 0x31, (byte) 0x30,
+ (byte) 0x35, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x38, (byte) 0x30, (byte) 0x49, (byte) 0x30,
+ (byte) 0x13, (byte) 0x06, (byte) 0x07, (byte) 0x2a, (byte) 0x86, (byte) 0x48, (byte) 0xce, (byte) 0x3d,
+ (byte) 0x02, (byte) 0x01, (byte) 0x06, (byte) 0x08, (byte) 0x2a, (byte) 0x86, (byte) 0x48, (byte) 0xce,
+ (byte) 0x3d, (byte) 0x03, (byte) 0x01, (byte) 0x01, (byte) 0x03, (byte) 0x32, (byte) 0x00, (byte) 0x04,
+ (byte) 0x02, (byte) 0x55, (byte) 0x51, (byte) 0xf9, (byte) 0x2a, (byte) 0xea, (byte) 0x6f, (byte) 0xd3,
+ (byte) 0xf5, (byte) 0xda, (byte) 0xa9, (byte) 0x7a, (byte) 0x22, (byte) 0xfc, (byte) 0xb4, (byte) 0x38,
+ (byte) 0xe9, (byte) 0x5c, (byte) 0xdc, (byte) 0x6b, (byte) 0x86, (byte) 0xa6, (byte) 0x77, (byte) 0xa7,
+ (byte) 0x90, (byte) 0xf3, (byte) 0x36, (byte) 0xe0, (byte) 0xc4, (byte) 0xde, (byte) 0x72, (byte) 0xf2,
+ (byte) 0x1a, (byte) 0x07, (byte) 0xfa, (byte) 0xd0, (byte) 0xc8, (byte) 0x1c, (byte) 0xa0, (byte) 0xc8,
+ (byte) 0x8b, (byte) 0x5d, (byte) 0xde, (byte) 0x9e, (byte) 0xf8, (byte) 0x3b, (byte) 0x7c, (byte) 0x8c,
+ (byte) 0xa3, (byte) 0x82, (byte) 0x01, (byte) 0xec, (byte) 0x30, (byte) 0x82, (byte) 0x01, (byte) 0xe8,
+ (byte) 0x30, (byte) 0x13, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x23, (byte) 0x04,
+ (byte) 0x0c, (byte) 0x30, (byte) 0x0a, (byte) 0x80, (byte) 0x08, (byte) 0x47, (byte) 0x7e, (byte) 0x5b,
+ (byte) 0xdb, (byte) 0x37, (byte) 0x33, (byte) 0xb1, (byte) 0xfa, (byte) 0x30, (byte) 0x7e, (byte) 0x06,
+ (byte) 0x08, (byte) 0x2b, (byte) 0x06, (byte) 0x01, (byte) 0x05, (byte) 0x05, (byte) 0x07, (byte) 0x01,
+ (byte) 0x01, (byte) 0x04, (byte) 0x72, (byte) 0x30, (byte) 0x70, (byte) 0x30, (byte) 0x2c, (byte) 0x06,
+ (byte) 0x08, (byte) 0x2b, (byte) 0x06, (byte) 0x01, (byte) 0x05, (byte) 0x05, (byte) 0x07, (byte) 0x30,
+ (byte) 0x01, (byte) 0x86, (byte) 0x20, (byte) 0x68, (byte) 0x74, (byte) 0x74, (byte) 0x70, (byte) 0x3a,
+ (byte) 0x2f, (byte) 0x2f, (byte) 0x6f, (byte) 0x63, (byte) 0x73, (byte) 0x70, (byte) 0x2d, (byte) 0x74,
+ (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x2e, (byte) 0x61, (byte) 0x2d, (byte) 0x74, (byte) 0x72,
+ (byte) 0x75, (byte) 0x73, (byte) 0x74, (byte) 0x2e, (byte) 0x61, (byte) 0x74, (byte) 0x2f, (byte) 0x6f,
+ (byte) 0x63, (byte) 0x73, (byte) 0x70, (byte) 0x30, (byte) 0x40, (byte) 0x06, (byte) 0x08, (byte) 0x2b,
+ (byte) 0x06, (byte) 0x01, (byte) 0x05, (byte) 0x05, (byte) 0x07, (byte) 0x30, (byte) 0x02, (byte) 0x86,
+ (byte) 0x34, (byte) 0x68, (byte) 0x74, (byte) 0x74, (byte) 0x70, (byte) 0x3a, (byte) 0x2f, (byte) 0x2f,
+ (byte) 0x77, (byte) 0x77, (byte) 0x77, (byte) 0x2e, (byte) 0x61, (byte) 0x2d, (byte) 0x74, (byte) 0x72,
+ (byte) 0x75, (byte) 0x73, (byte) 0x74, (byte) 0x2e, (byte) 0x61, (byte) 0x74, (byte) 0x2f, (byte) 0x63,
+ (byte) 0x65, (byte) 0x72, (byte) 0x74, (byte) 0x73, (byte) 0x2f, (byte) 0x61, (byte) 0x2d, (byte) 0x73,
+ (byte) 0x69, (byte) 0x67, (byte) 0x6e, (byte) 0x2d, (byte) 0x74, (byte) 0x6f, (byte) 0x6b, (byte) 0x65,
+ (byte) 0x6e, (byte) 0x2d, (byte) 0x74, (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x2d, (byte) 0x30,
+ (byte) 0x33, (byte) 0x2e, (byte) 0x63, (byte) 0x72, (byte) 0x74, (byte) 0x30, (byte) 0x81, (byte) 0x86,
+ (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x20, (byte) 0x04, (byte) 0x7f, (byte) 0x30,
+ (byte) 0x7d, (byte) 0x30, (byte) 0x7b, (byte) 0x06, (byte) 0x06, (byte) 0x2a, (byte) 0x28, (byte) 0x00,
+ (byte) 0x11, (byte) 0x01, (byte) 0x03, (byte) 0x30, (byte) 0x71, (byte) 0x30, (byte) 0x35, (byte) 0x06,
+ (byte) 0x08, (byte) 0x2b, (byte) 0x06, (byte) 0x01, (byte) 0x05, (byte) 0x05, (byte) 0x07, (byte) 0x02,
+ (byte) 0x01, (byte) 0x16, (byte) 0x29, (byte) 0x68, (byte) 0x74, (byte) 0x74, (byte) 0x70, (byte) 0x3a,
+ (byte) 0x2f, (byte) 0x2f, (byte) 0x77, (byte) 0x77, (byte) 0x77, (byte) 0x2e, (byte) 0x61, (byte) 0x2d,
+ (byte) 0x74, (byte) 0x72, (byte) 0x75, (byte) 0x73, (byte) 0x74, (byte) 0x2e, (byte) 0x61, (byte) 0x74,
+ (byte) 0x2f, (byte) 0x64, (byte) 0x6f, (byte) 0x63, (byte) 0x73, (byte) 0x2f, (byte) 0x63, (byte) 0x70,
+ (byte) 0x2f, (byte) 0x61, (byte) 0x2d, (byte) 0x73, (byte) 0x69, (byte) 0x67, (byte) 0x6e, (byte) 0x2d,
+ (byte) 0x74, (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x30, (byte) 0x38, (byte) 0x06, (byte) 0x08,
+ (byte) 0x2b, (byte) 0x06, (byte) 0x01, (byte) 0x05, (byte) 0x05, (byte) 0x07, (byte) 0x02, (byte) 0x02,
+ (byte) 0x30, (byte) 0x2c, (byte) 0x1a, (byte) 0x2a, (byte) 0x44, (byte) 0x69, (byte) 0x65, (byte) 0x73,
+ (byte) 0x65, (byte) 0x73, (byte) 0x20, (byte) 0x5a, (byte) 0x65, (byte) 0x72, (byte) 0x74, (byte) 0x69,
+ (byte) 0x66, (byte) 0x69, (byte) 0x6b, (byte) 0x61, (byte) 0x74, (byte) 0x20, (byte) 0x64, (byte) 0x69,
+ (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x20, (byte) 0x6e, (byte) 0x75, (byte) 0x72, (byte) 0x20,
+ (byte) 0x7a, (byte) 0x75, (byte) 0x20, (byte) 0x54, (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x7a,
+ (byte) 0x77, (byte) 0x65, (byte) 0x63, (byte) 0x6b, (byte) 0x65, (byte) 0x6e, (byte) 0x30, (byte) 0x81,
+ (byte) 0x99, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x1f, (byte) 0x04, (byte) 0x81,
+ (byte) 0x91, (byte) 0x30, (byte) 0x81, (byte) 0x8e, (byte) 0x30, (byte) 0x81, (byte) 0x8b, (byte) 0xa0,
+ (byte) 0x81, (byte) 0x88, (byte) 0xa0, (byte) 0x81, (byte) 0x85, (byte) 0x86, (byte) 0x81, (byte) 0x82,
+ (byte) 0x6c, (byte) 0x64, (byte) 0x61, (byte) 0x70, (byte) 0x3a, (byte) 0x2f, (byte) 0x2f, (byte) 0x6c,
+ (byte) 0x64, (byte) 0x61, (byte) 0x70, (byte) 0x2d, (byte) 0x74, (byte) 0x65, (byte) 0x73, (byte) 0x74,
+ (byte) 0x2e, (byte) 0x61, (byte) 0x2d, (byte) 0x74, (byte) 0x72, (byte) 0x75, (byte) 0x73, (byte) 0x74,
+ (byte) 0x2e, (byte) 0x61, (byte) 0x74, (byte) 0x2f, (byte) 0x6f, (byte) 0x75, (byte) 0x3d, (byte) 0x61,
+ (byte) 0x2d, (byte) 0x73, (byte) 0x69, (byte) 0x67, (byte) 0x6e, (byte) 0x2d, (byte) 0x74, (byte) 0x6f,
+ (byte) 0x6b, (byte) 0x65, (byte) 0x6e, (byte) 0x2d, (byte) 0x30, (byte) 0x33, (byte) 0x2c, (byte) 0x6f,
+ (byte) 0x3d, (byte) 0x41, (byte) 0x2d, (byte) 0x54, (byte) 0x72, (byte) 0x75, (byte) 0x73, (byte) 0x74,
+ (byte) 0x2c, (byte) 0x63, (byte) 0x3d, (byte) 0x41, (byte) 0x54, (byte) 0x3f, (byte) 0x63, (byte) 0x65,
+ (byte) 0x72, (byte) 0x74, (byte) 0x69, (byte) 0x66, (byte) 0x69, (byte) 0x63, (byte) 0x61, (byte) 0x74,
+ (byte) 0x65, (byte) 0x72, (byte) 0x65, (byte) 0x76, (byte) 0x6f, (byte) 0x63, (byte) 0x61, (byte) 0x74,
+ (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x6c, (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x3f,
+ (byte) 0x62, (byte) 0x61, (byte) 0x73, (byte) 0x65, (byte) 0x3f, (byte) 0x6f, (byte) 0x62, (byte) 0x6a,
+ (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x63, (byte) 0x6c, (byte) 0x61, (byte) 0x73, (byte) 0x73,
+ (byte) 0x3d, (byte) 0x65, (byte) 0x69, (byte) 0x64, (byte) 0x43, (byte) 0x65, (byte) 0x72, (byte) 0x74,
+ (byte) 0x69, (byte) 0x66, (byte) 0x69, (byte) 0x63, (byte) 0x61, (byte) 0x74, (byte) 0x69, (byte) 0x6f,
+ (byte) 0x6e, (byte) 0x41, (byte) 0x75, (byte) 0x74, (byte) 0x68, (byte) 0x6f, (byte) 0x72, (byte) 0x69,
+ (byte) 0x74, (byte) 0x79, (byte) 0x30, (byte) 0x11, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d,
+ (byte) 0x0e, (byte) 0x04, (byte) 0x0a, (byte) 0x04, (byte) 0x08, (byte) 0x4a, (byte) 0x43, (byte) 0x51,
+ (byte) 0x30, (byte) 0x45, (byte) 0xfc, (byte) 0x2a, (byte) 0x00, (byte) 0x30, (byte) 0x0e, (byte) 0x06,
+ (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x0f, (byte) 0x01, (byte) 0x01, (byte) 0xff, (byte) 0x04,
+ (byte) 0x04, (byte) 0x03, (byte) 0x02, (byte) 0x04, (byte) 0xb0, (byte) 0x30, (byte) 0x09, (byte) 0x06,
+ (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x13, (byte) 0x04, (byte) 0x02, (byte) 0x30, (byte) 0x00,
+ (byte) 0x30, (byte) 0x0d, (byte) 0x06, (byte) 0x09, (byte) 0x2a, (byte) 0x86, (byte) 0x48, (byte) 0x86,
+ (byte) 0xf7, (byte) 0x0d, (byte) 0x01, (byte) 0x01, (byte) 0x05, (byte) 0x05, (byte) 0x00, (byte) 0x03,
+ (byte) 0x82, (byte) 0x01, (byte) 0x01, (byte) 0x00, (byte) 0x31, (byte) 0xdc, (byte) 0xf3, (byte) 0x43,
+ (byte) 0x79, (byte) 0xdd, (byte) 0xa9, (byte) 0x2a, (byte) 0xdc, (byte) 0x21, (byte) 0xf9, (byte) 0xd9,
+ (byte) 0x8f, (byte) 0x9a, (byte) 0x4e, (byte) 0x01, (byte) 0x40, (byte) 0x9a, (byte) 0xf1, (byte) 0x14,
+ (byte) 0x8d, (byte) 0x3a, (byte) 0x5e, (byte) 0x88, (byte) 0x36, (byte) 0x45, (byte) 0x1f, (byte) 0x16,
+ (byte) 0x3e, (byte) 0xeb, (byte) 0xa2, (byte) 0xef, (byte) 0xbf, (byte) 0x55, (byte) 0xbd, (byte) 0x5e,
+ (byte) 0x0e, (byte) 0x19, (byte) 0xc7, (byte) 0x0c, (byte) 0xbd, (byte) 0xed, (byte) 0xdf, (byte) 0xb8,
+ (byte) 0x75, (byte) 0x4e, (byte) 0x6a, (byte) 0x3a, (byte) 0x9a, (byte) 0x10, (byte) 0xfa, (byte) 0x49,
+ (byte) 0xc1, (byte) 0xd2, (byte) 0x35, (byte) 0xc5, (byte) 0x9a, (byte) 0xd7, (byte) 0xf4, (byte) 0xf0,
+ (byte) 0xcd, (byte) 0x13, (byte) 0xd1, (byte) 0x24, (byte) 0x06, (byte) 0xf8, (byte) 0x1f, (byte) 0xea,
+ (byte) 0xd6, (byte) 0x7a, (byte) 0xcb, (byte) 0x4f, (byte) 0xb5, (byte) 0x3e, (byte) 0x6c, (byte) 0xb2,
+ (byte) 0xfc, (byte) 0xe3, (byte) 0xaa, (byte) 0x2b, (byte) 0x20, (byte) 0x91, (byte) 0xf5, (byte) 0x5b,
+ (byte) 0xf1, (byte) 0x94, (byte) 0x0e, (byte) 0x06, (byte) 0x0a, (byte) 0xfd, (byte) 0x25, (byte) 0x71,
+ (byte) 0x11, (byte) 0xfc, (byte) 0x84, (byte) 0x46, (byte) 0xef, (byte) 0x5b, (byte) 0x0b, (byte) 0xa4,
+ (byte) 0x4a, (byte) 0x5d, (byte) 0x42, (byte) 0x99, (byte) 0xc8, (byte) 0x4e, (byte) 0x51, (byte) 0xd8,
+ (byte) 0x63, (byte) 0xd1, (byte) 0xbd, (byte) 0x00, (byte) 0xa3, (byte) 0xdd, (byte) 0x8f, (byte) 0x12,
+ (byte) 0x42, (byte) 0xbe, (byte) 0xca, (byte) 0x15, (byte) 0x37, (byte) 0x4c, (byte) 0xd2, (byte) 0xc9,
+ (byte) 0xa7, (byte) 0x37, (byte) 0xb2, (byte) 0x76, (byte) 0xb7, (byte) 0x34, (byte) 0x92, (byte) 0x98,
+ (byte) 0x60, (byte) 0xe7, (byte) 0x3d, (byte) 0x55, (byte) 0xa2, (byte) 0x6c, (byte) 0xb6, (byte) 0x66,
+ (byte) 0x67, (byte) 0xe1, (byte) 0xe4, (byte) 0x8f, (byte) 0xe3, (byte) 0xa5, (byte) 0xb8, (byte) 0xb5,
+ (byte) 0xc8, (byte) 0x8f, (byte) 0x9e, (byte) 0xe3, (byte) 0xf1, (byte) 0xaa, (byte) 0x8e, (byte) 0xe6,
+ (byte) 0xe2, (byte) 0x47, (byte) 0x49, (byte) 0x3d, (byte) 0xbe, (byte) 0x8c, (byte) 0xdd, (byte) 0xce,
+ (byte) 0x8d, (byte) 0x52, (byte) 0xac, (byte) 0xb9, (byte) 0x83, (byte) 0xe9, (byte) 0x9d, (byte) 0x98,
+ (byte) 0x7b, (byte) 0xda, (byte) 0x2b, (byte) 0xbc, (byte) 0x83, (byte) 0xcb, (byte) 0x74, (byte) 0x64,
+ (byte) 0x17, (byte) 0x4c, (byte) 0x33, (byte) 0xbb, (byte) 0x88, (byte) 0xc2, (byte) 0xdd, (byte) 0x08,
+ (byte) 0x69, (byte) 0xd8, (byte) 0xa2, (byte) 0xac, (byte) 0x95, (byte) 0x71, (byte) 0xd3, (byte) 0xf8,
+ (byte) 0xc9, (byte) 0xd1, (byte) 0xd6, (byte) 0x0e, (byte) 0xc3, (byte) 0x67, (byte) 0xa1, (byte) 0xdb,
+ (byte) 0xca, (byte) 0x58, (byte) 0xaa, (byte) 0x4b, (byte) 0xec, (byte) 0x37, (byte) 0x46, (byte) 0x73,
+ (byte) 0xc3, (byte) 0xa3, (byte) 0x7b, (byte) 0x1e, (byte) 0xdd, (byte) 0xf9, (byte) 0xb3, (byte) 0xbb,
+ (byte) 0xe0, (byte) 0x16, (byte) 0x39, (byte) 0xaf, (byte) 0xa0, (byte) 0x19, (byte) 0x9e, (byte) 0x89,
+ (byte) 0x37, (byte) 0x1e, (byte) 0x6e, (byte) 0x41, (byte) 0x59, (byte) 0xe1, (byte) 0x86, (byte) 0xea,
+ (byte) 0x0b, (byte) 0x39, (byte) 0x03, (byte) 0x89, (byte) 0xd2, (byte) 0xba, (byte) 0xd5, (byte) 0x0c,
+ (byte) 0x84, (byte) 0x09, (byte) 0xdd, (byte) 0xc7, (byte) 0x00, (byte) 0x2c, (byte) 0x2e, (byte) 0x1a,
+ (byte) 0x69, (byte) 0xeb, (byte) 0xdf, (byte) 0xb1
+ };
+
+
+ protected byte[] EF_C_X509_CH_AUT = new byte[2000];
+
+ protected byte[] dst;
+
+ public static final byte[] DST = new byte[] { (byte) 0x84, (byte) 0x03, (byte) 0x80, (byte) 0x02, (byte) 0x00, (byte) 0x89, (byte) 0x03, (byte) 0x13, (byte) 0x35, (byte) 0x10};
+ public static final byte[] DST_G3 = new byte[] { (byte) 0x84, (byte) 0x03, (byte) 0x80, (byte) 0x02, (byte) 0x00, (byte) 0x80, (byte) 0x01, (byte) 0x04 };
+
+ public STARCOSApplGewoehnlicheSignatur(STARCOSCardChannelEmul channel, byte[] dst) {
+ super(channel);
+ // Files
+ System.arraycopy(C_X509_CH_AUT, 0, EF_C_X509_CH_AUT, 0, C_X509_CH_AUT.length);
+ putFile(new File(FID_EF_C_X509_CH_AUT, EF_C_X509_CH_AUT, FCI_EF_C_X509_CH_AUT));
+ this.dst = dst;
+ }
+
+ @Override
+ public byte[] getAID() {
+ return AID_GewoehnlicheSignatur;
+ }
+
+ @Override
+ public byte[] getFID() {
+ return FID_GewoehnlicheSignatur;
+ }
+
+ @Override
+ public byte[] getFCI() {
+ return FCI;
+ }
+
+ public void clearCert() {
+ Arrays.fill(EF_C_X509_CH_AUT, (byte) 0x00);
+ }
+
+ @Override
+ public ResponseAPDU cmdMANAGE_SECURITY_ENVIRONMENT(CommandAPDU command, CardChannelEmul channel) throws CardException {
+
+ checkINS(command, 0x22);
+
+ switch (command.getP2()) {
+ case 0xA4:
+ switch (command.getP1()) {
+ case 0x41:
+ // INTERNAL AUTHENTICATE
+ case 0x81:
+ // EXTERNAL AUTHENTICATE
+ }
+ case 0xAA:
+ switch (command.getP1()) {
+ case 0x41:
+ if (Arrays.equals(new byte[] {(byte) 0x80, (byte) 0x01, (byte) 0x10}, command.getData())) {
+ return new ResponseAPDU(new byte[] {(byte) 0x90, (byte) 0x00});
+ }
+ default:
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x80});
+ }
+ case 0xB6:
+ switch (command.getP1()) {
+ case 0x41: {
+ // PSO - COMPUTE DIGITAL SIGNATURE
+ if (Arrays.equals(dst, command.getData())) {
+ securityEnv = command.getData();
+ return new ResponseAPDU(new byte[] {(byte) 0x90, (byte) 0x00});
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x80});
+ }
+ }
+ case 0x81:
+ // PSO - VERIFY DGITAL SIGNATURE
+ }
+ case 0xB8:
+ switch (command.getP1()) {
+ case 0x41:
+ // PSO � DECIPHER
+ case 0x81:
+ // PSO � ENCIPHER
+ }
+ default:
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x81});
+ }
+
+
+ }
+
+ @Override
+ public ResponseAPDU cmdPERFORM_SECURITY_OPERATION(CommandAPDU command, CardChannelEmul channel) throws CardException {
+
+ checkINS(command, 0x2A);
+
+ if (command.getP1() == 0x90 && command.getP2() == 0xA0) {
+
+ // HASH
+ byte[] data = command.getData();
+ if (data[0] == (byte) 0x90 && data[1] == (byte) 0x14) {
+ hash = Arrays.copyOfRange(data, 2, data.length);
+ return new ResponseAPDU(new byte[] {(byte) 0x90, (byte) 0x00});
+ } else {
+ throw new CardException("HASH command only supports complete hash.");
+ }
+
+ } else if (command.getP1() == 0x9E && command.getP2() == 0x9A) {
+
+ // COMPUTE DIGITAL SIGNATURE
+ if (securityEnv == null) {
+ // No security environment
+ return new ResponseAPDU(new byte[] {(byte) 0x6F, (byte) 0x05});
+ }
+ if (hash == null) {
+ // Command sequence not correct
+ return new ResponseAPDU(new byte[] {(byte) 0x6F, (byte) 0x03});
+ }
+ if (hash.length != 20) {
+ // Invalid hash length
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x80});
+ }
+ STARCOSCardChannelEmul c = (STARCOSCardChannelEmul) channel;
+ if (c.globalPins.get(STARCOSCardChannelEmul.KID_PIN_Glob).state != PIN.STATE_PIN_VERIFIED) {
+ // Security Status not satisfied
+ return new ResponseAPDU(new byte[] {(byte) 0x69, (byte) 0x82});
+ }
+
+ byte[] signature = new byte[48];
+
+ // TODO replace by signature creation
+ Random random = new Random();
+ random.nextBytes(signature);
+
+ byte[] response = new byte[signature.length + 2];
+ System.arraycopy(signature, 0, response, 0, signature.length);
+ response[signature.length] = (byte) 0x90;
+ response[signature.length + 1] = (byte) 0x00;
+
+ hash = null;
+
+ return new ResponseAPDU(response);
+
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x00});
+ }
+
+ }
+
+ @Override
+ public void setPin(int kid, char[] value) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSApplInfobox.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSApplInfobox.java
new file mode 100644
index 00000000..c470351a
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSApplInfobox.java
@@ -0,0 +1,165 @@
+/*
+* 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.smcc.starcos;
+
+import java.util.Arrays;
+
+import javax.smartcardio.CardException;
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import at.gv.egiz.smcc.CardChannelEmul;
+import at.gv.egiz.smcc.File;
+
+@SuppressWarnings("restriction")
+public class STARCOSApplInfobox extends STARCOSAppl {
+
+ public static final byte[] IDLINK = new byte[] {
+ (byte) 0x30, (byte) 0x82, (byte) 0x02, (byte) 0x11, (byte) 0x02, (byte) 0x01, (byte) 0x01, (byte) 0x0c,
+ (byte) 0x26, (byte) 0x68, (byte) 0x74, (byte) 0x74, (byte) 0x70, (byte) 0x3a, (byte) 0x2f, (byte) 0x2f,
+ (byte) 0x77, (byte) 0x77, (byte) 0x77, (byte) 0x2e, (byte) 0x61, (byte) 0x2d, (byte) 0x74, (byte) 0x72,
+ (byte) 0x75, (byte) 0x73, (byte) 0x74, (byte) 0x2e, (byte) 0x61, (byte) 0x74, (byte) 0x2f, (byte) 0x7a,
+ (byte) 0x6d, (byte) 0x72, (byte) 0x2f, (byte) 0x70, (byte) 0x65, (byte) 0x72, (byte) 0x73, (byte) 0x62,
+ (byte) 0x32, (byte) 0x30, (byte) 0x34, (byte) 0x2e, (byte) 0x78, (byte) 0x73, (byte) 0x6c, (byte) 0x0c,
+ (byte) 0x29, (byte) 0x73, (byte) 0x7a, (byte) 0x72, (byte) 0x2e, (byte) 0x62, (byte) 0x6d, (byte) 0x69,
+ (byte) 0x2e, (byte) 0x67, (byte) 0x76, (byte) 0x2e, (byte) 0x61, (byte) 0x74, (byte) 0x2d, (byte) 0x41,
+ (byte) 0x73, (byte) 0x73, (byte) 0x65, (byte) 0x72, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e,
+ (byte) 0x49, (byte) 0x44, (byte) 0x31, (byte) 0x32, (byte) 0x33, (byte) 0x36, (byte) 0x33, (byte) 0x35,
+ (byte) 0x36, (byte) 0x33, (byte) 0x36, (byte) 0x36, (byte) 0x37, (byte) 0x39, (byte) 0x39, (byte) 0x39,
+ (byte) 0x31, (byte) 0x39, (byte) 0x0c, (byte) 0x19, (byte) 0x32, (byte) 0x30, (byte) 0x30, (byte) 0x39,
+ (byte) 0x2d, (byte) 0x30, (byte) 0x33, (byte) 0x2d, (byte) 0x30, (byte) 0x36, (byte) 0x54, (byte) 0x31,
+ (byte) 0x36, (byte) 0x3a, (byte) 0x31, (byte) 0x39, (byte) 0x3a, (byte) 0x32, (byte) 0x36, (byte) 0x2b,
+ (byte) 0x30, (byte) 0x31, (byte) 0x3a, (byte) 0x30, (byte) 0x30, (byte) 0xa0, (byte) 0x42, (byte) 0x30,
+ (byte) 0x40, (byte) 0x0c, (byte) 0x18, (byte) 0x45, (byte) 0x68, (byte) 0x42, (byte) 0x53, (byte) 0x36,
+ (byte) 0x54, (byte) 0x6f, (byte) 0x31, (byte) 0x49, (byte) 0x6c, (byte) 0x54, (byte) 0x4b, (byte) 0x4f,
+ (byte) 0x4a, (byte) 0x45, (byte) 0x39, (byte) 0x75, (byte) 0x62, (byte) 0x74, (byte) 0x48, (byte) 0x69,
+ (byte) 0x51, (byte) 0x3d, (byte) 0x3d, (byte) 0x0c, (byte) 0x0a, (byte) 0x58, (byte) 0x58, (byte) 0x58,
+ (byte) 0xc5, (byte) 0x90, (byte) 0x7a, (byte) 0x67, (byte) 0xc3, (byte) 0xbc, (byte) 0x72, (byte) 0x0c,
+ (byte) 0x0c, (byte) 0x58, (byte) 0x58, (byte) 0x58, (byte) 0x54, (byte) 0xc3, (byte) 0xbc, (byte) 0x7a,
+ (byte) 0x65, (byte) 0x6b, (byte) 0xc3, (byte) 0xa7, (byte) 0x69, (byte) 0x0c, (byte) 0x0a, (byte) 0x31,
+ (byte) 0x39, (byte) 0x37, (byte) 0x33, (byte) 0x2d, (byte) 0x30, (byte) 0x36, (byte) 0x2d, (byte) 0x30,
+ (byte) 0x34, (byte) 0x30, (byte) 0x0a, (byte) 0xa0, (byte) 0x03, (byte) 0x02, (byte) 0x01, (byte) 0x00,
+ (byte) 0xa0, (byte) 0x03, (byte) 0x02, (byte) 0x01, (byte) 0x01, (byte) 0x03, (byte) 0x82, (byte) 0x01,
+ (byte) 0x01, (byte) 0x00, (byte) 0x9f, (byte) 0xa5, (byte) 0x68, (byte) 0xa9, (byte) 0x14, (byte) 0x4c,
+ (byte) 0xa4, (byte) 0x5d, (byte) 0x9d, (byte) 0x09, (byte) 0x99, (byte) 0x2e, (byte) 0xe7, (byte) 0x45,
+ (byte) 0x2e, (byte) 0x42, (byte) 0x49, (byte) 0x02, (byte) 0x16, (byte) 0xd9, (byte) 0xcb, (byte) 0x90,
+ (byte) 0x43, (byte) 0x27, (byte) 0x03, (byte) 0x43, (byte) 0x6d, (byte) 0xb4, (byte) 0x8c, (byte) 0xdc,
+ (byte) 0x1c, (byte) 0x77, (byte) 0xd4, (byte) 0x2e, (byte) 0xa1, (byte) 0x40, (byte) 0xe7, (byte) 0xe0,
+ (byte) 0x03, (byte) 0x60, (byte) 0x15, (byte) 0xf7, (byte) 0xdb, (byte) 0x03, (byte) 0x5e, (byte) 0xca,
+ (byte) 0xe4, (byte) 0x35, (byte) 0xba, (byte) 0x2b, (byte) 0xfd, (byte) 0xe6, (byte) 0xb8, (byte) 0xd8,
+ (byte) 0xb7, (byte) 0x2a, (byte) 0x80, (byte) 0xdd, (byte) 0x38, (byte) 0xe0, (byte) 0x8a, (byte) 0x69,
+ (byte) 0xad, (byte) 0x67, (byte) 0x60, (byte) 0x65, (byte) 0x42, (byte) 0xc9, (byte) 0x41, (byte) 0x60,
+ (byte) 0x94, (byte) 0xde, (byte) 0x84, (byte) 0x54, (byte) 0xad, (byte) 0xb3, (byte) 0xf4, (byte) 0xf7,
+ (byte) 0x44, (byte) 0xd5, (byte) 0xf3, (byte) 0xd3, (byte) 0xb6, (byte) 0x87, (byte) 0x8a, (byte) 0x22,
+ (byte) 0x38, (byte) 0x00, (byte) 0xcb, (byte) 0xa4, (byte) 0x4f, (byte) 0x96, (byte) 0xc2, (byte) 0x28,
+ (byte) 0xc2, (byte) 0x8d, (byte) 0x91, (byte) 0x95, (byte) 0xb4, (byte) 0xea, (byte) 0x00, (byte) 0x59,
+ (byte) 0x2e, (byte) 0xec, (byte) 0x78, (byte) 0xd8, (byte) 0x0f, (byte) 0x26, (byte) 0x04, (byte) 0xee,
+ (byte) 0xed, (byte) 0x13, (byte) 0xbf, (byte) 0x81, (byte) 0x68, (byte) 0x81, (byte) 0x43, (byte) 0xbe,
+ (byte) 0x15, (byte) 0x0e, (byte) 0xba, (byte) 0xf9, (byte) 0x6a, (byte) 0x18, (byte) 0xeb, (byte) 0x95,
+ (byte) 0xad, (byte) 0xb4, (byte) 0x0f, (byte) 0x3c, (byte) 0x94, (byte) 0x63, (byte) 0x32, (byte) 0x81,
+ (byte) 0x90, (byte) 0xcf, (byte) 0x3f, (byte) 0x95, (byte) 0xff, (byte) 0x8d, (byte) 0x86, (byte) 0xed,
+ (byte) 0xe4, (byte) 0x75, (byte) 0xd5, (byte) 0x09, (byte) 0x32, (byte) 0x17, (byte) 0x38, (byte) 0xb2,
+ (byte) 0x68, (byte) 0x35, (byte) 0x49, (byte) 0x8c, (byte) 0xa6, (byte) 0xd0, (byte) 0x3e, (byte) 0xde,
+ (byte) 0x6e, (byte) 0x47, (byte) 0x68, (byte) 0xbf, (byte) 0x98, (byte) 0x33, (byte) 0xae, (byte) 0x59,
+ (byte) 0x9f, (byte) 0xe0, (byte) 0x19, (byte) 0x9b, (byte) 0x5b, (byte) 0x1b, (byte) 0x8f, (byte) 0x74,
+ (byte) 0xd2, (byte) 0x9c, (byte) 0x01, (byte) 0x1a, (byte) 0xdf, (byte) 0xaf, (byte) 0xf8, (byte) 0x96,
+ (byte) 0x91, (byte) 0xcb, (byte) 0xf8, (byte) 0xbf, (byte) 0x06, (byte) 0xc7, (byte) 0xd5, (byte) 0x17,
+ (byte) 0x95, (byte) 0xef, (byte) 0xc5, (byte) 0x97, (byte) 0x37, (byte) 0x1b, (byte) 0xb0, (byte) 0xa1,
+ (byte) 0x4f, (byte) 0x9f, (byte) 0x01, (byte) 0x82, (byte) 0x90, (byte) 0x4a, (byte) 0x6a, (byte) 0x04,
+ (byte) 0xdb, (byte) 0x31, (byte) 0x1a, (byte) 0x58, (byte) 0xeb, (byte) 0xcd, (byte) 0x68, (byte) 0xe3,
+ (byte) 0x68, (byte) 0x0b, (byte) 0xa0, (byte) 0x11, (byte) 0x44, (byte) 0x08, (byte) 0xa0, (byte) 0x5c,
+ (byte) 0xfc, (byte) 0x61, (byte) 0x15, (byte) 0x1f, (byte) 0xbb, (byte) 0x22, (byte) 0x87, (byte) 0x18,
+ (byte) 0xa3, (byte) 0x07, (byte) 0x9b, (byte) 0x0d, (byte) 0x13, (byte) 0x7c, (byte) 0xff, (byte) 0x30,
+ (byte) 0xcf, (byte) 0xf3, (byte) 0xaf, (byte) 0xe4, (byte) 0x45, (byte) 0x05, (byte) 0xa0, (byte) 0x8e,
+ (byte) 0x6b, (byte) 0xef, (byte) 0x70, (byte) 0xf5, (byte) 0x4b, (byte) 0x68, (byte) 0x8f, (byte) 0x61,
+ (byte) 0xd6, (byte) 0xf5, (byte) 0xa0, (byte) 0x17, (byte) 0x03, (byte) 0x15, (byte) 0x00, (byte) 0x8e,
+ (byte) 0xa8, (byte) 0xdf, (byte) 0xa9, (byte) 0x77, (byte) 0xfd, (byte) 0x9b, (byte) 0x4b, (byte) 0x91,
+ (byte) 0x89, (byte) 0x34, (byte) 0x84, (byte) 0xf3, (byte) 0x24, (byte) 0xb2, (byte) 0x5a, (byte) 0x39,
+ (byte) 0xa9, (byte) 0xf2, (byte) 0x17, (byte) 0xa1, (byte) 0x17, (byte) 0x03, (byte) 0x15, (byte) 0x00,
+ (byte) 0xdb, (byte) 0xa2, (byte) 0xfd, (byte) 0xa4, (byte) 0xe7, (byte) 0x65, (byte) 0x2e, (byte) 0x7e,
+ (byte) 0xb0, (byte) 0xc8, (byte) 0xfa, (byte) 0x4d, (byte) 0x13, (byte) 0x28, (byte) 0xdf, (byte) 0xb1,
+ (byte) 0x58, (byte) 0x3b, (byte) 0x9e, (byte) 0x29, (byte) 0xa2, (byte) 0x17, (byte) 0x03, (byte) 0x15,
+ (byte) 0x00, (byte) 0x68, (byte) 0xa0, (byte) 0x17, (byte) 0x18, (byte) 0xb7, (byte) 0xb3, (byte) 0xc3,
+ (byte) 0x60, (byte) 0x77, (byte) 0x82, (byte) 0x8d, (byte) 0xf1, (byte) 0x5e, (byte) 0x10, (byte) 0xc3,
+ (byte) 0x2d, (byte) 0x78, (byte) 0x2c, (byte) 0x11, (byte) 0x0b
+ };
+
+ private static byte[] FCP = new byte[] { (byte) 0x6f, (byte) 0x14,
+ (byte) 0x84, (byte) 0x08, (byte) 0xd0, (byte) 0x40, (byte) 0x00,
+ (byte) 0x00, (byte) 0x17, (byte) 0x00, (byte) 0x18, (byte) 0x01,
+ (byte) 0xa5, (byte) 0x08, (byte) 0x53, (byte) 0x02, (byte) 0x01,
+ (byte) 0x11, (byte) 0x54, (byte) 0x02, (byte) 0x01, (byte) 0x00 };
+
+ protected static byte[] FID_EF_IdentityLink = new byte[] { (byte) 0xef, (byte) 0x01 };
+
+ protected static byte[] FCP_EF_IdentityLink = new byte[] { (byte) 0x62,
+ (byte) 0x16, (byte) 0x80, (byte) 0x02, (byte) 0x04, (byte) 0x00,
+ (byte) 0x82, (byte) 0x01, (byte) 0x01, (byte) 0x83, (byte) 0x02,
+ (byte) 0xef, (byte) 0x01, (byte) 0x88, (byte) 0x01, (byte) 0x08,
+ (byte) 0x8a, (byte) 0x01, (byte) 0x05, (byte) 0xa1, (byte) 0x03,
+ (byte) 0x8b, (byte) 0x01, (byte) 0x02 };
+
+ protected static byte[] EF_IdentityLink = new byte[1500];
+
+ public STARCOSApplInfobox(STARCOSCardChannelEmul channel) {
+ super(channel);
+ System.arraycopy(IDLINK, 0, EF_IdentityLink, 0, IDLINK.length);
+ putFile(new File(FID_EF_IdentityLink, EF_IdentityLink, FCP_EF_IdentityLink, 0x01));
+ }
+
+ @Override
+ public byte[] getAID() {
+ return AID_Infobox;
+ }
+
+ @Override
+ public byte[] getFID() {
+ return FID_Infobox;
+ }
+
+ @Override
+ public byte[] getFCI() {
+ return FCP;
+ }
+
+ public void clearInfobox() {
+ Arrays.fill(EF_IdentityLink, (byte) 0x00);
+ }
+
+ public void setInfoboxHeader(byte b) {
+ EF_IdentityLink[0] = b;
+ }
+
+ @Override
+ public ResponseAPDU cmdMANAGE_SECURITY_ENVIRONMENT(CommandAPDU command, CardChannelEmul channel)
+ throws CardException {
+ throw new CardException("Not supported.");
+ }
+
+ @Override
+ public ResponseAPDU cmdPERFORM_SECURITY_OPERATION(CommandAPDU command, CardChannelEmul channel)
+ throws CardException {
+ throw new CardException("Not supported.");
+ }
+
+ @Override
+ public void setPin(int kid, char[] value) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSApplSichereSignatur.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSApplSichereSignatur.java
new file mode 100644
index 00000000..4036ca41
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSApplSichereSignatur.java
@@ -0,0 +1,375 @@
+/*
+* 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.smcc.starcos;
+
+import java.io.UnsupportedEncodingException;
+import java.util.Arrays;
+import java.util.Random;
+
+import javax.smartcardio.CardException;
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import at.gv.egiz.smcc.CardChannelEmul;
+import at.gv.egiz.smcc.File;
+import at.gv.egiz.smcc.PIN;
+
+@SuppressWarnings("restriction")
+public class STARCOSApplSichereSignatur extends STARCOSAppl {
+
+ private static byte[] FCI = new byte[] { (byte) 0x6f, (byte) 0x16,
+ (byte) 0x84, (byte) 0x08, (byte) 0xd0, (byte) 0x40, (byte) 0x00,
+ (byte) 0x00, (byte) 0x17, (byte) 0x00, (byte) 0x12, (byte) 0x01,
+ (byte) 0xa5, (byte) 0x0a, (byte) 0x53, (byte) 0x02, (byte) 0x01,
+ (byte) 0x10, (byte) 0x54, (byte) 0x04, (byte) 0x01, (byte) 0x00,
+ (byte) 0x03, (byte) 0x00 };
+
+ protected static byte[] FID_EF_C_X509_CH_DS = new byte[] { (byte) 0xc0,
+ (byte) 0x00 };
+
+ protected static byte[] FCI_EF_C_X509_CH_DS = new byte[] { (byte) 0x62,
+ (byte) 0x16, (byte) 0x80, (byte) 0x02, (byte) 0x04, (byte) 0xef,
+ (byte) 0x82, (byte) 0x01, (byte) 0x01, (byte) 0x83, (byte) 0x02,
+ (byte) 0xc0, (byte) 0x00, (byte) 0x88, (byte) 0x01, (byte) 0x08,
+ (byte) 0x8a, (byte) 0x01, (byte) 0x05, (byte) 0xa1, (byte) 0x03,
+ (byte) 0x8b, (byte) 0x01, (byte) 0x0e };
+
+ protected static byte[] C_X509_CH_DS = new byte[] {
+ (byte) 0x30, (byte) 0x82, (byte) 0x04, (byte) 0xeb, (byte) 0x30, (byte) 0x82, (byte) 0x03, (byte) 0xd3,
+ (byte) 0xa0, (byte) 0x03, (byte) 0x02, (byte) 0x01, (byte) 0x02, (byte) 0x02, (byte) 0x03, (byte) 0x02,
+ (byte) 0x06, (byte) 0x5e, (byte) 0x30, (byte) 0x0d, (byte) 0x06, (byte) 0x09, (byte) 0x2a, (byte) 0x86,
+ (byte) 0x48, (byte) 0x86, (byte) 0xf7, (byte) 0x0d, (byte) 0x01, (byte) 0x01, (byte) 0x05, (byte) 0x05,
+ (byte) 0x00, (byte) 0x30, (byte) 0x81, (byte) 0xa1, (byte) 0x31, (byte) 0x0b, (byte) 0x30, (byte) 0x09,
+ (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x06, (byte) 0x13, (byte) 0x02, (byte) 0x41,
+ (byte) 0x54, (byte) 0x31, (byte) 0x48, (byte) 0x30, (byte) 0x46, (byte) 0x06, (byte) 0x03, (byte) 0x55,
+ (byte) 0x04, (byte) 0x0a, (byte) 0x0c, (byte) 0x3f, (byte) 0x41, (byte) 0x2d, (byte) 0x54, (byte) 0x72,
+ (byte) 0x75, (byte) 0x73, (byte) 0x74, (byte) 0x20, (byte) 0x47, (byte) 0x65, (byte) 0x73, (byte) 0x2e,
+ (byte) 0x20, (byte) 0x66, (byte) 0x2e, (byte) 0x20, (byte) 0x53, (byte) 0x69, (byte) 0x63, (byte) 0x68,
+ (byte) 0x65, (byte) 0x72, (byte) 0x68, (byte) 0x65, (byte) 0x69, (byte) 0x74, (byte) 0x73, (byte) 0x73,
+ (byte) 0x79, (byte) 0x73, (byte) 0x74, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x20, (byte) 0x69,
+ (byte) 0x6d, (byte) 0x20, (byte) 0x65, (byte) 0x6c, (byte) 0x65, (byte) 0x6b, (byte) 0x74, (byte) 0x72,
+ (byte) 0x2e, (byte) 0x20, (byte) 0x44, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x6e, (byte) 0x76,
+ (byte) 0x65, (byte) 0x72, (byte) 0x6b, (byte) 0x65, (byte) 0x68, (byte) 0x72, (byte) 0x20, (byte) 0x47,
+ (byte) 0x6d, (byte) 0x62, (byte) 0x48, (byte) 0x31, (byte) 0x23, (byte) 0x30, (byte) 0x21, (byte) 0x06,
+ (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x0b, (byte) 0x0c, (byte) 0x1a, (byte) 0x61, (byte) 0x2d,
+ (byte) 0x73, (byte) 0x69, (byte) 0x67, (byte) 0x6e, (byte) 0x2d, (byte) 0x50, (byte) 0x72, (byte) 0x65,
+ (byte) 0x6d, (byte) 0x69, (byte) 0x75, (byte) 0x6d, (byte) 0x2d, (byte) 0x54, (byte) 0x65, (byte) 0x73,
+ (byte) 0x74, (byte) 0x2d, (byte) 0x53, (byte) 0x69, (byte) 0x67, (byte) 0x2d, (byte) 0x30, (byte) 0x32,
+ (byte) 0x31, (byte) 0x23, (byte) 0x30, (byte) 0x21, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04,
+ (byte) 0x03, (byte) 0x0c, (byte) 0x1a, (byte) 0x61, (byte) 0x2d, (byte) 0x73, (byte) 0x69, (byte) 0x67,
+ (byte) 0x6e, (byte) 0x2d, (byte) 0x50, (byte) 0x72, (byte) 0x65, (byte) 0x6d, (byte) 0x69, (byte) 0x75,
+ (byte) 0x6d, (byte) 0x2d, (byte) 0x54, (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x2d, (byte) 0x53,
+ (byte) 0x69, (byte) 0x67, (byte) 0x2d, (byte) 0x30, (byte) 0x32, (byte) 0x30, (byte) 0x1e, (byte) 0x17,
+ (byte) 0x0d, (byte) 0x30, (byte) 0x39, (byte) 0x30, (byte) 0x33, (byte) 0x30, (byte) 0x36, (byte) 0x31,
+ (byte) 0x35, (byte) 0x32, (byte) 0x32, (byte) 0x33, (byte) 0x37, (byte) 0x5a, (byte) 0x17, (byte) 0x0d,
+ (byte) 0x31, (byte) 0x32, (byte) 0x30, (byte) 0x33, (byte) 0x30, (byte) 0x36, (byte) 0x31, (byte) 0x35,
+ (byte) 0x32, (byte) 0x32, (byte) 0x33, (byte) 0x37, (byte) 0x5a, (byte) 0x30, (byte) 0x72, (byte) 0x31,
+ (byte) 0x0b, (byte) 0x30, (byte) 0x09, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x06,
+ (byte) 0x13, (byte) 0x02, (byte) 0x41, (byte) 0x54, (byte) 0x31, (byte) 0x20, (byte) 0x30, (byte) 0x1e,
+ (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x03, (byte) 0x0c, (byte) 0x17, (byte) 0x58,
+ (byte) 0x58, (byte) 0x58, (byte) 0xc5, (byte) 0x90, (byte) 0x7a, (byte) 0x67, (byte) 0xc3, (byte) 0xbc,
+ (byte) 0x72, (byte) 0x20, (byte) 0x58, (byte) 0x58, (byte) 0x58, (byte) 0x54, (byte) 0xc3, (byte) 0xbc,
+ (byte) 0x7a, (byte) 0x65, (byte) 0x6b, (byte) 0xc3, (byte) 0xa7, (byte) 0x69, (byte) 0x31, (byte) 0x15,
+ (byte) 0x30, (byte) 0x13, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x04, (byte) 0x0c,
+ (byte) 0x0c, (byte) 0x58, (byte) 0x58, (byte) 0x58, (byte) 0x54, (byte) 0xc3, (byte) 0xbc, (byte) 0x7a,
+ (byte) 0x65, (byte) 0x6b, (byte) 0xc3, (byte) 0xa7, (byte) 0x69, (byte) 0x31, (byte) 0x13, (byte) 0x30,
+ (byte) 0x11, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x04, (byte) 0x2a, (byte) 0x0c, (byte) 0x0a,
+ (byte) 0x58, (byte) 0x58, (byte) 0x58, (byte) 0xc5, (byte) 0x90, (byte) 0x7a, (byte) 0x67, (byte) 0xc3,
+ (byte) 0xbc, (byte) 0x72, (byte) 0x31, (byte) 0x15, (byte) 0x30, (byte) 0x13, (byte) 0x06, (byte) 0x03,
+ (byte) 0x55, (byte) 0x04, (byte) 0x05, (byte) 0x13, (byte) 0x0c, (byte) 0x37, (byte) 0x30, (byte) 0x34,
+ (byte) 0x38, (byte) 0x37, (byte) 0x31, (byte) 0x30, (byte) 0x35, (byte) 0x30, (byte) 0x30, (byte) 0x30,
+ (byte) 0x38, (byte) 0x30, (byte) 0x49, (byte) 0x30, (byte) 0x13, (byte) 0x06, (byte) 0x07, (byte) 0x2a,
+ (byte) 0x86, (byte) 0x48, (byte) 0xce, (byte) 0x3d, (byte) 0x02, (byte) 0x01, (byte) 0x06, (byte) 0x08,
+ (byte) 0x2a, (byte) 0x86, (byte) 0x48, (byte) 0xce, (byte) 0x3d, (byte) 0x03, (byte) 0x01, (byte) 0x01,
+ (byte) 0x03, (byte) 0x32, (byte) 0x00, (byte) 0x04, (byte) 0xde, (byte) 0x75, (byte) 0x22, (byte) 0x4c,
+ (byte) 0xc4, (byte) 0xd4, (byte) 0x14, (byte) 0x16, (byte) 0x48, (byte) 0x4a, (byte) 0x65, (byte) 0x9d,
+ (byte) 0x5a, (byte) 0x39, (byte) 0x71, (byte) 0x11, (byte) 0x1c, (byte) 0x33, (byte) 0x7e, (byte) 0x7f,
+ (byte) 0xb4, (byte) 0x06, (byte) 0x33, (byte) 0x74, (byte) 0xe6, (byte) 0xf3, (byte) 0xc2, (byte) 0x56,
+ (byte) 0x46, (byte) 0x18, (byte) 0x39, (byte) 0xb9, (byte) 0xc4, (byte) 0x47, (byte) 0x84, (byte) 0xf5,
+ (byte) 0x46, (byte) 0x41, (byte) 0x60, (byte) 0x78, (byte) 0x81, (byte) 0x45, (byte) 0x4a, (byte) 0x0f,
+ (byte) 0x67, (byte) 0x77, (byte) 0x77, (byte) 0xb2, (byte) 0xa3, (byte) 0x82, (byte) 0x02, (byte) 0x33,
+ (byte) 0x30, (byte) 0x82, (byte) 0x02, (byte) 0x2f, (byte) 0x30, (byte) 0x13, (byte) 0x06, (byte) 0x03,
+ (byte) 0x55, (byte) 0x1d, (byte) 0x23, (byte) 0x04, (byte) 0x0c, (byte) 0x30, (byte) 0x0a, (byte) 0x80,
+ (byte) 0x08, (byte) 0x46, (byte) 0x06, (byte) 0x9f, (byte) 0x8e, (byte) 0x41, (byte) 0x8e, (byte) 0x15,
+ (byte) 0xbd, (byte) 0x30, (byte) 0x27, (byte) 0x06, (byte) 0x08, (byte) 0x2b, (byte) 0x06, (byte) 0x01,
+ (byte) 0x05, (byte) 0x05, (byte) 0x07, (byte) 0x01, (byte) 0x03, (byte) 0x01, (byte) 0x01, (byte) 0xff,
+ (byte) 0x04, (byte) 0x18, (byte) 0x30, (byte) 0x16, (byte) 0x30, (byte) 0x08, (byte) 0x06, (byte) 0x06,
+ (byte) 0x04, (byte) 0x00, (byte) 0x8e, (byte) 0x46, (byte) 0x01, (byte) 0x01, (byte) 0x30, (byte) 0x0a,
+ (byte) 0x06, (byte) 0x08, (byte) 0x2b, (byte) 0x06, (byte) 0x01, (byte) 0x05, (byte) 0x05, (byte) 0x07,
+ (byte) 0x0b, (byte) 0x01, (byte) 0x30, (byte) 0x81, (byte) 0x84, (byte) 0x06, (byte) 0x08, (byte) 0x2b,
+ (byte) 0x06, (byte) 0x01, (byte) 0x05, (byte) 0x05, (byte) 0x07, (byte) 0x01, (byte) 0x01, (byte) 0x04,
+ (byte) 0x78, (byte) 0x30, (byte) 0x76, (byte) 0x30, (byte) 0x2c, (byte) 0x06, (byte) 0x08, (byte) 0x2b,
+ (byte) 0x06, (byte) 0x01, (byte) 0x05, (byte) 0x05, (byte) 0x07, (byte) 0x30, (byte) 0x01, (byte) 0x86,
+ (byte) 0x20, (byte) 0x68, (byte) 0x74, (byte) 0x74, (byte) 0x70, (byte) 0x3a, (byte) 0x2f, (byte) 0x2f,
+ (byte) 0x6f, (byte) 0x63, (byte) 0x73, (byte) 0x70, (byte) 0x2d, (byte) 0x74, (byte) 0x65, (byte) 0x73,
+ (byte) 0x74, (byte) 0x2e, (byte) 0x61, (byte) 0x2d, (byte) 0x74, (byte) 0x72, (byte) 0x75, (byte) 0x73,
+ (byte) 0x74, (byte) 0x2e, (byte) 0x61, (byte) 0x74, (byte) 0x2f, (byte) 0x6f, (byte) 0x63, (byte) 0x73,
+ (byte) 0x70, (byte) 0x30, (byte) 0x46, (byte) 0x06, (byte) 0x08, (byte) 0x2b, (byte) 0x06, (byte) 0x01,
+ (byte) 0x05, (byte) 0x05, (byte) 0x07, (byte) 0x30, (byte) 0x02, (byte) 0x86, (byte) 0x3a, (byte) 0x68,
+ (byte) 0x74, (byte) 0x74, (byte) 0x70, (byte) 0x3a, (byte) 0x2f, (byte) 0x2f, (byte) 0x77, (byte) 0x77,
+ (byte) 0x77, (byte) 0x2e, (byte) 0x61, (byte) 0x2d, (byte) 0x74, (byte) 0x72, (byte) 0x75, (byte) 0x73,
+ (byte) 0x74, (byte) 0x2e, (byte) 0x61, (byte) 0x74, (byte) 0x2f, (byte) 0x63, (byte) 0x65, (byte) 0x72,
+ (byte) 0x74, (byte) 0x73, (byte) 0x2f, (byte) 0x61, (byte) 0x2d, (byte) 0x73, (byte) 0x69, (byte) 0x67,
+ (byte) 0x6e, (byte) 0x2d, (byte) 0x50, (byte) 0x72, (byte) 0x65, (byte) 0x6d, (byte) 0x69, (byte) 0x75,
+ (byte) 0x6d, (byte) 0x2d, (byte) 0x54, (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x2d, (byte) 0x53,
+ (byte) 0x69, (byte) 0x67, (byte) 0x2d, (byte) 0x30, (byte) 0x32, (byte) 0x2e, (byte) 0x63, (byte) 0x72,
+ (byte) 0x74, (byte) 0x30, (byte) 0x81, (byte) 0x92, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d,
+ (byte) 0x20, (byte) 0x04, (byte) 0x81, (byte) 0x8a, (byte) 0x30, (byte) 0x81, (byte) 0x87, (byte) 0x30,
+ (byte) 0x7b, (byte) 0x06, (byte) 0x06, (byte) 0x2a, (byte) 0x28, (byte) 0x00, (byte) 0x11, (byte) 0x01,
+ (byte) 0x03, (byte) 0x30, (byte) 0x71, (byte) 0x30, (byte) 0x35, (byte) 0x06, (byte) 0x08, (byte) 0x2b,
+ (byte) 0x06, (byte) 0x01, (byte) 0x05, (byte) 0x05, (byte) 0x07, (byte) 0x02, (byte) 0x01, (byte) 0x16,
+ (byte) 0x29, (byte) 0x68, (byte) 0x74, (byte) 0x74, (byte) 0x70, (byte) 0x3a, (byte) 0x2f, (byte) 0x2f,
+ (byte) 0x77, (byte) 0x77, (byte) 0x77, (byte) 0x2e, (byte) 0x61, (byte) 0x2d, (byte) 0x74, (byte) 0x72,
+ (byte) 0x75, (byte) 0x73, (byte) 0x74, (byte) 0x2e, (byte) 0x61, (byte) 0x74, (byte) 0x2f, (byte) 0x64,
+ (byte) 0x6f, (byte) 0x63, (byte) 0x73, (byte) 0x2f, (byte) 0x63, (byte) 0x70, (byte) 0x2f, (byte) 0x61,
+ (byte) 0x2d, (byte) 0x73, (byte) 0x69, (byte) 0x67, (byte) 0x6e, (byte) 0x2d, (byte) 0x74, (byte) 0x65,
+ (byte) 0x73, (byte) 0x74, (byte) 0x30, (byte) 0x38, (byte) 0x06, (byte) 0x08, (byte) 0x2b, (byte) 0x06,
+ (byte) 0x01, (byte) 0x05, (byte) 0x05, (byte) 0x07, (byte) 0x02, (byte) 0x02, (byte) 0x30, (byte) 0x2c,
+ (byte) 0x1a, (byte) 0x2a, (byte) 0x44, (byte) 0x69, (byte) 0x65, (byte) 0x73, (byte) 0x65, (byte) 0x73,
+ (byte) 0x20, (byte) 0x5a, (byte) 0x65, (byte) 0x72, (byte) 0x74, (byte) 0x69, (byte) 0x66, (byte) 0x69,
+ (byte) 0x6b, (byte) 0x61, (byte) 0x74, (byte) 0x20, (byte) 0x64, (byte) 0x69, (byte) 0x65, (byte) 0x6e,
+ (byte) 0x74, (byte) 0x20, (byte) 0x6e, (byte) 0x75, (byte) 0x72, (byte) 0x20, (byte) 0x7a, (byte) 0x75,
+ (byte) 0x20, (byte) 0x54, (byte) 0x65, (byte) 0x73, (byte) 0x74, (byte) 0x7a, (byte) 0x77, (byte) 0x65,
+ (byte) 0x63, (byte) 0x6b, (byte) 0x65, (byte) 0x6e, (byte) 0x30, (byte) 0x08, (byte) 0x06, (byte) 0x06,
+ (byte) 0x04, (byte) 0x00, (byte) 0x8b, (byte) 0x30, (byte) 0x01, (byte) 0x01, (byte) 0x30, (byte) 0x81,
+ (byte) 0xa4, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x1f, (byte) 0x04, (byte) 0x81,
+ (byte) 0x9c, (byte) 0x30, (byte) 0x81, (byte) 0x99, (byte) 0x30, (byte) 0x81, (byte) 0x96, (byte) 0xa0,
+ (byte) 0x81, (byte) 0x93, (byte) 0xa0, (byte) 0x81, (byte) 0x90, (byte) 0x86, (byte) 0x81, (byte) 0x8d,
+ (byte) 0x6c, (byte) 0x64, (byte) 0x61, (byte) 0x70, (byte) 0x3a, (byte) 0x2f, (byte) 0x2f, (byte) 0x6c,
+ (byte) 0x64, (byte) 0x61, (byte) 0x70, (byte) 0x2d, (byte) 0x74, (byte) 0x65, (byte) 0x73, (byte) 0x74,
+ (byte) 0x2e, (byte) 0x61, (byte) 0x2d, (byte) 0x74, (byte) 0x72, (byte) 0x75, (byte) 0x73, (byte) 0x74,
+ (byte) 0x2e, (byte) 0x61, (byte) 0x74, (byte) 0x2f, (byte) 0x6f, (byte) 0x75, (byte) 0x3d, (byte) 0x61,
+ (byte) 0x2d, (byte) 0x73, (byte) 0x69, (byte) 0x67, (byte) 0x6e, (byte) 0x2d, (byte) 0x50, (byte) 0x72,
+ (byte) 0x65, (byte) 0x6d, (byte) 0x69, (byte) 0x75, (byte) 0x6d, (byte) 0x2d, (byte) 0x54, (byte) 0x65,
+ (byte) 0x73, (byte) 0x74, (byte) 0x2d, (byte) 0x53, (byte) 0x69, (byte) 0x67, (byte) 0x2d, (byte) 0x30,
+ (byte) 0x32, (byte) 0x2c, (byte) 0x6f, (byte) 0x3d, (byte) 0x41, (byte) 0x2d, (byte) 0x54, (byte) 0x72,
+ (byte) 0x75, (byte) 0x73, (byte) 0x74, (byte) 0x2c, (byte) 0x63, (byte) 0x3d, (byte) 0x41, (byte) 0x54,
+ (byte) 0x3f, (byte) 0x63, (byte) 0x65, (byte) 0x72, (byte) 0x74, (byte) 0x69, (byte) 0x66, (byte) 0x69,
+ (byte) 0x63, (byte) 0x61, (byte) 0x74, (byte) 0x65, (byte) 0x72, (byte) 0x65, (byte) 0x76, (byte) 0x6f,
+ (byte) 0x63, (byte) 0x61, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x6c, (byte) 0x69,
+ (byte) 0x73, (byte) 0x74, (byte) 0x3f, (byte) 0x62, (byte) 0x61, (byte) 0x73, (byte) 0x65, (byte) 0x3f,
+ (byte) 0x6f, (byte) 0x62, (byte) 0x6a, (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x63, (byte) 0x6c,
+ (byte) 0x61, (byte) 0x73, (byte) 0x73, (byte) 0x3d, (byte) 0x65, (byte) 0x69, (byte) 0x64, (byte) 0x43,
+ (byte) 0x65, (byte) 0x72, (byte) 0x74, (byte) 0x69, (byte) 0x66, (byte) 0x69, (byte) 0x63, (byte) 0x61,
+ (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x41, (byte) 0x75, (byte) 0x74, (byte) 0x68,
+ (byte) 0x6f, (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x79, (byte) 0x30, (byte) 0x11, (byte) 0x06,
+ (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x0e, (byte) 0x04, (byte) 0x0a, (byte) 0x04, (byte) 0x08,
+ (byte) 0x47, (byte) 0x64, (byte) 0x6e, (byte) 0xbb, (byte) 0x92, (byte) 0xa0, (byte) 0xf6, (byte) 0xf4,
+ (byte) 0x30, (byte) 0x0e, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x0f, (byte) 0x01,
+ (byte) 0x01, (byte) 0xff, (byte) 0x04, (byte) 0x04, (byte) 0x03, (byte) 0x02, (byte) 0x06, (byte) 0xc0,
+ (byte) 0x30, (byte) 0x09, (byte) 0x06, (byte) 0x03, (byte) 0x55, (byte) 0x1d, (byte) 0x13, (byte) 0x04,
+ (byte) 0x02, (byte) 0x30, (byte) 0x00, (byte) 0x30, (byte) 0x0d, (byte) 0x06, (byte) 0x09, (byte) 0x2a,
+ (byte) 0x86, (byte) 0x48, (byte) 0x86, (byte) 0xf7, (byte) 0x0d, (byte) 0x01, (byte) 0x01, (byte) 0x05,
+ (byte) 0x05, (byte) 0x00, (byte) 0x03, (byte) 0x82, (byte) 0x01, (byte) 0x01, (byte) 0x00, (byte) 0x06,
+ (byte) 0x63, (byte) 0x76, (byte) 0x0a, (byte) 0xd5, (byte) 0x54, (byte) 0xfa, (byte) 0x51, (byte) 0x2a,
+ (byte) 0xb0, (byte) 0x41, (byte) 0xdc, (byte) 0xa4, (byte) 0x9b, (byte) 0x52, (byte) 0x1c, (byte) 0x0e,
+ (byte) 0x1d, (byte) 0x65, (byte) 0x46, (byte) 0x2b, (byte) 0xa3, (byte) 0xcd, (byte) 0xd4, (byte) 0x46,
+ (byte) 0x36, (byte) 0x40, (byte) 0xc3, (byte) 0x49, (byte) 0xe8, (byte) 0xa4, (byte) 0xdc, (byte) 0x01,
+ (byte) 0xde, (byte) 0x70, (byte) 0x97, (byte) 0x31, (byte) 0xb0, (byte) 0xcd, (byte) 0xdf, (byte) 0x69,
+ (byte) 0xf8, (byte) 0xc3, (byte) 0x83, (byte) 0xee, (byte) 0xc6, (byte) 0xed, (byte) 0xe3, (byte) 0x18,
+ (byte) 0x1a, (byte) 0x80, (byte) 0xc1, (byte) 0x30, (byte) 0xa9, (byte) 0xd6, (byte) 0xb1, (byte) 0xb8,
+ (byte) 0xa8, (byte) 0xe0, (byte) 0x3d, (byte) 0xb1, (byte) 0x8e, (byte) 0x2c, (byte) 0xc9, (byte) 0xa6,
+ (byte) 0x05, (byte) 0x6e, (byte) 0x4a, (byte) 0xd2, (byte) 0xb2, (byte) 0x03, (byte) 0xa4, (byte) 0x2b,
+ (byte) 0xa2, (byte) 0xad, (byte) 0xad, (byte) 0xe5, (byte) 0xba, (byte) 0x0d, (byte) 0x54, (byte) 0x8d,
+ (byte) 0x92, (byte) 0x51, (byte) 0xda, (byte) 0x58, (byte) 0xed, (byte) 0xd3, (byte) 0x8d, (byte) 0x61,
+ (byte) 0xa1, (byte) 0xfc, (byte) 0x49, (byte) 0xf6, (byte) 0x80, (byte) 0xdb, (byte) 0x65, (byte) 0x92,
+ (byte) 0xe0, (byte) 0xd5, (byte) 0x23, (byte) 0x69, (byte) 0x0f, (byte) 0x38, (byte) 0x11, (byte) 0x61,
+ (byte) 0x1e, (byte) 0xcd, (byte) 0xa2, (byte) 0x8e, (byte) 0x68, (byte) 0xec, (byte) 0x70, (byte) 0xfb,
+ (byte) 0x55, (byte) 0x95, (byte) 0xcb, (byte) 0xb4, (byte) 0x18, (byte) 0x6b, (byte) 0x3a, (byte) 0x25,
+ (byte) 0x4a, (byte) 0x3e, (byte) 0x07, (byte) 0xb0, (byte) 0x18, (byte) 0x26, (byte) 0x51, (byte) 0x39,
+ (byte) 0x46, (byte) 0xfa, (byte) 0xe2, (byte) 0xae, (byte) 0xe6, (byte) 0x1c, (byte) 0xd2, (byte) 0xcb,
+ (byte) 0x28, (byte) 0xa1, (byte) 0x8b, (byte) 0x56, (byte) 0xbb, (byte) 0xe9, (byte) 0x6c, (byte) 0xf7,
+ (byte) 0x0b, (byte) 0x84, (byte) 0xdd, (byte) 0x7f, (byte) 0x64, (byte) 0x8b, (byte) 0x43, (byte) 0x93,
+ (byte) 0x62, (byte) 0x39, (byte) 0xfb, (byte) 0x91, (byte) 0xfa, (byte) 0x3a, (byte) 0x57, (byte) 0x56,
+ (byte) 0x4a, (byte) 0xaa, (byte) 0x99, (byte) 0x1e, (byte) 0x9b, (byte) 0xcc, (byte) 0xa4, (byte) 0xc0,
+ (byte) 0x18, (byte) 0x46, (byte) 0xae, (byte) 0x15, (byte) 0x24, (byte) 0xf5, (byte) 0xf3, (byte) 0xe6,
+ (byte) 0x36, (byte) 0x55, (byte) 0x29, (byte) 0xa8, (byte) 0xa9, (byte) 0xaf, (byte) 0x7b, (byte) 0x44,
+ (byte) 0x19, (byte) 0xda, (byte) 0x66, (byte) 0x4d, (byte) 0x11, (byte) 0x89, (byte) 0x28, (byte) 0x34,
+ (byte) 0x01, (byte) 0x15, (byte) 0x24, (byte) 0x93, (byte) 0x43, (byte) 0x6a, (byte) 0x8f, (byte) 0xe4,
+ (byte) 0x54, (byte) 0x3a, (byte) 0x3d, (byte) 0x9b, (byte) 0x2f, (byte) 0xc3, (byte) 0xdb, (byte) 0x7e,
+ (byte) 0x5e, (byte) 0x12, (byte) 0x00, (byte) 0xaa, (byte) 0xe7, (byte) 0xc1, (byte) 0x82, (byte) 0x1c,
+ (byte) 0x1d, (byte) 0x1d, (byte) 0x23, (byte) 0x1d, (byte) 0xa3, (byte) 0xcc, (byte) 0x59, (byte) 0xe4,
+ (byte) 0x7a, (byte) 0xf0, (byte) 0x14, (byte) 0x17, (byte) 0xfb, (byte) 0x96, (byte) 0x90, (byte) 0xc1,
+ (byte) 0xc0, (byte) 0xde, (byte) 0xdb, (byte) 0x91, (byte) 0xfb, (byte) 0x49, (byte) 0x39, (byte) 0x70,
+ (byte) 0x76, (byte) 0x2f, (byte) 0x7b, (byte) 0x22, (byte) 0xcd, (byte) 0x35, (byte) 0xcb, (byte) 0xed,
+ (byte) 0x8f, (byte) 0xb3, (byte) 0x66, (byte) 0xae, (byte) 0x95, (byte) 0x49, (byte) 0x75
+ };
+
+ protected static final int KID_PIN_SS = 0x81;
+
+ protected byte[] EF_C_X509_CH_DS = new byte[2000];
+
+ public STARCOSApplSichereSignatur(STARCOSCardChannelEmul channel, byte[] SS_pin, int pinState) {
+ super(channel);
+ // Files
+ System.arraycopy(C_X509_CH_DS, 0, EF_C_X509_CH_DS, 0, C_X509_CH_DS.length);
+ putFile(new File(FID_EF_C_X509_CH_DS, EF_C_X509_CH_DS, FCI_EF_C_X509_CH_DS));
+
+ // PINs
+ pins.put(KID_PIN_SS, new PIN(SS_pin, KID_PIN_SS, 3, pinState));
+ }
+
+ @Override
+ public byte[] getAID() {
+ return AID_SichereSignatur;
+ }
+
+ @Override
+ public byte[] getFID() {
+ return FID_SichereSignatur;
+ }
+
+ @Override
+ public byte[] getFCI() {
+ return FCI;
+ }
+
+ @Override
+ public ResponseAPDU cmdPERFORM_SECURITY_OPERATION(CommandAPDU command, CardChannelEmul channel) throws CardException {
+
+ checkINS(command, 0x2A);
+
+ if (command.getP1() == 0x90 && command.getP2() == 0xA0) {
+
+ // HASH
+ byte[] data = command.getData();
+ if (data[0] == (byte) 0x90 && data[1] == (byte) 0x14) {
+ hash = Arrays.copyOfRange(data, 2, data.length);
+ return new ResponseAPDU(new byte[] {(byte) 0x90, (byte) 0x00});
+ } else {
+ throw new CardException("HASH command only supports complete hash.");
+ }
+
+ } else if (command.getP1() == 0x9E && command.getP2() == 0x9A) {
+
+ // COMPUTE DIGITAL SIGNATURE
+ if (securityEnv == null) {
+ // No security environment
+ return new ResponseAPDU(new byte[] {(byte) 0x6F, (byte) 0x05});
+ }
+ if (hash == null) {
+ // Command sequence not correct
+ return new ResponseAPDU(new byte[] {(byte) 0x6F, (byte) 0x03});
+ }
+ if (hash.length != 20) {
+ // Invalid hash length
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x80});
+ }
+ if (pins.get(KID_PIN_SS).state != PIN.STATE_PIN_VERIFIED) {
+ // Security Status not satisfied
+ return new ResponseAPDU(new byte[] {(byte) 0x69, (byte) 0x82});
+ }
+
+ byte[] signature = new byte[48];
+
+ // TODO replace by signature creation
+ Random random = new Random();
+ random.nextBytes(signature);
+
+ byte[] response = new byte[signature.length + 2];
+ System.arraycopy(signature, 0, response, 0, signature.length);
+ response[signature.length] = (byte) 0x90;
+ response[signature.length + 1] = (byte) 0x00;
+
+ hash = null;
+ pins.get(KID_PIN_SS).state = PIN.STATE_RESET;
+
+ return new ResponseAPDU(response);
+
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x00});
+ }
+
+ }
+
+ public void clearCert() {
+ Arrays.fill(EF_C_X509_CH_DS, (byte) 0x00);
+ }
+
+ @Override
+ public ResponseAPDU cmdMANAGE_SECURITY_ENVIRONMENT(CommandAPDU command, CardChannelEmul channel) throws CardException {
+
+ checkINS(command, 0x22);
+
+ switch (command.getP2()) {
+ case 0xA4:
+ switch (command.getP1()) {
+ case 0x41:
+ // INTERNAL AUTHENTICATE
+ case 0x81:
+ // EXTERNAL AUTHENTICATE
+ }
+ case 0xB6:
+ switch (command.getP1()) {
+ case 0x41: {
+ // PSO - COMPUTE DIGITAL SIGNATURE
+ byte[] dst = new byte[] { (byte) 0x84, (byte) 0x03, (byte) 0x80,
+ (byte) 0x02, (byte) 0x00, (byte) 0x89, (byte) 0x03, (byte) 0x13, (byte) 0x35, (byte) 0x10};
+ if (Arrays.equals(dst, command.getData())) {
+ securityEnv = command.getData();
+ return new ResponseAPDU(new byte[] {(byte) 0x90, (byte) 0x00});
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x80});
+ }
+ }
+ case 0x81:
+ // PSO - VERIFY DGITAL SIGNATURE
+ }
+ case 0xB8:
+ switch (command.getP1()) {
+ case 0x41:
+ // PSO � DECIPHER
+ case 0x81:
+ // PSO � ENCIPHER
+ }
+ default:
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x81});
+ }
+
+ }
+
+ /**
+ * set and activate pin
+ * @param value if null, pin will be set to NOTACTIVE
+ */
+ @Override
+ public void setPin(int kid, char[] value) {
+ PIN pin = pins.get(kid);
+ if (pin != null) {
+ if (value == null) {
+// pin.pin = null;
+ //TransportPIN
+// pin.pin = new byte[] { (byte) 0x26, (byte) 0x12, (byte) 0x34, (byte) 0x56, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff};
+ pin.state = PIN.STATE_PIN_NOTACTIVE;
+ } else {
+ byte[] b = new byte[8];
+ b[0] = (byte) (0x20 | value.length);
+ for(int i = 1, j = 0; i < b.length; i++) {
+ int h = ((j < value.length)
+ ? Character.digit(value[j++], 10)
+ : 0x0F);
+ int l = ((j < value.length)
+ ? Character.digit(value[j++], 10)
+ : 0x0F);
+ b[i] = (byte) ((h << 4) | l);
+ }
+ pin.pin = b;
+ pin.state = PIN.STATE_RESET;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSCardChannelEmul.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSCardChannelEmul.java
new file mode 100644
index 00000000..2e0c54eb
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSCardChannelEmul.java
@@ -0,0 +1,434 @@
+/*
+* 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.smcc.starcos;
+
+import java.util.Arrays;
+import java.util.HashMap;
+
+import javax.smartcardio.Card;
+import javax.smartcardio.CardException;
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import at.gv.egiz.smcc.AbstractAppl;
+import at.gv.egiz.smcc.CardChannelEmul;
+import at.gv.egiz.smcc.CardEmul;
+import at.gv.egiz.smcc.File;
+import at.gv.egiz.smcc.PIN;
+import java.util.ArrayList;
+import java.util.List;
+
+@SuppressWarnings("restriction")
+public class STARCOSCardChannelEmul extends CardChannelEmul {
+
+ public static final int KID_PIN_Glob = 0x01;
+
+ /**
+ *
+ */
+ protected CardEmul cardEmul;
+
+ public final List<File> globalFiles = new ArrayList<File>();
+ public final HashMap<Integer, PIN> globalPins = new HashMap<Integer, PIN>();
+
+ public STARCOSCardChannelEmul(CardEmul cardEmul, byte[] Glob_PIN, int PIN_STATE) {
+ this.cardEmul = cardEmul;
+ globalPins.put(KID_PIN_Glob, new PIN(Glob_PIN, KID_PIN_Glob, 10, PIN_STATE));
+ }
+
+ @Override
+ public Card getCard() {
+ return cardEmul;
+ }
+
+ protected ResponseAPDU cmdSELECT(CommandAPDU command) throws CardException {
+
+ byte[] fid = command.getData();
+
+ switch (command.getP1()) {
+ case 0x00: // MF
+ if (fid.length !=0) {
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x80});
+ } else {
+ currentFile = null;
+ currentAppl = null;
+ return new ResponseAPDU(new byte[] {(byte) 0x90, (byte) 0x00});
+ }
+
+ case 0x01: // Lower-level DF
+ throw new CardException("Not supported.");
+
+ case 0x02: // EF in current DF
+ if (currentAppl != null) {
+ if (command.getP2() != 0x04) {
+ throw new CardException("Not supported.");
+ }
+ for (File file : currentAppl.getFiles()) {
+ if (Arrays.equals(fid, file.fid)) {
+ currentFile = file;
+ byte[] response = new byte[file.fcx.length + 2];
+ System.arraycopy(file.fcx, 0, response, 0, file.fcx.length);
+ response[file.fcx.length] = (byte) 0x90;
+ response[file.fcx.length + 1] = (byte) 0x00;
+ return new ResponseAPDU(response);
+ }
+ }
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x82});
+ } else if (globalFiles != null) {
+ if (command.getP2() != 0x04) {
+ throw new CardException("Not supported.");
+ }
+ for (File file : globalFiles) {
+ if (Arrays.equals(fid, file.fid)) {
+ currentFile = file;
+ byte[] response = new byte[file.fcx.length + 2];
+ System.arraycopy(file.fcx, 0, response, 0, file.fcx.length);
+ response[file.fcx.length] = (byte) 0x90;
+ response[file.fcx.length + 1] = (byte) 0x00;
+ return new ResponseAPDU(response);
+ }
+ }
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x82});
+ } else {
+ throw new CardException("Not supported.");
+ }
+
+ case 0x03: // Higher-level DF
+ throw new CardException("Not supported.");
+
+ case 0x04: // Selection by DF name
+ AbstractAppl appl = cardEmul.getApplication(fid);
+ if (appl != null) {
+ if (command.getP2() != 0x00) {
+ throw new CardException("Not supported.");
+ }
+ if (currentAppl != null && currentAppl != appl) {
+ currentAppl.leaveApplContext();
+ currentFile = null;
+ }
+ currentAppl = appl;
+
+ byte[] fci = currentAppl.getFCI();
+ byte[] response = new byte[fci.length + 2];
+ System.arraycopy(fci, 0, response, 0, fci.length);
+ response[fci.length] = (byte) 0x90;
+ response[fci.length + 1] = (byte) 0x00;
+ return new ResponseAPDU(response);
+ }
+
+ default:
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x86});
+ }
+
+ }
+
+ protected ResponseAPDU cmdREAD_RECORD(CommandAPDU command) throws CardException {
+ if (command.getINS() != 0xB2) {
+ throw new IllegalArgumentException("INS has to be 0xB2");
+ }
+ if (currentFile == null) {
+ return new ResponseAPDU(new byte[]{ (byte) 0x69, (byte) 0x86 });
+ }
+ if (command.getP1() != 0x01 || command.getP2() != 0x04) {
+ throw new CardException("Not implemented.");
+ }
+ byte[] response = new byte[currentFile.file.length + 2];
+ System.arraycopy(currentFile.file, 0, response, 0, currentFile.file.length);
+ response[currentFile.file.length] = (byte) 0x90;
+ response[currentFile.file.length + 1] = (byte) 0x00;
+ return new ResponseAPDU(response);
+ }
+
+ protected ResponseAPDU cmdREAD_BINARY(CommandAPDU command) throws CardException {
+
+ if (command.getINS() != 0xB0) {
+ throw new IllegalArgumentException("INS has to be 0xB0.");
+ }
+
+ if (currentFile == null) {
+ return new ResponseAPDU(new byte[] {(byte) 0x69, (byte) 0x86});
+ }
+
+ if ((command.getP1() & 0x80) > 0) {
+ throw new CardException("Not implemented.");
+ }
+
+ int offset = command.getP2() + (command.getP1() << 8);
+ if (offset > currentFile.file.length) {
+ // Wrong length
+ return new ResponseAPDU(new byte[] {(byte) 0x67, (byte) 0x00});
+ }
+
+ if (command.getNe() == 0) {
+ throw new CardException("Not implemented.");
+ }
+
+ if (currentFile.kid != -1) {
+ PIN pin;
+ if ((currentFile.kid & 0x80) > 0) {
+ if (currentAppl == null
+ || (pin = currentAppl.pins.get(currentFile.kid)) == null
+ || pin.state != PIN.STATE_PIN_VERIFIED) {
+ return new ResponseAPDU(new byte[] {(byte) 0x69, (byte) 0x82});
+ }
+ } else {
+ if ((pin = globalPins.get(currentFile.kid)) == null
+ || pin.state != PIN.STATE_PIN_VERIFIED) {
+ return new ResponseAPDU(new byte[] {(byte) 0x69, (byte) 0x82});
+ }
+ }
+ }
+
+ if (command.getNe() == 256 || command.getNe() <= currentFile.file.length - offset) {
+ int len = Math.min(command.getNe(), currentFile.file.length - offset);
+ byte[] response = new byte[len + 2];
+ System.arraycopy(currentFile.file, offset, response, 0, len);
+ response[len] = (byte) 0x90;
+ response[len + 1] = (byte) 0x00;
+ return new ResponseAPDU(response);
+ } else if (command.getNe() >= currentFile.file.length - offset) {
+ return new ResponseAPDU(new byte[] {(byte) 0x62, (byte) 0x82});
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x67, (byte) 0x00});
+ }
+
+ }
+
+
+ @Override
+ public ResponseAPDU transmit(CommandAPDU command) throws CardException {
+
+ if (command.getCLA() == 0x00) {
+
+ switch (command.getINS()) {
+
+ // SELECT
+ case 0xA4:
+ return cmdSELECT(command);
+
+ // READ BINARY
+ case 0xB0:
+ return cmdREAD_BINARY(command);
+
+ // READ RECORD
+ case 0xB2:
+ return cmdREAD_RECORD(command);
+
+ // VERIFY
+ case 0x20:
+ return cmdVERIFY(command);
+
+ // MANAGE SECURITY ENVIRONMENT
+ case 0x22: {
+ if (currentAppl != null) {
+ return currentAppl.cmdMANAGE_SECURITY_ENVIRONMENT(command, this);
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6F, (byte) 0x05});
+ }
+ }
+
+ // CHANGE REFERENCE DATA
+ case 0x24: {
+ return cmdCHANGE_REFERENCE_DATA(command);
+ }
+
+ // PERFORM SECURITY OPERATION
+ case 0x2A: {
+ if (currentAppl != null) {
+ return currentAppl.cmdPERFORM_SECURITY_OPERATION(command, this);
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6F, (byte) 0x05});
+ }
+ }
+
+ // INTERNAL AUTHENTICATE
+ case 0x88: {
+ if (currentAppl != null) {
+ return currentAppl.cmdINTERNAL_AUTHENTICATE(command, this);
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6F, (byte) 0x05});
+ }
+ }
+
+ default:
+ return new ResponseAPDU(new byte[] { (byte) 0x6D, (byte) 0x00});
+ }
+
+ } else {
+ return new ResponseAPDU(new byte[] { (byte) 0x6E, (byte) 0x00});
+ }
+
+ }
+
+ protected ResponseAPDU verifyPin(int kid, byte[] reference) {
+
+ PIN pin;
+ if ((kid & 0x80) > 0 && currentAppl != null) {
+ pin = currentAppl.pins.get(kid);
+ } else {
+ pin = globalPins.get(kid);
+ }
+
+ if (pin != null) {
+
+ if (reference == null || reference.length == 0) {
+ if (pin.state == PIN.STATE_PIN_NOTACTIVE) {
+ return new ResponseAPDU(new byte[] { (byte) 0x69, (byte) 0x84 });
+ } else if (pin.state == PIN.STATE_PIN_BLOCKED) {
+ return new ResponseAPDU(new byte[] { (byte) 0x63, (byte) 0xc0 });
+ } else {
+ return new ResponseAPDU(new byte[] { (byte) 0x63, (byte) (pin.kfpc | 0xC0)});
+ }
+ }
+
+ if (reference.length != 8) {
+ return new ResponseAPDU(new byte[] {(byte) 0x67, (byte) 0x00});
+ }
+
+ if (Arrays.equals(reference, pin.pin)) {
+ switch (pin.state) {
+ case PIN.STATE_PIN_BLOCKED:
+ return new ResponseAPDU(new byte[] { (byte) 0x69, (byte) 0x83 });
+
+ case PIN.STATE_RESET:
+ pin.state = PIN.STATE_PIN_VERIFIED;
+
+ default:
+ pin.kfpc = 10;
+ return new ResponseAPDU(new byte[] { (byte) 0x90, (byte) 0x00 });
+ }
+ } else {
+ switch (pin.state) {
+ case PIN.STATE_PIN_BLOCKED:
+ return new ResponseAPDU(new byte[] { (byte) 0x69, (byte) 0x83 });
+
+ default:
+ if (--pin.kfpc > 0) {
+ return new ResponseAPDU(new byte[] { (byte) 0x63, (byte) (pin.kfpc | 0xC0)});
+ } else {
+ pin.state = PIN.STATE_PIN_BLOCKED;
+ return new ResponseAPDU(new byte[] { (byte) 0x69, (byte) 0x83 });
+ }
+ }
+
+ }
+
+ } else {
+ return new ResponseAPDU(new byte[] {(byte) 0x6A, (byte) 0x00});
+ }
+
+ }
+
+ protected ResponseAPDU cmdVERIFY(CommandAPDU command) throws CardException {
+
+ if (command.getINS() != 0x20) {
+ throw new IllegalArgumentException("INS has to be 0x20.");
+ }
+
+ if (command.getP1() != 00) {
+ return new ResponseAPDU(new byte[] {(byte) 0x6B, (byte) 0x00});
+ }
+
+ return verifyPin(command.getP2(), command.getData());
+
+ }
+
+ protected ResponseAPDU cmdCHANGE_REFERENCE_DATA(CommandAPDU command) {
+
+ if (command.getINS() != 0x24) {
+ throw new IllegalArgumentException("INS has to be 0x24.");
+ }
+
+ byte[] data = command.getData();
+
+ ResponseAPDU response;
+
+ if (command.getP1() == 0x01) {
+
+ if (data.length != 8) {
+ return new ResponseAPDU(new byte[] {(byte) 0x67, (byte) 0x00});
+ }
+
+ PIN pin;
+ if (currentAppl != null) {
+ pin = currentAppl.pins.get(command.getP2());
+ } else {
+ pin = globalPins.get(command.getP2());
+ }
+ if (pin.state == PIN.STATE_PIN_NOTACTIVE) {
+ pin.pin = data;
+ pin.state = PIN.STATE_RESET;
+ response = new ResponseAPDU(new byte[] { (byte) 0x90, (byte) 0x00 });
+ } else {
+ // P1 == 0x01 not allowed on active pin (?)
+ response = new ResponseAPDU(new byte[] { (byte) 0x6A, (byte) 0x86});
+ }
+
+ } else if (command.getP1() == 0x00) {
+
+ if (data.length != 16) {
+ return new ResponseAPDU(new byte[] {(byte) 0x67, (byte) 0x00});
+ }
+
+ response = verifyPin(0xFF & command.getP2(), Arrays.copyOf(data, 8));
+
+ if (response.getSW() == 0x9000) {
+ PIN pin;
+ if (currentAppl != null) {
+ pin = currentAppl.pins.get(command.getP2());
+ } else {
+ pin = globalPins.get(command.getP2());
+ }
+ pin.pin = Arrays.copyOfRange(data, 8, 16);
+ pin.state = PIN.STATE_PIN_VERIFIED;
+ }
+
+ } else {
+ return new ResponseAPDU(new byte[] { (byte) 0x6A, (byte) 0x81 });
+ }
+
+ return response;
+
+ }
+
+ public void setPin(int kid, char[] value) {
+ PIN pin = globalPins.get(kid);
+ if (pin != null) {
+ if (value == null) {
+// pin.pin = null;
+ //TransportPIN
+// pin.pin = new byte[] { (byte) 0x24, (byte) 0x12, (byte) 0x34, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff};
+ pin.state = PIN.STATE_PIN_NOTACTIVE;
+ } else {
+ byte[] b = new byte[8];
+ b[0] = (byte) (0x20 | value.length);
+ for(int i = 1, j = 0; i < b.length; i++) {
+ int h = ((j < value.length)
+ ? Character.digit(value[j++], 10)
+ : 0x0F);
+ int l = ((j < value.length)
+ ? Character.digit(value[j++], 10)
+ : 0x0F);
+ b[i] = (byte) ((h << 4) | l);
+ }
+ pin.pin = b;
+ }
+ }
+ }
+
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSCardEmul.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSCardEmul.java
new file mode 100644
index 00000000..5963fb63
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSCardEmul.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.smcc.starcos;
+
+
+import javax.smartcardio.ATR;
+
+import at.gv.egiz.smcc.CardChannelEmul;
+import at.gv.egiz.smcc.CardEmul;
+import at.gv.egiz.smcc.PIN;
+
+@SuppressWarnings("restriction")
+public class STARCOSCardEmul extends CardEmul {
+
+ public static byte[] DEFAULT_SS_PIN = new byte[] { (byte) 0x26, (byte) 0x12, (byte) 0x34, (byte) 0x56, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff};
+ public static byte[] DEFAULT_Glob_PIN = new byte[] { (byte) 0x24, (byte) 0x00, (byte) 0x00, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff};
+
+ protected static ATR ATR = new ATR(new byte[] {
+ (byte) 0x3b, (byte) 0xbd, (byte) 0x18, (byte) 0x00, (byte) 0x81, (byte) 0x31, (byte) 0xfe, (byte) 0x45,
+ (byte) 0x80, (byte) 0x51, (byte) 0x02, (byte) 0x67, (byte) 0x05, (byte) 0x18, (byte) 0xb1, (byte) 0x02,
+ (byte) 0x02, (byte) 0x02, (byte) 0x01, (byte) 0x81, (byte) 0x05, (byte) 0x31
+ });
+
+ public STARCOSCardEmul() {
+ this(DEFAULT_SS_PIN, DEFAULT_Glob_PIN, PIN.STATE_RESET);
+ }
+
+ public STARCOSCardEmul(byte[] SS_PIN, byte[] Glob_PIN, int PIN_STATE) {
+ channel = new STARCOSCardChannelEmul(this, Glob_PIN, PIN_STATE);
+ applications.add(new STARCOSApplSichereSignatur((STARCOSCardChannelEmul) channel, SS_PIN, PIN_STATE));
+ applications.add(new STARCOSApplInfobox((STARCOSCardChannelEmul) channel));
+ applications.add(new STARCOSApplGewoehnlicheSignatur((STARCOSCardChannelEmul) channel,
+ STARCOSApplGewoehnlicheSignatur.DST));
+ }
+
+ @Override
+ public ATR getATR() {
+ return ATR;
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSCardTest.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSCardTest.java
new file mode 100644
index 00000000..154884d4
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSCardTest.java
@@ -0,0 +1,346 @@
+/*
+* 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.smcc.starcos;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
+import java.util.Arrays;
+
+
+import org.junit.Test;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.CardEmul;
+import at.gv.egiz.smcc.CardNotSupportedException;
+import at.gv.egiz.smcc.CardTerminalEmul;
+import at.gv.egiz.smcc.CardTest;
+import at.gv.egiz.smcc.pin.gui.ChangePINProvider;
+import at.gv.egiz.smcc.pin.gui.InvalidChangePINProvider;
+import at.gv.egiz.smcc.pin.gui.InvalidPINProvider;
+import at.gv.egiz.smcc.LockedException;
+import at.gv.egiz.smcc.NotActivatedException;
+import at.gv.egiz.smcc.PIN;
+import at.gv.egiz.smcc.PINFormatException;
+import at.gv.egiz.smcc.PINMgmtSignatureCard;
+import at.gv.egiz.smcc.PINSpec;
+import at.gv.egiz.smcc.SignatureCard;
+import at.gv.egiz.smcc.SignatureCardException;
+import at.gv.egiz.smcc.SignatureCardFactory;
+import at.gv.egiz.smcc.pin.gui.SMCCTestPINProvider;
+import at.gv.egiz.smcc.SignatureCard.KeyboxName;
+import org.junit.Ignore;
+
+public class STARCOSCardTest extends CardTest {
+
+ @Override
+ protected SignatureCard createSignatureCard()
+ throws CardNotSupportedException {
+ SignatureCardFactory factory = SignatureCardFactory.getInstance();
+ STARCOSCardEmul card = new STARCOSCardEmul();
+ SignatureCard signatureCard = factory.createSignatureCard(card,
+ new CardTerminalEmul(card));
+ assertTrue(signatureCard instanceof PINMgmtSignatureCard);
+ return signatureCard;
+ }
+
+ protected SignatureCard createSignatureCard(byte[] SS_PIN, byte[] Glob_PIN, int pinState)
+ throws CardNotSupportedException {
+ SignatureCardFactory factory = SignatureCardFactory.getInstance();
+ STARCOSCardEmul card = new STARCOSCardEmul(SS_PIN, Glob_PIN, pinState);
+ SignatureCard signatureCard = factory.createSignatureCard(card,
+ new CardTerminalEmul(card));
+ assertTrue(signatureCard instanceof PINMgmtSignatureCard);
+ return signatureCard;
+ }
+
+ @Test
+ public void testGetInfoboxIdentityLinkEmpty() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException {
+
+ char[] pin = "0000".toCharArray();
+
+ SignatureCard signatureCard = createSignatureCard();
+ CardEmul card = (CardEmul) signatureCard.getCard();
+ STARCOSApplInfobox appl = (STARCOSApplInfobox) card.getApplication(STARCOSAppl.AID_Infobox);
+ appl.clearInfobox();
+
+ byte[] idlink = signatureCard.getInfobox("IdentityLink",
+ new SMCCTestPINProvider(pin), null);
+ assertNull(idlink);
+
+ }
+
+ @Test(expected = SignatureCardException.class)
+ public void testGetInfoboxIdentityInvalid() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException {
+
+ char[] pin = "0000".toCharArray();
+
+ SignatureCard signatureCard = createSignatureCard();
+ CardEmul card = (CardEmul) signatureCard.getCard();
+ STARCOSApplInfobox appl = (STARCOSApplInfobox) card.getApplication(STARCOSAppl.AID_Infobox);
+ appl.setInfoboxHeader((byte) 0xFF);
+
+ signatureCard.getInfobox("IdentityLink", new SMCCTestPINProvider(pin), null);
+
+ }
+
+ @Test
+ public void testGetCerts() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException {
+
+ SignatureCard signatureCard = createSignatureCard();
+
+ byte[] cert;
+
+ cert = signatureCard.getCertificate(KeyboxName.SECURE_SIGNATURE_KEYPAIR);
+ assertNotNull(cert);
+ assertTrue(Arrays.equals(cert, STARCOSApplSichereSignatur.C_X509_CH_DS));
+
+ cert = signatureCard.getCertificate(KeyboxName.CERITIFIED_KEYPAIR);
+ assertNotNull(cert);
+ assertTrue(Arrays.equals(cert, STARCOSApplGewoehnlicheSignatur.C_X509_CH_AUT));
+
+ }
+
+ @Test(expected = NotActivatedException.class)
+ public void testGetDSCertEmpty() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException {
+
+ SignatureCard signatureCard = createSignatureCard();
+ CardEmul card = (CardEmul) signatureCard.getCard();
+ STARCOSApplSichereSignatur appl = (STARCOSApplSichereSignatur) card.getApplication(STARCOSApplSichereSignatur.AID_SichereSignatur);
+ appl.clearCert();
+
+ signatureCard.getCertificate(KeyboxName.SECURE_SIGNATURE_KEYPAIR);
+
+ }
+
+ @Test(expected = NotActivatedException.class)
+ public void testGetAUTCertEmpty() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException {
+
+ SignatureCard signatureCard = createSignatureCard();
+ CardEmul card = (CardEmul) signatureCard.getCard();
+ STARCOSApplGewoehnlicheSignatur appl = (STARCOSApplGewoehnlicheSignatur) card.getApplication(STARCOSApplGewoehnlicheSignatur.AID_GewoehnlicheSignatur);
+ appl.clearCert();
+
+ signatureCard.getCertificate(KeyboxName.CERITIFIED_KEYPAIR);
+
+ }
+
+ @Test
+ public void testSignSichereSignatur() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException,
+ NoSuchAlgorithmException, IOException {
+
+ char[] pin = "123456".toCharArray();
+
+ SignatureCard signatureCard = createSignatureCard();
+ CardEmul card = (CardEmul) signatureCard.getCard();
+ STARCOSApplSichereSignatur appl = (STARCOSApplSichereSignatur) card.getApplication(STARCOSApplSichereSignatur.AID_SichereSignatur);
+ appl.setPin(STARCOSApplSichereSignatur.KID_PIN_SS, pin);
+
+ byte[] signature = signatureCard.createSignature(new ByteArrayInputStream("MOCCA"
+ .getBytes("ASCII")),
+ KeyboxName.SECURE_SIGNATURE_KEYPAIR, new SMCCTestPINProvider(pin), null);
+
+ assertNotNull(signature);
+
+ }
+
+ @Test
+ public void testSignGewoehnlicheSignatur() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException,
+ NoSuchAlgorithmException, IOException {
+
+ char[] pin = "1234".toCharArray();
+
+ SignatureCard signatureCard = createSignatureCard();
+ CardEmul card = (CardEmul) signatureCard.getCard();
+ STARCOSCardChannelEmul channel = (STARCOSCardChannelEmul) card.getBasicChannel();
+ channel.setPin(STARCOSCardChannelEmul.KID_PIN_Glob, pin);
+
+ byte[] signature = signatureCard.createSignature(new ByteArrayInputStream("MOCCA"
+ .getBytes("ASCII")),
+ KeyboxName.CERITIFIED_KEYPAIR, new SMCCTestPINProvider(pin), null);
+
+ assertNotNull(signature);
+
+ }
+
+ @Test(expected = LockedException.class)
+ public void testSignSichereSignaturInvalidPin() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException,
+ NoSuchAlgorithmException, IOException {
+
+ SignatureCard signatureCard = createSignatureCard();
+
+ SMCCTestPINProvider pinProvider = new SMCCTestPINProvider("000000".toCharArray());
+
+ signatureCard.createSignature(new ByteArrayInputStream("MOCCA"
+ .getBytes("ASCII")), KeyboxName.SECURE_SIGNATURE_KEYPAIR,
+ pinProvider, null);
+
+ }
+
+ @Test(expected = LockedException.class)
+ public void testSignGewoehnlicheSignaturInvalidPin() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException,
+ NoSuchAlgorithmException, IOException {
+
+ SignatureCard signatureCard = createSignatureCard();
+
+ SMCCTestPINProvider pinProvider = new SMCCTestPINProvider("1234".toCharArray());
+
+ signatureCard.createSignature(new ByteArrayInputStream("MOCCA"
+ .getBytes("ASCII")), KeyboxName.CERITIFIED_KEYPAIR,
+ pinProvider, null);
+
+ }
+
+ @Test(expected = LockedException.class)
+ public void testSignSichereSignaturBlockedPin() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException,
+ NoSuchAlgorithmException, IOException {
+
+ SignatureCard signatureCard = createSignatureCard(null, null, PIN.STATE_PIN_BLOCKED);
+
+ SMCCTestPINProvider pinProvider = new SMCCTestPINProvider("000000".toCharArray());
+ assertTrue(pinProvider.getProvided() <= 0);
+
+ signatureCard.createSignature(new ByteArrayInputStream("MOCCA"
+ .getBytes("ASCII")), KeyboxName.SECURE_SIGNATURE_KEYPAIR,
+ pinProvider, null);
+
+ }
+
+ @Test(expected = LockedException.class)
+ public void testSignGewoehnlicheSignaturBlockedPin() throws SignatureCardException,
+ InterruptedException, CardNotSupportedException,
+ NoSuchAlgorithmException, IOException {
+
+ SignatureCard signatureCard = createSignatureCard(null, null, PIN.STATE_PIN_BLOCKED);
+
+ SMCCTestPINProvider pinProvider = new SMCCTestPINProvider("0000".toCharArray());
+
+ signatureCard.createSignature(new ByteArrayInputStream("MOCCA"
+ .getBytes("ASCII")), KeyboxName.CERITIFIED_KEYPAIR,
+ pinProvider, null);
+
+ }
+
+ @Test
+ public void testChangePin() throws CardNotSupportedException,
+ LockedException, NotActivatedException, CancelledException,
+ PINFormatException, SignatureCardException, InterruptedException {
+
+ // set all initial pins to DEFAULT_SS_PIN (123456)
+ PINMgmtSignatureCard signatureCard = (PINMgmtSignatureCard) createSignatureCard(
+ STARCOSCardEmul.DEFAULT_SS_PIN, STARCOSCardEmul.DEFAULT_SS_PIN, PIN.STATE_RESET);
+
+ for (PINSpec pinSpec : signatureCard.getPINSpecs()) {
+
+ char[] pin = "123456".toCharArray();
+
+ for (int i = pinSpec.getMinLength(); i <= pinSpec.getMaxLength(); i++) {
+ signatureCard.verifyPIN(pinSpec, new SMCCTestPINProvider(pin));
+ char[] newPin = new char[i];
+ Arrays.fill(newPin, '0');
+ signatureCard
+ .changePIN(pinSpec, new ChangePINProvider(pin, newPin));
+ signatureCard.verifyPIN(pinSpec, new SMCCTestPINProvider(newPin));
+ pin = newPin;
+ }
+ }
+ }
+
+ @Test
+ @Override
+ public void testActivatePin() throws CardNotSupportedException,
+ LockedException, NotActivatedException, CancelledException,
+ PINFormatException, SignatureCardException, InterruptedException {
+
+ PINMgmtSignatureCard signatureCard = (PINMgmtSignatureCard) createSignatureCard(
+ null, null, PIN.STATE_PIN_NOTACTIVE);
+
+ for (PINSpec pinSpec : signatureCard.getPINSpecs()) {
+
+ char[] pin = "1234567890".substring(0, pinSpec.getMinLength()).toCharArray();
+
+ boolean notActive = false;
+ try {
+ signatureCard.verifyPIN(pinSpec, new SMCCTestPINProvider(pin));
+ } catch (NotActivatedException ex) {
+ notActive = true;
+ }
+ assertTrue(notActive);
+
+ signatureCard.activatePIN(pinSpec, new ChangePINProvider(null, pin));
+ signatureCard.verifyPIN(pinSpec, new SMCCTestPINProvider(pin));
+ }
+ }
+
+ @Test
+ public void testVerifyInvalidPin() throws CardNotSupportedException,
+ LockedException, NotActivatedException, CancelledException,
+ PINFormatException, SignatureCardException, InterruptedException {
+
+ PINMgmtSignatureCard signatureCard = (PINMgmtSignatureCard) createSignatureCard();
+
+ for (PINSpec pinSpec : signatureCard.getPINSpecs()) {
+
+ char[] invalidPin = "999999".toCharArray();
+ int numInvalidTries = 2;
+ InvalidPINProvider invalidPinProvider = new InvalidPINProvider(invalidPin, numInvalidTries);
+ try {
+ signatureCard.verifyPIN(pinSpec, invalidPinProvider);
+ } catch (CancelledException ex) {
+ } finally {
+ assertTrue(invalidPinProvider.getProvided() == numInvalidTries);
+ }
+ }
+ }
+
+ @Test
+ public void testChangeInvalidPin() throws CardNotSupportedException,
+ LockedException, NotActivatedException, CancelledException,
+ PINFormatException, SignatureCardException, InterruptedException {
+
+ PINMgmtSignatureCard signatureCard = (PINMgmtSignatureCard) createSignatureCard();
+
+ for (PINSpec pinSpec : signatureCard.getPINSpecs()) {
+
+ char[] invalidPin = "999999".toCharArray();
+ int numInvalidTries = 2;
+ InvalidChangePINProvider invalidPinProvider =
+ new InvalidChangePINProvider(invalidPin, invalidPin, numInvalidTries);
+
+ try {
+ signatureCard.changePIN(pinSpec, invalidPinProvider);
+ } catch (CancelledException ex) {
+ } finally {
+ assertTrue(invalidPinProvider.getProvided() == numInvalidTries);
+ }
+ }
+ }
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSG3CardChannelEmul.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSG3CardChannelEmul.java
new file mode 100644
index 00000000..dc6836ae
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSG3CardChannelEmul.java
@@ -0,0 +1,46 @@
+/*
+ * 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.smcc.starcos;
+
+import at.gv.egiz.smcc.CardEmul;
+import at.gv.egiz.smcc.File;
+import at.gv.egiz.smcc.PIN;
+
+/**
+ *
+ * @author clemens
+ */
+public class STARCOSG3CardChannelEmul extends STARCOSCardChannelEmul {
+
+ public STARCOSG3CardChannelEmul(CardEmul cardEmul, byte[] Glob_PIN, int PIN_STATE) {
+ super(cardEmul, Glob_PIN, PIN_STATE);
+
+ // G3 version file
+ byte[] versionFileFID = new byte[]{(byte) 0x00, (byte) 0x32};
+ byte[] versionFile = new byte[]{
+ (byte) 0xa5, (byte) 0x0e, (byte) 0x53, (byte) 0x02, (byte) 0x01, (byte) 0x20, (byte) 0x54, (byte) 0x08,
+ (byte) 0x01, (byte) 0x01, (byte) 0x03, (byte) 0x01, (byte) 0x04, (byte) 0x01, (byte) 0x70, (byte) 0x01};
+ byte[] versionFileFCX = new byte[]{
+ (byte) 0x62, (byte) 0x1a, (byte) 0x80, (byte) 0x02, (byte) 0x00, (byte) 0x14, (byte) 0x82, (byte) 0x05,
+ (byte) 0x44, (byte) 0x41, (byte) 0x00, (byte) 0x14, (byte) 0x01, (byte) 0x83, (byte) 0x02, (byte) 0x00,
+ (byte) 0x32, (byte) 0x88, (byte) 0x01, (byte) 0xd8, (byte) 0x8a, (byte) 0x01, (byte) 0x05, (byte) 0xa1,
+ (byte) 0x03, (byte) 0x8b, (byte) 0x01, (byte) 0x03};
+
+ globalFiles.add(new File(versionFileFID, versionFile, versionFileFCX));
+
+ }
+ }
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSG3CardEmul.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSG3CardEmul.java
new file mode 100644
index 00000000..7583b3ad
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSG3CardEmul.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.smcc.starcos;
+
+import at.gv.egiz.smcc.CardEmul;
+import javax.smartcardio.ATR;
+
+import at.gv.egiz.smcc.PIN;
+
+@SuppressWarnings("restriction")
+public class STARCOSG3CardEmul extends CardEmul {
+
+ public static byte[] TRANSPORT_SS_PIN = new byte[] { (byte) 0x26, (byte) 0x12, (byte) 0x34, (byte) 0x56, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff};
+ public static byte[] TRANSPORT_Glob_PIN = new byte[] { (byte) 0x24, (byte) 0x12, (byte) 0x34, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff};
+
+ public static byte[] DEFAULT_SS_PIN = TRANSPORT_SS_PIN;
+ public static byte[] DEFAULT_Glob_PIN = new byte[] { (byte) 0x24, (byte) 0x00, (byte) 0x00, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff};
+
+ protected static ATR ATR = new ATR(new byte[] {
+ (byte) 0x3b, (byte) 0xbd, (byte) 0x18, (byte) 0x00, (byte) 0x81, (byte) 0x31, (byte) 0xfe, (byte) 0x45,
+ (byte) 0x80, (byte) 0x51, (byte) 0x02, (byte) 0x67, (byte) 0x05, (byte) 0x18, (byte) 0xb1, (byte) 0x02,
+ (byte) 0x02, (byte) 0x02, (byte) 0x01, (byte) 0x81, (byte) 0x05, (byte) 0x31
+ });
+
+ public STARCOSG3CardEmul(byte[] SS_PIN, byte[] Glob_PIN, int PIN_STATE){
+ channel = new STARCOSG3CardChannelEmul(this, Glob_PIN, PIN_STATE);
+ applications.add(new STARCOSApplSichereSignatur((STARCOSCardChannelEmul) channel,
+ SS_PIN, PIN_STATE));
+ applications.add(new STARCOSApplInfobox((STARCOSCardChannelEmul) channel));
+ applications.add(new STARCOSApplGewoehnlicheSignatur((STARCOSCardChannelEmul) channel,
+ STARCOSApplGewoehnlicheSignatur.DST_G3));
+ }
+
+
+ public STARCOSG3CardEmul() {
+ this(DEFAULT_SS_PIN, DEFAULT_Glob_PIN, PIN.STATE_RESET);
+ }
+
+ @Override
+ public ATR getATR() {
+ return ATR;
+ }
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSG3CardTest.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSG3CardTest.java
new file mode 100644
index 00000000..06744c82
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/starcos/STARCOSG3CardTest.java
@@ -0,0 +1,119 @@
+/*
+* 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.smcc.starcos;
+
+import static org.junit.Assert.assertTrue;
+
+import java.util.Arrays;
+
+
+import org.junit.Test;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.CardEmul;
+import at.gv.egiz.smcc.CardNotSupportedException;
+import at.gv.egiz.smcc.CardTerminalEmul;
+import at.gv.egiz.smcc.CardTest;
+import at.gv.egiz.smcc.pin.gui.ChangePINProvider;
+import at.gv.egiz.smcc.LockedException;
+import at.gv.egiz.smcc.NotActivatedException;
+import at.gv.egiz.smcc.PIN;
+import at.gv.egiz.smcc.PINFormatException;
+import at.gv.egiz.smcc.PINMgmtSignatureCard;
+import at.gv.egiz.smcc.PINSpec;
+import at.gv.egiz.smcc.SignatureCard;
+import at.gv.egiz.smcc.SignatureCardException;
+import at.gv.egiz.smcc.SignatureCardFactory;
+import at.gv.egiz.smcc.pin.gui.SMCCTestPINProvider;
+import org.junit.Ignore;
+
+public class STARCOSG3CardTest extends CardTest {
+
+ @Override
+ protected SignatureCard createSignatureCard()
+ throws CardNotSupportedException {
+ SignatureCardFactory factory = SignatureCardFactory.getInstance();
+ STARCOSG3CardEmul card = new STARCOSG3CardEmul();
+ SignatureCard signatureCard = factory.createSignatureCard(card,
+ new CardTerminalEmul(card));
+ assertTrue(signatureCard instanceof PINMgmtSignatureCard);
+ return signatureCard;
+ }
+
+ protected SignatureCard createSignatureCard(byte[] SS_PIN, byte[] Glob_PIN, int pinState)
+ throws CardNotSupportedException {
+ SignatureCardFactory factory = SignatureCardFactory.getInstance();
+ STARCOSG3CardEmul card = new STARCOSG3CardEmul(SS_PIN, Glob_PIN, pinState);
+ SignatureCard signatureCard = factory.createSignatureCard(card,
+ new CardTerminalEmul(card));
+ assertTrue(signatureCard instanceof PINMgmtSignatureCard);
+ return signatureCard;
+ }
+
+ @Test
+ public void testChangePin() throws CardNotSupportedException,
+ LockedException, NotActivatedException, CancelledException,
+ PINFormatException, SignatureCardException, InterruptedException {
+
+ PINMgmtSignatureCard signatureCard = (PINMgmtSignatureCard) createSignatureCard(
+ STARCOSG3CardEmul.DEFAULT_SS_PIN, STARCOSG3CardEmul.DEFAULT_SS_PIN, PIN.STATE_RESET);
+
+ for (PINSpec pinSpec : signatureCard.getPINSpecs()) {
+
+ char[] pin = "123456".toCharArray();
+
+ for (int i = pinSpec.getMinLength(); i <= pinSpec.getMaxLength(); i++) {
+ signatureCard.verifyPIN(pinSpec, new SMCCTestPINProvider(pin));
+ char[] newPin = new char[i];
+ Arrays.fill(newPin, '0');
+ signatureCard
+ .changePIN(pinSpec, new ChangePINProvider(pin, newPin));
+ signatureCard.verifyPIN(pinSpec, new SMCCTestPINProvider(newPin));
+ pin = newPin;
+ }
+ }
+ }
+
+ @Test
+ @Override
+ public void testActivatePin() throws CardNotSupportedException,
+ LockedException, NotActivatedException, CancelledException,
+ PINFormatException, SignatureCardException, InterruptedException {
+
+ PINMgmtSignatureCard signatureCard = (PINMgmtSignatureCard) createSignatureCard(
+ STARCOSG3CardEmul.TRANSPORT_SS_PIN, STARCOSG3CardEmul.TRANSPORT_SS_PIN, PIN.STATE_PIN_NOTACTIVE);
+
+ for (PINSpec pinSpec : signatureCard.getPINSpecs()) {
+
+ char[] pin = "123456789".substring(0, pinSpec.getMinLength()).toCharArray();
+ char[] transportPIN = "123456".toCharArray();
+
+ boolean notActive = false;
+ try {
+ signatureCard.verifyPIN(pinSpec, new SMCCTestPINProvider(pin));
+ } catch (NotActivatedException ex) {
+ notActive = true;
+ }
+ assertTrue(notActive);
+
+ signatureCard.activatePIN(pinSpec, new ChangePINProvider(transportPIN, pin));
+ signatureCard.verifyPIN(pinSpec, new SMCCTestPINProvider(pin));
+ }
+ }
+
+
+}
diff --git a/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/util/ISO7816UtilsTest.java b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/util/ISO7816UtilsTest.java
new file mode 100644
index 00000000..679f2c02
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/java/at/gv/egiz/smcc/util/ISO7816UtilsTest.java
@@ -0,0 +1,175 @@
+/*
+* 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.smcc.util;
+
+import java.util.Arrays;
+
+import javax.smartcardio.CommandAPDU;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import at.gv.egiz.smcc.VerifyAPDUSpec;
+import at.gv.egiz.smcc.util.ISO7816Utils;
+import static org.junit.Assert.*;
+
+public class ISO7816UtilsTest {
+
+ @Test
+ public void testFormatPIN() {
+
+ formatPIN(VerifyAPDUSpec.PIN_FORMAT_BINARY,
+ VerifyAPDUSpec.PIN_JUSTIFICATION_LEFT, 7, "1234",
+ new byte[] {
+ (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04, (byte) 0x00, (byte) 0x00, (byte) 0x00
+ },
+ new byte[] {
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x00, (byte) 0x00, (byte) 0x00
+ }
+ );
+
+ formatPIN(VerifyAPDUSpec.PIN_FORMAT_BINARY,
+ VerifyAPDUSpec.PIN_JUSTIFICATION_RIGHT, 7, "12345",
+ new byte[] {
+ (byte) 0x00, (byte) 0x00, (byte) 0x05, (byte) 0x04, (byte) 0x03, (byte) 0x02, (byte) 0x01
+ },
+ new byte[] {
+ (byte) 0x00, (byte) 0x00, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff
+ }
+ );
+
+ formatPIN(VerifyAPDUSpec.PIN_FORMAT_BCD,
+ VerifyAPDUSpec.PIN_JUSTIFICATION_LEFT, 7, "12345",
+ new byte[] {
+ (byte) 0x12, (byte) 0x34, (byte) 0x50, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00
+ },
+ new byte[] {
+ (byte) 0xff, (byte) 0xff, (byte) 0xf0, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00
+ }
+ );
+
+ formatPIN(VerifyAPDUSpec.PIN_FORMAT_BCD,
+ VerifyAPDUSpec.PIN_JUSTIFICATION_RIGHT, 7, "1234567",
+ new byte[] {
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x07, (byte) 0x65, (byte) 0x43, (byte) 0x21
+ },
+ new byte[] {
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x0f, (byte) 0xff, (byte) 0xff, (byte) 0xff
+ }
+ );
+
+ formatPIN(VerifyAPDUSpec.PIN_FORMAT_ASCII,
+ VerifyAPDUSpec.PIN_JUSTIFICATION_LEFT, 7, "1234",
+ new byte[] {
+ (byte) 0x31, (byte) 0x32, (byte) 0x33, (byte) 0x34, (byte) 0x00, (byte) 0x00, (byte) 0x00
+ },
+ new byte[] {
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0x00, (byte) 0x00, (byte) 0x00
+ }
+ );
+
+ formatPIN(VerifyAPDUSpec.PIN_FORMAT_ASCII,
+ VerifyAPDUSpec.PIN_JUSTIFICATION_RIGHT, 7, "12345",
+ new byte[] {
+ (byte) 0x00, (byte) 0x00, (byte) 0x35, (byte) 0x34, (byte) 0x33, (byte) 0x32, (byte) 0x31
+ },
+ new byte[] {
+ (byte) 0x00, (byte) 0x00, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff
+ }
+ );
+
+
+ }
+
+ private void formatPIN(int pinFormat, int pinJusitification, int pinLength, String pin, byte[] rfpin, byte[] rmask) {
+
+ byte[] fpin = new byte[pinLength];
+ byte[] mask = new byte[pinLength];
+
+ ISO7816Utils.formatPIN(pinFormat, pinJusitification, fpin, mask, pin.toCharArray());
+
+// System.out.println(toString(fpin));
+// System.out.println(toString(mask));
+
+ assertTrue(Arrays.equals(fpin, rfpin));
+ assertTrue(Arrays.equals(mask, rmask));
+
+ }
+
+ @Test
+ public void testCreateVerifyAPDU() {
+
+ VerifyAPDUSpec verifyAPDUSpec;
+ CommandAPDU apdu;
+ byte[] ref;
+
+ verifyAPDUSpec = new VerifyAPDUSpec(
+ new byte[] {
+ (byte) 0x00, (byte) 0x20, (byte) 0x00, (byte) 0x80, (byte) 0x08,
+ (byte) 0x20, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff },
+ 1, VerifyAPDUSpec.PIN_FORMAT_BCD, 7, 4, 4);
+
+ apdu = ISO7816Utils.createVerifyAPDU(verifyAPDUSpec, "1234".toCharArray());
+
+// System.out.println(toString(apdu.getBytes()));
+
+ ref = new byte[] { (byte) 0x00, (byte) 0x20, (byte) 0x00, (byte) 0x80,
+ (byte) 0x08, (byte) 0x24, (byte) 0x12, (byte) 0x34, (byte) 0xff,
+ (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff };
+
+ assertTrue(Arrays.equals(apdu.getBytes(), ref));
+
+ ref = new byte[] { (byte) 0x00, (byte) 0x20, (byte) 0x00, (byte) 0x80,
+ (byte) 0x08, (byte) 0x31, (byte) 0x32, (byte) 0x33, (byte) 0x34,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00 };
+
+ verifyAPDUSpec = new VerifyAPDUSpec(
+ new byte[] {
+ (byte) 0x00, (byte) 0x20, (byte) 0x00, (byte) 0x80, (byte) 0x08,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
+ (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00 },
+ 0, VerifyAPDUSpec.PIN_FORMAT_ASCII, 8);
+
+ apdu = ISO7816Utils.createVerifyAPDU(verifyAPDUSpec, "1234".toCharArray());
+
+// System.out.println(toString(apdu.getBytes()));
+
+ assertTrue(Arrays.equals(apdu.getBytes(), ref));
+
+ }
+
+ private String toString(byte[] b) {
+ StringBuffer sb = new StringBuffer();
+ if (b != null && b.length > 0) {
+ sb.append(Integer.toHexString((b[0] & 240) >> 4));
+ sb.append(Integer.toHexString(b[0] & 15));
+ }
+ for (int i = 1; i < b.length; i++) {
+ sb.append(':');
+ sb.append(Integer.toHexString((b[i] & 240) >> 4));
+ sb.append(Integer.toHexString(b[i] & 15));
+ }
+ return sb.toString();
+ }
+
+
+}
diff --git a/mocca-1.2.11/smcc/src/test/resources/IdentityLink.bin b/mocca-1.2.11/smcc/src/test/resources/IdentityLink.bin
new file mode 100644
index 00000000..16c7375b
--- /dev/null
+++ b/mocca-1.2.11/smcc/src/test/resources/IdentityLink.bin
Binary files differ
diff --git a/mocca-1.2.11/smcc/src/test/resources/log4j.properties b/mocca-1.2.11/smcc/src/test/resources/log4j.properties
new file mode 100644
index 00000000..053eac17
--- /dev/null
+++ b/mocca-1.2.11/smcc/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/smccSTAL/pom.xml b/mocca-1.2.11/smccSTAL/pom.xml
new file mode 100644
index 00000000..1913c3e0
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/pom.xml
@@ -0,0 +1,48 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>smccSTAL</artifactId>
+ <name>smcc STAL</name>
+ <version>1.2.11</version>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <groupId>org.apache.maven.plugins</groupId>
+ <configuration>
+ <debug>false</debug>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>STAL</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>smcc</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUCommonGUI</artifactId>
+ <version>1.2.11</version>
+ </dependency>
+ <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_jce_me4se</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
+ </dependencies>
+</project> \ No newline at end of file
diff --git a/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/AbstractPINProvider.java b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/AbstractPINProvider.java
new file mode 100644
index 00000000..00738188
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/AbstractPINProvider.java
@@ -0,0 +1,60 @@
+/*
+ * 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.pin.gui;
+
+import at.gv.egiz.smcc.pin.gui.PINProvider;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * common super class providing action listener for all PIN GUIs
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public abstract class AbstractPINProvider implements ActionListener {
+
+ protected static final Log log = LogFactory.getLog(AbstractPINProvider.class);
+
+ protected String action;
+ protected boolean actionPerformed;
+
+ protected synchronized void waitForAction() throws InterruptedException {
+ try {
+ while (!actionPerformed) {
+ this.wait();
+ }
+ } catch (InterruptedException e) {
+ log.error("[" + Thread.currentThread().getName() + "] interrupt in waitForAction");
+ throw e;
+ }
+ actionPerformed = false;
+ }
+
+ private synchronized void actionPerformed() {
+ actionPerformed = true;
+ notify();//All();
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ log.debug("[" + Thread.currentThread().getName() + "] action performed - " + e.getActionCommand());
+ action = e.getActionCommand();
+ actionPerformed();
+ }
+}
diff --git a/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/SignPINGUI.java b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/SignPINGUI.java
new file mode 100644
index 00000000..81db0e90
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/SignPINGUI.java
@@ -0,0 +1,136 @@
+/*
+ * 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.pin.gui;
+
+import at.gv.egiz.bku.gui.BKUGUIFacade;
+import at.gv.egiz.bku.smccstal.SecureViewer;
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.PINSpec;
+import at.gv.egiz.smcc.pin.gui.PINGUI;
+import at.gv.egiz.stal.signedinfo.SignedInfoType;
+import java.security.DigestException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * The number of retries is not fixed and there is no way (?) to obtain this value.
+ * A PINProvider should therefore maintain an internal retry counter or flag
+ * to decide whether or not to warn the user (num retries passed in providePIN).
+ *
+ * Therefore PINProvider objects should not be reused.
+ *
+ * (ACOS: reload counter: between 0 and 15, where 15 meens deactivated)
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class SignPINGUI extends SignPINProvider implements PINGUI {
+
+ protected static final Log log = LogFactory.getLog(SignPINGUI.class);
+
+ private boolean retry = false;
+
+ public SignPINGUI(BKUGUIFacade gui, SecureViewer viewer, SignedInfoType signedInfo) {
+ super(gui, viewer, signedInfo);
+ }
+
+ @Override
+ public void enterPINDirect(PINSpec spec, int retries)
+ throws CancelledException, InterruptedException {
+ if (retry) {
+ gui.showEnterPINDirect(spec, retries);
+ } else {
+ showSignatureData(spec);
+ gui.showEnterPINDirect(spec, -1);
+ retry = true;
+ }
+ }
+
+ @Override
+ public void enterPIN(PINSpec spec, int retries)
+ throws CancelledException, InterruptedException {
+ if (retry) {
+ gui.showEnterPIN(spec, retries);
+ } else {
+ showSignatureData(spec);
+ gui.showEnterPIN(spec, -1);
+ retry = true;
+ }
+ }
+
+ private void showSignatureData(PINSpec spec)
+ throws CancelledException, InterruptedException {
+
+ gui.showSignatureDataDialog(spec,
+ this, "enterPIN",
+ this, "cancel",
+ this, "secureViewer");
+
+ do {
+ log.trace("[" + Thread.currentThread().getName() + "] wait for action");
+ waitForAction();
+ log.trace("[" + Thread.currentThread().getName() + "] received action " + action);
+
+ if ("secureViewer".equals(action)) {
+ try {
+ viewer.displayDataToBeSigned(signedInfo, this, "signatureData");
+ } catch (DigestException ex) {
+ log.error("Bad digest value: " + ex.getMessage());
+ gui.showErrorDialog(BKUGUIFacade.ERR_INVALID_HASH,
+ new Object[]{ex.getMessage()},
+ this, "error");
+ } catch (Exception ex) {
+ log.error("Could not display hashdata inputs: " +
+ ex.getMessage());
+ gui.showErrorDialog(BKUGUIFacade.ERR_DISPLAY_HASHDATA,
+ new Object[]{ex.getMessage()},
+ this, "error");
+ }
+ } else if ("signatureData".equals(action)) {
+ gui.showSignatureDataDialog(spec,
+ this, "enterPIN",
+ this, "cancel",
+ this, "secureViewer");
+ } else if ("enterPIN".equals(action)) {
+ return;
+ } else if ("cancel".equals(action) ||
+ "error".equals(action)) {
+ gui.showMessageDialog(BKUGUIFacade.TITLE_WAIT,
+ BKUGUIFacade.MESSAGE_WAIT);
+ throw new CancelledException(spec.getLocalizedName() +
+ " entry cancelled");
+ } else {
+ log.error("unknown action command " + action);
+ }
+ } while (true);
+ }
+
+ @Override
+ public void validKeyPressed() {
+ gui.validKeyPressed();
+ }
+
+ @Override
+ public void correctionButtonPressed() {
+ gui.correctionButtonPressed();
+ }
+
+ @Override
+ public void allKeysCleared() {
+ gui.allKeysCleared();
+ }
+
+}
diff --git a/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/SignPINProvider.java b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/SignPINProvider.java
new file mode 100644
index 00000000..fc1d39af
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/SignPINProvider.java
@@ -0,0 +1,105 @@
+/*
+ * 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.pin.gui;
+
+import at.gv.egiz.bku.gui.BKUGUIFacade;
+import at.gv.egiz.bku.smccstal.SecureViewer;
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.PINSpec;
+import at.gv.egiz.smcc.pin.gui.PINProvider;
+import at.gv.egiz.stal.signedinfo.SignedInfoType;
+import java.security.DigestException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * The number of retries is not fixed and there is no way (?) to obtain this value.
+ * A PINProvider should therefore maintain an internal retry counter or flag
+ * to decide whether or not to warn the user (num retries passed in providePIN).
+ *
+ * Therefore PINProvider objects should not be reused.
+ *
+ * (ACOS: reload counter: between 0 and 15, where 15 meens deactivated)
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class SignPINProvider extends AbstractPINProvider implements PINProvider {
+
+ protected static final Log log = LogFactory.getLog(SignPINProvider.class);
+
+ protected BKUGUIFacade gui;
+ protected SecureViewer viewer;
+ protected SignedInfoType signedInfo;
+ private boolean retry = false;
+
+ public SignPINProvider(BKUGUIFacade gui, SecureViewer viewer, SignedInfoType signedInfo) {
+ this.gui = gui;
+ this.viewer = viewer;
+ this.signedInfo = signedInfo;
+ }
+
+ @Override
+ public char[] providePIN(PINSpec spec, int retries)
+ throws CancelledException, InterruptedException {
+
+ gui.showSignaturePINDialog(spec, (retry) ? retries : -1,
+ this, "sign",
+ this, "cancel",
+ this, "secureViewer");
+
+ do {
+ log.trace("[" + Thread.currentThread().getName() + "] wait for action");
+ waitForAction();
+ log.trace("[" + Thread.currentThread().getName() + "] received action " + action);
+
+ if ("secureViewer".equals(action)) {
+ try {
+ viewer.displayDataToBeSigned(signedInfo, this, "pinEntry");
+ } catch (DigestException ex) {
+ log.error("Bad digest value: " + ex.getMessage());
+ gui.showErrorDialog(BKUGUIFacade.ERR_INVALID_HASH,
+ new Object[]{ex.getMessage()},
+ this, "error");
+ } catch (Exception ex) {
+ log.error("Could not display hashdata inputs: " +
+ ex.getMessage());
+ gui.showErrorDialog(BKUGUIFacade.ERR_DISPLAY_HASHDATA,
+ new Object[]{ex.getMessage()},
+ this, "error");
+ }
+ } else if ("sign".equals(action)) {
+ gui.showMessageDialog(BKUGUIFacade.TITLE_WAIT,
+ BKUGUIFacade.MESSAGE_WAIT);
+ retry = true;
+ return gui.getPin();
+ } else if ("pinEntry".equals(action)) {
+ gui.showSignaturePINDialog(spec, (retry) ? retries : -1,
+ this, "sign",
+ this, "cancel",
+ this, "secureViewer");
+ } else if ("cancel".equals(action) ||
+ "error".equals(action)) {
+ gui.showMessageDialog(BKUGUIFacade.TITLE_WAIT,
+ BKUGUIFacade.MESSAGE_WAIT);
+ throw new CancelledException(spec.getLocalizedName() +
+ " entry cancelled");
+ } else {
+ log.error("unknown action command " + action);
+ }
+ } while (true);
+ }
+}
diff --git a/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/VerifyPINGUI.java b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/VerifyPINGUI.java
new file mode 100644
index 00000000..dc21492e
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/VerifyPINGUI.java
@@ -0,0 +1,76 @@
+/*
+ * 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.pin.gui;
+
+import at.gv.egiz.bku.gui.BKUGUIFacade;
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.PINSpec;
+import at.gv.egiz.smcc.pin.gui.PINGUI;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * The number of retries is not fixed and there is no way (?) to obtain this value.
+ * A PINProvider should therefore maintain an internal retry counter or flag
+ * to decide whether or not to warn the user (num retries passed in providePIN).
+ *
+ * Therefore PINProvider objects should not be reused.
+ *
+ * (ACOS: reload counter: between 0 and 15, where 15 meens deactivated)
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class VerifyPINGUI extends VerifyPINProvider implements PINGUI {
+
+ protected static final Log log = LogFactory.getLog(VerifyPINGUI.class);
+
+ private boolean retry = false;
+
+ public VerifyPINGUI(BKUGUIFacade gui) {
+ super(gui);
+ }
+
+ @Override
+ public void enterPINDirect(PINSpec spec, int retries)
+ throws CancelledException, InterruptedException {
+ gui.showEnterPINDirect(spec, (retry) ? retries : -1);
+ retry = true;
+ }
+
+ @Override
+ public void enterPIN(PINSpec spec, int retries) {
+ gui.showEnterPIN(spec, (retry) ? retries : -1);
+ retry = true;
+ }
+
+
+ @Override
+ public void validKeyPressed() {
+ gui.validKeyPressed();
+ }
+
+ @Override
+ public void correctionButtonPressed() {
+ gui.correctionButtonPressed();
+ }
+
+ @Override
+ public void allKeysCleared() {
+ gui.allKeysCleared();
+ }
+
+}
diff --git a/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/VerifyPINProvider.java b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/VerifyPINProvider.java
new file mode 100644
index 00000000..fda1e402
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/pin/gui/VerifyPINProvider.java
@@ -0,0 +1,72 @@
+/*
+ * 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.pin.gui;
+
+import at.gv.egiz.bku.gui.BKUGUIFacade;
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.PINSpec;
+import at.gv.egiz.smcc.pin.gui.PINProvider;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * The number of retries is not fixed and there is no way (?) to obtain this value.
+ * A PINProvider should therefore maintain an internal retry counter or flag
+ * to decide whether or not to warn the user (num retries passed in providePIN).
+ *
+ * Therefore PINProvider objects should not be reused.
+ *
+ * (ACOS: reload counter: between 0 and 15, where 15 meens deactivated)
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class VerifyPINProvider extends AbstractPINProvider implements PINProvider {
+
+ protected static final Log log = LogFactory.getLog(VerifyPINProvider.class);
+
+ protected BKUGUIFacade gui;
+ private boolean retry = false;
+
+ public VerifyPINProvider(BKUGUIFacade gui) {
+ this.gui = gui;
+ }
+
+ @Override
+ public char[] providePIN(PINSpec spec, int retries)
+ throws CancelledException, InterruptedException {
+
+ gui.showVerifyPINDialog(spec, (retry) ? retries : -1,
+ this, "verify",
+ this, "cancel");
+
+ log.trace("[" + Thread.currentThread().getName() + "] wait for action");
+ waitForAction();
+ log.trace("[" + Thread.currentThread().getName() + "] received action " + action);
+
+ if ("cancel".equals(action)) {
+ gui.showMessageDialog(BKUGUIFacade.TITLE_WAIT,
+ BKUGUIFacade.MESSAGE_WAIT);
+ throw new CancelledException(spec.getLocalizedName() +
+ " entry cancelled");
+ }
+
+ gui.showMessageDialog(BKUGUIFacade.TITLE_WAIT,
+ BKUGUIFacade.MESSAGE_WAIT);
+ retry = true;
+ return gui.getPin();
+ }
+}
diff --git a/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/AbstractBKUWorker.java b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/AbstractBKUWorker.java
new file mode 100644
index 00000000..14b36e28
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/AbstractBKUWorker.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.
+ */
+package at.gv.egiz.bku.smccstal;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.ArrayList;
+import java.util.List;
+
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.gui.BKUGUIFacade;
+import at.gv.egiz.smcc.SignatureCard;
+import at.gv.egiz.smcc.util.SMCCHelper;
+import at.gv.egiz.stal.QuitRequest;
+import at.gv.egiz.stal.STALRequest;
+import at.gv.egiz.stal.STALResponse;
+
+/**
+ * Abstract base class for AppletBKUWorker and LocalBKUWorker,
+ * providing card specific functionality not implemented by AbstractSMCCSTAL
+ * as well as common GUI functionality (action event handling).
+ * <br/>
+ * This class implements SMCCSTALRequestHandler and registers itself as QUIT handler.
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public abstract class AbstractBKUWorker extends AbstractSMCCSTAL implements ActionListener, SMCCSTALRequestHandler {
+
+ protected static Log log = LogFactory.getLog(AbstractBKUWorker.class);
+ protected BKUGUIFacade gui;
+ protected List<String> actionCommandList = new ArrayList<String>();
+ protected Boolean actionPerformed = false;
+ protected boolean finished = false;
+
+ public AbstractBKUWorker(BKUGUIFacade gui) {
+ if (gui == null) {
+ throw new NullPointerException("No BKU GUI provided");
+ }
+ this.gui = gui;
+// this.locale = gui.getLocale();
+ addRequestHandler(QuitRequest.class, this);
+ }
+
+ ///////////////////////////////////////////////////////////////////
+ // Common action event handling //
+ ///////////////////////////////////////////////////////////////////
+
+ /**
+ * notifies all registered handlers that an event occured
+ * @param e
+ */
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ log.info("Action: " + e);
+ if (actionCommandList != null) {
+ if (actionCommandList.contains(e.getActionCommand())) {
+ actionOccured();
+ }
+ } else {
+ actionOccured();
+ }
+ }
+
+ /**
+ * register for notification on action event
+ * @throws java.lang.InterruptedException
+ */
+ protected synchronized void waitForAction() throws InterruptedException {
+ log.info("Waiting for Action");
+ while (!actionPerformed) {
+ wait();
+ }
+ actionPerformed = false;
+ }
+
+ protected synchronized void actionOccured() {
+ log.info("Received Action");
+ actionPerformed = true;
+ notifyAll();
+ }
+
+ ///////////////////////////////////////////////////////////////////
+ // card specific implementations of AbstractSMCCSTAL //
+ ///////////////////////////////////////////////////////////////////
+
+ @Override
+ protected boolean waitForCard() {
+ if (signatureCard != null) {
+ return false;
+ }
+ SMCCHelper smccHelper = new SMCCHelper();
+ actionCommandList.clear();
+ actionCommandList.add("cancel");
+ // while no sigcard found or cancel button pressed
+ int oldValue = SMCCHelper.PC_SC_NOT_SUPPORTED; // this is a save default
+ while ((signatureCard == null) && (!actionPerformed)) {
+ switch (smccHelper.getResultCode()) {
+ case SMCCHelper.PC_SC_NOT_SUPPORTED:
+ actionCommandList.clear();
+ actionCommandList.add("ok");
+ gui.showErrorDialog(BKUGUIFacade.ERR_NO_PCSC, null, this, "ok");
+ try {
+ waitForAction();
+ } catch (InterruptedException e) {
+ log.error(e);
+ }
+ return true;
+ case SMCCHelper.TERMINAL_NOT_PRESENT:
+ actionCommandList.clear();
+ actionCommandList.add("ok");
+ gui.showErrorDialog(BKUGUIFacade.ERR_NO_CARDTERMINAL, null, this, "ok");
+ try {
+ waitForAction();
+ } catch (InterruptedException e) {
+ log.error(e);
+ }
+ return true;
+ case SMCCHelper.CARD_NOT_SUPPORTED:
+ if (oldValue != SMCCHelper.CARD_NOT_SUPPORTED) {
+ actionCommandList.clear();
+ actionCommandList.add("cancel");
+ gui.showMessageDialog(BKUGUIFacade.TITLE_CARD_NOT_SUPPORTED,
+ BKUGUIFacade.MESSAGE_CARD_NOT_SUPPORTED, null,
+ BKUGUIFacade.BUTTON_CANCEL, this, "cancel");
+ oldValue = SMCCHelper.CARD_NOT_SUPPORTED;
+ }
+ break;
+ case SMCCHelper.NO_CARD:
+ if (oldValue != SMCCHelper.NO_CARD) {
+ actionCommandList.clear();
+ actionCommandList.add("cancel");
+ gui.showMessageDialog(BKUGUIFacade.TITLE_INSERTCARD,
+ BKUGUIFacade.MESSAGE_INSERTCARD, null,
+ BKUGUIFacade.BUTTON_CANCEL, this, "cancel");
+ oldValue = SMCCHelper.NO_CARD;
+ }
+ break;
+ case SMCCHelper.CARD_FOUND:
+ signatureCard = smccHelper.getSignatureCard(gui.getLocale());
+ return false;
+ }
+ smccHelper.update(3000);
+ }
+ return signatureCard == null;
+ }
+
+ @Override
+ protected BKUGUIFacade getGUI() {
+ return gui;
+ }
+
+ ///////////////////////////////////////////////////////////////////
+ // SMCCSTALRequestHandler for QUIT requests //
+ ///////////////////////////////////////////////////////////////////
+
+ /**
+ * Handle QUIT requests: set finished true.
+ * @param request a QUIT request
+ * @return null (no response on QUIT)
+ */
+ @Override
+ public STALResponse handleRequest(STALRequest request) {
+ if (request instanceof QuitRequest) {
+ log.info("Setting state to: finished for BKUWorker " + this);
+ finished = true;
+ } else {
+ log.error("Unexpected request to handle: " + request);
+ }
+ return null;
+ }
+
+ /**
+ * No initialization required for QUIT request handlers.
+ * @param sc
+ * @param gui
+ */
+ @Override
+ public void init(SignatureCard sc, BKUGUIFacade gui) {
+ }
+
+ /**
+ * QUIT request handlers do not require a card.
+ * @return false
+ */
+ @Override
+ public boolean requireCard() {
+ return false;
+ }
+}
diff --git a/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/AbstractRequestHandler.java b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/AbstractRequestHandler.java
new file mode 100644
index 00000000..98b21f79
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/AbstractRequestHandler.java
@@ -0,0 +1,86 @@
+/*
+* 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.smccstal;
+
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.gui.BKUGUIFacade;
+import at.gv.egiz.smcc.SignatureCard;
+import at.gv.egiz.stal.STALRequest;
+import at.gv.egiz.stal.STALResponse;
+
+public abstract class AbstractRequestHandler implements SMCCSTALRequestHandler,
+ ActionListener {
+ private final static Log log = LogFactory
+ .getLog(AbstractRequestHandler.class);
+
+ protected SignatureCard card;
+ protected BKUGUIFacade gui;
+ protected static STALMessageConsumer messageConsumer = null;
+ protected String actionCommand;
+ protected boolean actionPerformed = false;
+
+ @Override
+ public abstract STALResponse handleRequest(STALRequest request) throws InterruptedException;
+
+ @Override
+ public void init(SignatureCard sc, BKUGUIFacade gui) {
+ if ((sc == null) || (gui == null)) {
+ throw new NullPointerException("Parameter must not be set to null");
+ }
+ this.card = sc;
+ this.gui = gui;
+ }
+
+ public static void setMessageConsumer(STALMessageConsumer messageConsumer) {
+ AbstractRequestHandler.messageConsumer = messageConsumer;
+ }
+
+ protected static void newSTALMessage(String caption, String message) {
+ if (messageConsumer != null) {
+ messageConsumer.consumeNewSTALMessage(caption, message);
+ }
+ }
+
+ protected synchronized void waitForAction() throws InterruptedException {
+ try {
+ while (!actionPerformed) {
+ wait();
+ }
+ } catch (InterruptedException e) {
+ log.error("interrupt in waitForAction");
+ throw e;
+ }
+ actionPerformed = false;
+ }
+
+ private synchronized void actionPerformed() {
+ actionPerformed = true;
+ notifyAll();
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ actionCommand = e.getActionCommand();
+ actionPerformed();
+ }
+
+}
diff --git a/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/AbstractSMCCSTAL.java b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/AbstractSMCCSTAL.java
new file mode 100644
index 00000000..d0762da9
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/AbstractSMCCSTAL.java
@@ -0,0 +1,192 @@
+/*
+ * 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.smccstal;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+//import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.gui.BKUGUIFacade;
+import at.gv.egiz.smcc.SignatureCard;
+import at.gv.egiz.stal.ErrorResponse;
+import at.gv.egiz.stal.InfoboxReadRequest;
+import at.gv.egiz.stal.STAL;
+import at.gv.egiz.stal.STALRequest;
+import at.gv.egiz.stal.STALResponse;
+import at.gv.egiz.stal.StatusRequest;
+
+public abstract class AbstractSMCCSTAL implements STAL {
+ private static Log log = LogFactory.getLog(AbstractSMCCSTAL.class);
+
+ public final static int DEFAULT_MAX_RETRIES = 1;
+
+// protected Locale locale = Locale.getDefault();
+ protected SignatureCard signatureCard = null;
+ protected Map<String, SMCCSTALRequestHandler> handlerMap = new HashMap<String, SMCCSTALRequestHandler>();
+
+ protected int maxRetries = DEFAULT_MAX_RETRIES;
+ protected Set<Integer> unrecoverableErrors = new HashSet<Integer>();
+
+ protected AbstractSMCCSTAL() {
+ addRequestHandler(InfoboxReadRequest.class, new InfoBoxReadRequestHandler());
+ addRequestHandler(StatusRequest.class, new StatusRequestHandler());
+ unrecoverableErrors.add(6001);
+ }
+
+ /**
+ * Implementations must assign the signature card within this method.
+ *
+ * @return if the user canceled
+ */
+ protected abstract boolean waitForCard();
+
+ protected abstract BKUGUIFacade getGUI();
+
+ private STALResponse getResponse(STALRequest request) throws InterruptedException {
+ int retryCounter = 0;
+ while (retryCounter < maxRetries) {
+ log.info("Retry #" + retryCounter + " of " + maxRetries);
+ SMCCSTALRequestHandler handler = null;
+ handler = handlerMap.get(request.getClass().getSimpleName());
+ if (handler != null) {
+ if (handler.requireCard()) {
+ if (waitForCard()) {
+ return new ErrorResponse(6001);
+ }
+ }
+ try {
+ handler.init(signatureCard, getGUI());
+ STALResponse response = handler.handleRequest(request);
+ if (response != null) {
+ if (response instanceof ErrorResponse) {
+ log.info("Got an error response");
+ ErrorResponse err = (ErrorResponse) response;
+ if (unrecoverableErrors.contains(err.getErrorCode())) {
+ return response;
+ }
+ if ((++retryCounter < maxRetries) && (handler.requireCard())) {
+ signatureCard.disconnect(true);
+ signatureCard = null;
+ } else {
+ log.info("Exceeded max retries, returning error "
+ + err.getErrorMessage());
+ return response;
+ }
+ } else {
+ return response;
+ }
+ } else {
+ log.info("Got null response from handler, assuming quit");
+ return null;
+ }
+ } catch (InterruptedException e) {
+ log.info("Interrupt during request handling, do not retry");
+ throw e;
+ } catch (Exception e) {
+ log.info("Error while handling STAL request:", e);
+ if (++retryCounter < maxRetries) {
+ signatureCard.disconnect(true);
+ signatureCard = null;
+ } else {
+ log.info("Exceeded max retries, returning error.");
+ return new ErrorResponse(6000);
+ }
+ }
+ } else {
+ log.error("Cannot find a handler for STAL request: " + request);
+ return new ErrorResponse();
+ }
+ }
+ return new ErrorResponse(6000);
+ }
+
+ /**
+ *
+ * @param requestList
+ * @return
+ * @throws RuntimeException with cause InterruptedException if interrupted
+ */
+ @Override
+ public List<STALResponse> handleRequest(List<? extends STALRequest> requestList) {
+ log.debug("Got request list containing " + requestList.size()
+ + " STAL requests");
+ List<STALResponse> responseList = new ArrayList<STALResponse>(requestList
+ .size());
+ for (STALRequest request : requestList) {
+ log.info("Processing: " + request.getClass());
+ STALResponse response;
+ try {
+ response = getResponse(request);
+ if (response != null) {
+ responseList.add(response);
+ if (response instanceof ErrorResponse) {
+ log.info("Got an error response, don't process remaining requests");
+ break;
+ }
+ }
+ } catch (InterruptedException ex) {
+ log.error("interrupted during request handling");
+ throw new RuntimeException("interrupted during request handling", ex);
+ }
+
+ }
+ return responseList;
+ }
+
+ public void addRequestHandler(Class<? extends STALRequest> id,
+ SMCCSTALRequestHandler handler) {
+ log.debug("Registering STAL request handler: " + id.getSimpleName());
+ handlerMap.put(id.getSimpleName(), handler);
+ }
+
+ public void removeRequestHandler(Class<? extends STALRequest> id) {
+ log.debug("De-registering STAL request handler: " + id.getSimpleName());
+ handlerMap.remove(id.getSimpleName());
+ }
+
+ public SMCCSTALRequestHandler getRequestHandler(
+ Class<? extends STALRequest> request) {
+ return handlerMap.get(request.getSimpleName());
+ }
+
+// @Override
+// public void setLocale(Locale locale) {
+// if (locale == null) {
+// throw new NullPointerException("Locale must not be set to null");
+// }
+// this.locale = locale;
+// }
+
+ public void setMaxRetries(int maxRetries) {
+ this.maxRetries = maxRetries;
+ }
+
+ public Set<Integer> getUnrecoverableErrors() {
+ return unrecoverableErrors;
+ }
+
+ public void setUnrecoverableErrors(Set<Integer> unrecoverableErrors) {
+ this.unrecoverableErrors = unrecoverableErrors;
+ }
+}
diff --git a/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/DomainIdConverter.java b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/DomainIdConverter.java
new file mode 100644
index 00000000..3a564b91
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/DomainIdConverter.java
@@ -0,0 +1,85 @@
+/*
+* 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.smccstal;
+
+import iaik.me.asn1.ASN1;
+import iaik.me.utils.Base64;
+
+import java.io.IOException;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Vector;
+
+public class DomainIdConverter {
+
+ private static String getBaseId(ASN1 identityLink) throws IOException {
+
+ if (identityLink.getType() == ASN1.TYPE_SEQUENCE) {
+ ASN1 personData = identityLink.getElementAt(4);
+ if (personData.getType() == ASN1.TAG_CONTEXT_SPECIFIC) {
+ ASN1 physicalPersonData = personData.gvASN1();
+ ASN1 baseId = physicalPersonData.getElementAt(0);
+ return baseId.gvString();
+ }
+ throw new IOException("Invalid structure.");
+
+ }
+ throw new IOException("Invalid structure.");
+
+ }
+
+ private static ASN1 replaceBaseId(ASN1 identityLink, String newBaseId)
+ throws IOException {
+
+ ASN1 newIdentityLink = new ASN1(ASN1.TYPE_SEQUENCE, new Vector<ASN1>());
+ for (int i = 0; i < identityLink.getSize(); i++) {
+ ASN1 asn1 = identityLink.getElementAt(i);
+ if (i == 4 && asn1.getType() == ASN1.TAG_CONTEXT_SPECIFIC) {
+ ASN1 physicalPersonData = asn1.gvASN1();
+ ASN1 newPhysicalPersonData = new ASN1(ASN1.TYPE_SEQUENCE,
+ new Vector<ASN1>());
+ newPhysicalPersonData.addElement(new ASN1(ASN1.TYPE_UTF8_STRING,
+ newBaseId));
+ for (int j = 1; j < physicalPersonData.getSize(); j++) {
+ newPhysicalPersonData.addElement(physicalPersonData.getElementAt(j));
+ }
+ asn1 = new ASN1(ASN1.TAG_CONTEXT_SPECIFIC, newPhysicalPersonData);
+ }
+ newIdentityLink.addElement(asn1);
+ }
+ return newIdentityLink;
+
+ }
+
+ public static byte[] convertDomainId(byte[] data, String domainId)
+ throws IOException, NoSuchAlgorithmException {
+ if (domainId == null) {
+ return data;
+ }
+ ASN1 identityLink = new ASN1(data);
+ MessageDigest sha = null;
+ sha = MessageDigest.getInstance("SHA");
+ String base = getBaseId(identityLink);
+ sha.update((base + "+" + domainId).getBytes());
+ String bpkStr = new String(Base64.encode(sha.digest()));
+ bpkStr = bpkStr.trim();
+ identityLink = replaceBaseId(identityLink, bpkStr);
+ System.out.println(getBaseId(identityLink));
+ return identityLink.getEncoded();
+ }
+
+}
diff --git a/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/HashDataInputDisplay.java b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/HashDataInputDisplay.java
new file mode 100644
index 00000000..59700d4a
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/HashDataInputDisplay.java
@@ -0,0 +1,46 @@
+/*
+ * 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.smccstal;
+
+import at.gv.egiz.stal.signedinfo.ReferenceType;
+import java.security.DigestException;
+import java.util.List;
+
+/**
+ *
+ * @author clemens
+ */
+public interface HashDataInputDisplay {
+
+
+ /**
+ * TODO: (see AbstractHelpListener)
+ *
+ *
+ * Displays the hashdata inputs for all provided dsig:SignedReferences.
+ * Implementations may verify the digest value if necessary.
+ * (LocalSignRequestHandler operates on DataObjectHashDataInput,
+ * other SignRequestHandlers should cache the HashDataInputs obtained by webservice calls,
+ * or simply forward to a HashDataInputServlet.)
+ * @param signedReferences The caller may select a subset of the references in SignedInfo to be displayed.
+ * @throws java.security.DigestException if digest values are verified and do not correspond
+ * (or any other digest computation error occurs)
+ * @throws java.lang.Exception
+ */
+ void displayHashDataInputs(List<ReferenceType> signedReferences) throws DigestException, Exception;
+
+}
diff --git a/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/InfoBoxReadRequestHandler.java b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/InfoBoxReadRequestHandler.java
new file mode 100644
index 00000000..b34ab862
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/InfoBoxReadRequestHandler.java
@@ -0,0 +1,141 @@
+/*
+* 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.smccstal;
+
+import at.gv.egiz.bku.gui.BKUGUIFacade;
+import at.gv.egiz.bku.pin.gui.VerifyPINGUI;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.LockedException;
+import at.gv.egiz.smcc.NotActivatedException;
+import at.gv.egiz.smcc.SignatureCard;
+import at.gv.egiz.smcc.SignatureCardException;
+import at.gv.egiz.stal.ErrorResponse;
+import at.gv.egiz.stal.InfoboxReadRequest;
+import at.gv.egiz.stal.InfoboxReadResponse;
+import at.gv.egiz.stal.STALRequest;
+import at.gv.egiz.stal.STALResponse;
+
+public class InfoBoxReadRequestHandler extends AbstractRequestHandler {
+
+ private static Log log = LogFactory.getLog(InfoBoxReadRequestHandler.class);
+
+// protected PINProviderFactory pinProviderFactory;
+
+ @Override
+ public STALResponse handleRequest(STALRequest request) throws InterruptedException {
+ if (request instanceof InfoboxReadRequest) {
+ InfoboxReadRequest infoBox = (InfoboxReadRequest) request;
+
+ try {
+ if (infoBox.getInfoboxIdentifier().equals("IdentityLink")) {
+ newSTALMessage("Message.RequestCaption", "Message.IdentityLink");
+ log.debug("Handling identitylink infobox");
+ byte[] resp = card.getInfobox(infoBox.getInfoboxIdentifier(),
+ new VerifyPINGUI(gui),
+ infoBox.getDomainIdentifier());
+ if (resp == null) {
+ log.info("Infobox doesn't contain any data. Assume card is not activated.");
+ throw new NotActivatedException();
+ } else {
+ try {
+ resp = DomainIdConverter.convertDomainId(resp, infoBox
+ .getDomainIdentifier());
+ } catch (Exception e) {
+ log.error("Cannot convert domain specific id", e);
+ return new ErrorResponse(1000);
+ }
+ }
+ InfoboxReadResponse stalResp = new InfoboxReadResponse();
+ stalResp.setInfoboxValue(resp);
+ return stalResp;
+ } else if (SignatureCard.KeyboxName.CERITIFIED_KEYPAIR.equals(infoBox
+ .getInfoboxIdentifier())) {
+ newSTALMessage("Message.RequestCaption", "Message.CertifiedKeypair");
+ log.debug("Handling certified keypair infobox");
+ byte[] resp = card
+ .getCertificate(SignatureCard.KeyboxName.CERITIFIED_KEYPAIR);
+ if (resp == null) {
+ return new ErrorResponse(6001);
+ }
+ InfoboxReadResponse stalResp = new InfoboxReadResponse();
+ stalResp.setInfoboxValue(resp);
+ return stalResp;
+ } else if (SignatureCard.KeyboxName.SECURE_SIGNATURE_KEYPAIR
+ .equals(infoBox.getInfoboxIdentifier())) {
+ newSTALMessage("Message.RequestCaption",
+ "Message.SecureSignatureKeypair");
+ log.debug("Handling secure signature keypair infobox");
+ byte[] resp = card
+ .getCertificate(SignatureCard.KeyboxName.SECURE_SIGNATURE_KEYPAIR);
+ if (resp == null) {
+ return new ErrorResponse(6001);
+ }
+ InfoboxReadResponse stalResp = new InfoboxReadResponse();
+ stalResp.setInfoboxValue(resp);
+ return stalResp;
+ } else {
+ newSTALMessage("Message.RequestCaption", "Message.InfoboxReadRequest");
+ log.warn("Unknown infobox identifier: "
+ + infoBox.getInfoboxIdentifier() + " trying generic request");
+ byte[] resp = card.getInfobox(infoBox.getInfoboxIdentifier(),
+ new VerifyPINGUI(gui),
+ infoBox.getDomainIdentifier());
+ if (resp == null) {
+ return new ErrorResponse(6001);
+ }
+ InfoboxReadResponse stalResp = new InfoboxReadResponse();
+ stalResp.setInfoboxValue(resp);
+ return stalResp;
+ }
+ } catch (IllegalArgumentException e) {
+ log.info("Infobox " + infoBox.getInfoboxIdentifier() + " not supported.");
+ return new ErrorResponse(4002);
+ } catch (NotActivatedException e) {
+ log.info("Citizen card not activated.", e);
+ gui.showErrorDialog(BKUGUIFacade.ERR_CARD_NOTACTIVATED, null, this, null);
+ waitForAction();
+ gui.showMessageDialog(BKUGUIFacade.TITLE_WAIT,
+ BKUGUIFacade.MESSAGE_WAIT);
+ return new ErrorResponse(6001);
+ } catch (LockedException e) {
+ log.info("Citizen card locked.", e);
+ gui.showErrorDialog(BKUGUIFacade.ERR_CARD_LOCKED, null, this, null);
+ waitForAction();
+ gui.showMessageDialog(BKUGUIFacade.TITLE_WAIT,
+ BKUGUIFacade.MESSAGE_WAIT);
+ return new ErrorResponse(6001);
+ } catch (CancelledException cx) {
+ log.debug("User cancelled request", cx);
+ return new ErrorResponse(6001);
+ } catch (SignatureCardException e) {
+ log.info("Error while reading infobox: " + e);
+ return new ErrorResponse(4000);
+ }
+ } else {
+ log.fatal("Got unexpected STAL request: " + request);
+ return new ErrorResponse(1000);
+ }
+ }
+
+ @Override
+ public boolean requireCard() {
+ return true;
+ }
+}
diff --git a/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/SMCCSTALRequestHandler.java b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/SMCCSTALRequestHandler.java
new file mode 100644
index 00000000..f19b3ef3
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/SMCCSTALRequestHandler.java
@@ -0,0 +1,33 @@
+/*
+* 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.smccstal;
+
+
+import at.gv.egiz.bku.gui.BKUGUIFacade;
+import at.gv.egiz.smcc.SignatureCard;
+import at.gv.egiz.stal.STALRequest;
+import at.gv.egiz.stal.STALResponse;
+
+public interface SMCCSTALRequestHandler {
+
+ public void init(SignatureCard sc, BKUGUIFacade gui);
+
+ public STALResponse handleRequest(STALRequest request) throws InterruptedException;
+
+ public boolean requireCard();
+
+}
diff --git a/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/STALMessageConsumer.java b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/STALMessageConsumer.java
new file mode 100644
index 00000000..7d7a6ec0
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/STALMessageConsumer.java
@@ -0,0 +1,21 @@
+/*
+* 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.smccstal;
+
+public interface STALMessageConsumer {
+ public void consumeNewSTALMessage(String captionId, String messageId);
+}
diff --git a/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/SecureViewer.java b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/SecureViewer.java
new file mode 100644
index 00000000..2ee37dc1
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/SecureViewer.java
@@ -0,0 +1,43 @@
+/*
+ * 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.smccstal;
+
+import at.gv.egiz.stal.signedinfo.SignedInfoType;
+import java.awt.event.ActionListener;
+import java.security.DigestException;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public interface SecureViewer {
+
+ /**
+ * Displays the hashdata inputs for all provided dsig:SignedReferences.
+ * Implementations may verify the digest value if necessary.
+ * (LocalSignRequestHandler operates on DataObjectHashDataInput,
+ * other SignRequestHandlers should cache the HashDataInputs obtained by webservice calls,
+ * or simply forward to a HashDataInputServlet.)
+ * @param signedReferences The caller may select a subset of the references in SignedInfo to be displayed.
+ * @throws java.security.DigestException if digest values are verified and do not correspond
+ * (or any other digest computation error occurs)
+ * @throws java.lang.Exception
+ */
+ void displayDataToBeSigned(SignedInfoType signedInfo,
+ ActionListener okListener, String okCommand)
+ throws DigestException, Exception;
+}
diff --git a/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/SignRequestHandler.java b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/SignRequestHandler.java
new file mode 100644
index 00000000..5b436d16
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/SignRequestHandler.java
@@ -0,0 +1,136 @@
+/*
+ * 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.smccstal;
+
+import at.gv.egiz.bku.gui.BKUGUIFacade;
+import at.gv.egiz.bku.pin.gui.SignPINGUI;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Unmarshaller;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.LockedException;
+import at.gv.egiz.smcc.NotActivatedException;
+import at.gv.egiz.smcc.SignatureCard;
+import at.gv.egiz.smcc.SignatureCardException;
+import at.gv.egiz.smcc.SignatureCard.KeyboxName;
+import at.gv.egiz.smcc.TimeoutException;
+import at.gv.egiz.stal.ErrorResponse;
+import at.gv.egiz.stal.STALRequest;
+import at.gv.egiz.stal.STALResponse;
+import at.gv.egiz.stal.SignRequest;
+import at.gv.egiz.stal.SignResponse;
+import at.gv.egiz.stal.signedinfo.ObjectFactory;
+import at.gv.egiz.stal.signedinfo.SignedInfoType;
+
+public class SignRequestHandler extends AbstractRequestHandler {
+
+ private static Log log = LogFactory.getLog(SignRequestHandler.class);
+ private static JAXBContext jaxbContext;
+
+ static {
+ try {
+ jaxbContext = JAXBContext.newInstance(ObjectFactory.class.getPackage().getName());
+ } catch (JAXBException e) {
+ log.fatal("Cannot init jaxbContext", e);
+ }
+ }
+
+ protected SecureViewer secureViewer;
+
+ public SignRequestHandler(SecureViewer secureViewer) {
+ this.secureViewer = secureViewer;
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public STALResponse handleRequest(STALRequest request) throws InterruptedException {
+ if (request instanceof SignRequest) {
+ SignRequest signReq = (SignRequest) request;
+ newSTALMessage("Message.RequestCaption", "Message.SignRequest");
+ try {
+ Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+ InputStream is = new ByteArrayInputStream(signReq.getSignedInfo());
+ JAXBElement<SignedInfoType> si = (JAXBElement<SignedInfoType>) unmarshaller.unmarshal(is);
+ String signatureMethod = si.getValue().getSignatureMethod().getAlgorithm();
+ log.debug("Found signature method: " + signatureMethod);
+ KeyboxName kb = SignatureCard.KeyboxName.getKeyboxName(signReq.getKeyIdentifier());
+
+ byte[] resp = card.createSignature(new ByteArrayInputStream(signReq.getSignedInfo()), kb,
+ new SignPINGUI(gui, secureViewer, si.getValue()), signatureMethod);
+ if (resp == null) {
+ return new ErrorResponse(6001);
+ }
+ SignResponse stalResp = new SignResponse();
+ stalResp.setSignatureValue(resp);
+ return stalResp;
+ } catch (NotActivatedException e) {
+ log.info("Citizen card not activated.", e);
+ gui.showErrorDialog(BKUGUIFacade.ERR_CARD_NOTACTIVATED, null, this, null);
+ waitForAction();
+ gui.showMessageDialog(BKUGUIFacade.TITLE_WAIT,
+ BKUGUIFacade.MESSAGE_WAIT);
+ return new ErrorResponse(6001);
+ } catch (LockedException e) {
+ log.info("Citizen card locked.", e);
+ gui.showErrorDialog(BKUGUIFacade.ERR_CARD_LOCKED, null, this, null);
+ waitForAction();
+ gui.showMessageDialog(BKUGUIFacade.TITLE_WAIT,
+ BKUGUIFacade.MESSAGE_WAIT);
+ return new ErrorResponse(6001);
+ } catch (CancelledException cx) {
+ log.debug("User cancelled request");
+ return new ErrorResponse(6001);
+ } catch (TimeoutException ex) {
+ log.error("Timeout during pin entry");
+ gui.showMessageDialog(BKUGUIFacade.TITLE_ENTRY_TIMEOUT,
+ BKUGUIFacade.ERR_PIN_TIMEOUT, null,
+ BKUGUIFacade.BUTTON_CANCEL, this, null);
+ waitForAction();
+ gui.showMessageDialog(BKUGUIFacade.TITLE_WAIT,
+ BKUGUIFacade.MESSAGE_WAIT);
+ return new ErrorResponse(6001);
+ } catch (SignatureCardException e) {
+ log.error("Error while creating signature: " + e);
+ return new ErrorResponse(4000);
+ } catch (JAXBException e) {
+ log.error("Cannot unmarshall signed info", e);
+ return new ErrorResponse(1000);
+ } catch (IOException e) {
+ log.error("Error while creating signature: " + e);
+ return new ErrorResponse(4000);
+ }
+ } else {
+ log.fatal("Got unexpected STAL request: " + request);
+ return new ErrorResponse(1000);
+ }
+ }
+
+ @Override
+ public boolean requireCard() {
+ return true;
+ }
+
+}
diff --git a/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/StatusRequestHandler.java b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/StatusRequestHandler.java
new file mode 100644
index 00000000..56b24920
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/src/main/java/at/gv/egiz/bku/smccstal/StatusRequestHandler.java
@@ -0,0 +1,72 @@
+/*
+ * 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.smccstal;
+
+import at.gv.egiz.bku.gui.BKUGUIFacade;
+import at.gv.egiz.smcc.SignatureCard;
+import at.gv.egiz.smcc.util.SMCCHelper;
+import at.gv.egiz.stal.ErrorResponse;
+import at.gv.egiz.stal.STALRequest;
+import at.gv.egiz.stal.STALResponse;
+import at.gv.egiz.stal.StatusRequest;
+import at.gv.egiz.stal.StatusResponse;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class StatusRequestHandler extends AbstractRequestHandler {
+
+ protected static final Log log = LogFactory.getLog(StatusRequestHandler.class);
+
+ @Override
+ public void init(SignatureCard sc, BKUGUIFacade gui) {
+ //nothing, avoid NullPointerEx since requireCard==false => sc==null
+ }
+
+
+ @Override
+ public STALResponse handleRequest(STALRequest request) throws InterruptedException {
+
+ if (request instanceof StatusRequest) {
+ log.info("handling STATUS request");
+ SMCCHelper smccHelper = new SMCCHelper();
+ StatusResponse response = new StatusResponse();
+ if (log.isTraceEnabled()) {
+ log.trace("SMCC result code: " + smccHelper.getResultCode() +
+ ", cardReady: " +
+ (smccHelper.getResultCode() == SMCCHelper.CARD_FOUND));
+ }
+ if (smccHelper.getResultCode() == SMCCHelper.CARD_FOUND) {
+ response.setCardReady(Boolean.TRUE);
+ } else {
+ response.setCardReady(Boolean.FALSE);
+ }
+ return response;
+ } else {
+ log.error("Got unexpected STAL request: " + request);
+ return new ErrorResponse(1000);
+ }
+ }
+
+ @Override
+ public boolean requireCard() {
+ return false;
+ }
+}
diff --git a/mocca-1.2.11/smccSTAL/src/test/java/at/gv/egiz/smcc/ASN1Test.java b/mocca-1.2.11/smccSTAL/src/test/java/at/gv/egiz/smcc/ASN1Test.java
new file mode 100644
index 00000000..f2d61e7f
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/src/test/java/at/gv/egiz/smcc/ASN1Test.java
@@ -0,0 +1,105 @@
+/*
+* 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.smcc;
+
+import iaik.me.asn1.ASN1;
+import iaik.me.utils.Base64;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Vector;
+
+import org.junit.Ignore;
+
+@Ignore
+public class ASN1Test {
+
+ public static void main(String[] args) throws IOException {
+
+ ClassLoader classLoader = ASN1Test.class.getClassLoader();
+
+ InputStream stream = classLoader.getResourceAsStream("IdentityLink.bin");
+
+ if (stream != null) {
+
+ ASN1 identityLink = new ASN1(stream);
+ System.out.println("BaseId:" + getBaseId(identityLink));
+ identityLink = replaceBaseId(identityLink, "test");
+ System.out.println("BaseId:" + getBaseId(identityLink));
+
+ String bpk = "hansi";
+ MessageDigest sha = null;
+ try {
+ sha = MessageDigest.getInstance("SHA");
+ } catch (NoSuchAlgorithmException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ sha.update((identityLink + "+" + bpk).getBytes());
+ String bpkStr = new String(Base64.encode(sha.digest()));
+ System.out.println("bpk: "+bpkStr);
+ identityLink = replaceBaseId(identityLink, bpkStr);
+ System.out.println(getBaseId(identityLink));
+
+ } else {
+ System.out.println("Not found.");
+ }
+
+ }
+
+ private static String getBaseId(ASN1 identityLink) throws IOException {
+
+ if (identityLink.getType() == ASN1.TYPE_SEQUENCE) {
+ ASN1 personData = identityLink.getElementAt(4);
+ if (personData.getType() == ASN1.TAG_CONTEXT_SPECIFIC) {
+ ASN1 physicalPersonData = personData.gvASN1();
+ ASN1 baseId = physicalPersonData.getElementAt(0);
+ return baseId.gvString();
+ }
+ throw new IOException("Invalid structure.");
+
+ }
+ throw new IOException("Invalid structure.");
+
+ }
+
+ private static ASN1 replaceBaseId(ASN1 identityLink, String newBaseId)
+ throws IOException {
+
+ ASN1 newIdentityLink = new ASN1(ASN1.TYPE_SEQUENCE, new Vector<ASN1>());
+ for (int i = 0; i < identityLink.getSize(); i++) {
+ ASN1 asn1 = identityLink.getElementAt(i);
+ if (i == 4 && asn1.getType() == ASN1.TAG_CONTEXT_SPECIFIC) {
+ ASN1 physicalPersonData = asn1.gvASN1();
+ ASN1 newPhysicalPersonData = new ASN1(ASN1.TYPE_SEQUENCE,
+ new Vector<ASN1>());
+ newPhysicalPersonData.addElement(new ASN1(ASN1.TYPE_UTF8_STRING,
+ newBaseId));
+ for (int j = 1; j < physicalPersonData.getSize(); j++) {
+ newPhysicalPersonData.addElement(physicalPersonData.getElementAt(j));
+ }
+ asn1 = new ASN1(ASN1.TAG_CONTEXT_SPECIFIC, newPhysicalPersonData);
+ }
+ newIdentityLink.addElement(asn1);
+ }
+ return newIdentityLink;
+
+ }
+
+}
diff --git a/mocca-1.2.11/smccSTAL/src/test/java/at/gv/egiz/smcc/AbstractSMCCSTALTest.java b/mocca-1.2.11/smccSTAL/src/test/java/at/gv/egiz/smcc/AbstractSMCCSTALTest.java
new file mode 100644
index 00000000..bf57b0a6
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/src/test/java/at/gv/egiz/smcc/AbstractSMCCSTALTest.java
@@ -0,0 +1,126 @@
+package at.gv.egiz.smcc;
+
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+
+import javax.smartcardio.Card;
+import javax.smartcardio.CardTerminal;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import at.gv.egiz.bku.gui.BKUGUIFacade;
+import at.gv.egiz.bku.smccstal.AbstractSMCCSTAL;
+import at.gv.egiz.bku.smccstal.SMCCSTALRequestHandler;
+import at.gv.egiz.smcc.pin.gui.PINGUI;
+import at.gv.egiz.stal.ErrorResponse;
+import at.gv.egiz.stal.InfoboxReadRequest;
+import at.gv.egiz.stal.InfoboxReadResponse;
+import at.gv.egiz.stal.STALRequest;
+import at.gv.egiz.stal.STALResponse;
+
+public class AbstractSMCCSTALTest extends AbstractSMCCSTAL implements
+ SMCCSTALRequestHandler {
+ private int errorConter;
+
+ @Override
+ protected BKUGUIFacade getGUI() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ protected boolean waitForCard() {
+ signatureCard = new SignatureCard() {
+
+ @Override
+ public byte[] createSignature(InputStream input, KeyboxName keyboxName,
+ PINGUI provider, String alg) throws SignatureCardException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void disconnect(boolean reset) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public byte[] getCertificate(KeyboxName keyboxName)
+ throws SignatureCardException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public byte[] getInfobox(String infobox, PINGUI provider,
+ String domainId) throws SignatureCardException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void init(Card card, CardTerminal cardTerminal) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void setLocale(Locale locale) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public Card getCard() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void reset() throws SignatureCardException {
+ // TODO Auto-generated method stub
+
+ }
+ };
+ return false;
+ }
+
+ @Before
+ public void setUp() {
+ addRequestHandler(InfoboxReadRequest.class, this);
+ }
+
+ @Test
+ @Ignore
+ public void testRetry() {
+ InfoboxReadRequest irr = new InfoboxReadRequest();
+ List<STALRequest> irrl = new ArrayList<STALRequest>();
+ irrl.add(irr);
+ List<STALResponse> list = handleRequest(irrl);
+ Assert.assertFalse(list.get(0) instanceof ErrorResponse);
+ }
+
+ @Override
+ public STALResponse handleRequest(STALRequest request) {
+ if (++errorConter < 3) {
+ return new ErrorResponse(400);
+ }
+ return new InfoboxReadResponse();
+ }
+
+ @Override
+ public void init(SignatureCard sc, BKUGUIFacade gui) {
+ }
+
+ @Override
+ public boolean requireCard() {
+ return true;
+ }
+
+}
diff --git a/mocca-1.2.11/smccSTAL/src/test/resources/log4j.properties b/mocca-1.2.11/smccSTAL/src/test/resources/log4j.properties
new file mode 100644
index 00000000..053eac17
--- /dev/null
+++ b/mocca-1.2.11/smccSTAL/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/smccSTALExt/pom.xml b/mocca-1.2.11/smccSTALExt/pom.xml
new file mode 100644
index 00000000..5e71d69d
--- /dev/null
+++ b/mocca-1.2.11/smccSTALExt/pom.xml
@@ -0,0 +1,24 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>smccSTALExt</artifactId>
+ <version>1.2.11</version>
+ <name>smcc STAL Extension</name>
+ <dependencies>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>smccSTAL</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>BKUGuiExt</artifactId>
+ <version>${project.parent.version}</version>
+ </dependency>
+ </dependencies>
+</project> \ No newline at end of file
diff --git a/mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/pin/gui/ManagementPINGUI.java b/mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/pin/gui/ManagementPINGUI.java
new file mode 100644
index 00000000..26a24609
--- /dev/null
+++ b/mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/pin/gui/ManagementPINGUI.java
@@ -0,0 +1,88 @@
+/*
+ * 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.pin.gui;
+
+import at.gv.egiz.bku.gui.BKUGUIFacade;
+import at.gv.egiz.bku.gui.PINManagementGUIFacade;
+import at.gv.egiz.bku.gui.PINManagementGUIFacade.DIALOG;
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.PINSpec;
+import at.gv.egiz.smcc.pin.gui.ModifyPINGUI;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class ManagementPINGUI extends ManagementPINProvider implements ModifyPINGUI {
+
+ protected static final Log log = LogFactory.getLog(ManagementPINGUI.class);
+
+ private boolean retry = false;
+
+ public ManagementPINGUI(PINManagementGUIFacade gui, DIALOG type) {
+ super(gui, type);
+ }
+
+ @Override
+ public void modifyPINDirect(PINSpec spec, int retries)
+ throws CancelledException, InterruptedException {
+ gui.showModifyPINDirect(type, spec, (retry) ? retries : -1);
+ retry = true;
+ }
+
+ @Override
+ public void finishDirect() {
+ gui.showMessageDialog(BKUGUIFacade.TITLE_WAIT, BKUGUIFacade.MESSAGE_WAIT);
+ }
+
+ @Override
+ public void enterCurrentPIN(PINSpec spec, int retries) {
+ gui.showEnterCurrentPIN(type, spec, (retry) ? retries : -1);
+ retry = true;
+ }
+
+ @Override
+ public void enterNewPIN(PINSpec spec) {
+ gui.showEnterNewPIN(type, spec);
+ retry = true;
+ }
+
+ @Override
+ public void confirmNewPIN(PINSpec spec) {
+ gui.showConfirmNewPIN(type, spec);
+ retry = true;
+ }
+
+
+ @Override
+ public void validKeyPressed() {
+ gui.validKeyPressed();
+ }
+
+ @Override
+ public void correctionButtonPressed() {
+ gui.correctionButtonPressed();
+ }
+
+ @Override
+ public void allKeysCleared() {
+ gui.allKeysCleared();
+ }
+
+ @Override
+ public void finish() {
+ gui.showMessageDialog(BKUGUIFacade.TITLE_WAIT, BKUGUIFacade.MESSAGE_WAIT);
+ }
+}
diff --git a/mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/pin/gui/ManagementPINProvider.java b/mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/pin/gui/ManagementPINProvider.java
new file mode 100644
index 00000000..8d842d13
--- /dev/null
+++ b/mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/pin/gui/ManagementPINProvider.java
@@ -0,0 +1,89 @@
+/*
+ * 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.pin.gui;
+
+import at.gv.egiz.bku.gui.BKUGUIFacade;
+import at.gv.egiz.bku.gui.PINManagementGUIFacade;
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.PINSpec;
+import at.gv.egiz.smcc.pin.gui.ModifyPINProvider;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class ManagementPINProvider extends AbstractPINProvider implements ModifyPINProvider {
+
+ protected static final Log log = LogFactory.getLog(ManagementPINProvider.class);
+ protected PINManagementGUIFacade gui;
+ protected PINManagementGUIFacade.DIALOG type;
+ private boolean retry = false;
+
+ public ManagementPINProvider(PINManagementGUIFacade gui, PINManagementGUIFacade.DIALOG type) {
+ this.gui = gui;
+ this.type = type;
+ }
+
+ @Override
+ public char[] provideCurrentPIN(PINSpec spec, int retries)
+ throws CancelledException, InterruptedException {
+
+ gui.showPINDialog(type, spec, (retry) ? retries : -1,
+ this, "change",
+ this, "cancel");
+
+ log.trace("[" + Thread.currentThread().getName() + "] wait for action");
+ waitForAction();
+ log.trace("[" + Thread.currentThread().getName() + "] received action " + action);
+
+ gui.showMessageDialog(BKUGUIFacade.TITLE_WAIT,
+ BKUGUIFacade.MESSAGE_WAIT);
+
+ if ("cancel".equals(action)) {
+ throw new CancelledException(spec.getLocalizedName() +
+ " entry cancelled");
+ }
+ retry = true;
+ return gui.getOldPin();
+ }
+
+ @Override
+ public char[] provideNewPIN(PINSpec spec)
+ throws CancelledException, InterruptedException {
+
+ char[] pin = gui.getPin();
+ if (pin != null) {
+ // change pin dialog also returns new pin
+ return pin;
+ }
+
+ gui.showPINDialog(type, spec, -1,
+ this, "activate",
+ this, "cancel");
+
+ log.trace("[" + Thread.currentThread().getName() + "] wait for action");
+ waitForAction();
+ log.trace("[" + Thread.currentThread().getName() + "] received action " + action);
+
+ gui.showMessageDialog(BKUGUIFacade.TITLE_WAIT,
+ BKUGUIFacade.MESSAGE_WAIT);
+
+ if ("cancel".equals(action)) {
+ throw new CancelledException(spec.getLocalizedName() +
+ " entry cancelled");
+ }
+ return gui.getPin();
+ }
+}
diff --git a/mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/CardMgmtRequestHandler.java b/mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/CardMgmtRequestHandler.java
new file mode 100644
index 00000000..533206b3
--- /dev/null
+++ b/mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/CardMgmtRequestHandler.java
@@ -0,0 +1,177 @@
+/*
+* 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.smccstal;
+
+import at.gv.egiz.bku.gui.ActivationGUIFacade;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.smartcardio.Card;
+import javax.smartcardio.CardChannel;
+import javax.smartcardio.CardException;
+import javax.smartcardio.CommandAPDU;
+import javax.smartcardio.ResponseAPDU;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import at.gv.egiz.bku.smccstal.AbstractRequestHandler;
+import at.gv.egiz.smcc.SignatureCardException;
+import at.gv.egiz.stal.ErrorResponse;
+import at.gv.egiz.stal.STALRequest;
+import at.gv.egiz.stal.STALResponse;
+import at.gv.egiz.stal.ext.APDUScriptRequest;
+import at.gv.egiz.stal.ext.APDUScriptResponse;
+import at.gv.egiz.stal.ext.APDUScriptRequest.Command;
+import at.gv.egiz.stal.ext.APDUScriptRequest.RequestScriptElement;
+import at.gv.egiz.stal.ext.APDUScriptRequest.Reset;
+import at.gv.egiz.stal.ext.APDUScriptResponse.Response;
+import at.gv.egiz.stal.ext.APDUScriptResponse.ATR;
+import at.gv.egiz.stal.ext.APDUScriptResponse.ResponseScriptElement;
+import java.awt.event.ActionListener;
+
+/**
+ * @author mcentner
+ *
+ */
+public class CardMgmtRequestHandler extends AbstractRequestHandler implements ActionListener {
+
+ /**
+ * Logging facility.
+ */
+ private static Log log = LogFactory.getLog(CardMgmtRequestHandler.class);
+
+ /**
+ * The sequence counter.
+ */
+ private int sequenceNum = 0;
+
+ /**
+ * display script num
+ */
+ private int currentActivationScript = 0;
+
+ @Override
+ public STALResponse handleRequest(STALRequest request)
+ throws InterruptedException {
+
+ // APDU Script Request
+ if (request instanceof APDUScriptRequest) {
+
+ currentActivationScript++;
+ log.debug("handling APDU script " + currentActivationScript);
+
+ Card icc = card.getCard();
+
+ if (icc == null) {
+ log.error("SignatureCard instance '" + card.getClass().getName() + "' does not support card management requests.");
+ return new ErrorResponse(1000);
+ }
+
+ List<RequestScriptElement> script = ((APDUScriptRequest) request).getScript();
+ ArrayList<ResponseScriptElement> responses = new ArrayList<ResponseScriptElement>(script.size());
+
+ ((ActivationGUIFacade) gui).showActivationProgressDialog(currentActivationScript, script.size(), this, "cancel");
+
+ try {
+ log.trace("begin exclusive");
+ icc.beginExclusive();
+
+ for (RequestScriptElement scriptElement : script) {
+ ((ActivationGUIFacade) gui).incrementProgress();
+
+ if (scriptElement instanceof Command) {
+ log.trace("handling APDU script element COMMAND");
+ Command command = (Command) scriptElement;
+ CommandAPDU commandAPDU = new CommandAPDU(command.getCommandAPDU());
+
+ log.trace("get basicchannel");
+ CardChannel channel = icc.getBasicChannel();
+
+ sequenceNum = command.getSequence();
+ log.debug("Transmit APDU (sequence=" + sequenceNum + ")");
+ log.trace(commandAPDU.toString());
+ ResponseAPDU responseAPDU = channel.transmit(commandAPDU);
+ log.trace(responseAPDU.toString());
+
+ byte[] sw = new byte[] {
+ (byte) (0xFF & responseAPDU.getSW1()),
+ (byte) (0xFF & responseAPDU.getSW2()) };
+
+ responses.add(new Response(sequenceNum, responseAPDU.getData(), sw, 0));
+
+ if (command.getExpectedSW() != null &&
+ !Arrays.equals(sw, command.getExpectedSW())) {
+ // unexpected SW
+ log.warn("Got unexpected SW. APDU-script execution stopped.");
+ break;
+ }
+
+ } else if (scriptElement instanceof Reset) {
+
+ log.trace("handling APDU script element RESET");
+ sequenceNum = 0;
+ card.reset();
+ javax.smartcardio.ATR atr = icc.getATR();
+ log.trace("got ATR: " + atr.toString());
+ responses.add(new ATR(atr.getBytes()));
+
+ log.trace("regain exclusive access to card");
+ icc = card.getCard();
+ icc.beginExclusive();
+ }
+
+ }
+
+ } catch (CardException e) {
+ log.info("Failed to execute APDU script.", e);
+ responses.add(new Response(sequenceNum, null, null, Response.RC_UNSPECIFIED));
+ } catch (SignatureCardException e) {
+ log.info("Failed to reset smart card.", e);
+ responses.add(new Response(sequenceNum, null, null, Response.RC_UNSPECIFIED));
+ } catch (RuntimeException e) {
+ log.error(e);
+ throw e;
+ } finally {
+ try {
+ icc.endExclusive();
+ } catch (CardException e) {
+ log.info(e);
+ }
+ }
+
+ log.trace("done handling APDU script " + currentActivationScript + ", return response containing " + responses.size() + " elements");
+ ((ActivationGUIFacade) gui).showIdleDialog(this, "cancel");
+ return new APDUScriptResponse(responses);
+
+ } else {
+ log.error("Got unexpected STAL request: " + request);
+ return new ErrorResponse(1000);
+ }
+
+ }
+
+ @Override
+ public boolean requireCard() {
+ return true;
+ }
+
+}
diff --git a/mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/GetPINStatusException.java b/mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/GetPINStatusException.java
new file mode 100644
index 00000000..66b15887
--- /dev/null
+++ b/mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/GetPINStatusException.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.smccstal;
+
+import at.gv.egiz.smcc.SignatureCardException;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class GetPINStatusException extends SignatureCardException {
+
+ /**
+ * Creates a new instance of <code>GetStatusException</code> without detail message.
+ */
+ public GetPINStatusException() {
+ }
+
+
+ /**
+ * Constructs an instance of <code>GetStatusException</code> with the specified detail message.
+ * @param msg the detail message.
+ */
+ public GetPINStatusException(String msg) {
+ super(msg);
+ }
+}
diff --git a/mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/PINManagementRequestHandler.java b/mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/PINManagementRequestHandler.java
new file mode 100644
index 00000000..f87f43f7
--- /dev/null
+++ b/mocca-1.2.11/smccSTALExt/src/main/java/at/gv/egiz/bku/smccstal/PINManagementRequestHandler.java
@@ -0,0 +1,371 @@
+/*
+ * 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.smccstal;
+
+import java.util.HashMap;
+import java.util.Map;
+
+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.PINManagementGUI;
+import at.gv.egiz.bku.gui.PINManagementGUIFacade;
+import at.gv.egiz.bku.gui.PINManagementGUIFacade.STATUS;
+import at.gv.egiz.bku.pin.gui.ManagementPINGUI;
+import at.gv.egiz.bku.pin.gui.VerifyPINGUI;
+import at.gv.egiz.smcc.CancelledException;
+import at.gv.egiz.smcc.LockedException;
+import at.gv.egiz.smcc.NotActivatedException;
+import at.gv.egiz.smcc.PINConfirmationException;
+import at.gv.egiz.smcc.PINFormatException;
+import at.gv.egiz.smcc.PINMgmtSignatureCard;
+import at.gv.egiz.smcc.PINOperationAbortedException;
+import at.gv.egiz.smcc.PINSpec;
+import at.gv.egiz.smcc.SignatureCardException;
+import at.gv.egiz.smcc.TimeoutException;
+import at.gv.egiz.smcc.PINMgmtSignatureCard.PIN_STATE;
+import at.gv.egiz.smcc.SignatureCard.KeyboxName;
+import at.gv.egiz.stal.ErrorResponse;
+import at.gv.egiz.stal.STALRequest;
+import at.gv.egiz.stal.STALResponse;
+import at.gv.egiz.stal.ext.PINManagementRequest;
+import at.gv.egiz.stal.ext.PINManagementResponse;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class PINManagementRequestHandler extends AbstractRequestHandler {
+
+ protected static final Log log = LogFactory.getLog(PINManagementRequestHandler.class);
+
+ protected Map<PINSpec, STATUS> pinStates = new HashMap<PINSpec, STATUS>();
+
+ @Override
+ public STALResponse handleRequest(STALRequest request) throws InterruptedException {
+ if (request instanceof PINManagementRequest) {
+
+ PINManagementGUIFacade gui = (PINManagementGUIFacade) this.gui;
+
+ PINSpec selectedPIN = null;
+
+ try {
+
+ if (card instanceof PINMgmtSignatureCard) {
+
+ try {
+ // check if activated
+ card.getCertificate(KeyboxName.SECURE_SIGNATURE_KEYPAIR);
+
+ // update all PIN states
+ for (PINSpec pinSpec : ((PINMgmtSignatureCard) card).getPINSpecs()) {
+ updatePINState(pinSpec, STATUS.UNKNOWN);
+ }
+
+ gui.showPINManagementDialog(pinStates, this, "activate_enterpin",
+ "change_enterpin", "unblock_enterpuk", "verify_enterpin", this,
+ "cancel");
+
+ } catch (NotActivatedException ex) {
+ log.error("pin management not allowed, card not activated");
+ gui.showErrorDialog(PINManagementGUIFacade.ERR_CARD_NOTACTIVATED,
+ null, this, "cancel");
+ }
+ } else {
+
+ // card does not support PIN management
+ gui.showErrorDialog(PINManagementGUIFacade.ERR_UNSUPPORTED_CARD,
+ null, this, "cancel");
+
+ }
+
+ while (true) {
+
+ waitForAction();
+
+ if ("cancel".equals(actionCommand)) {
+ log.debug("pin management cancel");
+ return new PINManagementResponse();
+ } else {
+ selectedPIN = gui.getSelectedPINSpec();
+
+ if (selectedPIN == null) {
+ throw new NullPointerException("no PIN selected for activation/change");
+ }
+
+ try {
+ if ("activate_enterpin".equals(actionCommand)) {
+ activatePIN(selectedPIN);
+ } else if ("change_enterpin".equals(actionCommand)) {
+ changePIN(selectedPIN);
+ } else if ("unblock_enterpuk".equals(actionCommand)) {
+ unblockPIN(selectedPIN);
+ } else if ("verify_enterpin".equals(actionCommand)) {
+ verifyPIN(selectedPIN);
+ }
+ } catch (CancelledException ex) {
+ log.trace("cancelled");
+ } catch (TimeoutException ex) {
+ log.error("Timeout during pin entry");
+ gui.showMessageDialog(BKUGUIFacade.TITLE_ENTRY_TIMEOUT,
+ BKUGUIFacade.ERR_PIN_TIMEOUT,
+ new Object[] {selectedPIN.getLocalizedName()},
+ BKUGUIFacade.BUTTON_OK, this, null);
+ waitForAction();
+ } catch (LockedException ex) {
+ log.error(selectedPIN.getLocalizedName() + " locked");
+ updatePINState(selectedPIN, STATUS.BLOCKED);
+ gui.showErrorDialog(PINManagementGUIFacade.ERR_LOCKED,
+ new Object[] {selectedPIN.getLocalizedName()},
+ this, null);
+ waitForAction();
+ } catch (NotActivatedException ex) {
+ log.error(selectedPIN.getLocalizedName() + " not active");
+ updatePINState(selectedPIN, STATUS.NOT_ACTIV);
+ gui.showErrorDialog(PINManagementGUIFacade.ERR_NOT_ACTIVE,
+ new Object[] {selectedPIN.getLocalizedName()},
+ this, null);
+ waitForAction();
+
+ // inner loop for pinConfirmation and pinFormat ex
+// } catch (PINConfirmationException ex) {
+// } catch (PINFormatException ex) {
+
+ } catch (PINOperationAbortedException ex) {
+ log.error("pin operation aborted without further details");
+ gui.showErrorDialog(PINManagementGUIFacade.ERR_PIN_OPERATION_ABORTED,
+ new Object[] {selectedPIN.getLocalizedName()},
+ this, null);
+ waitForAction();
+ }
+ } // end if
+
+ selectedPIN = null;
+ gui.showPINManagementDialog(pinStates,
+ this, "activate_enterpin", "change_enterpin", "unblock_enterpuk", "verify_enterpin",
+ this, "cancel");
+ } // end while
+
+ } catch (GetPINStatusException ex) {
+ String pin = (selectedPIN != null) ? selectedPIN.getLocalizedName() : "pin";
+ log.error("failed to get " + pin + " status: " + ex.getMessage());
+ gui.showErrorDialog(PINManagementGUIFacade.ERR_STATUS, null,
+ this, "ok");
+ waitForAction();
+ return new ErrorResponse(1000);
+ } catch (SignatureCardException ex) {
+ log.error(ex.getMessage(), ex);
+ gui.showErrorDialog(PINManagementGUIFacade.ERR_UNKNOWN, null,
+ this, "ok");
+ waitForAction();
+ return new ErrorResponse(1000);
+ }
+ } else {
+ log.error("Got unexpected STAL request: " + request);
+ return new ErrorResponse(1000);
+ }
+ }
+
+ private void activatePIN(PINSpec selectedPIN)
+ throws InterruptedException, SignatureCardException, GetPINStatusException {
+
+ log.info("activate " + selectedPIN.getLocalizedName());
+ ManagementPINGUI pinGUI = new ManagementPINGUI((PINManagementGUIFacade) gui,
+ PINManagementGUIFacade.DIALOG.ACTIVATE);
+
+ boolean reentry;
+ do {
+ try {
+ reentry = false;
+ ((PINMgmtSignatureCard) card).activatePIN(selectedPIN, pinGUI);
+ } catch (PINConfirmationException ex) {
+ reentry = true;
+ log.error("confirmation pin does not match new " + selectedPIN.getLocalizedName());
+ gui.showErrorDialog(PINManagementGUIFacade.ERR_PIN_CONFIRMATION,
+ new Object[] {selectedPIN.getLocalizedName()},
+ this, null);
+ waitForAction();
+ } catch (PINFormatException ex) {
+ reentry = true;
+ log.error("wrong format of new " + selectedPIN.getLocalizedName());
+ String pinSize = String.valueOf(selectedPIN.getMinLength());
+ if (selectedPIN.getMinLength() != selectedPIN.getMaxLength()) {
+ pinSize += "-" + selectedPIN.getMaxLength();
+ }
+ gui.showErrorDialog(PINManagementGUIFacade.ERR_PIN_FORMAT,
+ new Object[] {selectedPIN.getLocalizedName(), pinSize},
+ this, null);
+ waitForAction();
+ }
+ } while (reentry);
+
+ updatePINState(selectedPIN, STATUS.ACTIV);
+ gui.showMessageDialog(PINManagementGUIFacade.TITLE_ACTIVATE_SUCCESS,
+ PINManagementGUIFacade.MESSAGE_ACTIVATE_SUCCESS,
+ new Object[]{selectedPIN.getLocalizedName()},
+ BKUGUIFacade.BUTTON_OK, this, "ok");
+ waitForAction();
+ }
+
+ private void verifyPIN(PINSpec selectedPIN)
+ throws InterruptedException, SignatureCardException, GetPINStatusException {
+
+ log.info("verify " + selectedPIN.getLocalizedName());
+ VerifyPINGUI pinGUI = new VerifyPINGUI(gui);
+
+ boolean reentry;
+ do {
+ try {
+ reentry = false;
+ ((PINMgmtSignatureCard) card).verifyPIN(selectedPIN, pinGUI);
+ } catch (PINFormatException ex) {
+ reentry = true;
+ log.error("wrong format of new " + selectedPIN.getLocalizedName());
+ String pinSize = String.valueOf(selectedPIN.getMinLength());
+ if (selectedPIN.getMinLength() != selectedPIN.getMaxLength()) {
+ pinSize += "-" + selectedPIN.getMaxLength();
+ }
+ gui.showErrorDialog(PINManagementGUIFacade.ERR_PIN_FORMAT,
+ new Object[] {selectedPIN.getLocalizedName(), pinSize},
+ this, null);
+ waitForAction();
+ }
+ } while (reentry);
+
+ updatePINState(selectedPIN, STATUS.ACTIV);
+ }
+
+ private void changePIN(PINSpec selectedPIN)
+ throws SignatureCardException, GetPINStatusException, InterruptedException {
+
+ log.info("change " + selectedPIN.getLocalizedName());
+ ManagementPINGUI pinGUI = new ManagementPINGUI((PINManagementGUIFacade) gui,
+ PINManagementGUIFacade.DIALOG.CHANGE);
+
+ boolean reentry;
+ do {
+ try {
+ reentry = false;
+ ((PINMgmtSignatureCard) card).changePIN(selectedPIN, pinGUI);
+ } catch (PINConfirmationException ex) {
+ reentry = true;
+ log.error("confirmation pin does not match new " + selectedPIN.getLocalizedName());
+ gui.showErrorDialog(PINManagementGUIFacade.ERR_PIN_CONFIRMATION,
+ new Object[] {selectedPIN.getLocalizedName()},
+ this, null);
+ waitForAction();
+ } catch (PINFormatException ex) {
+ reentry = true;
+ log.error("wrong format of new " + selectedPIN.getLocalizedName());
+ String pinSize = String.valueOf(selectedPIN.getMinLength());
+ if (selectedPIN.getMinLength() != selectedPIN.getMaxLength()) {
+ pinSize += "-" + selectedPIN.getMaxLength();
+ }
+ gui.showErrorDialog(PINManagementGUIFacade.ERR_PIN_FORMAT,
+ new Object[] {selectedPIN.getLocalizedName(), pinSize},
+ this, null);
+ waitForAction();
+ }
+ } while (reentry);
+
+ updatePINState(selectedPIN, STATUS.ACTIV);
+ gui.showMessageDialog(PINManagementGUIFacade.TITLE_CHANGE_SUCCESS,
+ PINManagementGUIFacade.MESSAGE_CHANGE_SUCCESS,
+ new Object[]{selectedPIN.getLocalizedName()},
+ BKUGUIFacade.BUTTON_OK, this, "ok");
+ waitForAction();
+ }
+
+ private void unblockPIN(PINSpec selectedPIN)
+ throws SignatureCardException, GetPINStatusException, InterruptedException {
+
+ log.info("unblock " + selectedPIN.getLocalizedName());
+ ManagementPINGUI pinGUI = new ManagementPINGUI((PINManagementGUIFacade) gui,
+ PINManagementGUIFacade.DIALOG.UNBLOCK);
+
+ boolean reentry;
+ do {
+ try {
+ reentry = false;
+ ((PINMgmtSignatureCard) card).unblockPIN(selectedPIN, pinGUI);
+ } catch (PINConfirmationException ex) {
+ reentry = true;
+ log.error("confirmation pin does not match new " + selectedPIN.getLocalizedName());
+ gui.showErrorDialog(PINManagementGUIFacade.ERR_PIN_CONFIRMATION,
+ new Object[] {selectedPIN.getLocalizedName()},
+ this, null);
+ waitForAction();
+ } catch (PINFormatException ex) {
+ reentry = true;
+ log.error("wrong format of new " + selectedPIN.getLocalizedName());
+ String pinSize = String.valueOf(selectedPIN.getMinLength());
+ if (selectedPIN.getMinLength() != selectedPIN.getMaxLength()) {
+ pinSize += "-" + selectedPIN.getMaxLength();
+ }
+ gui.showErrorDialog(PINManagementGUIFacade.ERR_PIN_FORMAT,
+ new Object[] {selectedPIN.getLocalizedName(), pinSize},
+ this, null);
+ waitForAction();
+ }
+ } while (reentry);
+
+ updatePINState(selectedPIN, STATUS.ACTIV);
+ gui.showMessageDialog(PINManagementGUIFacade.TITLE_UNBLOCK_SUCCESS,
+ PINManagementGUIFacade.MESSAGE_UNBLOCK_SUCCESS,
+ new Object[]{selectedPIN.getLocalizedName()},
+ BKUGUIFacade.BUTTON_OK, this, "ok");
+ waitForAction();
+ }
+
+ @Override
+ public boolean requireCard() {
+ return true;
+ }
+
+ /**
+ * query status for STARCOS card,
+ * assume provided status for ACOS card
+ * @param pinSpec
+ * @param status
+ * @throws at.gv.egiz.smcc.SignatureCardException if query status fails
+ */
+ private void updatePINState(PINSpec pinSpec, STATUS status)
+ throws GetPINStatusException {
+
+ PINMgmtSignatureCard pmCard = ((PINMgmtSignatureCard) card);
+ PIN_STATE pinState;
+ try {
+ pinState = pmCard.getPINState(pinSpec);
+ } catch (SignatureCardException e) {
+ String msg = "Failed to get PIN status for pin '"
+ + pinSpec.getLocalizedName() + "'.";
+ log.info(msg, e);
+ throw new GetPINStatusException(msg);
+ }
+ if (pinState == PIN_STATE.ACTIV) {
+ pinStates.put(pinSpec, STATUS.ACTIV);
+ } else if (pinState == PIN_STATE.NOT_ACTIV) {
+ pinStates.put(pinSpec, STATUS.NOT_ACTIV);
+ } else if (pinState == PIN_STATE.BLOCKED) {
+ pinStates.put(pinSpec, STATUS.BLOCKED);
+ } else {
+ pinStates.put(pinSpec, status);
+ }
+ }
+
+}
diff --git a/mocca-1.2.11/src/main/site/apt/index.apt b/mocca-1.2.11/src/main/site/apt/index.apt
new file mode 100644
index 00000000..026d7bb0
--- /dev/null
+++ b/mocca-1.2.11/src/main/site/apt/index.apt
@@ -0,0 +1,104 @@
+ ------
+ MOCCA
+ ------
+ Egiz
+ ------
+ Date
+
+ Paragraph 1, line 1.
+ Paragraph 1, line 2.
+
+ Paragraph 2, line 1.
+ Paragraph 2, line 2.
+
+Section title
+
+* Sub-section title
+
+** Sub-sub-section title
+
+*** Sub-sub-sub-section title
+
+**** Sub-sub-sub-sub-section title
+
+ * List item 1.
+
+ * List item 2.
+
+ Paragraph contained in list item 2.
+
+ * Sub-list item 1.
+
+ * Sub-list item 2.
+
+ * List item 3.
+ Force end of list:
+
+ []
+
++------------------------------------------+
+Verbatim text not contained in list item 3
++------------------------------------------+
+
+ [[1]] Numbered item 1.
+
+ [[A]] Numbered item A.
+
+ [[B]] Numbered item B.
+
+ [[2]] Numbered item 2.
+
+ List numbering schemes: [[1]], [[a]], [[A]], [[i]], [[I]].
+
+ [Defined term 1] of definition list.
+
+ [Defined term 2] of definition list.
+
++-------------------------------+
+Verbatim text
+ in a box
++-------------------------------+
+
+ --- instead of +-- suppresses the box around verbatim text.
+
+[Figure name] Figure caption
+
+*----------*--------------+----------------:
+| Centered | Left-aligned | Right-aligned |
+| cell 1,1 | cell 1,2 | cell 1,3 |
+*----------*--------------+----------------:
+| cell 2,1 | cell 2,2 | cell 2,3 |
+*----------*--------------+----------------:
+Table caption
+
+ No grid, no caption:
+
+*-----*------*
+ cell | cell
+*-----*------*
+ cell | cell
+*-----*------*
+
+ Horizontal line:
+
+=======================================================================
+
+^L
+ New page.
+
+ <Italic> font. <<Bold>> font. <<<Monospaced>>> font.
+
+ {Anchor}. Link to {{anchor}}. Link to {{http://www.pixware.fr}}.
+ Link to {{{anchor}showing alternate text}}.
+ Link to {{{http://www.pixware.fr}Pixware home page}}.
+
+ Force line\
+ break.
+
+ Non\ breaking\ space.
+
+ Escaped special characters: \~, \=, \-, \+, \*, \[, \], \<, \>, \{, \}, \\.
+
+ Copyright symbol: \251, \xA9, \u00a9.
+
+~~Commented out. \ No newline at end of file
diff --git a/mocca-1.2.11/src/main/site/apt/notes.apt b/mocca-1.2.11/src/main/site/apt/notes.apt
new file mode 100644
index 00000000..f224de43
--- /dev/null
+++ b/mocca-1.2.11/src/main/site/apt/notes.apt
@@ -0,0 +1,4 @@
+
+ make include-webstart profile active via settings.xml,
+ otherwise reactor fails to calculate the correct build
+ order (BKUWebStart prior to BKUOnline) \ No newline at end of file
diff --git a/mocca-1.2.11/src/main/site/site.xml b/mocca-1.2.11/src/main/site/site.xml
new file mode 100644
index 00000000..f72f52bf
--- /dev/null
+++ b/mocca-1.2.11/src/main/site/site.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<project name="MOCCA">
+ <publishDate position="right"/>
+ <bannerLeft>
+ <name>MOCCA</name>
+ <src>http://mocca.egovlabs.gv.at/mocca-t_s.png</src>
+ <href>http://mocca.egovlabs.gv.at/</href>
+ </bannerLeft>
+
+ <body>
+ <links>
+ <item name="Apache" href="http://www.apache.org/" />
+ <item name="Maven 1.x" href="http://maven.apache.org/maven-1.x/"/>
+ <item name="Maven 2" href="http://maven.apache.org/"/>
+ </links>
+
+ <menu name="MOCCA">
+ <item name="Introduction" href="index.html"/>
+ <item name="Download" href="download.html"/>
+ <item name="Release Notes" href="release-notes.html" />
+ <item name="General Information" href="about.html"/>
+ <item name="Road Map" href="roadmap.html" />
+ </menu>
+
+ <menu ref="reports"/>
+
+ </body>
+
+</project> \ No newline at end of file
diff --git a/mocca-1.2.11/utils/pom.xml b/mocca-1.2.11/utils/pom.xml
new file mode 100644
index 00000000..9c5e4fa0
--- /dev/null
+++ b/mocca-1.2.11/utils/pom.xml
@@ -0,0 +1,77 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>bku</artifactId>
+ <groupId>at.gv.egiz</groupId>
+ <version>1.2.11</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>at.gv.egiz</groupId>
+ <artifactId>utils</artifactId>
+ <name>BKU Utils</name>
+ <packaging>jar</packaging>
+ <version>1.2.11</version>
+ <url>http://bku.egiz.gv.at</url>
+ <build>
+ <plugins>
+ <!--
+ the unpack goal binds by default to process-sources | also works
+ until phase prepare-package <plugin>
+ <artifactId>maven-dependency-plugin</artifactId> <executions>
+ <execution> <id>unpack</id> <goals> <goal>unpack</goal> </goals>
+ <configuration>
+ <outputDirectory>${project.build.outputDirectory}</outputDirectory>
+ <excludes>META-INF\/</excludes> <artifactItems> <artifactItem>
+ <groupId>at.gv.egiz</groupId> <artifactId>slbinding</artifactId>
+ <type>jar</type> </artifactItem> <artifactItem>
+ <groupId>at.gv.egiz</groupId> <artifactId>idlink</artifactId>
+ <type>jar</type> </artifactItem> </artifactItems> </configuration>
+ </execution> </executions> </plugin -->
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_jce_full_signed</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_ecc_signed</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>iaik</groupId>
+ <artifactId>iaik_xsect</artifactId>
+ </dependency>
+ <!-- dependency to ensure NamespacePrefixmapper -->
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ </dependency>
+ </dependencies>
+ <!--
+ add dependencies to determine build order of BKU modules | (scope
+ provided -> don't include dependencies in assembly) <dependencies>
+ <dependency> <groupId>at.gv.egiz</groupId>
+ <artifactId>slbinding</artifactId> <version>1.0.0-SNAPSHOTOT</version>
+ <scope>provided</scope> </dependency> <dependency>
+ <groupId>at.gv.egiz</groupId> <artifactId>idlink</artifactId>
+ <versio1.0.0-SNAPSHOTSHOT</version> <scope>provided</scope> </dependency>
+ </dependencies -->
+ <!--
+ repositories> <repository> <id>maven2-repository.dev.java.net</id>
+ <name>Java.net Maven 2 Repository</name>
+ <url>http://download.java.net/maven/2</url> </repository> <repository>
+ <id>maven-repository.dev.java.net</id> <name>Java.net Maven 1
+ Repository (legacy)</name> <url>http://download.java.net/maven/1</url>
+ <layout>legacy</layout> </repository> </repositories>
+ <pluginRepositories> <pluginRepository>
+ <id>maven2-repository.dev.java.net</id> <name>Java.net Maven 2
+ Repository</name> <url>http://download.java.net/maven/2</url>
+ </pluginRepository> <pluginRepository>
+ <id>maven-repository.dev.java.net</id> <name>Java.net Maven 1
+ Repository (legacy)</name> <url>http://download.java.net/maven/1</url>
+ <layout>legacy</layout> </pluginRepository> </pluginRepositories -->
+</project> \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/main/java/META-INF/MANIFEST.MF b/mocca-1.2.11/utils/src/main/java/META-INF/MANIFEST.MF
new file mode 100644
index 00000000..5e949512
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/META-INF/MANIFEST.MF
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path:
+
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ATRType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ATRType.java
new file mode 100644
index 00000000..9620e66b
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ATRType.java
@@ -0,0 +1,100 @@
+
+package at.buergerkarte.namespaces.cardchannel;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Contains the ATR received as reponse to a Reset
+ * command
+ *
+ * <p>Java class for ATRType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ATRType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>hexBinary">
+ * &lt;attribute name="rc" type="{http://www.w3.org/2001/XMLSchema}integer" default="0" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ATRType", propOrder = {
+ "value"
+})
+public class ATRType {
+
+ @XmlValue
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ @XmlSchemaType(name = "hexBinary")
+ protected byte[] value;
+ @XmlAttribute
+ protected BigInteger rc;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public byte[] getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(byte[] value) {
+ this.value = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the rc property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getRc() {
+ if (rc == null) {
+ return new BigInteger("0");
+ } else {
+ return rc;
+ }
+ }
+
+ /**
+ * Sets the value of the rc property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setRc(BigInteger value) {
+ this.rc = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/AttributeList.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/AttributeList.java
new file mode 100644
index 00000000..70ad7b91
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/AttributeList.java
@@ -0,0 +1,71 @@
+
+package at.buergerkarte.namespaces.cardchannel;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Contains a list of attributes
+ *
+ * <p>Java class for AttributeList complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AttributeList">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Attribute" type="{}AttributeType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AttributeList", propOrder = {
+ "attribute"
+})
+public class AttributeList {
+
+ @XmlElement(name = "Attribute")
+ protected List<AttributeType> attribute;
+
+ /**
+ * Gets the value of the attribute property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the attribute property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAttribute().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link AttributeType }
+ *
+ *
+ */
+ public List<AttributeType> getAttribute() {
+ if (attribute == null) {
+ attribute = new ArrayList<AttributeType>();
+ }
+ return this.attribute;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/AttributeType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/AttributeType.java
new file mode 100644
index 00000000..60d467e0
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/AttributeType.java
@@ -0,0 +1,264 @@
+
+package at.buergerkarte.namespaces.cardchannel;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * Contains an attribute converted from ASN.1
+ *
+ * <p>Java class for AttributeType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AttributeType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Integer" type="{http://www.w3.org/2001/XMLSchema}integer" minOccurs="0"/>
+ * &lt;element name="Latin1String" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="UTF8String" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="NumericString" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="PrintableString" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="GeneralizedTime" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
+ * &lt;element name="Date" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="oid" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AttributeType", propOrder = {
+ "integer",
+ "latin1String",
+ "utf8String",
+ "numericString",
+ "printableString",
+ "generalizedTime",
+ "date"
+})
+public class AttributeType {
+
+ @XmlElement(name = "Integer")
+ protected BigInteger integer;
+ @XmlElement(name = "Latin1String")
+ protected String latin1String;
+ @XmlElement(name = "UTF8String")
+ protected String utf8String;
+ @XmlElement(name = "NumericString")
+ protected String numericString;
+ @XmlElement(name = "PrintableString")
+ protected String printableString;
+ @XmlElement(name = "GeneralizedTime")
+ @XmlSchemaType(name = "dateTime")
+ protected XMLGregorianCalendar generalizedTime;
+ @XmlElement(name = "Date")
+ protected String date;
+ @XmlAttribute(required = true)
+ protected String oid;
+
+ /**
+ * Gets the value of the integer property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getInteger() {
+ return integer;
+ }
+
+ /**
+ * Sets the value of the integer property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setInteger(BigInteger value) {
+ this.integer = value;
+ }
+
+ /**
+ * Gets the value of the latin1String property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getLatin1String() {
+ return latin1String;
+ }
+
+ /**
+ * Sets the value of the latin1String property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setLatin1String(String value) {
+ this.latin1String = value;
+ }
+
+ /**
+ * Gets the value of the utf8String property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getUTF8String() {
+ return utf8String;
+ }
+
+ /**
+ * Sets the value of the utf8String property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setUTF8String(String value) {
+ this.utf8String = value;
+ }
+
+ /**
+ * Gets the value of the numericString property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getNumericString() {
+ return numericString;
+ }
+
+ /**
+ * Sets the value of the numericString property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setNumericString(String value) {
+ this.numericString = value;
+ }
+
+ /**
+ * Gets the value of the printableString property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getPrintableString() {
+ return printableString;
+ }
+
+ /**
+ * Sets the value of the printableString property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPrintableString(String value) {
+ this.printableString = value;
+ }
+
+ /**
+ * Gets the value of the generalizedTime property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public XMLGregorianCalendar getGeneralizedTime() {
+ return generalizedTime;
+ }
+
+ /**
+ * Sets the value of the generalizedTime property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public void setGeneralizedTime(XMLGregorianCalendar value) {
+ this.generalizedTime = value;
+ }
+
+ /**
+ * Gets the value of the date property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getDate() {
+ return date;
+ }
+
+ /**
+ * Sets the value of the date property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setDate(String value) {
+ this.date = value;
+ }
+
+ /**
+ * Gets the value of the oid property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getOid() {
+ return oid;
+ }
+
+ /**
+ * Sets the value of the oid property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setOid(String value) {
+ this.oid = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/CommandAPDUType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/CommandAPDUType.java
new file mode 100644
index 00000000..b47359b6
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/CommandAPDUType.java
@@ -0,0 +1,154 @@
+
+package at.buergerkarte.namespaces.cardchannel;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Contains a sequence of bytes send as command APDU to the
+ * icc
+ *
+ * <p>Java class for CommandAPDUType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CommandAPDUType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>hexBinary">
+ * &lt;attribute name="sequence" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
+ * &lt;attribute name="of" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
+ * &lt;attribute name="expectedSW" type="{http://www.w3.org/2001/XMLSchema}hexBinary" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CommandAPDUType", propOrder = {
+ "value"
+})
+public class CommandAPDUType {
+
+ @XmlValue
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ @XmlSchemaType(name = "hexBinary")
+ protected byte[] value;
+ @XmlAttribute(required = true)
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger sequence;
+ @XmlAttribute(required = true)
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger of;
+ @XmlAttribute
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ @XmlSchemaType(name = "hexBinary")
+ protected byte[] expectedSW;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public byte[] getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(byte[] value) {
+ this.value = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the sequence property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getSequence() {
+ return sequence;
+ }
+
+ /**
+ * Sets the value of the sequence property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setSequence(BigInteger value) {
+ this.sequence = value;
+ }
+
+ /**
+ * Gets the value of the of property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getOf() {
+ return of;
+ }
+
+ /**
+ * Sets the value of the of property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setOf(BigInteger value) {
+ this.of = value;
+ }
+
+ /**
+ * Gets the value of the expectedSW property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public byte[] getExpectedSW() {
+ return expectedSW;
+ }
+
+ /**
+ * Sets the value of the expectedSW property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setExpectedSW(byte[] value) {
+ this.expectedSW = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ObjectFactory.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ObjectFactory.java
new file mode 100644
index 00000000..29124935
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ObjectFactory.java
@@ -0,0 +1,171 @@
+
+package at.buergerkarte.namespaces.cardchannel;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each
+ * Java content interface and Java element interface
+ * generated in the at.buergerkarte.namespaces.cardchannel package.
+ * <p>An ObjectFactory allows you to programatically
+ * construct new instances of the Java representation
+ * for XML content. The Java representation of XML
+ * content can consist of schema derived interfaces
+ * and classes representing the binding of schema
+ * type definitions, element declarations and model
+ * groups. Factory methods for each of these are
+ * provided in this class.
+ *
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _Grunddaten_QNAME = new QName("", "Grunddaten");
+ private final static QName _Script_QNAME = new QName("", "Script");
+ /** A-Trust expects <pre>&lt;Result></pre> instead of <pre>&lt;Response></pre> */
+ private final static QName _Response_QNAME = new QName("", "Result"); //Response");
+ private final static QName _SVPersonenbindung_QNAME = new QName("", "SV-Personenbindung");
+ private final static QName _Status_QNAME = new QName("", "Status");
+ private final static QName _EHIC_QNAME = new QName("", "EHIC");
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: at.buergerkarte.namespaces.cardchannel
+ *
+ */
+ public ObjectFactory() {
+ }
+
+ /**
+ * Create an instance of {@link AttributeList }
+ *
+ */
+ public AttributeList createAttributeList() {
+ return new AttributeList();
+ }
+
+ /**
+ * Create an instance of {@link AttributeType }
+ *
+ */
+ public AttributeType createAttributeType() {
+ return new AttributeType();
+ }
+
+ /**
+ * Create an instance of {@link ScriptType }
+ *
+ */
+ public ScriptType createScriptType() {
+ return new ScriptType();
+ }
+
+ /**
+ * Create an instance of {@link ATRType }
+ *
+ */
+ public ATRType createATRType() {
+ return new ATRType();
+ }
+
+ /**
+ * Create an instance of {@link CommandAPDUType }
+ *
+ */
+ public CommandAPDUType createCommandAPDUType() {
+ return new CommandAPDUType();
+ }
+
+ /**
+ * Create an instance of {@link ResetType }
+ *
+ */
+ public ResetType createResetType() {
+ return new ResetType();
+ }
+
+ /**
+ * Create an instance of {@link VerifyAPDUType }
+ *
+ */
+ public VerifyAPDUType createVerifyAPDUType() {
+ return new VerifyAPDUType();
+ }
+
+ /**
+ * Create an instance of {@link ResponseAPDUType }
+ *
+ */
+ public ResponseAPDUType createResponseAPDUType() {
+ return new ResponseAPDUType();
+ }
+
+ /**
+ * Create an instance of {@link ResponseType }
+ *
+ */
+ public ResponseType createResponseType() {
+ return new ResponseType();
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AttributeList }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "", name = "Grunddaten")
+ public JAXBElement<AttributeList> createGrunddaten(AttributeList value) {
+ return new JAXBElement<AttributeList>(_Grunddaten_QNAME, AttributeList.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ScriptType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "", name = "Script")
+ public JAXBElement<ScriptType> createScript(ScriptType value) {
+ return new JAXBElement<ScriptType>(_Script_QNAME, ScriptType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ResponseType }{@code >}}
+ * A-Trust expects <pre>&lt;Result></pre> instead of <pre>&lt;Response></pre>
+ */
+ @XmlElementDecl(namespace = "", name = "Result") //Response")
+ public JAXBElement<ResponseType> createResponse(ResponseType value) {
+ return new JAXBElement<ResponseType>(_Response_QNAME, ResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "", name = "SV-Personenbindung")
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ public JAXBElement<byte[]> createSVPersonenbindung(byte[] value) {
+ return new JAXBElement<byte[]>(_SVPersonenbindung_QNAME, byte[].class, null, ((byte[]) value));
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AttributeList }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "", name = "Status")
+ public JAXBElement<AttributeList> createStatus(AttributeList value) {
+ return new JAXBElement<AttributeList>(_Status_QNAME, AttributeList.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AttributeList }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "", name = "EHIC")
+ public JAXBElement<AttributeList> createEHIC(AttributeList value) {
+ return new JAXBElement<AttributeList>(_EHIC_QNAME, AttributeList.class, null, value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ResetType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ResetType.java
new file mode 100644
index 00000000..815a3f76
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ResetType.java
@@ -0,0 +1,64 @@
+
+package at.buergerkarte.namespaces.cardchannel;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Reset the icc and sequence counter
+ *
+ * <p>Java class for ResetType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ResetType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="cold" type="{http://www.w3.org/2001/XMLSchema}boolean" default="true" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ResetType")
+public class ResetType {
+
+ @XmlAttribute
+ protected Boolean cold;
+
+ /**
+ * Gets the value of the cold property.
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public boolean isCold() {
+ if (cold == null) {
+ return true;
+ } else {
+ return cold;
+ }
+ }
+
+ /**
+ * Sets the value of the cold property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setCold(Boolean value) {
+ this.cold = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ResponseAPDUType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ResponseAPDUType.java
new file mode 100644
index 00000000..70f2948e
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ResponseAPDUType.java
@@ -0,0 +1,161 @@
+
+package at.buergerkarte.namespaces.cardchannel;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Contains a sequence of bytes received from the card as response
+ * APDU
+ *
+ * <p>Java class for ResponseAPDUType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ResponseAPDUType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>hexBinary">
+ * &lt;attribute name="sequence" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
+ * &lt;attribute name="rc" type="{http://www.w3.org/2001/XMLSchema}integer" default="0" />
+ * &lt;attribute name="sw" type="{http://www.w3.org/2001/XMLSchema}hexBinary" default="9000" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ResponseAPDUType", propOrder = {
+ "value"
+})
+public class ResponseAPDUType {
+
+ @XmlValue
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ @XmlSchemaType(name = "hexBinary")
+ protected byte[] value;
+ @XmlAttribute(required = true)
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger sequence;
+ @XmlAttribute
+ protected BigInteger rc;
+ @XmlAttribute(name = "SW")
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ @XmlSchemaType(name = "hexBinary")
+ protected byte[] sw;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public byte[] getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(byte[] value) {
+ this.value = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the sequence property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getSequence() {
+ return sequence;
+ }
+
+ /**
+ * Sets the value of the sequence property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setSequence(BigInteger value) {
+ this.sequence = value;
+ }
+
+ /**
+ * Gets the value of the rc property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getRc() {
+ if (rc == null) {
+ return new BigInteger("0");
+ } else {
+ return rc;
+ }
+ }
+
+ /**
+ * Sets the value of the rc property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setRc(BigInteger value) {
+ this.rc = value;
+ }
+
+ /**
+ * Gets the value of the sw property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public byte[] getSw() {
+ if (sw == null) {
+ return new HexBinaryAdapter().unmarshal("9000");
+ } else {
+ return sw;
+ }
+ }
+
+ /**
+ * Sets the value of the sw property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSw(byte[] value) {
+ this.sw = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ResponseType.java
new file mode 100644
index 00000000..b92015e3
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ResponseType.java
@@ -0,0 +1,78 @@
+
+package at.buergerkarte.namespaces.cardchannel;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Contains the result of the script executed by the
+ * BKU
+ *
+ * <p>Java class for ResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice maxOccurs="unbounded">
+ * &lt;element name="ATR" type="{}ATRType"/>
+ * &lt;element name="ResponseAPDU" type="{}ResponseAPDUType"/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ResponseType", propOrder = {
+ "atrOrResponseAPDU"
+})
+public class ResponseType {
+
+ @XmlElements({
+ @XmlElement(name = "ATR", type = ATRType.class),
+ @XmlElement(name = "ResponseAPDU", type = ResponseAPDUType.class)
+ })
+ protected List<Object> atrOrResponseAPDU;
+
+ /**
+ * Gets the value of the atrOrResponseAPDU property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the atrOrResponseAPDU property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getATROrResponseAPDU().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link ATRType }
+ * {@link ResponseAPDUType }
+ *
+ *
+ */
+ public List<Object> getATROrResponseAPDU() {
+ if (atrOrResponseAPDU == null) {
+ atrOrResponseAPDU = new ArrayList<Object>();
+ }
+ return this.atrOrResponseAPDU;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ScriptType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ScriptType.java
new file mode 100644
index 00000000..bff76f06
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/ScriptType.java
@@ -0,0 +1,80 @@
+
+package at.buergerkarte.namespaces.cardchannel;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * Contains the script to be executed by the BKU
+ *
+ * <p>Java class for ScriptType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ScriptType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice maxOccurs="unbounded">
+ * &lt;element name="Reset" type="{}ResetType"/>
+ * &lt;element name="CommandAPDU" type="{}CommandAPDUType"/>
+ * &lt;element name="VerifyAPDU" type="{}VerifyAPDUType"/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ScriptType", propOrder = {
+ "resetOrCommandAPDUOrVerifyAPDU"
+})
+public class ScriptType {
+
+ @XmlElements({
+ @XmlElement(name = "Reset", type = ResetType.class),
+ @XmlElement(name = "VerifyAPDU", type = VerifyAPDUType.class),
+ @XmlElement(name = "CommandAPDU", type = CommandAPDUType.class)
+ })
+ protected List<Object> resetOrCommandAPDUOrVerifyAPDU;
+
+ /**
+ * Gets the value of the resetOrCommandAPDUOrVerifyAPDU property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the resetOrCommandAPDUOrVerifyAPDU property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getResetOrCommandAPDUOrVerifyAPDU().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link ResetType }
+ * {@link VerifyAPDUType }
+ * {@link CommandAPDUType }
+ *
+ *
+ */
+ public List<Object> getResetOrCommandAPDUOrVerifyAPDU() {
+ if (resetOrCommandAPDUOrVerifyAPDU == null) {
+ resetOrCommandAPDUOrVerifyAPDU = new ArrayList<Object>();
+ }
+ return this.resetOrCommandAPDUOrVerifyAPDU;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/VerifyAPDUType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/VerifyAPDUType.java
new file mode 100644
index 00000000..20d7f3e8
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/VerifyAPDUType.java
@@ -0,0 +1,266 @@
+
+package at.buergerkarte.namespaces.cardchannel;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * Contains a sequence of bytes send as command APDU to the icc after a
+ * PIN entered by the user has been incorporated into the APDU
+ *
+ * <p>Java class for VerifyAPDUType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="VerifyAPDUType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>hexBinary">
+ * &lt;attribute name="sequence" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
+ * &lt;attribute name="of" use="required" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" />
+ * &lt;attribute name="expectedSW" type="{http://www.w3.org/2001/XMLSchema}hexBinary" />
+ * &lt;attribute name="message" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="format" use="required" type="{http://www.w3.org/2001/XMLSchema}hexBinary" />
+ * &lt;attribute name="offset" use="required" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger" />
+ * &lt;attribute name="timeout" use="required" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "VerifyAPDUType", propOrder = {
+ "value"
+})
+public class VerifyAPDUType {
+
+ @XmlValue
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ @XmlSchemaType(name = "hexBinary")
+ protected byte[] value;
+ @XmlAttribute(required = true)
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger sequence;
+ @XmlAttribute(required = true)
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger of;
+ @XmlAttribute
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ @XmlSchemaType(name = "hexBinary")
+ protected byte[] expectedSW;
+ @XmlAttribute(required = true)
+ protected String message;
+ @XmlAttribute(required = true)
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ @XmlSchemaType(name = "hexBinary")
+ protected byte[] format;
+ @XmlAttribute(required = true)
+ @XmlSchemaType(name = "nonNegativeInteger")
+ protected BigInteger offset;
+ @XmlAttribute(required = true)
+ @XmlSchemaType(name = "nonNegativeInteger")
+ protected BigInteger timeout;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public byte[] getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(byte[] value) {
+ this.value = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the sequence property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getSequence() {
+ return sequence;
+ }
+
+ /**
+ * Sets the value of the sequence property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setSequence(BigInteger value) {
+ this.sequence = value;
+ }
+
+ /**
+ * Gets the value of the of property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getOf() {
+ return of;
+ }
+
+ /**
+ * Sets the value of the of property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setOf(BigInteger value) {
+ this.of = value;
+ }
+
+ /**
+ * Gets the value of the expectedSW property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public byte[] getExpectedSW() {
+ return expectedSW;
+ }
+
+ /**
+ * Sets the value of the expectedSW property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setExpectedSW(byte[] value) {
+ this.expectedSW = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the message property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getMessage() {
+ return message;
+ }
+
+ /**
+ * Sets the value of the message property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setMessage(String value) {
+ this.message = value;
+ }
+
+ /**
+ * Gets the value of the format property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public byte[] getFormat() {
+ return format;
+ }
+
+ /**
+ * Sets the value of the format property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setFormat(byte[] value) {
+ this.format = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the offset property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getOffset() {
+ return offset;
+ }
+
+ /**
+ * Sets the value of the offset property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setOffset(BigInteger value) {
+ this.offset = value;
+ }
+
+ /**
+ * Gets the value of the timeout property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getTimeout() {
+ return timeout;
+ }
+
+ /**
+ * Sets the value of the timeout property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setTimeout(BigInteger value) {
+ this.timeout = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/package-info.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/package-info.java
new file mode 100644
index 00000000..f5c1ac04
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/cardchannel/package-info.java
@@ -0,0 +1,2 @@
+@javax.xml.bind.annotation.XmlSchema(namespace = "", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package at.buergerkarte.namespaces.cardchannel;
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/personenbindung/_20020506_/CompressedIdentityLinkType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/personenbindung/_20020506_/CompressedIdentityLinkType.java
new file mode 100644
index 00000000..62b8b2a4
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/personenbindung/_20020506_/CompressedIdentityLinkType.java
@@ -0,0 +1,310 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.personenbindung._20020506_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import at.gv.e_government.reference.namespace.persondata._20020228_.AbstractPersonType;
+import org.w3._2000._09.xmldsig_.KeyValueType;
+
+
+/**
+ * <p>Java class for CompressedIdentityLinkType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CompressedIdentityLinkType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="IssuerTemplate" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="AssertionID" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="IssueInstant" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="PersonData" type="{http://reference.e-government.gv.at/namespace/persondata/20020228#}AbstractPersonType"/>
+ * &lt;element name="CitizenPublicKey" type="{http://www.w3.org/2000/09/xmldsig#}KeyValueType" maxOccurs="unbounded"/>
+ * &lt;element name="SignatureValue" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ * &lt;element name="ReferenceDigest" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary" minOccurs="0"/>
+ * &lt;element name="ReferenceManifestDigest" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary" minOccurs="0"/>
+ * &lt;element name="ManifestReferenceDigest" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CompressedIdentityLinkType", propOrder = {
+ "issuerTemplate",
+ "assertionID",
+ "issueInstant",
+ "personData",
+ "citizenPublicKey",
+ "signatureValue",
+ "referenceDigest",
+ "referenceManifestDigest",
+ "manifestReferenceDigest"
+})
+public class CompressedIdentityLinkType {
+
+ @XmlElement(name = "IssuerTemplate", required = true)
+ protected String issuerTemplate;
+ @XmlElement(name = "AssertionID", required = true)
+ protected String assertionID;
+ @XmlElement(name = "IssueInstant", required = true)
+ protected String issueInstant;
+ @XmlElement(name = "PersonData", required = true)
+ protected AbstractPersonType personData;
+ @XmlElement(name = "CitizenPublicKey", required = true)
+ protected List<KeyValueType> citizenPublicKey;
+ @XmlElement(name = "SignatureValue", required = true)
+ protected byte[] signatureValue;
+ @XmlElement(name = "ReferenceDigest")
+ protected byte[] referenceDigest;
+ @XmlElement(name = "ReferenceManifestDigest")
+ protected byte[] referenceManifestDigest;
+ @XmlElement(name = "ManifestReferenceDigest")
+ protected byte[] manifestReferenceDigest;
+
+ /**
+ * Gets the value of the issuerTemplate property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getIssuerTemplate() {
+ return issuerTemplate;
+ }
+
+ /**
+ * Sets the value of the issuerTemplate property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIssuerTemplate(String value) {
+ this.issuerTemplate = value;
+ }
+
+ /**
+ * Gets the value of the assertionID property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAssertionID() {
+ return assertionID;
+ }
+
+ /**
+ * Sets the value of the assertionID property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAssertionID(String value) {
+ this.assertionID = value;
+ }
+
+ /**
+ * Gets the value of the issueInstant property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getIssueInstant() {
+ return issueInstant;
+ }
+
+ /**
+ * Sets the value of the issueInstant property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIssueInstant(String value) {
+ this.issueInstant = value;
+ }
+
+ /**
+ * Gets the value of the personData property.
+ *
+ * @return
+ * possible object is
+ * {@link AbstractPersonType }
+ *
+ */
+ public AbstractPersonType getPersonData() {
+ return personData;
+ }
+
+ /**
+ * Sets the value of the personData property.
+ *
+ * @param value
+ * allowed object is
+ * {@link AbstractPersonType }
+ *
+ */
+ public void setPersonData(AbstractPersonType value) {
+ this.personData = value;
+ }
+
+ /**
+ * Gets the value of the citizenPublicKey property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the citizenPublicKey property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getCitizenPublicKey().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link KeyValueType }
+ *
+ *
+ */
+ public List<KeyValueType> getCitizenPublicKey() {
+ if (citizenPublicKey == null) {
+ citizenPublicKey = new ArrayList<KeyValueType>();
+ }
+ return this.citizenPublicKey;
+ }
+
+ /**
+ * Gets the value of the signatureValue property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getSignatureValue() {
+ return signatureValue;
+ }
+
+ /**
+ * Sets the value of the signatureValue property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setSignatureValue(byte[] value) {
+ this.signatureValue = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the referenceDigest property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getReferenceDigest() {
+ return referenceDigest;
+ }
+
+ /**
+ * Sets the value of the referenceDigest property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setReferenceDigest(byte[] value) {
+ this.referenceDigest = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the referenceManifestDigest property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getReferenceManifestDigest() {
+ return referenceManifestDigest;
+ }
+
+ /**
+ * Sets the value of the referenceManifestDigest property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setReferenceManifestDigest(byte[] value) {
+ this.referenceManifestDigest = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the manifestReferenceDigest property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getManifestReferenceDigest() {
+ return manifestReferenceDigest;
+ }
+
+ /**
+ * Sets the value of the manifestReferenceDigest property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setManifestReferenceDigest(byte[] value) {
+ this.manifestReferenceDigest = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/personenbindung/_20020506_/ObjectFactory.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/personenbindung/_20020506_/ObjectFactory.java
new file mode 100644
index 00000000..94129193
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/personenbindung/_20020506_/ObjectFactory.java
@@ -0,0 +1,76 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.personenbindung._20020506_;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each
+ * Java content interface and Java element interface
+ * generated in the at.buergerkarte.namespaces.personenbindung._20020506_ package.
+ * <p>An ObjectFactory allows you to programatically
+ * construct new instances of the Java representation
+ * for XML content. The Java representation of XML
+ * content can consist of schema derived interfaces
+ * and classes representing the binding of schema
+ * type definitions, element declarations and model
+ * groups. Factory methods for each of these are
+ * provided in this class.
+ *
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _CompressedIdentityLink_QNAME = new QName("http://www.buergerkarte.at/namespaces/personenbindung/20020506#", "CompressedIdentityLink");
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: at.buergerkarte.namespaces.personenbindung._20020506_
+ *
+ */
+ public ObjectFactory() {
+ }
+
+ /**
+ * Create an instance of {@link CompressedIdentityLinkType }
+ *
+ */
+ public CompressedIdentityLinkType createCompressedIdentityLinkType() {
+ return new CompressedIdentityLinkType();
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CompressedIdentityLinkType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/personenbindung/20020506#", name = "CompressedIdentityLink")
+ public JAXBElement<CompressedIdentityLinkType> createCompressedIdentityLink(CompressedIdentityLinkType value) {
+ return new JAXBElement<CompressedIdentityLinkType>(_CompressedIdentityLink_QNAME, CompressedIdentityLinkType.class, null, value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/personenbindung/_20020506_/package-info.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/personenbindung/_20020506_/package-info.java
new file mode 100644
index 00000000..4a53cb31
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/personenbindung/_20020506_/package-info.java
@@ -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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.buergerkarte.at/namespaces/personenbindung/20020506#", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package at.buergerkarte.namespaces.personenbindung._20020506_;
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AccessAuthorizationType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AccessAuthorizationType.java
new file mode 100644
index 00000000..53a93ab9
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AccessAuthorizationType.java
@@ -0,0 +1,112 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for AccessAuthorizationType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AccessAuthorizationType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="RequesterID" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}RequesterIDType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;attribute name="UserMayChange" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AccessAuthorizationType", propOrder = {
+ "requesterID"
+})
+public class AccessAuthorizationType {
+
+ @XmlElement(name = "RequesterID", required = true)
+ protected List<RequesterIDType> requesterID;
+ @XmlAttribute(name = "UserMayChange", required = true)
+ protected boolean userMayChange;
+
+ /**
+ * Gets the value of the requesterID property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the requesterID property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getRequesterID().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link RequesterIDType }
+ *
+ *
+ */
+ public List<RequesterIDType> getRequesterID() {
+ if (requesterID == null) {
+ requesterID = new ArrayList<RequesterIDType>();
+ }
+ return this.requesterID;
+ }
+
+ /**
+ * Gets the value of the userMayChange property.
+ *
+ */
+ public boolean isUserMayChange() {
+ return userMayChange;
+ }
+
+ /**
+ * Sets the value of the userMayChange property.
+ *
+ */
+ public void setUserMayChange(boolean value) {
+ this.userMayChange = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AllSignatoriesType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AllSignatoriesType.java
new file mode 100644
index 00000000..61b2e5cf
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AllSignatoriesType.java
@@ -0,0 +1,71 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for AllSignatoriesType.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="AllSignatoriesType">
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="all"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ *
+ */
+@XmlType(name = "AllSignatoriesType")
+@XmlEnum
+public enum AllSignatoriesType {
+
+ @XmlEnumValue("all")
+ ALL("all");
+ private final String value;
+
+ AllSignatoriesType(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static AllSignatoriesType fromValue(String v) {
+ for (AllSignatoriesType c: AllSignatoriesType.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ throw new IllegalArgumentException(v);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AnyChildrenType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AnyChildrenType.java
new file mode 100644
index 00000000..4ed236fd
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AnyChildrenType.java
@@ -0,0 +1,98 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for AnyChildrenType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AnyChildrenType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AnyChildrenType", propOrder = {
+ "any"
+})
+@XmlSeeAlso({
+ BindingType.class
+})
+public class AnyChildrenType {
+
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Element }
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AnyMixedChildrenType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AnyMixedChildrenType.java
new file mode 100644
index 00000000..bff6c7ca
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AnyMixedChildrenType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import at.gv.egiz.slbinding.impl.XMLContentType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for AnyMixedChildrenType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AnyMixedChildrenType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AnyMixedChildrenType", propOrder = {
+ "content"
+})
+@XmlSeeAlso({
+ XMLContentType.class
+})
+public class AnyMixedChildrenType {
+
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Element }
+ * {@link Object }
+ * {@link String }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AuthenticationClassType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AuthenticationClassType.java
new file mode 100644
index 00000000..d07d5cc1
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/AuthenticationClassType.java
@@ -0,0 +1,80 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for AuthenticationClassType.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="AuthenticationClassType">
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="anonym"/>
+ * &lt;enumeration value="pseudoanonym"/>
+ * &lt;enumeration value="certified"/>
+ * &lt;enumeration value="certifiedGovAgency"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ *
+ */
+@XmlType(name = "AuthenticationClassType")
+@XmlEnum
+public enum AuthenticationClassType {
+
+ @XmlEnumValue("anonym")
+ ANONYM("anonym"),
+ @XmlEnumValue("pseudoanonym")
+ PSEUDOANONYM("pseudoanonym"),
+ @XmlEnumValue("certified")
+ CERTIFIED("certified"),
+ @XmlEnumValue("certifiedGovAgency")
+ CERTIFIED_GOV_AGENCY("certifiedGovAgency");
+ private final String value;
+
+ AuthenticationClassType(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static AuthenticationClassType fromValue(String v) {
+ for (AuthenticationClassType c: AuthenticationClassType.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ throw new IllegalArgumentException(v);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64ContentType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64ContentType.java
new file mode 100644
index 00000000..641a12d0
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64ContentType.java
@@ -0,0 +1,87 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for Base64ContentType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="Base64ContentType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice minOccurs="0">
+ * &lt;element name="Base64Content" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "Base64ContentType", propOrder = {
+ "base64Content"
+})
+@XmlSeeAlso({
+ Base64OptRefContentType.class
+})
+public class Base64ContentType {
+
+ @XmlElement(name = "Base64Content")
+ protected byte[] base64Content;
+
+ /**
+ * Gets the value of the base64Content property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getBase64Content() {
+ return base64Content;
+ }
+
+ /**
+ * Sets the value of the base64Content property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setBase64Content(byte[] value) {
+ this.base64Content = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64OptRefContentType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64OptRefContentType.java
new file mode 100644
index 00000000..fe183a4f
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64OptRefContentType.java
@@ -0,0 +1,85 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for Base64OptRefContentType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="Base64OptRefContentType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64ContentType">
+ * &lt;attribute name="Reference" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "Base64OptRefContentType")
+public class Base64OptRefContentType
+ extends Base64ContentType
+{
+
+ @XmlAttribute(name = "Reference")
+ @XmlSchemaType(name = "anyURI")
+ protected String reference;
+
+ /**
+ * Gets the value of the reference property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getReference() {
+ return reference;
+ }
+
+ /**
+ * Sets the value of the reference property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setReference(String value) {
+ this.reference = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLContentType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLContentType.java
new file mode 100644
index 00000000..096f8451
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLContentType.java
@@ -0,0 +1,116 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for Base64XMLContentType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="Base64XMLContentType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice minOccurs="0">
+ * &lt;element name="Base64Content" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="XMLContent" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}XMLContentType"/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "Base64XMLContentType", propOrder = {
+ "base64Content",
+ "xmlContent"
+})
+@XmlSeeAlso({
+ InfoboxAssocArrayPairType.class,
+ Base64XMLOptRefContentType.class
+})
+public class Base64XMLContentType {
+
+ @XmlElement(name = "Base64Content")
+ protected byte[] base64Content;
+ @XmlElement(name = "XMLContent", type = at.gv.egiz.slbinding.impl.XMLContentType.class)
+ protected at.gv.egiz.slbinding.impl.XMLContentType xmlContent;
+
+ /**
+ * Gets the value of the base64Content property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getBase64Content() {
+ return base64Content;
+ }
+
+ /**
+ * Sets the value of the base64Content property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setBase64Content(byte[] value) {
+ this.base64Content = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the xmlContent property.
+ *
+ * @return
+ * possible object is
+ * {@link at.buergerkarte.namespaces.securitylayer._1.XMLContentType }
+ *
+ */
+ public at.buergerkarte.namespaces.securitylayer._1.XMLContentType getXMLContent() {
+ return xmlContent;
+ }
+
+ /**
+ * Sets the value of the xmlContent property.
+ *
+ * @param value
+ * allowed object is
+ * {@link at.buergerkarte.namespaces.securitylayer._1.XMLContentType }
+ *
+ */
+ public void setXMLContent(at.buergerkarte.namespaces.securitylayer._1.XMLContentType value) {
+ this.xmlContent = ((at.gv.egiz.slbinding.impl.XMLContentType) value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLLocRefContentType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLLocRefContentType.java
new file mode 100644
index 00000000..7b93bb99
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLLocRefContentType.java
@@ -0,0 +1,147 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for Base64XMLLocRefContentType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="Base64XMLLocRefContentType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice minOccurs="0">
+ * &lt;element name="Base64Content" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="XMLContent" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}XMLContentType"/>
+ * &lt;element name="LocRefContent" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "Base64XMLLocRefContentType", propOrder = {
+ "base64Content",
+ "xmlContent",
+ "locRefContent"
+})
+@XmlSeeAlso({
+ Base64XMLLocRefOptRefContentType.class,
+ Base64XMLLocRefReqRefContentType.class,
+ XMLToBeEncryptedNewContentType.class
+})
+public class Base64XMLLocRefContentType {
+
+ @XmlElement(name = "Base64Content")
+ protected byte[] base64Content;
+ @XmlElement(name = "XMLContent", type = at.gv.egiz.slbinding.impl.XMLContentType.class)
+ protected at.gv.egiz.slbinding.impl.XMLContentType xmlContent;
+ @XmlElement(name = "LocRefContent")
+ @XmlSchemaType(name = "anyURI")
+ protected String locRefContent;
+
+ /**
+ * Gets the value of the base64Content property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getBase64Content() {
+ return base64Content;
+ }
+
+ /**
+ * Sets the value of the base64Content property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setBase64Content(byte[] value) {
+ this.base64Content = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the xmlContent property.
+ *
+ * @return
+ * possible object is
+ * {@link at.buergerkarte.namespaces.securitylayer._1.XMLContentType }
+ *
+ */
+ public at.buergerkarte.namespaces.securitylayer._1.XMLContentType getXMLContent() {
+ return xmlContent;
+ }
+
+ /**
+ * Sets the value of the xmlContent property.
+ *
+ * @param value
+ * allowed object is
+ * {@link at.buergerkarte.namespaces.securitylayer._1.XMLContentType }
+ *
+ */
+ public void setXMLContent(at.buergerkarte.namespaces.securitylayer._1.XMLContentType value) {
+ this.xmlContent = ((at.gv.egiz.slbinding.impl.XMLContentType) value);
+ }
+
+ /**
+ * Gets the value of the locRefContent property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getLocRefContent() {
+ return locRefContent;
+ }
+
+ /**
+ * Sets the value of the locRefContent property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setLocRefContent(String value) {
+ this.locRefContent = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLLocRefOptRefContentType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLLocRefOptRefContentType.java
new file mode 100644
index 00000000..2b0b0552
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLLocRefOptRefContentType.java
@@ -0,0 +1,85 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for Base64XMLLocRefOptRefContentType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="Base64XMLLocRefOptRefContentType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64XMLLocRefContentType">
+ * &lt;attribute name="Reference" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "Base64XMLLocRefOptRefContentType")
+public class Base64XMLLocRefOptRefContentType
+ extends Base64XMLLocRefContentType
+{
+
+ @XmlAttribute(name = "Reference")
+ @XmlSchemaType(name = "anyURI")
+ protected String reference;
+
+ /**
+ * Gets the value of the reference property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getReference() {
+ return reference;
+ }
+
+ /**
+ * Sets the value of the reference property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setReference(String value) {
+ this.reference = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLLocRefReqRefContentType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLLocRefReqRefContentType.java
new file mode 100644
index 00000000..ab9e985e
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLLocRefReqRefContentType.java
@@ -0,0 +1,85 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for Base64XMLLocRefReqRefContentType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="Base64XMLLocRefReqRefContentType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64XMLLocRefContentType">
+ * &lt;attribute name="Reference" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "Base64XMLLocRefReqRefContentType")
+public class Base64XMLLocRefReqRefContentType
+ extends Base64XMLLocRefContentType
+{
+
+ @XmlAttribute(name = "Reference", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String reference;
+
+ /**
+ * Gets the value of the reference property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getReference() {
+ return reference;
+ }
+
+ /**
+ * Sets the value of the reference property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setReference(String value) {
+ this.reference = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLOptRefContentType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLOptRefContentType.java
new file mode 100644
index 00000000..9f3ebef8
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/Base64XMLOptRefContentType.java
@@ -0,0 +1,85 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for Base64XMLOptRefContentType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="Base64XMLOptRefContentType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64XMLContentType">
+ * &lt;attribute name="Reference" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "Base64XMLOptRefContentType")
+public class Base64XMLOptRefContentType
+ extends Base64XMLContentType
+{
+
+ @XmlAttribute(name = "Reference")
+ @XmlSchemaType(name = "anyURI")
+ protected String reference;
+
+ /**
+ * Gets the value of the reference property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getReference() {
+ return reference;
+ }
+
+ /**
+ * Sets the value of the reference property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setReference(String value) {
+ this.reference = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/BindingType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/BindingType.java
new file mode 100644
index 00000000..e2cedd56
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/BindingType.java
@@ -0,0 +1,88 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for BindingType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="BindingType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}AnyChildrenType">
+ * &lt;attribute name="Identifier" use="required" type="{http://www.w3.org/2001/XMLSchema}token" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BindingType")
+public class BindingType
+ extends AnyChildrenType
+{
+
+ @XmlAttribute(name = "Identifier", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String identifier;
+
+ /**
+ * Gets the value of the identifier property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getIdentifier() {
+ return identifier;
+ }
+
+ /**
+ * Sets the value of the identifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIdentifier(String value) {
+ this.identifier = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSDataObjectOptionalMetaType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSDataObjectOptionalMetaType.java
new file mode 100644
index 00000000..20ab8505
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSDataObjectOptionalMetaType.java
@@ -0,0 +1,117 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CMSDataObjectOptionalMetaType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CMSDataObjectOptionalMetaType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="MetaInfo" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}MetaInfoType" minOccurs="0"/>
+ * &lt;element name="Content" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64OptRefContentType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CMSDataObjectOptionalMetaType", propOrder = {
+ "metaInfo",
+ "content"
+})
+@XmlSeeAlso({
+ CMSDataObjectRequiredMetaType.class
+})
+public class CMSDataObjectOptionalMetaType {
+
+ @XmlElement(name = "MetaInfo")
+ protected MetaInfoType metaInfo;
+ @XmlElement(name = "Content", required = true)
+ protected Base64OptRefContentType content;
+
+ /**
+ * Gets the value of the metaInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link MetaInfoType }
+ *
+ */
+ public MetaInfoType getMetaInfo() {
+ return metaInfo;
+ }
+
+ /**
+ * Sets the value of the metaInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link MetaInfoType }
+ *
+ */
+ public void setMetaInfo(MetaInfoType value) {
+ this.metaInfo = value;
+ }
+
+ /**
+ * Gets the value of the content property.
+ *
+ * @return
+ * possible object is
+ * {@link Base64OptRefContentType }
+ *
+ */
+ public Base64OptRefContentType getContent() {
+ return content;
+ }
+
+ /**
+ * Sets the value of the content property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Base64OptRefContentType }
+ *
+ */
+ public void setContent(Base64OptRefContentType value) {
+ this.content = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSDataObjectRequiredMetaType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSDataObjectRequiredMetaType.java
new file mode 100644
index 00000000..14809176
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSDataObjectRequiredMetaType.java
@@ -0,0 +1,59 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CMSDataObjectRequiredMetaType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CMSDataObjectRequiredMetaType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}CMSDataObjectOptionalMetaType">
+ * &lt;sequence>
+ * &lt;element name="MetaInfo" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}MetaInfoType"/>
+ * &lt;element name="Content" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64OptRefContentType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CMSDataObjectRequiredMetaType")
+public class CMSDataObjectRequiredMetaType
+ extends CMSDataObjectOptionalMetaType
+{
+
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSEncryptedContentType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSEncryptedContentType.java
new file mode 100644
index 00000000..f38e8b10
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSEncryptedContentType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CMSEncryptedContentType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CMSEncryptedContentType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="MetaInfo" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}MetaInfoType" minOccurs="0"/>
+ * &lt;element name="Content" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64OptRefContentType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CMSEncryptedContentType", propOrder = {
+ "metaInfo",
+ "content"
+})
+public class CMSEncryptedContentType {
+
+ @XmlElement(name = "MetaInfo")
+ protected MetaInfoType metaInfo;
+ @XmlElement(name = "Content")
+ protected Base64OptRefContentType content;
+
+ /**
+ * Gets the value of the metaInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link MetaInfoType }
+ *
+ */
+ public MetaInfoType getMetaInfo() {
+ return metaInfo;
+ }
+
+ /**
+ * Sets the value of the metaInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link MetaInfoType }
+ *
+ */
+ public void setMetaInfo(MetaInfoType value) {
+ this.metaInfo = value;
+ }
+
+ /**
+ * Gets the value of the content property.
+ *
+ * @return
+ * possible object is
+ * {@link Base64OptRefContentType }
+ *
+ */
+ public Base64OptRefContentType getContent() {
+ return content;
+ }
+
+ /**
+ * Sets the value of the content property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Base64OptRefContentType }
+ *
+ */
+ public void setContent(Base64OptRefContentType value) {
+ this.content = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSRecipientPublicKeyType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSRecipientPublicKeyType.java
new file mode 100644
index 00000000..fdd71d1e
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSRecipientPublicKeyType.java
@@ -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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CMSRecipientPublicKeyType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CMSRecipientPublicKeyType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice>
+ * &lt;element name="X509Certificate" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CMSRecipientPublicKeyType", propOrder = {
+ "x509Certificate"
+})
+public class CMSRecipientPublicKeyType {
+
+ @XmlElement(name = "X509Certificate")
+ protected byte[] x509Certificate;
+
+ /**
+ * Gets the value of the x509Certificate property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getX509Certificate() {
+ return x509Certificate;
+ }
+
+ /**
+ * Sets the value of the x509Certificate property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setX509Certificate(byte[] value) {
+ this.x509Certificate = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSToBeEncryptedType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSToBeEncryptedType.java
new file mode 100644
index 00000000..951b5ed8
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CMSToBeEncryptedType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CMSToBeEncryptedType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CMSToBeEncryptedType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="MetaInfo" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}MetaInfoType"/>
+ * &lt;element name="Content" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64OptRefContentType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CMSToBeEncryptedType", propOrder = {
+ "metaInfo",
+ "content"
+})
+public class CMSToBeEncryptedType {
+
+ @XmlElement(name = "MetaInfo", required = true)
+ protected MetaInfoType metaInfo;
+ @XmlElement(name = "Content", required = true)
+ protected Base64OptRefContentType content;
+
+ /**
+ * Gets the value of the metaInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link MetaInfoType }
+ *
+ */
+ public MetaInfoType getMetaInfo() {
+ return metaInfo;
+ }
+
+ /**
+ * Sets the value of the metaInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link MetaInfoType }
+ *
+ */
+ public void setMetaInfo(MetaInfoType value) {
+ this.metaInfo = value;
+ }
+
+ /**
+ * Gets the value of the content property.
+ *
+ * @return
+ * possible object is
+ * {@link Base64OptRefContentType }
+ *
+ */
+ public Base64OptRefContentType getContent() {
+ return content;
+ }
+
+ /**
+ * Sets the value of the content property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Base64OptRefContentType }
+ *
+ */
+ public void setContent(Base64OptRefContentType value) {
+ this.content = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CheckResultType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CheckResultType.java
new file mode 100644
index 00000000..b01cf5aa
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CheckResultType.java
@@ -0,0 +1,116 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CheckResultType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CheckResultType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Code" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger"/>
+ * &lt;element name="Info" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}AnyMixedChildrenType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CheckResultType", propOrder = {
+ "code",
+ "info"
+})
+public class CheckResultType {
+
+ @XmlElement(name = "Code", required = true)
+ @XmlSchemaType(name = "nonNegativeInteger")
+ protected BigInteger code;
+ @XmlElement(name = "Info")
+ protected AnyMixedChildrenType info;
+
+ /**
+ * Gets the value of the code property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getCode() {
+ return code;
+ }
+
+ /**
+ * Sets the value of the code property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setCode(BigInteger value) {
+ this.code = value;
+ }
+
+ /**
+ * Gets the value of the info property.
+ *
+ * @return
+ * possible object is
+ * {@link AnyMixedChildrenType }
+ *
+ */
+ public AnyMixedChildrenType getInfo() {
+ return info;
+ }
+
+ /**
+ * Sets the value of the info property.
+ *
+ * @param value
+ * allowed object is
+ * {@link AnyMixedChildrenType }
+ *
+ */
+ public void setInfo(AnyMixedChildrenType value) {
+ this.info = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateCMSSignatureRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateCMSSignatureRequestType.java
new file mode 100644
index 00000000..d9473e8e
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateCMSSignatureRequestType.java
@@ -0,0 +1,151 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for CreateCMSSignatureRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CreateCMSSignatureRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="KeyboxIdentifier" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}BoxIdentifierType"/>
+ * &lt;element name="DataObject" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}CMSDataObjectRequiredMetaType"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Structure" use="required">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="detached"/>
+ * &lt;enumeration value="enveloping"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/attribute>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CreateCMSSignatureRequestType", propOrder = {
+ "keyboxIdentifier",
+ "dataObject"
+})
+public class CreateCMSSignatureRequestType {
+
+ @XmlElement(name = "KeyboxIdentifier", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected String keyboxIdentifier;
+ @XmlElement(name = "DataObject", required = true)
+ protected CMSDataObjectRequiredMetaType dataObject;
+ @XmlAttribute(name = "Structure", required = true)
+ protected String structure;
+
+ /**
+ * Gets the value of the keyboxIdentifier property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getKeyboxIdentifier() {
+ return keyboxIdentifier;
+ }
+
+ /**
+ * Sets the value of the keyboxIdentifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setKeyboxIdentifier(String value) {
+ this.keyboxIdentifier = value;
+ }
+
+ /**
+ * Gets the value of the dataObject property.
+ *
+ * @return
+ * possible object is
+ * {@link CMSDataObjectRequiredMetaType }
+ *
+ */
+ public CMSDataObjectRequiredMetaType getDataObject() {
+ return dataObject;
+ }
+
+ /**
+ * Sets the value of the dataObject property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CMSDataObjectRequiredMetaType }
+ *
+ */
+ public void setDataObject(CMSDataObjectRequiredMetaType value) {
+ this.dataObject = value;
+ }
+
+ /**
+ * Gets the value of the structure property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getStructure() {
+ return structure;
+ }
+
+ /**
+ * Sets the value of the structure property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setStructure(String value) {
+ this.structure = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateCMSSignatureResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateCMSSignatureResponseType.java
new file mode 100644
index 00000000..bc9886a3
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateCMSSignatureResponseType.java
@@ -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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CreateCMSSignatureResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CreateCMSSignatureResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="CMSSignature" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CreateCMSSignatureResponseType", propOrder = {
+ "cmsSignature"
+})
+public class CreateCMSSignatureResponseType {
+
+ @XmlElement(name = "CMSSignature", required = true)
+ protected byte[] cmsSignature;
+
+ /**
+ * Gets the value of the cmsSignature property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getCMSSignature() {
+ return cmsSignature;
+ }
+
+ /**
+ * Sets the value of the cmsSignature property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setCMSSignature(byte[] value) {
+ this.cmsSignature = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashInfoRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashInfoRequestType.java
new file mode 100644
index 00000000..cfbed898
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashInfoRequestType.java
@@ -0,0 +1,163 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CreateHashInfoRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CreateHashInfoRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="HashData" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}HashDataType"/>
+ * &lt;element name="HashAlgorithm" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="FriendlyName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="RespondHashData" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CreateHashInfoRequestType", propOrder = {
+ "hashData",
+ "hashAlgorithm",
+ "friendlyName"
+})
+public class CreateHashInfoRequestType {
+
+ @XmlElement(name = "HashData", required = true)
+ protected HashDataType hashData;
+ @XmlElement(name = "HashAlgorithm", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String hashAlgorithm;
+ @XmlElement(name = "FriendlyName")
+ protected String friendlyName;
+ @XmlAttribute(name = "RespondHashData", required = true)
+ protected boolean respondHashData;
+
+ /**
+ * Gets the value of the hashData property.
+ *
+ * @return
+ * possible object is
+ * {@link HashDataType }
+ *
+ */
+ public HashDataType getHashData() {
+ return hashData;
+ }
+
+ /**
+ * Sets the value of the hashData property.
+ *
+ * @param value
+ * allowed object is
+ * {@link HashDataType }
+ *
+ */
+ public void setHashData(HashDataType value) {
+ this.hashData = value;
+ }
+
+ /**
+ * Gets the value of the hashAlgorithm property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getHashAlgorithm() {
+ return hashAlgorithm;
+ }
+
+ /**
+ * Sets the value of the hashAlgorithm property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setHashAlgorithm(String value) {
+ this.hashAlgorithm = value;
+ }
+
+ /**
+ * Gets the value of the friendlyName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getFriendlyName() {
+ return friendlyName;
+ }
+
+ /**
+ * Sets the value of the friendlyName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setFriendlyName(String value) {
+ this.friendlyName = value;
+ }
+
+ /**
+ * Gets the value of the respondHashData property.
+ *
+ */
+ public boolean isRespondHashData() {
+ return respondHashData;
+ }
+
+ /**
+ * Sets the value of the respondHashData property.
+ *
+ */
+ public void setRespondHashData(boolean value) {
+ this.respondHashData = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashInfoResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashInfoResponseType.java
new file mode 100644
index 00000000..755a12ef
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashInfoResponseType.java
@@ -0,0 +1,169 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CreateHashInfoResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CreateHashInfoResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="HashData" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}HashDataType" minOccurs="0"/>
+ * &lt;element name="HashAlgorithm" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="FriendlyName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="HashValue" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CreateHashInfoResponseType", propOrder = {
+ "hashData",
+ "hashAlgorithm",
+ "friendlyName",
+ "hashValue"
+})
+public class CreateHashInfoResponseType {
+
+ @XmlElement(name = "HashData")
+ protected HashDataType hashData;
+ @XmlElement(name = "HashAlgorithm", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String hashAlgorithm;
+ @XmlElement(name = "FriendlyName")
+ protected String friendlyName;
+ @XmlElement(name = "HashValue", required = true)
+ protected byte[] hashValue;
+
+ /**
+ * Gets the value of the hashData property.
+ *
+ * @return
+ * possible object is
+ * {@link HashDataType }
+ *
+ */
+ public HashDataType getHashData() {
+ return hashData;
+ }
+
+ /**
+ * Sets the value of the hashData property.
+ *
+ * @param value
+ * allowed object is
+ * {@link HashDataType }
+ *
+ */
+ public void setHashData(HashDataType value) {
+ this.hashData = value;
+ }
+
+ /**
+ * Gets the value of the hashAlgorithm property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getHashAlgorithm() {
+ return hashAlgorithm;
+ }
+
+ /**
+ * Sets the value of the hashAlgorithm property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setHashAlgorithm(String value) {
+ this.hashAlgorithm = value;
+ }
+
+ /**
+ * Gets the value of the friendlyName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getFriendlyName() {
+ return friendlyName;
+ }
+
+ /**
+ * Sets the value of the friendlyName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setFriendlyName(String value) {
+ this.friendlyName = value;
+ }
+
+ /**
+ * Gets the value of the hashValue property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getHashValue() {
+ return hashValue;
+ }
+
+ /**
+ * Sets the value of the hashValue property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setHashValue(byte[] value) {
+ this.hashValue = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashRequestType.java
new file mode 100644
index 00000000..5fe80ad7
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashRequestType.java
@@ -0,0 +1,92 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CreateHashRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CreateHashRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="HashInfo" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}CreateHashInfoRequestType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CreateHashRequestType", propOrder = {
+ "hashInfo"
+})
+public class CreateHashRequestType {
+
+ @XmlElement(name = "HashInfo", required = true)
+ protected List<CreateHashInfoRequestType> hashInfo;
+
+ /**
+ * Gets the value of the hashInfo property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the hashInfo property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getHashInfo().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link CreateHashInfoRequestType }
+ *
+ *
+ */
+ public List<CreateHashInfoRequestType> getHashInfo() {
+ if (hashInfo == null) {
+ hashInfo = new ArrayList<CreateHashInfoRequestType>();
+ }
+ return this.hashInfo;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashResponseType.java
new file mode 100644
index 00000000..702f7177
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateHashResponseType.java
@@ -0,0 +1,92 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CreateHashResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CreateHashResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="HashInfo" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}CreateHashInfoResponseType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CreateHashResponseType", propOrder = {
+ "hashInfo"
+})
+public class CreateHashResponseType {
+
+ @XmlElement(name = "HashInfo", required = true)
+ protected List<CreateHashInfoResponseType> hashInfo;
+
+ /**
+ * Gets the value of the hashInfo property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the hashInfo property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getHashInfo().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link CreateHashInfoResponseType }
+ *
+ *
+ */
+ public List<CreateHashInfoResponseType> getHashInfo() {
+ if (hashInfo == null) {
+ hashInfo = new ArrayList<CreateHashInfoResponseType>();
+ }
+ return this.hashInfo;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateXMLSignatureRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateXMLSignatureRequestType.java
new file mode 100644
index 00000000..71f6c0c2
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateXMLSignatureRequestType.java
@@ -0,0 +1,151 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for CreateXMLSignatureRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CreateXMLSignatureRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="KeyboxIdentifier" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}BoxIdentifierType"/>
+ * &lt;element name="DataObjectInfo" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}DataObjectInfoType" maxOccurs="unbounded"/>
+ * &lt;element name="SignatureInfo" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}SignatureInfoCreationType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CreateXMLSignatureRequestType", propOrder = {
+ "keyboxIdentifier",
+ "dataObjectInfo",
+ "signatureInfo"
+})
+public class CreateXMLSignatureRequestType {
+
+ @XmlElement(name = "KeyboxIdentifier", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected String keyboxIdentifier;
+ @XmlElement(name = "DataObjectInfo", required = true)
+ protected List<DataObjectInfoType> dataObjectInfo;
+ @XmlElement(name = "SignatureInfo")
+ protected SignatureInfoCreationType signatureInfo;
+
+ /**
+ * Gets the value of the keyboxIdentifier property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getKeyboxIdentifier() {
+ return keyboxIdentifier;
+ }
+
+ /**
+ * Sets the value of the keyboxIdentifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setKeyboxIdentifier(String value) {
+ this.keyboxIdentifier = value;
+ }
+
+ /**
+ * Gets the value of the dataObjectInfo property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the dataObjectInfo property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getDataObjectInfo().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link DataObjectInfoType }
+ *
+ *
+ */
+ public List<DataObjectInfoType> getDataObjectInfo() {
+ if (dataObjectInfo == null) {
+ dataObjectInfo = new ArrayList<DataObjectInfoType>();
+ }
+ return this.dataObjectInfo;
+ }
+
+ /**
+ * Gets the value of the signatureInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link SignatureInfoCreationType }
+ *
+ */
+ public SignatureInfoCreationType getSignatureInfo() {
+ return signatureInfo;
+ }
+
+ /**
+ * Sets the value of the signatureInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignatureInfoCreationType }
+ *
+ */
+ public void setSignatureInfo(SignatureInfoCreationType value) {
+ this.signatureInfo = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateXMLSignatureResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateXMLSignatureResponseType.java
new file mode 100644
index 00000000..e72991d4
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/CreateXMLSignatureResponseType.java
@@ -0,0 +1,88 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for CreateXMLSignatureResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CreateXMLSignatureResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CreateXMLSignatureResponseType", propOrder = {
+ "any"
+})
+public class CreateXMLSignatureResponseType {
+
+ @XmlAnyElement(lax = true)
+ protected Object any;
+
+ /**
+ * Gets the value of the any property.
+ *
+ * @return
+ * possible object is
+ * {@link Element }
+ * {@link Object }
+ *
+ */
+ public Object getAny() {
+ return any;
+ }
+
+ /**
+ * Sets the value of the any property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Element }
+ * {@link Object }
+ *
+ */
+ public void setAny(Object value) {
+ this.any = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DataObjectAssociationType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DataObjectAssociationType.java
new file mode 100644
index 00000000..7e3fee76
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DataObjectAssociationType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DataObjectAssociationType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="DataObjectAssociationType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="MetaInfo" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}MetaInfoType" minOccurs="0"/>
+ * &lt;element name="Content" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64XMLLocRefReqRefContentType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DataObjectAssociationType", propOrder = {
+ "metaInfo",
+ "content"
+})
+public class DataObjectAssociationType {
+
+ @XmlElement(name = "MetaInfo")
+ protected MetaInfoType metaInfo;
+ @XmlElement(name = "Content", required = true)
+ protected Base64XMLLocRefReqRefContentType content;
+
+ /**
+ * Gets the value of the metaInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link MetaInfoType }
+ *
+ */
+ public MetaInfoType getMetaInfo() {
+ return metaInfo;
+ }
+
+ /**
+ * Sets the value of the metaInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link MetaInfoType }
+ *
+ */
+ public void setMetaInfo(MetaInfoType value) {
+ this.metaInfo = value;
+ }
+
+ /**
+ * Gets the value of the content property.
+ *
+ * @return
+ * possible object is
+ * {@link Base64XMLLocRefReqRefContentType }
+ *
+ */
+ public Base64XMLLocRefReqRefContentType getContent() {
+ return content;
+ }
+
+ /**
+ * Sets the value of the content property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Base64XMLLocRefReqRefContentType }
+ *
+ */
+ public void setContent(Base64XMLLocRefReqRefContentType value) {
+ this.content = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DataObjectInfoType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DataObjectInfoType.java
new file mode 100644
index 00000000..f3a9ee5f
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DataObjectInfoType.java
@@ -0,0 +1,188 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DataObjectInfoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="DataObjectInfoType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="DataObject" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64XMLLocRefOptRefContentType"/>
+ * &lt;element name="TransformsInfo" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}TransformsInfoType" maxOccurs="unbounded"/>
+ * &lt;element name="Supplement" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}DataObjectAssociationType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Structure" use="required">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="detached"/>
+ * &lt;enumeration value="enveloping"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/attribute>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DataObjectInfoType", propOrder = {
+ "dataObject",
+ "transformsInfo",
+ "supplement"
+})
+public class DataObjectInfoType {
+
+ @XmlElement(name = "DataObject", required = true)
+ protected Base64XMLLocRefOptRefContentType dataObject;
+ @XmlElement(name = "TransformsInfo", required = true, type = at.gv.egiz.slbinding.impl.TransformsInfoType.class)
+ protected List<at.buergerkarte.namespaces.securitylayer._1.TransformsInfoType> transformsInfo;
+ @XmlElement(name = "Supplement")
+ protected List<DataObjectAssociationType> supplement;
+ @XmlAttribute(name = "Structure", required = true)
+ protected String structure;
+
+ /**
+ * Gets the value of the dataObject property.
+ *
+ * @return
+ * possible object is
+ * {@link Base64XMLLocRefOptRefContentType }
+ *
+ */
+ public Base64XMLLocRefOptRefContentType getDataObject() {
+ return dataObject;
+ }
+
+ /**
+ * Sets the value of the dataObject property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Base64XMLLocRefOptRefContentType }
+ *
+ */
+ public void setDataObject(Base64XMLLocRefOptRefContentType value) {
+ this.dataObject = value;
+ }
+
+ /**
+ * Gets the value of the transformsInfo property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the transformsInfo property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getTransformsInfo().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link at.buergerkarte.namespaces.securitylayer._1.TransformsInfoType }
+ *
+ *
+ */
+ public List<at.buergerkarte.namespaces.securitylayer._1.TransformsInfoType> getTransformsInfo() {
+ if (transformsInfo == null) {
+ transformsInfo = new ArrayList<at.buergerkarte.namespaces.securitylayer._1.TransformsInfoType>();
+ }
+ return this.transformsInfo;
+ }
+
+ /**
+ * Gets the value of the supplement property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the supplement property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSupplement().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link DataObjectAssociationType }
+ *
+ *
+ */
+ public List<DataObjectAssociationType> getSupplement() {
+ if (supplement == null) {
+ supplement = new ArrayList<DataObjectAssociationType>();
+ }
+ return this.supplement;
+ }
+
+ /**
+ * Gets the value of the structure property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getStructure() {
+ return structure;
+ }
+
+ /**
+ * Sets the value of the structure property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setStructure(String value) {
+ this.structure = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptCMSRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptCMSRequestType.java
new file mode 100644
index 00000000..d6b51d59
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptCMSRequestType.java
@@ -0,0 +1,143 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DecryptCMSRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="DecryptCMSRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="CMSMessage" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="EncryptedContent" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}CMSEncryptedContentType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="ReturnResult" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}ReturnResultType" default="xml" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DecryptCMSRequestType", propOrder = {
+ "cmsMessage",
+ "encryptedContent"
+})
+public class DecryptCMSRequestType {
+
+ @XmlElement(name = "CMSMessage", required = true)
+ protected byte[] cmsMessage;
+ @XmlElement(name = "EncryptedContent")
+ protected CMSEncryptedContentType encryptedContent;
+ @XmlAttribute(name = "ReturnResult")
+ protected ReturnResultType returnResult;
+
+ /**
+ * Gets the value of the cmsMessage property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getCMSMessage() {
+ return cmsMessage;
+ }
+
+ /**
+ * Sets the value of the cmsMessage property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setCMSMessage(byte[] value) {
+ this.cmsMessage = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the encryptedContent property.
+ *
+ * @return
+ * possible object is
+ * {@link CMSEncryptedContentType }
+ *
+ */
+ public CMSEncryptedContentType getEncryptedContent() {
+ return encryptedContent;
+ }
+
+ /**
+ * Sets the value of the encryptedContent property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CMSEncryptedContentType }
+ *
+ */
+ public void setEncryptedContent(CMSEncryptedContentType value) {
+ this.encryptedContent = value;
+ }
+
+ /**
+ * Gets the value of the returnResult property.
+ *
+ * @return
+ * possible object is
+ * {@link ReturnResultType }
+ *
+ */
+ public ReturnResultType getReturnResult() {
+ if (returnResult == null) {
+ return ReturnResultType.XML;
+ } else {
+ return returnResult;
+ }
+ }
+
+ /**
+ * Sets the value of the returnResult property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ReturnResultType }
+ *
+ */
+ public void setReturnResult(ReturnResultType value) {
+ this.returnResult = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptCMSResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptCMSResponseType.java
new file mode 100644
index 00000000..d98e29bb
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptCMSResponseType.java
@@ -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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DecryptCMSResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="DecryptCMSResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="DecryptedData" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DecryptCMSResponseType", propOrder = {
+ "decryptedData"
+})
+public class DecryptCMSResponseType {
+
+ @XmlElement(name = "DecryptedData", required = true)
+ protected byte[] decryptedData;
+
+ /**
+ * Gets the value of the decryptedData property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getDecryptedData() {
+ return decryptedData;
+ }
+
+ /**
+ * Sets the value of the decryptedData property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setDecryptedData(byte[] value) {
+ this.decryptedData = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptXMLRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptXMLRequestType.java
new file mode 100644
index 00000000..7372130b
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptXMLRequestType.java
@@ -0,0 +1,180 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DecryptXMLRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="DecryptXMLRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="EncryptedContent" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64XMLOptRefContentType"/>
+ * &lt;element name="EncrElemsSelector" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="Supplement" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}DataObjectAssociationType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="ReturnResult" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}ReturnResultType" default="xml" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DecryptXMLRequestType", propOrder = {
+ "encryptedContent",
+ "encrElemsSelector",
+ "supplement"
+})
+public class DecryptXMLRequestType {
+
+ @XmlElement(name = "EncryptedContent", required = true)
+ protected Base64XMLOptRefContentType encryptedContent;
+ @XmlElement(name = "EncrElemsSelector", required = true)
+ protected String encrElemsSelector;
+ @XmlElement(name = "Supplement")
+ protected List<DataObjectAssociationType> supplement;
+ @XmlAttribute(name = "ReturnResult")
+ protected ReturnResultType returnResult;
+
+ /**
+ * Gets the value of the encryptedContent property.
+ *
+ * @return
+ * possible object is
+ * {@link Base64XMLOptRefContentType }
+ *
+ */
+ public Base64XMLOptRefContentType getEncryptedContent() {
+ return encryptedContent;
+ }
+
+ /**
+ * Sets the value of the encryptedContent property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Base64XMLOptRefContentType }
+ *
+ */
+ public void setEncryptedContent(Base64XMLOptRefContentType value) {
+ this.encryptedContent = value;
+ }
+
+ /**
+ * Gets the value of the encrElemsSelector property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getEncrElemsSelector() {
+ return encrElemsSelector;
+ }
+
+ /**
+ * Sets the value of the encrElemsSelector property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setEncrElemsSelector(String value) {
+ this.encrElemsSelector = value;
+ }
+
+ /**
+ * Gets the value of the supplement property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the supplement property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSupplement().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link DataObjectAssociationType }
+ *
+ *
+ */
+ public List<DataObjectAssociationType> getSupplement() {
+ if (supplement == null) {
+ supplement = new ArrayList<DataObjectAssociationType>();
+ }
+ return this.supplement;
+ }
+
+ /**
+ * Gets the value of the returnResult property.
+ *
+ * @return
+ * possible object is
+ * {@link ReturnResultType }
+ *
+ */
+ public ReturnResultType getReturnResult() {
+ if (returnResult == null) {
+ return ReturnResultType.XML;
+ } else {
+ return returnResult;
+ }
+ }
+
+ /**
+ * Sets the value of the returnResult property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ReturnResultType }
+ *
+ */
+ public void setReturnResult(ReturnResultType value) {
+ this.returnResult = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptXMLResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptXMLResponseType.java
new file mode 100644
index 00000000..15ee4c08
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/DecryptXMLResponseType.java
@@ -0,0 +1,265 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * <p>Java class for DecryptXMLResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="DecryptXMLResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence minOccurs="0">
+ * &lt;element name="CandidateDocument" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}XMLContentType"/>
+ * &lt;element name="DecryptedBinaryData" maxOccurs="unbounded" minOccurs="0">
+ * &lt;complexType>
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>base64Binary">
+ * &lt;attribute name="EncrElemSelector" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="MimeType" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="Encoding" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DecryptXMLResponseType", propOrder = {
+ "candidateDocument",
+ "decryptedBinaryData"
+})
+public class DecryptXMLResponseType {
+
+ @XmlElement(name = "CandidateDocument", type = at.gv.egiz.slbinding.impl.XMLContentType.class)
+ protected at.gv.egiz.slbinding.impl.XMLContentType candidateDocument;
+ @XmlElement(name = "DecryptedBinaryData")
+ protected List<DecryptXMLResponseType.DecryptedBinaryData> decryptedBinaryData;
+
+ /**
+ * Gets the value of the candidateDocument property.
+ *
+ * @return
+ * possible object is
+ * {@link at.buergerkarte.namespaces.securitylayer._1.XMLContentType }
+ *
+ */
+ public at.buergerkarte.namespaces.securitylayer._1.XMLContentType getCandidateDocument() {
+ return candidateDocument;
+ }
+
+ /**
+ * Sets the value of the candidateDocument property.
+ *
+ * @param value
+ * allowed object is
+ * {@link at.buergerkarte.namespaces.securitylayer._1.XMLContentType }
+ *
+ */
+ public void setCandidateDocument(at.buergerkarte.namespaces.securitylayer._1.XMLContentType value) {
+ this.candidateDocument = ((at.gv.egiz.slbinding.impl.XMLContentType) value);
+ }
+
+ /**
+ * Gets the value of the decryptedBinaryData property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the decryptedBinaryData property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getDecryptedBinaryData().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link DecryptXMLResponseType.DecryptedBinaryData }
+ *
+ *
+ */
+ public List<DecryptXMLResponseType.DecryptedBinaryData> getDecryptedBinaryData() {
+ if (decryptedBinaryData == null) {
+ decryptedBinaryData = new ArrayList<DecryptXMLResponseType.DecryptedBinaryData>();
+ }
+ return this.decryptedBinaryData;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>base64Binary">
+ * &lt;attribute name="EncrElemSelector" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="MimeType" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="Encoding" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "", propOrder = {
+ "value"
+ })
+ public static class DecryptedBinaryData {
+
+ @XmlValue
+ protected byte[] value;
+ @XmlAttribute(name = "EncrElemSelector", required = true)
+ protected String encrElemSelector;
+ @XmlAttribute(name = "MimeType")
+ protected String mimeType;
+ @XmlAttribute(name = "Encoding")
+ @XmlSchemaType(name = "anyURI")
+ protected String encoding;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setValue(byte[] value) {
+ this.value = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the encrElemSelector property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getEncrElemSelector() {
+ return encrElemSelector;
+ }
+
+ /**
+ * Sets the value of the encrElemSelector property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setEncrElemSelector(String value) {
+ this.encrElemSelector = value;
+ }
+
+ /**
+ * Gets the value of the mimeType property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getMimeType() {
+ return mimeType;
+ }
+
+ /**
+ * Sets the value of the mimeType property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setMimeType(String value) {
+ this.mimeType = value;
+ }
+
+ /**
+ * Gets the value of the encoding property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getEncoding() {
+ return encoding;
+ }
+
+ /**
+ * Sets the value of the encoding property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setEncoding(String value) {
+ this.encoding = value;
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptCMSRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptCMSRequestType.java
new file mode 100644
index 00000000..1630df92
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptCMSRequestType.java
@@ -0,0 +1,152 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for EncryptCMSRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="EncryptCMSRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="RecipientPublicKey" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}CMSRecipientPublicKeyType" maxOccurs="unbounded"/>
+ * &lt;element name="ToBeEncrypted" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}CMSToBeEncryptedType"/>
+ * &lt;/sequence>
+ * &lt;attribute name="ReturnBinaryResult" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "EncryptCMSRequestType", propOrder = {
+ "recipientPublicKey",
+ "toBeEncrypted"
+})
+public class EncryptCMSRequestType {
+
+ @XmlElement(name = "RecipientPublicKey", required = true)
+ protected List<CMSRecipientPublicKeyType> recipientPublicKey;
+ @XmlElement(name = "ToBeEncrypted", required = true)
+ protected CMSToBeEncryptedType toBeEncrypted;
+ @XmlAttribute(name = "ReturnBinaryResult")
+ protected Boolean returnBinaryResult;
+
+ /**
+ * Gets the value of the recipientPublicKey property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the recipientPublicKey property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getRecipientPublicKey().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link CMSRecipientPublicKeyType }
+ *
+ *
+ */
+ public List<CMSRecipientPublicKeyType> getRecipientPublicKey() {
+ if (recipientPublicKey == null) {
+ recipientPublicKey = new ArrayList<CMSRecipientPublicKeyType>();
+ }
+ return this.recipientPublicKey;
+ }
+
+ /**
+ * Gets the value of the toBeEncrypted property.
+ *
+ * @return
+ * possible object is
+ * {@link CMSToBeEncryptedType }
+ *
+ */
+ public CMSToBeEncryptedType getToBeEncrypted() {
+ return toBeEncrypted;
+ }
+
+ /**
+ * Sets the value of the toBeEncrypted property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CMSToBeEncryptedType }
+ *
+ */
+ public void setToBeEncrypted(CMSToBeEncryptedType value) {
+ this.toBeEncrypted = value;
+ }
+
+ /**
+ * Gets the value of the returnBinaryResult property.
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public boolean isReturnBinaryResult() {
+ if (returnBinaryResult == null) {
+ return false;
+ } else {
+ return returnBinaryResult;
+ }
+ }
+
+ /**
+ * Sets the value of the returnBinaryResult property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setReturnBinaryResult(Boolean value) {
+ this.returnBinaryResult = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptCMSResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptCMSResponseType.java
new file mode 100644
index 00000000..1c27b997
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptCMSResponseType.java
@@ -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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for EncryptCMSResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="EncryptCMSResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="CMSMessage" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "EncryptCMSResponseType", propOrder = {
+ "cmsMessage"
+})
+public class EncryptCMSResponseType {
+
+ @XmlElement(name = "CMSMessage", required = true)
+ protected byte[] cmsMessage;
+
+ /**
+ * Gets the value of the cmsMessage property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getCMSMessage() {
+ return cmsMessage;
+ }
+
+ /**
+ * Sets the value of the cmsMessage property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setCMSMessage(byte[] value) {
+ this.cmsMessage = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptXMLRequest.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptXMLRequest.java
new file mode 100644
index 00000000..e03b78d2
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptXMLRequest.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}EncryptXMLRequestType">
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "")
+@XmlRootElement(name = "EncryptXMLRequest")
+public class EncryptXMLRequest
+ extends EncryptXMLRequestType
+{
+
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptXMLRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptXMLRequestType.java
new file mode 100644
index 00000000..e027452c
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptXMLRequestType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for EncryptXMLRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="EncryptXMLRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="RecipientPublicKey" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}XMLRecipientPublicKeyType" maxOccurs="unbounded"/>
+ * &lt;element name="ToBeEncrypted" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}ToBeEncryptedType" maxOccurs="unbounded"/>
+ * &lt;element name="EncryptionInfo" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}EncryptionInfoType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "EncryptXMLRequestType", propOrder = {
+ "recipientPublicKey",
+ "toBeEncrypted",
+ "encryptionInfo"
+})
+@XmlSeeAlso({
+ EncryptXMLRequest.class
+})
+public class EncryptXMLRequestType {
+
+ @XmlElement(name = "RecipientPublicKey", required = true)
+ protected List<XMLRecipientPublicKeyType> recipientPublicKey;
+ @XmlElement(name = "ToBeEncrypted", required = true)
+ protected List<ToBeEncryptedType> toBeEncrypted;
+ @XmlElement(name = "EncryptionInfo")
+ protected EncryptionInfoType encryptionInfo;
+
+ /**
+ * Gets the value of the recipientPublicKey property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the recipientPublicKey property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getRecipientPublicKey().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link XMLRecipientPublicKeyType }
+ *
+ *
+ */
+ public List<XMLRecipientPublicKeyType> getRecipientPublicKey() {
+ if (recipientPublicKey == null) {
+ recipientPublicKey = new ArrayList<XMLRecipientPublicKeyType>();
+ }
+ return this.recipientPublicKey;
+ }
+
+ /**
+ * Gets the value of the toBeEncrypted property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the toBeEncrypted property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getToBeEncrypted().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link ToBeEncryptedType }
+ *
+ *
+ */
+ public List<ToBeEncryptedType> getToBeEncrypted() {
+ if (toBeEncrypted == null) {
+ toBeEncrypted = new ArrayList<ToBeEncryptedType>();
+ }
+ return this.toBeEncrypted;
+ }
+
+ /**
+ * Gets the value of the encryptionInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link EncryptionInfoType }
+ *
+ */
+ public EncryptionInfoType getEncryptionInfo() {
+ return encryptionInfo;
+ }
+
+ /**
+ * Sets the value of the encryptionInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link EncryptionInfoType }
+ *
+ */
+ public void setEncryptionInfo(EncryptionInfoType value) {
+ this.encryptionInfo = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptXMLResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptXMLResponseType.java
new file mode 100644
index 00000000..dfbd62ee
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptXMLResponseType.java
@@ -0,0 +1,189 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for EncryptXMLResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="EncryptXMLResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="EncryptionEnvironment">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="EncryptedData" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}EncryptedDataType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "EncryptXMLResponseType", propOrder = {
+ "encryptionEnvironment",
+ "encryptedData"
+})
+public class EncryptXMLResponseType {
+
+ @XmlElement(name = "EncryptionEnvironment", required = true)
+ protected EncryptXMLResponseType.EncryptionEnvironment encryptionEnvironment;
+ @XmlElement(name = "EncryptedData")
+ protected List<EncryptedDataType> encryptedData;
+
+ /**
+ * Gets the value of the encryptionEnvironment property.
+ *
+ * @return
+ * possible object is
+ * {@link EncryptXMLResponseType.EncryptionEnvironment }
+ *
+ */
+ public EncryptXMLResponseType.EncryptionEnvironment getEncryptionEnvironment() {
+ return encryptionEnvironment;
+ }
+
+ /**
+ * Sets the value of the encryptionEnvironment property.
+ *
+ * @param value
+ * allowed object is
+ * {@link EncryptXMLResponseType.EncryptionEnvironment }
+ *
+ */
+ public void setEncryptionEnvironment(EncryptXMLResponseType.EncryptionEnvironment value) {
+ this.encryptionEnvironment = value;
+ }
+
+ /**
+ * Gets the value of the encryptedData property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the encryptedData property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getEncryptedData().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link EncryptedDataType }
+ *
+ *
+ */
+ public List<EncryptedDataType> getEncryptedData() {
+ if (encryptedData == null) {
+ encryptedData = new ArrayList<EncryptedDataType>();
+ }
+ return this.encryptedData;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "", propOrder = {
+ "any"
+ })
+ public static class EncryptionEnvironment {
+
+ @XmlAnyElement(lax = true)
+ protected Object any;
+
+ /**
+ * Gets the value of the any property.
+ *
+ * @return
+ * possible object is
+ * {@link Element }
+ * {@link Object }
+ *
+ */
+ public Object getAny() {
+ return any;
+ }
+
+ /**
+ * Sets the value of the any property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Element }
+ * {@link Object }
+ *
+ */
+ public void setAny(Object value) {
+ this.any = value;
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptedDataType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptedDataType.java
new file mode 100644
index 00000000..62931009
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptedDataType.java
@@ -0,0 +1,110 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * <p>Java class for EncryptedDataType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="EncryptedDataType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>base64Binary">
+ * &lt;attribute name="EncDataReference" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "EncryptedDataType", propOrder = {
+ "value"
+})
+public class EncryptedDataType {
+
+ @XmlValue
+ protected byte[] value;
+ @XmlAttribute(name = "EncDataReference", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String encDataReference;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setValue(byte[] value) {
+ this.value = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the encDataReference property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getEncDataReference() {
+ return encDataReference;
+ }
+
+ /**
+ * Sets the value of the encDataReference property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setEncDataReference(String value) {
+ this.encDataReference = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptionInfoType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptionInfoType.java
new file mode 100644
index 00000000..84fe5c49
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/EncryptionInfoType.java
@@ -0,0 +1,243 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for EncryptionInfoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="EncryptionInfoType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="EncryptionEnvironment" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64XMLOptRefContentType"/>
+ * &lt;element name="EncryptedKeyLocation" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="ParentSelector" use="required" type="{http://www.w3.org/2001/XMLSchema}token" />
+ * &lt;attribute name="NodeCount" use="required" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="Supplement" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}DataObjectAssociationType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "EncryptionInfoType", propOrder = {
+ "encryptionEnvironment",
+ "encryptedKeyLocation",
+ "supplement"
+})
+public class EncryptionInfoType {
+
+ @XmlElement(name = "EncryptionEnvironment", required = true)
+ protected Base64XMLOptRefContentType encryptionEnvironment;
+ @XmlElement(name = "EncryptedKeyLocation")
+ protected EncryptionInfoType.EncryptedKeyLocation encryptedKeyLocation;
+ @XmlElement(name = "Supplement")
+ protected List<DataObjectAssociationType> supplement;
+
+ /**
+ * Gets the value of the encryptionEnvironment property.
+ *
+ * @return
+ * possible object is
+ * {@link Base64XMLOptRefContentType }
+ *
+ */
+ public Base64XMLOptRefContentType getEncryptionEnvironment() {
+ return encryptionEnvironment;
+ }
+
+ /**
+ * Sets the value of the encryptionEnvironment property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Base64XMLOptRefContentType }
+ *
+ */
+ public void setEncryptionEnvironment(Base64XMLOptRefContentType value) {
+ this.encryptionEnvironment = value;
+ }
+
+ /**
+ * Gets the value of the encryptedKeyLocation property.
+ *
+ * @return
+ * possible object is
+ * {@link EncryptionInfoType.EncryptedKeyLocation }
+ *
+ */
+ public EncryptionInfoType.EncryptedKeyLocation getEncryptedKeyLocation() {
+ return encryptedKeyLocation;
+ }
+
+ /**
+ * Sets the value of the encryptedKeyLocation property.
+ *
+ * @param value
+ * allowed object is
+ * {@link EncryptionInfoType.EncryptedKeyLocation }
+ *
+ */
+ public void setEncryptedKeyLocation(EncryptionInfoType.EncryptedKeyLocation value) {
+ this.encryptedKeyLocation = value;
+ }
+
+ /**
+ * Gets the value of the supplement property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the supplement property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSupplement().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link DataObjectAssociationType }
+ *
+ *
+ */
+ public List<DataObjectAssociationType> getSupplement() {
+ if (supplement == null) {
+ supplement = new ArrayList<DataObjectAssociationType>();
+ }
+ return this.supplement;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="ParentSelector" use="required" type="{http://www.w3.org/2001/XMLSchema}token" />
+ * &lt;attribute name="NodeCount" use="required" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "")
+ public static class EncryptedKeyLocation {
+
+ @XmlAttribute(name = "ParentSelector", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String parentSelector;
+ @XmlAttribute(name = "NodeCount", required = true)
+ @XmlSchemaType(name = "nonNegativeInteger")
+ protected BigInteger nodeCount;
+
+ /**
+ * Gets the value of the parentSelector property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getParentSelector() {
+ return parentSelector;
+ }
+
+ /**
+ * Sets the value of the parentSelector property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setParentSelector(String value) {
+ this.parentSelector = value;
+ }
+
+ /**
+ * Gets the value of the nodeCount property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getNodeCount() {
+ return nodeCount;
+ }
+
+ /**
+ * Sets the value of the nodeCount property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setNodeCount(BigInteger value) {
+ this.nodeCount = value;
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ErrorResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ErrorResponseType.java
new file mode 100644
index 00000000..bea8704b
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ErrorResponseType.java
@@ -0,0 +1,105 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ErrorResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ErrorResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ErrorCode" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}ErrorCodeType"/>
+ * &lt;element name="Info" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ErrorResponseType", propOrder = {
+ "errorCode",
+ "info"
+})
+public class ErrorResponseType {
+
+ @XmlElement(name = "ErrorCode")
+ protected int errorCode;
+ @XmlElement(name = "Info", required = true)
+ protected String info;
+
+ /**
+ * Gets the value of the errorCode property.
+ *
+ */
+ public int getErrorCode() {
+ return errorCode;
+ }
+
+ /**
+ * Sets the value of the errorCode property.
+ *
+ */
+ public void setErrorCode(int value) {
+ this.errorCode = value;
+ }
+
+ /**
+ * Gets the value of the info property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getInfo() {
+ return info;
+ }
+
+ /**
+ * Sets the value of the info property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setInfo(String value) {
+ this.info = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetPropertiesRequest.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetPropertiesRequest.java
new file mode 100644
index 00000000..c18c8c6e
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetPropertiesRequest.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}GetPropertiesRequestType">
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "")
+@XmlRootElement(name = "GetPropertiesRequest")
+public class GetPropertiesRequest
+ extends GetPropertiesRequestType
+{
+
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetPropertiesRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetPropertiesRequestType.java
new file mode 100644
index 00000000..6e390ce1
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetPropertiesRequestType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for GetPropertiesRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="GetPropertiesRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "GetPropertiesRequestType")
+@XmlSeeAlso({
+ GetPropertiesRequest.class
+})
+public class GetPropertiesRequestType {
+
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetPropertiesResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetPropertiesResponseType.java
new file mode 100644
index 00000000..0f546d88
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetPropertiesResponseType.java
@@ -0,0 +1,265 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for GetPropertiesResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="GetPropertiesResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ViewerMediaType" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}MimeTypeType" maxOccurs="unbounded"/>
+ * &lt;element name="XMLSignatureTransform" type="{http://www.w3.org/2001/XMLSchema}anyURI" maxOccurs="unbounded"/>
+ * &lt;element name="KeyboxIdentifier" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}QualifiedBoxIdentifierType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="Binding" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}BindingType" maxOccurs="unbounded"/>
+ * &lt;element name="ProtocolVersion" type="{http://www.w3.org/2001/XMLSchema}token" maxOccurs="unbounded"/>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "GetPropertiesResponseType", propOrder = {
+ "viewerMediaType",
+ "xmlSignatureTransform",
+ "keyboxIdentifier",
+ "binding",
+ "protocolVersion",
+ "any"
+})
+public class GetPropertiesResponseType {
+
+ @XmlElement(name = "ViewerMediaType", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected List<String> viewerMediaType;
+ @XmlElement(name = "XMLSignatureTransform", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected List<String> xmlSignatureTransform;
+ @XmlElement(name = "KeyboxIdentifier")
+ protected List<QualifiedBoxIdentifierType> keyboxIdentifier;
+ @XmlElement(name = "Binding", required = true)
+ protected List<BindingType> binding;
+ @XmlElement(name = "ProtocolVersion", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected List<String> protocolVersion;
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * Gets the value of the viewerMediaType property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the viewerMediaType property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getViewerMediaType().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getViewerMediaType() {
+ if (viewerMediaType == null) {
+ viewerMediaType = new ArrayList<String>();
+ }
+ return this.viewerMediaType;
+ }
+
+ /**
+ * Gets the value of the xmlSignatureTransform property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the xmlSignatureTransform property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getXMLSignatureTransform().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getXMLSignatureTransform() {
+ if (xmlSignatureTransform == null) {
+ xmlSignatureTransform = new ArrayList<String>();
+ }
+ return this.xmlSignatureTransform;
+ }
+
+ /**
+ * Gets the value of the keyboxIdentifier property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the keyboxIdentifier property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getKeyboxIdentifier().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link QualifiedBoxIdentifierType }
+ *
+ *
+ */
+ public List<QualifiedBoxIdentifierType> getKeyboxIdentifier() {
+ if (keyboxIdentifier == null) {
+ keyboxIdentifier = new ArrayList<QualifiedBoxIdentifierType>();
+ }
+ return this.keyboxIdentifier;
+ }
+
+ /**
+ * Gets the value of the binding property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the binding property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getBinding().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link BindingType }
+ *
+ *
+ */
+ public List<BindingType> getBinding() {
+ if (binding == null) {
+ binding = new ArrayList<BindingType>();
+ }
+ return this.binding;
+ }
+
+ /**
+ * Gets the value of the protocolVersion property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the protocolVersion property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getProtocolVersion().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getProtocolVersion() {
+ if (protocolVersion == null) {
+ protocolVersion = new ArrayList<String>();
+ }
+ return this.protocolVersion;
+ }
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetStatusRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetStatusRequestType.java
new file mode 100644
index 00000000..50c159a9
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetStatusRequestType.java
@@ -0,0 +1,116 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for GetStatusRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="GetStatusRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence minOccurs="0">
+ * &lt;element name="TokenStatus" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}TokenStatusType"/>
+ * &lt;element name="MaxDelay" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "GetStatusRequestType", propOrder = {
+ "tokenStatus",
+ "maxDelay"
+})
+public class GetStatusRequestType {
+
+ @XmlElement(name = "TokenStatus")
+ protected TokenStatusType tokenStatus;
+ @XmlElement(name = "MaxDelay")
+ @XmlSchemaType(name = "nonNegativeInteger")
+ protected BigInteger maxDelay;
+
+ /**
+ * Gets the value of the tokenStatus property.
+ *
+ * @return
+ * possible object is
+ * {@link TokenStatusType }
+ *
+ */
+ public TokenStatusType getTokenStatus() {
+ return tokenStatus;
+ }
+
+ /**
+ * Sets the value of the tokenStatus property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TokenStatusType }
+ *
+ */
+ public void setTokenStatus(TokenStatusType value) {
+ this.tokenStatus = value;
+ }
+
+ /**
+ * Gets the value of the maxDelay property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getMaxDelay() {
+ return maxDelay;
+ }
+
+ /**
+ * Sets the value of the maxDelay property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setMaxDelay(BigInteger value) {
+ this.maxDelay = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetStatusResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetStatusResponseType.java
new file mode 100644
index 00000000..41ba23b8
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/GetStatusResponseType.java
@@ -0,0 +1,85 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for GetStatusResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="GetStatusResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="TokenStatus" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}TokenStatusType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "GetStatusResponseType", propOrder = {
+ "tokenStatus"
+})
+public class GetStatusResponseType {
+
+ @XmlElement(name = "TokenStatus", required = true)
+ protected TokenStatusType tokenStatus;
+
+ /**
+ * Gets the value of the tokenStatus property.
+ *
+ * @return
+ * possible object is
+ * {@link TokenStatusType }
+ *
+ */
+ public TokenStatusType getTokenStatus() {
+ return tokenStatus;
+ }
+
+ /**
+ * Sets the value of the tokenStatus property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TokenStatusType }
+ *
+ */
+ public void setTokenStatus(TokenStatusType value) {
+ this.tokenStatus = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/HashDataType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/HashDataType.java
new file mode 100644
index 00000000..de03f034
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/HashDataType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for HashDataType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="HashDataType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="MetaInfo" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}MetaInfoType"/>
+ * &lt;element name="Content" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64XMLOptRefContentType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HashDataType", propOrder = {
+ "metaInfo",
+ "content"
+})
+public class HashDataType {
+
+ @XmlElement(name = "MetaInfo", required = true)
+ protected MetaInfoType metaInfo;
+ @XmlElement(name = "Content", required = true)
+ protected Base64XMLOptRefContentType content;
+
+ /**
+ * Gets the value of the metaInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link MetaInfoType }
+ *
+ */
+ public MetaInfoType getMetaInfo() {
+ return metaInfo;
+ }
+
+ /**
+ * Sets the value of the metaInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link MetaInfoType }
+ *
+ */
+ public void setMetaInfo(MetaInfoType value) {
+ this.metaInfo = value;
+ }
+
+ /**
+ * Gets the value of the content property.
+ *
+ * @return
+ * possible object is
+ * {@link Base64XMLOptRefContentType }
+ *
+ */
+ public Base64XMLOptRefContentType getContent() {
+ return content;
+ }
+
+ /**
+ * Sets the value of the content property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Base64XMLOptRefContentType }
+ *
+ */
+ public void setContent(Base64XMLOptRefContentType value) {
+ this.content = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxAssocArrayPairType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxAssocArrayPairType.java
new file mode 100644
index 00000000..996777e1
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxAssocArrayPairType.java
@@ -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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for InfoboxAssocArrayPairType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InfoboxAssocArrayPairType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64XMLContentType">
+ * &lt;attribute name="Key" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxAssocArrayPairType")
+public class InfoboxAssocArrayPairType
+ extends Base64XMLContentType
+{
+
+ @XmlAttribute(name = "Key", required = true)
+ protected String key;
+
+ /**
+ * Gets the value of the key property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getKey() {
+ return key;
+ }
+
+ /**
+ * Sets the value of the key property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setKey(String value) {
+ this.key = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxAvailableRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxAvailableRequestType.java
new file mode 100644
index 00000000..d7d12767
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxAvailableRequestType.java
@@ -0,0 +1,53 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for InfoboxAvailableRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InfoboxAvailableRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxAvailableRequestType")
+public class InfoboxAvailableRequestType {
+
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxAvailableResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxAvailableResponseType.java
new file mode 100644
index 00000000..a3fb3b36
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxAvailableResponseType.java
@@ -0,0 +1,95 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for InfoboxAvailableResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InfoboxAvailableResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ * &lt;element name="InfoboxIdentifier" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}BoxIdentifierType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxAvailableResponseType", propOrder = {
+ "infoboxIdentifier"
+})
+public class InfoboxAvailableResponseType {
+
+ @XmlElement(name = "InfoboxIdentifier")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected List<String> infoboxIdentifier;
+
+ /**
+ * Gets the value of the infoboxIdentifier property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the infoboxIdentifier property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getInfoboxIdentifier().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getInfoboxIdentifier() {
+ if (infoboxIdentifier == null) {
+ infoboxIdentifier = new ArrayList<String>();
+ }
+ return this.infoboxIdentifier;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxCreateRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxCreateRequestType.java
new file mode 100644
index 00000000..0eaebd7b
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxCreateRequestType.java
@@ -0,0 +1,284 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for InfoboxCreateRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InfoboxCreateRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="InfoboxIdentifier" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}BoxIdentifierType"/>
+ * &lt;element name="InfoboxType" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}InfoboxTypeType"/>
+ * &lt;element name="Creator" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="Purpose" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="ReadAccessAuthorization" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}AccessAuthorizationType" minOccurs="0"/>
+ * &lt;element name="UpdateAccessAuthorization" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}AccessAuthorizationType" minOccurs="0"/>
+ * &lt;element name="ReadUserConfirmation" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}UserConfirmationType" minOccurs="0"/>
+ * &lt;element name="UpdateUserConfirmation" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}UserConfirmationType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxCreateRequestType", propOrder = {
+ "infoboxIdentifier",
+ "infoboxType",
+ "creator",
+ "purpose",
+ "readAccessAuthorization",
+ "updateAccessAuthorization",
+ "readUserConfirmation",
+ "updateUserConfirmation"
+})
+public class InfoboxCreateRequestType {
+
+ @XmlElement(name = "InfoboxIdentifier", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected String infoboxIdentifier;
+ @XmlElement(name = "InfoboxType", required = true)
+ protected InfoboxTypeType infoboxType;
+ @XmlElement(name = "Creator", required = true)
+ protected String creator;
+ @XmlElement(name = "Purpose", required = true)
+ protected String purpose;
+ @XmlElement(name = "ReadAccessAuthorization")
+ protected AccessAuthorizationType readAccessAuthorization;
+ @XmlElement(name = "UpdateAccessAuthorization")
+ protected AccessAuthorizationType updateAccessAuthorization;
+ @XmlElement(name = "ReadUserConfirmation")
+ protected UserConfirmationType readUserConfirmation;
+ @XmlElement(name = "UpdateUserConfirmation")
+ protected UserConfirmationType updateUserConfirmation;
+
+ /**
+ * Gets the value of the infoboxIdentifier property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getInfoboxIdentifier() {
+ return infoboxIdentifier;
+ }
+
+ /**
+ * Sets the value of the infoboxIdentifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setInfoboxIdentifier(String value) {
+ this.infoboxIdentifier = value;
+ }
+
+ /**
+ * Gets the value of the infoboxType property.
+ *
+ * @return
+ * possible object is
+ * {@link InfoboxTypeType }
+ *
+ */
+ public InfoboxTypeType getInfoboxType() {
+ return infoboxType;
+ }
+
+ /**
+ * Sets the value of the infoboxType property.
+ *
+ * @param value
+ * allowed object is
+ * {@link InfoboxTypeType }
+ *
+ */
+ public void setInfoboxType(InfoboxTypeType value) {
+ this.infoboxType = value;
+ }
+
+ /**
+ * Gets the value of the creator property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getCreator() {
+ return creator;
+ }
+
+ /**
+ * Sets the value of the creator property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setCreator(String value) {
+ this.creator = value;
+ }
+
+ /**
+ * Gets the value of the purpose property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getPurpose() {
+ return purpose;
+ }
+
+ /**
+ * Sets the value of the purpose property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPurpose(String value) {
+ this.purpose = value;
+ }
+
+ /**
+ * Gets the value of the readAccessAuthorization property.
+ *
+ * @return
+ * possible object is
+ * {@link AccessAuthorizationType }
+ *
+ */
+ public AccessAuthorizationType getReadAccessAuthorization() {
+ return readAccessAuthorization;
+ }
+
+ /**
+ * Sets the value of the readAccessAuthorization property.
+ *
+ * @param value
+ * allowed object is
+ * {@link AccessAuthorizationType }
+ *
+ */
+ public void setReadAccessAuthorization(AccessAuthorizationType value) {
+ this.readAccessAuthorization = value;
+ }
+
+ /**
+ * Gets the value of the updateAccessAuthorization property.
+ *
+ * @return
+ * possible object is
+ * {@link AccessAuthorizationType }
+ *
+ */
+ public AccessAuthorizationType getUpdateAccessAuthorization() {
+ return updateAccessAuthorization;
+ }
+
+ /**
+ * Sets the value of the updateAccessAuthorization property.
+ *
+ * @param value
+ * allowed object is
+ * {@link AccessAuthorizationType }
+ *
+ */
+ public void setUpdateAccessAuthorization(AccessAuthorizationType value) {
+ this.updateAccessAuthorization = value;
+ }
+
+ /**
+ * Gets the value of the readUserConfirmation property.
+ *
+ * @return
+ * possible object is
+ * {@link UserConfirmationType }
+ *
+ */
+ public UserConfirmationType getReadUserConfirmation() {
+ return readUserConfirmation;
+ }
+
+ /**
+ * Sets the value of the readUserConfirmation property.
+ *
+ * @param value
+ * allowed object is
+ * {@link UserConfirmationType }
+ *
+ */
+ public void setReadUserConfirmation(UserConfirmationType value) {
+ this.readUserConfirmation = value;
+ }
+
+ /**
+ * Gets the value of the updateUserConfirmation property.
+ *
+ * @return
+ * possible object is
+ * {@link UserConfirmationType }
+ *
+ */
+ public UserConfirmationType getUpdateUserConfirmation() {
+ return updateUserConfirmation;
+ }
+
+ /**
+ * Sets the value of the updateUserConfirmation property.
+ *
+ * @param value
+ * allowed object is
+ * {@link UserConfirmationType }
+ *
+ */
+ public void setUpdateUserConfirmation(UserConfirmationType value) {
+ this.updateUserConfirmation = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxCreateResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxCreateResponseType.java
new file mode 100644
index 00000000..16558710
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxCreateResponseType.java
@@ -0,0 +1,53 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for InfoboxCreateResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InfoboxCreateResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxCreateResponseType")
+public class InfoboxCreateResponseType {
+
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxDeleteRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxDeleteRequestType.java
new file mode 100644
index 00000000..99a342d2
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxDeleteRequestType.java
@@ -0,0 +1,88 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for InfoboxDeleteRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InfoboxDeleteRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="InfoboxIdentifier" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}BoxIdentifierType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxDeleteRequestType", propOrder = {
+ "infoboxIdentifier"
+})
+public class InfoboxDeleteRequestType {
+
+ @XmlElement(name = "InfoboxIdentifier", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected String infoboxIdentifier;
+
+ /**
+ * Gets the value of the infoboxIdentifier property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getInfoboxIdentifier() {
+ return infoboxIdentifier;
+ }
+
+ /**
+ * Sets the value of the infoboxIdentifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setInfoboxIdentifier(String value) {
+ this.infoboxIdentifier = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxDeleteResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxDeleteResponseType.java
new file mode 100644
index 00000000..2ca2af9d
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxDeleteResponseType.java
@@ -0,0 +1,53 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for InfoboxDeleteResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InfoboxDeleteResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxDeleteResponseType")
+public class InfoboxDeleteResponseType {
+
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadDataAssocArrayType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadDataAssocArrayType.java
new file mode 100644
index 00000000..2b410a53
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadDataAssocArrayType.java
@@ -0,0 +1,132 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for InfoboxReadDataAssocArrayType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InfoboxReadDataAssocArrayType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice>
+ * &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ * &lt;element name="Key" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}BoxIdentifierType"/>
+ * &lt;/sequence>
+ * &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ * &lt;element name="Pair" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}InfoboxAssocArrayPairType"/>
+ * &lt;/sequence>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxReadDataAssocArrayType", propOrder = {
+ "key",
+ "pair"
+})
+public class InfoboxReadDataAssocArrayType {
+
+ @XmlElement(name = "Key")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected List<String> key;
+ @XmlElement(name = "Pair")
+ protected List<InfoboxAssocArrayPairType> pair;
+
+ /**
+ * Gets the value of the key property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the key property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getKey().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getKey() {
+ if (key == null) {
+ key = new ArrayList<String>();
+ }
+ return this.key;
+ }
+
+ /**
+ * Gets the value of the pair property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the pair property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getPair().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link InfoboxAssocArrayPairType }
+ *
+ *
+ */
+ public List<InfoboxAssocArrayPairType> getPair() {
+ if (pair == null) {
+ pair = new ArrayList<InfoboxAssocArrayPairType>();
+ }
+ return this.pair;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadParamsAssocArrayType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadParamsAssocArrayType.java
new file mode 100644
index 00000000..e9ec5140
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadParamsAssocArrayType.java
@@ -0,0 +1,450 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for InfoboxReadParamsAssocArrayType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InfoboxReadParamsAssocArrayType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice>
+ * &lt;element name="ReadKeys">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="SearchString" use="required" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}WildCardSearchStringType" />
+ * &lt;attribute name="UserMakesUnique" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="ReadPairs">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="SearchString" use="required" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}WildCardSearchStringType" />
+ * &lt;attribute name="UserMakesUnique" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;attribute name="ValuesAreXMLEntities" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="ReadValue">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="Key" use="required" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}BoxIdentifierType" />
+ * &lt;attribute name="ValueIsXMLEntity" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxReadParamsAssocArrayType", propOrder = {
+ "readKeys",
+ "readPairs",
+ "readValue"
+})
+public class InfoboxReadParamsAssocArrayType {
+
+ @XmlElement(name = "ReadKeys")
+ protected InfoboxReadParamsAssocArrayType.ReadKeys readKeys;
+ @XmlElement(name = "ReadPairs")
+ protected InfoboxReadParamsAssocArrayType.ReadPairs readPairs;
+ @XmlElement(name = "ReadValue")
+ protected InfoboxReadParamsAssocArrayType.ReadValue readValue;
+
+ /**
+ * Gets the value of the readKeys property.
+ *
+ * @return
+ * possible object is
+ * {@link InfoboxReadParamsAssocArrayType.ReadKeys }
+ *
+ */
+ public InfoboxReadParamsAssocArrayType.ReadKeys getReadKeys() {
+ return readKeys;
+ }
+
+ /**
+ * Sets the value of the readKeys property.
+ *
+ * @param value
+ * allowed object is
+ * {@link InfoboxReadParamsAssocArrayType.ReadKeys }
+ *
+ */
+ public void setReadKeys(InfoboxReadParamsAssocArrayType.ReadKeys value) {
+ this.readKeys = value;
+ }
+
+ /**
+ * Gets the value of the readPairs property.
+ *
+ * @return
+ * possible object is
+ * {@link InfoboxReadParamsAssocArrayType.ReadPairs }
+ *
+ */
+ public InfoboxReadParamsAssocArrayType.ReadPairs getReadPairs() {
+ return readPairs;
+ }
+
+ /**
+ * Sets the value of the readPairs property.
+ *
+ * @param value
+ * allowed object is
+ * {@link InfoboxReadParamsAssocArrayType.ReadPairs }
+ *
+ */
+ public void setReadPairs(InfoboxReadParamsAssocArrayType.ReadPairs value) {
+ this.readPairs = value;
+ }
+
+ /**
+ * Gets the value of the readValue property.
+ *
+ * @return
+ * possible object is
+ * {@link InfoboxReadParamsAssocArrayType.ReadValue }
+ *
+ */
+ public InfoboxReadParamsAssocArrayType.ReadValue getReadValue() {
+ return readValue;
+ }
+
+ /**
+ * Sets the value of the readValue property.
+ *
+ * @param value
+ * allowed object is
+ * {@link InfoboxReadParamsAssocArrayType.ReadValue }
+ *
+ */
+ public void setReadValue(InfoboxReadParamsAssocArrayType.ReadValue value) {
+ this.readValue = value;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="SearchString" use="required" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}WildCardSearchStringType" />
+ * &lt;attribute name="UserMakesUnique" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "")
+ public static class ReadKeys {
+
+ @XmlAttribute(name = "SearchString", required = true)
+ protected String searchString;
+ @XmlAttribute(name = "UserMakesUnique")
+ protected Boolean userMakesUnique;
+
+ /**
+ * Gets the value of the searchString property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getSearchString() {
+ return searchString;
+ }
+
+ /**
+ * Sets the value of the searchString property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSearchString(String value) {
+ this.searchString = value;
+ }
+
+ /**
+ * Gets the value of the userMakesUnique property.
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public boolean isUserMakesUnique() {
+ if (userMakesUnique == null) {
+ return false;
+ } else {
+ return userMakesUnique;
+ }
+ }
+
+ /**
+ * Sets the value of the userMakesUnique property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setUserMakesUnique(Boolean value) {
+ this.userMakesUnique = value;
+ }
+
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="SearchString" use="required" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}WildCardSearchStringType" />
+ * &lt;attribute name="UserMakesUnique" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;attribute name="ValuesAreXMLEntities" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "")
+ public static class ReadPairs {
+
+ @XmlAttribute(name = "SearchString", required = true)
+ protected String searchString;
+ @XmlAttribute(name = "UserMakesUnique")
+ protected Boolean userMakesUnique;
+ @XmlAttribute(name = "ValuesAreXMLEntities")
+ protected Boolean valuesAreXMLEntities;
+
+ /**
+ * Gets the value of the searchString property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getSearchString() {
+ return searchString;
+ }
+
+ /**
+ * Sets the value of the searchString property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSearchString(String value) {
+ this.searchString = value;
+ }
+
+ /**
+ * Gets the value of the userMakesUnique property.
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public boolean isUserMakesUnique() {
+ if (userMakesUnique == null) {
+ return false;
+ } else {
+ return userMakesUnique;
+ }
+ }
+
+ /**
+ * Sets the value of the userMakesUnique property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setUserMakesUnique(Boolean value) {
+ this.userMakesUnique = value;
+ }
+
+ /**
+ * Gets the value of the valuesAreXMLEntities property.
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public boolean isValuesAreXMLEntities() {
+ if (valuesAreXMLEntities == null) {
+ return false;
+ } else {
+ return valuesAreXMLEntities;
+ }
+ }
+
+ /**
+ * Sets the value of the valuesAreXMLEntities property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setValuesAreXMLEntities(Boolean value) {
+ this.valuesAreXMLEntities = value;
+ }
+
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="Key" use="required" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}BoxIdentifierType" />
+ * &lt;attribute name="ValueIsXMLEntity" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "")
+ public static class ReadValue {
+
+ @XmlAttribute(name = "Key", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected String key;
+ @XmlAttribute(name = "ValueIsXMLEntity")
+ protected Boolean valueIsXMLEntity;
+
+ /**
+ * Gets the value of the key property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getKey() {
+ return key;
+ }
+
+ /**
+ * Sets the value of the key property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setKey(String value) {
+ this.key = value;
+ }
+
+ /**
+ * Gets the value of the valueIsXMLEntity property.
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public boolean isValueIsXMLEntity() {
+ if (valueIsXMLEntity == null) {
+ return false;
+ } else {
+ return valueIsXMLEntity;
+ }
+ }
+
+ /**
+ * Sets the value of the valueIsXMLEntity property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setValueIsXMLEntity(Boolean value) {
+ this.valueIsXMLEntity = value;
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadParamsBinaryFileType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadParamsBinaryFileType.java
new file mode 100644
index 00000000..7d454835
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadParamsBinaryFileType.java
@@ -0,0 +1,85 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for InfoboxReadParamsBinaryFileType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InfoboxReadParamsBinaryFileType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="ContentIsXMLEntity" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxReadParamsBinaryFileType")
+public class InfoboxReadParamsBinaryFileType {
+
+ @XmlAttribute(name = "ContentIsXMLEntity")
+ protected Boolean contentIsXMLEntity;
+
+ /**
+ * Gets the value of the contentIsXMLEntity property.
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public boolean isContentIsXMLEntity() {
+ if (contentIsXMLEntity == null) {
+ return false;
+ } else {
+ return contentIsXMLEntity;
+ }
+ }
+
+ /**
+ * Sets the value of the contentIsXMLEntity property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setContentIsXMLEntity(Boolean value) {
+ this.contentIsXMLEntity = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadRequestType.java
new file mode 100644
index 00000000..cc155ba8
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadRequestType.java
@@ -0,0 +1,174 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for InfoboxReadRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InfoboxReadRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="InfoboxIdentifier" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}BoxIdentifierType"/>
+ * &lt;choice>
+ * &lt;element name="BinaryFileParameters" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}InfoboxReadParamsBinaryFileType"/>
+ * &lt;element name="AssocArrayParameters" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}InfoboxReadParamsAssocArrayType"/>
+ * &lt;/choice>
+ * &lt;element name="BoxSpecificParameters" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}AnyChildrenType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxReadRequestType", propOrder = {
+ "infoboxIdentifier",
+ "binaryFileParameters",
+ "assocArrayParameters",
+ "boxSpecificParameters"
+})
+public class InfoboxReadRequestType {
+
+ @XmlElement(name = "InfoboxIdentifier", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected String infoboxIdentifier;
+ @XmlElement(name = "BinaryFileParameters")
+ protected InfoboxReadParamsBinaryFileType binaryFileParameters;
+ @XmlElement(name = "AssocArrayParameters")
+ protected InfoboxReadParamsAssocArrayType assocArrayParameters;
+ @XmlElement(name = "BoxSpecificParameters")
+ protected AnyChildrenType boxSpecificParameters;
+
+ /**
+ * Gets the value of the infoboxIdentifier property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getInfoboxIdentifier() {
+ return infoboxIdentifier;
+ }
+
+ /**
+ * Sets the value of the infoboxIdentifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setInfoboxIdentifier(String value) {
+ this.infoboxIdentifier = value;
+ }
+
+ /**
+ * Gets the value of the binaryFileParameters property.
+ *
+ * @return
+ * possible object is
+ * {@link InfoboxReadParamsBinaryFileType }
+ *
+ */
+ public InfoboxReadParamsBinaryFileType getBinaryFileParameters() {
+ return binaryFileParameters;
+ }
+
+ /**
+ * Sets the value of the binaryFileParameters property.
+ *
+ * @param value
+ * allowed object is
+ * {@link InfoboxReadParamsBinaryFileType }
+ *
+ */
+ public void setBinaryFileParameters(InfoboxReadParamsBinaryFileType value) {
+ this.binaryFileParameters = value;
+ }
+
+ /**
+ * Gets the value of the assocArrayParameters property.
+ *
+ * @return
+ * possible object is
+ * {@link InfoboxReadParamsAssocArrayType }
+ *
+ */
+ public InfoboxReadParamsAssocArrayType getAssocArrayParameters() {
+ return assocArrayParameters;
+ }
+
+ /**
+ * Sets the value of the assocArrayParameters property.
+ *
+ * @param value
+ * allowed object is
+ * {@link InfoboxReadParamsAssocArrayType }
+ *
+ */
+ public void setAssocArrayParameters(InfoboxReadParamsAssocArrayType value) {
+ this.assocArrayParameters = value;
+ }
+
+ /**
+ * Gets the value of the boxSpecificParameters property.
+ *
+ * @return
+ * possible object is
+ * {@link AnyChildrenType }
+ *
+ */
+ public AnyChildrenType getBoxSpecificParameters() {
+ return boxSpecificParameters;
+ }
+
+ /**
+ * Sets the value of the boxSpecificParameters property.
+ *
+ * @param value
+ * allowed object is
+ * {@link AnyChildrenType }
+ *
+ */
+ public void setBoxSpecificParameters(AnyChildrenType value) {
+ this.boxSpecificParameters = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadResponseType.java
new file mode 100644
index 00000000..74ed20d6
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxReadResponseType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for InfoboxReadResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InfoboxReadResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice>
+ * &lt;element name="BinaryFileData" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64XMLContentType"/>
+ * &lt;element name="AssocArrayData" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}InfoboxReadDataAssocArrayType"/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxReadResponseType", propOrder = {
+ "binaryFileData",
+ "assocArrayData"
+})
+public class InfoboxReadResponseType {
+
+ @XmlElement(name = "BinaryFileData")
+ protected Base64XMLContentType binaryFileData;
+ @XmlElement(name = "AssocArrayData")
+ protected InfoboxReadDataAssocArrayType assocArrayData;
+
+ /**
+ * Gets the value of the binaryFileData property.
+ *
+ * @return
+ * possible object is
+ * {@link Base64XMLContentType }
+ *
+ */
+ public Base64XMLContentType getBinaryFileData() {
+ return binaryFileData;
+ }
+
+ /**
+ * Sets the value of the binaryFileData property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Base64XMLContentType }
+ *
+ */
+ public void setBinaryFileData(Base64XMLContentType value) {
+ this.binaryFileData = value;
+ }
+
+ /**
+ * Gets the value of the assocArrayData property.
+ *
+ * @return
+ * possible object is
+ * {@link InfoboxReadDataAssocArrayType }
+ *
+ */
+ public InfoboxReadDataAssocArrayType getAssocArrayData() {
+ return assocArrayData;
+ }
+
+ /**
+ * Sets the value of the assocArrayData property.
+ *
+ * @param value
+ * allowed object is
+ * {@link InfoboxReadDataAssocArrayType }
+ *
+ */
+ public void setAssocArrayData(InfoboxReadDataAssocArrayType value) {
+ this.assocArrayData = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxTypeType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxTypeType.java
new file mode 100644
index 00000000..b316a512
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxTypeType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for InfoboxTypeType.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="InfoboxTypeType">
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="BinaryFile"/>
+ * &lt;enumeration value="AssocArray"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ *
+ */
+@XmlType(name = "InfoboxTypeType")
+@XmlEnum
+public enum InfoboxTypeType {
+
+ @XmlEnumValue("BinaryFile")
+ BINARY_FILE("BinaryFile"),
+ @XmlEnumValue("AssocArray")
+ ASSOC_ARRAY("AssocArray");
+ private final String value;
+
+ InfoboxTypeType(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static InfoboxTypeType fromValue(String v) {
+ for (InfoboxTypeType c: InfoboxTypeType.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ throw new IllegalArgumentException(v);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxUpdateParamsAssocArrayType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxUpdateParamsAssocArrayType.java
new file mode 100644
index 00000000..c952a6b8
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxUpdateParamsAssocArrayType.java
@@ -0,0 +1,297 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for InfoboxUpdateParamsAssocArrayType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InfoboxUpdateParamsAssocArrayType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice>
+ * &lt;element name="UpdateKey">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="Key" use="required" type="{http://www.w3.org/2001/XMLSchema}token" />
+ * &lt;attribute name="NewKey" use="required" type="{http://www.w3.org/2001/XMLSchema}token" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="UpdateValue" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}InfoboxAssocArrayPairType"/>
+ * &lt;element name="DeletePair">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="Key" use="required" type="{http://www.w3.org/2001/XMLSchema}token" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxUpdateParamsAssocArrayType", propOrder = {
+ "updateKey",
+ "updateValue",
+ "deletePair"
+})
+public class InfoboxUpdateParamsAssocArrayType {
+
+ @XmlElement(name = "UpdateKey")
+ protected InfoboxUpdateParamsAssocArrayType.UpdateKey updateKey;
+ @XmlElement(name = "UpdateValue")
+ protected InfoboxAssocArrayPairType updateValue;
+ @XmlElement(name = "DeletePair")
+ protected InfoboxUpdateParamsAssocArrayType.DeletePair deletePair;
+
+ /**
+ * Gets the value of the updateKey property.
+ *
+ * @return
+ * possible object is
+ * {@link InfoboxUpdateParamsAssocArrayType.UpdateKey }
+ *
+ */
+ public InfoboxUpdateParamsAssocArrayType.UpdateKey getUpdateKey() {
+ return updateKey;
+ }
+
+ /**
+ * Sets the value of the updateKey property.
+ *
+ * @param value
+ * allowed object is
+ * {@link InfoboxUpdateParamsAssocArrayType.UpdateKey }
+ *
+ */
+ public void setUpdateKey(InfoboxUpdateParamsAssocArrayType.UpdateKey value) {
+ this.updateKey = value;
+ }
+
+ /**
+ * Gets the value of the updateValue property.
+ *
+ * @return
+ * possible object is
+ * {@link InfoboxAssocArrayPairType }
+ *
+ */
+ public InfoboxAssocArrayPairType getUpdateValue() {
+ return updateValue;
+ }
+
+ /**
+ * Sets the value of the updateValue property.
+ *
+ * @param value
+ * allowed object is
+ * {@link InfoboxAssocArrayPairType }
+ *
+ */
+ public void setUpdateValue(InfoboxAssocArrayPairType value) {
+ this.updateValue = value;
+ }
+
+ /**
+ * Gets the value of the deletePair property.
+ *
+ * @return
+ * possible object is
+ * {@link InfoboxUpdateParamsAssocArrayType.DeletePair }
+ *
+ */
+ public InfoboxUpdateParamsAssocArrayType.DeletePair getDeletePair() {
+ return deletePair;
+ }
+
+ /**
+ * Sets the value of the deletePair property.
+ *
+ * @param value
+ * allowed object is
+ * {@link InfoboxUpdateParamsAssocArrayType.DeletePair }
+ *
+ */
+ public void setDeletePair(InfoboxUpdateParamsAssocArrayType.DeletePair value) {
+ this.deletePair = value;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="Key" use="required" type="{http://www.w3.org/2001/XMLSchema}token" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "")
+ public static class DeletePair {
+
+ @XmlAttribute(name = "Key", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String key;
+
+ /**
+ * Gets the value of the key property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getKey() {
+ return key;
+ }
+
+ /**
+ * Sets the value of the key property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setKey(String value) {
+ this.key = value;
+ }
+
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="Key" use="required" type="{http://www.w3.org/2001/XMLSchema}token" />
+ * &lt;attribute name="NewKey" use="required" type="{http://www.w3.org/2001/XMLSchema}token" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "")
+ public static class UpdateKey {
+
+ @XmlAttribute(name = "Key", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String key;
+ @XmlAttribute(name = "NewKey", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String newKey;
+
+ /**
+ * Gets the value of the key property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getKey() {
+ return key;
+ }
+
+ /**
+ * Sets the value of the key property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setKey(String value) {
+ this.key = value;
+ }
+
+ /**
+ * Gets the value of the newKey property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getNewKey() {
+ return newKey;
+ }
+
+ /**
+ * Sets the value of the newKey property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setNewKey(String value) {
+ this.newKey = value;
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxUpdateRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxUpdateRequestType.java
new file mode 100644
index 00000000..d7d3262a
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxUpdateRequestType.java
@@ -0,0 +1,174 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for InfoboxUpdateRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InfoboxUpdateRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="InfoboxIdentifier" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}BoxIdentifierType"/>
+ * &lt;choice>
+ * &lt;element name="BinaryFileParameters" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64XMLContentType"/>
+ * &lt;element name="AssocArrayParameters" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}InfoboxUpdateParamsAssocArrayType"/>
+ * &lt;/choice>
+ * &lt;element name="BoxSpecificParameters" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}AnyChildrenType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxUpdateRequestType", propOrder = {
+ "infoboxIdentifier",
+ "binaryFileParameters",
+ "assocArrayParameters",
+ "boxSpecificParameters"
+})
+public class InfoboxUpdateRequestType {
+
+ @XmlElement(name = "InfoboxIdentifier", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected String infoboxIdentifier;
+ @XmlElement(name = "BinaryFileParameters")
+ protected Base64XMLContentType binaryFileParameters;
+ @XmlElement(name = "AssocArrayParameters")
+ protected InfoboxUpdateParamsAssocArrayType assocArrayParameters;
+ @XmlElement(name = "BoxSpecificParameters")
+ protected AnyChildrenType boxSpecificParameters;
+
+ /**
+ * Gets the value of the infoboxIdentifier property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getInfoboxIdentifier() {
+ return infoboxIdentifier;
+ }
+
+ /**
+ * Sets the value of the infoboxIdentifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setInfoboxIdentifier(String value) {
+ this.infoboxIdentifier = value;
+ }
+
+ /**
+ * Gets the value of the binaryFileParameters property.
+ *
+ * @return
+ * possible object is
+ * {@link Base64XMLContentType }
+ *
+ */
+ public Base64XMLContentType getBinaryFileParameters() {
+ return binaryFileParameters;
+ }
+
+ /**
+ * Sets the value of the binaryFileParameters property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Base64XMLContentType }
+ *
+ */
+ public void setBinaryFileParameters(Base64XMLContentType value) {
+ this.binaryFileParameters = value;
+ }
+
+ /**
+ * Gets the value of the assocArrayParameters property.
+ *
+ * @return
+ * possible object is
+ * {@link InfoboxUpdateParamsAssocArrayType }
+ *
+ */
+ public InfoboxUpdateParamsAssocArrayType getAssocArrayParameters() {
+ return assocArrayParameters;
+ }
+
+ /**
+ * Sets the value of the assocArrayParameters property.
+ *
+ * @param value
+ * allowed object is
+ * {@link InfoboxUpdateParamsAssocArrayType }
+ *
+ */
+ public void setAssocArrayParameters(InfoboxUpdateParamsAssocArrayType value) {
+ this.assocArrayParameters = value;
+ }
+
+ /**
+ * Gets the value of the boxSpecificParameters property.
+ *
+ * @return
+ * possible object is
+ * {@link AnyChildrenType }
+ *
+ */
+ public AnyChildrenType getBoxSpecificParameters() {
+ return boxSpecificParameters;
+ }
+
+ /**
+ * Sets the value of the boxSpecificParameters property.
+ *
+ * @param value
+ * allowed object is
+ * {@link AnyChildrenType }
+ *
+ */
+ public void setBoxSpecificParameters(AnyChildrenType value) {
+ this.boxSpecificParameters = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxUpdateResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxUpdateResponseType.java
new file mode 100644
index 00000000..3f956cfb
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/InfoboxUpdateResponseType.java
@@ -0,0 +1,53 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for InfoboxUpdateResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InfoboxUpdateResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InfoboxUpdateResponseType")
+public class InfoboxUpdateResponseType {
+
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ManifestRefsCheckResultInfoType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ManifestRefsCheckResultInfoType.java
new file mode 100644
index 00000000..37b3fc92
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ManifestRefsCheckResultInfoType.java
@@ -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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for ManifestRefsCheckResultInfoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ManifestRefsCheckResultInfoType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ReferringSigReference" type="{http://www.w3.org/2001/XMLSchema}positiveInteger"/>
+ * &lt;element name="FailedReference" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ManifestRefsCheckResultInfoType", propOrder = {
+ "content"
+})
+public class ManifestRefsCheckResultInfoType {
+
+ @XmlElementRefs({
+ @XmlElementRef(name = "FailedReference", namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", type = JAXBElement.class),
+ @XmlElementRef(name = "ReferringSigReference", namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", type = JAXBElement.class)
+ })
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Element }
+ * {@link String }
+ * {@link JAXBElement }{@code <}{@link BigInteger }{@code >}
+ * {@link JAXBElement }{@code <}{@link BigInteger }{@code >}
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ManifestRefsCheckResultType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ManifestRefsCheckResultType.java
new file mode 100644
index 00000000..9c36a603
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ManifestRefsCheckResultType.java
@@ -0,0 +1,116 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ManifestRefsCheckResultType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ManifestRefsCheckResultType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Code" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger"/>
+ * &lt;element name="Info" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}ManifestRefsCheckResultInfoType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ManifestRefsCheckResultType", propOrder = {
+ "code",
+ "info"
+})
+public class ManifestRefsCheckResultType {
+
+ @XmlElement(name = "Code", required = true)
+ @XmlSchemaType(name = "nonNegativeInteger")
+ protected BigInteger code;
+ @XmlElement(name = "Info", required = true)
+ protected ManifestRefsCheckResultInfoType info;
+
+ /**
+ * Gets the value of the code property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getCode() {
+ return code;
+ }
+
+ /**
+ * Sets the value of the code property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setCode(BigInteger value) {
+ this.code = value;
+ }
+
+ /**
+ * Gets the value of the info property.
+ *
+ * @return
+ * possible object is
+ * {@link ManifestRefsCheckResultInfoType }
+ *
+ */
+ public ManifestRefsCheckResultInfoType getInfo() {
+ return info;
+ }
+
+ /**
+ * Sets the value of the info property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ManifestRefsCheckResultInfoType }
+ *
+ */
+ public void setInfo(ManifestRefsCheckResultInfoType value) {
+ this.info = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/MetaInfoType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/MetaInfoType.java
new file mode 100644
index 00000000..50d81319
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/MetaInfoType.java
@@ -0,0 +1,152 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for MetaInfoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="MetaInfoType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="MimeType" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}MimeTypeType"/>
+ * &lt;element name="Description" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "MetaInfoType", propOrder = {
+ "mimeType",
+ "description",
+ "any"
+})
+public class MetaInfoType {
+
+ @XmlElement(name = "MimeType", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected String mimeType;
+ @XmlElement(name = "Description")
+ protected String description;
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * Gets the value of the mimeType property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getMimeType() {
+ return mimeType;
+ }
+
+ /**
+ * Sets the value of the mimeType property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setMimeType(String value) {
+ this.mimeType = value;
+ }
+
+ /**
+ * Gets the value of the description property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ * Sets the value of the description property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setDescription(String value) {
+ this.description = value;
+ }
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/NullOperationRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/NullOperationRequestType.java
new file mode 100644
index 00000000..3df4df31
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/NullOperationRequestType.java
@@ -0,0 +1,53 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for NullOperationRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="NullOperationRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "NullOperationRequestType")
+public class NullOperationRequestType {
+
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/NullOperationResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/NullOperationResponseType.java
new file mode 100644
index 00000000..84bade8d
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/NullOperationResponseType.java
@@ -0,0 +1,53 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for NullOperationResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="NullOperationResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "NullOperationResponseType")
+public class NullOperationResponseType {
+
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ObjectFactory.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ObjectFactory.java
new file mode 100644
index 00000000..67ce0e2a
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ObjectFactory.java
@@ -0,0 +1,1265 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.math.BigInteger;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+import org.w3._2000._09.xmldsig_.KeyInfoType;
+
+
+/**
+ * This object contains factory methods for each
+ * Java content interface and Java element interface
+ * generated in the at.buergerkarte.namespaces.securitylayer._1 package.
+ * <p>An ObjectFactory allows you to programatically
+ * construct new instances of the Java representation
+ * for XML content. The Java representation of XML
+ * content can consist of schema derived interfaces
+ * and classes representing the binding of schema
+ * type definitions, element declarations and model
+ * groups. Factory methods for each of these are
+ * provided in this class.
+ *
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _DecryptXMLResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "DecryptXMLResponse");
+ private final static QName _GetPropertiesResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "GetPropertiesResponse");
+ private final static QName _IdentityLinkDomainIdentifier_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "IdentityLinkDomainIdentifier");
+ private final static QName _InfoboxDeleteResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "InfoboxDeleteResponse");
+ private final static QName _EncryptCMSResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "EncryptCMSResponse");
+ private final static QName _VerifyXMLSignatureResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "VerifyXMLSignatureResponse");
+ private final static QName _InfoboxUpdateRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "InfoboxUpdateRequest");
+ private final static QName _DecryptXMLRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "DecryptXMLRequest");
+ private final static QName _ErrorResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "ErrorResponse");
+ private final static QName _CreateXMLSignatureRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "CreateXMLSignatureRequest");
+ private final static QName _InfoboxCreateResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "InfoboxCreateResponse");
+ private final static QName _VerifyHashRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "VerifyHashRequest");
+ private final static QName _GetStatusRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "GetStatusRequest");
+ private final static QName _VerifyXMLSignatureRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "VerifyXMLSignatureRequest");
+ private final static QName _InfoboxAvailableRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "InfoboxAvailableRequest");
+ private final static QName _VerifyHashResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "VerifyHashResponse");
+ private final static QName _InfoboxUpdateResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "InfoboxUpdateResponse");
+ private final static QName _InfoboxDeleteRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "InfoboxDeleteRequest");
+ private final static QName _QualifiedCertificate_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "QualifiedCertificate");
+ private final static QName _DecryptCMSRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "DecryptCMSRequest");
+ private final static QName _NullOperationResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "NullOperationResponse");
+ private final static QName _InfoboxCreateRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "InfoboxCreateRequest");
+ private final static QName _CreateHashResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "CreateHashResponse");
+ private final static QName _InfoboxReadRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "InfoboxReadRequest");
+ private final static QName _DecryptCMSResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "DecryptCMSResponse");
+ private final static QName _EncryptCMSRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "EncryptCMSRequest");
+ private final static QName _EncryptXMLResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "EncryptXMLResponse");
+ private final static QName _CreateHashRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "CreateHashRequest");
+ private final static QName _VerifyCMSSignatureRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "VerifyCMSSignatureRequest");
+ private final static QName _InfoboxReadResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "InfoboxReadResponse");
+ private final static QName _NullOperationRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "NullOperationRequest");
+ private final static QName _GetStatusResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "GetStatusResponse");
+ private final static QName _CreateCMSSignatureRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "CreateCMSSignatureRequest");
+ private final static QName _VerifyCMSSignatureResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "VerifyCMSSignatureResponse");
+ private final static QName _CreateCMSSignatureResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "CreateCMSSignatureResponse");
+ private final static QName _InfoboxAvailableResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "InfoboxAvailableResponse");
+ private final static QName _CreateXMLSignatureResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "CreateXMLSignatureResponse");
+ private final static QName _ManifestRefsCheckResultInfoTypeReferringSigReference_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "ReferringSigReference");
+ private final static QName _ManifestRefsCheckResultInfoTypeFailedReference_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "FailedReference");
+ private final static QName _VerifyCMSSignatureResponseTypeSignatureCheck_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "SignatureCheck");
+ private final static QName _VerifyCMSSignatureResponseTypeCertificateCheck_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "CertificateCheck");
+ private final static QName _VerifyCMSSignatureResponseTypeSignerInfo_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "SignerInfo");
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: at.buergerkarte.namespaces.securitylayer._1
+ *
+ */
+ public ObjectFactory() {
+ }
+
+ /**
+ * Create an instance of {@link ToBeEncryptedType.ElementContent }
+ *
+ */
+ public ToBeEncryptedType.ElementContent createToBeEncryptedTypeElementContent() {
+ return new ToBeEncryptedType.ElementContent();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxReadDataAssocArrayType }
+ *
+ */
+ public InfoboxReadDataAssocArrayType createInfoboxReadDataAssocArrayType() {
+ return new InfoboxReadDataAssocArrayType();
+ }
+
+ /**
+ * Create an instance of {@link DecryptXMLRequestType }
+ *
+ */
+ public DecryptXMLRequestType createDecryptXMLRequestType() {
+ return new DecryptXMLRequestType();
+ }
+
+ /**
+ * Create an instance of {@link Base64XMLLocRefOptRefContentType }
+ *
+ */
+ public Base64XMLLocRefOptRefContentType createBase64XMLLocRefOptRefContentType() {
+ return new Base64XMLLocRefOptRefContentType();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxUpdateRequestType }
+ *
+ */
+ public InfoboxUpdateRequestType createInfoboxUpdateRequestType() {
+ return new InfoboxUpdateRequestType();
+ }
+
+ /**
+ * Create an instance of {@link CreateXMLSignatureResponseType }
+ *
+ */
+ public CreateXMLSignatureResponseType createCreateXMLSignatureResponseType() {
+ return new CreateXMLSignatureResponseType();
+ }
+
+ /**
+ * Create an instance of {@link DecryptCMSRequestType }
+ *
+ */
+ public DecryptCMSRequestType createDecryptCMSRequestType() {
+ return new DecryptCMSRequestType();
+ }
+
+ /**
+ * Create an instance of {@link VerificationResultType }
+ *
+ */
+ public VerificationResultType createVerificationResultType() {
+ return new VerificationResultType();
+ }
+
+ /**
+ * Create an instance of {@link VerifyHashResponseType }
+ *
+ */
+ public VerifyHashResponseType createVerifyHashResponseType() {
+ return new VerifyHashResponseType();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxReadParamsAssocArrayType.ReadValue }
+ *
+ */
+ public InfoboxReadParamsAssocArrayType.ReadValue createInfoboxReadParamsAssocArrayTypeReadValue() {
+ return new InfoboxReadParamsAssocArrayType.ReadValue();
+ }
+
+ /**
+ * Create an instance of {@link ToBeEncryptedType }
+ *
+ */
+ public ToBeEncryptedType createToBeEncryptedType() {
+ return new ToBeEncryptedType();
+ }
+
+ /**
+ * Create an instance of {@link DecryptCMSResponseType }
+ *
+ */
+ public DecryptCMSResponseType createDecryptCMSResponseType() {
+ return new DecryptCMSResponseType();
+ }
+
+ /**
+ * Create an instance of {@link ManifestRefsCheckResultType }
+ *
+ */
+ public ManifestRefsCheckResultType createManifestRefsCheckResultType() {
+ return new ManifestRefsCheckResultType();
+ }
+
+ /**
+ * Create an instance of {@link XMLRecipientPublicKeyType }
+ *
+ */
+ public XMLRecipientPublicKeyType createXMLRecipientPublicKeyType() {
+ return new XMLRecipientPublicKeyType();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxUpdateResponseType }
+ *
+ */
+ public InfoboxUpdateResponseType createInfoboxUpdateResponseType() {
+ return new InfoboxUpdateResponseType();
+ }
+
+ /**
+ * Create an instance of {@link SignatureInfoCreationType }
+ *
+ */
+ public SignatureInfoCreationType createSignatureInfoCreationType() {
+ return new SignatureInfoCreationType();
+ }
+
+ /**
+ * Create an instance of {@link HashDataType }
+ *
+ */
+ public HashDataType createHashDataType() {
+ return new HashDataType();
+ }
+
+ /**
+ * Create an instance of {@link GetStatusRequestType }
+ *
+ */
+ public GetStatusRequestType createGetStatusRequestType() {
+ return new GetStatusRequestType();
+ }
+
+ /**
+ * Create an instance of {@link AnyChildrenType }
+ *
+ */
+ public AnyChildrenType createAnyChildrenType() {
+ return new AnyChildrenType();
+ }
+
+ /**
+ * Create an instance of {@link VerifyXMLSignatureResponseType }
+ *
+ */
+ public VerifyXMLSignatureResponseType createVerifyXMLSignatureResponseType() {
+ return new VerifyXMLSignatureResponseType();
+ }
+
+ /**
+ * Create an instance of {@link DecryptXMLResponseType.DecryptedBinaryData }
+ *
+ */
+ public DecryptXMLResponseType.DecryptedBinaryData createDecryptXMLResponseTypeDecryptedBinaryData() {
+ return new DecryptXMLResponseType.DecryptedBinaryData();
+ }
+
+ /**
+ * Create an instance of {@link GetStatusResponseType }
+ *
+ */
+ public GetStatusResponseType createGetStatusResponseType() {
+ return new GetStatusResponseType();
+ }
+
+ /**
+ * Create an instance of {@link Base64XMLOptRefContentType }
+ *
+ */
+ public Base64XMLOptRefContentType createBase64XMLOptRefContentType() {
+ return new Base64XMLOptRefContentType();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxDeleteResponseType }
+ *
+ */
+ public InfoboxDeleteResponseType createInfoboxDeleteResponseType() {
+ return new InfoboxDeleteResponseType();
+ }
+
+ /**
+ * Create an instance of {@link XMLToBeEncryptedNewType }
+ *
+ */
+ public XMLToBeEncryptedNewType createXMLToBeEncryptedNewType() {
+ return new XMLToBeEncryptedNewType();
+ }
+
+ /**
+ * Create an instance of {@link CreateCMSSignatureResponseType }
+ *
+ */
+ public CreateCMSSignatureResponseType createCreateCMSSignatureResponseType() {
+ return new CreateCMSSignatureResponseType();
+ }
+
+ /**
+ * Create an instance of {@link QualifiedBoxIdentifierType }
+ *
+ */
+ public QualifiedBoxIdentifierType createQualifiedBoxIdentifierType() {
+ return new QualifiedBoxIdentifierType();
+ }
+
+ /**
+ * Create an instance of {@link VerifyHashInfoRequestType }
+ *
+ */
+ public VerifyHashInfoRequestType createVerifyHashInfoRequestType() {
+ return new VerifyHashInfoRequestType();
+ }
+
+ /**
+ * Create an instance of {@link at.buergerkarte.namespaces.securitylayer._1.SignatureLocationType }
+ *
+ */
+ public at.buergerkarte.namespaces.securitylayer._1.SignatureLocationType createSignatureLocationType() {
+ return new at.gv.egiz.slbinding.impl.SignatureLocationType();
+ }
+
+ /**
+ * Create an instance of {@link EncryptCMSResponseType }
+ *
+ */
+ public EncryptCMSResponseType createEncryptCMSResponseType() {
+ return new EncryptCMSResponseType();
+ }
+
+ /**
+ * Create an instance of {@link DataObjectInfoType }
+ *
+ */
+ public DataObjectInfoType createDataObjectInfoType() {
+ return new DataObjectInfoType();
+ }
+
+ /**
+ * Create an instance of {@link CMSToBeEncryptedType }
+ *
+ */
+ public CMSToBeEncryptedType createCMSToBeEncryptedType() {
+ return new CMSToBeEncryptedType();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxCreateResponseType }
+ *
+ */
+ public InfoboxCreateResponseType createInfoboxCreateResponseType() {
+ return new InfoboxCreateResponseType();
+ }
+
+ /**
+ * Create an instance of {@link EncryptionInfoType }
+ *
+ */
+ public EncryptionInfoType createEncryptionInfoType() {
+ return new EncryptionInfoType();
+ }
+
+ /**
+ * Create an instance of {@link CMSDataObjectOptionalMetaType }
+ *
+ */
+ public CMSDataObjectOptionalMetaType createCMSDataObjectOptionalMetaType() {
+ return new CMSDataObjectOptionalMetaType();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxReadRequestType }
+ *
+ */
+ public InfoboxReadRequestType createInfoboxReadRequestType() {
+ return new InfoboxReadRequestType();
+ }
+
+ /**
+ * Create an instance of {@link Base64OptRefContentType }
+ *
+ */
+ public Base64OptRefContentType createBase64OptRefContentType() {
+ return new Base64OptRefContentType();
+ }
+
+ /**
+ * Create an instance of {@link CreateHashInfoRequestType }
+ *
+ */
+ public CreateHashInfoRequestType createCreateHashInfoRequestType() {
+ return new CreateHashInfoRequestType();
+ }
+
+ /**
+ * Create an instance of {@link NullOperationRequestType }
+ *
+ */
+ public NullOperationRequestType createNullOperationRequestType() {
+ return new NullOperationRequestType();
+ }
+
+ /**
+ * Create an instance of {@link VerifyHashRequestType }
+ *
+ */
+ public VerifyHashRequestType createVerifyHashRequestType() {
+ return new VerifyHashRequestType();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxReadParamsBinaryFileType }
+ *
+ */
+ public InfoboxReadParamsBinaryFileType createInfoboxReadParamsBinaryFileType() {
+ return new InfoboxReadParamsBinaryFileType();
+ }
+
+ /**
+ * Create an instance of {@link CMSDataObjectRequiredMetaType }
+ *
+ */
+ public CMSDataObjectRequiredMetaType createCMSDataObjectRequiredMetaType() {
+ return new CMSDataObjectRequiredMetaType();
+ }
+
+ /**
+ * Create an instance of {@link at.buergerkarte.namespaces.securitylayer._1.TransformsInfoType }
+ *
+ */
+ public at.buergerkarte.namespaces.securitylayer._1.TransformsInfoType createTransformsInfoType() {
+ return new at.gv.egiz.slbinding.impl.TransformsInfoType();
+ }
+
+ /**
+ * Create an instance of {@link Base64XMLContentType }
+ *
+ */
+ public Base64XMLContentType createBase64XMLContentType() {
+ return new Base64XMLContentType();
+ }
+
+ /**
+ * Create an instance of {@link CreateXMLSignatureRequestType }
+ *
+ */
+ public CreateXMLSignatureRequestType createCreateXMLSignatureRequestType() {
+ return new CreateXMLSignatureRequestType();
+ }
+
+ /**
+ * Create an instance of {@link VerifyCMSSignatureRequestType }
+ *
+ */
+ public VerifyCMSSignatureRequestType createVerifyCMSSignatureRequestType() {
+ return new VerifyCMSSignatureRequestType();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxUpdateParamsAssocArrayType }
+ *
+ */
+ public InfoboxUpdateParamsAssocArrayType createInfoboxUpdateParamsAssocArrayType() {
+ return new InfoboxUpdateParamsAssocArrayType();
+ }
+
+ /**
+ * Create an instance of {@link VerifyCMSSignatureResponseType }
+ *
+ */
+ public VerifyCMSSignatureResponseType createVerifyCMSSignatureResponseType() {
+ return new VerifyCMSSignatureResponseType();
+ }
+
+ /**
+ * Create an instance of {@link BindingType }
+ *
+ */
+ public BindingType createBindingType() {
+ return new BindingType();
+ }
+
+ /**
+ * Create an instance of {@link UserConfirmationType }
+ *
+ */
+ public UserConfirmationType createUserConfirmationType() {
+ return new UserConfirmationType();
+ }
+
+ /**
+ * Create an instance of {@link ToBeEncryptedType.Element }
+ *
+ */
+ public ToBeEncryptedType.Element createToBeEncryptedTypeElement() {
+ return new ToBeEncryptedType.Element();
+ }
+
+ /**
+ * Create an instance of {@link Base64ContentType }
+ *
+ */
+ public Base64ContentType createBase64ContentType() {
+ return new Base64ContentType();
+ }
+
+ /**
+ * Create an instance of {@link CreateCMSSignatureRequestType }
+ *
+ */
+ public CreateCMSSignatureRequestType createCreateCMSSignatureRequestType() {
+ return new CreateCMSSignatureRequestType();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxReadParamsAssocArrayType }
+ *
+ */
+ public InfoboxReadParamsAssocArrayType createInfoboxReadParamsAssocArrayType() {
+ return new InfoboxReadParamsAssocArrayType();
+ }
+
+ /**
+ * Create an instance of {@link AnyMixedChildrenType }
+ *
+ */
+ public AnyMixedChildrenType createAnyMixedChildrenType() {
+ return new AnyMixedChildrenType();
+ }
+
+ /**
+ * Create an instance of {@link SignatureInfoVerificationType }
+ *
+ */
+ public SignatureInfoVerificationType createSignatureInfoVerificationType() {
+ return new SignatureInfoVerificationType();
+ }
+
+ /**
+ * Create an instance of {@link CreateHashInfoResponseType }
+ *
+ */
+ public CreateHashInfoResponseType createCreateHashInfoResponseType() {
+ return new CreateHashInfoResponseType();
+ }
+
+ /**
+ * Create an instance of {@link ErrorResponseType }
+ *
+ */
+ public ErrorResponseType createErrorResponseType() {
+ return new ErrorResponseType();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxUpdateParamsAssocArrayType.DeletePair }
+ *
+ */
+ public InfoboxUpdateParamsAssocArrayType.DeletePair createInfoboxUpdateParamsAssocArrayTypeDeletePair() {
+ return new InfoboxUpdateParamsAssocArrayType.DeletePair();
+ }
+
+ /**
+ * Create an instance of {@link EncryptionInfoType.EncryptedKeyLocation }
+ *
+ */
+ public EncryptionInfoType.EncryptedKeyLocation createEncryptionInfoTypeEncryptedKeyLocation() {
+ return new EncryptionInfoType.EncryptedKeyLocation();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxAvailableRequestType }
+ *
+ */
+ public InfoboxAvailableRequestType createInfoboxAvailableRequestType() {
+ return new InfoboxAvailableRequestType();
+ }
+
+ /**
+ * Create an instance of {@link CMSRecipientPublicKeyType }
+ *
+ */
+ public CMSRecipientPublicKeyType createCMSRecipientPublicKeyType() {
+ return new CMSRecipientPublicKeyType();
+ }
+
+ /**
+ * Create an instance of {@link EncryptXMLRequestType }
+ *
+ */
+ public EncryptXMLRequestType createEncryptXMLRequestType() {
+ return new EncryptXMLRequestType();
+ }
+
+ /**
+ * Create an instance of {@link ReferencesCheckResultInfoType }
+ *
+ */
+ public ReferencesCheckResultInfoType createReferencesCheckResultInfoType() {
+ return new ReferencesCheckResultInfoType();
+ }
+
+ /**
+ * Create an instance of {@link GetPropertiesRequestType }
+ *
+ */
+ public GetPropertiesRequestType createGetPropertiesRequestType() {
+ return new GetPropertiesRequestType();
+ }
+
+ /**
+ * Create an instance of {@link AccessAuthorizationType }
+ *
+ */
+ public AccessAuthorizationType createAccessAuthorizationType() {
+ return new AccessAuthorizationType();
+ }
+
+ /**
+ * Create an instance of {@link MetaInfoType }
+ *
+ */
+ public MetaInfoType createMetaInfoType() {
+ return new MetaInfoType();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxReadParamsAssocArrayType.ReadKeys }
+ *
+ */
+ public InfoboxReadParamsAssocArrayType.ReadKeys createInfoboxReadParamsAssocArrayTypeReadKeys() {
+ return new InfoboxReadParamsAssocArrayType.ReadKeys();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxCreateRequestType }
+ *
+ */
+ public InfoboxCreateRequestType createInfoboxCreateRequestType() {
+ return new InfoboxCreateRequestType();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxReadParamsAssocArrayType.ReadPairs }
+ *
+ */
+ public InfoboxReadParamsAssocArrayType.ReadPairs createInfoboxReadParamsAssocArrayTypeReadPairs() {
+ return new InfoboxReadParamsAssocArrayType.ReadPairs();
+ }
+
+ /**
+ * Create an instance of {@link VerifyXMLSignatureRequestType }
+ *
+ */
+ public VerifyXMLSignatureRequestType createVerifyXMLSignatureRequestType() {
+ return new VerifyXMLSignatureRequestType();
+ }
+
+ /**
+ * Create an instance of {@link EncryptedDataType }
+ *
+ */
+ public EncryptedDataType createEncryptedDataType() {
+ return new EncryptedDataType();
+ }
+
+ /**
+ * Create an instance of {@link ReferencesCheckResultType }
+ *
+ */
+ public ReferencesCheckResultType createReferencesCheckResultType() {
+ return new ReferencesCheckResultType();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxAvailableResponseType }
+ *
+ */
+ public InfoboxAvailableResponseType createInfoboxAvailableResponseType() {
+ return new InfoboxAvailableResponseType();
+ }
+
+ /**
+ * Create an instance of {@link XMLToBeEncryptedNewContentType }
+ *
+ */
+ public XMLToBeEncryptedNewContentType createXMLToBeEncryptedNewContentType() {
+ return new XMLToBeEncryptedNewContentType();
+ }
+
+ /**
+ * Create an instance of {@link RequesterIDType }
+ *
+ */
+ public RequesterIDType createRequesterIDType() {
+ return new RequesterIDType();
+ }
+
+ /**
+ * Create an instance of {@link EncryptXMLResponseType.EncryptionEnvironment }
+ *
+ */
+ public EncryptXMLResponseType.EncryptionEnvironment createEncryptXMLResponseTypeEncryptionEnvironment() {
+ return new EncryptXMLResponseType.EncryptionEnvironment();
+ }
+
+ /**
+ * Create an instance of {@link CMSEncryptedContentType }
+ *
+ */
+ public CMSEncryptedContentType createCMSEncryptedContentType() {
+ return new CMSEncryptedContentType();
+ }
+
+ /**
+ * Create an instance of {@link CheckResultType }
+ *
+ */
+ public CheckResultType createCheckResultType() {
+ return new CheckResultType();
+ }
+
+ /**
+ * Create an instance of {@link Base64XMLLocRefContentType }
+ *
+ */
+ public Base64XMLLocRefContentType createBase64XMLLocRefContentType() {
+ return new Base64XMLLocRefContentType();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxReadResponseType }
+ *
+ */
+ public InfoboxReadResponseType createInfoboxReadResponseType() {
+ return new InfoboxReadResponseType();
+ }
+
+ /**
+ * Create an instance of {@link at.buergerkarte.namespaces.securitylayer._1.XMLContentType }
+ *
+ */
+ public at.buergerkarte.namespaces.securitylayer._1.XMLContentType createXMLContentType() {
+ return new at.gv.egiz.slbinding.impl.XMLContentType();
+ }
+
+ /**
+ * Create an instance of {@link EncryptXMLRequest }
+ *
+ */
+ public EncryptXMLRequest createEncryptXMLRequest() {
+ return new EncryptXMLRequest();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxDeleteRequestType }
+ *
+ */
+ public InfoboxDeleteRequestType createInfoboxDeleteRequestType() {
+ return new InfoboxDeleteRequestType();
+ }
+
+ /**
+ * Create an instance of {@link CreateHashRequestType }
+ *
+ */
+ public CreateHashRequestType createCreateHashRequestType() {
+ return new CreateHashRequestType();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxAssocArrayPairType }
+ *
+ */
+ public InfoboxAssocArrayPairType createInfoboxAssocArrayPairType() {
+ return new InfoboxAssocArrayPairType();
+ }
+
+ /**
+ * Create an instance of {@link DataObjectAssociationType }
+ *
+ */
+ public DataObjectAssociationType createDataObjectAssociationType() {
+ return new DataObjectAssociationType();
+ }
+
+ /**
+ * Create an instance of {@link InfoboxUpdateParamsAssocArrayType.UpdateKey }
+ *
+ */
+ public InfoboxUpdateParamsAssocArrayType.UpdateKey createInfoboxUpdateParamsAssocArrayTypeUpdateKey() {
+ return new InfoboxUpdateParamsAssocArrayType.UpdateKey();
+ }
+
+ /**
+ * Create an instance of {@link GetPropertiesResponseType }
+ *
+ */
+ public GetPropertiesResponseType createGetPropertiesResponseType() {
+ return new GetPropertiesResponseType();
+ }
+
+ /**
+ * Create an instance of {@link GetPropertiesRequest }
+ *
+ */
+ public GetPropertiesRequest createGetPropertiesRequest() {
+ return new GetPropertiesRequest();
+ }
+
+ /**
+ * Create an instance of {@link ManifestRefsCheckResultInfoType }
+ *
+ */
+ public ManifestRefsCheckResultInfoType createManifestRefsCheckResultInfoType() {
+ return new ManifestRefsCheckResultInfoType();
+ }
+
+ /**
+ * Create an instance of {@link DecryptXMLResponseType }
+ *
+ */
+ public DecryptXMLResponseType createDecryptXMLResponseType() {
+ return new DecryptXMLResponseType();
+ }
+
+ /**
+ * Create an instance of {@link CreateHashResponseType }
+ *
+ */
+ public CreateHashResponseType createCreateHashResponseType() {
+ return new CreateHashResponseType();
+ }
+
+ /**
+ * Create an instance of {@link EncryptCMSRequestType }
+ *
+ */
+ public EncryptCMSRequestType createEncryptCMSRequestType() {
+ return new EncryptCMSRequestType();
+ }
+
+ /**
+ * Create an instance of {@link Base64XMLLocRefReqRefContentType }
+ *
+ */
+ public Base64XMLLocRefReqRefContentType createBase64XMLLocRefReqRefContentType() {
+ return new Base64XMLLocRefReqRefContentType();
+ }
+
+ /**
+ * Create an instance of {@link NullOperationResponseType }
+ *
+ */
+ public NullOperationResponseType createNullOperationResponseType() {
+ return new NullOperationResponseType();
+ }
+
+ /**
+ * Create an instance of {@link EncryptXMLResponseType }
+ *
+ */
+ public EncryptXMLResponseType createEncryptXMLResponseType() {
+ return new EncryptXMLResponseType();
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link DecryptXMLResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "DecryptXMLResponse")
+ public JAXBElement<DecryptXMLResponseType> createDecryptXMLResponse(DecryptXMLResponseType value) {
+ return new JAXBElement<DecryptXMLResponseType>(_DecryptXMLResponse_QNAME, DecryptXMLResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link GetPropertiesResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "GetPropertiesResponse")
+ public JAXBElement<GetPropertiesResponseType> createGetPropertiesResponse(GetPropertiesResponseType value) {
+ return new JAXBElement<GetPropertiesResponseType>(_GetPropertiesResponse_QNAME, GetPropertiesResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "IdentityLinkDomainIdentifier")
+ public JAXBElement<String> createIdentityLinkDomainIdentifier(String value) {
+ return new JAXBElement<String>(_IdentityLinkDomainIdentifier_QNAME, String.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link InfoboxDeleteResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "InfoboxDeleteResponse")
+ public JAXBElement<InfoboxDeleteResponseType> createInfoboxDeleteResponse(InfoboxDeleteResponseType value) {
+ return new JAXBElement<InfoboxDeleteResponseType>(_InfoboxDeleteResponse_QNAME, InfoboxDeleteResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link EncryptCMSResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "EncryptCMSResponse")
+ public JAXBElement<EncryptCMSResponseType> createEncryptCMSResponse(EncryptCMSResponseType value) {
+ return new JAXBElement<EncryptCMSResponseType>(_EncryptCMSResponse_QNAME, EncryptCMSResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link VerifyXMLSignatureResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "VerifyXMLSignatureResponse")
+ public JAXBElement<VerifyXMLSignatureResponseType> createVerifyXMLSignatureResponse(VerifyXMLSignatureResponseType value) {
+ return new JAXBElement<VerifyXMLSignatureResponseType>(_VerifyXMLSignatureResponse_QNAME, VerifyXMLSignatureResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link InfoboxUpdateRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "InfoboxUpdateRequest")
+ public JAXBElement<InfoboxUpdateRequestType> createInfoboxUpdateRequest(InfoboxUpdateRequestType value) {
+ return new JAXBElement<InfoboxUpdateRequestType>(_InfoboxUpdateRequest_QNAME, InfoboxUpdateRequestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link DecryptXMLRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "DecryptXMLRequest")
+ public JAXBElement<DecryptXMLRequestType> createDecryptXMLRequest(DecryptXMLRequestType value) {
+ return new JAXBElement<DecryptXMLRequestType>(_DecryptXMLRequest_QNAME, DecryptXMLRequestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ErrorResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "ErrorResponse")
+ public JAXBElement<ErrorResponseType> createErrorResponse(ErrorResponseType value) {
+ return new JAXBElement<ErrorResponseType>(_ErrorResponse_QNAME, ErrorResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CreateXMLSignatureRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "CreateXMLSignatureRequest")
+ public JAXBElement<CreateXMLSignatureRequestType> createCreateXMLSignatureRequest(CreateXMLSignatureRequestType value) {
+ return new JAXBElement<CreateXMLSignatureRequestType>(_CreateXMLSignatureRequest_QNAME, CreateXMLSignatureRequestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link InfoboxCreateResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "InfoboxCreateResponse")
+ public JAXBElement<InfoboxCreateResponseType> createInfoboxCreateResponse(InfoboxCreateResponseType value) {
+ return new JAXBElement<InfoboxCreateResponseType>(_InfoboxCreateResponse_QNAME, InfoboxCreateResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link VerifyHashRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "VerifyHashRequest")
+ public JAXBElement<VerifyHashRequestType> createVerifyHashRequest(VerifyHashRequestType value) {
+ return new JAXBElement<VerifyHashRequestType>(_VerifyHashRequest_QNAME, VerifyHashRequestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link GetStatusRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "GetStatusRequest")
+ public JAXBElement<GetStatusRequestType> createGetStatusRequest(GetStatusRequestType value) {
+ return new JAXBElement<GetStatusRequestType>(_GetStatusRequest_QNAME, GetStatusRequestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link VerifyXMLSignatureRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "VerifyXMLSignatureRequest")
+ public JAXBElement<VerifyXMLSignatureRequestType> createVerifyXMLSignatureRequest(VerifyXMLSignatureRequestType value) {
+ return new JAXBElement<VerifyXMLSignatureRequestType>(_VerifyXMLSignatureRequest_QNAME, VerifyXMLSignatureRequestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link InfoboxAvailableRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "InfoboxAvailableRequest")
+ public JAXBElement<InfoboxAvailableRequestType> createInfoboxAvailableRequest(InfoboxAvailableRequestType value) {
+ return new JAXBElement<InfoboxAvailableRequestType>(_InfoboxAvailableRequest_QNAME, InfoboxAvailableRequestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link VerifyHashResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "VerifyHashResponse")
+ public JAXBElement<VerifyHashResponseType> createVerifyHashResponse(VerifyHashResponseType value) {
+ return new JAXBElement<VerifyHashResponseType>(_VerifyHashResponse_QNAME, VerifyHashResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link InfoboxUpdateResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "InfoboxUpdateResponse")
+ public JAXBElement<InfoboxUpdateResponseType> createInfoboxUpdateResponse(InfoboxUpdateResponseType value) {
+ return new JAXBElement<InfoboxUpdateResponseType>(_InfoboxUpdateResponse_QNAME, InfoboxUpdateResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link InfoboxDeleteRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "InfoboxDeleteRequest")
+ public JAXBElement<InfoboxDeleteRequestType> createInfoboxDeleteRequest(InfoboxDeleteRequestType value) {
+ return new JAXBElement<InfoboxDeleteRequestType>(_InfoboxDeleteRequest_QNAME, InfoboxDeleteRequestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "QualifiedCertificate")
+ public JAXBElement<Object> createQualifiedCertificate(Object value) {
+ return new JAXBElement<Object>(_QualifiedCertificate_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link DecryptCMSRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "DecryptCMSRequest")
+ public JAXBElement<DecryptCMSRequestType> createDecryptCMSRequest(DecryptCMSRequestType value) {
+ return new JAXBElement<DecryptCMSRequestType>(_DecryptCMSRequest_QNAME, DecryptCMSRequestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link NullOperationResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "NullOperationResponse")
+ public JAXBElement<NullOperationResponseType> createNullOperationResponse(NullOperationResponseType value) {
+ return new JAXBElement<NullOperationResponseType>(_NullOperationResponse_QNAME, NullOperationResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link InfoboxCreateRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "InfoboxCreateRequest")
+ public JAXBElement<InfoboxCreateRequestType> createInfoboxCreateRequest(InfoboxCreateRequestType value) {
+ return new JAXBElement<InfoboxCreateRequestType>(_InfoboxCreateRequest_QNAME, InfoboxCreateRequestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CreateHashResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "CreateHashResponse")
+ public JAXBElement<CreateHashResponseType> createCreateHashResponse(CreateHashResponseType value) {
+ return new JAXBElement<CreateHashResponseType>(_CreateHashResponse_QNAME, CreateHashResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link InfoboxReadRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "InfoboxReadRequest")
+ public JAXBElement<InfoboxReadRequestType> createInfoboxReadRequest(InfoboxReadRequestType value) {
+ return new JAXBElement<InfoboxReadRequestType>(_InfoboxReadRequest_QNAME, InfoboxReadRequestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link DecryptCMSResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "DecryptCMSResponse")
+ public JAXBElement<DecryptCMSResponseType> createDecryptCMSResponse(DecryptCMSResponseType value) {
+ return new JAXBElement<DecryptCMSResponseType>(_DecryptCMSResponse_QNAME, DecryptCMSResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link EncryptCMSRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "EncryptCMSRequest")
+ public JAXBElement<EncryptCMSRequestType> createEncryptCMSRequest(EncryptCMSRequestType value) {
+ return new JAXBElement<EncryptCMSRequestType>(_EncryptCMSRequest_QNAME, EncryptCMSRequestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link EncryptXMLResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "EncryptXMLResponse")
+ public JAXBElement<EncryptXMLResponseType> createEncryptXMLResponse(EncryptXMLResponseType value) {
+ return new JAXBElement<EncryptXMLResponseType>(_EncryptXMLResponse_QNAME, EncryptXMLResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CreateHashRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "CreateHashRequest")
+ public JAXBElement<CreateHashRequestType> createCreateHashRequest(CreateHashRequestType value) {
+ return new JAXBElement<CreateHashRequestType>(_CreateHashRequest_QNAME, CreateHashRequestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link VerifyCMSSignatureRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "VerifyCMSSignatureRequest")
+ public JAXBElement<VerifyCMSSignatureRequestType> createVerifyCMSSignatureRequest(VerifyCMSSignatureRequestType value) {
+ return new JAXBElement<VerifyCMSSignatureRequestType>(_VerifyCMSSignatureRequest_QNAME, VerifyCMSSignatureRequestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link InfoboxReadResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "InfoboxReadResponse")
+ public JAXBElement<InfoboxReadResponseType> createInfoboxReadResponse(InfoboxReadResponseType value) {
+ return new JAXBElement<InfoboxReadResponseType>(_InfoboxReadResponse_QNAME, InfoboxReadResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link NullOperationRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "NullOperationRequest")
+ public JAXBElement<NullOperationRequestType> createNullOperationRequest(NullOperationRequestType value) {
+ return new JAXBElement<NullOperationRequestType>(_NullOperationRequest_QNAME, NullOperationRequestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link GetStatusResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "GetStatusResponse")
+ public JAXBElement<GetStatusResponseType> createGetStatusResponse(GetStatusResponseType value) {
+ return new JAXBElement<GetStatusResponseType>(_GetStatusResponse_QNAME, GetStatusResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CreateCMSSignatureRequestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "CreateCMSSignatureRequest")
+ public JAXBElement<CreateCMSSignatureRequestType> createCreateCMSSignatureRequest(CreateCMSSignatureRequestType value) {
+ return new JAXBElement<CreateCMSSignatureRequestType>(_CreateCMSSignatureRequest_QNAME, CreateCMSSignatureRequestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link VerifyCMSSignatureResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "VerifyCMSSignatureResponse")
+ public JAXBElement<VerifyCMSSignatureResponseType> createVerifyCMSSignatureResponse(VerifyCMSSignatureResponseType value) {
+ return new JAXBElement<VerifyCMSSignatureResponseType>(_VerifyCMSSignatureResponse_QNAME, VerifyCMSSignatureResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CreateCMSSignatureResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "CreateCMSSignatureResponse")
+ public JAXBElement<CreateCMSSignatureResponseType> createCreateCMSSignatureResponse(CreateCMSSignatureResponseType value) {
+ return new JAXBElement<CreateCMSSignatureResponseType>(_CreateCMSSignatureResponse_QNAME, CreateCMSSignatureResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link InfoboxAvailableResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "InfoboxAvailableResponse")
+ public JAXBElement<InfoboxAvailableResponseType> createInfoboxAvailableResponse(InfoboxAvailableResponseType value) {
+ return new JAXBElement<InfoboxAvailableResponseType>(_InfoboxAvailableResponse_QNAME, InfoboxAvailableResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CreateXMLSignatureResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "CreateXMLSignatureResponse")
+ public JAXBElement<CreateXMLSignatureResponseType> createCreateXMLSignatureResponse(CreateXMLSignatureResponseType value) {
+ return new JAXBElement<CreateXMLSignatureResponseType>(_CreateXMLSignatureResponse_QNAME, CreateXMLSignatureResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link BigInteger }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "ReferringSigReference", scope = ManifestRefsCheckResultInfoType.class)
+ public JAXBElement<BigInteger> createManifestRefsCheckResultInfoTypeReferringSigReference(BigInteger value) {
+ return new JAXBElement<BigInteger>(_ManifestRefsCheckResultInfoTypeReferringSigReference_QNAME, BigInteger.class, ManifestRefsCheckResultInfoType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link BigInteger }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "FailedReference", scope = ManifestRefsCheckResultInfoType.class)
+ public JAXBElement<BigInteger> createManifestRefsCheckResultInfoTypeFailedReference(BigInteger value) {
+ return new JAXBElement<BigInteger>(_ManifestRefsCheckResultInfoTypeFailedReference_QNAME, BigInteger.class, ManifestRefsCheckResultInfoType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link BigInteger }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "FailedReference", scope = ReferencesCheckResultInfoType.class)
+ public JAXBElement<BigInteger> createReferencesCheckResultInfoTypeFailedReference(BigInteger value) {
+ return new JAXBElement<BigInteger>(_ManifestRefsCheckResultInfoTypeFailedReference_QNAME, BigInteger.class, ReferencesCheckResultInfoType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CheckResultType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "SignatureCheck", scope = VerifyCMSSignatureResponseType.class)
+ public JAXBElement<CheckResultType> createVerifyCMSSignatureResponseTypeSignatureCheck(CheckResultType value) {
+ return new JAXBElement<CheckResultType>(_VerifyCMSSignatureResponseTypeSignatureCheck_QNAME, CheckResultType.class, VerifyCMSSignatureResponseType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CheckResultType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "CertificateCheck", scope = VerifyCMSSignatureResponseType.class)
+ public JAXBElement<CheckResultType> createVerifyCMSSignatureResponseTypeCertificateCheck(CheckResultType value) {
+ return new JAXBElement<CheckResultType>(_VerifyCMSSignatureResponseTypeCertificateCheck_QNAME, CheckResultType.class, VerifyCMSSignatureResponseType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link KeyInfoType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", name = "SignerInfo", scope = VerifyCMSSignatureResponseType.class)
+ public JAXBElement<KeyInfoType> createVerifyCMSSignatureResponseTypeSignerInfo(KeyInfoType value) {
+ return new JAXBElement<KeyInfoType>(_VerifyCMSSignatureResponseTypeSignerInfo_QNAME, KeyInfoType.class, VerifyCMSSignatureResponseType.class, value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/QualifiedBoxIdentifierType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/QualifiedBoxIdentifierType.java
new file mode 100644
index 00000000..0912608b
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/QualifiedBoxIdentifierType.java
@@ -0,0 +1,124 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for QualifiedBoxIdentifierType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="QualifiedBoxIdentifierType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.buergerkarte.at/namespaces/securitylayer/1.2#>BoxIdentifierType">
+ * &lt;attribute name="Signature" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ * &lt;attribute name="Encryption" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "QualifiedBoxIdentifierType", propOrder = {
+ "value"
+})
+public class QualifiedBoxIdentifierType {
+
+ @XmlValue
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected String value;
+ @XmlAttribute(name = "Signature", required = true)
+ protected boolean signature;
+ @XmlAttribute(name = "Encryption", required = true)
+ protected boolean encryption;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the signature property.
+ *
+ */
+ public boolean isSignature() {
+ return signature;
+ }
+
+ /**
+ * Sets the value of the signature property.
+ *
+ */
+ public void setSignature(boolean value) {
+ this.signature = value;
+ }
+
+ /**
+ * Gets the value of the encryption property.
+ *
+ */
+ public boolean isEncryption() {
+ return encryption;
+ }
+
+ /**
+ * Sets the value of the encryption property.
+ *
+ */
+ public void setEncryption(boolean value) {
+ this.encryption = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ReferencesCheckResultInfoType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ReferencesCheckResultInfoType.java
new file mode 100644
index 00000000..4446361e
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ReferencesCheckResultInfoType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for ReferencesCheckResultInfoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ReferencesCheckResultInfoType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="FailedReference" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ReferencesCheckResultInfoType", propOrder = {
+ "content"
+})
+public class ReferencesCheckResultInfoType {
+
+ @XmlElementRef(name = "FailedReference", namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", type = JAXBElement.class)
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Element }
+ * {@link String }
+ * {@link JAXBElement }{@code <}{@link BigInteger }{@code >}
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ReferencesCheckResultType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ReferencesCheckResultType.java
new file mode 100644
index 00000000..79a2a0c4
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ReferencesCheckResultType.java
@@ -0,0 +1,116 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ReferencesCheckResultType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ReferencesCheckResultType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Code" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger"/>
+ * &lt;element name="Info" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}ReferencesCheckResultInfoType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ReferencesCheckResultType", propOrder = {
+ "code",
+ "info"
+})
+public class ReferencesCheckResultType {
+
+ @XmlElement(name = "Code", required = true)
+ @XmlSchemaType(name = "nonNegativeInteger")
+ protected BigInteger code;
+ @XmlElement(name = "Info")
+ protected ReferencesCheckResultInfoType info;
+
+ /**
+ * Gets the value of the code property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getCode() {
+ return code;
+ }
+
+ /**
+ * Sets the value of the code property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setCode(BigInteger value) {
+ this.code = value;
+ }
+
+ /**
+ * Gets the value of the info property.
+ *
+ * @return
+ * possible object is
+ * {@link ReferencesCheckResultInfoType }
+ *
+ */
+ public ReferencesCheckResultInfoType getInfo() {
+ return info;
+ }
+
+ /**
+ * Sets the value of the info property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ReferencesCheckResultInfoType }
+ *
+ */
+ public void setInfo(ReferencesCheckResultInfoType value) {
+ this.info = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/RequesterIDType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/RequesterIDType.java
new file mode 100644
index 00000000..8b8257e5
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/RequesterIDType.java
@@ -0,0 +1,110 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * <p>Java class for RequesterIDType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="RequesterIDType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.buergerkarte.at/namespaces/securitylayer/1.2#>RequesterIDSimpleType">
+ * &lt;attribute name="AuthenticationClass" use="required" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}AuthenticationClassType" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RequesterIDType", propOrder = {
+ "value"
+})
+public class RequesterIDType {
+
+ @XmlValue
+ protected String value;
+ @XmlAttribute(name = "AuthenticationClass", required = true)
+ protected AuthenticationClassType authenticationClass;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the authenticationClass property.
+ *
+ * @return
+ * possible object is
+ * {@link AuthenticationClassType }
+ *
+ */
+ public AuthenticationClassType getAuthenticationClass() {
+ return authenticationClass;
+ }
+
+ /**
+ * Sets the value of the authenticationClass property.
+ *
+ * @param value
+ * allowed object is
+ * {@link AuthenticationClassType }
+ *
+ */
+ public void setAuthenticationClass(AuthenticationClassType value) {
+ this.authenticationClass = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ReturnResultType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ReturnResultType.java
new file mode 100644
index 00000000..8deef3c5
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ReturnResultType.java
@@ -0,0 +1,77 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ReturnResultType.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="ReturnResultType">
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="binary"/>
+ * &lt;enumeration value="xml"/>
+ * &lt;enumeration value="none"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ *
+ */
+@XmlType(name = "ReturnResultType")
+@XmlEnum
+public enum ReturnResultType {
+
+ @XmlEnumValue("binary")
+ BINARY("binary"),
+ @XmlEnumValue("xml")
+ XML("xml"),
+ @XmlEnumValue("none")
+ NONE("none");
+ private final String value;
+
+ ReturnResultType(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static ReturnResultType fromValue(String v) {
+ for (ReturnResultType c: ReturnResultType.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ throw new IllegalArgumentException(v);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/SignatureInfoCreationType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/SignatureInfoCreationType.java
new file mode 100644
index 00000000..ca5a6f6f
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/SignatureInfoCreationType.java
@@ -0,0 +1,148 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SignatureInfoCreationType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignatureInfoCreationType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="SignatureEnvironment" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64XMLOptRefContentType"/>
+ * &lt;element name="SignatureLocation" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}SignatureLocationType"/>
+ * &lt;element name="Supplement" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}DataObjectAssociationType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignatureInfoCreationType", propOrder = {
+ "signatureEnvironment",
+ "signatureLocation",
+ "supplement"
+})
+public class SignatureInfoCreationType {
+
+ @XmlElement(name = "SignatureEnvironment", required = true)
+ protected Base64XMLOptRefContentType signatureEnvironment;
+ @XmlElement(name = "SignatureLocation", required = true, type = at.gv.egiz.slbinding.impl.SignatureLocationType.class)
+ protected at.gv.egiz.slbinding.impl.SignatureLocationType signatureLocation;
+ @XmlElement(name = "Supplement")
+ protected List<DataObjectAssociationType> supplement;
+
+ /**
+ * Gets the value of the signatureEnvironment property.
+ *
+ * @return
+ * possible object is
+ * {@link Base64XMLOptRefContentType }
+ *
+ */
+ public Base64XMLOptRefContentType getSignatureEnvironment() {
+ return signatureEnvironment;
+ }
+
+ /**
+ * Sets the value of the signatureEnvironment property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Base64XMLOptRefContentType }
+ *
+ */
+ public void setSignatureEnvironment(Base64XMLOptRefContentType value) {
+ this.signatureEnvironment = value;
+ }
+
+ /**
+ * Gets the value of the signatureLocation property.
+ *
+ * @return
+ * possible object is
+ * {@link at.buergerkarte.namespaces.securitylayer._1.SignatureLocationType }
+ *
+ */
+ public at.buergerkarte.namespaces.securitylayer._1.SignatureLocationType getSignatureLocation() {
+ return signatureLocation;
+ }
+
+ /**
+ * Sets the value of the signatureLocation property.
+ *
+ * @param value
+ * allowed object is
+ * {@link at.buergerkarte.namespaces.securitylayer._1.SignatureLocationType }
+ *
+ */
+ public void setSignatureLocation(at.buergerkarte.namespaces.securitylayer._1.SignatureLocationType value) {
+ this.signatureLocation = ((at.gv.egiz.slbinding.impl.SignatureLocationType) value);
+ }
+
+ /**
+ * Gets the value of the supplement property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the supplement property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSupplement().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link DataObjectAssociationType }
+ *
+ *
+ */
+ public List<DataObjectAssociationType> getSupplement() {
+ if (supplement == null) {
+ supplement = new ArrayList<DataObjectAssociationType>();
+ }
+ return this.supplement;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/SignatureInfoVerificationType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/SignatureInfoVerificationType.java
new file mode 100644
index 00000000..64fc4295
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/SignatureInfoVerificationType.java
@@ -0,0 +1,118 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for SignatureInfoVerificationType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignatureInfoVerificationType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="SignatureEnvironment" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64XMLOptRefContentType"/>
+ * &lt;element name="SignatureLocation" type="{http://www.w3.org/2001/XMLSchema}token"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignatureInfoVerificationType", propOrder = {
+ "signatureEnvironment",
+ "signatureLocation"
+})
+public class SignatureInfoVerificationType {
+
+ @XmlElement(name = "SignatureEnvironment", required = true)
+ protected Base64XMLOptRefContentType signatureEnvironment;
+ @XmlElement(name = "SignatureLocation", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String signatureLocation;
+
+ /**
+ * Gets the value of the signatureEnvironment property.
+ *
+ * @return
+ * possible object is
+ * {@link Base64XMLOptRefContentType }
+ *
+ */
+ public Base64XMLOptRefContentType getSignatureEnvironment() {
+ return signatureEnvironment;
+ }
+
+ /**
+ * Sets the value of the signatureEnvironment property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Base64XMLOptRefContentType }
+ *
+ */
+ public void setSignatureEnvironment(Base64XMLOptRefContentType value) {
+ this.signatureEnvironment = value;
+ }
+
+ /**
+ * Gets the value of the signatureLocation property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getSignatureLocation() {
+ return signatureLocation;
+ }
+
+ /**
+ * Sets the value of the signatureLocation property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSignatureLocation(String value) {
+ this.signatureLocation = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/SignatureLocationType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/SignatureLocationType.java
new file mode 100644
index 00000000..f98af421
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/SignatureLocationType.java
@@ -0,0 +1,117 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for SignatureLocationType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignatureLocationType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>token">
+ * &lt;attribute name="Index" use="required" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignatureLocationType", propOrder = {
+ "value"
+})
+public class SignatureLocationType {
+
+ @XmlValue
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String value;
+ @XmlAttribute(name = "Index", required = true)
+ @XmlSchemaType(name = "nonNegativeInteger")
+ protected BigInteger index;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the index property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getIndex() {
+ return index;
+ }
+
+ /**
+ * Sets the value of the index property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setIndex(BigInteger value) {
+ this.index = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ToBeEncryptedType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ToBeEncryptedType.java
new file mode 100644
index 00000000..18c8f0ca
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/ToBeEncryptedType.java
@@ -0,0 +1,325 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for ToBeEncryptedType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ToBeEncryptedType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice>
+ * &lt;element name="Element">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="Selector" use="required" type="{http://www.w3.org/2001/XMLSchema}token" />
+ * &lt;attribute name="EncDataReference" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="ElementContent">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="Selector" use="required" type="{http://www.w3.org/2001/XMLSchema}token" />
+ * &lt;attribute name="EncDataReference" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="New" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}XMLToBeEncryptedNewType"/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ToBeEncryptedType", propOrder = {
+ "element",
+ "elementContent",
+ "_new"
+})
+public class ToBeEncryptedType {
+
+ @XmlElement(name = "Element")
+ protected ToBeEncryptedType.Element element;
+ @XmlElement(name = "ElementContent")
+ protected ToBeEncryptedType.ElementContent elementContent;
+ @XmlElement(name = "New")
+ protected XMLToBeEncryptedNewType _new;
+
+ /**
+ * Gets the value of the element property.
+ *
+ * @return
+ * possible object is
+ * {@link ToBeEncryptedType.Element }
+ *
+ */
+ public ToBeEncryptedType.Element getElement() {
+ return element;
+ }
+
+ /**
+ * Sets the value of the element property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ToBeEncryptedType.Element }
+ *
+ */
+ public void setElement(ToBeEncryptedType.Element value) {
+ this.element = value;
+ }
+
+ /**
+ * Gets the value of the elementContent property.
+ *
+ * @return
+ * possible object is
+ * {@link ToBeEncryptedType.ElementContent }
+ *
+ */
+ public ToBeEncryptedType.ElementContent getElementContent() {
+ return elementContent;
+ }
+
+ /**
+ * Sets the value of the elementContent property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ToBeEncryptedType.ElementContent }
+ *
+ */
+ public void setElementContent(ToBeEncryptedType.ElementContent value) {
+ this.elementContent = value;
+ }
+
+ /**
+ * Gets the value of the new property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLToBeEncryptedNewType }
+ *
+ */
+ public XMLToBeEncryptedNewType getNew() {
+ return _new;
+ }
+
+ /**
+ * Sets the value of the new property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLToBeEncryptedNewType }
+ *
+ */
+ public void setNew(XMLToBeEncryptedNewType value) {
+ this._new = value;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="Selector" use="required" type="{http://www.w3.org/2001/XMLSchema}token" />
+ * &lt;attribute name="EncDataReference" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "")
+ public static class Element {
+
+ @XmlAttribute(name = "Selector", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String selector;
+ @XmlAttribute(name = "EncDataReference")
+ @XmlSchemaType(name = "anyURI")
+ protected String encDataReference;
+
+ /**
+ * Gets the value of the selector property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getSelector() {
+ return selector;
+ }
+
+ /**
+ * Sets the value of the selector property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSelector(String value) {
+ this.selector = value;
+ }
+
+ /**
+ * Gets the value of the encDataReference property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getEncDataReference() {
+ return encDataReference;
+ }
+
+ /**
+ * Sets the value of the encDataReference property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setEncDataReference(String value) {
+ this.encDataReference = value;
+ }
+
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="Selector" use="required" type="{http://www.w3.org/2001/XMLSchema}token" />
+ * &lt;attribute name="EncDataReference" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "")
+ public static class ElementContent {
+
+ @XmlAttribute(name = "Selector", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String selector;
+ @XmlAttribute(name = "EncDataReference")
+ @XmlSchemaType(name = "anyURI")
+ protected String encDataReference;
+
+ /**
+ * Gets the value of the selector property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getSelector() {
+ return selector;
+ }
+
+ /**
+ * Sets the value of the selector property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSelector(String value) {
+ this.selector = value;
+ }
+
+ /**
+ * Gets the value of the encDataReference property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getEncDataReference() {
+ return encDataReference;
+ }
+
+ /**
+ * Sets the value of the encDataReference property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setEncDataReference(String value) {
+ this.encDataReference = value;
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/TokenStatusType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/TokenStatusType.java
new file mode 100644
index 00000000..7e92572b
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/TokenStatusType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for TokenStatusType.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="TokenStatusType">
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="ready"/>
+ * &lt;enumeration value="removed"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ *
+ */
+@XmlType(name = "TokenStatusType")
+@XmlEnum
+public enum TokenStatusType {
+
+ @XmlEnumValue("ready")
+ READY("ready"),
+ @XmlEnumValue("removed")
+ REMOVED("removed");
+ private final String value;
+
+ TokenStatusType(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static TokenStatusType fromValue(String v) {
+ for (TokenStatusType c: TokenStatusType.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ throw new IllegalArgumentException(v);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/TransformsInfoType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/TransformsInfoType.java
new file mode 100644
index 00000000..e4a8f48e
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/TransformsInfoType.java
@@ -0,0 +1,123 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlType;
+import org.w3._2000._09.xmldsig_.TransformsType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for TransformsInfoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="TransformsInfoType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Transforms" minOccurs="0"/>
+ * &lt;element name="FinalDataMetaInfo" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}MetaInfoType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TransformsInfoType", propOrder = {
+ "transforms",
+ "finalDataMetaInfo"
+})
+public class TransformsInfoType {
+
+ @XmlElementRef(name = "Transforms", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class)
+ @XmlAnyElement(lax = true)
+ protected Object transforms;
+ @XmlElement(name = "FinalDataMetaInfo", required = true)
+ protected MetaInfoType finalDataMetaInfo;
+
+ /**
+ * Gets the value of the transforms property.
+ *
+ * @return
+ * possible object is
+ * {@link JAXBElement }{@code <}{@link String }{@code >}
+ * {@link Object }
+ * {@link Element }
+ *
+ */
+ public Object getTransforms() {
+ return transforms;
+ }
+
+ /**
+ * Sets the value of the transforms property.
+ *
+ * @param value
+ * allowed object is
+ * {@link JAXBElement }{@code <}{@link String }{@code >}
+ * {@link Object }
+ * {@link Element }
+ *
+ */
+ public void setTransforms(Object value) {
+ this.transforms = value;
+ }
+
+ /**
+ * Gets the value of the finalDataMetaInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link MetaInfoType }
+ *
+ */
+ public MetaInfoType getFinalDataMetaInfo() {
+ return finalDataMetaInfo;
+ }
+
+ /**
+ * Sets the value of the finalDataMetaInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link MetaInfoType }
+ *
+ */
+ public void setFinalDataMetaInfo(MetaInfoType value) {
+ this.finalDataMetaInfo = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/UserConfirmationSimpleType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/UserConfirmationSimpleType.java
new file mode 100644
index 00000000..9419a284
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/UserConfirmationSimpleType.java
@@ -0,0 +1,80 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for UserConfirmationSimpleType.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="UserConfirmationSimpleType">
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="none"/>
+ * &lt;enumeration value="info"/>
+ * &lt;enumeration value="confirm"/>
+ * &lt;enumeration value="confirmWithSecret"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ *
+ */
+@XmlType(name = "UserConfirmationSimpleType")
+@XmlEnum
+public enum UserConfirmationSimpleType {
+
+ @XmlEnumValue("none")
+ NONE("none"),
+ @XmlEnumValue("info")
+ INFO("info"),
+ @XmlEnumValue("confirm")
+ CONFIRM("confirm"),
+ @XmlEnumValue("confirmWithSecret")
+ CONFIRM_WITH_SECRET("confirmWithSecret");
+ private final String value;
+
+ UserConfirmationSimpleType(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static UserConfirmationSimpleType fromValue(String v) {
+ for (UserConfirmationSimpleType c: UserConfirmationSimpleType.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ throw new IllegalArgumentException(v);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/UserConfirmationType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/UserConfirmationType.java
new file mode 100644
index 00000000..33d2b530
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/UserConfirmationType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * <p>Java class for UserConfirmationType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="UserConfirmationType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.buergerkarte.at/namespaces/securitylayer/1.2#>UserConfirmationSimpleType">
+ * &lt;attribute name="UserMayChange" use="required" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "UserConfirmationType", propOrder = {
+ "value"
+})
+public class UserConfirmationType {
+
+ @XmlValue
+ protected UserConfirmationSimpleType value;
+ @XmlAttribute(name = "UserMayChange", required = true)
+ protected boolean userMayChange;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link UserConfirmationSimpleType }
+ *
+ */
+ public UserConfirmationSimpleType getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link UserConfirmationSimpleType }
+ *
+ */
+ public void setValue(UserConfirmationSimpleType value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the userMayChange property.
+ *
+ */
+ public boolean isUserMayChange() {
+ return userMayChange;
+ }
+
+ /**
+ * Sets the value of the userMayChange property.
+ *
+ */
+ public void setUserMayChange(boolean value) {
+ this.userMayChange = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerificationResultType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerificationResultType.java
new file mode 100644
index 00000000..e484619f
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerificationResultType.java
@@ -0,0 +1,105 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for VerificationResultType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="VerificationResultType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="FriendlyName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="Result" type="{http://www.w3.org/2001/XMLSchema}boolean"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "VerificationResultType", propOrder = {
+ "friendlyName",
+ "result"
+})
+public class VerificationResultType {
+
+ @XmlElement(name = "FriendlyName")
+ protected String friendlyName;
+ @XmlElement(name = "Result")
+ protected boolean result;
+
+ /**
+ * Gets the value of the friendlyName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getFriendlyName() {
+ return friendlyName;
+ }
+
+ /**
+ * Sets the value of the friendlyName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setFriendlyName(String value) {
+ this.friendlyName = value;
+ }
+
+ /**
+ * Gets the value of the result property.
+ *
+ */
+ public boolean isResult() {
+ return result;
+ }
+
+ /**
+ * Sets the value of the result property.
+ *
+ */
+ public void setResult(boolean value) {
+ this.result = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyCMSSignatureRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyCMSSignatureRequestType.java
new file mode 100644
index 00000000..8d6701e5
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyCMSSignatureRequestType.java
@@ -0,0 +1,177 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * <p>Java class for VerifyCMSSignatureRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="VerifyCMSSignatureRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="DateTime" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
+ * &lt;element name="CMSSignature" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="DataObject" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}CMSDataObjectOptionalMetaType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Signatories" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}SignatoriesType" default="1" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "VerifyCMSSignatureRequestType", propOrder = {
+ "dateTime",
+ "cmsSignature",
+ "dataObject"
+})
+public class VerifyCMSSignatureRequestType {
+
+ @XmlElement(name = "DateTime")
+ @XmlSchemaType(name = "dateTime")
+ protected XMLGregorianCalendar dateTime;
+ @XmlElement(name = "CMSSignature", required = true)
+ protected byte[] cmsSignature;
+ @XmlElement(name = "DataObject")
+ protected CMSDataObjectOptionalMetaType dataObject;
+ @XmlAttribute(name = "Signatories")
+ protected List<String> signatories;
+
+ /**
+ * Gets the value of the dateTime property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public XMLGregorianCalendar getDateTime() {
+ return dateTime;
+ }
+
+ /**
+ * Sets the value of the dateTime property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public void setDateTime(XMLGregorianCalendar value) {
+ this.dateTime = value;
+ }
+
+ /**
+ * Gets the value of the cmsSignature property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getCMSSignature() {
+ return cmsSignature;
+ }
+
+ /**
+ * Sets the value of the cmsSignature property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setCMSSignature(byte[] value) {
+ this.cmsSignature = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the dataObject property.
+ *
+ * @return
+ * possible object is
+ * {@link CMSDataObjectOptionalMetaType }
+ *
+ */
+ public CMSDataObjectOptionalMetaType getDataObject() {
+ return dataObject;
+ }
+
+ /**
+ * Sets the value of the dataObject property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CMSDataObjectOptionalMetaType }
+ *
+ */
+ public void setDataObject(CMSDataObjectOptionalMetaType value) {
+ this.dataObject = value;
+ }
+
+ /**
+ * Gets the value of the signatories property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the signatories property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSignatories().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getSignatories() {
+ if (signatories == null) {
+ signatories = new ArrayList<String>();
+ }
+ return this.signatories;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyCMSSignatureResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyCMSSignatureResponseType.java
new file mode 100644
index 00000000..ab44ec4d
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyCMSSignatureResponseType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlType;
+import org.w3._2000._09.xmldsig_.KeyInfoType;
+
+
+/**
+ * <p>Java class for VerifyCMSSignatureResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="VerifyCMSSignatureResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence maxOccurs="unbounded">
+ * &lt;element name="SignerInfo" type="{http://www.w3.org/2000/09/xmldsig#}KeyInfoType"/>
+ * &lt;element name="SignatureCheck" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}CheckResultType"/>
+ * &lt;element name="CertificateCheck" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}CheckResultType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "VerifyCMSSignatureResponseType", propOrder = {
+ "signerInfoAndSignatureCheckAndCertificateCheck"
+})
+public class VerifyCMSSignatureResponseType {
+
+ @XmlElementRefs({
+ @XmlElementRef(name = "CertificateCheck", namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", type = JAXBElement.class),
+ @XmlElementRef(name = "SignerInfo", namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", type = JAXBElement.class),
+ @XmlElementRef(name = "SignatureCheck", namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", type = JAXBElement.class)
+ })
+ protected List<JAXBElement<?>> signerInfoAndSignatureCheckAndCertificateCheck;
+
+ /**
+ * Gets the value of the signerInfoAndSignatureCheckAndCertificateCheck property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the signerInfoAndSignatureCheckAndCertificateCheck property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSignerInfoAndSignatureCheckAndCertificateCheck().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link JAXBElement }{@code <}{@link CheckResultType }{@code >}
+ * {@link JAXBElement }{@code <}{@link KeyInfoType }{@code >}
+ * {@link JAXBElement }{@code <}{@link CheckResultType }{@code >}
+ *
+ *
+ */
+ public List<JAXBElement<?>> getSignerInfoAndSignatureCheckAndCertificateCheck() {
+ if (signerInfoAndSignatureCheckAndCertificateCheck == null) {
+ signerInfoAndSignatureCheckAndCertificateCheck = new ArrayList<JAXBElement<?>>();
+ }
+ return this.signerInfoAndSignatureCheckAndCertificateCheck;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyHashInfoRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyHashInfoRequestType.java
new file mode 100644
index 00000000..7b1c143d
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyHashInfoRequestType.java
@@ -0,0 +1,169 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for VerifyHashInfoRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="VerifyHashInfoRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="HashData" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}HashDataType"/>
+ * &lt;element name="HashAlgorithm" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="FriendlyName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="HashValue" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "VerifyHashInfoRequestType", propOrder = {
+ "hashData",
+ "hashAlgorithm",
+ "friendlyName",
+ "hashValue"
+})
+public class VerifyHashInfoRequestType {
+
+ @XmlElement(name = "HashData", required = true)
+ protected HashDataType hashData;
+ @XmlElement(name = "HashAlgorithm", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String hashAlgorithm;
+ @XmlElement(name = "FriendlyName")
+ protected String friendlyName;
+ @XmlElement(name = "HashValue", required = true)
+ protected byte[] hashValue;
+
+ /**
+ * Gets the value of the hashData property.
+ *
+ * @return
+ * possible object is
+ * {@link HashDataType }
+ *
+ */
+ public HashDataType getHashData() {
+ return hashData;
+ }
+
+ /**
+ * Sets the value of the hashData property.
+ *
+ * @param value
+ * allowed object is
+ * {@link HashDataType }
+ *
+ */
+ public void setHashData(HashDataType value) {
+ this.hashData = value;
+ }
+
+ /**
+ * Gets the value of the hashAlgorithm property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getHashAlgorithm() {
+ return hashAlgorithm;
+ }
+
+ /**
+ * Sets the value of the hashAlgorithm property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setHashAlgorithm(String value) {
+ this.hashAlgorithm = value;
+ }
+
+ /**
+ * Gets the value of the friendlyName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getFriendlyName() {
+ return friendlyName;
+ }
+
+ /**
+ * Sets the value of the friendlyName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setFriendlyName(String value) {
+ this.friendlyName = value;
+ }
+
+ /**
+ * Gets the value of the hashValue property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getHashValue() {
+ return hashValue;
+ }
+
+ /**
+ * Sets the value of the hashValue property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setHashValue(byte[] value) {
+ this.hashValue = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyHashRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyHashRequestType.java
new file mode 100644
index 00000000..ba7adb76
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyHashRequestType.java
@@ -0,0 +1,92 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for VerifyHashRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="VerifyHashRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="HashInfo" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}VerifyHashInfoRequestType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "VerifyHashRequestType", propOrder = {
+ "hashInfo"
+})
+public class VerifyHashRequestType {
+
+ @XmlElement(name = "HashInfo", required = true)
+ protected List<VerifyHashInfoRequestType> hashInfo;
+
+ /**
+ * Gets the value of the hashInfo property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the hashInfo property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getHashInfo().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link VerifyHashInfoRequestType }
+ *
+ *
+ */
+ public List<VerifyHashInfoRequestType> getHashInfo() {
+ if (hashInfo == null) {
+ hashInfo = new ArrayList<VerifyHashInfoRequestType>();
+ }
+ return this.hashInfo;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyHashResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyHashResponseType.java
new file mode 100644
index 00000000..d277ebe3
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyHashResponseType.java
@@ -0,0 +1,92 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for VerifyHashResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="VerifyHashResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="VerificationResult" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}VerificationResultType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "VerifyHashResponseType", propOrder = {
+ "verificationResult"
+})
+public class VerifyHashResponseType {
+
+ @XmlElement(name = "VerificationResult", required = true)
+ protected List<VerificationResultType> verificationResult;
+
+ /**
+ * Gets the value of the verificationResult property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the verificationResult property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getVerificationResult().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link VerificationResultType }
+ *
+ *
+ */
+ public List<VerificationResultType> getVerificationResult() {
+ if (verificationResult == null) {
+ verificationResult = new ArrayList<VerificationResultType>();
+ }
+ return this.verificationResult;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyXMLSignatureRequestType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyXMLSignatureRequestType.java
new file mode 100644
index 00000000..c7ee75d4
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyXMLSignatureRequestType.java
@@ -0,0 +1,151 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * <p>Java class for VerifyXMLSignatureRequestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="VerifyXMLSignatureRequestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="DateTime" type="{http://www.w3.org/2001/XMLSchema}dateTime" minOccurs="0"/>
+ * &lt;element name="SignatureInfo" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}SignatureInfoVerificationType"/>
+ * &lt;element name="Supplement" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}DataObjectAssociationType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "VerifyXMLSignatureRequestType", propOrder = {
+ "dateTime",
+ "signatureInfo",
+ "supplement"
+})
+public class VerifyXMLSignatureRequestType {
+
+ @XmlElement(name = "DateTime")
+ @XmlSchemaType(name = "dateTime")
+ protected XMLGregorianCalendar dateTime;
+ @XmlElement(name = "SignatureInfo", required = true)
+ protected SignatureInfoVerificationType signatureInfo;
+ @XmlElement(name = "Supplement")
+ protected List<DataObjectAssociationType> supplement;
+
+ /**
+ * Gets the value of the dateTime property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public XMLGregorianCalendar getDateTime() {
+ return dateTime;
+ }
+
+ /**
+ * Sets the value of the dateTime property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public void setDateTime(XMLGregorianCalendar value) {
+ this.dateTime = value;
+ }
+
+ /**
+ * Gets the value of the signatureInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link SignatureInfoVerificationType }
+ *
+ */
+ public SignatureInfoVerificationType getSignatureInfo() {
+ return signatureInfo;
+ }
+
+ /**
+ * Sets the value of the signatureInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignatureInfoVerificationType }
+ *
+ */
+ public void setSignatureInfo(SignatureInfoVerificationType value) {
+ this.signatureInfo = value;
+ }
+
+ /**
+ * Gets the value of the supplement property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the supplement property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSupplement().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link DataObjectAssociationType }
+ *
+ *
+ */
+ public List<DataObjectAssociationType> getSupplement() {
+ if (supplement == null) {
+ supplement = new ArrayList<DataObjectAssociationType>();
+ }
+ return this.supplement;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyXMLSignatureResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyXMLSignatureResponseType.java
new file mode 100644
index 00000000..b0106756
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/VerifyXMLSignatureResponseType.java
@@ -0,0 +1,205 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3._2000._09.xmldsig_.KeyInfoType;
+
+
+/**
+ * <p>Java class for VerifyXMLSignatureResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="VerifyXMLSignatureResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="SignerInfo" type="{http://www.w3.org/2000/09/xmldsig#}KeyInfoType"/>
+ * &lt;element name="SignatureCheck" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}ReferencesCheckResultType"/>
+ * &lt;element name="SignatureManifestCheck" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}ReferencesCheckResultType"/>
+ * &lt;element name="XMLDSIGManifestCheck" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}ManifestRefsCheckResultType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="CertificateCheck" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}CheckResultType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "VerifyXMLSignatureResponseType", propOrder = {
+ "signerInfo",
+ "signatureCheck",
+ "signatureManifestCheck",
+ "xmldsigManifestCheck",
+ "certificateCheck"
+})
+public class VerifyXMLSignatureResponseType {
+
+ @XmlElement(name = "SignerInfo", required = true)
+ protected KeyInfoType signerInfo;
+ @XmlElement(name = "SignatureCheck", required = true)
+ protected ReferencesCheckResultType signatureCheck;
+ @XmlElement(name = "SignatureManifestCheck", required = true)
+ protected ReferencesCheckResultType signatureManifestCheck;
+ @XmlElement(name = "XMLDSIGManifestCheck")
+ protected List<ManifestRefsCheckResultType> xmldsigManifestCheck;
+ @XmlElement(name = "CertificateCheck", required = true)
+ protected CheckResultType certificateCheck;
+
+ /**
+ * Gets the value of the signerInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link KeyInfoType }
+ *
+ */
+ public KeyInfoType getSignerInfo() {
+ return signerInfo;
+ }
+
+ /**
+ * Sets the value of the signerInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link KeyInfoType }
+ *
+ */
+ public void setSignerInfo(KeyInfoType value) {
+ this.signerInfo = value;
+ }
+
+ /**
+ * Gets the value of the signatureCheck property.
+ *
+ * @return
+ * possible object is
+ * {@link ReferencesCheckResultType }
+ *
+ */
+ public ReferencesCheckResultType getSignatureCheck() {
+ return signatureCheck;
+ }
+
+ /**
+ * Sets the value of the signatureCheck property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ReferencesCheckResultType }
+ *
+ */
+ public void setSignatureCheck(ReferencesCheckResultType value) {
+ this.signatureCheck = value;
+ }
+
+ /**
+ * Gets the value of the signatureManifestCheck property.
+ *
+ * @return
+ * possible object is
+ * {@link ReferencesCheckResultType }
+ *
+ */
+ public ReferencesCheckResultType getSignatureManifestCheck() {
+ return signatureManifestCheck;
+ }
+
+ /**
+ * Sets the value of the signatureManifestCheck property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ReferencesCheckResultType }
+ *
+ */
+ public void setSignatureManifestCheck(ReferencesCheckResultType value) {
+ this.signatureManifestCheck = value;
+ }
+
+ /**
+ * Gets the value of the xmldsigManifestCheck property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the xmldsigManifestCheck property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getXMLDSIGManifestCheck().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link ManifestRefsCheckResultType }
+ *
+ *
+ */
+ public List<ManifestRefsCheckResultType> getXMLDSIGManifestCheck() {
+ if (xmldsigManifestCheck == null) {
+ xmldsigManifestCheck = new ArrayList<ManifestRefsCheckResultType>();
+ }
+ return this.xmldsigManifestCheck;
+ }
+
+ /**
+ * Gets the value of the certificateCheck property.
+ *
+ * @return
+ * possible object is
+ * {@link CheckResultType }
+ *
+ */
+ public CheckResultType getCertificateCheck() {
+ return certificateCheck;
+ }
+
+ /**
+ * Sets the value of the certificateCheck property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CheckResultType }
+ *
+ */
+ public void setCertificateCheck(CheckResultType value) {
+ this.certificateCheck = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLContentType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLContentType.java
new file mode 100644
index 00000000..f45220ed
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLContentType.java
@@ -0,0 +1,86 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for XMLContentType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="XMLContentType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}AnyMixedChildrenType">
+ * &lt;attribute ref="{http://www.w3.org/XML/1998/namespace}space"/>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "XMLContentType")
+public class XMLContentType
+ extends AnyMixedChildrenType
+{
+
+ @XmlAttribute(namespace = "http://www.w3.org/XML/1998/namespace")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ protected String space;
+
+ /**
+ * Gets the value of the space property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getSpace() {
+ return space;
+ }
+
+ /**
+ * Sets the value of the space property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSpace(String value) {
+ this.space = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLRecipientPublicKeyType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLRecipientPublicKeyType.java
new file mode 100644
index 00000000..a862050f
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLRecipientPublicKeyType.java
@@ -0,0 +1,112 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3._2000._09.xmldsig_.KeyValueType;
+
+
+/**
+ * <p>Java class for XMLRecipientPublicKeyType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="XMLRecipientPublicKeyType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}KeyValue"/>
+ * &lt;element name="X509Certificate" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "XMLRecipientPublicKeyType", propOrder = {
+ "keyValue",
+ "x509Certificate"
+})
+public class XMLRecipientPublicKeyType {
+
+ @XmlElement(name = "KeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#")
+ protected KeyValueType keyValue;
+ @XmlElement(name = "X509Certificate")
+ protected byte[] x509Certificate;
+
+ /**
+ * Gets the value of the keyValue property.
+ *
+ * @return
+ * possible object is
+ * {@link KeyValueType }
+ *
+ */
+ public KeyValueType getKeyValue() {
+ return keyValue;
+ }
+
+ /**
+ * Sets the value of the keyValue property.
+ *
+ * @param value
+ * allowed object is
+ * {@link KeyValueType }
+ *
+ */
+ public void setKeyValue(KeyValueType value) {
+ this.keyValue = value;
+ }
+
+ /**
+ * Gets the value of the x509Certificate property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getX509Certificate() {
+ return x509Certificate;
+ }
+
+ /**
+ * Sets the value of the x509Certificate property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setX509Certificate(byte[] value) {
+ this.x509Certificate = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLToBeEncryptedNewContentType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLToBeEncryptedNewContentType.java
new file mode 100644
index 00000000..fe1fb6db
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLToBeEncryptedNewContentType.java
@@ -0,0 +1,85 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for XMLToBeEncryptedNewContentType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="XMLToBeEncryptedNewContentType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}Base64XMLLocRefContentType">
+ * &lt;attribute name="EncDataReference" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "XMLToBeEncryptedNewContentType")
+public class XMLToBeEncryptedNewContentType
+ extends Base64XMLLocRefContentType
+{
+
+ @XmlAttribute(name = "EncDataReference")
+ @XmlSchemaType(name = "anyURI")
+ protected String encDataReference;
+
+ /**
+ * Gets the value of the encDataReference property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getEncDataReference() {
+ return encDataReference;
+ }
+
+ /**
+ * Sets the value of the encDataReference property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setEncDataReference(String value) {
+ this.encDataReference = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLToBeEncryptedNewType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLToBeEncryptedNewType.java
new file mode 100644
index 00000000..7e65a1b7
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/XMLToBeEncryptedNewType.java
@@ -0,0 +1,175 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._1;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for XMLToBeEncryptedNewType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="XMLToBeEncryptedNewType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="MetaInfo" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}MetaInfoType"/>
+ * &lt;element name="Content" type="{http://www.buergerkarte.at/namespaces/securitylayer/1.2#}XMLToBeEncryptedNewContentType"/>
+ * &lt;/sequence>
+ * &lt;attribute name="ParentSelector" use="required" type="{http://www.w3.org/2001/XMLSchema}token" />
+ * &lt;attribute name="NodeCount" use="required" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "XMLToBeEncryptedNewType", propOrder = {
+ "metaInfo",
+ "content"
+})
+public class XMLToBeEncryptedNewType {
+
+ @XmlElement(name = "MetaInfo", required = true)
+ protected MetaInfoType metaInfo;
+ @XmlElement(name = "Content", required = true)
+ protected XMLToBeEncryptedNewContentType content;
+ @XmlAttribute(name = "ParentSelector", required = true)
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String parentSelector;
+ @XmlAttribute(name = "NodeCount", required = true)
+ @XmlSchemaType(name = "nonNegativeInteger")
+ protected BigInteger nodeCount;
+
+ /**
+ * Gets the value of the metaInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link MetaInfoType }
+ *
+ */
+ public MetaInfoType getMetaInfo() {
+ return metaInfo;
+ }
+
+ /**
+ * Sets the value of the metaInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link MetaInfoType }
+ *
+ */
+ public void setMetaInfo(MetaInfoType value) {
+ this.metaInfo = value;
+ }
+
+ /**
+ * Gets the value of the content property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLToBeEncryptedNewContentType }
+ *
+ */
+ public XMLToBeEncryptedNewContentType getContent() {
+ return content;
+ }
+
+ /**
+ * Sets the value of the content property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLToBeEncryptedNewContentType }
+ *
+ */
+ public void setContent(XMLToBeEncryptedNewContentType value) {
+ this.content = value;
+ }
+
+ /**
+ * Gets the value of the parentSelector property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getParentSelector() {
+ return parentSelector;
+ }
+
+ /**
+ * Sets the value of the parentSelector property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setParentSelector(String value) {
+ this.parentSelector = value;
+ }
+
+ /**
+ * Gets the value of the nodeCount property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getNodeCount() {
+ return nodeCount;
+ }
+
+ /**
+ * Sets the value of the nodeCount property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setNodeCount(BigInteger value) {
+ this.nodeCount = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/package-info.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/package-info.java
new file mode 100644
index 00000000..666834ce
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_1/package-info.java
@@ -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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:41:37 AM GMT
+//
+
+@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/1.2#", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package at.buergerkarte.namespaces.securitylayer._1;
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020225_/ErrorResponseType.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020225_/ErrorResponseType.java
new file mode 100644
index 00000000..69b5cd9d
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020225_/ErrorResponseType.java
@@ -0,0 +1,98 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.0.2-b01-fcs
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2009.09.07 at 09:47:31 AM CEST
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._20020225_;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ErrorResponseType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ErrorResponseType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ErrorCode" type="{http://www.w3.org/2001/XMLSchema}integer"/>
+ * &lt;element name="Info" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ErrorResponseType", propOrder = {
+ "errorCode",
+ "info"
+})
+public class ErrorResponseType {
+
+ @XmlElement(name = "ErrorCode", required = true)
+ protected BigInteger errorCode;
+ @XmlElement(name = "Info", required = true)
+ protected String info;
+
+ /**
+ * Gets the value of the errorCode property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getErrorCode() {
+ return errorCode;
+ }
+
+ /**
+ * Sets the value of the errorCode property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setErrorCode(BigInteger value) {
+ this.errorCode = value;
+ }
+
+ /**
+ * Gets the value of the info property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getInfo() {
+ return info;
+ }
+
+ /**
+ * Sets the value of the info property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setInfo(String value) {
+ this.info = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020225_/ObjectFactory.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020225_/ObjectFactory.java
new file mode 100644
index 00000000..a02f9ca1
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020225_/ObjectFactory.java
@@ -0,0 +1,280 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.0.2-b01-fcs
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2009.09.07 at 09:47:31 AM CEST
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._20020225_;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each
+ * Java content interface and Java element interface
+ * generated in the at.buergerkarte.namespaces.securitylayer._20020225_ package.
+ * <p>An ObjectFactory allows you to programatically
+ * construct new instances of the Java representation
+ * for XML content. The Java representation of XML
+ * content can consist of schema derived interfaces
+ * and classes representing the binding of schema
+ * type definitions, element declarations and model
+ * groups. Factory methods for each of these are
+ * provided in this class.
+ *
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _CreateXMLSignatureRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "CreateXMLSignatureRequest");
+ private final static QName _InfoboxUpdateRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "InfoboxUpdateRequest");
+ private final static QName _ErrorResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "ErrorResponse");
+ private final static QName _VerifyXMLSignatureResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "VerifyXMLSignatureResponse");
+ private final static QName _CreateSessionKeyResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "CreateSessionKeyResponse");
+ private final static QName _GetPropertiesRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "GetPropertiesRequest");
+ private final static QName _GetPropertiesResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "GetPropertiesResponse");
+ private final static QName _InfoboxAvailableResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "InfoboxAvailableResponse");
+ private final static QName _InfoboxAvailableRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "InfoboxAvailableRequest");
+ private final static QName _CreateSessionKeyRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "CreateSessionKeyRequest");
+ private final static QName _InfoboxUpdateResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "InfoboxUpdateResponse");
+ private final static QName _CreateXMLSignatureResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "CreateXMLSignatureResponse");
+ private final static QName _GetStatusResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "GetStatusResponse");
+ private final static QName _CreateCMSSignatureRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "CreateCMSSignatureRequest");
+ private final static QName _CreateSymmetricSecretRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "CreateSymmetricSecretRequest");
+ private final static QName _VerifyXMLSignatureRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "VerifyXMLSignatureRequest");
+ private final static QName _CreateSymmetricSecretResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "CreateSymmetricSecretResponse");
+ private final static QName _CreateCMSSignatureResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "CreateCMSSignatureResponse");
+ private final static QName _VerifyCMSSignatureResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "VerifyCMSSignatureResponse");
+ private final static QName _InfoboxReadResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "InfoboxReadResponse");
+ private final static QName _VerifyCMSSignatureRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "VerifyCMSSignatureRequest");
+ private final static QName _InfoboxReadRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "InfoboxReadRequest");
+ private final static QName _GetStatusRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "GetStatusRequest");
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: at.buergerkarte.namespaces.securitylayer._20020225_
+ *
+ */
+ public ObjectFactory() {
+ }
+
+ /**
+ * Create an instance of {@link ErrorResponseType }
+ *
+ */
+ public ErrorResponseType createErrorResponseType() {
+ return new ErrorResponseType();
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "CreateXMLSignatureRequest")
+ public JAXBElement<Object> createCreateXMLSignatureRequest(Object value) {
+ return new JAXBElement<Object>(_CreateXMLSignatureRequest_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "InfoboxUpdateRequest")
+ public JAXBElement<Object> createInfoboxUpdateRequest(Object value) {
+ return new JAXBElement<Object>(_InfoboxUpdateRequest_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ErrorResponseType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "ErrorResponse")
+ public JAXBElement<ErrorResponseType> createErrorResponse(ErrorResponseType value) {
+ return new JAXBElement<ErrorResponseType>(_ErrorResponse_QNAME, ErrorResponseType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "VerifyXMLSignatureResponse")
+ public JAXBElement<Object> createVerifyXMLSignatureResponse(Object value) {
+ return new JAXBElement<Object>(_VerifyXMLSignatureResponse_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "CreateSessionKeyResponse")
+ public JAXBElement<Object> createCreateSessionKeyResponse(Object value) {
+ return new JAXBElement<Object>(_CreateSessionKeyResponse_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "GetPropertiesRequest")
+ public JAXBElement<Object> createGetPropertiesRequest(Object value) {
+ return new JAXBElement<Object>(_GetPropertiesRequest_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "GetPropertiesResponse")
+ public JAXBElement<Object> createGetPropertiesResponse(Object value) {
+ return new JAXBElement<Object>(_GetPropertiesResponse_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "InfoboxAvailableResponse")
+ public JAXBElement<Object> createInfoboxAvailableResponse(Object value) {
+ return new JAXBElement<Object>(_InfoboxAvailableResponse_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "InfoboxAvailableRequest")
+ public JAXBElement<Object> createInfoboxAvailableRequest(Object value) {
+ return new JAXBElement<Object>(_InfoboxAvailableRequest_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "CreateSessionKeyRequest")
+ public JAXBElement<Object> createCreateSessionKeyRequest(Object value) {
+ return new JAXBElement<Object>(_CreateSessionKeyRequest_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "InfoboxUpdateResponse")
+ public JAXBElement<Object> createInfoboxUpdateResponse(Object value) {
+ return new JAXBElement<Object>(_InfoboxUpdateResponse_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "CreateXMLSignatureResponse")
+ public JAXBElement<Object> createCreateXMLSignatureResponse(Object value) {
+ return new JAXBElement<Object>(_CreateXMLSignatureResponse_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "GetStatusResponse")
+ public JAXBElement<Object> createGetStatusResponse(Object value) {
+ return new JAXBElement<Object>(_GetStatusResponse_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "CreateCMSSignatureRequest")
+ public JAXBElement<Object> createCreateCMSSignatureRequest(Object value) {
+ return new JAXBElement<Object>(_CreateCMSSignatureRequest_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "CreateSymmetricSecretRequest")
+ public JAXBElement<Object> createCreateSymmetricSecretRequest(Object value) {
+ return new JAXBElement<Object>(_CreateSymmetricSecretRequest_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "VerifyXMLSignatureRequest")
+ public JAXBElement<Object> createVerifyXMLSignatureRequest(Object value) {
+ return new JAXBElement<Object>(_VerifyXMLSignatureRequest_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "CreateSymmetricSecretResponse")
+ public JAXBElement<Object> createCreateSymmetricSecretResponse(Object value) {
+ return new JAXBElement<Object>(_CreateSymmetricSecretResponse_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "CreateCMSSignatureResponse")
+ public JAXBElement<Object> createCreateCMSSignatureResponse(Object value) {
+ return new JAXBElement<Object>(_CreateCMSSignatureResponse_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "VerifyCMSSignatureResponse")
+ public JAXBElement<Object> createVerifyCMSSignatureResponse(Object value) {
+ return new JAXBElement<Object>(_VerifyCMSSignatureResponse_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "InfoboxReadResponse")
+ public JAXBElement<Object> createInfoboxReadResponse(Object value) {
+ return new JAXBElement<Object>(_InfoboxReadResponse_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "VerifyCMSSignatureRequest")
+ public JAXBElement<Object> createVerifyCMSSignatureRequest(Object value) {
+ return new JAXBElement<Object>(_VerifyCMSSignatureRequest_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "InfoboxReadRequest")
+ public JAXBElement<Object> createInfoboxReadRequest(Object value) {
+ return new JAXBElement<Object>(_InfoboxReadRequest_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", name = "GetStatusRequest")
+ public JAXBElement<Object> createGetStatusRequest(Object value) {
+ return new JAXBElement<Object>(_GetStatusRequest_QNAME, Object.class, null, value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020225_/package-info.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020225_/package-info.java
new file mode 100644
index 00000000..084f6b11
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020225_/package-info.java
@@ -0,0 +1,9 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.0.2-b01-fcs
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2009.09.07 at 09:47:31 AM CEST
+//
+
+@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020225#", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package at.buergerkarte.namespaces.securitylayer._20020225_;
diff --git a/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020831_/ObjectFactory.java b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020831_/ObjectFactory.java
new file mode 100644
index 00000000..17f6d4b4
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/buergerkarte/namespaces/securitylayer/_20020831_/ObjectFactory.java
@@ -0,0 +1,112 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.0.2-b01-fcs
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2009.09.07 at 09:47:31 AM CEST
+//
+
+
+package at.buergerkarte.namespaces.securitylayer._20020831_;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each
+ * Java content interface and Java element interface
+ * generated in the at.buergerkarte.namespaces.securitylayer._20020831_ package.
+ * <p>An ObjectFactory allows you to programatically
+ * construct new instances of the Java representation
+ * for XML content. The Java representation of XML
+ * content can consist of schema derived interfaces
+ * and classes representing the binding of schema
+ * type definitions, element declarations and model
+ * groups. Factory methods for each of these are
+ * provided in this class.
+ *
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _CreateXMLSignatureRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020831#", "CreateXMLSignatureRequest");
+ private final static QName _GetPropertiesResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020831#", "GetPropertiesResponse");
+ private final static QName _VerifyXMLSignatureResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020831#", "VerifyXMLSignatureResponse");
+ private final static QName _VerifyXMLSignatureRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020831#", "VerifyXMLSignatureRequest");
+ private final static QName _VerifyCMSSignatureResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020831#", "VerifyCMSSignatureResponse");
+ private final static QName _CreateXMLSignatureResponse_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020831#", "CreateXMLSignatureResponse");
+ private final static QName _VerifyCMSSignatureRequest_QNAME = new QName("http://www.buergerkarte.at/namespaces/securitylayer/20020831#", "VerifyCMSSignatureRequest");
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: at.buergerkarte.namespaces.securitylayer._20020831_
+ *
+ */
+ public ObjectFactory() {
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020831#", name = "CreateXMLSignatureRequest")
+ public JAXBElement<Object> createCreateXMLSignatureRequest(Object value) {
+ return new JAXBElement<Object>(_CreateXMLSignatureRequest_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020831#", name = "GetPropertiesResponse")
+ public JAXBElement<Object> createGetPropertiesResponse(Object value) {
+ return new JAXBElement<Object>(_GetPropertiesResponse_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020831#", name = "VerifyXMLSignatureResponse")
+ public JAXBElement<Object> createVerifyXMLSignatureResponse(Object value) {
+ return new JAXBElement<Object>(_VerifyXMLSignatureResponse_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020831#", name = "VerifyXMLSignatureRequest")
+ public JAXBElement<Object> createVerifyXMLSignatureRequest(Object value) {
+ return new JAXBElement<Object>(_VerifyXMLSignatureRequest_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020831#", name = "VerifyCMSSignatureResponse")
+ public JAXBElement<Object> createVerifyCMSSignatureResponse(Object value) {
+ return new JAXBElement<Object>(_VerifyCMSSignatureResponse_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020831#", name = "CreateXMLSignatureResponse")
+ public JAXBElement<Object> createCreateXMLSignatureResponse(Object value) {
+ return new JAXBElement<Object>(_CreateXMLSignatureResponse_QNAME, Object.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link Object }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.buergerkarte.at/namespaces/securitylayer/20020831#", name = "VerifyCMSSignatureRequest")
+ public JAXBElement<Object> createVerifyCMSSignatureRequest(Object value) {
+ return new JAXBElement<Object>(_VerifyCMSSignatureRequest_QNAME, Object.class, null, value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/AbstractAddressType.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/AbstractAddressType.java
new file mode 100644
index 00000000..ab531403
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/AbstractAddressType.java
@@ -0,0 +1,159 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.gv.e_government.reference.namespace.persondata._20020228_;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyAttribute;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.namespace.QName;
+
+
+/**
+ * main structure of address data
+ *
+ * <p>Java class for AbstractAddressType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AbstractAddressType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence minOccurs="0">
+ * &lt;element name="Identification" type="{http://reference.e-government.gv.at/namespace/persondata/20020228#}IdentificationType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AbstractAddressType", propOrder = {
+ "identification"
+})
+@XmlSeeAlso({
+ TelephoneAddressType.class,
+ InternetAddressType.class,
+ TypedPostalAddressType.class
+})
+public abstract class AbstractAddressType {
+
+ @XmlElement(name = "Identification")
+ protected List<IdentificationType> identification;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+ @XmlAnyAttribute
+ private Map<QName, String> otherAttributes = new HashMap<QName, String>();
+
+ /**
+ * Gets the value of the identification property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the identification property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getIdentification().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link IdentificationType }
+ *
+ *
+ */
+ public List<IdentificationType> getIdentification() {
+ if (identification == null) {
+ identification = new ArrayList<IdentificationType>();
+ }
+ return this.identification;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+ /**
+ * Gets a map that contains attributes that aren't bound to any typed property on this class.
+ *
+ * <p>
+ * the map is keyed by the name of the attribute and
+ * the value is the string value of the attribute.
+ *
+ * the map returned by this method is live, and you can add new attribute
+ * by updating the map directly. Because of this design, there's no setter.
+ *
+ *
+ * @return
+ * always non-null
+ */
+ public Map<QName, String> getOtherAttributes() {
+ return otherAttributes;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/AbstractPersonType.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/AbstractPersonType.java
new file mode 100644
index 00000000..1efb7ed5
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/AbstractPersonType.java
@@ -0,0 +1,159 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.gv.e_government.reference.namespace.persondata._20020228_;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyAttribute;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.namespace.QName;
+
+
+/**
+ * main structure of person data
+ *
+ * <p>Java class for AbstractPersonType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AbstractPersonType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence minOccurs="0">
+ * &lt;element name="Identification" type="{http://reference.e-government.gv.at/namespace/persondata/20020228#}IdentificationType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AbstractPersonType", propOrder = {
+ "identification"
+})
+@XmlSeeAlso({
+ PersonDataType.class,
+ PhysicalPersonType.class,
+ CorporateBodyType.class
+})
+public abstract class AbstractPersonType {
+
+ @XmlElement(name = "Identification")
+ protected List<IdentificationType> identification;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+ @XmlAnyAttribute
+ private Map<QName, String> otherAttributes = new HashMap<QName, String>();
+
+ /**
+ * Gets the value of the identification property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the identification property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getIdentification().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link IdentificationType }
+ *
+ *
+ */
+ public List<IdentificationType> getIdentification() {
+ if (identification == null) {
+ identification = new ArrayList<IdentificationType>();
+ }
+ return this.identification;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+ /**
+ * Gets a map that contains attributes that aren't bound to any typed property on this class.
+ *
+ * <p>
+ * the map is keyed by the name of the attribute and
+ * the value is the string value of the attribute.
+ *
+ * the map returned by this method is live, and you can add new attribute
+ * by updating the map directly. Because of this design, there's no setter.
+ *
+ *
+ * @return
+ * always non-null
+ */
+ public Map<QName, String> getOtherAttributes() {
+ return otherAttributes;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/CorporateBodyType.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/CorporateBodyType.java
new file mode 100644
index 00000000..2474b618
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/CorporateBodyType.java
@@ -0,0 +1,260 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.gv.e_government.reference.namespace.persondata._20020228_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * juridical person, organisation
+ *
+ * <p>Java class for CorporateBodyType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CorporateBodyType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/persondata/20020228#}AbstractPersonType">
+ * &lt;sequence minOccurs="0">
+ * &lt;element name="Type" type="{http://www.w3.org/2001/XMLSchema}anyURI" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="FullName" type="{http://www.w3.org/2001/XMLSchema}token" minOccurs="0"/>
+ * &lt;element name="AlternativeName" type="{http://www.w3.org/2001/XMLSchema}token" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="LegalForm" type="{http://www.w3.org/2001/XMLSchema}anyURI" minOccurs="0"/>
+ * &lt;element name="Organisation" type="{http://www.w3.org/2001/XMLSchema}token" minOccurs="0"/>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CorporateBodyType", propOrder = {
+ "type",
+ "fullName",
+ "alternativeName",
+ "legalForm",
+ "organisation",
+ "any"
+})
+public class CorporateBodyType
+ extends AbstractPersonType
+{
+
+ @XmlElement(name = "Type")
+ @XmlSchemaType(name = "anyURI")
+ protected List<String> type;
+ @XmlElement(name = "FullName")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String fullName;
+ @XmlElement(name = "AlternativeName")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected List<String> alternativeName;
+ @XmlElement(name = "LegalForm")
+ @XmlSchemaType(name = "anyURI")
+ protected String legalForm;
+ @XmlElement(name = "Organisation")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String organisation;
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * Gets the value of the type property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the type property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getType().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getType() {
+ if (type == null) {
+ type = new ArrayList<String>();
+ }
+ return this.type;
+ }
+
+ /**
+ * Gets the value of the fullName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getFullName() {
+ return fullName;
+ }
+
+ /**
+ * Sets the value of the fullName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setFullName(String value) {
+ this.fullName = value;
+ }
+
+ /**
+ * Gets the value of the alternativeName property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the alternativeName property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAlternativeName().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getAlternativeName() {
+ if (alternativeName == null) {
+ alternativeName = new ArrayList<String>();
+ }
+ return this.alternativeName;
+ }
+
+ /**
+ * Gets the value of the legalForm property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getLegalForm() {
+ return legalForm;
+ }
+
+ /**
+ * Sets the value of the legalForm property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setLegalForm(String value) {
+ this.legalForm = value;
+ }
+
+ /**
+ * Gets the value of the organisation property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getOrganisation() {
+ return organisation;
+ }
+
+ /**
+ * Sets the value of the organisation property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setOrganisation(String value) {
+ this.organisation = value;
+ }
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Object }
+ * {@link Element }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/DefinedAlternativeNameTypeType.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/DefinedAlternativeNameTypeType.java
new file mode 100644
index 00000000..938136b7
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/DefinedAlternativeNameTypeType.java
@@ -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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.gv.e_government.reference.namespace.persondata._20020228_;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DefinedAlternativeNameTypeType.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="DefinedAlternativeNameTypeType">
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="ArtistName"/>
+ * &lt;enumeration value="NickName"/>
+ * &lt;enumeration value="FormerName"/>
+ * &lt;enumeration value="Alias"/>
+ * &lt;enumeration value="MaidenName"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ *
+ */
+@XmlType(name = "DefinedAlternativeNameTypeType")
+@XmlEnum
+public enum DefinedAlternativeNameTypeType {
+
+ @XmlEnumValue("ArtistName")
+ ARTIST_NAME("ArtistName"),
+ @XmlEnumValue("NickName")
+ NICK_NAME("NickName"),
+ @XmlEnumValue("FormerName")
+ FORMER_NAME("FormerName"),
+ @XmlEnumValue("Alias")
+ ALIAS("Alias"),
+ @XmlEnumValue("MaidenName")
+ MAIDEN_NAME("MaidenName");
+ private final String value;
+
+ DefinedAlternativeNameTypeType(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static DefinedAlternativeNameTypeType fromValue(String v) {
+ for (DefinedAlternativeNameTypeType c: DefinedAlternativeNameTypeType.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ throw new IllegalArgumentException(v);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/DefinedRelationType.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/DefinedRelationType.java
new file mode 100644
index 00000000..972db662
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/DefinedRelationType.java
@@ -0,0 +1,95 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.gv.e_government.reference.namespace.persondata._20020228_;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DefinedRelationType.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="DefinedRelationType">
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="family:Parent"/>
+ * &lt;enumeration value="family:Child"/>
+ * &lt;enumeration value="family:Sibling"/>
+ * &lt;enumeration value="family:Grandparent"/>
+ * &lt;enumeration value="family:Grandchild"/>
+ * &lt;enumeration value="family:Spouse"/>
+ * &lt;enumeration value="function:LegalGuardian"/>
+ * &lt;enumeration value="function:IsGuardedBy"/>
+ * &lt;enumeration value="function:Cohabitant"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ *
+ */
+@XmlType(name = "DefinedRelationType")
+@XmlEnum
+public enum DefinedRelationType {
+
+ @XmlEnumValue("family:Parent")
+ FAMILY_PARENT("family:Parent"),
+ @XmlEnumValue("family:Child")
+ FAMILY_CHILD("family:Child"),
+ @XmlEnumValue("family:Sibling")
+ FAMILY_SIBLING("family:Sibling"),
+ @XmlEnumValue("family:Grandparent")
+ FAMILY_GRANDPARENT("family:Grandparent"),
+ @XmlEnumValue("family:Grandchild")
+ FAMILY_GRANDCHILD("family:Grandchild"),
+ @XmlEnumValue("family:Spouse")
+ FAMILY_SPOUSE("family:Spouse"),
+ @XmlEnumValue("function:LegalGuardian")
+ FUNCTION_LEGAL_GUARDIAN("function:LegalGuardian"),
+ @XmlEnumValue("function:IsGuardedBy")
+ FUNCTION_IS_GUARDED_BY("function:IsGuardedBy"),
+ @XmlEnumValue("function:Cohabitant")
+ FUNCTION_COHABITANT("function:Cohabitant");
+ private final String value;
+
+ DefinedRelationType(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static DefinedRelationType fromValue(String v) {
+ for (DefinedRelationType c: DefinedRelationType.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ throw new IllegalArgumentException(v);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/IdentificationType.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/IdentificationType.java
new file mode 100644
index 00000000..ae647fb5
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/IdentificationType.java
@@ -0,0 +1,333 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.gv.e_government.reference.namespace.persondata._20020228_;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyAttribute;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import javax.xml.namespace.QName;
+import org.w3c.dom.Element;
+
+
+/**
+ * unique identifier
+ *
+ * <p>Java class for IdentificationType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="IdentificationType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Value">
+ * &lt;complexType>
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="Type" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;element name="Authority" type="{http://www.w3.org/2001/XMLSchema}anyURI" minOccurs="0"/>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "IdentificationType", propOrder = {
+ "value",
+ "type",
+ "authority",
+ "any"
+})
+public class IdentificationType {
+
+ @XmlElement(name = "Value", required = true)
+ protected IdentificationType.Value value;
+ @XmlElement(name = "Type", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String type;
+ @XmlElement(name = "Authority")
+ @XmlSchemaType(name = "anyURI")
+ protected String authority;
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+ @XmlAnyAttribute
+ private Map<QName, String> otherAttributes = new HashMap<QName, String>();
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link IdentificationType.Value }
+ *
+ */
+ public IdentificationType.Value getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link IdentificationType.Value }
+ *
+ */
+ public void setValue(IdentificationType.Value value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the type property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * Sets the value of the type property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setType(String value) {
+ this.type = value;
+ }
+
+ /**
+ * Gets the value of the authority property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAuthority() {
+ return authority;
+ }
+
+ /**
+ * Sets the value of the authority property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAuthority(String value) {
+ this.authority = value;
+ }
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Object }
+ * {@link Element }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+ /**
+ * Gets a map that contains attributes that aren't bound to any typed property on this class.
+ *
+ * <p>
+ * the map is keyed by the name of the attribute and
+ * the value is the string value of the attribute.
+ *
+ * the map returned by this method is live, and you can add new attribute
+ * by updating the map directly. Because of this design, there's no setter.
+ *
+ *
+ * @return
+ * always non-null
+ */
+ public Map<QName, String> getOtherAttributes() {
+ return otherAttributes;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "", propOrder = {
+ "value"
+ })
+ public static class Value {
+
+ @XmlValue
+ protected String value;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/InternetAddressType.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/InternetAddressType.java
new file mode 100644
index 00000000..4787d299
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/InternetAddressType.java
@@ -0,0 +1,158 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.gv.e_government.reference.namespace.persondata._20020228_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import org.w3._2000._09.xmldsig_.KeyInfoType;
+import org.w3c.dom.Element;
+
+
+/**
+ * internet based communication
+ *
+ * <p>Java class for InternetAddressType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="InternetAddressType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/persondata/20020228#}AbstractAddressType">
+ * &lt;sequence minOccurs="0">
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}KeyInfo" minOccurs="0"/>
+ * &lt;element name="Address" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "InternetAddressType", propOrder = {
+ "keyInfo",
+ "address",
+ "any"
+})
+public class InternetAddressType
+ extends AbstractAddressType
+{
+
+ @XmlElement(name = "KeyInfo", namespace = "http://www.w3.org/2000/09/xmldsig#")
+ protected KeyInfoType keyInfo;
+ @XmlElement(name = "Address")
+ @XmlSchemaType(name = "anyURI")
+ protected String address;
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * certificate for secure communication
+ *
+ * @return
+ * possible object is
+ * {@link KeyInfoType }
+ *
+ */
+ public KeyInfoType getKeyInfo() {
+ return keyInfo;
+ }
+
+ /**
+ * Sets the value of the keyInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link KeyInfoType }
+ *
+ */
+ public void setKeyInfo(KeyInfoType value) {
+ this.keyInfo = value;
+ }
+
+ /**
+ * Gets the value of the address property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAddress() {
+ return address;
+ }
+
+ /**
+ * Sets the value of the address property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAddress(String value) {
+ this.address = value;
+ }
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Object }
+ * {@link Element }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/MaritalStatusType.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/MaritalStatusType.java
new file mode 100644
index 00000000..06a0cf72
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/MaritalStatusType.java
@@ -0,0 +1,80 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.gv.e_government.reference.namespace.persondata._20020228_;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for MaritalStatusType.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="MaritalStatusType">
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token">
+ * &lt;enumeration value="single"/>
+ * &lt;enumeration value="married"/>
+ * &lt;enumeration value="divorced"/>
+ * &lt;enumeration value="widowed"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ *
+ */
+@XmlType(name = "MaritalStatusType")
+@XmlEnum
+public enum MaritalStatusType {
+
+ @XmlEnumValue("single")
+ SINGLE("single"),
+ @XmlEnumValue("married")
+ MARRIED("married"),
+ @XmlEnumValue("divorced")
+ DIVORCED("divorced"),
+ @XmlEnumValue("widowed")
+ WIDOWED("widowed");
+ private final String value;
+
+ MaritalStatusType(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static MaritalStatusType fromValue(String v) {
+ for (MaritalStatusType c: MaritalStatusType.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ throw new IllegalArgumentException(v);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/MobileTelcomNumberType.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/MobileTelcomNumberType.java
new file mode 100644
index 00000000..3ee9e156
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/MobileTelcomNumberType.java
@@ -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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.gv.e_government.reference.namespace.persondata._20020228_;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for MobileTelcomNumberType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="MobileTelcomNumberType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/persondata/20020228#}TelcomNumberType">
+ * &lt;attribute name="smsEnabled" type="{http://www.w3.org/2001/XMLSchema}boolean" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "MobileTelcomNumberType")
+public class MobileTelcomNumberType
+ extends TelcomNumberType
+{
+
+ @XmlAttribute
+ protected Boolean smsEnabled;
+
+ /**
+ * Gets the value of the smsEnabled property.
+ *
+ * @return
+ * possible object is
+ * {@link Boolean }
+ *
+ */
+ public Boolean isSmsEnabled() {
+ return smsEnabled;
+ }
+
+ /**
+ * Sets the value of the smsEnabled property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Boolean }
+ *
+ */
+ public void setSmsEnabled(Boolean value) {
+ this.smsEnabled = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/ObjectFactory.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/ObjectFactory.java
new file mode 100644
index 00000000..53e21a04
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/ObjectFactory.java
@@ -0,0 +1,436 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.gv.e_government.reference.namespace.persondata._20020228_;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each
+ * Java content interface and Java element interface
+ * generated in the at.gv.e_government.reference.namespace.persondata._20020228_ package.
+ * <p>An ObjectFactory allows you to programatically
+ * construct new instances of the Java representation
+ * for XML content. The Java representation of XML
+ * content can consist of schema derived interfaces
+ * and classes representing the binding of schema
+ * type definitions, element declarations and model
+ * groups. Factory methods for each of these are
+ * provided in this class.
+ *
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _NationalNumber_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "NationalNumber");
+ private final static QName _TypedPostalAddress_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "TypedPostalAddress");
+ private final static QName _Extension_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "Extension");
+ private final static QName _Address_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "Address");
+ private final static QName _PhysicalPerson_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "PhysicalPerson");
+ private final static QName _InternationalCountryCode_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "InternationalCountryCode");
+ private final static QName _CorporateBody_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "CorporateBody");
+ private final static QName _Mobile_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "Mobile");
+ private final static QName _Person_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "Person");
+ private final static QName _AreaCityCode_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "AreaCityCode");
+ private final static QName _Pager_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "Pager");
+ private final static QName _TTYTDD_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "TTYTDD");
+ private final static QName _PersonData_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "PersonData");
+ private final static QName _SubscriberNumber_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "SubscriberNumber");
+ private final static QName _Fax_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "Fax");
+ private final static QName _PersonName_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "PersonName");
+ private final static QName _Telephone_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "Telephone");
+ private final static QName _PostalAddress_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "PostalAddress");
+ private final static QName _TelephoneAddress_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "TelephoneAddress");
+ private final static QName _InternetAddress_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "InternetAddress");
+ private final static QName _FormattedNumber_QNAME = new QName("http://reference.e-government.gv.at/namespace/persondata/20020228#", "FormattedNumber");
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: at.gv.e_government.reference.namespace.persondata._20020228_
+ *
+ */
+ public ObjectFactory() {
+ }
+
+ /**
+ * Create an instance of {@link PersonDataType }
+ *
+ */
+ public PersonDataType createPersonDataType() {
+ return new PersonDataType();
+ }
+
+ /**
+ * Create an instance of {@link PhysicalPersonType }
+ *
+ */
+ public PhysicalPersonType createPhysicalPersonType() {
+ return new PhysicalPersonType();
+ }
+
+ /**
+ * Create an instance of {@link PersonNameType.Affix }
+ *
+ */
+ public PersonNameType.Affix createPersonNameTypeAffix() {
+ return new PersonNameType.Affix();
+ }
+
+ /**
+ * Create an instance of {@link PostalAddressType }
+ *
+ */
+ public PostalAddressType createPostalAddressType() {
+ return new PostalAddressType();
+ }
+
+ /**
+ * Create an instance of {@link TypedPostalAddressType }
+ *
+ */
+ public TypedPostalAddressType createTypedPostalAddressType() {
+ return new TypedPostalAddressType();
+ }
+
+ /**
+ * Create an instance of {@link TelcomNumberType }
+ *
+ */
+ public TelcomNumberType createTelcomNumberType() {
+ return new TelcomNumberType();
+ }
+
+ /**
+ * Create an instance of {@link PhysicalPersonType.AlternativeName }
+ *
+ */
+ public PhysicalPersonType.AlternativeName createPhysicalPersonTypeAlternativeName() {
+ return new PhysicalPersonType.AlternativeName();
+ }
+
+ /**
+ * Create an instance of {@link TelephoneAddressType }
+ *
+ */
+ public TelephoneAddressType createTelephoneAddressType() {
+ return new TelephoneAddressType();
+ }
+
+ /**
+ * Create an instance of {@link MobileTelcomNumberType }
+ *
+ */
+ public MobileTelcomNumberType createMobileTelcomNumberType() {
+ return new MobileTelcomNumberType();
+ }
+
+ /**
+ * Create an instance of {@link TelcomNumberListType }
+ *
+ */
+ public TelcomNumberListType createTelcomNumberListType() {
+ return new TelcomNumberListType();
+ }
+
+ /**
+ * Create an instance of {@link CorporateBodyType }
+ *
+ */
+ public CorporateBodyType createCorporateBodyType() {
+ return new CorporateBodyType();
+ }
+
+ /**
+ * Create an instance of {@link PhysicalPersonType.RelatedPerson }
+ *
+ */
+ public PhysicalPersonType.RelatedPerson createPhysicalPersonTypeRelatedPerson() {
+ return new PhysicalPersonType.RelatedPerson();
+ }
+
+ /**
+ * Create an instance of {@link PersonNameType.FormattedName }
+ *
+ */
+ public PersonNameType.FormattedName createPersonNameTypeFormattedName() {
+ return new PersonNameType.FormattedName();
+ }
+
+ /**
+ * Create an instance of {@link PersonNameType }
+ *
+ */
+ public PersonNameType createPersonNameType() {
+ return new PersonNameType();
+ }
+
+ /**
+ * Create an instance of {@link PostalAddressType.DeliveryAddress }
+ *
+ */
+ public PostalAddressType.DeliveryAddress createPostalAddressTypeDeliveryAddress() {
+ return new PostalAddressType.DeliveryAddress();
+ }
+
+ /**
+ * Create an instance of {@link PersonNameType.FamilyName }
+ *
+ */
+ public PersonNameType.FamilyName createPersonNameTypeFamilyName() {
+ return new PersonNameType.FamilyName();
+ }
+
+ /**
+ * Create an instance of {@link PersonDataType.AdditionalData }
+ *
+ */
+ public PersonDataType.AdditionalData createPersonDataTypeAdditionalData() {
+ return new PersonDataType.AdditionalData();
+ }
+
+ /**
+ * Create an instance of {@link PostalAddressType.Recipient }
+ *
+ */
+ public PostalAddressType.Recipient createPostalAddressTypeRecipient() {
+ return new PostalAddressType.Recipient();
+ }
+
+ /**
+ * Create an instance of {@link IdentificationType.Value }
+ *
+ */
+ public IdentificationType.Value createIdentificationTypeValue() {
+ return new IdentificationType.Value();
+ }
+
+ /**
+ * Create an instance of {@link IdentificationType }
+ *
+ */
+ public IdentificationType createIdentificationType() {
+ return new IdentificationType();
+ }
+
+ /**
+ * Create an instance of {@link InternetAddressType }
+ *
+ */
+ public InternetAddressType createInternetAddressType() {
+ return new InternetAddressType();
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "NationalNumber")
+ public JAXBElement<String> createNationalNumber(String value) {
+ return new JAXBElement<String>(_NationalNumber_QNAME, String.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TypedPostalAddressType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "TypedPostalAddress")
+ public JAXBElement<TypedPostalAddressType> createTypedPostalAddress(TypedPostalAddressType value) {
+ return new JAXBElement<TypedPostalAddressType>(_TypedPostalAddress_QNAME, TypedPostalAddressType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "Extension")
+ public JAXBElement<String> createExtension(String value) {
+ return new JAXBElement<String>(_Extension_QNAME, String.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AbstractAddressType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "Address")
+ public JAXBElement<AbstractAddressType> createAddress(AbstractAddressType value) {
+ return new JAXBElement<AbstractAddressType>(_Address_QNAME, AbstractAddressType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link PhysicalPersonType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "PhysicalPerson")
+ public JAXBElement<PhysicalPersonType> createPhysicalPerson(PhysicalPersonType value) {
+ return new JAXBElement<PhysicalPersonType>(_PhysicalPerson_QNAME, PhysicalPersonType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "InternationalCountryCode")
+ public JAXBElement<String> createInternationalCountryCode(String value) {
+ return new JAXBElement<String>(_InternationalCountryCode_QNAME, String.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CorporateBodyType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "CorporateBody")
+ public JAXBElement<CorporateBodyType> createCorporateBody(CorporateBodyType value) {
+ return new JAXBElement<CorporateBodyType>(_CorporateBody_QNAME, CorporateBodyType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link MobileTelcomNumberType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "Mobile")
+ public JAXBElement<MobileTelcomNumberType> createMobile(MobileTelcomNumberType value) {
+ return new JAXBElement<MobileTelcomNumberType>(_Mobile_QNAME, MobileTelcomNumberType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AbstractPersonType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "Person")
+ public JAXBElement<AbstractPersonType> createPerson(AbstractPersonType value) {
+ return new JAXBElement<AbstractPersonType>(_Person_QNAME, AbstractPersonType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "AreaCityCode")
+ public JAXBElement<String> createAreaCityCode(String value) {
+ return new JAXBElement<String>(_AreaCityCode_QNAME, String.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TelcomNumberType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "Pager")
+ public JAXBElement<TelcomNumberType> createPager(TelcomNumberType value) {
+ return new JAXBElement<TelcomNumberType>(_Pager_QNAME, TelcomNumberType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TelcomNumberType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "TTYTDD")
+ public JAXBElement<TelcomNumberType> createTTYTDD(TelcomNumberType value) {
+ return new JAXBElement<TelcomNumberType>(_TTYTDD_QNAME, TelcomNumberType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link PersonDataType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "PersonData")
+ public JAXBElement<PersonDataType> createPersonData(PersonDataType value) {
+ return new JAXBElement<PersonDataType>(_PersonData_QNAME, PersonDataType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "SubscriberNumber")
+ public JAXBElement<String> createSubscriberNumber(String value) {
+ return new JAXBElement<String>(_SubscriberNumber_QNAME, String.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TelcomNumberType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "Fax")
+ public JAXBElement<TelcomNumberType> createFax(TelcomNumberType value) {
+ return new JAXBElement<TelcomNumberType>(_Fax_QNAME, TelcomNumberType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link PersonNameType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "PersonName")
+ public JAXBElement<PersonNameType> createPersonName(PersonNameType value) {
+ return new JAXBElement<PersonNameType>(_PersonName_QNAME, PersonNameType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TelcomNumberType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "Telephone")
+ public JAXBElement<TelcomNumberType> createTelephone(TelcomNumberType value) {
+ return new JAXBElement<TelcomNumberType>(_Telephone_QNAME, TelcomNumberType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link PostalAddressType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "PostalAddress")
+ public JAXBElement<PostalAddressType> createPostalAddress(PostalAddressType value) {
+ return new JAXBElement<PostalAddressType>(_PostalAddress_QNAME, PostalAddressType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TelephoneAddressType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "TelephoneAddress")
+ public JAXBElement<TelephoneAddressType> createTelephoneAddress(TelephoneAddressType value) {
+ return new JAXBElement<TelephoneAddressType>(_TelephoneAddress_QNAME, TelephoneAddressType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link InternetAddressType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "InternetAddress")
+ public JAXBElement<InternetAddressType> createInternetAddress(InternetAddressType value) {
+ return new JAXBElement<InternetAddressType>(_InternetAddress_QNAME, InternetAddressType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", name = "FormattedNumber")
+ public JAXBElement<String> createFormattedNumber(String value) {
+ return new JAXBElement<String>(_FormattedNumber_QNAME, String.class, null, value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PersonDataType.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PersonDataType.java
new file mode 100644
index 00000000..345e03ab
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PersonDataType.java
@@ -0,0 +1,262 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.gv.e_government.reference.namespace.persondata._20020228_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlType;
+import org.w3._2000._09.xmldsig_.SignatureType;
+import org.w3c.dom.Element;
+
+
+/**
+ * signed person datastructure. The first Identification elements (from the base type) denote the record as such (e.g. database key for this record) - not to be mistaken for identifiers of the person or of an address (they have their own Identification elements).
+ *
+ * <p>Java class for PersonDataType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="PersonDataType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/persondata/20020228#}AbstractPersonType">
+ * &lt;sequence>
+ * &lt;element ref="{http://reference.e-government.gv.at/namespace/persondata/20020228#}Person"/>
+ * &lt;element ref="{http://reference.e-government.gv.at/namespace/persondata/20020228#}Address" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Signature" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="AdditionalData" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PersonDataType", propOrder = {
+ "person",
+ "address",
+ "signature",
+ "additionalData"
+})
+public class PersonDataType
+ extends AbstractPersonType
+{
+
+ @XmlElement(name = "Person", required = true)
+ protected AbstractPersonType person;
+ @XmlElement(name = "Address")
+ protected List<AbstractAddressType> address;
+ @XmlElement(name = "Signature", namespace = "http://www.w3.org/2000/09/xmldsig#")
+ protected List<SignatureType> signature;
+ @XmlElement(name = "AdditionalData")
+ protected PersonDataType.AdditionalData additionalData;
+
+ /**
+ * Gets the value of the person property.
+ *
+ * @return
+ * possible object is
+ * {@link AbstractPersonType }
+ *
+ */
+ public AbstractPersonType getPerson() {
+ return person;
+ }
+
+ /**
+ * Sets the value of the person property.
+ *
+ * @param value
+ * allowed object is
+ * {@link AbstractPersonType }
+ *
+ */
+ public void setPerson(AbstractPersonType value) {
+ this.person = value;
+ }
+
+ /**
+ * Gets the value of the address property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the address property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAddress().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link AbstractAddressType }
+ *
+ *
+ */
+ public List<AbstractAddressType> getAddress() {
+ if (address == null) {
+ address = new ArrayList<AbstractAddressType>();
+ }
+ return this.address;
+ }
+
+ /**
+ * one or more electronic signatures applied on fields above Gets the value of the signature property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the signature property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSignature().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link SignatureType }
+ *
+ *
+ */
+ public List<SignatureType> getSignature() {
+ if (signature == null) {
+ signature = new ArrayList<SignatureType>();
+ }
+ return this.signature;
+ }
+
+ /**
+ * Gets the value of the additionalData property.
+ *
+ * @return
+ * possible object is
+ * {@link PersonDataType.AdditionalData }
+ *
+ */
+ public PersonDataType.AdditionalData getAdditionalData() {
+ return additionalData;
+ }
+
+ /**
+ * Sets the value of the additionalData property.
+ *
+ * @param value
+ * allowed object is
+ * {@link PersonDataType.AdditionalData }
+ *
+ */
+ public void setAdditionalData(PersonDataType.AdditionalData value) {
+ this.additionalData = value;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "", propOrder = {
+ "content"
+ })
+ public static class AdditionalData {
+
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Object }
+ * {@link String }
+ * {@link Element }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PersonNameType.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PersonNameType.java
new file mode 100644
index 00000000..5534897c
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PersonNameType.java
@@ -0,0 +1,636 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.gv.e_government.reference.namespace.persondata._20020228_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * <p>Java class for PersonNameType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="PersonNameType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="FormattedName" maxOccurs="unbounded" minOccurs="0">
+ * &lt;complexType>
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ * &lt;attribute name="type" default="presentation">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="presentation"/>
+ * &lt;enumeration value="legal"/>
+ * &lt;enumeration value="sortOrder"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/attribute>
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="LegalName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="GivenName" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="PreferredGivenName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="MiddleName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="FamilyName" maxOccurs="unbounded" minOccurs="0">
+ * &lt;complexType>
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ * &lt;attribute name="primary" default="undefined">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="true"/>
+ * &lt;enumeration value="false"/>
+ * &lt;enumeration value="undefined"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/attribute>
+ * &lt;attribute name="prefix" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="Affix" maxOccurs="unbounded" minOccurs="0">
+ * &lt;complexType>
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ * &lt;attribute name="type" use="required">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="academicGrade"/>
+ * &lt;enumeration value="aristocraticPrefix"/>
+ * &lt;enumeration value="aristocraticTitle"/>
+ * &lt;enumeration value="familyNamePrefix"/>
+ * &lt;enumeration value="familyNameSuffix"/>
+ * &lt;enumeration value="formOfAddress"/>
+ * &lt;enumeration value="generation"/>
+ * &lt;enumeration value="qualification"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/attribute>
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PersonNameType", propOrder = {
+ "formattedName",
+ "legalName",
+ "givenName",
+ "preferredGivenName",
+ "middleName",
+ "familyName",
+ "affix"
+})
+@XmlSeeAlso({
+ at.gv.e_government.reference.namespace.persondata._20020228_.PhysicalPersonType.AlternativeName.class
+})
+public class PersonNameType {
+
+ @XmlElement(name = "FormattedName")
+ protected List<PersonNameType.FormattedName> formattedName;
+ @XmlElement(name = "LegalName")
+ protected String legalName;
+ @XmlElement(name = "GivenName")
+ protected List<String> givenName;
+ @XmlElement(name = "PreferredGivenName")
+ protected String preferredGivenName;
+ @XmlElement(name = "MiddleName")
+ protected String middleName;
+ @XmlElement(name = "FamilyName")
+ protected List<PersonNameType.FamilyName> familyName;
+ @XmlElement(name = "Affix")
+ protected List<PersonNameType.Affix> affix;
+
+ /**
+ * Gets the value of the formattedName property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the formattedName property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getFormattedName().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link PersonNameType.FormattedName }
+ *
+ *
+ */
+ public List<PersonNameType.FormattedName> getFormattedName() {
+ if (formattedName == null) {
+ formattedName = new ArrayList<PersonNameType.FormattedName>();
+ }
+ return this.formattedName;
+ }
+
+ /**
+ * Gets the value of the legalName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getLegalName() {
+ return legalName;
+ }
+
+ /**
+ * Sets the value of the legalName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setLegalName(String value) {
+ this.legalName = value;
+ }
+
+ /**
+ * Gets the value of the givenName property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the givenName property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getGivenName().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getGivenName() {
+ if (givenName == null) {
+ givenName = new ArrayList<String>();
+ }
+ return this.givenName;
+ }
+
+ /**
+ * Gets the value of the preferredGivenName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getPreferredGivenName() {
+ return preferredGivenName;
+ }
+
+ /**
+ * Sets the value of the preferredGivenName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPreferredGivenName(String value) {
+ this.preferredGivenName = value;
+ }
+
+ /**
+ * Gets the value of the middleName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getMiddleName() {
+ return middleName;
+ }
+
+ /**
+ * Sets the value of the middleName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setMiddleName(String value) {
+ this.middleName = value;
+ }
+
+ /**
+ * Gets the value of the familyName property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the familyName property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getFamilyName().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link PersonNameType.FamilyName }
+ *
+ *
+ */
+ public List<PersonNameType.FamilyName> getFamilyName() {
+ if (familyName == null) {
+ familyName = new ArrayList<PersonNameType.FamilyName>();
+ }
+ return this.familyName;
+ }
+
+ /**
+ * Gets the value of the affix property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the affix property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAffix().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link PersonNameType.Affix }
+ *
+ *
+ */
+ public List<PersonNameType.Affix> getAffix() {
+ if (affix == null) {
+ affix = new ArrayList<PersonNameType.Affix>();
+ }
+ return this.affix;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ * &lt;attribute name="type" use="required">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="academicGrade"/>
+ * &lt;enumeration value="aristocraticPrefix"/>
+ * &lt;enumeration value="aristocraticTitle"/>
+ * &lt;enumeration value="familyNamePrefix"/>
+ * &lt;enumeration value="familyNameSuffix"/>
+ * &lt;enumeration value="formOfAddress"/>
+ * &lt;enumeration value="generation"/>
+ * &lt;enumeration value="qualification"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/attribute>
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "", propOrder = {
+ "value"
+ })
+ public static class Affix {
+
+ @XmlValue
+ protected String value;
+ @XmlAttribute(required = true)
+ protected String type;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the type property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * Sets the value of the type property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setType(String value) {
+ this.type = value;
+ }
+
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ * &lt;attribute name="primary" default="undefined">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="true"/>
+ * &lt;enumeration value="false"/>
+ * &lt;enumeration value="undefined"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/attribute>
+ * &lt;attribute name="prefix" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "", propOrder = {
+ "value"
+ })
+ public static class FamilyName {
+
+ @XmlValue
+ protected String value;
+ @XmlAttribute
+ protected String primary;
+ @XmlAttribute
+ protected String prefix;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the primary property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getPrimary() {
+ if (primary == null) {
+ return "undefined";
+ } else {
+ return primary;
+ }
+ }
+
+ /**
+ * Sets the value of the primary property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPrimary(String value) {
+ this.primary = value;
+ }
+
+ /**
+ * Gets the value of the prefix property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getPrefix() {
+ return prefix;
+ }
+
+ /**
+ * Sets the value of the prefix property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPrefix(String value) {
+ this.prefix = value;
+ }
+
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ * &lt;attribute name="type" default="presentation">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="presentation"/>
+ * &lt;enumeration value="legal"/>
+ * &lt;enumeration value="sortOrder"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/attribute>
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "", propOrder = {
+ "value"
+ })
+ public static class FormattedName {
+
+ @XmlValue
+ protected String value;
+ @XmlAttribute
+ protected String type;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the type property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getType() {
+ if (type == null) {
+ return "presentation";
+ } else {
+ return type;
+ }
+ }
+
+ /**
+ * Sets the value of the type property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setType(String value) {
+ this.type = value;
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PhysicalPersonType.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PhysicalPersonType.java
new file mode 100644
index 00000000..e3b31fd2
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PhysicalPersonType.java
@@ -0,0 +1,565 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.gv.e_government.reference.namespace.persondata._20020228_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * physical person
+ *
+ * <p>Java class for PhysicalPersonType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="PhysicalPersonType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/persondata/20020228#}AbstractPersonType">
+ * &lt;sequence minOccurs="0">
+ * &lt;element name="Name" type="{http://reference.e-government.gv.at/namespace/persondata/20020228#}PersonNameType" minOccurs="0"/>
+ * &lt;element name="AlternativeName" maxOccurs="unbounded" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/persondata/20020228#}PersonNameType">
+ * &lt;attribute name="Type" type="{http://reference.e-government.gv.at/namespace/persondata/20020228#}AlternativeNameTypeType" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="MaritalStatus" type="{http://reference.e-government.gv.at/namespace/persondata/20020228#}MaritalStatusType" minOccurs="0"/>
+ * &lt;element name="Sex" type="{http://reference.e-government.gv.at/namespace/persondata/20020228#}SexType" minOccurs="0"/>
+ * &lt;element name="DateOfBirth" type="{http://reference.e-government.gv.at/namespace/persondata/20020228#}DateOfBirthType" minOccurs="0"/>
+ * &lt;element name="PlaceOfBirth" type="{http://www.w3.org/2001/XMLSchema}token" minOccurs="0"/>
+ * &lt;element name="CountryOfBirth" type="{http://www.w3.org/2001/XMLSchema}token" minOccurs="0"/>
+ * &lt;element name="Nationality" type="{http://www.w3.org/2001/XMLSchema}token" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="Confession" type="{http://www.w3.org/2001/XMLSchema}token" minOccurs="0"/>
+ * &lt;element name="relatedPerson" maxOccurs="unbounded" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="TypeOfRelation" type="{http://reference.e-government.gv.at/namespace/persondata/20020228#}RelationType" maxOccurs="unbounded"/>
+ * &lt;element ref="{http://reference.e-government.gv.at/namespace/persondata/20020228#}Person"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PhysicalPersonType", propOrder = {
+ "name",
+ "alternativeName",
+ "maritalStatus",
+ "sex",
+ "dateOfBirth",
+ "placeOfBirth",
+ "countryOfBirth",
+ "nationality",
+ "confession",
+ "relatedPerson",
+ "any"
+})
+public class PhysicalPersonType
+ extends AbstractPersonType
+{
+
+ @XmlElement(name = "Name")
+ protected PersonNameType name;
+ @XmlElement(name = "AlternativeName")
+ protected List<PhysicalPersonType.AlternativeName> alternativeName;
+ @XmlElement(name = "MaritalStatus")
+ protected MaritalStatusType maritalStatus;
+ @XmlElement(name = "Sex")
+ protected SexType sex;
+ @XmlElement(name = "DateOfBirth")
+ protected String dateOfBirth;
+ @XmlElement(name = "PlaceOfBirth")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String placeOfBirth;
+ @XmlElement(name = "CountryOfBirth")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String countryOfBirth;
+ @XmlElement(name = "Nationality")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected List<String> nationality;
+ @XmlElement(name = "Confession")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlSchemaType(name = "token")
+ protected String confession;
+ protected List<PhysicalPersonType.RelatedPerson> relatedPerson;
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * Gets the value of the name property.
+ *
+ * @return
+ * possible object is
+ * {@link PersonNameType }
+ *
+ */
+ public PersonNameType getName() {
+ return name;
+ }
+
+ /**
+ * Sets the value of the name property.
+ *
+ * @param value
+ * allowed object is
+ * {@link PersonNameType }
+ *
+ */
+ public void setName(PersonNameType value) {
+ this.name = value;
+ }
+
+ /**
+ * Gets the value of the alternativeName property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the alternativeName property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAlternativeName().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link PhysicalPersonType.AlternativeName }
+ *
+ *
+ */
+ public List<PhysicalPersonType.AlternativeName> getAlternativeName() {
+ if (alternativeName == null) {
+ alternativeName = new ArrayList<PhysicalPersonType.AlternativeName>();
+ }
+ return this.alternativeName;
+ }
+
+ /**
+ * Gets the value of the maritalStatus property.
+ *
+ * @return
+ * possible object is
+ * {@link MaritalStatusType }
+ *
+ */
+ public MaritalStatusType getMaritalStatus() {
+ return maritalStatus;
+ }
+
+ /**
+ * Sets the value of the maritalStatus property.
+ *
+ * @param value
+ * allowed object is
+ * {@link MaritalStatusType }
+ *
+ */
+ public void setMaritalStatus(MaritalStatusType value) {
+ this.maritalStatus = value;
+ }
+
+ /**
+ * Gets the value of the sex property.
+ *
+ * @return
+ * possible object is
+ * {@link SexType }
+ *
+ */
+ public SexType getSex() {
+ return sex;
+ }
+
+ /**
+ * Sets the value of the sex property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SexType }
+ *
+ */
+ public void setSex(SexType value) {
+ this.sex = value;
+ }
+
+ /**
+ * Gets the value of the dateOfBirth property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getDateOfBirth() {
+ return dateOfBirth;
+ }
+
+ /**
+ * Sets the value of the dateOfBirth property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setDateOfBirth(String value) {
+ this.dateOfBirth = value;
+ }
+
+ /**
+ * Gets the value of the placeOfBirth property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getPlaceOfBirth() {
+ return placeOfBirth;
+ }
+
+ /**
+ * Sets the value of the placeOfBirth property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPlaceOfBirth(String value) {
+ this.placeOfBirth = value;
+ }
+
+ /**
+ * Gets the value of the countryOfBirth property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getCountryOfBirth() {
+ return countryOfBirth;
+ }
+
+ /**
+ * Sets the value of the countryOfBirth property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setCountryOfBirth(String value) {
+ this.countryOfBirth = value;
+ }
+
+ /**
+ * Gets the value of the nationality property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the nationality property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getNationality().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getNationality() {
+ if (nationality == null) {
+ nationality = new ArrayList<String>();
+ }
+ return this.nationality;
+ }
+
+ /**
+ * Gets the value of the confession property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getConfession() {
+ return confession;
+ }
+
+ /**
+ * Sets the value of the confession property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setConfession(String value) {
+ this.confession = value;
+ }
+
+ /**
+ * Gets the value of the relatedPerson property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the relatedPerson property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getRelatedPerson().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link PhysicalPersonType.RelatedPerson }
+ *
+ *
+ */
+ public List<PhysicalPersonType.RelatedPerson> getRelatedPerson() {
+ if (relatedPerson == null) {
+ relatedPerson = new ArrayList<PhysicalPersonType.RelatedPerson>();
+ }
+ return this.relatedPerson;
+ }
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Object }
+ * {@link Element }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/persondata/20020228#}PersonNameType">
+ * &lt;attribute name="Type" type="{http://reference.e-government.gv.at/namespace/persondata/20020228#}AlternativeNameTypeType" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "")
+ public static class AlternativeName
+ extends PersonNameType
+ {
+
+ @XmlAttribute(name = "Type")
+ protected String type;
+
+ /**
+ * Gets the value of the type property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * Sets the value of the type property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setType(String value) {
+ this.type = value;
+ }
+
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="TypeOfRelation" type="{http://reference.e-government.gv.at/namespace/persondata/20020228#}RelationType" maxOccurs="unbounded"/>
+ * &lt;element ref="{http://reference.e-government.gv.at/namespace/persondata/20020228#}Person"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "", propOrder = {
+ "typeOfRelation",
+ "person"
+ })
+ public static class RelatedPerson {
+
+ @XmlElement(name = "TypeOfRelation", required = true)
+ protected List<String> typeOfRelation;
+ @XmlElement(name = "Person", required = true)
+ protected AbstractPersonType person;
+
+ /**
+ * Gets the value of the typeOfRelation property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the typeOfRelation property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getTypeOfRelation().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getTypeOfRelation() {
+ if (typeOfRelation == null) {
+ typeOfRelation = new ArrayList<String>();
+ }
+ return this.typeOfRelation;
+ }
+
+ /**
+ * Gets the value of the person property.
+ *
+ * @return
+ * possible object is
+ * {@link AbstractPersonType }
+ *
+ */
+ public AbstractPersonType getPerson() {
+ return person;
+ }
+
+ /**
+ * Sets the value of the person property.
+ *
+ * @param value
+ * allowed object is
+ * {@link AbstractPersonType }
+ *
+ */
+ public void setPerson(AbstractPersonType value) {
+ this.person = value;
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PostalAddressType.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PostalAddressType.java
new file mode 100644
index 00000000..bdda75c2
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/PostalAddressType.java
@@ -0,0 +1,627 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.gv.e_government.reference.namespace.persondata._20020228_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for PostalAddressType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="PostalAddressType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="CountryCode" minOccurs="0">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;pattern value="[A-Z]{2}"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/element>
+ * &lt;element name="PostalCode" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="Region" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="Municipality" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="DeliveryAddress" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="AddressLine" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="StreetName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="BuildingNumber" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="Unit" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="PostOfficeBox" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;element name="Recipient" maxOccurs="unbounded" minOccurs="0">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="PersonName" type="{http://reference.e-government.gv.at/namespace/persondata/20020228#}PersonNameType" minOccurs="0"/>
+ * &lt;element name="AdditionalText" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="Organization" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="OrganizationName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/sequence>
+ * &lt;attribute name="type" default="undefined">
+ * &lt;simpleType>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="postOfficeBoxAddress"/>
+ * &lt;enumeration value="streetAddress"/>
+ * &lt;enumeration value="militaryAddress"/>
+ * &lt;enumeration value="undefined"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * &lt;/attribute>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PostalAddressType", propOrder = {
+ "countryCode",
+ "postalCode",
+ "region",
+ "municipality",
+ "deliveryAddress",
+ "recipient"
+})
+public class PostalAddressType {
+
+ @XmlElement(name = "CountryCode")
+ protected String countryCode;
+ @XmlElement(name = "PostalCode")
+ protected String postalCode;
+ @XmlElement(name = "Region")
+ protected List<String> region;
+ @XmlElement(name = "Municipality")
+ protected String municipality;
+ @XmlElement(name = "DeliveryAddress")
+ protected PostalAddressType.DeliveryAddress deliveryAddress;
+ @XmlElement(name = "Recipient")
+ protected List<PostalAddressType.Recipient> recipient;
+ @XmlAttribute
+ protected String type;
+
+ /**
+ * Gets the value of the countryCode property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getCountryCode() {
+ return countryCode;
+ }
+
+ /**
+ * Sets the value of the countryCode property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setCountryCode(String value) {
+ this.countryCode = value;
+ }
+
+ /**
+ * Gets the value of the postalCode property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getPostalCode() {
+ return postalCode;
+ }
+
+ /**
+ * Sets the value of the postalCode property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPostalCode(String value) {
+ this.postalCode = value;
+ }
+
+ /**
+ * Gets the value of the region property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the region property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getRegion().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getRegion() {
+ if (region == null) {
+ region = new ArrayList<String>();
+ }
+ return this.region;
+ }
+
+ /**
+ * Gets the value of the municipality property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getMunicipality() {
+ return municipality;
+ }
+
+ /**
+ * Sets the value of the municipality property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setMunicipality(String value) {
+ this.municipality = value;
+ }
+
+ /**
+ * Gets the value of the deliveryAddress property.
+ *
+ * @return
+ * possible object is
+ * {@link PostalAddressType.DeliveryAddress }
+ *
+ */
+ public PostalAddressType.DeliveryAddress getDeliveryAddress() {
+ return deliveryAddress;
+ }
+
+ /**
+ * Sets the value of the deliveryAddress property.
+ *
+ * @param value
+ * allowed object is
+ * {@link PostalAddressType.DeliveryAddress }
+ *
+ */
+ public void setDeliveryAddress(PostalAddressType.DeliveryAddress value) {
+ this.deliveryAddress = value;
+ }
+
+ /**
+ * Gets the value of the recipient property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the recipient property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getRecipient().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link PostalAddressType.Recipient }
+ *
+ *
+ */
+ public List<PostalAddressType.Recipient> getRecipient() {
+ if (recipient == null) {
+ recipient = new ArrayList<PostalAddressType.Recipient>();
+ }
+ return this.recipient;
+ }
+
+ /**
+ * Gets the value of the type property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getType() {
+ if (type == null) {
+ return "undefined";
+ } else {
+ return type;
+ }
+ }
+
+ /**
+ * Sets the value of the type property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setType(String value) {
+ this.type = value;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="AddressLine" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="StreetName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="BuildingNumber" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="Unit" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="PostOfficeBox" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "", propOrder = {
+ "addressLine",
+ "streetName",
+ "buildingNumber",
+ "unit",
+ "postOfficeBox"
+ })
+ public static class DeliveryAddress {
+
+ @XmlElement(name = "AddressLine")
+ protected List<String> addressLine;
+ @XmlElement(name = "StreetName")
+ protected String streetName;
+ @XmlElement(name = "BuildingNumber")
+ protected String buildingNumber;
+ @XmlElement(name = "Unit")
+ protected String unit;
+ @XmlElement(name = "PostOfficeBox")
+ protected String postOfficeBox;
+
+ /**
+ * Gets the value of the addressLine property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the addressLine property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAddressLine().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getAddressLine() {
+ if (addressLine == null) {
+ addressLine = new ArrayList<String>();
+ }
+ return this.addressLine;
+ }
+
+ /**
+ * Gets the value of the streetName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getStreetName() {
+ return streetName;
+ }
+
+ /**
+ * Sets the value of the streetName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setStreetName(String value) {
+ this.streetName = value;
+ }
+
+ /**
+ * Gets the value of the buildingNumber property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getBuildingNumber() {
+ return buildingNumber;
+ }
+
+ /**
+ * Sets the value of the buildingNumber property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setBuildingNumber(String value) {
+ this.buildingNumber = value;
+ }
+
+ /**
+ * Gets the value of the unit property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getUnit() {
+ return unit;
+ }
+
+ /**
+ * Sets the value of the unit property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setUnit(String value) {
+ this.unit = value;
+ }
+
+ /**
+ * Gets the value of the postOfficeBox property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getPostOfficeBox() {
+ return postOfficeBox;
+ }
+
+ /**
+ * Sets the value of the postOfficeBox property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPostOfficeBox(String value) {
+ this.postOfficeBox = value;
+ }
+
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="PersonName" type="{http://reference.e-government.gv.at/namespace/persondata/20020228#}PersonNameType" minOccurs="0"/>
+ * &lt;element name="AdditionalText" type="{http://www.w3.org/2001/XMLSchema}string" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="Organization" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="OrganizationName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "", propOrder = {
+ "personName",
+ "additionalText",
+ "organization",
+ "organizationName"
+ })
+ public static class Recipient {
+
+ @XmlElement(name = "PersonName")
+ protected PersonNameType personName;
+ @XmlElement(name = "AdditionalText")
+ protected List<String> additionalText;
+ @XmlElement(name = "Organization")
+ protected String organization;
+ @XmlElement(name = "OrganizationName")
+ protected String organizationName;
+
+ /**
+ * Gets the value of the personName property.
+ *
+ * @return
+ * possible object is
+ * {@link PersonNameType }
+ *
+ */
+ public PersonNameType getPersonName() {
+ return personName;
+ }
+
+ /**
+ * Sets the value of the personName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link PersonNameType }
+ *
+ */
+ public void setPersonName(PersonNameType value) {
+ this.personName = value;
+ }
+
+ /**
+ * Gets the value of the additionalText property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the additionalText property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAdditionalText().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getAdditionalText() {
+ if (additionalText == null) {
+ additionalText = new ArrayList<String>();
+ }
+ return this.additionalText;
+ }
+
+ /**
+ * Gets the value of the organization property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getOrganization() {
+ return organization;
+ }
+
+ /**
+ * Sets the value of the organization property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setOrganization(String value) {
+ this.organization = value;
+ }
+
+ /**
+ * Gets the value of the organizationName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getOrganizationName() {
+ return organizationName;
+ }
+
+ /**
+ * Sets the value of the organizationName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setOrganizationName(String value) {
+ this.organizationName = value;
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/SexType.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/SexType.java
new file mode 100644
index 00000000..c6231233
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/SexType.java
@@ -0,0 +1,77 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.gv.e_government.reference.namespace.persondata._20020228_;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SexType.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="SexType">
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}token">
+ * &lt;enumeration value="male"/>
+ * &lt;enumeration value="female"/>
+ * &lt;enumeration value="unknown"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ *
+ */
+@XmlType(name = "SexType")
+@XmlEnum
+public enum SexType {
+
+ @XmlEnumValue("male")
+ MALE("male"),
+ @XmlEnumValue("female")
+ FEMALE("female"),
+ @XmlEnumValue("unknown")
+ UNKNOWN("unknown");
+ private final String value;
+
+ SexType(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static SexType fromValue(String v) {
+ for (SexType c: SexType.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ throw new IllegalArgumentException(v);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TelcomNumberListType.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TelcomNumberListType.java
new file mode 100644
index 00000000..6a2cc863
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TelcomNumberListType.java
@@ -0,0 +1,197 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.gv.e_government.reference.namespace.persondata._20020228_;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for TelcomNumberListType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="TelcomNumberListType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://reference.e-government.gv.at/namespace/persondata/20020228#}Telephone" minOccurs="0"/>
+ * &lt;element ref="{http://reference.e-government.gv.at/namespace/persondata/20020228#}Mobile" minOccurs="0"/>
+ * &lt;element ref="{http://reference.e-government.gv.at/namespace/persondata/20020228#}Fax" minOccurs="0"/>
+ * &lt;element ref="{http://reference.e-government.gv.at/namespace/persondata/20020228#}Pager" minOccurs="0"/>
+ * &lt;element ref="{http://reference.e-government.gv.at/namespace/persondata/20020228#}TTYTDD" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TelcomNumberListType", propOrder = {
+ "telephone",
+ "mobile",
+ "fax",
+ "pager",
+ "ttytdd"
+})
+public class TelcomNumberListType {
+
+ @XmlElement(name = "Telephone")
+ protected TelcomNumberType telephone;
+ @XmlElement(name = "Mobile")
+ protected MobileTelcomNumberType mobile;
+ @XmlElement(name = "Fax")
+ protected TelcomNumberType fax;
+ @XmlElement(name = "Pager")
+ protected TelcomNumberType pager;
+ @XmlElement(name = "TTYTDD")
+ protected TelcomNumberType ttytdd;
+
+ /**
+ * Gets the value of the telephone property.
+ *
+ * @return
+ * possible object is
+ * {@link TelcomNumberType }
+ *
+ */
+ public TelcomNumberType getTelephone() {
+ return telephone;
+ }
+
+ /**
+ * Sets the value of the telephone property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TelcomNumberType }
+ *
+ */
+ public void setTelephone(TelcomNumberType value) {
+ this.telephone = value;
+ }
+
+ /**
+ * Gets the value of the mobile property.
+ *
+ * @return
+ * possible object is
+ * {@link MobileTelcomNumberType }
+ *
+ */
+ public MobileTelcomNumberType getMobile() {
+ return mobile;
+ }
+
+ /**
+ * Sets the value of the mobile property.
+ *
+ * @param value
+ * allowed object is
+ * {@link MobileTelcomNumberType }
+ *
+ */
+ public void setMobile(MobileTelcomNumberType value) {
+ this.mobile = value;
+ }
+
+ /**
+ * Gets the value of the fax property.
+ *
+ * @return
+ * possible object is
+ * {@link TelcomNumberType }
+ *
+ */
+ public TelcomNumberType getFax() {
+ return fax;
+ }
+
+ /**
+ * Sets the value of the fax property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TelcomNumberType }
+ *
+ */
+ public void setFax(TelcomNumberType value) {
+ this.fax = value;
+ }
+
+ /**
+ * Gets the value of the pager property.
+ *
+ * @return
+ * possible object is
+ * {@link TelcomNumberType }
+ *
+ */
+ public TelcomNumberType getPager() {
+ return pager;
+ }
+
+ /**
+ * Sets the value of the pager property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TelcomNumberType }
+ *
+ */
+ public void setPager(TelcomNumberType value) {
+ this.pager = value;
+ }
+
+ /**
+ * Gets the value of the ttytdd property.
+ *
+ * @return
+ * possible object is
+ * {@link TelcomNumberType }
+ *
+ */
+ public TelcomNumberType getTTYTDD() {
+ return ttytdd;
+ }
+
+ /**
+ * Sets the value of the ttytdd property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TelcomNumberType }
+ *
+ */
+ public void setTTYTDD(TelcomNumberType value) {
+ this.ttytdd = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TelcomNumberType.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TelcomNumberType.java
new file mode 100644
index 00000000..8b4aa3aa
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TelcomNumberType.java
@@ -0,0 +1,225 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.gv.e_government.reference.namespace.persondata._20020228_;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for TelcomNumberType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="TelcomNumberType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice>
+ * &lt;element ref="{http://reference.e-government.gv.at/namespace/persondata/20020228#}FormattedNumber"/>
+ * &lt;group ref="{http://reference.e-government.gv.at/namespace/persondata/20020228#}TelcomNumberGroup"/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TelcomNumberType", propOrder = {
+ "formattedNumber",
+ "internationalCountryCode",
+ "nationalNumber",
+ "areaCityCode",
+ "subscriberNumber",
+ "extension"
+})
+@XmlSeeAlso({
+ MobileTelcomNumberType.class
+})
+public class TelcomNumberType {
+
+ @XmlElement(name = "FormattedNumber")
+ protected String formattedNumber;
+ @XmlElement(name = "InternationalCountryCode")
+ protected String internationalCountryCode;
+ @XmlElement(name = "NationalNumber")
+ protected String nationalNumber;
+ @XmlElement(name = "AreaCityCode")
+ protected String areaCityCode;
+ @XmlElement(name = "SubscriberNumber")
+ protected String subscriberNumber;
+ @XmlElement(name = "Extension")
+ protected String extension;
+
+ /**
+ * Gets the value of the formattedNumber property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getFormattedNumber() {
+ return formattedNumber;
+ }
+
+ /**
+ * Sets the value of the formattedNumber property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setFormattedNumber(String value) {
+ this.formattedNumber = value;
+ }
+
+ /**
+ * Gets the value of the internationalCountryCode property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getInternationalCountryCode() {
+ return internationalCountryCode;
+ }
+
+ /**
+ * Sets the value of the internationalCountryCode property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setInternationalCountryCode(String value) {
+ this.internationalCountryCode = value;
+ }
+
+ /**
+ * Gets the value of the nationalNumber property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getNationalNumber() {
+ return nationalNumber;
+ }
+
+ /**
+ * Sets the value of the nationalNumber property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setNationalNumber(String value) {
+ this.nationalNumber = value;
+ }
+
+ /**
+ * Gets the value of the areaCityCode property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAreaCityCode() {
+ return areaCityCode;
+ }
+
+ /**
+ * Sets the value of the areaCityCode property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAreaCityCode(String value) {
+ this.areaCityCode = value;
+ }
+
+ /**
+ * Gets the value of the subscriberNumber property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getSubscriberNumber() {
+ return subscriberNumber;
+ }
+
+ /**
+ * Sets the value of the subscriberNumber property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSubscriberNumber(String value) {
+ this.subscriberNumber = value;
+ }
+
+ /**
+ * Gets the value of the extension property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getExtension() {
+ return extension;
+ }
+
+ /**
+ * Sets the value of the extension property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setExtension(String value) {
+ this.extension = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TelephoneAddressType.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TelephoneAddressType.java
new file mode 100644
index 00000000..9facdf9a
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TelephoneAddressType.java
@@ -0,0 +1,162 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.gv.e_government.reference.namespace.persondata._20020228_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * phone numbers
+ *
+ * <p>Java class for TelephoneAddressType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="TelephoneAddressType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/persondata/20020228#}AbstractAddressType">
+ * &lt;sequence minOccurs="0">
+ * &lt;element name="Type" type="{http://www.w3.org/2001/XMLSchema}anyURI" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="Number" type="{http://reference.e-government.gv.at/namespace/persondata/20020228#}TelcomNumberType"/>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TelephoneAddressType", propOrder = {
+ "type",
+ "number",
+ "any"
+})
+public class TelephoneAddressType
+ extends AbstractAddressType
+{
+
+ @XmlElement(name = "Type")
+ @XmlSchemaType(name = "anyURI")
+ protected List<String> type;
+ @XmlElement(name = "Number")
+ protected TelcomNumberType number;
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * Gets the value of the type property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the type property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getType().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getType() {
+ if (type == null) {
+ type = new ArrayList<String>();
+ }
+ return this.type;
+ }
+
+ /**
+ * Gets the value of the number property.
+ *
+ * @return
+ * possible object is
+ * {@link TelcomNumberType }
+ *
+ */
+ public TelcomNumberType getNumber() {
+ return number;
+ }
+
+ /**
+ * Sets the value of the number property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TelcomNumberType }
+ *
+ */
+ public void setNumber(TelcomNumberType value) {
+ this.number = value;
+ }
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Object }
+ * {@link Element }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TypedPostalAddressType.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TypedPostalAddressType.java
new file mode 100644
index 00000000..3184b3e7
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/TypedPostalAddressType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+
+package at.gv.e_government.reference.namespace.persondata._20020228_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * postal address
+ *
+ * <p>Java class for TypedPostalAddressType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="TypedPostalAddressType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://reference.e-government.gv.at/namespace/persondata/20020228#}AbstractAddressType">
+ * &lt;sequence minOccurs="0">
+ * &lt;element name="Type" type="{http://www.w3.org/2001/XMLSchema}anyURI" minOccurs="0"/>
+ * &lt;element ref="{http://reference.e-government.gv.at/namespace/persondata/20020228#}PostalAddress"/>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TypedPostalAddressType", propOrder = {
+ "type",
+ "postalAddress",
+ "any"
+})
+public class TypedPostalAddressType
+ extends AbstractAddressType
+{
+
+ @XmlElement(name = "Type")
+ @XmlSchemaType(name = "anyURI")
+ protected String type;
+ @XmlElement(name = "PostalAddress")
+ protected PostalAddressType postalAddress;
+ @XmlAnyElement(lax = true)
+ protected List<Object> any;
+
+ /**
+ * Gets the value of the type property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * Sets the value of the type property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setType(String value) {
+ this.type = value;
+ }
+
+ /**
+ * Gets the value of the postalAddress property.
+ *
+ * @return
+ * possible object is
+ * {@link PostalAddressType }
+ *
+ */
+ public PostalAddressType getPostalAddress() {
+ return postalAddress;
+ }
+
+ /**
+ * Sets the value of the postalAddress property.
+ *
+ * @param value
+ * allowed object is
+ * {@link PostalAddressType }
+ *
+ */
+ public void setPostalAddress(PostalAddressType value) {
+ this.postalAddress = value;
+ }
+
+ /**
+ * Gets the value of the any property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the any property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Object }
+ * {@link Element }
+ *
+ *
+ */
+ public List<Object> getAny() {
+ if (any == null) {
+ any = new ArrayList<Object>();
+ }
+ return this.any;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/package-info.java b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/package-info.java
new file mode 100644
index 00000000..f95c7b54
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/e_government/reference/namespace/persondata/_20020228_/package-info.java
@@ -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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:43:54 AM GMT
+//
+
+@javax.xml.bind.annotation.XmlSchema(namespace = "http://reference.e-government.gv.at/namespace/persondata/20020228#", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package at.gv.e_government.reference.namespace.persondata._20020228_;
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/DebugOutputStream.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/DebugOutputStream.java
new file mode 100644
index 00000000..8516b76c
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/DebugOutputStream.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.utils;
+
+import java.io.ByteArrayOutputStream;
+import java.io.FilterOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+
+public class DebugOutputStream extends FilterOutputStream {
+
+ private ByteArrayOutputStream buffer = new ByteArrayOutputStream();
+
+ public DebugOutputStream(OutputStream out) {
+ super(out);
+ }
+
+ @Override
+ public void write(byte[] b, int off, int len) throws IOException {
+ buffer.write(b, off, len);
+ super.write(b, off, len);
+ }
+
+ @Override
+ public void write(int b) throws IOException {
+ buffer.write(b);
+ super.write(b);
+ }
+
+ public byte[] getBufferedBytes() {
+ return buffer.toByteArray();
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/DebugReader.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/DebugReader.java
new file mode 100644
index 00000000..cafe4a72
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/DebugReader.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.utils;
+
+import java.io.FilterReader;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringWriter;
+
+public class DebugReader extends FilterReader {
+
+ private StringWriter buffer = new StringWriter();
+
+ public DebugReader(Reader in) {
+ super(in);
+ }
+
+ public DebugReader(Reader in, String start) {
+ super(in);
+ buffer.write(start);
+ }
+
+ @Override
+ public int read() throws IOException {
+ int c = super.read();
+ if (c != -1)
+ buffer.write(c);
+ return c;
+ }
+
+ @Override
+ public int read(char[] cbuf, int off, int len) throws IOException {
+ int l = super.read(cbuf, off, len);
+ if (l != -1 ) {
+ buffer.write(cbuf, off, l);
+ }
+ return l;
+ }
+
+ public String getCachedString() {
+ return buffer.toString();
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/DebugWriter.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/DebugWriter.java
new file mode 100644
index 00000000..5566f927
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/DebugWriter.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.utils;
+
+import java.io.FilterWriter;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+
+public class DebugWriter extends FilterWriter {
+
+ private Writer buffer = new StringWriter();
+
+ public DebugWriter(Writer out) {
+ super(out);
+ }
+
+ @Override
+ public void write(char[] cbuf, int off, int len) throws IOException {
+ buffer.write(cbuf, off, len);
+ super.write(cbuf, off, len);
+ }
+
+ @Override
+ public void write(String str, int off, int len) throws IOException {
+ buffer.write(str, off, len);
+ super.write(str, off, len);
+ }
+
+ @Override
+ public void write(int c) throws IOException {
+ buffer.write(c);
+ super.write(c);
+ }
+
+ public String getBufferedString() {
+ return buffer.toString();
+ }
+
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/HexDump.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/HexDump.java
new file mode 100644
index 00000000..88d49bad
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/HexDump.java
@@ -0,0 +1,75 @@
+/*
+* 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.utils;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.io.Writer;
+
+public class HexDump {
+
+ public static String hexDump(InputStream is) throws IOException {
+ StringWriter writer = new StringWriter();
+ hexDump(is, writer);
+ return writer.toString();
+ }
+
+ public static void hexDump(InputStream is, Writer writer) throws IOException {
+ hexDump(is, writer, 16);
+ }
+
+ public static void hexDump(InputStream is, Writer writer, int chunkSize) throws IOException {
+
+ byte[] chunk = new byte[chunkSize];
+ long adr = 0;
+ for (int l; (l = is.read(chunk)) != -1;) {
+
+ writer.append(String.format("[%06x]", adr));
+ for (int i = 0; i < l; i++) {
+ if (i % 8 == 0) {
+ writer.append(" ");
+ } else {
+ writer.append(":");
+ }
+ writer.append(Integer.toHexString((chunk[i] & 240) >> 4));
+ writer.append(Integer.toHexString(chunk[i] & 15));
+ }
+
+ for (int i = 0; i < (chunkSize - l); i++) {
+ writer.append(" ");
+ }
+
+ for (int i = 0; i < l; i++) {
+ if (i % 8 == 0) {
+ writer.append(" ");
+ }
+ if (chunk[i] > 31 && chunk[i] < 127) {
+ writer.append((char) chunk[i]);
+ } else {
+ writer.append(".");
+ }
+ }
+
+ writer.append("\n");
+ adr += l;
+
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/NullOutputStream.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/NullOutputStream.java
new file mode 100644
index 00000000..edbd9c01
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/NullOutputStream.java
@@ -0,0 +1,10 @@
+package at.gv.egiz.bku.utils;
+
+import java.io.IOException;
+import java.io.OutputStream;
+
+public class NullOutputStream extends OutputStream {
+ @Override
+ public void write(int b) throws IOException {
+ }
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/StreamUtil.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/StreamUtil.java
new file mode 100644
index 00000000..a774df2b
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/StreamUtil.java
@@ -0,0 +1,101 @@
+/*
+* 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.utils;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.Writer;
+
+public class StreamUtil {
+
+ /**
+ * Copies data. None of the streams will be closed.
+ *
+ * @param is
+ * @param os
+ * @throws IOException
+ */
+ public static void copyStream(InputStream is, OutputStream os)
+ throws IOException {
+ copyStream(is, os, 1024);
+ }
+
+ /**
+ * Copies data. None of the streams will be closed.
+ *
+ * @param is
+ * @param os
+ * @throws IOException
+ */
+ public static void copyStream(InputStream is, OutputStream os, int bufferSize)
+ throws IOException {
+ byte[] buffer = new byte[bufferSize];
+ copyStream(is, os, buffer);
+ }
+
+ /**
+ * Copies data. None of the streams will be closed.
+ *
+ * @param is
+ * @param os
+ * @throws IOException
+ */
+ public static void copyStream(InputStream is, OutputStream os, byte[] buffer)
+ throws IOException {
+ for (int i = is.read(buffer); i > -1; i = is.read(buffer)) {
+ os.write(buffer, 0, i);
+ }
+ }
+
+ /**
+ * Copies data. None of the streams will be closed.
+ *
+ * @param is
+ * @param os
+ * @throws IOException
+ */
+ public static void copyStream(Reader is, Writer os)
+ throws IOException {
+ copyStream(is, os, 1024);
+ }
+
+ /**
+ * Copies data. None of the streams will be closed.
+ *
+ * @param is
+ * @param os
+ * @throws IOException
+ */
+ public static void copyStream(Reader is, Writer os, int bufferSize)
+ throws IOException {
+ char[] chars = new char[bufferSize];
+ for (int i = is.read(chars); i > -1; i = is.read(chars)) {
+ os.write(chars, 0, i);
+ }
+ }
+
+
+ public static String asString(InputStream is, String charset)
+ throws IOException {
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ copyStream(is, os);
+ return new String(os.toByteArray(), charset);
+ }
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/URLEncodingInputStream.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/URLEncodingInputStream.java
new file mode 100644
index 00000000..28ef6b88
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/URLEncodingInputStream.java
@@ -0,0 +1,62 @@
+/**
+ *
+ */
+package at.gv.egiz.bku.utils;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.CharBuffer;
+
+/**
+ * @author mcentner
+ *
+ */
+public class URLEncodingInputStream extends InputStream {
+
+ private char[] buffer = new char[1];
+
+ private CharBuffer charBuffer = CharBuffer.wrap(buffer);
+
+ protected Readable in;
+
+ /**
+ * @param in
+ */
+ public URLEncodingInputStream(Readable in) {
+ this.in = in;
+ }
+
+ /* (non-Javadoc)
+ * @see java.io.InputStream#read()
+ */
+ @Override
+ public int read() throws IOException {
+ charBuffer.rewind();
+ if (in.read(charBuffer) == -1) {
+ return -1;
+ }
+ if (buffer[0] == '+') {
+ return ' ';
+ } else if (buffer[0] == '%') {
+ charBuffer.rewind();
+ if (in.read(charBuffer) == -1) {
+ throw new IOException("Invalid URL encoding.");
+ }
+ int c1 = Character.digit(buffer[0], 16);
+ charBuffer.rewind();
+ if (in.read(charBuffer) == -1) {
+ throw new IOException("Invalid URL encoding.");
+ }
+ int c2 = Character.digit(buffer[0], 16);
+ if (c1 == -1 || c2 == -1) {
+ throw new IOException("Invalid URL encoding.");
+ }
+ return ((c1 << 4) | c2);
+ } else {
+ return buffer[0];
+ }
+ }
+
+
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/URLEncodingOutputStream.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/URLEncodingOutputStream.java
new file mode 100644
index 00000000..df42df6d
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/URLEncodingOutputStream.java
@@ -0,0 +1,134 @@
+/*
+* 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.utils;
+
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.CharBuffer;
+import java.util.BitSet;
+
+/**
+ * An URLEncoding <a
+ * href="http://tools.ietf.org/html/rfc3986#section-2.1">RFC3986, Section 2.1</a>
+ * OutputStream.
+ *
+ * @author mcentner
+ */
+public class URLEncodingOutputStream extends OutputStream {
+
+ private static final int MAX_BUFFER_SIZE = 512;
+
+ private static final BitSet UNRESERVED = new BitSet(256);
+
+ static {
+ for (int i = '0'; i <= '9'; i++) {
+ UNRESERVED.set(i);
+ }
+ for (int i = 'a'; i <= 'z'; i++) {
+ UNRESERVED.set(i);
+ }
+ for (int i = 'A'; i <= 'Z'; i++) {
+ UNRESERVED.set(i);
+ }
+ UNRESERVED.set('-');
+ UNRESERVED.set('_');
+ UNRESERVED.set('.');
+ UNRESERVED.set('*');
+ UNRESERVED.set(' ');
+ }
+
+ private static final char[] HEX = new char[] {
+ '0', '1', '2', '3', '4', '5', '6', '7',
+ '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'
+ };
+
+ private char[] buf;
+
+ protected Appendable out;
+
+ /**
+ * Creates a new instance of this URLEncodingOutputStream that writes to the
+ * given Appendable.
+ * <p>
+ * Note: According to
+ * http://www.w3.org/TR/html40/appendix/notes.html#non-ascii-chars the input
+ * for the {@link #write()} methods should be the UTF-8.
+ * </p>
+ *
+ * @param out
+ */
+ public URLEncodingOutputStream(Appendable out) {
+ this.out = out;
+ }
+
+ /* (non-Javadoc)
+ * @see java.io.OutputStream#write(int)
+ */
+ @Override
+ public void write(int b) throws IOException {
+ b &= 0xFF;
+ if (UNRESERVED.get(b)) {
+ if (b == ' ') {
+ out.append('+');
+ } else {
+ out.append((char) b);
+ }
+ } else {
+ out.append('%').append(HEX[b >>> 4]).append(HEX[b & 0xF]);
+ }
+
+ }
+
+ /* (non-Javadoc)
+ * @see java.io.OutputStream#write(byte[], int, int)
+ */
+ @Override
+ public void write(byte[] b, int off, int len) throws IOException {
+
+ // ensure a buffer at least double the size of end - start + 1
+ // but max
+ int sz = Math.min(len + 1, MAX_BUFFER_SIZE);
+ if (buf == null || buf.length < sz) {
+ buf = new char[sz];
+ }
+
+ int bPos = 0;
+ for (int i = 0; i < len; i++) {
+ if (bPos + 3 > buf.length) {
+ // flush buffer
+ out.append(CharBuffer.wrap(buf, 0, bPos));
+ bPos = 0;
+ }
+ int c = 0xFF & b[off + i];
+ if (UNRESERVED.get(c)) {
+ if (c == ' ') {
+ buf[bPos++] = '+';
+ } else {
+ buf[bPos++] = (char) c;
+ }
+ } else {
+ buf[bPos++] = '%';
+ buf[bPos++] = HEX[c >>> 4];
+ buf[bPos++] = HEX[c & 0xF];
+ }
+ }
+ out.append(CharBuffer.wrap(buf, 0, bPos));
+
+ }
+
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/URLEncodingWriter.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/URLEncodingWriter.java
new file mode 100644
index 00000000..3ba90265
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/URLEncodingWriter.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.utils;
+
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.nio.charset.Charset;
+
+/**
+ * An URLEncoding <a
+ * href="http://tools.ietf.org/html/rfc3986#section-2.1">RFC3986, Section
+ * 2.1</a> Writer, that uses an UTF-8 encoding according to <a href
+ * ="http://www.w3.org/TR/html40/appendix/notes.html#non-ascii-chars"
+ * >http://www.w3.org/TR/html40/appendix/notes.html#non-ascii-chars</a> for
+ * writing non-ASCII characters.
+ *
+ * @author mcentner
+ */
+public class URLEncodingWriter extends Writer {
+
+ protected OutputStreamWriter osw;
+
+ public URLEncodingWriter(Appendable out) {
+ URLEncodingOutputStream urlEnc = new URLEncodingOutputStream(out);
+ osw = new OutputStreamWriter(urlEnc, Charset.forName("UTF-8"));
+ }
+
+ @Override
+ public void close() throws IOException {
+ osw.close();
+ }
+
+ @Override
+ public void flush() throws IOException {
+ osw.flush();
+ }
+
+ @Override
+ public void write(char[] cbuf, int off, int len) throws IOException {
+ osw.write(cbuf, off, len);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/binding/Protocol.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/binding/Protocol.java
new file mode 100644
index 00000000..f0504697
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/binding/Protocol.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.utils.binding;
+
+public enum Protocol {
+ HTTP("http"), HTTPS("https");
+
+ private String name;
+
+ Protocol(String s) {
+ name = s;
+ }
+
+ public String toString() {
+ return name;
+ }
+
+ public static Protocol fromString(String protocol) {
+ if (HTTP.toString().equalsIgnoreCase(protocol)) {
+ return HTTP;
+ }
+ if (HTTPS.toString().equalsIgnoreCase(protocol)) {
+ return HTTPS;
+ }
+ return null;
+ }
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/FormDataURLSupplier.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/FormDataURLSupplier.java
new file mode 100644
index 00000000..7272f1bb
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/FormDataURLSupplier.java
@@ -0,0 +1,26 @@
+/*
+* 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.utils.urldereferencer;
+
+import java.io.InputStream;
+
+public interface FormDataURLSupplier {
+ public static final String PROPERTY_KEY_NAME = "at.gv.egiz.bku.util.urldereferencer.FormDataURLSupplier";
+
+ public InputStream getFormData(String aParameterName);
+ public String getFormDataContentType(String aParameterName);
+} \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/HTTPURLProtocolHandlerImpl.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/HTTPURLProtocolHandlerImpl.java
new file mode 100644
index 00000000..dfe7d5e6
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/HTTPURLProtocolHandlerImpl.java
@@ -0,0 +1,119 @@
+/*
+ * 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.utils.urldereferencer;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.security.InvalidParameterException;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLSocketFactory;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class HTTPURLProtocolHandlerImpl implements URLProtocolHandler {
+
+ private static Log log = LogFactory.getLog(HTTPURLProtocolHandlerImpl.class);
+
+ public final static String HTTP = "http";
+ public final static String HTTPS = "https";
+ public final static String FORMDATA = "formdata";
+ public final static String[] PROTOCOLS = { HTTP, HTTPS, FORMDATA };
+
+ private HostnameVerifier hostnameVerifier;
+ private SSLSocketFactory sslSocketFactory;
+
+ public StreamData dereference(String aUrl, URLDereferencerContext aContext)
+ throws IOException {
+ String urlString = aUrl.toLowerCase().trim();
+ if (urlString.startsWith(FORMDATA)) {
+ log.debug("Requested to dereference a formdata url");
+ return dereferenceFormData(aUrl, aContext);
+ }
+
+ URL url = new URL(aUrl);
+ if ((!HTTP.equalsIgnoreCase(url.getProtocol()) && (!HTTPS
+ .equalsIgnoreCase(url.getProtocol())))) {
+ throw new InvalidParameterException("Url " + aUrl + " not supported");
+ }
+ return dereferenceHTTP(url);
+ }
+
+ protected StreamData dereferenceHTTP(URL url) throws IOException {
+ log.debug("Dereferencing url: " + url);
+ HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
+ if (httpConn instanceof HttpsURLConnection) {
+ log.trace("Detected ssl connection");
+ HttpsURLConnection https = (HttpsURLConnection) httpConn;
+ if (sslSocketFactory != null) {
+ log.debug("Setting custom ssl socket factory for ssl connection");
+ https.setSSLSocketFactory(sslSocketFactory);
+ } else {
+ log.trace("No custom socket factory set");
+ }
+ if (hostnameVerifier != null) {
+ log.debug("Setting custom hostname verifier");
+ https.setHostnameVerifier(hostnameVerifier);
+ }
+ } else {
+ log.trace("No secure connection with: "+url+ " class="+httpConn.getClass());
+ }
+ log.trace("Successfully opened connection");
+ return new StreamData(url.toString(), httpConn.getContentType(), httpConn
+ .getInputStream());
+ }
+
+ /**
+ *
+ * @param aUrl
+ * @param aContext
+ * @return
+ * @throws IOException if the data cannot be found or reading the stream failed.
+ */
+ protected StreamData dereferenceFormData(String aUrl,
+ URLDereferencerContext aContext) throws IOException {
+ log.debug("Dereferencing formdata url: " + aUrl);
+ String[] parts = aUrl.split(":", 2);
+ FormDataURLSupplier supplier = (FormDataURLSupplier) aContext
+ .getProperty(FormDataURLSupplier.PROPERTY_KEY_NAME);
+ if (supplier == null) {
+ throw new NullPointerException(
+ "No FormdataUrlSupplier found in provided context");
+ }
+ String contentType = supplier.getFormDataContentType(parts[1]);
+ InputStream is = supplier.getFormData(parts[1]);
+ if (is != null) {
+ return new StreamData(aUrl, contentType, is);
+ }
+ throw new IOException("Cannot dereference url: formdata not found");
+ }
+
+ @Override
+ public void setHostnameVerifier(HostnameVerifier hostnameVerifier) {
+ this.hostnameVerifier = hostnameVerifier;
+ }
+
+ @Override
+ public void setSSLSocketFactory(SSLSocketFactory socketFactory) {
+ this.sslSocketFactory = socketFactory;
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/SimpleFormDataContextImpl.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/SimpleFormDataContextImpl.java
new file mode 100644
index 00000000..e9da9c81
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/SimpleFormDataContextImpl.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.utils.urldereferencer;
+
+public class SimpleFormDataContextImpl implements URLDereferencerContext {
+ protected FormDataURLSupplier formdata;
+
+ /**
+ *
+ * @param formdata must not be null
+ */
+ public SimpleFormDataContextImpl(FormDataURLSupplier formdata) {
+ if (formdata == null) {
+ throw new NullPointerException("FormdataURLSupplier must not be null");
+ }
+ this.formdata = formdata;
+ }
+
+ @Override
+ public Object getProperty(Object key) {
+ if (key.equals(FormDataURLSupplier.PROPERTY_KEY_NAME)) {
+ return formdata;
+ }
+ return null;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/StreamData.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/StreamData.java
new file mode 100644
index 00000000..541c6878
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/StreamData.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.utils.urldereferencer;
+
+import java.io.InputStream;
+
+/**
+ * This class models the result when dereferencing an URL.
+ *
+ */
+public class StreamData {
+
+ protected InputStream inputStream;
+ protected String url;
+ protected String contentType;
+
+ /**
+ *
+ * @param url
+ * @param contentType
+ * @param stream must not be null
+ */
+ public StreamData(String url, String contentType, InputStream stream) {
+ if (stream == null) {
+ throw new NullPointerException("Parameter inputstream must not be null");
+ }
+ inputStream = stream;
+ this.contentType = contentType;
+ this.url = url;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ /**
+ *
+ * @return the returned stream must be closed
+ */
+ public InputStream getStream() {
+ return inputStream;
+ }
+
+ public String getContentType() {
+ return contentType;
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URIResolverAdapter.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URIResolverAdapter.java
new file mode 100644
index 00000000..2d11010e
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URIResolverAdapter.java
@@ -0,0 +1,96 @@
+/*
+* 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.utils.urldereferencer;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.URISyntaxException;
+
+import javax.xml.transform.Source;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.URIResolver;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Adapter to make the Urldereferencer work as URIResolver for
+ * Stylesheettransforms.
+ *
+ * @author wbauer
+ *
+ */
+public class URIResolverAdapter implements URIResolver {
+
+ private static Log log = LogFactory.getLog(URIResolverAdapter.class);
+
+ private URLDereferencer urlDereferencer;
+ private URLDereferencerContext ctx;
+
+ /**
+ *
+ * @param deferecencer
+ * must not be null
+ * @param ctx may be null
+ */
+ public URIResolverAdapter(URLDereferencer deferecencer,
+ URLDereferencerContext ctx) {
+ if (deferecencer == null) {
+ throw new NullPointerException("Urlderefencer must not be set to null");
+ }
+ this.urlDereferencer = deferecencer;
+ this.ctx = ctx;
+ }
+
+ @Override
+ public Source resolve(String href, String base) throws TransformerException {
+ log.debug("Resolving href: "+href+" base: "+base);
+ try {
+ URI baseUri = null;
+ URI hrefUri = new URI(href);
+ if (base != null) {
+ baseUri = new URI(base);
+ }
+ URI abs;
+ if (baseUri != null) {
+ abs = baseUri.resolve(hrefUri);
+ } else {
+ abs = hrefUri;
+ }
+ if (!abs.isAbsolute()) {
+ throw new TransformerException("Only absolute URLs are supported");
+ }
+ return new StreamSource(urlDereferencer.dereference(abs.toString(), ctx)
+ .getStream());
+ } catch (URISyntaxException e) {
+ throw new TransformerException("Cannot resolve URI: base:" + base
+ + " href:" + href, e);
+ } catch (IOException iox) {
+ throw new TransformerException("Cannot resolve URI: base:" + base
+ + " href:" + href, iox);
+ }
+ }
+
+ public URLDereferencerContext getCtx() {
+ return ctx;
+ }
+
+ public void setCtx(URLDereferencerContext ctx) {
+ this.ctx = ctx;
+ }
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URLDereferencer.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URLDereferencer.java
new file mode 100644
index 00000000..7361ec26
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URLDereferencer.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.utils.urldereferencer;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLSocketFactory;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Class used to dereference (external URLs).
+ *
+ * @author wbauer
+ *
+ */
+public class URLDereferencer {
+
+ private static Log log = LogFactory.getLog(URLDereferencer.class);
+
+ private static URLDereferencer instance = new URLDereferencer();
+
+ private Map<String, URLProtocolHandler> handlerMap = new HashMap<String, URLProtocolHandler>();
+
+ private HostnameVerifier hostnameVerifier;
+ private SSLSocketFactory sslSocketFactory;
+
+ private URLDereferencer() {
+ registerHandlers();
+ }
+
+ /**
+ *
+ * @param aUrl
+ * must not be null
+ * @param aContext
+ * @throws MalformedURLException
+ * if the protocol is not supported
+ * @throws IOException if the url cannot be dereferenced (e.g. formdata not provided)
+ *
+ */
+ public StreamData dereference(String aUrl, URLDereferencerContext aContext)
+ throws IOException {
+ log.debug("Looking for handler for URL: " + aUrl);
+ int i = aUrl.indexOf(":");
+ if (i == -1) {
+ throw new MalformedURLException("Invalid url: " + aUrl);
+ }
+ String protocol = aUrl.substring(0, i).toLowerCase().trim();
+ URLProtocolHandler handler = handlerMap.get(protocol);
+ if (handler == null) {
+ throw new MalformedURLException("No handler for protocol: " + protocol
+ + " found");
+ }
+ handler.setHostnameVerifier(hostnameVerifier);
+ handler.setSSLSocketFactory(sslSocketFactory);
+ return handler.dereference(aUrl, aContext);
+ }
+
+ /**
+ * Registers a handler for a protocol.
+ *
+ * @param aProtocol
+ * @param aHandler
+ * may be set to null to disable this protocol
+ */
+ public void registerHandler(String aProtocol, URLProtocolHandler aHandler) {
+ handlerMap.put(aProtocol.toLowerCase(), aHandler);
+ }
+
+ public static URLDereferencer getInstance() {
+ return instance;
+ }
+
+ protected void registerHandlers() {
+ URLProtocolHandler handler = new HTTPURLProtocolHandlerImpl();
+ for (String proto : HTTPURLProtocolHandlerImpl.PROTOCOLS) {
+ handlerMap.put(proto, handler);
+ }
+ }
+
+ public void setHostnameVerifier(HostnameVerifier hostnameVerifier) {
+ this.hostnameVerifier = hostnameVerifier;
+ }
+
+ public void setSSLSocketFactory(SSLSocketFactory socketFactory) {
+ this.sslSocketFactory = socketFactory;
+ }
+} \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URLDereferencerContext.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URLDereferencerContext.java
new file mode 100644
index 00000000..6befd5b3
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URLDereferencerContext.java
@@ -0,0 +1,27 @@
+/*
+* 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.utils.urldereferencer;
+
+public interface URLDereferencerContext {
+
+ /**
+ *
+ * @param key
+ * @return may return null
+ */
+ public Object getProperty(Object key);
+} \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URLProtocolHandler.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URLProtocolHandler.java
new file mode 100644
index 00000000..f886bd4e
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/bku/utils/urldereferencer/URLProtocolHandler.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.utils.urldereferencer;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLSocketFactory;
+
+
+public interface URLProtocolHandler {
+ /**
+ *
+ * @param aUrl
+ * @param aContext
+ * @return the streamdata of this url or null if the url cannot be resolved.
+ * @throws IOException
+ */
+ public StreamData dereference(String aUrl, URLDereferencerContext aContext) throws IOException;
+
+ public void setSSLSocketFactory(SSLSocketFactory socketFactory);
+
+ public void setHostnameVerifier(HostnameVerifier hostnameVerifier);
+} \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/dom/DOMUtils.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/dom/DOMUtils.java
new file mode 100644
index 00000000..32c7c5e6
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/dom/DOMUtils.java
@@ -0,0 +1,115 @@
+/*
+* 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.dom;
+
+import iaik.utils.Base64OutputStream;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.Text;
+import org.w3c.dom.bootstrap.DOMImplementationRegistry;
+import org.w3c.dom.ls.DOMImplementationLS;
+
+public final class DOMUtils {
+
+ /**
+ * DOM Implementation.
+ */
+ private static String DOM_LS_3_0 = "LS 3.0";
+
+ private static DOMImplementationLS domImplLS;
+
+ private DOMUtils() {
+ }
+
+ private static synchronized void ensureDOMImplementation() {
+
+ if (domImplLS == null) {
+
+ DOMImplementationRegistry registry;
+ try {
+ registry = DOMImplementationRegistry.newInstance();
+ } catch (Exception e) {
+ throw new RuntimeException("Failed to get DOMImplementationRegistry.");
+ }
+
+ domImplLS = (DOMImplementationLS) registry.getDOMImplementation(DOM_LS_3_0);
+ if (domImplLS == null) {
+ throw new RuntimeException("Failed to get DOMImplementation " + DOM_LS_3_0);
+ }
+
+ }
+
+ }
+
+ public static DOMImplementationLS getDOMImplementationLS() {
+
+ if (domImplLS == null) {
+ ensureDOMImplementation();
+ }
+
+ return domImplLS;
+ }
+
+ public static Document createDocument() {
+
+ // This does not work with the Xerces-J version (2.6.2) included in Java 6
+ //document = ((DOMImplementation) domImplLS).createDocument(null, null, null);
+ // Therefore we have to employ the good old DocumentBuilderFactory
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ DocumentBuilder db;
+ try {
+ db = dbf.newDocumentBuilder();
+ } catch (ParserConfigurationException e) {
+ throw new RuntimeException(e);
+ }
+ return db.newDocument();
+
+ }
+
+ public static Text createBase64Text(byte[] bytes, Document doc) throws IOException {
+
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ Base64OutputStream base64OutputStream = new Base64OutputStream(outputStream);
+ base64OutputStream.write(bytes);
+ base64OutputStream.flush();
+ return doc.createTextNode(outputStream.toString("ASCII"));
+
+ }
+
+ public static Text createBase64Text(InputStream bytes, Document doc) throws IOException {
+
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ Base64OutputStream base64OutputStream = new Base64OutputStream(outputStream, new byte[] {0xa});
+
+ byte[] b = new byte[2^8];
+ for(int l; (l = bytes.read(b)) != -1;) {
+ base64OutputStream.write(b, 0, l);
+ }
+
+ base64OutputStream.flush();
+ return doc.createTextNode(outputStream.toString("ASCII"));
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/CompressedIdentityLinkFactory.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/CompressedIdentityLinkFactory.java
new file mode 100644
index 00000000..31e5163a
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/CompressedIdentityLinkFactory.java
@@ -0,0 +1,416 @@
+/*
+* 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.idlink;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+import java.util.List;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.PropertyException;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.transform.Source;
+import javax.xml.transform.dom.DOMResult;
+
+import org.w3._2000._09.xmldsig_.KeyValueType;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+
+import at.buergerkarte.namespaces.personenbindung._20020506_.CompressedIdentityLinkType;
+import at.gv.e_government.reference.namespace.persondata._20020228_.AbstractPersonType;
+import at.gv.e_government.reference.namespace.persondata._20020228_.IdentificationType;
+import at.gv.e_government.reference.namespace.persondata._20020228_.PersonNameType;
+import at.gv.e_government.reference.namespace.persondata._20020228_.PhysicalPersonType;
+import at.gv.e_government.reference.namespace.persondata._20020228_.IdentificationType.Value;
+import at.gv.e_government.reference.namespace.persondata._20020228_.PersonNameType.FamilyName;
+import at.gv.egiz.idlink.ans1.CitizenPublicKey;
+import at.gv.egiz.idlink.ans1.IdentityLink;
+import at.gv.egiz.idlink.ans1.PersonData;
+import at.gv.egiz.idlink.ans1.PhysicalPersonData;
+import at.gv.egiz.marshal.MarshallerFactory;
+import at.gv.egiz.marshal.NamespacePrefixMapperImpl;
+import at.gv.egiz.xmldsig.KeyTypeNotSupportedException;
+import at.gv.egiz.xmldsig.KeyValueFactory;
+
+public class CompressedIdentityLinkFactory {
+
+ /**
+ * The instance returned by {@link #getInstance()}.
+ */
+ private static CompressedIdentityLinkFactory instance;
+
+ /**
+ * The <code>JAXBContext</code>.
+ */
+ private static JAXBContext jaxbContext;
+
+ /**
+ * The <code>KeyValueFactory</code>.
+ */
+ private static KeyValueFactory keyValueFactory;
+
+ /**
+ * Get an instance of this <code>CompressedIdentityLinkFactory</code>.
+ *
+ * @return an instance of this <code>CompressedIdentityLinkFactory</code>
+ */
+ public synchronized static CompressedIdentityLinkFactory getInstance() {
+ if (instance == null) {
+ instance = new CompressedIdentityLinkFactory();
+ }
+ return instance;
+ }
+
+ /**
+ * Private constructor.
+ */
+ private CompressedIdentityLinkFactory() {
+
+ keyValueFactory = new KeyValueFactory();
+
+ StringBuffer packageNames = new StringBuffer();
+ packageNames.append(at.gv.e_government.reference.namespace.persondata._20020228_.ObjectFactory.class.getPackage().getName());
+ packageNames.append(":");
+ packageNames.append(org.w3._2000._09.xmldsig_.ObjectFactory.class.getPackage().getName());
+ packageNames.append(":");
+ packageNames.append(org.w3._2001._04.xmldsig_more_.ObjectFactory.class.getPackage().getName());
+ packageNames.append(":");
+ packageNames.append(at.buergerkarte.namespaces.personenbindung._20020506_.ObjectFactory.class.getPackage().getName());
+
+ try {
+ jaxbContext = JAXBContext.newInstance(packageNames.toString());
+ } catch (JAXBException e) {
+ // we should not get an JAXBException initializing the JAXBContext
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ public IdentityLink createIdLink(CompressedIdentityLinkType compressedIdentityLinkType) {
+
+ // IssuerTemplate
+ String issuerTemplate = compressedIdentityLinkType.getIssuerTemplate();
+
+ // AssertionId
+ String assertionID = compressedIdentityLinkType.getAssertionID();
+
+ // IssueInstant
+ String issueInstant = compressedIdentityLinkType.getIssueInstant();
+
+ AbstractPersonType personDataType = compressedIdentityLinkType.getPersonData();
+
+ String baseId = null;
+
+ List<IdentificationType> identifications = personDataType.getIdentification();
+ for (IdentificationType identificationType : identifications) {
+ String type = identificationType.getType();
+ if ("urn:publicid:gv.at:baseid".equals(type)) {
+ baseId = identificationType.getValue().getValue();
+ }
+ }
+
+ String givenName = null;
+ String familyName = null;
+ String dateOfBirth = null;
+
+ if (personDataType instanceof PhysicalPersonType) {
+ PhysicalPersonType physicalPersonType = (PhysicalPersonType) personDataType;
+ PersonNameType name = physicalPersonType.getName();
+ List<String> givenNames = name.getGivenName();
+ if (!givenNames.isEmpty()) {
+ givenName = givenNames.get(0);
+ }
+ List<FamilyName> familyNames = name.getFamilyName();
+ if (!familyNames.isEmpty()) {
+ familyName = familyNames.get(0).getValue();
+ }
+ dateOfBirth = physicalPersonType.getDateOfBirth();
+ }
+
+ PhysicalPersonData physicalPersonData = new PhysicalPersonData(baseId, givenName, familyName, dateOfBirth);
+ PersonData personData = new PersonData(physicalPersonData);
+
+ int numKeys = compressedIdentityLinkType.getCitizenPublicKey().size();
+ CitizenPublicKey[] citizenPublicKeys = new CitizenPublicKey[numKeys];
+ for (int i = 0; i < numKeys;) {
+ citizenPublicKeys[i] = new CitizenPublicKey(++i);
+ }
+
+ byte[] signatureValue = compressedIdentityLinkType.getSignatureValue();
+ byte[] referenceDigest = compressedIdentityLinkType.getReferenceDigest();
+ byte[] referenceManifestDigest = compressedIdentityLinkType.getReferenceManifestDigest();
+ byte[] manifestReferenceDigest = compressedIdentityLinkType.getManifestReferenceDigest();
+
+ IdentityLink idLink = new IdentityLink(issuerTemplate, assertionID, issueInstant, personData, citizenPublicKeys, signatureValue);
+ idLink.setReferenceDigest(referenceDigest);
+ idLink.setReferenceManifestDigest(referenceManifestDigest);
+ idLink.setManifestReferenceDigest(manifestReferenceDigest);
+
+ return idLink;
+
+ }
+
+ /**
+ * Creates a new <code>CompressedIdentityLink</code> element from the given
+ * ASN.1 representation of an <code>idLink</code>.
+ *
+ * @param idLink
+ * the ASN.1 representation of an <code>IdentityLink</code>
+ * @param certificates
+ * a list of {@link X509Certificate}s containing the corresponding
+ * public keys
+ * @param domainId TODO
+ * @return a new <code>CompressedIdentityLink</code> element
+ *
+ * @throws NullPointerException
+ * if <code>idLink</code> or <code>certificates</code> is
+ * <code>null</code>
+ * @throws IllegalArgumentException
+ * if <code>idLink</code> references certificates not in the range
+ * of the <code>certificates</code> list
+ */
+ public JAXBElement<CompressedIdentityLinkType> createCompressedIdentityLink(
+ at.gv.egiz.idlink.ans1.IdentityLink idLink,
+ List<X509Certificate> certificates, String domainId) {
+
+ at.gv.e_government.reference.namespace.persondata._20020228_.ObjectFactory prFactory =
+ new at.gv.e_government.reference.namespace.persondata._20020228_.ObjectFactory();
+
+ at.buergerkarte.namespaces.personenbindung._20020506_.ObjectFactory pbFactory =
+ new at.buergerkarte.namespaces.personenbindung._20020506_.ObjectFactory();
+
+ org.w3._2000._09.xmldsig_.ObjectFactory dsFactory = new org.w3._2000._09.xmldsig_.ObjectFactory();
+
+ // PersonData
+ PhysicalPersonData __physicalPersonData = idLink.getPersonData()
+ .getPhysicalPerson();
+
+ Value identificationTypeValue = prFactory.createIdentificationTypeValue();
+ identificationTypeValue.setValue(__physicalPersonData.getBaseId());
+ IdentificationType identificationType = prFactory
+ .createIdentificationType();
+ identificationType.setValue(identificationTypeValue);
+ if (domainId != null) {
+ identificationType.setType(domainId);
+ } else {
+ identificationType.setType("urn:publicid:gv.at:baseid");
+ }
+
+ PersonNameType personNameType = prFactory.createPersonNameType();
+ FamilyName personNameTypeFamilyName = prFactory
+ .createPersonNameTypeFamilyName();
+ personNameTypeFamilyName.setValue(__physicalPersonData.getFamilyName());
+ personNameType.getFamilyName().add(personNameTypeFamilyName);
+ personNameType.getGivenName().add(__physicalPersonData.getGivenName());
+
+ PhysicalPersonType physicalPersonType = prFactory
+ .createPhysicalPersonType();
+ physicalPersonType.getIdentification().add(identificationType);
+ physicalPersonType.setName(personNameType);
+ physicalPersonType.setDateOfBirth(__physicalPersonData.getDateOfBirth());
+
+ // CompressedIdentityLink
+ CompressedIdentityLinkType compressedIdentityLinkType = pbFactory
+ .createCompressedIdentityLinkType();
+ compressedIdentityLinkType.setIssuerTemplate(idLink.getIssuerTemplate());
+ compressedIdentityLinkType.setAssertionID(idLink.getAssertionID());
+ compressedIdentityLinkType.setIssueInstant(idLink.getIssueInstant());
+ compressedIdentityLinkType.setPersonData(physicalPersonType);
+
+ // CitizenPublicKey
+ CitizenPublicKey[] __citizenPublicKeys = idLink.getCitizenPublicKeys();
+ for (CitizenPublicKey __citizenPublicKey : __citizenPublicKeys) {
+
+ X509Certificate certificate = certificates.get(__citizenPublicKey.getOnToken());
+ PublicKey publicKey = certificate.getPublicKey();
+
+ JAXBElement<?> keyValue;
+ try {
+ keyValue = keyValueFactory.createKeyValue(publicKey);
+ } catch (KeyTypeNotSupportedException e) {
+ // TODO: handle exception properly
+ throw new RuntimeException(e);
+ }
+
+ KeyValueType keyValueType = dsFactory.createKeyValueType();
+ keyValueType.getContent().add(keyValue);
+
+ compressedIdentityLinkType.getCitizenPublicKey().add(keyValueType);
+ }
+
+ compressedIdentityLinkType.setSignatureValue(idLink.getSignatureValue());
+ compressedIdentityLinkType.setReferenceDigest(idLink.getReferenceDigest());
+ compressedIdentityLinkType.setReferenceManifestDigest(idLink
+ .getReferenceManifestDigest());
+ compressedIdentityLinkType.setManifestReferenceDigest(idLink
+ .getManifestReferenceDigest());
+ JAXBElement<CompressedIdentityLinkType> compressedIdentityLink = pbFactory
+ .createCompressedIdentityLink(compressedIdentityLinkType);
+
+ return compressedIdentityLink;
+
+ }
+
+ /**
+ * Marshall the given <code>compressedIdentityLink</code> into a DOM document
+ * with the given Nodes as <code>parent</code> and <code>nextSibling</code>
+ * nodes.
+ *
+ * @param compressedIdentityLink
+ * the <code>CompressedIdentityLink</code> element
+ * @param parent
+ * the parent node
+ * @param nextSibling
+ * the next sibling node (may be <code>null</code>)
+ * @param applyWorkarounds
+ * apply workarounds as spefiyed by
+ * {@link #applyWorkarounds(Element, int)}
+ *
+ * @throws JAXBException
+ * if an unexpected error occurs while marshalling
+ * @throws NullPointerException
+ * if <code>compressdIdentityLink</code> or <code>parent</code> is
+ * <code>null</code>
+ */
+ public void marshallCompressedIdentityLink(
+ JAXBElement<CompressedIdentityLinkType> compressedIdentityLink,
+ Node parent, Node nextSibling, boolean applyWorkarounds) throws JAXBException {
+
+ DOMResult result = new DOMResult(parent, nextSibling);
+
+
+ try {
+ Marshaller marshaller = MarshallerFactory.createMarshaller(jaxbContext);
+
+ marshaller.marshal(compressedIdentityLink, result);
+ } catch (PropertyException e) {
+ throw new RuntimeException(e);
+ }
+
+ if (applyWorkarounds) {
+ Element element = (Element) ((nextSibling != null)
+ ? nextSibling.getPreviousSibling()
+ : parent.getFirstChild());
+ applyWorkarounds(element, 76);
+ }
+
+ }
+
+ @SuppressWarnings("unchecked")
+ public CompressedIdentityLinkType unmarshallCompressedIdentityLink(Source source) throws JAXBException {
+
+ Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+
+ return ((JAXBElement<CompressedIdentityLinkType>) unmarshaller.unmarshal(source)).getValue();
+
+ }
+
+ /**
+ * Apply some workarounds to the given CompressedIdentityLink
+ * <code>element</code> to achieve compatibility with IdentityLink
+ * transformation stylesheets that have been designed for a (buggy) form of
+ * the CompressedIdentityLink as produced by a well-known citizen card
+ * environment implementation.
+ *
+ * <ol>
+ * <li>Replace the attribute node <code>URN</code> of the
+ * <code>NamedCurve</code> element of an <code>ECDSAKeyValue</code> element by
+ * a child text-node with the same content.</li>
+ * <li>Replace the attribute nodes <code>Value</code> of the <code>X</code>
+ * and <code>Y</code> elements of an <code>ECDSAKeyValue</code> element by a
+ * child text-node with the same content.</li>
+ * <li>Insert &quot;\n&quot; at <code>base64LineLength</code> into the Base64
+ * content of the <code>Modulus</code> element of an <code>RSAKeyValue</code>
+ * element.
+ * </ol>
+ *
+ * @param element
+ * the <code>CompressedIdentityLink</code> element
+ * @param base64LineLength
+ * the line length of Base64 content
+ */
+ public void applyWorkarounds(Element element, int base64LineLength) {
+
+ Document document = element.getOwnerDocument();
+
+ NodeList nodeList = element.getElementsByTagNameNS(
+ "http://www.w3.org/2001/04/xmldsig-more#", "NamedCurve");
+ for (int i = 0; i < nodeList.getLength(); i++) {
+ Node ecdsaNameCurve = nodeList.item(i);
+ Attr attrNode = ((Element) ecdsaNameCurve).getAttributeNodeNS(null,
+ "URN");
+ ecdsaNameCurve
+ .appendChild(document.createTextNode(attrNode.getValue()));
+ ((Element) ecdsaNameCurve).removeAttributeNode(attrNode);
+ }
+ nodeList = document.getElementsByTagNameNS(
+ "http://www.w3.org/2001/04/xmldsig-more#", "X");
+ for (int i = 0; i < nodeList.getLength(); i++) {
+ Node x = nodeList.item(i);
+ Attr attrNode = ((Element) x).getAttributeNodeNS(null, "Value");
+ x.appendChild(document.createTextNode(attrNode.getValue()));
+ ((Element) x).removeAttributeNode(attrNode);
+ }
+ nodeList = document.getElementsByTagNameNS(
+ "http://www.w3.org/2001/04/xmldsig-more#", "Y");
+ for (int i = 0; i < nodeList.getLength(); i++) {
+ Node y = nodeList.item(i);
+ Attr attrNode = ((Element) y).getAttributeNodeNS(null, "Value");
+ y.appendChild(document.createTextNode(attrNode.getValue()));
+ ((Element) y).removeAttributeNode(attrNode);
+ }
+
+ if (base64LineLength > 0) {
+ nodeList = document.getElementsByTagNameNS(
+ "http://www.w3.org/2000/09/xmldsig#", "Modulus");
+ for (int i = 0; i < nodeList.getLength(); i++) {
+ Node modulus = nodeList.item(i);
+ String value = ((Element) modulus).getTextContent();
+ BufferedReader reader = new BufferedReader(new InputStreamReader(
+ new ByteArrayInputStream(value.getBytes())));
+ char[] buff = new char[base64LineLength];
+ StringBuffer newValue = new StringBuffer();
+ int found = 0;
+ try {
+ while ((found = reader.read(buff)) > 0) {
+ newValue.append(buff, 0, found);
+ if (found == base64LineLength)
+ newValue.append('\n');
+ }
+ } catch (IOException e) {
+ // this should never happen, as we are reading from a ByteArrayInputStream
+ throw new RuntimeException(e);
+ }
+ ((Element) modulus).setTextContent(newValue.toString());
+ }
+
+ }
+
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/IdentityLinkFactory.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/IdentityLinkFactory.java
new file mode 100644
index 00000000..38597446
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/IdentityLinkFactory.java
@@ -0,0 +1,428 @@
+/*
+* 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.idlink;
+
+import iaik.xml.crypto.XmldsigMore;
+
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.StringWriter;
+import java.math.BigInteger;
+import java.nio.charset.Charset;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.TimeZone;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.PropertyException;
+import javax.xml.crypto.MarshalException;
+import javax.xml.crypto.dsig.CanonicalizationMethod;
+import javax.xml.crypto.dsig.DigestMethod;
+import javax.xml.crypto.dsig.Manifest;
+import javax.xml.crypto.dsig.Reference;
+import javax.xml.crypto.dsig.SignatureMethod;
+import javax.xml.crypto.dsig.SignedInfo;
+import javax.xml.crypto.dsig.Transform;
+import javax.xml.crypto.dsig.XMLObject;
+import javax.xml.crypto.dsig.XMLSignature;
+import javax.xml.crypto.dsig.XMLSignatureException;
+import javax.xml.crypto.dsig.XMLSignatureFactory;
+import javax.xml.crypto.dsig.dom.DOMSignContext;
+import javax.xml.crypto.dsig.keyinfo.KeyInfo;
+import javax.xml.crypto.dsig.keyinfo.KeyInfoFactory;
+import javax.xml.crypto.dsig.keyinfo.X509Data;
+import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec;
+import javax.xml.crypto.dsig.spec.TransformParameterSpec;
+import javax.xml.crypto.dsig.spec.XPathFilterParameterSpec;
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMResult;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import oasis.names.tc.saml._1_0.assertion.AssertionType;
+import oasis.names.tc.saml._1_0.assertion.AttributeStatementType;
+import oasis.names.tc.saml._1_0.assertion.AttributeType;
+import oasis.names.tc.saml._1_0.assertion.SubjectConfirmationType;
+import oasis.names.tc.saml._1_0.assertion.SubjectType;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+import at.gv.e_government.reference.namespace.persondata._20020228_.AbstractPersonType;
+import at.gv.e_government.reference.namespace.persondata._20020228_.IdentificationType;
+import at.gv.e_government.reference.namespace.persondata._20020228_.PersonNameType;
+import at.gv.e_government.reference.namespace.persondata._20020228_.PhysicalPersonType;
+import at.gv.e_government.reference.namespace.persondata._20020228_.IdentificationType.Value;
+import at.gv.e_government.reference.namespace.persondata._20020228_.PersonNameType.FamilyName;
+import at.gv.egiz.marshal.MarshallerFactory;
+import at.gv.egiz.marshal.NamespacePrefixMapperImpl;
+import at.gv.egiz.xmldsig.KeyTypeNotSupportedException;
+import at.gv.egiz.xmldsig.KeyValueFactory;
+import oasis.names.tc.saml._1_0.assertion.AnyType;
+
+public class IdentityLinkFactory {
+
+ private static Log log = LogFactory.getLog(IdentityLinkFactory.class);
+
+ /**
+ * The instance returned by {@link #getInstance()}.
+ */
+ private static IdentityLinkFactory instance;
+
+ /**
+ * The <code>JAXBContext</code>.
+ */
+ private static JAXBContext jaxbContext;
+
+ /**
+ * The <code>KeyValueFactory</code>.
+ */
+ private static KeyValueFactory keyValueFactory;
+
+ /**
+ * Get an instance of this <code>CompressedIdentityLinkFactory</code>.
+ *
+ * @return an instance of this <code>CompressedIdentityLinkFactory</code>
+ */
+ public synchronized static IdentityLinkFactory getInstance() {
+ if (instance == null) {
+ instance = new IdentityLinkFactory();
+ }
+ return instance;
+ }
+
+ /**
+ * Private constructor.
+ */
+ private IdentityLinkFactory() {
+
+ keyValueFactory = new KeyValueFactory();
+
+ StringBuffer packageNames = new StringBuffer();
+ packageNames.append(at.gv.e_government.reference.namespace.persondata._20020228_.ObjectFactory.class.getPackage().getName());
+ packageNames.append(":");
+ packageNames.append(org.w3._2000._09.xmldsig_.ObjectFactory.class.getPackage().getName());
+ packageNames.append(":");
+ packageNames.append(org.w3._2001._04.xmldsig_more_.ObjectFactory.class.getPackage().getName());
+ packageNames.append(":");
+ packageNames.append(at.buergerkarte.namespaces.personenbindung._20020506_.ObjectFactory.class.getPackage().getName());
+ packageNames.append(":");
+ packageNames.append(oasis.names.tc.saml._1_0.assertion.ObjectFactory.class.getPackage().getName());
+
+ try {
+ jaxbContext = JAXBContext.newInstance(packageNames.toString());
+ } catch (JAXBException e) {
+ // we should not get an JAXBException initializing the JAXBContext
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ public JAXBElement<AssertionType> createAssertion(String assertionId,
+ Date issueInstant, String issuer, long majorVersion, long minorVersion, AttributeStatementType attributeStatement) {
+
+ oasis.names.tc.saml._1_0.assertion.ObjectFactory asFactory =
+ new oasis.names.tc.saml._1_0.assertion.ObjectFactory();
+
+ AssertionType assertionType = asFactory.createAssertionType();
+
+ assertionType.setAssertionID(assertionId);
+
+ GregorianCalendar gregorianCalendar = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
+ gregorianCalendar.setTime(issueInstant);
+ try {
+ DatatypeFactory datatypeFactory = DatatypeFactory.newInstance();
+ assertionType.setIssueInstant(datatypeFactory.newXMLGregorianCalendar(gregorianCalendar));
+ } catch (DatatypeConfigurationException e) {
+ throw new RuntimeException(e);
+ }
+
+ assertionType.setIssuer(issuer);
+
+ assertionType.setMajorVersion(BigInteger.valueOf(majorVersion));
+ assertionType.setMinorVersion(BigInteger.valueOf(minorVersion));
+
+ assertionType.getStatementOrSubjectStatementOrAuthenticationStatement().add(attributeStatement);
+
+ return asFactory.createAssertion(assertionType);
+
+ }
+
+ public AttributeStatementType createAttributeStatement(String idValue, String idType,
+ String givenName, String familyName, String dateOfBirth,
+ PublicKey[] publicKeys) throws KeyTypeNotSupportedException {
+
+ oasis.names.tc.saml._1_0.assertion.ObjectFactory asFactory =
+ new oasis.names.tc.saml._1_0.assertion.ObjectFactory();
+
+ at.gv.e_government.reference.namespace.persondata._20020228_.ObjectFactory prFactory =
+ new at.gv.e_government.reference.namespace.persondata._20020228_.ObjectFactory();
+
+ AttributeStatementType attributeStatementType = asFactory.createAttributeStatementType();
+
+ // saml:Subject
+ SubjectConfirmationType subjectConfirmationType = asFactory.createSubjectConfirmationType();
+
+ subjectConfirmationType.getConfirmationMethod().add("urn:oasis:names:tc:SAML:1.0:cm:sender-vouches");
+
+ // pr:Person
+ Value identificationTypeValue = prFactory.createIdentificationTypeValue();
+ identificationTypeValue.setValue(idValue);
+ IdentificationType identificationType = prFactory
+ .createIdentificationType();
+ identificationType.setValue(identificationTypeValue);
+ identificationType.setType(idType);
+
+ PersonNameType personNameType = prFactory.createPersonNameType();
+ FamilyName personNameTypeFamilyName = prFactory
+ .createPersonNameTypeFamilyName();
+ personNameTypeFamilyName.setValue(familyName);
+ personNameTypeFamilyName.setPrimary("undefined");
+ personNameType.getFamilyName().add(personNameTypeFamilyName);
+ personNameType.getGivenName().add(givenName);
+
+ PhysicalPersonType physicalPersonType = prFactory
+ .createPhysicalPersonType();
+ physicalPersonType.getIdentification().add(identificationType);
+ physicalPersonType.setName(personNameType);
+ physicalPersonType.setDateOfBirth(dateOfBirth);
+ JAXBElement<AbstractPersonType> physicalPerson = prFactory.createPerson(physicalPersonType);
+
+ AnyType personType = asFactory.createAnyType();
+ personType.getContent().add(physicalPerson);
+ subjectConfirmationType.setSubjectConfirmationData(personType);
+
+ JAXBElement<SubjectConfirmationType> subjectConfirmation = asFactory.createSubjectConfirmation(subjectConfirmationType);
+
+ SubjectType subjectType = asFactory.createSubjectType();
+ subjectType.getContent().add(subjectConfirmation);
+
+ attributeStatementType.setSubject(subjectType);
+
+ // saml:Attribute CitizenPublicKey
+ for (int i = 0; i < publicKeys.length; i++) {
+
+ JAXBElement<?> createKeyValue = keyValueFactory.createKeyValue(publicKeys[i]);
+ AttributeType attributeType = asFactory.createAttributeType();
+ attributeType.setAttributeName("CitizenPublicKey");
+ attributeType.setAttributeNamespace("urn:publicid:gv.at:namespaces:identitylink:1.2");
+ AnyType attributeValueType = asFactory.createAnyType();
+ attributeValueType.getContent().add(createKeyValue);
+ attributeType.getAttributeValue().add(attributeValueType);
+
+ attributeStatementType.getAttribute().add(attributeType);
+
+ }
+
+ return attributeStatementType;
+ }
+
+ /**
+ * Marshall the given <code>compressedIdentityLink</code> into a DOM document
+ * with the given Nodes as <code>parent</code> and <code>nextSibling</code>
+ * nodes.
+ *
+ * @param identityLink
+ * the <code>CompressedIdentityLink</code> element
+ * @param parent
+ * the parent node
+ * @param nextSibling
+ * the next sibling node (may be <code>null</code>)
+ * @param applyWorkarounds
+ * apply workarounds as spefiyed by
+ * {@link #applyWorkarounds(Element, int)}
+ *
+ * @throws JAXBException
+ * if an unexpected error occurs while marshalling
+ * @throws NullPointerException
+ * if <code>compressdIdentityLink</code> or <code>parent</code> is
+ * <code>null</code>
+ */
+ public void marshallIdentityLink(
+ JAXBElement<AssertionType> identityLink,
+ Node parent, Node nextSibling) throws JAXBException {
+
+ DOMResult result = new DOMResult(parent, nextSibling);
+
+ try {
+ Marshaller marshaller = MarshallerFactory.createMarshaller(jaxbContext, true);
+
+ marshaller.marshal(identityLink, result);
+ } catch (PropertyException e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ public void signIdentityLink(Element assertion, X509Certificate certificate,
+ PrivateKey key) throws NoSuchAlgorithmException,
+ InvalidAlgorithmParameterException, XMLSignatureException,
+ MarshalException {
+
+ XMLSignatureFactory signatureFactory = XMLSignatureFactory.getInstance();
+
+ KeyInfoFactory keyInfoFactory = KeyInfoFactory.getInstance();
+
+ List<Reference> references = new ArrayList<Reference>();
+
+ // Reference #1
+
+ Map<String, String> prefixMap = new HashMap<String, String>();
+ prefixMap.put("pr", "http://reference.e-government.gv.at/namespace/persondata/20020228#");
+ List<Transform> transforms1 = new ArrayList<Transform>();
+ transforms1.add(signatureFactory.newTransform(Transform.XPATH,
+ new XPathFilterParameterSpec(
+ "not(ancestor-or-self::pr:Identification)", prefixMap)));
+ transforms1.add(signatureFactory.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null));
+ DigestMethod digestMethod1 = signatureFactory.newDigestMethod(DigestMethod.SHA1, null);
+ references.add(signatureFactory.newReference("", digestMethod1, transforms1, null, null));
+
+ // Reference (Manifest)
+
+ DigestMethod digestMethod2 = signatureFactory.newDigestMethod(DigestMethod.SHA1, null);
+ references.add(signatureFactory.newReference("#manifest", digestMethod2, null, Manifest.TYPE, null));
+
+ CanonicalizationMethod canonicalizationMethod = signatureFactory
+ .newCanonicalizationMethod(CanonicalizationMethod.EXCLUSIVE,
+ (C14NMethodParameterSpec) null);
+
+ SignatureMethod signatureMethod;
+ String algorithm = key.getAlgorithm();
+ if ("RSA".equalsIgnoreCase(algorithm)) {
+ signatureMethod = signatureFactory.newSignatureMethod(SignatureMethod.RSA_SHA1, null);
+ } else if ("ECDSA".equalsIgnoreCase(algorithm) || "EC".equalsIgnoreCase(algorithm)) {
+ signatureMethod = signatureFactory.newSignatureMethod(XmldsigMore.SIGNATURE_ECDSA_SHA1, null);
+ } else if ("DSA".equalsIgnoreCase(algorithm)) {
+ signatureMethod = signatureFactory.newSignatureMethod(SignatureMethod.DSA_SHA1, null);
+ } else {
+ throw new NoSuchAlgorithmException("Algorithm '" + algorithm + "' not supported.");
+ }
+
+ SignedInfo signedInfo = signatureFactory.newSignedInfo(canonicalizationMethod, signatureMethod, references);
+
+
+ X509Data x509Data = keyInfoFactory.newX509Data(Collections.singletonList(certificate));
+ KeyInfo keyInfo = keyInfoFactory.newKeyInfo(Collections.singletonList(x509Data));
+
+ // Manifest
+
+ Map<String, String> manifestPrefixMap = new HashMap<String, String>();
+ manifestPrefixMap.put("dsig", XMLSignature.XMLNS);
+ List<Transform> manifestTransforms = Collections
+ .singletonList(signatureFactory.newTransform(Transform.XPATH,
+ new XPathFilterParameterSpec(
+ "not(ancestor-or-self::dsig:Signature)", manifestPrefixMap)));
+ Reference manifestReference = signatureFactory.newReference("",
+ signatureFactory.newDigestMethod(DigestMethod.SHA1, null),
+ manifestTransforms, null, null);
+
+ Manifest manifest = signatureFactory.newManifest(Collections
+ .singletonList(manifestReference), "manifest");
+
+ XMLObject xmlObject = signatureFactory.newXMLObject(Collections
+ .singletonList(manifest), null, null, null);
+
+ XMLSignature xmlSignature = signatureFactory.newXMLSignature(signedInfo,
+ keyInfo, Collections.singletonList(xmlObject), null, null);
+
+ DOMSignContext signContext = new DOMSignContext(key, assertion);
+
+ if (log.isTraceEnabled()) {
+ signContext.setProperty("javax.xml.crypto.dsig.cacheReference", Boolean.TRUE);
+ }
+
+ xmlSignature.sign(signContext);
+
+ if (log.isDebugEnabled()) {
+
+ try {
+
+ TransformerFactory tf = TransformerFactory.newInstance();
+ Transformer transformer = tf.newTransformer();
+
+ StringWriter writer = new StringWriter();
+
+ transformer.transform(new DOMSource(assertion), new StreamResult(writer));
+
+ log.debug(writer.toString());
+
+ } catch (Exception e) {
+ log.debug(e);
+ }
+
+ }
+
+ if (log.isTraceEnabled()) {
+
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("Digest input data:\n\n");
+
+ try {
+
+ Iterator<Reference> refs = references.iterator();
+ for (int i = 0; refs.hasNext(); i++) {
+ Reference reference = (Reference) refs.next();
+ sb.append("Reference " + i + "\n");
+
+ Reader reader = new InputStreamReader(reference
+ .getDigestInputStream(), Charset.forName("UTF-8"));
+ char c[] = new char[512];
+ for (int l; (l = reader.read(c)) != -1;) {
+ sb.append(c, 0, l);
+ }
+ sb.append("\n");
+ }
+
+ sb.append("Manifest Reference\n");
+
+ Reader reader = new InputStreamReader(manifestReference
+ .getDigestInputStream(), Charset.forName("UTF-8"));
+ char c[] = new char[512];
+ for (int l; (l = reader.read(c)) != -1;) {
+ sb.append(c, 0, l);
+ }
+
+ } catch (Exception e) {
+ sb.append(e.getMessage());
+ }
+
+ log.trace(sb.toString());
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/IdentityLinkTransformer.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/IdentityLinkTransformer.java
new file mode 100644
index 00000000..8bee5fa4
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/IdentityLinkTransformer.java
@@ -0,0 +1,188 @@
+/*
+* 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.idlink;
+
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Templates;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.sax.SAXTransformerFactory;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
+import org.w3c.dom.Text;
+
+import at.gv.egiz.bku.utils.urldereferencer.StreamData;
+import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer;
+
+public class IdentityLinkTransformer {
+
+ protected static Log log = LogFactory.getLog(IdentityLinkTransformer.class);
+
+ /**
+ * The transformer factory.
+ */
+ private static SAXTransformerFactory factory;
+
+ /**
+ * The instance to be returned by {@link #getInstance()}.
+ */
+ private static IdentityLinkTransformer instance;
+
+ /**
+ * Returns an instance of this <code>IdentityLinkTransfomer</code>.
+ *
+ * @return an instance of this <code>IdentityLinkTransformer</code>
+ */
+ public static IdentityLinkTransformer getInstance() {
+ if (instance == null) {
+ instance = new IdentityLinkTransformer();
+ factory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
+ }
+ return instance;
+ }
+
+ /**
+ * Sets the given <code>domainIdentifier</code> on the corresponding
+ * node of the given <code>idLink</code>.
+ * <p>This method may be used to cope with a flaw in the IssuerTemplate-Stylesheets
+ * used to transform a <code>CompressedIdentitiyLink</code> into an
+ * <code>IdentityLink</code>. Some IssuerTemplate-Stylesheets do not
+ * consider the <code>pr:Type</code> element value of the
+ * <code>CompressedIdentityLink</code> and render a <code>pr:Type</code>
+ * element value of <code>urn:publicid:gv.at:baseid</code>
+ * into the <code>IdentityLink</code> structure. This method allows to
+ * set the <code>pr:Type</code> element value on the given <code>idLink</code>
+ * after the transformation.
+ * </p>
+ *
+ * @param idLink the <code>IdentityLink</code> element or one of it's ancestors.
+ * Must not be <code>null</code>.
+ *
+ * @param domainIdentifier the value to be set for the <code>pr:Type</code> element
+ *
+ * @throws NullPointerException if <code>idLink</code> is <code>null</code>.
+ */
+ public static void setDomainIdentifier(Node idLink, String domainIdentifier) {
+
+ Element element;
+ if (idLink instanceof Element) {
+ element = (Element) idLink;
+ } else if (idLink instanceof Document) {
+ element = ((Document) idLink).getDocumentElement();
+ } else if (idLink != null) {
+ Document document = idLink.getOwnerDocument();
+ element = document.getDocumentElement();
+ } else {
+ throw new NullPointerException("Parameter 'idLink' must no be null.");
+ }
+
+ NodeList nodeList = element.getElementsByTagNameNS(
+ "http://reference.e-government.gv.at/namespace/persondata/20020228#",
+ "Type");
+
+ for (int i = 0; i < nodeList.getLength(); i++) {
+ if (nodeList.item(i) instanceof Element) {
+ Element typeElement = (Element) nodeList.item(i);
+ NodeList children = typeElement.getChildNodes();
+ for (int j = 0; j < children.getLength(); j++) {
+ if (children.item(j) instanceof Text) {
+ ((Text) children.item(j)).setNodeValue(domainIdentifier);
+ }
+ }
+ }
+ }
+
+ }
+
+ /**
+ * Mapping of issuer template URIs to transformation templates.
+ */
+ private Map<String, Templates> templates = new HashMap<String, Templates>();
+
+ /**
+ * Private constructor.
+ */
+ private IdentityLinkTransformer() {
+ }
+
+ /**
+ * Transforms an identity link <code>source</code> to <code>result</code> with
+ * the given issuer template from the <code>stylesheetURL</code>.
+ *
+ * @param stylesheetURL
+ * the URL of the issuer template to be used for transformation
+ * @param source
+ * the compressed identity link source
+ * @param result
+ * the transformed identity link result
+ *
+ * @throws MalformedURLException
+ * if the given <code>stylesheetURL</code> is not a valid
+ * <code>http</code> or <code>https</code> URL.
+ * @throws IOException
+ * if dereferencing the <code>stylesheetURL</code> fails.
+ * @throws TransformerConfigurationException
+ * if creating a transformation template from the dereferenced
+ * stylesheet fails.
+ * @throws TransformerException
+ * if transforming the identity link fails.
+ */
+ public void transformIdLink(String stylesheetURL, Source source, Result result) throws IOException, TransformerException {
+
+ Templates templ = templates.get(stylesheetURL);
+
+ if (templ == null) {
+
+ // TODO: implement stylesheet cache
+ URL url = new URL(stylesheetURL);
+
+ if (!"http".equalsIgnoreCase(url.getProtocol()) && !"https".equalsIgnoreCase(url.getProtocol())) {
+ throw new MalformedURLException("Protocol " + url.getProtocol() + " not supported for IssuerTemplate URL.");
+ }
+
+ URLDereferencer dereferencer = URLDereferencer.getInstance();
+ StreamData data = dereferencer.dereference(url.toExternalForm(), null);
+
+ log.trace("Trying to create issuer template.");
+ templ = factory.newTemplates(new StreamSource(data.getStream()));
+ log.trace("Successfully created issuer template");
+
+ templates.put(stylesheetURL, templ);
+
+ }
+
+ Transformer transformer = templ.newTransformer();
+
+ transformer.transform(source, result);
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/CitizenPublicKey.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/CitizenPublicKey.java
new file mode 100644
index 00000000..c32cf2b9
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/CitizenPublicKey.java
@@ -0,0 +1,92 @@
+/*
+* 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.idlink.ans1;
+
+import java.math.BigInteger;
+
+import iaik.asn1.*;
+
+/**
+ * This class implements the ASN.1 representation of the
+ * <code>CitizenPublicKey</code> of a compressed identity link.
+ *
+ * <pre>CitizenPublicKey ::= CHOICE {
+ onToken [0] INTEGER,
+ referenceURL [1] UTF8String,
+ x509Data [2] SubjectPublicKeyInfo
+}
+</pre>
+ *
+ * @author mivkovic@egiz.gv.at, mcentner@egiz.gv.at
+ */
+public class CitizenPublicKey implements ASN1Type {
+
+ /**
+ * <code>onToken</code>
+ */
+ private int onToken; // INTEGER
+
+ /**
+ * Creates a new <code>CitizenPublicKey</code> with the given
+ * <code>onToken</code> value.
+ *
+ * @param onToken
+ */
+ public CitizenPublicKey(int onToken) {
+ this.onToken = onToken;
+ }
+
+ /**
+ * Creates a new <code>CitizenPublicKey</code> from the given ASN.1 representation.
+ *
+ * @param obj
+ * @throws CodingException
+ */
+ public CitizenPublicKey(ASN1Object obj) throws CodingException {
+ decode(obj);
+ }
+
+ @Override
+ public void decode(ASN1Object obj) throws CodingException {
+ try {
+ BigInteger Value = (BigInteger)(obj.getValue());
+ onToken = Value.intValue();
+ } catch (Exception ex) {
+ throw new CodingException(ex.toString());
+ }
+ }
+
+ @Override
+ public ASN1Object toASN1Object() {
+ INTEGER ot = new INTEGER(onToken);
+ return ot;
+ }
+
+ /**
+ * Returns the DER encoding of this <code>CitizenPublicKey</code>.
+ *
+ * @return the DER encoding of this <code>CitizenPublicKey</code>
+ */
+ public byte[] getEncoded() {
+ return DerCoder.encode(toASN1Object());
+ }
+
+ public int getOnToken() {
+ return onToken;
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/IdentityLink.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/IdentityLink.java
new file mode 100644
index 00000000..37e4b240
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/IdentityLink.java
@@ -0,0 +1,315 @@
+/*
+* 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.idlink.ans1;
+
+import iaik.asn1.ASN1Object;
+import iaik.asn1.ASN1Type;
+import iaik.asn1.BIT_STRING;
+import iaik.asn1.CON_SPEC;
+import iaik.asn1.CodingException;
+import iaik.asn1.DerCoder;
+import iaik.asn1.INTEGER;
+import iaik.asn1.SEQUENCE;
+import iaik.asn1.UTF8String;
+
+/**
+ * This class impelments an ASN.1 representation of the compressed <code>IdentiyLink</code>.
+ * <pre>
+PersonenBindung ::= SEQUENCE {
+ version INTEGER,
+ issuerTemplate UTF8String,
+ assertionID UTF8String,
+ issueInstant UTF8String,
+ personData PersonData,
+ citizenPublicKey SEQUENCE SIZE (1..MAX) OF CitizenPublicKey,
+ signatureValue BIT STRING,
+ referenceDigest [0] BIT STRING OPTIONAL,
+ referenceManifestDigest [1] BIT STRING OPTIONAL,
+ manifestReferenceDigest [2] BIT STRING OPTIONAL
+}
+</pre>
+ *
+ * @author mivkovic@egiz.gv.at, mcentner@egiz.gv.at
+ */
+public class IdentityLink implements ASN1Type {
+
+ private int version = 1; // INTEGER
+ private String issuerTemplate; // UTF8String
+ private String assertionID; // UTF8String
+ private String issueInstant; // UTF8String
+ private PersonData personData; // PersonData
+ private CitizenPublicKey[] citizenPublicKeys; // SEQUENCE SIZE (1..MAX) OF
+ private byte[] signatureValue; // BIT STRING
+ private byte[] referenceDigest; // BIT STRING OPTIONAL
+ private byte[] referenceManifestDigest; // BIT STRING OPTIONAL
+ private byte[] manifestReferenceDigest; // BIT STRING OPTIONAL
+
+ /**
+ * Creates a new <code>IdentityLink</code> with the given
+ * <code>issuerTemplate</code>, <code>assertionID</code>,
+ * <code>issueInstant</code>, <code>personData</code>,
+ * <code>citizenPublicKeys</code> and <code>signatureValue</code>.
+ *
+ * @param issuerTemplate
+ * @param assertionID
+ * @param issueInstant
+ * @param personData
+ * @param citizenPublicKeys
+ * @param signatureValue
+ */
+ public IdentityLink(String issuerTemplate, String assertionID,
+ String issueInstant, PersonData personData,
+ CitizenPublicKey[] citizenPublicKeys, byte[] signatureValue) {
+ this.issuerTemplate = issuerTemplate;
+ this.assertionID = assertionID;
+ this.issueInstant = issueInstant;
+ this.personData = personData;
+ this.citizenPublicKeys = citizenPublicKeys;
+ this.signatureValue = signatureValue;
+ }
+
+ /**
+ * Create a new IdentityLink from an ASN1Object.
+ *
+ * @param identiyLink
+ * @throws CodingException
+ */
+ public IdentityLink(ASN1Object identiyLink) throws CodingException {
+ decode(identiyLink);
+ }
+
+ @Override
+ public void decode(ASN1Object obj) throws CodingException {
+ issuerTemplate = (String) ((ASN1Object) obj.getComponentAt(1)).getValue();
+ assertionID = (String) ((ASN1Object) obj.getComponentAt(2)).getValue();
+ issueInstant = (String) ((ASN1Object) obj.getComponentAt(3)).getValue();
+
+ if (((CON_SPEC) obj.getComponentAt(4)).getAsnType().getTag() == 0)
+ personData = new PersonData((ASN1Object) obj.getComponentAt(4).getValue());
+ else {
+ throw new CodingException("CorporateBodyData currently not supported.");
+ }
+
+ SEQUENCE publicKeySequence = (SEQUENCE) obj.getComponentAt(5);
+ int anz = publicKeySequence.countComponents();
+ citizenPublicKeys = new CitizenPublicKey[anz];
+ for (int i = 0; i < citizenPublicKeys.length; i++) {
+ CON_SPEC tmp = (CON_SPEC) publicKeySequence.getComponentAt(i);
+ if (tmp.getAsnType().getTag() == 0) {
+ citizenPublicKeys[i] = new CitizenPublicKey((ASN1Object) tmp.getValue());
+ } else {
+ throw new CodingException(
+ "Currently only PublicKeys on token are supported.");
+ }
+ }
+
+ signatureValue = (byte[]) ((ASN1Object) obj.getComponentAt(6)).getValue();
+
+ for (int i = 7; i < obj.countComponents(); i++) {
+ CON_SPEC tmp = (CON_SPEC) obj.getComponentAt(i);
+ switch (tmp.getAsnType().getTag()) {
+ case 0:
+ referenceDigest = (byte[]) ((BIT_STRING) tmp.getValue()).getValue();
+ break;
+ case 1:
+ referenceManifestDigest = (byte[]) ((BIT_STRING) tmp.getValue())
+ .getValue();
+ break;
+ case 2:
+ manifestReferenceDigest = (byte[]) ((BIT_STRING) tmp.getValue())
+ .getValue();
+ break;
+ }
+
+ }
+
+ }
+
+ @Override
+ public ASN1Object toASN1Object() {
+ SEQUENCE pb = new SEQUENCE();
+ pb.addComponent(new INTEGER(version));
+ pb.addComponent(new UTF8String(issuerTemplate));
+ pb.addComponent(new UTF8String(assertionID));
+ pb.addComponent(new UTF8String(issueInstant));
+
+ pb.addComponent(new CON_SPEC(0, personData.toASN1Object()));
+ SEQUENCE seq = new SEQUENCE();
+ for (int i = 0; i < citizenPublicKeys.length; i++) {
+ seq.addComponent(new CON_SPEC(0, citizenPublicKeys[i].toASN1Object()));
+ }
+ pb.addComponent(seq);
+ pb.addComponent(new BIT_STRING(signatureValue));
+ if (referenceDigest != null)
+ pb.addComponent(new CON_SPEC(0, new BIT_STRING(referenceDigest)));
+ if (referenceManifestDigest != null)
+ pb.addComponent(new CON_SPEC(1, new BIT_STRING(referenceManifestDigest)));
+ if (manifestReferenceDigest != null)
+ pb.addComponent(new CON_SPEC(2, new BIT_STRING(manifestReferenceDigest)));
+ return pb;
+ }
+
+ /**
+ * Returns the DER encoding of this <code>IdentityLink</code>.
+ *
+ * @return the DER encoding of this <code>IdentityLink</code>
+ */
+ public byte[] toByteArray() {
+ return DerCoder.encode(toASN1Object());
+ }
+
+ /**
+ * @return the version
+ */
+ public int getVersion() {
+ return version;
+ }
+
+ /**
+ * @param version the version to set
+ */
+ public void setVersion(int version) {
+ this.version = version;
+ }
+
+ /**
+ * @return the issuerTemplate
+ */
+ public String getIssuerTemplate() {
+ return issuerTemplate;
+ }
+
+ /**
+ * @param issuerTemplate the issuerTemplate to set
+ */
+ public void setIssuerTemplate(String issuerTemplate) {
+ this.issuerTemplate = issuerTemplate;
+ }
+
+ /**
+ * @return the assertionID
+ */
+ public String getAssertionID() {
+ return assertionID;
+ }
+
+ /**
+ * @param assertionID the assertionID to set
+ */
+ public void setAssertionID(String assertionID) {
+ this.assertionID = assertionID;
+ }
+
+ /**
+ * @return the issueInstant
+ */
+ public String getIssueInstant() {
+ return issueInstant;
+ }
+
+ /**
+ * @param issueInstant the issueInstant to set
+ */
+ public void setIssueInstant(String issueInstant) {
+ this.issueInstant = issueInstant;
+ }
+
+ /**
+ * @return the personData
+ */
+ public PersonData getPersonData() {
+ return personData;
+ }
+
+ /**
+ * @param personData the personData to set
+ */
+ public void setPersonData(PersonData personData) {
+ this.personData = personData;
+ }
+
+ /**
+ * @return the citizenPublicKeys
+ */
+ public CitizenPublicKey[] getCitizenPublicKeys() {
+ return citizenPublicKeys;
+ }
+
+ /**
+ * @param citizenPublicKeys the citizenPublicKeys to set
+ */
+ public void setCitizenPublicKeys(CitizenPublicKey[] citizenPublicKeys) {
+ this.citizenPublicKeys = citizenPublicKeys;
+ }
+
+ /**
+ * @return the signatureValue
+ */
+ public byte[] getSignatureValue() {
+ return signatureValue;
+ }
+
+ /**
+ * @param signatureValue the signatureValue to set
+ */
+ public void setSignatureValue(byte[] signatureValue) {
+ this.signatureValue = signatureValue;
+ }
+
+ /**
+ * @return the referenceDigest
+ */
+ public byte[] getReferenceDigest() {
+ return referenceDigest;
+ }
+
+ /**
+ * @param referenceDigest the referenceDigest to set
+ */
+ public void setReferenceDigest(byte[] referenceDigest) {
+ this.referenceDigest = referenceDigest;
+ }
+
+ /**
+ * @return the referenceManifestDigest
+ */
+ public byte[] getReferenceManifestDigest() {
+ return referenceManifestDigest;
+ }
+
+ /**
+ * @param referenceManifestDigest the referenceManifestDigest to set
+ */
+ public void setReferenceManifestDigest(byte[] referenceManifestDigest) {
+ this.referenceManifestDigest = referenceManifestDigest;
+ }
+
+ /**
+ * @return the manifestReferenceDigest
+ */
+ public byte[] getManifestReferenceDigest() {
+ return manifestReferenceDigest;
+ }
+
+ /**
+ * @param manifestReferenceDigest the manifestReferenceDigest to set
+ */
+ public void setManifestReferenceDigest(byte[] manifestReferenceDigest) {
+ this.manifestReferenceDigest = manifestReferenceDigest;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/PersonData.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/PersonData.java
new file mode 100644
index 00000000..2a537eb3
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/PersonData.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.idlink.ans1;
+
+import iaik.asn1.*;
+
+/**
+ * This class represents the ASN.1 version of the <code>PersonData</code>
+ * of a compressed identity link.
+ *
+ * <pre>
+PersonData ::= CHOICE {
+ physcialPerson [0] PhysicalPersonData,
+ corporateBody [1] CorporateBodyData
+} </pre>
+ *
+ * @author mivkovic@egiz.gv.at, mcentner@egiz.gv.at
+ *
+ */
+public class PersonData implements ASN1Type {
+
+ /**
+ * <code>physicalPerson</code>
+ */
+ private PhysicalPersonData physicalPerson; // PhysicalPersonData
+
+ /**
+ * Creates a new <code>PersonData</code> with the given
+ * <code>physicalPersonData</code>.
+ *
+ * @param physicalPersonData
+ */
+ public PersonData(PhysicalPersonData physicalPersonData) {
+ physicalPerson = physicalPersonData;
+ }
+
+ /**
+ * Creates a new <code>PersonData</code> from its ASN.1 representation.
+ *
+ * @param obj
+ * @throws CodingException
+ */
+ public PersonData(ASN1Object obj) throws CodingException {
+ decode(obj);
+ }
+
+ @Override
+ public void decode(ASN1Object obj) throws CodingException {
+ try {
+ physicalPerson = new PhysicalPersonData(obj);
+ } catch (Exception ex) {
+ throw new CodingException(ex.toString());
+ }
+ }
+
+ @Override
+ public ASN1Object toASN1Object() {
+ return physicalPerson.toASN1Object();
+ }
+
+ /**
+ * Returns the DER encoded representation of this <code>PersonData</code>.
+ *
+ * @return the DER encoded representation of this <code>PersonData</code>
+ */
+ public byte[] getEncoded() {
+ return DerCoder.encode(toASN1Object());
+ }
+
+ /**
+ * @return the physicalPerson
+ */
+ public PhysicalPersonData getPhysicalPerson() {
+ return physicalPerson;
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/PhysicalPersonData.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/PhysicalPersonData.java
new file mode 100644
index 00000000..a6aea97e
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/idlink/ans1/PhysicalPersonData.java
@@ -0,0 +1,143 @@
+/*
+* 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.idlink.ans1;
+
+import iaik.asn1.*;
+
+/**
+ * This class represents the ASN.1 version of the <code>PhysicalPersonData</code>
+ * of an compressed identity link.
+ *
+ * <pre>PhysicalPersonData ::= SEQUENCE {
+ baseId UTF8String,
+ givenName UTF8String,
+ familyName UTF8String,
+ dateOfBirth UTF8String
+}</pre>
+ *
+ * @author mivkovic@egiz.gv.at, mcentner@eigz.gv.at
+ */
+public class PhysicalPersonData implements ASN1Type {
+
+ /**
+ * <code>baseId</code>
+ */
+ private String baseId; // UTF8String
+
+ /**
+ * <code>givenName</code>
+ */
+ private String givenName; // UTF8String
+
+ /**
+ * <code>familyName</code>
+ */
+ private String familyName; // UTF8String
+
+ /**
+ * <code>dataOfBirth</code>
+ */
+ private String dateOfBirth; // UTF8String
+
+ /**
+ * Creates a new <code>PhysicalPersonData</code> with the
+ * given <code>baseId</code>, <code>givenName</code>, <code>familyName</code>
+ * and <code>dataOfBirth</code>.
+ *
+ * @param baseId
+ * @param givenName
+ * @param familyName
+ * @param dateOfBirth
+ */
+ public PhysicalPersonData(String baseId, String givenName, String familyName, String dateOfBirth) {
+ this.baseId = baseId;
+ this.givenName = givenName;
+ this.familyName = familyName;
+ this.dateOfBirth = dateOfBirth;
+ }
+
+ /**
+ * Creates a new <code>PhysicalPersonData</code> from its ASN.1 representation.
+ *
+ * @param obj
+ *
+ * @throws CodingException
+ */
+ public PhysicalPersonData(ASN1Object obj) throws CodingException {
+ decode(obj);
+ }
+
+ @Override
+ public void decode(ASN1Object obj) throws CodingException {
+ try {
+ baseId = (String) ((ASN1Object) obj.getComponentAt(0)).getValue();
+ givenName = (String) ((ASN1Object) obj.getComponentAt(1)).getValue();
+ familyName = (String) ((ASN1Object) obj.getComponentAt(2)).getValue();
+ dateOfBirth = (String) ((ASN1Object) obj.getComponentAt(3)).getValue();
+ } catch (Exception ex) {
+ throw new CodingException(ex.toString());
+ }
+ }
+
+ @Override
+ public ASN1Object toASN1Object() {
+ SEQUENCE ppd = new SEQUENCE();
+ ppd.addComponent(new UTF8String(baseId));
+ ppd.addComponent(new UTF8String(givenName));
+ ppd.addComponent(new UTF8String(familyName));
+ ppd.addComponent(new UTF8String(dateOfBirth));
+ return ppd;
+ }
+
+ /**
+ * Returns the DER encoding of this <code>PhysicalPersonData</code>.
+ *
+ * @return the DER encoding of this <code>PhysicalPersonData</code>
+ */
+ public byte[] toByteArray() {
+ return DerCoder.encode(toASN1Object());
+ }
+
+ /**
+ * @return the baseId
+ */
+ public String getBaseId() {
+ return baseId;
+ }
+
+ /**
+ * @return the givenName
+ */
+ public String getGivenName() {
+ return givenName;
+ }
+
+ /**
+ * @return the familyName
+ */
+ public String getFamilyName() {
+ return familyName;
+ }
+
+ /**
+ * @return the dateOfBirth
+ */
+ public String getDateOfBirth() {
+ return dateOfBirth;
+ }
+
+} \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/marshal/MarshallerFactory.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/marshal/MarshallerFactory.java
new file mode 100644
index 00000000..3ac0a86e
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/marshal/MarshallerFactory.java
@@ -0,0 +1,60 @@
+/*
+ * 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.marshal;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.PropertyException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class MarshallerFactory {
+
+ private static final Log log = LogFactory.getLog(MarshallerFactory.class);
+
+ public static Marshaller createMarshaller(JAXBContext ctx, boolean formattedOutput, boolean fragment) throws JAXBException {
+ Marshaller m = ctx.createMarshaller();
+ try {
+ if (formattedOutput) {
+ log.trace("setting marshaller property FORMATTED_OUTPUT");
+ m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
+ }
+ if (fragment) {
+ log.trace("setting marshaller property FRAGMENT");
+ m.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
+ }
+ log.trace("setting marshaller property NamespacePrefixMapper");
+ m.setProperty("com.sun.xml.bind.namespacePrefixMapper", new NamespacePrefixMapperImpl());
+ } catch (PropertyException ex) {
+ log.info("failed to set marshaller property: " + ex.getMessage());
+ }
+ return m;
+ }
+
+ public static Marshaller createMarshaller(JAXBContext ctx, boolean formattedOutput) throws JAXBException {
+ return createMarshaller(ctx, formattedOutput, false);
+ }
+
+ public static Marshaller createMarshaller(JAXBContext ctx) throws JAXBException {
+ return createMarshaller(ctx, false, false);
+ }
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/marshal/NamespacePrefixMapperImpl.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/marshal/NamespacePrefixMapperImpl.java
new file mode 100644
index 00000000..e0698977
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/marshal/NamespacePrefixMapperImpl.java
@@ -0,0 +1,76 @@
+/*
+ * 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.marshal;
+
+//import com.sun.xml.internal.bind.marshaller.NamespacePrefixMapper;
+import java.util.HashMap;
+import java.util.Map;
+
+import com.sun.xml.bind.marshaller.NamespacePrefixMapper;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class NamespacePrefixMapperImpl extends NamespacePrefixMapper {
+
+ private static final Log log = LogFactory.getLog(NamespacePrefixMapperImpl.class);
+
+ protected static final Map<String, String> prefixMap = new HashMap<String, String>();
+
+ static {
+ prefixMap.put("http://www.w3.org/2001/XMLSchema-instance", "xsi");
+ prefixMap.put("http://www.w3.org/2000/09/xmldsig#", "dsig");
+ prefixMap.put("http://www.buergerkarte.at/namespaces/securitylayer/1.2#", "sl");
+ prefixMap.put("http://www.buergerkarte.at/cardchannel", "cc");
+ prefixMap.put("http://www.w3.org/2001/04/xmldsig-more#", "ecdsa");
+ prefixMap.put("http://reference.e-government.gv.at/namespace/persondata/20020228#", "pr");
+ prefixMap.put("urn:oasis:names:tc:SAML:1.0:assertion", "saml");
+ prefixMap.put("http://uri.etsi.org/01903/v1.1.1#", "xades");
+ prefixMap.put("http://www.buergerkarte.at/namespaces/securitylayer/20020225#", "sl10");
+ prefixMap.put("http://www.buergerkarte.at/namespaces/securitylayer/20020831#", "sl11");
+ }
+
+
+ @Override
+ public String getPreferredPrefix(String namespaceUri, String suggestion, boolean requirePrefix) {
+
+ if (log.isTraceEnabled()) {
+ log.trace("prefix for namespace " + namespaceUri + " requested");
+ }
+
+ String prefix = prefixMap.get(namespaceUri);
+
+ return (prefix != null) ? prefix : suggestion;
+ }
+
+ /**
+ * Returns a list of namespace URIs that should be declared
+ * at the root element.
+ * <p>
+ * By default, the JAXB RI produces namespace declarations only when
+ * they are necessary, only at where they are used. Because of this
+ * lack of look-ahead, sometimes the marshaller produces a lot of
+ * namespace declarations that look redundant to human eyes. For example,
+ */
+ @Override
+ public String[] getPreDeclaredNamespaceUris() {
+ return new String[]{ "http://www.buergerkarte.at/namespaces/securitylayer/1.2#" };
+ }
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/org/apache/tomcat/util/http/AcceptLanguage.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/org/apache/tomcat/util/http/AcceptLanguage.java
new file mode 100644
index 00000000..231966ac
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/org/apache/tomcat/util/http/AcceptLanguage.java
@@ -0,0 +1,151 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.org.apache.tomcat.util.http;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+import java.util.Locale;
+import java.util.StringTokenizer;
+import java.util.Vector;
+
+/**
+ * Util to process the "Accept-Language" header. Used by facade to implement
+ * getLocale() and by StaticInterceptor.
+ *
+ * Not optimized - it's very slow.
+ *
+ * @author James Duncan Davidson [duncan@eng.sun.com]
+ * @author James Todd [gonzo@eng.sun.com]
+ * @author Jason Hunter [jch@eng.sun.com]
+ * @author Harish Prabandham
+ * @author costin@eng.sun.com
+ */
+public class AcceptLanguage {
+
+ public static Locale getLocale(String acceptLanguage) {
+ if( acceptLanguage == null ) return Locale.getDefault();
+
+ Hashtable<String,Vector<String>> languages =
+ new Hashtable<String,Vector<String>>();
+ Vector<Double> quality = new Vector<Double>();
+ processAcceptLanguage(acceptLanguage, languages, quality);
+
+ if (languages.size() == 0) return Locale.getDefault();
+
+ Vector<Locale> l = new Vector<Locale>();
+ extractLocales( languages,quality, l);
+
+ return (Locale)l.elementAt(0);
+ }
+
+ public static Enumeration getLocales(String acceptLanguage) {
+ // Short circuit with an empty enumeration if null header
+ if (acceptLanguage == null) {
+ Vector<Locale> v = new Vector<Locale>();
+ v.addElement(Locale.getDefault());
+ return v.elements();
+ }
+
+ Hashtable<String,Vector<String>> languages =
+ new Hashtable<String,Vector<String>>();
+ Vector<Double> quality=new Vector<Double>();
+ processAcceptLanguage(acceptLanguage, languages , quality);
+
+ if (languages.size() == 0) {
+ Vector<Locale> v = new Vector<Locale>();
+ v.addElement(Locale.getDefault());
+ return v.elements();
+ }
+ Vector<Locale> l = new Vector<Locale>();
+ extractLocales( languages, quality , l);
+ return l.elements();
+ }
+
+ private static void processAcceptLanguage( String acceptLanguage,
+ Hashtable<String,Vector<String>> languages, Vector<Double> q)
+ {
+ StringTokenizer languageTokenizer =
+ new StringTokenizer(acceptLanguage, ",");
+
+ while (languageTokenizer.hasMoreTokens()) {
+ String language = languageTokenizer.nextToken().trim();
+ int qValueIndex = language.indexOf(';');
+ int qIndex = language.indexOf('q');
+ int equalIndex = language.indexOf('=');
+ Double qValue = new Double(1);
+
+ if (qValueIndex > -1 &&
+ qValueIndex < qIndex &&
+ qIndex < equalIndex) {
+ String qValueStr = language.substring(qValueIndex + 1);
+ language = language.substring(0, qValueIndex);
+ qValueStr = qValueStr.trim().toLowerCase();
+ qValueIndex = qValueStr.indexOf('=');
+ qValue = new Double(0);
+ if (qValueStr.startsWith("q") &&
+ qValueIndex > -1) {
+ qValueStr = qValueStr.substring(qValueIndex + 1);
+ try {
+ qValue = new Double(qValueStr.trim());
+ } catch (NumberFormatException nfe) {
+ }
+ }
+ }
+
+ // XXX
+ // may need to handle "*" at some point in time
+
+ if (! language.equals("*")) {
+ String key = qValue.toString();
+ Vector<String> v;
+ if (languages.containsKey(key)) {
+ v = languages.get(key) ;
+ } else {
+ v= new Vector<String>();
+ q.addElement(qValue);
+ }
+ v.addElement(language);
+ languages.put(key, v);
+ }
+ }
+ }
+
+ private static void extractLocales(Hashtable languages, Vector q,
+ Vector<Locale> l)
+ {
+ // XXX We will need to order by q value Vector in the Future ?
+ Enumeration e = q.elements();
+ while (e.hasMoreElements()) {
+ Vector v =
+ (Vector)languages.get(((Double)e.nextElement()).toString());
+ Enumeration le = v.elements();
+ while (le.hasMoreElements()) {
+ String language = (String)le.nextElement();
+ String country = "";
+ int countryIndex = language.indexOf("-");
+ if (countryIndex > -1) {
+ country = language.substring(countryIndex + 1).trim();
+ language = language.substring(0, countryIndex).trim();
+ }
+ l.addElement(new Locale(language, country));
+ }
+ }
+ }
+
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/NamespaceContextCallback.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/NamespaceContextCallback.java
new file mode 100644
index 00000000..08c075ac
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/NamespaceContextCallback.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.
+*/
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package at.gv.egiz.slbinding;
+
+import javax.xml.namespace.NamespaceContext;
+
+/**
+ *
+ * @author clemens
+ */
+public interface NamespaceContextCallback {
+
+ /**
+ * preserves the current namespace context from the XMLEventFilter
+ * @param filter
+ */
+ void preserveNamespaceContext(RedirectEventFilter filter);
+
+ /**
+ * @return the namespace context if preserveNamespaceContext() was called on this object before, null otherwise
+ */
+ NamespaceContext getNamespaceContext();
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/RedirectCallback.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/RedirectCallback.java
new file mode 100644
index 00000000..80fb56dc
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/RedirectCallback.java
@@ -0,0 +1,42 @@
+/*
+* 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.slbinding;
+
+import java.io.ByteArrayOutputStream;
+import javax.xml.stream.XMLStreamException;
+
+/**
+ *
+ * The beforeUnmarshal(Unmarshaller um, Object parent) methods don't allow to pass the RedirectEventFilter,
+ * so we implement a callback interface common to all generated classes
+ * @author clemens
+ */
+public interface RedirectCallback {
+
+ void enableRedirect(RedirectEventFilter filter) throws XMLStreamException;
+
+ void disableRedirect(RedirectEventFilter filter) throws XMLStreamException;
+
+ /**
+ * @return the redirected stream or null if enableRedirect() was not called before
+ */
+ ByteArrayOutputStream getRedirectedStream();
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/RedirectEventFilter.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/RedirectEventFilter.java
new file mode 100644
index 00000000..5fe84aae
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/RedirectEventFilter.java
@@ -0,0 +1,263 @@
+/*
+ * 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.slbinding;
+
+import java.io.OutputStream;
+import java.util.Set;
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.namespace.QName;
+import javax.xml.stream.EventFilter;
+import javax.xml.stream.XMLEventWriter;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamConstants;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.events.XMLEvent;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/*
+ * TODO: don't set redirect stream from caller (caller does not know whether redirection will be triggered)
+ * rather create on trigger and pass to caller
+ */
+public class RedirectEventFilter implements EventFilter {
+
+ public static final String DEFAULT_ENCODING = "UTF-8";
+ private static Log log = LogFactory.getLog(RedirectEventFilter.class);
+ protected XMLEventWriter redirectWriter = null;
+ protected Set<QName> redirectTriggers = null;
+ private int depth = -1;
+ protected NamespaceContext currentNamespaceContext = null;
+
+ /**
+ * Event redirection is disabled, set a redirect stream to enable.
+ */
+ public RedirectEventFilter() {
+ redirectWriter = null;
+ // redirectTriggers = null;
+ }
+
+ /**
+ *
+ * @param redirectStream
+ * if null, no events are redirected
+ * @param redirectTriggers
+ * if null, all events are redirected
+ */
+ public RedirectEventFilter(OutputStream redirectStream, String encoding)
+ throws XMLStreamException { // , List<QName> redirectTriggers
+ if (redirectStream != null) {
+ XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
+ if (encoding == null) {
+ encoding = DEFAULT_ENCODING;
+ }
+ this.redirectWriter = outputFactory.createXMLEventWriter(redirectStream,
+ encoding);
+ }
+ // this.redirectTriggers = redirectTriggers;
+ }
+
+ /**
+ * All startElement events occuring in the redirectTriggers list will trigger
+ * redirection of the entire (sub-)fragment.
+ *
+ * @param event
+ * @return false if an event is redirected
+ */
+ @Override
+ public boolean accept(XMLEvent event) {
+ int eventType = event.getEventType();
+
+ if (eventType == XMLStreamConstants.START_ELEMENT) {
+ //hopefully, this is a copy
+ currentNamespaceContext = event.asStartElement().getNamespaceContext();
+ }
+ if (redirectWriter == null) {
+ return true;
+ }
+ if (eventType == XMLStreamConstants.START_ELEMENT) {
+ if (depth >= 0 || triggersRedirect(event.asStartElement().getName())) {
+ depth++;
+ }
+ } else if (eventType == XMLStreamConstants.END_ELEMENT) {
+ if (depth >= 0 && --depth < 0) {
+ // redirect the end element of the trigger,
+ // but do not redirect the end element of the calling type
+ if (redirectTriggers != null) {
+ redirectEvent(event);
+ return false;
+ }
+ }
+ }
+ if (depth >= 0) { //|| (depth == 0 && redirectTriggers == null)) {
+ redirectEvent(event);
+ return false;
+ }
+ return true; // depth < 0;
+
+// switch (event.getEventType()) {
+// case XMLStreamConstants.START_ELEMENT:
+// StartElement startElt = event.asStartElement();
+// if (depth >= 0 || triggersRedirect(startElt.getName())) {
+// depth++;
+// }
+// // namespace context changes only on start elements
+// // (first event might not be startElement, but we don't need CDATA's
+// // namespace context)
+// currentNamespaceContext = startElt.getNamespaceContext();
+// break;
+// case XMLStreamConstants.END_ELEMENT:
+// // if depth switches from positive to negative, this is the closing tag of
+// // the trigger (redirect as well!)
+// if (depth >= 0 && --depth < 0) {
+// redirectEvent(event);
+// return false;
+// }
+// break;
+// }
+// if (depth >= 0) {
+// redirectEvent(event);
+// return false;
+// }
+// return true; // depth < 0;
+ }
+
+ /**
+ * @param startElt
+ * @return true if the set of triggers contains startElement
+ * (or no triggers are registered, i.e. everything is redirected)
+ */
+ private boolean triggersRedirect(QName startElement) {
+ if (redirectTriggers != null) {
+ return redirectTriggers.contains(startElement);
+ }
+ return true;
+ }
+
+ private void redirectEvent(XMLEvent event) {
+ try {
+ redirectWriter.add(event);
+ } catch (XMLStreamException ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ /**
+ * Enable/disable redirection of <em>all</em> events from now on.
+ * The redirected events will be UTF-8 encoded and written to the stream.
+ *
+ * @param redirectstream
+ * if null, redirection is disabled
+ */
+ public void setRedirectStream(OutputStream redirectStream) throws XMLStreamException {
+ setRedirectStream(redirectStream, DEFAULT_ENCODING, null);
+ }
+
+ /**
+ * Enable/disable redirection of <em>all</em> events from now on.
+ *
+ * @param redirectStream if null, redirection is disabled
+ * @param encoding The encoding for the redirect stream
+ * @throws javax.xml.stream.XMLStreamException
+ */
+ public void setRedirectStream(OutputStream redirectStream, String encoding) throws XMLStreamException {
+ setRedirectStream(redirectStream, encoding, null);
+ }
+
+ /**
+ * Enable/disable redirection of all (child) elements contained in redirect triggers.
+ * The redirected events will be UTF-8 encoded and written to the stream.
+ *
+ * @param redirectstream
+ * if null, redirection is disabled
+ * @param redirectTriggers elements that trigger the redirection
+ */
+ public void setRedirectStream(OutputStream redirectStream, Set<QName> redirectTriggers) throws XMLStreamException {
+ setRedirectStream(redirectStream, DEFAULT_ENCODING, redirectTriggers);
+ }
+
+ /**
+ * Enable/disable redirection of all (child) elements contained in redirect triggers.
+ *
+ * TODO: don't set redirect stream from caller (caller does not know whether redirection will be triggered)
+ * rather create on trigger and pass to caller
+ * @param redirectstream
+ * if null, redirection is disabled
+ * @param encoding The encoding for the redirect stream
+ * @param redirectTriggers elements that trigger the redirection
+ */
+ public void setRedirectStream(OutputStream redirectStream, String encoding, Set<QName> redirectTriggers) throws XMLStreamException {
+ if (redirectStream != null) {
+ XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
+ if (encoding == null) {
+ encoding = DEFAULT_ENCODING;
+ }
+ redirectWriter = outputFactory.createXMLEventWriter(redirectStream,
+ encoding);
+ if (redirectTriggers == null) {
+ // start redirecting
+ depth = 0;
+ }
+ this.redirectTriggers = redirectTriggers;
+ } else {
+ redirectWriter = null;
+ this.redirectTriggers = null;
+ }
+ }
+
+ /**
+ * Enable/disable redirection of fragments (defined by elements in
+ * redirectTriggers)
+ *
+ * @param redirectStream
+ * if null, redirection is disabled
+ * @param redirectTriggers
+ * All startElement events occuring in this list will trigger
+ * redirection of the entire fragment. If null, all events are
+ * redirected
+ */
+ // public void setRedirectStream(OutputStream redirectStream, List<QName>
+ // redirectTriggers) throws XMLStreamException {
+ // if (redirectStream != null) {
+ // XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
+ // redirectWriter = outputFactory.createXMLEventWriter(redirectStream);
+ // } else {
+ // redirectWriter = null;
+ // }
+ // this.redirectTriggers = (redirectStream == null) ? null : redirectTriggers;
+ // }
+ /**
+ * flushes the internal EventWriter
+ *
+ * @throws javax.xml.stream.XMLStreamException
+ */
+ public void flushRedirectStream() throws XMLStreamException {
+ redirectWriter.flush();
+ }
+
+ /**
+ * the namespaceContext of the last startelement event read
+ *
+ * @return
+ */
+ public NamespaceContext getCurrentNamespaceContext() {
+ return currentNamespaceContext;
+ }
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/RedirectUnmarshallerListener.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/RedirectUnmarshallerListener.java
new file mode 100644
index 00000000..08c12146
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/RedirectUnmarshallerListener.java
@@ -0,0 +1,68 @@
+/*
+* 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.slbinding;
+
+import javax.xml.bind.Unmarshaller;
+import javax.xml.stream.XMLStreamException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Enables event redirection before marshalling a target of type RedirectCallback.
+ * It is up to the target class to implement the redirection (default implementation in RedirectCallback).
+ * Disables event redirection after marshalling (when the closing tag occurs).
+ * @author clemens
+ */
+public class RedirectUnmarshallerListener extends Unmarshaller.Listener {
+
+ private static Log log = LogFactory.getLog(RedirectUnmarshallerListener.class);
+ protected RedirectEventFilter eventFilter;
+
+ public RedirectUnmarshallerListener(RedirectEventFilter eventFilter) {
+ this.eventFilter = eventFilter;
+ }
+
+ @Override
+ public void beforeUnmarshal(Object target, Object parent) {
+ if (target instanceof RedirectCallback) {
+ try {
+ ((RedirectCallback) target).enableRedirect(eventFilter);
+ } catch (XMLStreamException ex) {
+ log.error("failed to enable event redirection for " + target.getClass().getName() + ": " + ex.getMessage(), ex);
+ }
+ }
+ if (target instanceof NamespaceContextCallback) {
+ ((NamespaceContextCallback) target).preserveNamespaceContext(eventFilter);
+ }
+ }
+
+ @Override
+ public void afterUnmarshal(Object target, Object parent) {
+ if (target instanceof RedirectCallback) {
+ try {
+ ((RedirectCallback) target).disableRedirect(eventFilter);
+ } catch (XMLStreamException ex) {
+ log.error("failed to disable event redirection for " + target.getClass().getName() + ": " + ex.getMessage(), ex);
+ }
+ }
+ }
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/impl/SignatureLocationType.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/impl/SignatureLocationType.java
new file mode 100644
index 00000000..494e6972
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/impl/SignatureLocationType.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.
+*/
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package at.gv.egiz.slbinding.impl;
+
+import at.gv.egiz.slbinding.*;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.namespace.NamespaceContext;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author clemens
+ */
+public class SignatureLocationType extends at.buergerkarte.namespaces.securitylayer._1.SignatureLocationType implements NamespaceContextCallback {
+
+ @XmlTransient
+ private static Log log = LogFactory.getLog(SignatureLocationType.class);
+ @XmlTransient
+ protected NamespaceContext namespaceContext;
+
+ @Override
+ public NamespaceContext getNamespaceContext() {
+ return namespaceContext;
+ }
+
+ @Override
+ public void preserveNamespaceContext(RedirectEventFilter filter) {
+ log.debug("preserving namespace context for SignatureLocationType");
+ namespaceContext = filter.getCurrentNamespaceContext();
+ }
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/impl/TransformsInfoType.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/impl/TransformsInfoType.java
new file mode 100644
index 00000000..b1de9406
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/impl/TransformsInfoType.java
@@ -0,0 +1,79 @@
+/*
+* 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.slbinding.impl;
+
+import at.gv.egiz.slbinding.*;
+import java.io.ByteArrayOutputStream;
+import java.io.UnsupportedEncodingException;
+import java.util.HashSet;
+import java.util.Set;
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author clemens
+ */
+public class TransformsInfoType extends at.buergerkarte.namespaces.securitylayer._1.TransformsInfoType implements RedirectCallback {
+
+ @XmlTransient
+ private static Log log = LogFactory.getLog(TransformsInfoType.class);
+ @XmlTransient
+ private static final Set<QName> redirectTriggers = initRedirectTriggers();
+ @XmlTransient
+ protected ByteArrayOutputStream redirectOS = null;
+
+ private static Set<QName> initRedirectTriggers() {
+ HashSet<QName> dsigTransforms = new HashSet<QName>();
+ dsigTransforms.add(new QName("http://www.w3.org/2000/09/xmldsig#", "Transforms"));
+ return dsigTransforms;
+ }
+
+ @Override
+ public void enableRedirect(RedirectEventFilter filter) throws XMLStreamException {
+ log.debug("enabling event redirection for TransformsInfoType");
+ redirectOS = new ByteArrayOutputStream();
+ filter.setRedirectStream(redirectOS, redirectTriggers);
+ }
+
+ @Override
+ public void disableRedirect(RedirectEventFilter filter) throws XMLStreamException {
+ log.debug("disabling event redirection for TransformsInfoType");
+ filter.flushRedirectStream();
+ filter.setRedirectStream(null);
+ if (log.isDebugEnabled()) {
+ try {
+ log.debug("redirected events (UTF-8): " + redirectOS.toString("UTF-8"));
+ } catch (UnsupportedEncodingException ex) {
+ log.debug("failed to log redirected events", ex);
+ }
+ }
+ }
+
+ @Override
+ public ByteArrayOutputStream getRedirectedStream() {
+ return redirectOS;
+ }
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/impl/XMLContentType.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/impl/XMLContentType.java
new file mode 100644
index 00000000..fd52e378
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/slbinding/impl/XMLContentType.java
@@ -0,0 +1,69 @@
+/*
+* 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.slbinding.impl;
+
+import at.gv.egiz.slbinding.RedirectCallback;
+import at.gv.egiz.slbinding.RedirectEventFilter;
+import java.io.ByteArrayOutputStream;
+import java.io.UnsupportedEncodingException;
+
+import javax.xml.bind.annotation.XmlTransient;
+import javax.xml.stream.XMLStreamException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author clemens
+ */
+public class XMLContentType extends at.buergerkarte.namespaces.securitylayer._1.XMLContentType implements RedirectCallback {
+
+ @XmlTransient
+ private static Log log = LogFactory.getLog(XMLContentType.class);
+ @XmlTransient
+ protected ByteArrayOutputStream redirectOS = null;
+
+ @Override
+ public void enableRedirect(RedirectEventFilter filter) throws XMLStreamException {
+ log.debug("enabling event redirection for XMLContentType");
+ redirectOS = new ByteArrayOutputStream();
+ filter.setRedirectStream(redirectOS);
+ }
+
+ @Override
+ public void disableRedirect(RedirectEventFilter filter) throws XMLStreamException {
+ log.debug("disabling event redirection for XMLContentType");
+ filter.flushRedirectStream();
+ filter.setRedirectStream(null);
+ if (log.isDebugEnabled()) {
+ try {
+ log.debug("redirected events (UTF-8): " + redirectOS.toString("UTF-8"));
+ } catch (UnsupportedEncodingException ex) {
+ log.debug("failed to log redirected events", ex);
+ }
+ }
+ }
+
+ @Override
+ public ByteArrayOutputStream getRedirectedStream() {
+ return redirectOS;
+ }
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/validation/ReportingValidationEventHandler.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/validation/ReportingValidationEventHandler.java
new file mode 100644
index 00000000..6543c333
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/validation/ReportingValidationEventHandler.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.validation;
+
+import javax.xml.bind.ValidationEvent;
+import javax.xml.bind.ValidationEventHandler;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class ReportingValidationEventHandler implements ValidationEventHandler {
+
+ protected static final Log log = LogFactory.getLog(ReportingValidationEventHandler.class);
+
+ protected ValidationEvent errorEvent;
+
+ /**
+ *
+ * @param event
+ * @return false, terminate the current unmarshal, validate, or marshal operation after handling this warning/error
+ * (except for WARNING validation events)
+ */
+ @Override
+ public boolean handleEvent(ValidationEvent event) {
+ switch (event.getSeverity()) {
+ case ValidationEvent.WARNING:
+ log.info(event.getMessage());
+ return true;
+ case ValidationEvent.ERROR:
+ log.warn(event.getMessage());
+ errorEvent = event;
+ return false;
+ case ValidationEvent.FATAL_ERROR:
+ log.error(event.getMessage());
+ errorEvent = event;
+ return false;
+ default:
+ log.debug(event.getMessage());
+ return false;
+ }
+ }
+
+ public ValidationEvent getErrorEvent() {
+ return errorEvent;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/xades/QualifyingPropertiesException.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/xades/QualifyingPropertiesException.java
new file mode 100644
index 00000000..e892a13b
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/xades/QualifyingPropertiesException.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.xades;
+
+public class QualifyingPropertiesException extends Exception {
+
+ public QualifyingPropertiesException() {
+ // TODO Auto-generated constructor stub
+ }
+
+ public QualifyingPropertiesException(String message) {
+ super(message);
+ // TODO Auto-generated constructor stub
+ }
+
+ public QualifyingPropertiesException(Throwable cause) {
+ super(cause);
+ // TODO Auto-generated constructor stub
+ }
+
+ public QualifyingPropertiesException(String message, Throwable cause) {
+ super(message, cause);
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/xades/QualifyingPropertiesFactory.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/xades/QualifyingPropertiesFactory.java
new file mode 100644
index 00000000..6f694b91
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/xades/QualifyingPropertiesFactory.java
@@ -0,0 +1,230 @@
+/*
+* 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.xades;
+
+import java.math.BigInteger;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.CertificateEncodingException;
+import java.security.cert.X509Certificate;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.List;
+import java.util.TimeZone;
+
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.PropertyException;
+import javax.xml.crypto.dsig.DigestMethod;
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import org.etsi.uri._01903.v1_1.CertIDListType;
+import org.etsi.uri._01903.v1_1.CertIDType;
+import org.etsi.uri._01903.v1_1.DataObjectFormatType;
+import org.etsi.uri._01903.v1_1.DigestAlgAndValueType;
+import org.etsi.uri._01903.v1_1.QualifyingPropertiesType;
+import org.etsi.uri._01903.v1_1.SignaturePolicyIdentifierType;
+import org.etsi.uri._01903.v1_1.SignedDataObjectPropertiesType;
+import org.etsi.uri._01903.v1_1.SignedPropertiesType;
+import org.etsi.uri._01903.v1_1.SignedSignaturePropertiesType;
+import org.w3._2000._09.xmldsig_.DigestMethodType;
+import org.w3._2000._09.xmldsig_.X509IssuerSerialType;
+import org.w3c.dom.Node;
+
+import at.gv.egiz.marshal.MarshallerFactory;
+
+public class QualifyingPropertiesFactory {
+
+ public static String NS_URI_V1_1_1 = "http://uri.etsi.org/01903/v1.1.1#";
+
+ public static String SIGNED_PROPERTIES_REFERENCE_TYPE_V1_1_1 = NS_URI_V1_1_1 + "SignedProperties";
+
+ private static QualifyingPropertiesFactory instance;
+
+ /**
+ * The <code>JAXBContext</code>.
+ */
+ private static JAXBContext jaxbContext;
+
+ public static synchronized QualifyingPropertiesFactory getInstance() {
+ if (instance == null) {
+ instance = new QualifyingPropertiesFactory();
+ }
+ return instance;
+ }
+
+ private DatatypeFactory datatypeFactory;
+
+ private org.etsi.uri._01903.v1_1.ObjectFactory qpFactory;
+
+ private org.w3._2000._09.xmldsig_.ObjectFactory dsFactory;
+
+ public QualifyingPropertiesFactory() {
+
+ try {
+ datatypeFactory = DatatypeFactory.newInstance();
+ } catch (DatatypeConfigurationException e) {
+ throw new RuntimeException(e);
+ }
+
+ qpFactory = new org.etsi.uri._01903.v1_1.ObjectFactory();
+
+ dsFactory = new org.w3._2000._09.xmldsig_.ObjectFactory();
+
+ StringBuffer packageNames = new StringBuffer();
+
+ packageNames.append(org.etsi.uri._01903.v1_1.ObjectFactory.class.getPackage().getName());
+ packageNames.append(":");
+ packageNames.append(org.w3._2000._09.xmldsig_.ObjectFactory.class.getPackage().getName());
+
+ try {
+ jaxbContext = JAXBContext.newInstance(packageNames.toString());
+ } catch (JAXBException e) {
+ // we should not get an JAXBException initializing the JAXBContext
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ public DigestAlgAndValueType createDigestAlgAndValueType(X509Certificate certificate, DigestMethod dm) throws QualifyingPropertiesException {
+
+ DigestMethodType digestMethodType = dsFactory.createDigestMethodType();
+ digestMethodType.setAlgorithm(dm.getAlgorithm());
+
+ byte[] digest;
+ try {
+ MessageDigest messageDigest = MessageDigest.getInstance(dm.getAlgorithm());
+ digest = messageDigest.digest(certificate.getEncoded());
+ } catch (CertificateEncodingException e) {
+ throw new QualifyingPropertiesException(e);
+ } catch (NoSuchAlgorithmException e) {
+ throw new QualifyingPropertiesException(e);
+ }
+
+ DigestAlgAndValueType digestAlgAndValueType = qpFactory.createDigestAlgAndValueType();
+ digestAlgAndValueType.setDigestMethod(digestMethodType);
+ digestAlgAndValueType.setDigestValue(digest);
+
+ return digestAlgAndValueType;
+
+ }
+
+ public X509IssuerSerialType createX509IssuerSerialType(X509Certificate certificate) {
+
+ String name = certificate.getIssuerX500Principal().getName("RFC2253");
+ BigInteger serialNumber = certificate.getSerialNumber();
+
+ X509IssuerSerialType issuerSerialType = dsFactory.createX509IssuerSerialType();
+ issuerSerialType.setX509IssuerName(name);
+ issuerSerialType.setX509SerialNumber(serialNumber);
+
+ return issuerSerialType;
+
+ }
+
+ public DataObjectFormatType createDataObjectFormatType(String objectReference, String mimeType, String description) {
+
+ DataObjectFormatType dataObjectFormatType = qpFactory.createDataObjectFormatType();
+ dataObjectFormatType.setObjectReference(objectReference);
+
+ if (mimeType != null) {
+ dataObjectFormatType.setMimeType(mimeType);
+ }
+ if (description != null) {
+ dataObjectFormatType.setDescription(description);
+ }
+
+ return dataObjectFormatType;
+ }
+
+ public JAXBElement<QualifyingPropertiesType> createQualifyingProperties111(
+ String target, Date signingTime, List<X509Certificate> certificates,
+ String idValue, List<DataObjectFormatType> dataObjectFormats,
+ DigestMethod digestMethod) throws QualifyingPropertiesException {
+
+ GregorianCalendar gregorianCalendar = new GregorianCalendar();
+ gregorianCalendar.setTimeZone(TimeZone.getTimeZone("UTC"));
+ gregorianCalendar.setTime(signingTime);
+
+ SignedSignaturePropertiesType signedSignaturePropertiesType = qpFactory.createSignedSignaturePropertiesType();
+
+ // SigningTime
+ XMLGregorianCalendar xmlGregorianCalendar = datatypeFactory.newXMLGregorianCalendar(gregorianCalendar);
+ xmlGregorianCalendar.setFractionalSecond(null);
+ signedSignaturePropertiesType.setSigningTime(xmlGregorianCalendar);
+
+ // SigningCertificate
+ CertIDListType certIDListType = qpFactory.createCertIDListType();
+ List<CertIDType> certIDs = certIDListType.getCert();
+
+ for (X509Certificate certificate : certificates) {
+
+ CertIDType certIDType = qpFactory.createCertIDType();
+ certIDType.setCertDigest(createDigestAlgAndValueType(certificate, digestMethod));
+ certIDType.setIssuerSerial(createX509IssuerSerialType(certificate));
+
+ certIDs.add(certIDType);
+
+ }
+ signedSignaturePropertiesType.setSigningCertificate(certIDListType);
+
+ // SignaturePolicy
+ SignaturePolicyIdentifierType signaturePolicyIdentifierType = qpFactory.createSignaturePolicyIdentifierType();
+ signaturePolicyIdentifierType.setSignaturePolicyImplied(new SignaturePolicyIdentifierType.SignaturePolicyImplied());
+ signedSignaturePropertiesType.setSignaturePolicyIdentifier(signaturePolicyIdentifierType);
+
+ // SignedProperties
+ SignedPropertiesType signedPropertiesType = qpFactory.createSignedPropertiesType();
+ signedPropertiesType.setSignedSignatureProperties(signedSignaturePropertiesType);
+
+ // DataObjectFormat
+ if (dataObjectFormats != null && !dataObjectFormats.isEmpty()) {
+ SignedDataObjectPropertiesType signedDataObjectPropertiesType = qpFactory.createSignedDataObjectPropertiesType();
+ List<DataObjectFormatType> dataObjectFormatTypes = signedDataObjectPropertiesType.getDataObjectFormat();
+ dataObjectFormatTypes.addAll(dataObjectFormats);
+ signedPropertiesType.setSignedDataObjectProperties(signedDataObjectPropertiesType);
+ }
+
+ signedPropertiesType.setId(idValue);
+
+ // QualifyingProperties
+ QualifyingPropertiesType qualifyingPropertiesType = qpFactory.createQualifyingPropertiesType();
+ qualifyingPropertiesType.setSignedProperties(signedPropertiesType);
+
+ qualifyingPropertiesType.setTarget(target);
+
+ return qpFactory.createQualifyingProperties(qualifyingPropertiesType);
+
+ }
+
+ public void marshallQualifyingProperties(JAXBElement<QualifyingPropertiesType> qualifyingProperties, Node parent) throws JAXBException {
+
+ try {
+ Marshaller marshaller = MarshallerFactory.createMarshaller(jaxbContext, true);
+
+ marshaller.marshal(qualifyingProperties, parent);
+ } catch (PropertyException e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/xmldsig/KeyTypeNotSupportedException.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/xmldsig/KeyTypeNotSupportedException.java
new file mode 100644
index 00000000..3afa6d51
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/xmldsig/KeyTypeNotSupportedException.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.xmldsig;
+
+/**
+ * @author mcentner
+ *
+ */
+public class KeyTypeNotSupportedException extends Exception {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
+ *
+ */
+ public KeyTypeNotSupportedException() {
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * @param message
+ */
+ public KeyTypeNotSupportedException(String message) {
+ super(message);
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * @param cause
+ */
+ public KeyTypeNotSupportedException(Throwable cause) {
+ super(cause);
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * @param message
+ * @param cause
+ */
+ public KeyTypeNotSupportedException(String message, Throwable cause) {
+ super(message, cause);
+ // TODO Auto-generated constructor stub
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/at/gv/egiz/xmldsig/KeyValueFactory.java b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/xmldsig/KeyValueFactory.java
new file mode 100644
index 00000000..c1772312
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/at/gv/egiz/xmldsig/KeyValueFactory.java
@@ -0,0 +1,279 @@
+/*
+* 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.xmldsig;
+
+import iaik.security.ecc.interfaces.ECDSAParams;
+import iaik.security.ecc.interfaces.ECDSAPublicKey;
+import iaik.security.ecc.math.ecgroup.Coordinate;
+import iaik.security.ecc.math.ecgroup.ECPoint;
+import iaik.security.ecc.math.ecgroup.EllipticCurve;
+import iaik.security.ecc.math.field.BinaryField;
+import iaik.security.ecc.math.field.Field;
+import iaik.security.ecc.math.field.FieldElement;
+import iaik.security.ecc.math.field.PrimeField;
+
+import java.math.BigInteger;
+import java.security.InvalidKeyException;
+import java.security.PublicKey;
+import java.security.interfaces.DSAParams;
+import java.security.interfaces.DSAPublicKey;
+import java.security.interfaces.RSAPublicKey;
+
+import javax.xml.bind.JAXBElement;
+
+import org.w3._2000._09.xmldsig_.DSAKeyValueType;
+import org.w3._2000._09.xmldsig_.RSAKeyValueType;
+import org.w3._2001._04.xmldsig_more_.BasePointParamsType;
+import org.w3._2001._04.xmldsig_more_.CharTwoFieldElemType;
+import org.w3._2001._04.xmldsig_more_.CurveParamsType;
+import org.w3._2001._04.xmldsig_more_.DomainParamsType;
+import org.w3._2001._04.xmldsig_more_.ECDSAKeyValueType;
+import org.w3._2001._04.xmldsig_more_.ECPointType;
+import org.w3._2001._04.xmldsig_more_.ExplicitParamsType;
+import org.w3._2001._04.xmldsig_more_.FieldElemType;
+import org.w3._2001._04.xmldsig_more_.FieldParamsType;
+import org.w3._2001._04.xmldsig_more_.PnBFieldParamsType;
+import org.w3._2001._04.xmldsig_more_.PrimeFieldElemType;
+import org.w3._2001._04.xmldsig_more_.PrimeFieldParamsType;
+import org.w3._2001._04.xmldsig_more_.TnBFieldParamsType;
+import org.w3._2001._04.xmldsig_more_.DomainParamsType.NamedCurve;
+
+public class KeyValueFactory {
+
+ private static byte[] bigInteger2byteArray(BigInteger bigPositiveInt) {
+ if (bigPositiveInt == null)
+ throw new NullPointerException("Argument 'bigPositiveInt' must not be null");
+ if (bigPositiveInt.signum() != 1)
+ throw new IllegalArgumentException("Argument 'bigPositiveInt' must not be negative");
+
+ byte[] byteRepresentation = bigPositiveInt.toByteArray();
+ if (byteRepresentation[0] == 0) {
+ byte[] oldByteRepresentation = byteRepresentation;
+ byteRepresentation = new byte[oldByteRepresentation.length - 1];
+ System.arraycopy(oldByteRepresentation, 1, byteRepresentation, 0, oldByteRepresentation.length - 1);
+ }
+ return byteRepresentation;
+ }
+
+ org.w3._2001._04.xmldsig_more_.ObjectFactory ecFactory = new org.w3._2001._04.xmldsig_more_.ObjectFactory();
+
+ org.w3._2000._09.xmldsig_.ObjectFactory dsFactory = new org.w3._2000._09.xmldsig_.ObjectFactory();
+
+ public JAXBElement<?> createKeyValue(PublicKey publicKey) throws KeyTypeNotSupportedException {
+
+ if (publicKey instanceof RSAPublicKey) {
+ RSAKeyValueType keyValueType = createRSAKeyValueType((RSAPublicKey) publicKey);
+ return dsFactory.createRSAKeyValue(keyValueType);
+ } else if (publicKey instanceof DSAPublicKey) {
+ DSAKeyValueType keyValueType = createKeyValueType((DSAPublicKey) publicKey);
+ return dsFactory.createDSAKeyValue(keyValueType);
+ } else if (publicKey instanceof ECDSAPublicKey) {
+ ECDSAKeyValueType keyValueType = createKeyValueType((ECDSAPublicKey) publicKey);
+ return ecFactory.createECDSAKeyValue(keyValueType);
+ } else if ("EC".equals(publicKey.getAlgorithm())) {
+ byte[] encoded = publicKey.getEncoded();
+ try {
+ iaik.security.ecc.ecdsa.ECPublicKey key = new iaik.security.ecc.ecdsa.ECPublicKey(encoded);
+ ECDSAKeyValueType keyValueType = createKeyValueType(key);
+ return ecFactory.createECDSAKeyValue(keyValueType);
+ } catch (InvalidKeyException e) {
+ throw new KeyTypeNotSupportedException("Public key of type "
+ + publicKey.getAlgorithm() + " (" + publicKey.getClass()
+ + ") not supported.");
+ }
+ } else {
+ throw new KeyTypeNotSupportedException("Public key of type "
+ + publicKey.getAlgorithm() + " (" + publicKey.getClass()
+ + ") not supported.");
+ }
+
+ }
+
+ public RSAKeyValueType createRSAKeyValueType(RSAPublicKey publicKey) {
+
+ RSAKeyValueType keyValueType = dsFactory.createRSAKeyValueType();
+ keyValueType.setExponent(bigInteger2byteArray(publicKey.getPublicExponent()));
+ keyValueType.setModulus(bigInteger2byteArray(publicKey.getModulus()));
+
+ return keyValueType;
+ }
+
+ public DSAKeyValueType createKeyValueType(DSAPublicKey publicKey) {
+
+ DSAKeyValueType keyValueType = dsFactory.createDSAKeyValueType();
+
+ if (publicKey.getParams() != null) {
+ // P, Q, G
+ DSAParams params = publicKey.getParams();
+ if (params.getP() != null && params.getQ() != null) {
+ keyValueType.setP(bigInteger2byteArray(params.getP()));
+ keyValueType.setQ(bigInteger2byteArray(params.getQ()));
+ }
+ if (params.getG() != null) {
+ keyValueType.setG(bigInteger2byteArray(params.getG()));
+ }
+ }
+ //
+ keyValueType.setY(bigInteger2byteArray(publicKey.getY()));
+
+ return keyValueType;
+ }
+
+ public ECDSAKeyValueType createKeyValueType(ECDSAPublicKey publicKey) throws KeyTypeNotSupportedException {
+
+ ECDSAKeyValueType keyValueType = ecFactory.createECDSAKeyValueType();
+
+ ECDSAParams params = publicKey.getParameter();
+ if (params != null) {
+ keyValueType.setDomainParameters(createDomainParamsType(params));
+ }
+
+ if (!publicKey.getW().isInfinity()) {
+ keyValueType.setPublicKey(createPointType(publicKey.getW()));
+ }
+
+ return keyValueType;
+ }
+
+ public ECPointType createPointType(ECPoint point) throws KeyTypeNotSupportedException {
+ ECPointType pointType = ecFactory.createECPointType();
+ Coordinate affine = point.getCoordinates().toAffine();
+ pointType.setX(createFieldElemType(affine.getX()));
+ pointType.setY(createFieldElemType(affine.getY()));
+ return pointType;
+ }
+
+ public FieldElemType createFieldElemType(FieldElement fieldElement) throws KeyTypeNotSupportedException {
+ int fieldId = fieldElement.getField().getFieldId();
+ if (fieldId == PrimeField.PRIME_FIELD_ID) {
+ PrimeFieldElemType fieldElemType = ecFactory.createPrimeFieldElemType();
+ fieldElemType.setValue(fieldElement.toBigInt());
+ return fieldElemType;
+ } else if (fieldId == BinaryField.BINARY_FIELD_ID) {
+ CharTwoFieldElemType fieldElemType = ecFactory.createCharTwoFieldElemType();
+ fieldElemType.setValue(fieldElement.toByteArray());
+ return fieldElemType;
+ } else {
+ throw new KeyTypeNotSupportedException("Field element of type " + fieldId + " not supported.");
+ }
+ }
+
+ public FieldParamsType createFieldParamsType(Field field) throws KeyTypeNotSupportedException {
+
+ if (field.getFieldId() == PrimeField.PRIME_FIELD_ID) {
+ // PrimeFieldParamsType
+ PrimeFieldParamsType primeFieldParamsType = ecFactory.createPrimeFieldParamsType();
+ primeFieldParamsType.setP(field.getSize());
+ return primeFieldParamsType;
+ } else if (field.getFieldId() == BinaryField.BINARY_FIELD_ID && field instanceof BinaryField) {
+ // CharTwoFieldParamsType
+
+ BinaryField binaryField = (BinaryField) field;
+ int[] irreduciblePolynomial = binaryField.getIrreduciblePolynomial();
+
+ // The irreducible polynomial as a BinaryFieldValue
+ FieldElement irreducible = binaryField.newElement(irreduciblePolynomial);
+
+ int order = binaryField.getOrder();
+ int[] coeffPositions = new int[3];
+
+ // Get coefficients of irreducible polynomial
+ int coeffCount = 2;
+ for (int i = 1; i < order -1; i++) {
+ if (irreducible.testBit(i)) {
+ coeffPositions[coeffCount - 2] = i;
+ coeffCount++;
+ if (coeffCount == 5)
+ break;
+ }
+ }
+ // detect if trinomial or pentanomial base is present...
+ switch (coeffCount) {
+ case 3:
+ // trinomial base
+ TnBFieldParamsType tnBFieldParamsType = ecFactory.createTnBFieldParamsType();
+ tnBFieldParamsType.setM(BigInteger.valueOf(binaryField.getOrder()));
+ tnBFieldParamsType.setK(BigInteger.valueOf(coeffPositions[0]));
+ return tnBFieldParamsType;
+
+ case 5:
+ // pentanomial base
+ PnBFieldParamsType pnBFieldParamsType = ecFactory.createPnBFieldParamsType();
+ pnBFieldParamsType.setM(BigInteger.valueOf(binaryField.getOrder()));
+ pnBFieldParamsType.setK1(BigInteger.valueOf(coeffPositions[0]));
+ pnBFieldParamsType.setK2(BigInteger.valueOf(coeffPositions[1]));
+ pnBFieldParamsType.setK3(BigInteger.valueOf(coeffPositions[2]));
+ return pnBFieldParamsType;
+
+ default:
+ throw new KeyTypeNotSupportedException("Only trinomial and pentanomial base is supported.");
+ }
+
+ } else {
+ throw new KeyTypeNotSupportedException("Field element of type " + field.getFieldId() + " not supported.");
+ }
+
+ }
+
+ public DomainParamsType createDomainParamsType(ECDSAParams params) throws KeyTypeNotSupportedException {
+
+ DomainParamsType domainParamsType = ecFactory.createDomainParamsType();
+ EllipticCurve curve = params.getG().getCurve();
+
+ String oid = params.getOID();
+ if (oid != null) {
+ // NamedCurve
+ NamedCurve namedCurve = ecFactory.createDomainParamsTypeNamedCurve();
+ namedCurve.setURN("urn:oid:" + oid);
+ domainParamsType.setNamedCurve(namedCurve);
+ } else {
+ // Explicit parameters
+ ExplicitParamsType explicitParamsType = ecFactory.createExplicitParamsType();
+ explicitParamsType.setFieldParams(createFieldParamsType(curve.getField()));
+
+ CurveParamsType curveParamsType = ecFactory.createCurveParamsType();
+
+ // curve coefficients
+ curveParamsType.setA(createFieldElemType(curve.getA()));
+ curveParamsType.setB(createFieldElemType(curve.getB()));
+
+ // seed
+ if (params.getS() != null) {
+ curveParamsType.setSeed(bigInteger2byteArray(params.getS()));
+ }
+ explicitParamsType.setCurveParams(curveParamsType);
+
+
+ // BasePoint parameters
+ BasePointParamsType basePointParamsType = ecFactory.createBasePointParamsType();
+ if (!params.getG().isInfinity()) {
+ basePointParamsType.setBasePoint(createPointType(params.getG()));
+ }
+ basePointParamsType.setOrder(params.getR());
+ if(params.getK() != null) {
+ basePointParamsType.setCofactor(params.getK());
+ }
+ explicitParamsType.setBasePointParams(basePointParamsType);
+
+ domainParamsType.setExplicitParams(explicitParamsType);
+ }
+
+ return domainParamsType;
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ActionType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ActionType.java
new file mode 100644
index 00000000..d2b96381
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ActionType.java
@@ -0,0 +1,96 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * <p>Java class for ActionType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ActionType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ * &lt;attribute name="Namespace" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ActionType", propOrder = {
+ "value"
+})
+public class ActionType {
+
+ @XmlValue
+ protected String value;
+ @XmlAttribute(name = "Namespace")
+ @XmlSchemaType(name = "anyURI")
+ protected String namespace;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the namespace property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getNamespace() {
+ return namespace;
+ }
+
+ /**
+ * Sets the value of the namespace property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setNamespace(String value) {
+ this.namespace = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AdviceType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AdviceType.java
new file mode 100644
index 00000000..d2630fac
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AdviceType.java
@@ -0,0 +1,89 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for AdviceType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AdviceType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice maxOccurs="unbounded" minOccurs="0">
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}AssertionIDReference"/>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}Assertion"/>
+ * &lt;any processContents='lax' namespace='##other'/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AdviceType", propOrder = {
+ "assertionIDReferenceOrAssertionOrAny"
+})
+public class AdviceType {
+
+ @XmlElementRefs({
+ @XmlElementRef(name = "Assertion", namespace = "urn:oasis:names:tc:SAML:1.0:assertion", type = JAXBElement.class),
+ @XmlElementRef(name = "AssertionIDReference", namespace = "urn:oasis:names:tc:SAML:1.0:assertion", type = JAXBElement.class)
+ })
+ @XmlAnyElement(lax = true)
+ protected List<Object> assertionIDReferenceOrAssertionOrAny;
+
+ /**
+ * Gets the value of the assertionIDReferenceOrAssertionOrAny property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the assertionIDReferenceOrAssertionOrAny property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAssertionIDReferenceOrAssertionOrAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Element }
+ * {@link JAXBElement }{@code <}{@link AssertionType }{@code >}
+ * {@link JAXBElement }{@code <}{@link String }{@code >}
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getAssertionIDReferenceOrAssertionOrAny() {
+ if (assertionIDReferenceOrAssertionOrAny == null) {
+ assertionIDReferenceOrAssertionOrAny = new ArrayList<Object>();
+ }
+ return this.assertionIDReferenceOrAssertionOrAny;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AnyType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AnyType.java
new file mode 100644
index 00000000..a9f7dd8d
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AnyType.java
@@ -0,0 +1,87 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * This type is introduced to avoid the DOM Element binding of
+ * AttributeValue and SubjectConfirmationData, specified as
+ * <pre>
+ * &lt;element name="AttributeValue" type="anyType"/>
+ * &lt;element name="SubjectConfirmationData" type="anyType"/>
+ * </pre>
+ * in the original SAML 1.0 Assertion schema.
+ *
+ * <p>Java class for AnyType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AnyType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AnyType", propOrder = {
+ "content"
+})
+public class AnyType {
+
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Object }
+ * {@link String }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AssertionType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AssertionType.java
new file mode 100644
index 00000000..2a108984
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AssertionType.java
@@ -0,0 +1,318 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+import org.w3._2000._09.xmldsig_.SignatureType;
+
+
+/**
+ * <p>Java class for AssertionType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AssertionType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}Conditions" minOccurs="0"/>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}Advice" minOccurs="0"/>
+ * &lt;choice maxOccurs="unbounded">
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}Statement"/>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}SubjectStatement"/>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}AuthenticationStatement"/>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}AuthorizationDecisionStatement"/>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}AttributeStatement"/>
+ * &lt;/choice>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Signature" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="MajorVersion" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+ * &lt;attribute name="MinorVersion" use="required" type="{http://www.w3.org/2001/XMLSchema}integer" />
+ * &lt;attribute name="AssertionID" use="required" type="{urn:oasis:names:tc:SAML:1.0:assertion}IDType" />
+ * &lt;attribute name="Issuer" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="IssueInstant" use="required" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AssertionType", propOrder = {
+ "conditions",
+ "advice",
+ "statementOrSubjectStatementOrAuthenticationStatement",
+ "signature"
+})
+public class AssertionType {
+
+ @XmlElement(name = "Conditions")
+ protected ConditionsType conditions;
+ @XmlElement(name = "Advice")
+ protected AdviceType advice;
+ @XmlElements({
+ @XmlElement(name = "Statement"),
+ @XmlElement(name = "AttributeStatement", type = AttributeStatementType.class),
+ @XmlElement(name = "SubjectStatement", type = SubjectStatementAbstractType.class),
+ @XmlElement(name = "AuthorizationDecisionStatement", type = AuthorizationDecisionStatementType.class),
+ @XmlElement(name = "AuthenticationStatement", type = AuthenticationStatementType.class)
+ })
+ protected List<StatementAbstractType> statementOrSubjectStatementOrAuthenticationStatement;
+ @XmlElement(name = "Signature", namespace = "http://www.w3.org/2000/09/xmldsig#")
+ protected SignatureType signature;
+ @XmlAttribute(name = "MajorVersion", required = true)
+ protected BigInteger majorVersion;
+ @XmlAttribute(name = "MinorVersion", required = true)
+ protected BigInteger minorVersion;
+ @XmlAttribute(name = "AssertionID", required = true)
+ protected String assertionID;
+ @XmlAttribute(name = "Issuer", required = true)
+ protected String issuer;
+ @XmlAttribute(name = "IssueInstant", required = true)
+ @XmlSchemaType(name = "dateTime")
+ protected XMLGregorianCalendar issueInstant;
+
+ /**
+ * Gets the value of the conditions property.
+ *
+ * @return
+ * possible object is
+ * {@link ConditionsType }
+ *
+ */
+ public ConditionsType getConditions() {
+ return conditions;
+ }
+
+ /**
+ * Sets the value of the conditions property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ConditionsType }
+ *
+ */
+ public void setConditions(ConditionsType value) {
+ this.conditions = value;
+ }
+
+ /**
+ * Gets the value of the advice property.
+ *
+ * @return
+ * possible object is
+ * {@link AdviceType }
+ *
+ */
+ public AdviceType getAdvice() {
+ return advice;
+ }
+
+ /**
+ * Sets the value of the advice property.
+ *
+ * @param value
+ * allowed object is
+ * {@link AdviceType }
+ *
+ */
+ public void setAdvice(AdviceType value) {
+ this.advice = value;
+ }
+
+ /**
+ * Gets the value of the statementOrSubjectStatementOrAuthenticationStatement property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the statementOrSubjectStatementOrAuthenticationStatement property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getStatementOrSubjectStatementOrAuthenticationStatement().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link StatementAbstractType }
+ * {@link AttributeStatementType }
+ * {@link SubjectStatementAbstractType }
+ * {@link AuthorizationDecisionStatementType }
+ * {@link AuthenticationStatementType }
+ *
+ *
+ */
+ public List<StatementAbstractType> getStatementOrSubjectStatementOrAuthenticationStatement() {
+ if (statementOrSubjectStatementOrAuthenticationStatement == null) {
+ statementOrSubjectStatementOrAuthenticationStatement = new ArrayList<StatementAbstractType>();
+ }
+ return this.statementOrSubjectStatementOrAuthenticationStatement;
+ }
+
+ /**
+ * Gets the value of the signature property.
+ *
+ * @return
+ * possible object is
+ * {@link SignatureType }
+ *
+ */
+ public SignatureType getSignature() {
+ return signature;
+ }
+
+ /**
+ * Sets the value of the signature property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignatureType }
+ *
+ */
+ public void setSignature(SignatureType value) {
+ this.signature = value;
+ }
+
+ /**
+ * Gets the value of the majorVersion property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getMajorVersion() {
+ return majorVersion;
+ }
+
+ /**
+ * Sets the value of the majorVersion property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setMajorVersion(BigInteger value) {
+ this.majorVersion = value;
+ }
+
+ /**
+ * Gets the value of the minorVersion property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getMinorVersion() {
+ return minorVersion;
+ }
+
+ /**
+ * Sets the value of the minorVersion property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setMinorVersion(BigInteger value) {
+ this.minorVersion = value;
+ }
+
+ /**
+ * Gets the value of the assertionID property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAssertionID() {
+ return assertionID;
+ }
+
+ /**
+ * Sets the value of the assertionID property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAssertionID(String value) {
+ this.assertionID = value;
+ }
+
+ /**
+ * Gets the value of the issuer property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getIssuer() {
+ return issuer;
+ }
+
+ /**
+ * Sets the value of the issuer property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIssuer(String value) {
+ this.issuer = value;
+ }
+
+ /**
+ * Gets the value of the issueInstant property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public XMLGregorianCalendar getIssueInstant() {
+ return issueInstant;
+ }
+
+ /**
+ * Sets the value of the issueInstant property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public void setIssueInstant(XMLGregorianCalendar value) {
+ this.issueInstant = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AttributeDesignatorType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AttributeDesignatorType.java
new file mode 100644
index 00000000..12bd8738
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AttributeDesignatorType.java
@@ -0,0 +1,98 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for AttributeDesignatorType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AttributeDesignatorType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="AttributeName" use="required" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="AttributeNamespace" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AttributeDesignatorType")
+@XmlSeeAlso({
+ AttributeType.class
+})
+public class AttributeDesignatorType {
+
+ @XmlAttribute(name = "AttributeName", required = true)
+ protected String attributeName;
+ @XmlAttribute(name = "AttributeNamespace", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String attributeNamespace;
+
+ /**
+ * Gets the value of the attributeName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAttributeName() {
+ return attributeName;
+ }
+
+ /**
+ * Sets the value of the attributeName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAttributeName(String value) {
+ this.attributeName = value;
+ }
+
+ /**
+ * Gets the value of the attributeNamespace property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAttributeNamespace() {
+ return attributeNamespace;
+ }
+
+ /**
+ * Sets the value of the attributeNamespace property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAttributeNamespace(String value) {
+ this.attributeNamespace = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AttributeStatementType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AttributeStatementType.java
new file mode 100644
index 00000000..f710b74b
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AttributeStatementType.java
@@ -0,0 +1,78 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for AttributeStatementType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AttributeStatementType">
+ * &lt;complexContent>
+ * &lt;extension base="{urn:oasis:names:tc:SAML:1.0:assertion}SubjectStatementAbstractType">
+ * &lt;sequence>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}Attribute" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AttributeStatementType", propOrder = {
+ "attribute"
+})
+public class AttributeStatementType
+ extends SubjectStatementAbstractType
+{
+
+ @XmlElement(name = "Attribute", required = true)
+ protected List<AttributeType> attribute;
+
+ /**
+ * Gets the value of the attribute property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the attribute property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAttribute().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link AttributeType }
+ *
+ *
+ */
+ public List<AttributeType> getAttribute() {
+ if (attribute == null) {
+ attribute = new ArrayList<AttributeType>();
+ }
+ return this.attribute;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AttributeType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AttributeType.java
new file mode 100644
index 00000000..31d258a9
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AttributeType.java
@@ -0,0 +1,78 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for AttributeType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AttributeType">
+ * &lt;complexContent>
+ * &lt;extension base="{urn:oasis:names:tc:SAML:1.0:assertion}AttributeDesignatorType">
+ * &lt;sequence>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}AttributeValue" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AttributeType", propOrder = {
+ "attributeValue"
+})
+public class AttributeType
+ extends AttributeDesignatorType
+{
+
+ @XmlElement(name = "AttributeValue", required = true)
+ protected List<AnyType> attributeValue;
+
+ /**
+ * Gets the value of the attributeValue property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the attributeValue property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAttributeValue().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link AnyType }
+ *
+ *
+ */
+ public List<AnyType> getAttributeValue() {
+ if (attributeValue == null) {
+ attributeValue = new ArrayList<AnyType>();
+ }
+ return this.attributeValue;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AudienceRestrictionConditionType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AudienceRestrictionConditionType.java
new file mode 100644
index 00000000..61091b73
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AudienceRestrictionConditionType.java
@@ -0,0 +1,80 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for AudienceRestrictionConditionType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AudienceRestrictionConditionType">
+ * &lt;complexContent>
+ * &lt;extension base="{urn:oasis:names:tc:SAML:1.0:assertion}ConditionAbstractType">
+ * &lt;sequence>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}Audience" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AudienceRestrictionConditionType", propOrder = {
+ "audience"
+})
+public class AudienceRestrictionConditionType
+ extends ConditionAbstractType
+{
+
+ @XmlElement(name = "Audience", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected List<String> audience;
+
+ /**
+ * Gets the value of the audience property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the audience property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAudience().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getAudience() {
+ if (audience == null) {
+ audience = new ArrayList<String>();
+ }
+ return this.audience;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AuthenticationStatementType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AuthenticationStatementType.java
new file mode 100644
index 00000000..93c24117
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AuthenticationStatementType.java
@@ -0,0 +1,165 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * <p>Java class for AuthenticationStatementType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AuthenticationStatementType">
+ * &lt;complexContent>
+ * &lt;extension base="{urn:oasis:names:tc:SAML:1.0:assertion}SubjectStatementAbstractType">
+ * &lt;sequence>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}SubjectLocality" minOccurs="0"/>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}AuthorityBinding" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="AuthenticationMethod" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;attribute name="AuthenticationInstant" use="required" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AuthenticationStatementType", propOrder = {
+ "subjectLocality",
+ "authorityBinding"
+})
+public class AuthenticationStatementType
+ extends SubjectStatementAbstractType
+{
+
+ @XmlElement(name = "SubjectLocality")
+ protected SubjectLocalityType subjectLocality;
+ @XmlElement(name = "AuthorityBinding")
+ protected List<AuthorityBindingType> authorityBinding;
+ @XmlAttribute(name = "AuthenticationMethod", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String authenticationMethod;
+ @XmlAttribute(name = "AuthenticationInstant", required = true)
+ @XmlSchemaType(name = "dateTime")
+ protected XMLGregorianCalendar authenticationInstant;
+
+ /**
+ * Gets the value of the subjectLocality property.
+ *
+ * @return
+ * possible object is
+ * {@link SubjectLocalityType }
+ *
+ */
+ public SubjectLocalityType getSubjectLocality() {
+ return subjectLocality;
+ }
+
+ /**
+ * Sets the value of the subjectLocality property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SubjectLocalityType }
+ *
+ */
+ public void setSubjectLocality(SubjectLocalityType value) {
+ this.subjectLocality = value;
+ }
+
+ /**
+ * Gets the value of the authorityBinding property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the authorityBinding property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAuthorityBinding().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link AuthorityBindingType }
+ *
+ *
+ */
+ public List<AuthorityBindingType> getAuthorityBinding() {
+ if (authorityBinding == null) {
+ authorityBinding = new ArrayList<AuthorityBindingType>();
+ }
+ return this.authorityBinding;
+ }
+
+ /**
+ * Gets the value of the authenticationMethod property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAuthenticationMethod() {
+ return authenticationMethod;
+ }
+
+ /**
+ * Sets the value of the authenticationMethod property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAuthenticationMethod(String value) {
+ this.authenticationMethod = value;
+ }
+
+ /**
+ * Gets the value of the authenticationInstant property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public XMLGregorianCalendar getAuthenticationInstant() {
+ return authenticationInstant;
+ }
+
+ /**
+ * Sets the value of the authenticationInstant property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public void setAuthenticationInstant(XMLGregorianCalendar value) {
+ this.authenticationInstant = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AuthorityBindingType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AuthorityBindingType.java
new file mode 100644
index 00000000..8663f35a
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AuthorityBindingType.java
@@ -0,0 +1,123 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.namespace.QName;
+
+
+/**
+ * <p>Java class for AuthorityBindingType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AuthorityBindingType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="AuthorityKind" use="required" type="{http://www.w3.org/2001/XMLSchema}QName" />
+ * &lt;attribute name="Location" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;attribute name="Binding" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AuthorityBindingType")
+public class AuthorityBindingType {
+
+ @XmlAttribute(name = "AuthorityKind", required = true)
+ protected QName authorityKind;
+ @XmlAttribute(name = "Location", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String location;
+ @XmlAttribute(name = "Binding", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String binding;
+
+ /**
+ * Gets the value of the authorityKind property.
+ *
+ * @return
+ * possible object is
+ * {@link QName }
+ *
+ */
+ public QName getAuthorityKind() {
+ return authorityKind;
+ }
+
+ /**
+ * Sets the value of the authorityKind property.
+ *
+ * @param value
+ * allowed object is
+ * {@link QName }
+ *
+ */
+ public void setAuthorityKind(QName value) {
+ this.authorityKind = value;
+ }
+
+ /**
+ * Gets the value of the location property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getLocation() {
+ return location;
+ }
+
+ /**
+ * Sets the value of the location property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setLocation(String value) {
+ this.location = value;
+ }
+
+ /**
+ * Gets the value of the binding property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getBinding() {
+ return binding;
+ }
+
+ /**
+ * Sets the value of the binding property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setBinding(String value) {
+ this.binding = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AuthorizationDecisionStatementType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AuthorizationDecisionStatementType.java
new file mode 100644
index 00000000..b6b37c90
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/AuthorizationDecisionStatementType.java
@@ -0,0 +1,163 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for AuthorizationDecisionStatementType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AuthorizationDecisionStatementType">
+ * &lt;complexContent>
+ * &lt;extension base="{urn:oasis:names:tc:SAML:1.0:assertion}SubjectStatementAbstractType">
+ * &lt;sequence>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}Action" maxOccurs="unbounded"/>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}Evidence" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Resource" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;attribute name="Decision" use="required" type="{urn:oasis:names:tc:SAML:1.0:assertion}DecisionType" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AuthorizationDecisionStatementType", propOrder = {
+ "action",
+ "evidence"
+})
+public class AuthorizationDecisionStatementType
+ extends SubjectStatementAbstractType
+{
+
+ @XmlElement(name = "Action", required = true)
+ protected List<ActionType> action;
+ @XmlElement(name = "Evidence")
+ protected EvidenceType evidence;
+ @XmlAttribute(name = "Resource", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String resource;
+ @XmlAttribute(name = "Decision", required = true)
+ protected DecisionType decision;
+
+ /**
+ * Gets the value of the action property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the action property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAction().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link ActionType }
+ *
+ *
+ */
+ public List<ActionType> getAction() {
+ if (action == null) {
+ action = new ArrayList<ActionType>();
+ }
+ return this.action;
+ }
+
+ /**
+ * Gets the value of the evidence property.
+ *
+ * @return
+ * possible object is
+ * {@link EvidenceType }
+ *
+ */
+ public EvidenceType getEvidence() {
+ return evidence;
+ }
+
+ /**
+ * Sets the value of the evidence property.
+ *
+ * @param value
+ * allowed object is
+ * {@link EvidenceType }
+ *
+ */
+ public void setEvidence(EvidenceType value) {
+ this.evidence = value;
+ }
+
+ /**
+ * Gets the value of the resource property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getResource() {
+ return resource;
+ }
+
+ /**
+ * Sets the value of the resource property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setResource(String value) {
+ this.resource = value;
+ }
+
+ /**
+ * Gets the value of the decision property.
+ *
+ * @return
+ * possible object is
+ * {@link DecisionType }
+ *
+ */
+ public DecisionType getDecision() {
+ return decision;
+ }
+
+ /**
+ * Sets the value of the decision property.
+ *
+ * @param value
+ * allowed object is
+ * {@link DecisionType }
+ *
+ */
+ public void setDecision(DecisionType value) {
+ this.decision = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ConditionAbstractType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ConditionAbstractType.java
new file mode 100644
index 00000000..965bb4bd
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ConditionAbstractType.java
@@ -0,0 +1,41 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ConditionAbstractType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ConditionAbstractType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ConditionAbstractType")
+@XmlSeeAlso({
+ AudienceRestrictionConditionType.class
+})
+public abstract class ConditionAbstractType {
+
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ConditionsType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ConditionsType.java
new file mode 100644
index 00000000..42c1e1af
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ConditionsType.java
@@ -0,0 +1,141 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * <p>Java class for ConditionsType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ConditionsType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice maxOccurs="unbounded" minOccurs="0">
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}AudienceRestrictionCondition"/>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}Condition"/>
+ * &lt;/choice>
+ * &lt;attribute name="NotBefore" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
+ * &lt;attribute name="NotOnOrAfter" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ConditionsType", propOrder = {
+ "audienceRestrictionConditionOrCondition"
+})
+public class ConditionsType {
+
+ @XmlElements({
+ @XmlElement(name = "Condition"),
+ @XmlElement(name = "AudienceRestrictionCondition", type = AudienceRestrictionConditionType.class)
+ })
+ protected List<ConditionAbstractType> audienceRestrictionConditionOrCondition;
+ @XmlAttribute(name = "NotBefore")
+ @XmlSchemaType(name = "dateTime")
+ protected XMLGregorianCalendar notBefore;
+ @XmlAttribute(name = "NotOnOrAfter")
+ @XmlSchemaType(name = "dateTime")
+ protected XMLGregorianCalendar notOnOrAfter;
+
+ /**
+ * Gets the value of the audienceRestrictionConditionOrCondition property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the audienceRestrictionConditionOrCondition property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAudienceRestrictionConditionOrCondition().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link ConditionAbstractType }
+ * {@link AudienceRestrictionConditionType }
+ *
+ *
+ */
+ public List<ConditionAbstractType> getAudienceRestrictionConditionOrCondition() {
+ if (audienceRestrictionConditionOrCondition == null) {
+ audienceRestrictionConditionOrCondition = new ArrayList<ConditionAbstractType>();
+ }
+ return this.audienceRestrictionConditionOrCondition;
+ }
+
+ /**
+ * Gets the value of the notBefore property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public XMLGregorianCalendar getNotBefore() {
+ return notBefore;
+ }
+
+ /**
+ * Sets the value of the notBefore property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public void setNotBefore(XMLGregorianCalendar value) {
+ this.notBefore = value;
+ }
+
+ /**
+ * Gets the value of the notOnOrAfter property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public XMLGregorianCalendar getNotOnOrAfter() {
+ return notOnOrAfter;
+ }
+
+ /**
+ * Sets the value of the notOnOrAfter property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public void setNotOnOrAfter(XMLGregorianCalendar value) {
+ this.notOnOrAfter = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/DecisionType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/DecisionType.java
new file mode 100644
index 00000000..e5efbf0a
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/DecisionType.java
@@ -0,0 +1,61 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DecisionType.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="DecisionType">
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="Permit"/>
+ * &lt;enumeration value="Deny"/>
+ * &lt;enumeration value="Indeterminate"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ *
+ */
+@XmlType(name = "DecisionType")
+@XmlEnum
+public enum DecisionType {
+
+ @XmlEnumValue("Permit")
+ PERMIT("Permit"),
+ @XmlEnumValue("Deny")
+ DENY("Deny"),
+ @XmlEnumValue("Indeterminate")
+ INDETERMINATE("Indeterminate");
+ private final String value;
+
+ DecisionType(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static DecisionType fromValue(String v) {
+ for (DecisionType c: DecisionType.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ throw new IllegalArgumentException(v);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/EvidenceType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/EvidenceType.java
new file mode 100644
index 00000000..74f74440
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/EvidenceType.java
@@ -0,0 +1,82 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for EvidenceType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="EvidenceType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice maxOccurs="unbounded">
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}AssertionIDReference"/>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}Assertion"/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "EvidenceType", propOrder = {
+ "assertionIDReferenceOrAssertion"
+})
+public class EvidenceType {
+
+ @XmlElements({
+ @XmlElement(name = "AssertionIDReference", type = String.class),
+ @XmlElement(name = "Assertion", type = AssertionType.class)
+ })
+ protected List<Object> assertionIDReferenceOrAssertion;
+
+ /**
+ * Gets the value of the assertionIDReferenceOrAssertion property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the assertionIDReferenceOrAssertion property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAssertionIDReferenceOrAssertion().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ * {@link AssertionType }
+ *
+ *
+ */
+ public List<Object> getAssertionIDReferenceOrAssertion() {
+ if (assertionIDReferenceOrAssertion == null) {
+ assertionIDReferenceOrAssertion = new ArrayList<Object>();
+ }
+ return this.assertionIDReferenceOrAssertion;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/NameIdentifierType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/NameIdentifierType.java
new file mode 100644
index 00000000..34fed5d2
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/NameIdentifierType.java
@@ -0,0 +1,123 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * <p>Java class for NameIdentifierType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="NameIdentifierType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>string">
+ * &lt;attribute name="NameQualifier" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="Format" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "NameIdentifierType", propOrder = {
+ "value"
+})
+public class NameIdentifierType {
+
+ @XmlValue
+ protected String value;
+ @XmlAttribute(name = "NameQualifier")
+ protected String nameQualifier;
+ @XmlAttribute(name = "Format")
+ @XmlSchemaType(name = "anyURI")
+ protected String format;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the nameQualifier property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getNameQualifier() {
+ return nameQualifier;
+ }
+
+ /**
+ * Sets the value of the nameQualifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setNameQualifier(String value) {
+ this.nameQualifier = value;
+ }
+
+ /**
+ * Gets the value of the format property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getFormat() {
+ return format;
+ }
+
+ /**
+ * Sets the value of the format property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setFormat(String value) {
+ this.format = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ObjectFactory.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ObjectFactory.java
new file mode 100644
index 00000000..d5165b71
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/ObjectFactory.java
@@ -0,0 +1,418 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each
+ * Java content interface and Java element interface
+ * generated in the oasis.names.tc.saml._1_0.assertion package.
+ * <p>An ObjectFactory allows you to programatically
+ * construct new instances of the Java representation
+ * for XML content. The Java representation of XML
+ * content can consist of schema derived interfaces
+ * and classes representing the binding of schema
+ * type definitions, element declarations and model
+ * groups. Factory methods for each of these are
+ * provided in this class.
+ *
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _Assertion_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "Assertion");
+ private final static QName _AuthorityBinding_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "AuthorityBinding");
+ private final static QName _Evidence_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "Evidence");
+ private final static QName _NameIdentifier_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "NameIdentifier");
+ private final static QName _AudienceRestrictionCondition_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "AudienceRestrictionCondition");
+ private final static QName _AuthorizationDecisionStatement_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "AuthorizationDecisionStatement");
+ private final static QName _AssertionIDReference_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "AssertionIDReference");
+ private final static QName _AttributeDesignator_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "AttributeDesignator");
+ private final static QName _Subject_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "Subject");
+ private final static QName _SubjectLocality_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "SubjectLocality");
+ private final static QName _Advice_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "Advice");
+ private final static QName _Action_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "Action");
+ private final static QName _Audience_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "Audience");
+ private final static QName _Attribute_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "Attribute");
+ private final static QName _AuthenticationStatement_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "AuthenticationStatement");
+ private final static QName _AttributeStatement_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "AttributeStatement");
+ private final static QName _ConfirmationMethod_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "ConfirmationMethod");
+ private final static QName _Condition_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "Condition");
+ private final static QName _Conditions_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "Conditions");
+ private final static QName _SubjectConfirmationData_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "SubjectConfirmationData");
+ private final static QName _SubjectStatement_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "SubjectStatement");
+ private final static QName _Statement_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "Statement");
+ private final static QName _SubjectConfirmation_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "SubjectConfirmation");
+ private final static QName _AttributeValue_QNAME = new QName("urn:oasis:names:tc:SAML:1.0:assertion", "AttributeValue");
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: oasis.names.tc.saml._1_0.assertion
+ *
+ */
+ public ObjectFactory() {
+ }
+
+ /**
+ * Create an instance of {@link AnyType }
+ *
+ */
+ public AnyType createAnyType() {
+ return new AnyType();
+ }
+
+ /**
+ * Create an instance of {@link ActionType }
+ *
+ */
+ public ActionType createActionType() {
+ return new ActionType();
+ }
+
+ /**
+ * Create an instance of {@link AttributeDesignatorType }
+ *
+ */
+ public AttributeDesignatorType createAttributeDesignatorType() {
+ return new AttributeDesignatorType();
+ }
+
+ /**
+ * Create an instance of {@link SubjectConfirmationType }
+ *
+ */
+ public SubjectConfirmationType createSubjectConfirmationType() {
+ return new SubjectConfirmationType();
+ }
+
+ /**
+ * Create an instance of {@link SubjectLocalityType }
+ *
+ */
+ public SubjectLocalityType createSubjectLocalityType() {
+ return new SubjectLocalityType();
+ }
+
+ /**
+ * Create an instance of {@link AudienceRestrictionConditionType }
+ *
+ */
+ public AudienceRestrictionConditionType createAudienceRestrictionConditionType() {
+ return new AudienceRestrictionConditionType();
+ }
+
+ /**
+ * Create an instance of {@link AuthenticationStatementType }
+ *
+ */
+ public AuthenticationStatementType createAuthenticationStatementType() {
+ return new AuthenticationStatementType();
+ }
+
+ /**
+ * Create an instance of {@link AssertionType }
+ *
+ */
+ public AssertionType createAssertionType() {
+ return new AssertionType();
+ }
+
+ /**
+ * Create an instance of {@link AuthorityBindingType }
+ *
+ */
+ public AuthorityBindingType createAuthorityBindingType() {
+ return new AuthorityBindingType();
+ }
+
+ /**
+ * Create an instance of {@link AttributeType }
+ *
+ */
+ public AttributeType createAttributeType() {
+ return new AttributeType();
+ }
+
+ /**
+ * Create an instance of {@link AdviceType }
+ *
+ */
+ public AdviceType createAdviceType() {
+ return new AdviceType();
+ }
+
+ /**
+ * Create an instance of {@link EvidenceType }
+ *
+ */
+ public EvidenceType createEvidenceType() {
+ return new EvidenceType();
+ }
+
+ /**
+ * Create an instance of {@link ConditionsType }
+ *
+ */
+ public ConditionsType createConditionsType() {
+ return new ConditionsType();
+ }
+
+ /**
+ * Create an instance of {@link AttributeStatementType }
+ *
+ */
+ public AttributeStatementType createAttributeStatementType() {
+ return new AttributeStatementType();
+ }
+
+ /**
+ * Create an instance of {@link NameIdentifierType }
+ *
+ */
+ public NameIdentifierType createNameIdentifierType() {
+ return new NameIdentifierType();
+ }
+
+ /**
+ * Create an instance of {@link AuthorizationDecisionStatementType }
+ *
+ */
+ public AuthorizationDecisionStatementType createAuthorizationDecisionStatementType() {
+ return new AuthorizationDecisionStatementType();
+ }
+
+ /**
+ * Create an instance of {@link SubjectType }
+ *
+ */
+ public SubjectType createSubjectType() {
+ return new SubjectType();
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AssertionType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "Assertion")
+ public JAXBElement<AssertionType> createAssertion(AssertionType value) {
+ return new JAXBElement<AssertionType>(_Assertion_QNAME, AssertionType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AuthorityBindingType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "AuthorityBinding")
+ public JAXBElement<AuthorityBindingType> createAuthorityBinding(AuthorityBindingType value) {
+ return new JAXBElement<AuthorityBindingType>(_AuthorityBinding_QNAME, AuthorityBindingType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link EvidenceType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "Evidence")
+ public JAXBElement<EvidenceType> createEvidence(EvidenceType value) {
+ return new JAXBElement<EvidenceType>(_Evidence_QNAME, EvidenceType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link NameIdentifierType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "NameIdentifier")
+ public JAXBElement<NameIdentifierType> createNameIdentifier(NameIdentifierType value) {
+ return new JAXBElement<NameIdentifierType>(_NameIdentifier_QNAME, NameIdentifierType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AudienceRestrictionConditionType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "AudienceRestrictionCondition")
+ public JAXBElement<AudienceRestrictionConditionType> createAudienceRestrictionCondition(AudienceRestrictionConditionType value) {
+ return new JAXBElement<AudienceRestrictionConditionType>(_AudienceRestrictionCondition_QNAME, AudienceRestrictionConditionType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AuthorizationDecisionStatementType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "AuthorizationDecisionStatement")
+ public JAXBElement<AuthorizationDecisionStatementType> createAuthorizationDecisionStatement(AuthorizationDecisionStatementType value) {
+ return new JAXBElement<AuthorizationDecisionStatementType>(_AuthorizationDecisionStatement_QNAME, AuthorizationDecisionStatementType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "AssertionIDReference")
+ public JAXBElement<String> createAssertionIDReference(String value) {
+ return new JAXBElement<String>(_AssertionIDReference_QNAME, String.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AttributeDesignatorType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "AttributeDesignator")
+ public JAXBElement<AttributeDesignatorType> createAttributeDesignator(AttributeDesignatorType value) {
+ return new JAXBElement<AttributeDesignatorType>(_AttributeDesignator_QNAME, AttributeDesignatorType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SubjectType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "Subject")
+ public JAXBElement<SubjectType> createSubject(SubjectType value) {
+ return new JAXBElement<SubjectType>(_Subject_QNAME, SubjectType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SubjectLocalityType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "SubjectLocality")
+ public JAXBElement<SubjectLocalityType> createSubjectLocality(SubjectLocalityType value) {
+ return new JAXBElement<SubjectLocalityType>(_SubjectLocality_QNAME, SubjectLocalityType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AdviceType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "Advice")
+ public JAXBElement<AdviceType> createAdvice(AdviceType value) {
+ return new JAXBElement<AdviceType>(_Advice_QNAME, AdviceType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ActionType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "Action")
+ public JAXBElement<ActionType> createAction(ActionType value) {
+ return new JAXBElement<ActionType>(_Action_QNAME, ActionType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "Audience")
+ public JAXBElement<String> createAudience(String value) {
+ return new JAXBElement<String>(_Audience_QNAME, String.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AttributeType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "Attribute")
+ public JAXBElement<AttributeType> createAttribute(AttributeType value) {
+ return new JAXBElement<AttributeType>(_Attribute_QNAME, AttributeType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AuthenticationStatementType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "AuthenticationStatement")
+ public JAXBElement<AuthenticationStatementType> createAuthenticationStatement(AuthenticationStatementType value) {
+ return new JAXBElement<AuthenticationStatementType>(_AuthenticationStatement_QNAME, AuthenticationStatementType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AttributeStatementType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "AttributeStatement")
+ public JAXBElement<AttributeStatementType> createAttributeStatement(AttributeStatementType value) {
+ return new JAXBElement<AttributeStatementType>(_AttributeStatement_QNAME, AttributeStatementType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "ConfirmationMethod")
+ public JAXBElement<String> createConfirmationMethod(String value) {
+ return new JAXBElement<String>(_ConfirmationMethod_QNAME, String.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ConditionAbstractType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "Condition")
+ public JAXBElement<ConditionAbstractType> createCondition(ConditionAbstractType value) {
+ return new JAXBElement<ConditionAbstractType>(_Condition_QNAME, ConditionAbstractType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ConditionsType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "Conditions")
+ public JAXBElement<ConditionsType> createConditions(ConditionsType value) {
+ return new JAXBElement<ConditionsType>(_Conditions_QNAME, ConditionsType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AnyType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "SubjectConfirmationData")
+ public JAXBElement<AnyType> createSubjectConfirmationData(AnyType value) {
+ return new JAXBElement<AnyType>(_SubjectConfirmationData_QNAME, AnyType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SubjectStatementAbstractType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "SubjectStatement")
+ public JAXBElement<SubjectStatementAbstractType> createSubjectStatement(SubjectStatementAbstractType value) {
+ return new JAXBElement<SubjectStatementAbstractType>(_SubjectStatement_QNAME, SubjectStatementAbstractType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link StatementAbstractType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "Statement")
+ public JAXBElement<StatementAbstractType> createStatement(StatementAbstractType value) {
+ return new JAXBElement<StatementAbstractType>(_Statement_QNAME, StatementAbstractType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SubjectConfirmationType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "SubjectConfirmation")
+ public JAXBElement<SubjectConfirmationType> createSubjectConfirmation(SubjectConfirmationType value) {
+ return new JAXBElement<SubjectConfirmationType>(_SubjectConfirmation_QNAME, SubjectConfirmationType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AnyType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", name = "AttributeValue")
+ public JAXBElement<AnyType> createAttributeValue(AnyType value) {
+ return new JAXBElement<AnyType>(_AttributeValue_QNAME, AnyType.class, null, value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/StatementAbstractType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/StatementAbstractType.java
new file mode 100644
index 00000000..eabd815f
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/StatementAbstractType.java
@@ -0,0 +1,41 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for StatementAbstractType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="StatementAbstractType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "StatementAbstractType")
+@XmlSeeAlso({
+ SubjectStatementAbstractType.class
+})
+public abstract class StatementAbstractType {
+
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectConfirmationType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectConfirmationType.java
new file mode 100644
index 00000000..d7bd8856
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectConfirmationType.java
@@ -0,0 +1,135 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import org.w3._2000._09.xmldsig_.KeyInfoType;
+
+
+/**
+ * <p>Java class for SubjectConfirmationType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SubjectConfirmationType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}ConfirmationMethod" maxOccurs="unbounded"/>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}SubjectConfirmationData" minOccurs="0"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}KeyInfo" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SubjectConfirmationType", propOrder = {
+ "confirmationMethod",
+ "subjectConfirmationData",
+ "keyInfo"
+})
+public class SubjectConfirmationType {
+
+ @XmlElement(name = "ConfirmationMethod", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected List<String> confirmationMethod;
+ @XmlElement(name = "SubjectConfirmationData")
+ protected AnyType subjectConfirmationData;
+ @XmlElement(name = "KeyInfo", namespace = "http://www.w3.org/2000/09/xmldsig#")
+ protected KeyInfoType keyInfo;
+
+ /**
+ * Gets the value of the confirmationMethod property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the confirmationMethod property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getConfirmationMethod().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getConfirmationMethod() {
+ if (confirmationMethod == null) {
+ confirmationMethod = new ArrayList<String>();
+ }
+ return this.confirmationMethod;
+ }
+
+ /**
+ * Gets the value of the subjectConfirmationData property.
+ *
+ * @return
+ * possible object is
+ * {@link AnyType }
+ *
+ */
+ public AnyType getSubjectConfirmationData() {
+ return subjectConfirmationData;
+ }
+
+ /**
+ * Sets the value of the subjectConfirmationData property.
+ *
+ * @param value
+ * allowed object is
+ * {@link AnyType }
+ *
+ */
+ public void setSubjectConfirmationData(AnyType value) {
+ this.subjectConfirmationData = value;
+ }
+
+ /**
+ * Gets the value of the keyInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link KeyInfoType }
+ *
+ */
+ public KeyInfoType getKeyInfo() {
+ return keyInfo;
+ }
+
+ /**
+ * Sets the value of the keyInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link KeyInfoType }
+ *
+ */
+ public void setKeyInfo(KeyInfoType value) {
+ this.keyInfo = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectLocalityType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectLocalityType.java
new file mode 100644
index 00000000..1515d535
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectLocalityType.java
@@ -0,0 +1,92 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SubjectLocalityType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SubjectLocalityType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="IPAddress" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="DNSAddress" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SubjectLocalityType")
+public class SubjectLocalityType {
+
+ @XmlAttribute(name = "IPAddress")
+ protected String ipAddress;
+ @XmlAttribute(name = "DNSAddress")
+ protected String dnsAddress;
+
+ /**
+ * Gets the value of the ipAddress property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getIPAddress() {
+ return ipAddress;
+ }
+
+ /**
+ * Sets the value of the ipAddress property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIPAddress(String value) {
+ this.ipAddress = value;
+ }
+
+ /**
+ * Gets the value of the dnsAddress property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getDNSAddress() {
+ return dnsAddress;
+ }
+
+ /**
+ * Sets the value of the dnsAddress property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setDNSAddress(String value) {
+ this.dnsAddress = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectStatementAbstractType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectStatementAbstractType.java
new file mode 100644
index 00000000..07916c14
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectStatementAbstractType.java
@@ -0,0 +1,77 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SubjectStatementAbstractType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SubjectStatementAbstractType">
+ * &lt;complexContent>
+ * &lt;extension base="{urn:oasis:names:tc:SAML:1.0:assertion}StatementAbstractType">
+ * &lt;sequence>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}Subject"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SubjectStatementAbstractType", propOrder = {
+ "subject"
+})
+@XmlSeeAlso({
+ AuthorizationDecisionStatementType.class,
+ AuthenticationStatementType.class,
+ AttributeStatementType.class
+})
+public abstract class SubjectStatementAbstractType
+ extends StatementAbstractType
+{
+
+ @XmlElement(name = "Subject", required = true)
+ protected SubjectType subject;
+
+ /**
+ * Gets the value of the subject property.
+ *
+ * @return
+ * possible object is
+ * {@link SubjectType }
+ *
+ */
+ public SubjectType getSubject() {
+ return subject;
+ }
+
+ /**
+ * Sets the value of the subject property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SubjectType }
+ *
+ */
+ public void setSubject(SubjectType value) {
+ this.subject = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectType.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectType.java
new file mode 100644
index 00000000..646339c8
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/SubjectType.java
@@ -0,0 +1,96 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+
+package oasis.names.tc.saml._1_0.assertion;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SubjectType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SubjectType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice>
+ * &lt;sequence>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}NameIdentifier"/>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}SubjectConfirmation" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;element ref="{urn:oasis:names:tc:SAML:1.0:assertion}SubjectConfirmation"/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SubjectType", propOrder = {
+ "content"
+})
+public class SubjectType {
+
+ @XmlElementRefs({
+ @XmlElementRef(name = "NameIdentifier", namespace = "urn:oasis:names:tc:SAML:1.0:assertion", type = JAXBElement.class),
+ @XmlElementRef(name = "SubjectConfirmation", namespace = "urn:oasis:names:tc:SAML:1.0:assertion", type = JAXBElement.class)
+ })
+ protected List<JAXBElement<?>> content;
+
+ /**
+ * Gets the rest of the content model.
+ *
+ * <p>
+ * You are getting this "catch-all" property because of the following reason:
+ * The field name "SubjectConfirmation" is used by two different parts of a schema. See:
+ * line 94 of file:/home/clemens/workspace/schema-base/src/main/schema/oasis-sstc-saml-schema-assertion-1.0.xsd
+ * line 92 of file:/home/clemens/workspace/schema-base/src/main/schema/oasis-sstc-saml-schema-assertion-1.0.xsd
+ * <p>
+ * To get rid of this property, apply a property customization to one
+ * of both of the following declarations to change their names:
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link JAXBElement }{@code <}{@link NameIdentifierType }{@code >}
+ * {@link JAXBElement }{@code <}{@link SubjectConfirmationType }{@code >}
+ *
+ *
+ */
+ public List<JAXBElement<?>> getContent() {
+ if (content == null) {
+ content = new ArrayList<JAXBElement<?>>();
+ }
+ return this.content;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/package-info.java b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/package-info.java
new file mode 100644
index 00000000..4eb7ece2
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/oasis/names/tc/saml/_1_0/assertion/package-info.java
@@ -0,0 +1,9 @@
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-661
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.12.23 at 03:26:53 PM GMT
+//
+
+@javax.xml.bind.annotation.XmlSchema(namespace = "urn:oasis:names:tc:SAML:1.0:assertion", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package oasis.names.tc.saml._1_0.assertion;
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/AnyType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/AnyType.java
new file mode 100644
index 00000000..a091781c
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/AnyType.java
@@ -0,0 +1,119 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyAttribute;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.namespace.QName;
+
+
+/**
+ * <p>Java class for AnyType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="AnyType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "AnyType", propOrder = {
+ "content"
+})
+public class AnyType {
+
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+ @XmlAnyAttribute
+ private Map<QName, String> otherAttributes = new HashMap<QName, String>();
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+ /**
+ * Gets a map that contains attributes that aren't bound to any typed property on this class.
+ *
+ * <p>
+ * the map is keyed by the name of the attribute and
+ * the value is the string value of the attribute.
+ *
+ * the map returned by this method is live, and you can add new attribute
+ * by updating the map directly. Because of this design, there's no setter.
+ *
+ *
+ * @return
+ * always non-null
+ */
+ public Map<QName, String> getOtherAttributes() {
+ return otherAttributes;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLIdentifierType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLIdentifierType.java
new file mode 100644
index 00000000..61c70d62
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLIdentifierType.java
@@ -0,0 +1,174 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * <p>Java class for CRLIdentifierType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CRLIdentifierType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Issuer" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="IssueTime" type="{http://www.w3.org/2001/XMLSchema}dateTime"/>
+ * &lt;element name="Number" type="{http://www.w3.org/2001/XMLSchema}integer" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="URI" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CRLIdentifierType", propOrder = {
+ "issuer",
+ "issueTime",
+ "number"
+})
+public class CRLIdentifierType {
+
+ @XmlElement(name = "Issuer", required = true)
+ protected String issuer;
+ @XmlElement(name = "IssueTime", required = true)
+ @XmlSchemaType(name = "dateTime")
+ protected XMLGregorianCalendar issueTime;
+ @XmlElement(name = "Number")
+ protected BigInteger number;
+ @XmlAttribute(name = "URI")
+ @XmlSchemaType(name = "anyURI")
+ protected String uri;
+
+ /**
+ * Gets the value of the issuer property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getIssuer() {
+ return issuer;
+ }
+
+ /**
+ * Sets the value of the issuer property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setIssuer(String value) {
+ this.issuer = value;
+ }
+
+ /**
+ * Gets the value of the issueTime property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public XMLGregorianCalendar getIssueTime() {
+ return issueTime;
+ }
+
+ /**
+ * Sets the value of the issueTime property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public void setIssueTime(XMLGregorianCalendar value) {
+ this.issueTime = value;
+ }
+
+ /**
+ * Gets the value of the number property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getNumber() {
+ return number;
+ }
+
+ /**
+ * Sets the value of the number property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setNumber(BigInteger value) {
+ this.number = value;
+ }
+
+ /**
+ * Gets the value of the uri property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getURI() {
+ return uri;
+ }
+
+ /**
+ * Sets the value of the uri property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setURI(String value) {
+ this.uri = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLRefType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLRefType.java
new file mode 100644
index 00000000..fc722edf
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLRefType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CRLRefType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CRLRefType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="DigestAlgAndValue" type="{http://uri.etsi.org/01903/v1.1.1#}DigestAlgAndValueType"/>
+ * &lt;element name="CRLIdentifier" type="{http://uri.etsi.org/01903/v1.1.1#}CRLIdentifierType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CRLRefType", propOrder = {
+ "digestAlgAndValue",
+ "crlIdentifier"
+})
+public class CRLRefType {
+
+ @XmlElement(name = "DigestAlgAndValue", required = true)
+ protected DigestAlgAndValueType digestAlgAndValue;
+ @XmlElement(name = "CRLIdentifier")
+ protected CRLIdentifierType crlIdentifier;
+
+ /**
+ * Gets the value of the digestAlgAndValue property.
+ *
+ * @return
+ * possible object is
+ * {@link DigestAlgAndValueType }
+ *
+ */
+ public DigestAlgAndValueType getDigestAlgAndValue() {
+ return digestAlgAndValue;
+ }
+
+ /**
+ * Sets the value of the digestAlgAndValue property.
+ *
+ * @param value
+ * allowed object is
+ * {@link DigestAlgAndValueType }
+ *
+ */
+ public void setDigestAlgAndValue(DigestAlgAndValueType value) {
+ this.digestAlgAndValue = value;
+ }
+
+ /**
+ * Gets the value of the crlIdentifier property.
+ *
+ * @return
+ * possible object is
+ * {@link CRLIdentifierType }
+ *
+ */
+ public CRLIdentifierType getCRLIdentifier() {
+ return crlIdentifier;
+ }
+
+ /**
+ * Sets the value of the crlIdentifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CRLIdentifierType }
+ *
+ */
+ public void setCRLIdentifier(CRLIdentifierType value) {
+ this.crlIdentifier = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLRefsType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLRefsType.java
new file mode 100644
index 00000000..0db62ed5
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLRefsType.java
@@ -0,0 +1,92 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CRLRefsType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CRLRefsType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="CRLRef" type="{http://uri.etsi.org/01903/v1.1.1#}CRLRefType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CRLRefsType", propOrder = {
+ "crlRef"
+})
+public class CRLRefsType {
+
+ @XmlElement(name = "CRLRef", required = true)
+ protected List<CRLRefType> crlRef;
+
+ /**
+ * Gets the value of the crlRef property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the crlRef property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getCRLRef().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link CRLRefType }
+ *
+ *
+ */
+ public List<CRLRefType> getCRLRef() {
+ if (crlRef == null) {
+ crlRef = new ArrayList<CRLRefType>();
+ }
+ return this.crlRef;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLValuesType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLValuesType.java
new file mode 100644
index 00000000..ee008edd
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CRLValuesType.java
@@ -0,0 +1,92 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CRLValuesType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CRLValuesType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="EncapsulatedCRLValue" type="{http://uri.etsi.org/01903/v1.1.1#}EncapsulatedPKIDataType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CRLValuesType", propOrder = {
+ "encapsulatedCRLValue"
+})
+public class CRLValuesType {
+
+ @XmlElement(name = "EncapsulatedCRLValue", required = true)
+ protected List<EncapsulatedPKIDataType> encapsulatedCRLValue;
+
+ /**
+ * Gets the value of the encapsulatedCRLValue property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the encapsulatedCRLValue property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getEncapsulatedCRLValue().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link EncapsulatedPKIDataType }
+ *
+ *
+ */
+ public List<EncapsulatedPKIDataType> getEncapsulatedCRLValue() {
+ if (encapsulatedCRLValue == null) {
+ encapsulatedCRLValue = new ArrayList<EncapsulatedPKIDataType>();
+ }
+ return this.encapsulatedCRLValue;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertIDListType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertIDListType.java
new file mode 100644
index 00000000..adcc9e03
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertIDListType.java
@@ -0,0 +1,92 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CertIDListType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CertIDListType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Cert" type="{http://uri.etsi.org/01903/v1.1.1#}CertIDType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CertIDListType", propOrder = {
+ "cert"
+})
+public class CertIDListType {
+
+ @XmlElement(name = "Cert", required = true)
+ protected List<CertIDType> cert;
+
+ /**
+ * Gets the value of the cert property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the cert property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getCert().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link CertIDType }
+ *
+ *
+ */
+ public List<CertIDType> getCert() {
+ if (cert == null) {
+ cert = new ArrayList<CertIDType>();
+ }
+ return this.cert;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertIDType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertIDType.java
new file mode 100644
index 00000000..ab567eac
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertIDType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3._2000._09.xmldsig_.X509IssuerSerialType;
+
+
+/**
+ * <p>Java class for CertIDType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CertIDType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="CertDigest" type="{http://uri.etsi.org/01903/v1.1.1#}DigestAlgAndValueType"/>
+ * &lt;element name="IssuerSerial" type="{http://www.w3.org/2000/09/xmldsig#}X509IssuerSerialType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CertIDType", propOrder = {
+ "certDigest",
+ "issuerSerial"
+})
+public class CertIDType {
+
+ @XmlElement(name = "CertDigest", required = true)
+ protected DigestAlgAndValueType certDigest;
+ @XmlElement(name = "IssuerSerial", required = true)
+ protected X509IssuerSerialType issuerSerial;
+
+ /**
+ * Gets the value of the certDigest property.
+ *
+ * @return
+ * possible object is
+ * {@link DigestAlgAndValueType }
+ *
+ */
+ public DigestAlgAndValueType getCertDigest() {
+ return certDigest;
+ }
+
+ /**
+ * Sets the value of the certDigest property.
+ *
+ * @param value
+ * allowed object is
+ * {@link DigestAlgAndValueType }
+ *
+ */
+ public void setCertDigest(DigestAlgAndValueType value) {
+ this.certDigest = value;
+ }
+
+ /**
+ * Gets the value of the issuerSerial property.
+ *
+ * @return
+ * possible object is
+ * {@link X509IssuerSerialType }
+ *
+ */
+ public X509IssuerSerialType getIssuerSerial() {
+ return issuerSerial;
+ }
+
+ /**
+ * Sets the value of the issuerSerial property.
+ *
+ * @param value
+ * allowed object is
+ * {@link X509IssuerSerialType }
+ *
+ */
+ public void setIssuerSerial(X509IssuerSerialType value) {
+ this.issuerSerial = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertificateValuesType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertificateValuesType.java
new file mode 100644
index 00000000..cf0ca915
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertificateValuesType.java
@@ -0,0 +1,133 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for CertificateValuesType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CertificateValuesType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice maxOccurs="unbounded" minOccurs="0">
+ * &lt;element name="EncapsulatedX509Certificate" type="{http://uri.etsi.org/01903/v1.1.1#}EncapsulatedPKIDataType"/>
+ * &lt;element name="OtherCertificate" type="{http://uri.etsi.org/01903/v1.1.1#}AnyType"/>
+ * &lt;/choice>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CertificateValuesType", propOrder = {
+ "encapsulatedX509CertificateOrOtherCertificate"
+})
+public class CertificateValuesType {
+
+ @XmlElements({
+ @XmlElement(name = "OtherCertificate", type = AnyType.class),
+ @XmlElement(name = "EncapsulatedX509Certificate", type = EncapsulatedPKIDataType.class)
+ })
+ protected List<Object> encapsulatedX509CertificateOrOtherCertificate;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the encapsulatedX509CertificateOrOtherCertificate property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the encapsulatedX509CertificateOrOtherCertificate property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getEncapsulatedX509CertificateOrOtherCertificate().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link AnyType }
+ * {@link EncapsulatedPKIDataType }
+ *
+ *
+ */
+ public List<Object> getEncapsulatedX509CertificateOrOtherCertificate() {
+ if (encapsulatedX509CertificateOrOtherCertificate == null) {
+ encapsulatedX509CertificateOrOtherCertificate = new ArrayList<Object>();
+ }
+ return this.encapsulatedX509CertificateOrOtherCertificate;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertifiedRolesListType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertifiedRolesListType.java
new file mode 100644
index 00000000..184f13c8
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CertifiedRolesListType.java
@@ -0,0 +1,92 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CertifiedRolesListType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CertifiedRolesListType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="CertifiedRole" type="{http://uri.etsi.org/01903/v1.1.1#}EncapsulatedPKIDataType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CertifiedRolesListType", propOrder = {
+ "certifiedRole"
+})
+public class CertifiedRolesListType {
+
+ @XmlElement(name = "CertifiedRole", required = true)
+ protected List<EncapsulatedPKIDataType> certifiedRole;
+
+ /**
+ * Gets the value of the certifiedRole property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the certifiedRole property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getCertifiedRole().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link EncapsulatedPKIDataType }
+ *
+ *
+ */
+ public List<EncapsulatedPKIDataType> getCertifiedRole() {
+ if (certifiedRole == null) {
+ certifiedRole = new ArrayList<EncapsulatedPKIDataType>();
+ }
+ return this.certifiedRole;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/ClaimedRolesListType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/ClaimedRolesListType.java
new file mode 100644
index 00000000..87602958
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/ClaimedRolesListType.java
@@ -0,0 +1,92 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ClaimedRolesListType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ClaimedRolesListType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ClaimedRole" type="{http://uri.etsi.org/01903/v1.1.1#}AnyType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ClaimedRolesListType", propOrder = {
+ "claimedRole"
+})
+public class ClaimedRolesListType {
+
+ @XmlElement(name = "ClaimedRole", required = true)
+ protected List<AnyType> claimedRole;
+
+ /**
+ * Gets the value of the claimedRole property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the claimedRole property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getClaimedRole().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link AnyType }
+ *
+ *
+ */
+ public List<AnyType> getClaimedRole() {
+ if (claimedRole == null) {
+ claimedRole = new ArrayList<AnyType>();
+ }
+ return this.claimedRole;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CommitmentTypeIndicationType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CommitmentTypeIndicationType.java
new file mode 100644
index 00000000..b079b847
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CommitmentTypeIndicationType.java
@@ -0,0 +1,180 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CommitmentTypeIndicationType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CommitmentTypeIndicationType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="CommitmentTypeId" type="{http://uri.etsi.org/01903/v1.1.1#}ObjectIdentifierType"/>
+ * &lt;choice>
+ * &lt;element name="ObjectReference" type="{http://www.w3.org/2001/XMLSchema}anyURI" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="AllSignedDataObjects" type="{http://www.w3.org/2001/XMLSchema}anyType"/>
+ * &lt;/choice>
+ * &lt;element name="CommitmentTypeQualifiers" type="{http://uri.etsi.org/01903/v1.1.1#}CommitmentTypeQualifiersListType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CommitmentTypeIndicationType", propOrder = {
+ "commitmentTypeId",
+ "objectReference",
+ "allSignedDataObjects",
+ "commitmentTypeQualifiers"
+})
+public class CommitmentTypeIndicationType {
+
+ @XmlElement(name = "CommitmentTypeId", required = true)
+ protected ObjectIdentifierType commitmentTypeId;
+ @XmlElement(name = "ObjectReference")
+ @XmlSchemaType(name = "anyURI")
+ protected List<String> objectReference;
+ @XmlElement(name = "AllSignedDataObjects")
+ protected Object allSignedDataObjects;
+ @XmlElement(name = "CommitmentTypeQualifiers")
+ protected CommitmentTypeQualifiersListType commitmentTypeQualifiers;
+
+ /**
+ * Gets the value of the commitmentTypeId property.
+ *
+ * @return
+ * possible object is
+ * {@link ObjectIdentifierType }
+ *
+ */
+ public ObjectIdentifierType getCommitmentTypeId() {
+ return commitmentTypeId;
+ }
+
+ /**
+ * Sets the value of the commitmentTypeId property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ObjectIdentifierType }
+ *
+ */
+ public void setCommitmentTypeId(ObjectIdentifierType value) {
+ this.commitmentTypeId = value;
+ }
+
+ /**
+ * Gets the value of the objectReference property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the objectReference property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getObjectReference().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getObjectReference() {
+ if (objectReference == null) {
+ objectReference = new ArrayList<String>();
+ }
+ return this.objectReference;
+ }
+
+ /**
+ * Gets the value of the allSignedDataObjects property.
+ *
+ * @return
+ * possible object is
+ * {@link Object }
+ *
+ */
+ public Object getAllSignedDataObjects() {
+ return allSignedDataObjects;
+ }
+
+ /**
+ * Sets the value of the allSignedDataObjects property.
+ *
+ * @param value
+ * allowed object is
+ * {@link Object }
+ *
+ */
+ public void setAllSignedDataObjects(Object value) {
+ this.allSignedDataObjects = value;
+ }
+
+ /**
+ * Gets the value of the commitmentTypeQualifiers property.
+ *
+ * @return
+ * possible object is
+ * {@link CommitmentTypeQualifiersListType }
+ *
+ */
+ public CommitmentTypeQualifiersListType getCommitmentTypeQualifiers() {
+ return commitmentTypeQualifiers;
+ }
+
+ /**
+ * Sets the value of the commitmentTypeQualifiers property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CommitmentTypeQualifiersListType }
+ *
+ */
+ public void setCommitmentTypeQualifiers(CommitmentTypeQualifiersListType value) {
+ this.commitmentTypeQualifiers = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CommitmentTypeQualifiersListType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CommitmentTypeQualifiersListType.java
new file mode 100644
index 00000000..66abdc7c
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CommitmentTypeQualifiersListType.java
@@ -0,0 +1,92 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CommitmentTypeQualifiersListType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CommitmentTypeQualifiersListType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="CommitmentTypeQualifier" type="{http://uri.etsi.org/01903/v1.1.1#}AnyType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CommitmentTypeQualifiersListType", propOrder = {
+ "commitmentTypeQualifier"
+})
+public class CommitmentTypeQualifiersListType {
+
+ @XmlElement(name = "CommitmentTypeQualifier")
+ protected List<AnyType> commitmentTypeQualifier;
+
+ /**
+ * Gets the value of the commitmentTypeQualifier property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the commitmentTypeQualifier property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getCommitmentTypeQualifier().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link AnyType }
+ *
+ *
+ */
+ public List<AnyType> getCommitmentTypeQualifier() {
+ if (commitmentTypeQualifier == null) {
+ commitmentTypeQualifier = new ArrayList<AnyType>();
+ }
+ return this.commitmentTypeQualifier;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CompleteCertificateRefsType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CompleteCertificateRefsType.java
new file mode 100644
index 00000000..c9fa3e53
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CompleteCertificateRefsType.java
@@ -0,0 +1,120 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for CompleteCertificateRefsType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CompleteCertificateRefsType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="CertRefs" type="{http://uri.etsi.org/01903/v1.1.1#}CertIDListType"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CompleteCertificateRefsType", propOrder = {
+ "certRefs"
+})
+public class CompleteCertificateRefsType {
+
+ @XmlElement(name = "CertRefs", required = true)
+ protected CertIDListType certRefs;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the certRefs property.
+ *
+ * @return
+ * possible object is
+ * {@link CertIDListType }
+ *
+ */
+ public CertIDListType getCertRefs() {
+ return certRefs;
+ }
+
+ /**
+ * Sets the value of the certRefs property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CertIDListType }
+ *
+ */
+ public void setCertRefs(CertIDListType value) {
+ this.certRefs = value;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CompleteRevocationRefsType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CompleteRevocationRefsType.java
new file mode 100644
index 00000000..d74d3a64
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CompleteRevocationRefsType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for CompleteRevocationRefsType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CompleteRevocationRefsType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="CRLRefs" type="{http://uri.etsi.org/01903/v1.1.1#}CRLRefsType" minOccurs="0"/>
+ * &lt;element name="OCSPRefs" type="{http://uri.etsi.org/01903/v1.1.1#}OCSPRefsType" minOccurs="0"/>
+ * &lt;element name="OtherRefs" type="{http://uri.etsi.org/01903/v1.1.1#}OtherCertStatusRefsType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CompleteRevocationRefsType", propOrder = {
+ "crlRefs",
+ "ocspRefs",
+ "otherRefs"
+})
+public class CompleteRevocationRefsType {
+
+ @XmlElement(name = "CRLRefs")
+ protected CRLRefsType crlRefs;
+ @XmlElement(name = "OCSPRefs")
+ protected OCSPRefsType ocspRefs;
+ @XmlElement(name = "OtherRefs")
+ protected OtherCertStatusRefsType otherRefs;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the crlRefs property.
+ *
+ * @return
+ * possible object is
+ * {@link CRLRefsType }
+ *
+ */
+ public CRLRefsType getCRLRefs() {
+ return crlRefs;
+ }
+
+ /**
+ * Sets the value of the crlRefs property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CRLRefsType }
+ *
+ */
+ public void setCRLRefs(CRLRefsType value) {
+ this.crlRefs = value;
+ }
+
+ /**
+ * Gets the value of the ocspRefs property.
+ *
+ * @return
+ * possible object is
+ * {@link OCSPRefsType }
+ *
+ */
+ public OCSPRefsType getOCSPRefs() {
+ return ocspRefs;
+ }
+
+ /**
+ * Sets the value of the ocspRefs property.
+ *
+ * @param value
+ * allowed object is
+ * {@link OCSPRefsType }
+ *
+ */
+ public void setOCSPRefs(OCSPRefsType value) {
+ this.ocspRefs = value;
+ }
+
+ /**
+ * Gets the value of the otherRefs property.
+ *
+ * @return
+ * possible object is
+ * {@link OtherCertStatusRefsType }
+ *
+ */
+ public OtherCertStatusRefsType getOtherRefs() {
+ return otherRefs;
+ }
+
+ /**
+ * Sets the value of the otherRefs property.
+ *
+ * @param value
+ * allowed object is
+ * {@link OtherCertStatusRefsType }
+ *
+ */
+ public void setOtherRefs(OtherCertStatusRefsType value) {
+ this.otherRefs = value;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CounterSignatureType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CounterSignatureType.java
new file mode 100644
index 00000000..c4fa9649
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/CounterSignatureType.java
@@ -0,0 +1,86 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3._2000._09.xmldsig_.SignatureType;
+
+
+/**
+ * <p>Java class for CounterSignatureType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CounterSignatureType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Signature"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CounterSignatureType", propOrder = {
+ "signature"
+})
+public class CounterSignatureType {
+
+ @XmlElement(name = "Signature", namespace = "http://www.w3.org/2000/09/xmldsig#", required = true)
+ protected SignatureType signature;
+
+ /**
+ * Gets the value of the signature property.
+ *
+ * @return
+ * possible object is
+ * {@link SignatureType }
+ *
+ */
+ public SignatureType getSignature() {
+ return signature;
+ }
+
+ /**
+ * Sets the value of the signature property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignatureType }
+ *
+ */
+ public void setSignature(SignatureType value) {
+ this.signature = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/DataObjectFormatType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/DataObjectFormatType.java
new file mode 100644
index 00000000..bd446353
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/DataObjectFormatType.java
@@ -0,0 +1,200 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DataObjectFormatType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="DataObjectFormatType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Description" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="ObjectIdentifier" type="{http://uri.etsi.org/01903/v1.1.1#}ObjectIdentifierType" minOccurs="0"/>
+ * &lt;element name="MimeType" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="Encoding" type="{http://www.w3.org/2001/XMLSchema}anyURI" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="ObjectReference" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DataObjectFormatType", propOrder = {
+ "description",
+ "objectIdentifier",
+ "mimeType",
+ "encoding"
+})
+public class DataObjectFormatType {
+
+ @XmlElement(name = "Description")
+ protected String description;
+ @XmlElement(name = "ObjectIdentifier")
+ protected ObjectIdentifierType objectIdentifier;
+ @XmlElement(name = "MimeType")
+ protected String mimeType;
+ @XmlElement(name = "Encoding")
+ @XmlSchemaType(name = "anyURI")
+ protected String encoding;
+ @XmlAttribute(name = "ObjectReference", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String objectReference;
+
+ /**
+ * Gets the value of the description property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ * Sets the value of the description property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setDescription(String value) {
+ this.description = value;
+ }
+
+ /**
+ * Gets the value of the objectIdentifier property.
+ *
+ * @return
+ * possible object is
+ * {@link ObjectIdentifierType }
+ *
+ */
+ public ObjectIdentifierType getObjectIdentifier() {
+ return objectIdentifier;
+ }
+
+ /**
+ * Sets the value of the objectIdentifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ObjectIdentifierType }
+ *
+ */
+ public void setObjectIdentifier(ObjectIdentifierType value) {
+ this.objectIdentifier = value;
+ }
+
+ /**
+ * Gets the value of the mimeType property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getMimeType() {
+ return mimeType;
+ }
+
+ /**
+ * Sets the value of the mimeType property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setMimeType(String value) {
+ this.mimeType = value;
+ }
+
+ /**
+ * Gets the value of the encoding property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getEncoding() {
+ return encoding;
+ }
+
+ /**
+ * Sets the value of the encoding property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setEncoding(String value) {
+ this.encoding = value;
+ }
+
+ /**
+ * Gets the value of the objectReference property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getObjectReference() {
+ return objectReference;
+ }
+
+ /**
+ * Sets the value of the objectReference property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setObjectReference(String value) {
+ this.objectReference = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/DigestAlgAndValueType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/DigestAlgAndValueType.java
new file mode 100644
index 00000000..a688901d
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/DigestAlgAndValueType.java
@@ -0,0 +1,112 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3._2000._09.xmldsig_.DigestMethodType;
+
+
+/**
+ * <p>Java class for DigestAlgAndValueType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="DigestAlgAndValueType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="DigestMethod" type="{http://www.w3.org/2000/09/xmldsig#}DigestMethodType"/>
+ * &lt;element name="DigestValue" type="{http://www.w3.org/2000/09/xmldsig#}DigestValueType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DigestAlgAndValueType", propOrder = {
+ "digestMethod",
+ "digestValue"
+})
+public class DigestAlgAndValueType {
+
+ @XmlElement(name = "DigestMethod", required = true)
+ protected DigestMethodType digestMethod;
+ @XmlElement(name = "DigestValue", required = true)
+ protected byte[] digestValue;
+
+ /**
+ * Gets the value of the digestMethod property.
+ *
+ * @return
+ * possible object is
+ * {@link DigestMethodType }
+ *
+ */
+ public DigestMethodType getDigestMethod() {
+ return digestMethod;
+ }
+
+ /**
+ * Sets the value of the digestMethod property.
+ *
+ * @param value
+ * allowed object is
+ * {@link DigestMethodType }
+ *
+ */
+ public void setDigestMethod(DigestMethodType value) {
+ this.digestMethod = value;
+ }
+
+ /**
+ * Gets the value of the digestValue property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getDigestValue() {
+ return digestValue;
+ }
+
+ /**
+ * Sets the value of the digestValue property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setDigestValue(byte[] value) {
+ this.digestValue = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/DocumentationReferencesType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/DocumentationReferencesType.java
new file mode 100644
index 00000000..3fae0974
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/DocumentationReferencesType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DocumentationReferencesType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="DocumentationReferencesType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence maxOccurs="unbounded">
+ * &lt;element name="DocumentationReference" type="{http://www.w3.org/2001/XMLSchema}anyURI"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DocumentationReferencesType", propOrder = {
+ "documentationReference"
+})
+public class DocumentationReferencesType {
+
+ @XmlElement(name = "DocumentationReference", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected List<String> documentationReference;
+
+ /**
+ * Gets the value of the documentationReference property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the documentationReference property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getDocumentationReference().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link String }
+ *
+ *
+ */
+ public List<String> getDocumentationReference() {
+ if (documentationReference == null) {
+ documentationReference = new ArrayList<String>();
+ }
+ return this.documentationReference;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/EncapsulatedPKIDataType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/EncapsulatedPKIDataType.java
new file mode 100644
index 00000000..4403e9d9
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/EncapsulatedPKIDataType.java
@@ -0,0 +1,115 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for EncapsulatedPKIDataType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="EncapsulatedPKIDataType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>base64Binary">
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "EncapsulatedPKIDataType", propOrder = {
+ "value"
+})
+public class EncapsulatedPKIDataType {
+
+ @XmlValue
+ protected byte[] value;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setValue(byte[] value) {
+ this.value = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/HashDataInfoType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/HashDataInfoType.java
new file mode 100644
index 00000000..5f331d8b
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/HashDataInfoType.java
@@ -0,0 +1,116 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import org.w3._2000._09.xmldsig_.TransformsType;
+
+
+/**
+ * <p>Java class for HashDataInfoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="HashDataInfoType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Transforms" type="{http://www.w3.org/2000/09/xmldsig#}TransformsType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="uri" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "HashDataInfoType", propOrder = {
+ "transforms"
+})
+public class HashDataInfoType {
+
+ @XmlElement(name = "Transforms")
+ protected TransformsType transforms;
+ @XmlAttribute(required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String uri;
+
+ /**
+ * Gets the value of the transforms property.
+ *
+ * @return
+ * possible object is
+ * {@link TransformsType }
+ *
+ */
+ public TransformsType getTransforms() {
+ return transforms;
+ }
+
+ /**
+ * Sets the value of the transforms property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TransformsType }
+ *
+ */
+ public void setTransforms(TransformsType value) {
+ this.transforms = value;
+ }
+
+ /**
+ * Gets the value of the uri property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getUri() {
+ return uri;
+ }
+
+ /**
+ * Sets the value of the uri property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setUri(String value) {
+ this.uri = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/IdentifierType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/IdentifierType.java
new file mode 100644
index 00000000..2153501d
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/IdentifierType.java
@@ -0,0 +1,112 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+
+
+/**
+ * <p>Java class for IdentifierType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="IdentifierType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>anyURI">
+ * &lt;attribute name="Qualifier" type="{http://uri.etsi.org/01903/v1.1.1#}QualifierType" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "IdentifierType", propOrder = {
+ "value"
+})
+public class IdentifierType {
+
+ @XmlValue
+ @XmlSchemaType(name = "anyURI")
+ protected String value;
+ @XmlAttribute(name = "Qualifier")
+ protected QualifierType qualifier;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /**
+ * Gets the value of the qualifier property.
+ *
+ * @return
+ * possible object is
+ * {@link QualifierType }
+ *
+ */
+ public QualifierType getQualifier() {
+ return qualifier;
+ }
+
+ /**
+ * Sets the value of the qualifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link QualifierType }
+ *
+ */
+ public void setQualifier(QualifierType value) {
+ this.qualifier = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/IntegerListType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/IntegerListType.java
new file mode 100644
index 00000000..cdb257b2
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/IntegerListType.java
@@ -0,0 +1,93 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for IntegerListType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="IntegerListType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="int" type="{http://www.w3.org/2001/XMLSchema}integer" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "IntegerListType", propOrder = {
+ "_int"
+})
+public class IntegerListType {
+
+ @XmlElement(name = "int")
+ protected List<BigInteger> _int;
+
+ /**
+ * Gets the value of the int property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the int property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getInt().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link BigInteger }
+ *
+ *
+ */
+ public List<BigInteger> getInt() {
+ if (_int == null) {
+ _int = new ArrayList<BigInteger>();
+ }
+ return this._int;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/NoticeReferenceType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/NoticeReferenceType.java
new file mode 100644
index 00000000..240896b2
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/NoticeReferenceType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for NoticeReferenceType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="NoticeReferenceType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Organization" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="NoticeNumbers" type="{http://uri.etsi.org/01903/v1.1.1#}IntegerListType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "NoticeReferenceType", propOrder = {
+ "organization",
+ "noticeNumbers"
+})
+public class NoticeReferenceType {
+
+ @XmlElement(name = "Organization", required = true)
+ protected String organization;
+ @XmlElement(name = "NoticeNumbers", required = true)
+ protected IntegerListType noticeNumbers;
+
+ /**
+ * Gets the value of the organization property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getOrganization() {
+ return organization;
+ }
+
+ /**
+ * Sets the value of the organization property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setOrganization(String value) {
+ this.organization = value;
+ }
+
+ /**
+ * Gets the value of the noticeNumbers property.
+ *
+ * @return
+ * possible object is
+ * {@link IntegerListType }
+ *
+ */
+ public IntegerListType getNoticeNumbers() {
+ return noticeNumbers;
+ }
+
+ /**
+ * Sets the value of the noticeNumbers property.
+ *
+ * @param value
+ * allowed object is
+ * {@link IntegerListType }
+ *
+ */
+ public void setNoticeNumbers(IntegerListType value) {
+ this.noticeNumbers = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPIdentifierType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPIdentifierType.java
new file mode 100644
index 00000000..e0fc6de4
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPIdentifierType.java
@@ -0,0 +1,145 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * <p>Java class for OCSPIdentifierType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="OCSPIdentifierType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ResponderID" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="ProducedAt" type="{http://www.w3.org/2001/XMLSchema}dateTime"/>
+ * &lt;/sequence>
+ * &lt;attribute name="URI" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "OCSPIdentifierType", propOrder = {
+ "responderID",
+ "producedAt"
+})
+public class OCSPIdentifierType {
+
+ @XmlElement(name = "ResponderID", required = true)
+ protected String responderID;
+ @XmlElement(name = "ProducedAt", required = true)
+ @XmlSchemaType(name = "dateTime")
+ protected XMLGregorianCalendar producedAt;
+ @XmlAttribute(name = "URI")
+ @XmlSchemaType(name = "anyURI")
+ protected String uri;
+
+ /**
+ * Gets the value of the responderID property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getResponderID() {
+ return responderID;
+ }
+
+ /**
+ * Sets the value of the responderID property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setResponderID(String value) {
+ this.responderID = value;
+ }
+
+ /**
+ * Gets the value of the producedAt property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public XMLGregorianCalendar getProducedAt() {
+ return producedAt;
+ }
+
+ /**
+ * Sets the value of the producedAt property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public void setProducedAt(XMLGregorianCalendar value) {
+ this.producedAt = value;
+ }
+
+ /**
+ * Gets the value of the uri property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getURI() {
+ return uri;
+ }
+
+ /**
+ * Sets the value of the uri property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setURI(String value) {
+ this.uri = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPRefType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPRefType.java
new file mode 100644
index 00000000..8ba2676c
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPRefType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for OCSPRefType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="OCSPRefType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="OCSPIdentifier" type="{http://uri.etsi.org/01903/v1.1.1#}OCSPIdentifierType"/>
+ * &lt;element name="DigestAlgAndValue" type="{http://uri.etsi.org/01903/v1.1.1#}DigestAlgAndValueType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "OCSPRefType", propOrder = {
+ "ocspIdentifier",
+ "digestAlgAndValue"
+})
+public class OCSPRefType {
+
+ @XmlElement(name = "OCSPIdentifier", required = true)
+ protected OCSPIdentifierType ocspIdentifier;
+ @XmlElement(name = "DigestAlgAndValue")
+ protected DigestAlgAndValueType digestAlgAndValue;
+
+ /**
+ * Gets the value of the ocspIdentifier property.
+ *
+ * @return
+ * possible object is
+ * {@link OCSPIdentifierType }
+ *
+ */
+ public OCSPIdentifierType getOCSPIdentifier() {
+ return ocspIdentifier;
+ }
+
+ /**
+ * Sets the value of the ocspIdentifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link OCSPIdentifierType }
+ *
+ */
+ public void setOCSPIdentifier(OCSPIdentifierType value) {
+ this.ocspIdentifier = value;
+ }
+
+ /**
+ * Gets the value of the digestAlgAndValue property.
+ *
+ * @return
+ * possible object is
+ * {@link DigestAlgAndValueType }
+ *
+ */
+ public DigestAlgAndValueType getDigestAlgAndValue() {
+ return digestAlgAndValue;
+ }
+
+ /**
+ * Sets the value of the digestAlgAndValue property.
+ *
+ * @param value
+ * allowed object is
+ * {@link DigestAlgAndValueType }
+ *
+ */
+ public void setDigestAlgAndValue(DigestAlgAndValueType value) {
+ this.digestAlgAndValue = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPRefsType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPRefsType.java
new file mode 100644
index 00000000..6e1459af
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPRefsType.java
@@ -0,0 +1,92 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for OCSPRefsType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="OCSPRefsType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="OCSPRef" type="{http://uri.etsi.org/01903/v1.1.1#}OCSPRefType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "OCSPRefsType", propOrder = {
+ "ocspRef"
+})
+public class OCSPRefsType {
+
+ @XmlElement(name = "OCSPRef", required = true)
+ protected List<OCSPRefType> ocspRef;
+
+ /**
+ * Gets the value of the ocspRef property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the ocspRef property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getOCSPRef().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link OCSPRefType }
+ *
+ *
+ */
+ public List<OCSPRefType> getOCSPRef() {
+ if (ocspRef == null) {
+ ocspRef = new ArrayList<OCSPRefType>();
+ }
+ return this.ocspRef;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPValuesType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPValuesType.java
new file mode 100644
index 00000000..0e1d8550
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OCSPValuesType.java
@@ -0,0 +1,92 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for OCSPValuesType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="OCSPValuesType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="EncapsulatedOCSPValue" type="{http://uri.etsi.org/01903/v1.1.1#}EncapsulatedPKIDataType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "OCSPValuesType", propOrder = {
+ "encapsulatedOCSPValue"
+})
+public class OCSPValuesType {
+
+ @XmlElement(name = "EncapsulatedOCSPValue", required = true)
+ protected List<EncapsulatedPKIDataType> encapsulatedOCSPValue;
+
+ /**
+ * Gets the value of the encapsulatedOCSPValue property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the encapsulatedOCSPValue property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getEncapsulatedOCSPValue().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link EncapsulatedPKIDataType }
+ *
+ *
+ */
+ public List<EncapsulatedPKIDataType> getEncapsulatedOCSPValue() {
+ if (encapsulatedOCSPValue == null) {
+ encapsulatedOCSPValue = new ArrayList<EncapsulatedPKIDataType>();
+ }
+ return this.encapsulatedOCSPValue;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/ObjectFactory.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/ObjectFactory.java
new file mode 100644
index 00000000..f54e6aa2
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/ObjectFactory.java
@@ -0,0 +1,755 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.datatype.XMLGregorianCalendar;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each
+ * Java content interface and Java element interface
+ * generated in the org.etsi.uri._01903.v1_1 package.
+ * <p>An ObjectFactory allows you to programatically
+ * construct new instances of the Java representation
+ * for XML content. The Java representation of XML
+ * content can consist of schema derived interfaces
+ * and classes representing the binding of schema
+ * type definitions, element declarations and model
+ * groups. Factory methods for each of these are
+ * provided in this class.
+ *
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _RevocationValues_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "RevocationValues");
+ private final static QName _SignerRole_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "SignerRole");
+ private final static QName _AllDataObjectsTimeStamp_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "AllDataObjectsTimeStamp");
+ private final static QName _TimeStamp_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "TimeStamp");
+ private final static QName _UnsignedSignatureProperties_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "UnsignedSignatureProperties");
+ private final static QName _CommitmentTypeIndication_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "CommitmentTypeIndication");
+ private final static QName _EncapsulatedPKIData_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "EncapsulatedPKIData");
+ private final static QName _SignatureProductionPlace_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "SignatureProductionPlace");
+ private final static QName _SignedProperties_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "SignedProperties");
+ private final static QName _CompleteCertificateRefs_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "CompleteCertificateRefs");
+ private final static QName _DataObjectFormat_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "DataObjectFormat");
+ private final static QName _SigAndRefsTimeStamp_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "SigAndRefsTimeStamp");
+ private final static QName _SigningTime_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "SigningTime");
+ private final static QName _Any_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "Any");
+ private final static QName _SignaturePolicyIdentifier_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "SignaturePolicyIdentifier");
+ private final static QName _CertificateValues_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "CertificateValues");
+ private final static QName _QualifyingPropertiesReference_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "QualifyingPropertiesReference");
+ private final static QName _SignedSignatureProperties_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "SignedSignatureProperties");
+ private final static QName _ObjectIdentifier_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "ObjectIdentifier");
+ private final static QName _CompleteRevocationRefs_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "CompleteRevocationRefs");
+ private final static QName _UnsignedProperties_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "UnsignedProperties");
+ private final static QName _SPUserNotice_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "SPUserNotice");
+ private final static QName _ArchiveTimeStamp_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "ArchiveTimeStamp");
+ private final static QName _UnsignedDataObjectProperties_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "UnsignedDataObjectProperties");
+ private final static QName _SignatureTimeStamp_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "SignatureTimeStamp");
+ private final static QName _IndividualDataObjectsTimeStamp_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "IndividualDataObjectsTimeStamp");
+ private final static QName _SigningCertificate_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "SigningCertificate");
+ private final static QName _CounterSignature_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "CounterSignature");
+ private final static QName _QualifyingProperties_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "QualifyingProperties");
+ private final static QName _SignedDataObjectProperties_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "SignedDataObjectProperties");
+ private final static QName _SPURI_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "SPURI");
+ private final static QName _RefsOnlyTimeStamp_QNAME = new QName("http://uri.etsi.org/01903/v1.1.1#", "RefsOnlyTimeStamp");
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.etsi.uri._01903.v1_1
+ *
+ */
+ public ObjectFactory() {
+ }
+
+ /**
+ * Create an instance of {@link CertIDType }
+ *
+ */
+ public CertIDType createCertIDType() {
+ return new CertIDType();
+ }
+
+ /**
+ * Create an instance of {@link CRLValuesType }
+ *
+ */
+ public CRLValuesType createCRLValuesType() {
+ return new CRLValuesType();
+ }
+
+ /**
+ * Create an instance of {@link OCSPIdentifierType }
+ *
+ */
+ public OCSPIdentifierType createOCSPIdentifierType() {
+ return new OCSPIdentifierType();
+ }
+
+ /**
+ * Create an instance of {@link OCSPRefType }
+ *
+ */
+ public OCSPRefType createOCSPRefType() {
+ return new OCSPRefType();
+ }
+
+ /**
+ * Create an instance of {@link UnsignedSignaturePropertiesType }
+ *
+ */
+ public UnsignedSignaturePropertiesType createUnsignedSignaturePropertiesType() {
+ return new UnsignedSignaturePropertiesType();
+ }
+
+ /**
+ * Create an instance of {@link SignaturePolicyIdentifierType }
+ *
+ */
+ public SignaturePolicyIdentifierType createSignaturePolicyIdentifierType() {
+ return new SignaturePolicyIdentifierType();
+ }
+
+ /**
+ * Create an instance of {@link UnsignedDataObjectPropertiesType }
+ *
+ */
+ public UnsignedDataObjectPropertiesType createUnsignedDataObjectPropertiesType() {
+ return new UnsignedDataObjectPropertiesType();
+ }
+
+ /**
+ * Create an instance of {@link CompleteCertificateRefsType }
+ *
+ */
+ public CompleteCertificateRefsType createCompleteCertificateRefsType() {
+ return new CompleteCertificateRefsType();
+ }
+
+ /**
+ * Create an instance of {@link OtherCertStatusRefsType }
+ *
+ */
+ public OtherCertStatusRefsType createOtherCertStatusRefsType() {
+ return new OtherCertStatusRefsType();
+ }
+
+ /**
+ * Create an instance of {@link CommitmentTypeIndicationType }
+ *
+ */
+ public CommitmentTypeIndicationType createCommitmentTypeIndicationType() {
+ return new CommitmentTypeIndicationType();
+ }
+
+ /**
+ * Create an instance of {@link DataObjectFormatType }
+ *
+ */
+ public DataObjectFormatType createDataObjectFormatType() {
+ return new DataObjectFormatType();
+ }
+
+ /**
+ * Create an instance of {@link CertifiedRolesListType }
+ *
+ */
+ public CertifiedRolesListType createCertifiedRolesListType() {
+ return new CertifiedRolesListType();
+ }
+
+ /**
+ * Create an instance of {@link QualifyingPropertiesReferenceType }
+ *
+ */
+ public QualifyingPropertiesReferenceType createQualifyingPropertiesReferenceType() {
+ return new QualifyingPropertiesReferenceType();
+ }
+
+ /**
+ * Create an instance of {@link NoticeReferenceType }
+ *
+ */
+ public NoticeReferenceType createNoticeReferenceType() {
+ return new NoticeReferenceType();
+ }
+
+ /**
+ * Create an instance of {@link SignaturePolicyIdType }
+ *
+ */
+ public SignaturePolicyIdType createSignaturePolicyIdType() {
+ return new SignaturePolicyIdType();
+ }
+
+ /**
+ * Create an instance of {@link CertIDListType }
+ *
+ */
+ public CertIDListType createCertIDListType() {
+ return new CertIDListType();
+ }
+
+ /**
+ * Create an instance of {@link HashDataInfoType }
+ *
+ */
+ public HashDataInfoType createHashDataInfoType() {
+ return new HashDataInfoType();
+ }
+
+ /**
+ * Create an instance of {@link ClaimedRolesListType }
+ *
+ */
+ public ClaimedRolesListType createClaimedRolesListType() {
+ return new ClaimedRolesListType();
+ }
+
+ /**
+ * Create an instance of {@link SPUserNoticeType }
+ *
+ */
+ public SPUserNoticeType createSPUserNoticeType() {
+ return new SPUserNoticeType();
+ }
+
+ /**
+ * Create an instance of {@link OCSPValuesType }
+ *
+ */
+ public OCSPValuesType createOCSPValuesType() {
+ return new OCSPValuesType();
+ }
+
+ /**
+ * Create an instance of {@link SignatureProductionPlaceType }
+ *
+ */
+ public SignatureProductionPlaceType createSignatureProductionPlaceType() {
+ return new SignatureProductionPlaceType();
+ }
+
+ /**
+ * Create an instance of {@link SignaturePolicyIdentifierType.SignaturePolicyImplied }
+ *
+ */
+ public SignaturePolicyIdentifierType.SignaturePolicyImplied createSignaturePolicyIdentifierTypeSignaturePolicyImplied() {
+ return new SignaturePolicyIdentifierType.SignaturePolicyImplied();
+ }
+
+ /**
+ * Create an instance of {@link EncapsulatedPKIDataType }
+ *
+ */
+ public EncapsulatedPKIDataType createEncapsulatedPKIDataType() {
+ return new EncapsulatedPKIDataType();
+ }
+
+ /**
+ * Create an instance of {@link QualifyingPropertiesType }
+ *
+ */
+ public QualifyingPropertiesType createQualifyingPropertiesType() {
+ return new QualifyingPropertiesType();
+ }
+
+ /**
+ * Create an instance of {@link IntegerListType }
+ *
+ */
+ public IntegerListType createIntegerListType() {
+ return new IntegerListType();
+ }
+
+ /**
+ * Create an instance of {@link SignedPropertiesType }
+ *
+ */
+ public SignedPropertiesType createSignedPropertiesType() {
+ return new SignedPropertiesType();
+ }
+
+ /**
+ * Create an instance of {@link SigPolicyQualifiersListType }
+ *
+ */
+ public SigPolicyQualifiersListType createSigPolicyQualifiersListType() {
+ return new SigPolicyQualifiersListType();
+ }
+
+ /**
+ * Create an instance of {@link ObjectIdentifierType }
+ *
+ */
+ public ObjectIdentifierType createObjectIdentifierType() {
+ return new ObjectIdentifierType();
+ }
+
+ /**
+ * Create an instance of {@link RevocationValuesType }
+ *
+ */
+ public RevocationValuesType createRevocationValuesType() {
+ return new RevocationValuesType();
+ }
+
+ /**
+ * Create an instance of {@link SignedSignaturePropertiesType }
+ *
+ */
+ public SignedSignaturePropertiesType createSignedSignaturePropertiesType() {
+ return new SignedSignaturePropertiesType();
+ }
+
+ /**
+ * Create an instance of {@link CompleteRevocationRefsType }
+ *
+ */
+ public CompleteRevocationRefsType createCompleteRevocationRefsType() {
+ return new CompleteRevocationRefsType();
+ }
+
+ /**
+ * Create an instance of {@link SignerRoleType }
+ *
+ */
+ public SignerRoleType createSignerRoleType() {
+ return new SignerRoleType();
+ }
+
+ /**
+ * Create an instance of {@link CRLRefType }
+ *
+ */
+ public CRLRefType createCRLRefType() {
+ return new CRLRefType();
+ }
+
+ /**
+ * Create an instance of {@link SignedDataObjectPropertiesType }
+ *
+ */
+ public SignedDataObjectPropertiesType createSignedDataObjectPropertiesType() {
+ return new SignedDataObjectPropertiesType();
+ }
+
+ /**
+ * Create an instance of {@link CRLRefsType }
+ *
+ */
+ public CRLRefsType createCRLRefsType() {
+ return new CRLRefsType();
+ }
+
+ /**
+ * Create an instance of {@link TimeStampType }
+ *
+ */
+ public TimeStampType createTimeStampType() {
+ return new TimeStampType();
+ }
+
+ /**
+ * Create an instance of {@link CommitmentTypeQualifiersListType }
+ *
+ */
+ public CommitmentTypeQualifiersListType createCommitmentTypeQualifiersListType() {
+ return new CommitmentTypeQualifiersListType();
+ }
+
+ /**
+ * Create an instance of {@link OtherCertStatusValuesType }
+ *
+ */
+ public OtherCertStatusValuesType createOtherCertStatusValuesType() {
+ return new OtherCertStatusValuesType();
+ }
+
+ /**
+ * Create an instance of {@link DocumentationReferencesType }
+ *
+ */
+ public DocumentationReferencesType createDocumentationReferencesType() {
+ return new DocumentationReferencesType();
+ }
+
+ /**
+ * Create an instance of {@link OCSPRefsType }
+ *
+ */
+ public OCSPRefsType createOCSPRefsType() {
+ return new OCSPRefsType();
+ }
+
+ /**
+ * Create an instance of {@link AnyType }
+ *
+ */
+ public AnyType createAnyType() {
+ return new AnyType();
+ }
+
+ /**
+ * Create an instance of {@link CertificateValuesType }
+ *
+ */
+ public CertificateValuesType createCertificateValuesType() {
+ return new CertificateValuesType();
+ }
+
+ /**
+ * Create an instance of {@link CRLIdentifierType }
+ *
+ */
+ public CRLIdentifierType createCRLIdentifierType() {
+ return new CRLIdentifierType();
+ }
+
+ /**
+ * Create an instance of {@link CounterSignatureType }
+ *
+ */
+ public CounterSignatureType createCounterSignatureType() {
+ return new CounterSignatureType();
+ }
+
+ /**
+ * Create an instance of {@link IdentifierType }
+ *
+ */
+ public IdentifierType createIdentifierType() {
+ return new IdentifierType();
+ }
+
+ /**
+ * Create an instance of {@link UnsignedPropertiesType }
+ *
+ */
+ public UnsignedPropertiesType createUnsignedPropertiesType() {
+ return new UnsignedPropertiesType();
+ }
+
+ /**
+ * Create an instance of {@link DigestAlgAndValueType }
+ *
+ */
+ public DigestAlgAndValueType createDigestAlgAndValueType() {
+ return new DigestAlgAndValueType();
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link RevocationValuesType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "RevocationValues")
+ public JAXBElement<RevocationValuesType> createRevocationValues(RevocationValuesType value) {
+ return new JAXBElement<RevocationValuesType>(_RevocationValues_QNAME, RevocationValuesType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignerRoleType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "SignerRole")
+ public JAXBElement<SignerRoleType> createSignerRole(SignerRoleType value) {
+ return new JAXBElement<SignerRoleType>(_SignerRole_QNAME, SignerRoleType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TimeStampType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "AllDataObjectsTimeStamp")
+ public JAXBElement<TimeStampType> createAllDataObjectsTimeStamp(TimeStampType value) {
+ return new JAXBElement<TimeStampType>(_AllDataObjectsTimeStamp_QNAME, TimeStampType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TimeStampType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "TimeStamp")
+ public JAXBElement<TimeStampType> createTimeStamp(TimeStampType value) {
+ return new JAXBElement<TimeStampType>(_TimeStamp_QNAME, TimeStampType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link UnsignedSignaturePropertiesType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "UnsignedSignatureProperties")
+ public JAXBElement<UnsignedSignaturePropertiesType> createUnsignedSignatureProperties(UnsignedSignaturePropertiesType value) {
+ return new JAXBElement<UnsignedSignaturePropertiesType>(_UnsignedSignatureProperties_QNAME, UnsignedSignaturePropertiesType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CommitmentTypeIndicationType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "CommitmentTypeIndication")
+ public JAXBElement<CommitmentTypeIndicationType> createCommitmentTypeIndication(CommitmentTypeIndicationType value) {
+ return new JAXBElement<CommitmentTypeIndicationType>(_CommitmentTypeIndication_QNAME, CommitmentTypeIndicationType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link EncapsulatedPKIDataType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "EncapsulatedPKIData")
+ public JAXBElement<EncapsulatedPKIDataType> createEncapsulatedPKIData(EncapsulatedPKIDataType value) {
+ return new JAXBElement<EncapsulatedPKIDataType>(_EncapsulatedPKIData_QNAME, EncapsulatedPKIDataType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignatureProductionPlaceType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "SignatureProductionPlace")
+ public JAXBElement<SignatureProductionPlaceType> createSignatureProductionPlace(SignatureProductionPlaceType value) {
+ return new JAXBElement<SignatureProductionPlaceType>(_SignatureProductionPlace_QNAME, SignatureProductionPlaceType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignedPropertiesType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "SignedProperties")
+ public JAXBElement<SignedPropertiesType> createSignedProperties(SignedPropertiesType value) {
+ return new JAXBElement<SignedPropertiesType>(_SignedProperties_QNAME, SignedPropertiesType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CompleteCertificateRefsType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "CompleteCertificateRefs")
+ public JAXBElement<CompleteCertificateRefsType> createCompleteCertificateRefs(CompleteCertificateRefsType value) {
+ return new JAXBElement<CompleteCertificateRefsType>(_CompleteCertificateRefs_QNAME, CompleteCertificateRefsType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link DataObjectFormatType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "DataObjectFormat")
+ public JAXBElement<DataObjectFormatType> createDataObjectFormat(DataObjectFormatType value) {
+ return new JAXBElement<DataObjectFormatType>(_DataObjectFormat_QNAME, DataObjectFormatType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TimeStampType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "SigAndRefsTimeStamp")
+ public JAXBElement<TimeStampType> createSigAndRefsTimeStamp(TimeStampType value) {
+ return new JAXBElement<TimeStampType>(_SigAndRefsTimeStamp_QNAME, TimeStampType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link XMLGregorianCalendar }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "SigningTime")
+ public JAXBElement<XMLGregorianCalendar> createSigningTime(XMLGregorianCalendar value) {
+ return new JAXBElement<XMLGregorianCalendar>(_SigningTime_QNAME, XMLGregorianCalendar.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link AnyType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "Any")
+ public JAXBElement<AnyType> createAny(AnyType value) {
+ return new JAXBElement<AnyType>(_Any_QNAME, AnyType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignaturePolicyIdentifierType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "SignaturePolicyIdentifier")
+ public JAXBElement<SignaturePolicyIdentifierType> createSignaturePolicyIdentifier(SignaturePolicyIdentifierType value) {
+ return new JAXBElement<SignaturePolicyIdentifierType>(_SignaturePolicyIdentifier_QNAME, SignaturePolicyIdentifierType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CertificateValuesType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "CertificateValues")
+ public JAXBElement<CertificateValuesType> createCertificateValues(CertificateValuesType value) {
+ return new JAXBElement<CertificateValuesType>(_CertificateValues_QNAME, CertificateValuesType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link QualifyingPropertiesReferenceType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "QualifyingPropertiesReference")
+ public JAXBElement<QualifyingPropertiesReferenceType> createQualifyingPropertiesReference(QualifyingPropertiesReferenceType value) {
+ return new JAXBElement<QualifyingPropertiesReferenceType>(_QualifyingPropertiesReference_QNAME, QualifyingPropertiesReferenceType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignedSignaturePropertiesType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "SignedSignatureProperties")
+ public JAXBElement<SignedSignaturePropertiesType> createSignedSignatureProperties(SignedSignaturePropertiesType value) {
+ return new JAXBElement<SignedSignaturePropertiesType>(_SignedSignatureProperties_QNAME, SignedSignaturePropertiesType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ObjectIdentifierType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "ObjectIdentifier")
+ public JAXBElement<ObjectIdentifierType> createObjectIdentifier(ObjectIdentifierType value) {
+ return new JAXBElement<ObjectIdentifierType>(_ObjectIdentifier_QNAME, ObjectIdentifierType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CompleteRevocationRefsType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "CompleteRevocationRefs")
+ public JAXBElement<CompleteRevocationRefsType> createCompleteRevocationRefs(CompleteRevocationRefsType value) {
+ return new JAXBElement<CompleteRevocationRefsType>(_CompleteRevocationRefs_QNAME, CompleteRevocationRefsType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link UnsignedPropertiesType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "UnsignedProperties")
+ public JAXBElement<UnsignedPropertiesType> createUnsignedProperties(UnsignedPropertiesType value) {
+ return new JAXBElement<UnsignedPropertiesType>(_UnsignedProperties_QNAME, UnsignedPropertiesType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SPUserNoticeType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "SPUserNotice")
+ public JAXBElement<SPUserNoticeType> createSPUserNotice(SPUserNoticeType value) {
+ return new JAXBElement<SPUserNoticeType>(_SPUserNotice_QNAME, SPUserNoticeType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TimeStampType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "ArchiveTimeStamp")
+ public JAXBElement<TimeStampType> createArchiveTimeStamp(TimeStampType value) {
+ return new JAXBElement<TimeStampType>(_ArchiveTimeStamp_QNAME, TimeStampType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link UnsignedDataObjectPropertiesType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "UnsignedDataObjectProperties")
+ public JAXBElement<UnsignedDataObjectPropertiesType> createUnsignedDataObjectProperties(UnsignedDataObjectPropertiesType value) {
+ return new JAXBElement<UnsignedDataObjectPropertiesType>(_UnsignedDataObjectProperties_QNAME, UnsignedDataObjectPropertiesType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TimeStampType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "SignatureTimeStamp")
+ public JAXBElement<TimeStampType> createSignatureTimeStamp(TimeStampType value) {
+ return new JAXBElement<TimeStampType>(_SignatureTimeStamp_QNAME, TimeStampType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TimeStampType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "IndividualDataObjectsTimeStamp")
+ public JAXBElement<TimeStampType> createIndividualDataObjectsTimeStamp(TimeStampType value) {
+ return new JAXBElement<TimeStampType>(_IndividualDataObjectsTimeStamp_QNAME, TimeStampType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CertIDListType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "SigningCertificate")
+ public JAXBElement<CertIDListType> createSigningCertificate(CertIDListType value) {
+ return new JAXBElement<CertIDListType>(_SigningCertificate_QNAME, CertIDListType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CounterSignatureType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "CounterSignature")
+ public JAXBElement<CounterSignatureType> createCounterSignature(CounterSignatureType value) {
+ return new JAXBElement<CounterSignatureType>(_CounterSignature_QNAME, CounterSignatureType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link QualifyingPropertiesType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "QualifyingProperties")
+ public JAXBElement<QualifyingPropertiesType> createQualifyingProperties(QualifyingPropertiesType value) {
+ return new JAXBElement<QualifyingPropertiesType>(_QualifyingProperties_QNAME, QualifyingPropertiesType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignedDataObjectPropertiesType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "SignedDataObjectProperties")
+ public JAXBElement<SignedDataObjectPropertiesType> createSignedDataObjectProperties(SignedDataObjectPropertiesType value) {
+ return new JAXBElement<SignedDataObjectPropertiesType>(_SignedDataObjectProperties_QNAME, SignedDataObjectPropertiesType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "SPURI")
+ public JAXBElement<String> createSPURI(String value) {
+ return new JAXBElement<String>(_SPURI_QNAME, String.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TimeStampType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://uri.etsi.org/01903/v1.1.1#", name = "RefsOnlyTimeStamp")
+ public JAXBElement<TimeStampType> createRefsOnlyTimeStamp(TimeStampType value) {
+ return new JAXBElement<TimeStampType>(_RefsOnlyTimeStamp_QNAME, TimeStampType.class, null, value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/ObjectIdentifierType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/ObjectIdentifierType.java
new file mode 100644
index 00000000..1e655033
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/ObjectIdentifierType.java
@@ -0,0 +1,141 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ObjectIdentifierType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ObjectIdentifierType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Identifier" type="{http://uri.etsi.org/01903/v1.1.1#}IdentifierType"/>
+ * &lt;element name="Description" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="DocumentationReferences" type="{http://uri.etsi.org/01903/v1.1.1#}DocumentationReferencesType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ObjectIdentifierType", propOrder = {
+ "identifier",
+ "description",
+ "documentationReferences"
+})
+public class ObjectIdentifierType {
+
+ @XmlElement(name = "Identifier", required = true)
+ protected IdentifierType identifier;
+ @XmlElement(name = "Description")
+ protected String description;
+ @XmlElement(name = "DocumentationReferences")
+ protected DocumentationReferencesType documentationReferences;
+
+ /**
+ * Gets the value of the identifier property.
+ *
+ * @return
+ * possible object is
+ * {@link IdentifierType }
+ *
+ */
+ public IdentifierType getIdentifier() {
+ return identifier;
+ }
+
+ /**
+ * Sets the value of the identifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link IdentifierType }
+ *
+ */
+ public void setIdentifier(IdentifierType value) {
+ this.identifier = value;
+ }
+
+ /**
+ * Gets the value of the description property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getDescription() {
+ return description;
+ }
+
+ /**
+ * Sets the value of the description property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setDescription(String value) {
+ this.description = value;
+ }
+
+ /**
+ * Gets the value of the documentationReferences property.
+ *
+ * @return
+ * possible object is
+ * {@link DocumentationReferencesType }
+ *
+ */
+ public DocumentationReferencesType getDocumentationReferences() {
+ return documentationReferences;
+ }
+
+ /**
+ * Sets the value of the documentationReferences property.
+ *
+ * @param value
+ * allowed object is
+ * {@link DocumentationReferencesType }
+ *
+ */
+ public void setDocumentationReferences(DocumentationReferencesType value) {
+ this.documentationReferences = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OtherCertStatusRefsType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OtherCertStatusRefsType.java
new file mode 100644
index 00000000..5ebd88a0
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OtherCertStatusRefsType.java
@@ -0,0 +1,92 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for OtherCertStatusRefsType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="OtherCertStatusRefsType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="OtherRef" type="{http://uri.etsi.org/01903/v1.1.1#}AnyType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "OtherCertStatusRefsType", propOrder = {
+ "otherRef"
+})
+public class OtherCertStatusRefsType {
+
+ @XmlElement(name = "OtherRef", required = true)
+ protected List<AnyType> otherRef;
+
+ /**
+ * Gets the value of the otherRef property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the otherRef property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getOtherRef().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link AnyType }
+ *
+ *
+ */
+ public List<AnyType> getOtherRef() {
+ if (otherRef == null) {
+ otherRef = new ArrayList<AnyType>();
+ }
+ return this.otherRef;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OtherCertStatusValuesType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OtherCertStatusValuesType.java
new file mode 100644
index 00000000..3b51d27b
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/OtherCertStatusValuesType.java
@@ -0,0 +1,92 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for OtherCertStatusValuesType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="OtherCertStatusValuesType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="OtherValue" type="{http://uri.etsi.org/01903/v1.1.1#}AnyType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "OtherCertStatusValuesType", propOrder = {
+ "otherValue"
+})
+public class OtherCertStatusValuesType {
+
+ @XmlElement(name = "OtherValue", required = true)
+ protected List<AnyType> otherValue;
+
+ /**
+ * Gets the value of the otherValue property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the otherValue property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getOtherValue().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link AnyType }
+ *
+ *
+ */
+ public List<AnyType> getOtherValue() {
+ if (otherValue == null) {
+ otherValue = new ArrayList<AnyType>();
+ }
+ return this.otherValue;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/QualifierType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/QualifierType.java
new file mode 100644
index 00000000..7c659774
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/QualifierType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlEnum;
+import javax.xml.bind.annotation.XmlEnumValue;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for QualifierType.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ * <p>
+ * <pre>
+ * &lt;simpleType name="QualifierType">
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ * &lt;enumeration value="OIDAsURI"/>
+ * &lt;enumeration value="OIDAsURN"/>
+ * &lt;/restriction>
+ * &lt;/simpleType>
+ * </pre>
+ *
+ */
+@XmlType(name = "QualifierType")
+@XmlEnum
+public enum QualifierType {
+
+ @XmlEnumValue("OIDAsURI")
+ OID_AS_URI("OIDAsURI"),
+ @XmlEnumValue("OIDAsURN")
+ OID_AS_URN("OIDAsURN");
+ private final String value;
+
+ QualifierType(String v) {
+ value = v;
+ }
+
+ public String value() {
+ return value;
+ }
+
+ public static QualifierType fromValue(String v) {
+ for (QualifierType c: QualifierType.values()) {
+ if (c.value.equals(v)) {
+ return c;
+ }
+ }
+ throw new IllegalArgumentException(v);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/QualifyingPropertiesReferenceType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/QualifyingPropertiesReferenceType.java
new file mode 100644
index 00000000..028b7d12
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/QualifyingPropertiesReferenceType.java
@@ -0,0 +1,149 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3._2000._09.xmldsig_.TransformsType;
+
+
+/**
+ * <p>Java class for QualifyingPropertiesReferenceType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="QualifyingPropertiesReferenceType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Transforms" type="{http://www.w3.org/2000/09/xmldsig#}TransformsType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="URI" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "QualifyingPropertiesReferenceType", propOrder = {
+ "transforms"
+})
+public class QualifyingPropertiesReferenceType {
+
+ @XmlElement(name = "Transforms")
+ protected TransformsType transforms;
+ @XmlAttribute(name = "URI", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String uri;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the transforms property.
+ *
+ * @return
+ * possible object is
+ * {@link TransformsType }
+ *
+ */
+ public TransformsType getTransforms() {
+ return transforms;
+ }
+
+ /**
+ * Sets the value of the transforms property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TransformsType }
+ *
+ */
+ public void setTransforms(TransformsType value) {
+ this.transforms = value;
+ }
+
+ /**
+ * Gets the value of the uri property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getURI() {
+ return uri;
+ }
+
+ /**
+ * Sets the value of the uri property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setURI(String value) {
+ this.uri = value;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/QualifyingPropertiesType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/QualifyingPropertiesType.java
new file mode 100644
index 00000000..cdd76579
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/QualifyingPropertiesType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for QualifyingPropertiesType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="QualifyingPropertiesType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="SignedProperties" type="{http://uri.etsi.org/01903/v1.1.1#}SignedPropertiesType" minOccurs="0"/>
+ * &lt;element name="UnsignedProperties" type="{http://uri.etsi.org/01903/v1.1.1#}UnsignedPropertiesType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Target" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "QualifyingPropertiesType", propOrder = {
+ "signedProperties",
+ "unsignedProperties"
+})
+public class QualifyingPropertiesType {
+
+ @XmlElement(name = "SignedProperties")
+ protected SignedPropertiesType signedProperties;
+ @XmlElement(name = "UnsignedProperties")
+ protected UnsignedPropertiesType unsignedProperties;
+ @XmlAttribute(name = "Target", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String target;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the signedProperties property.
+ *
+ * @return
+ * possible object is
+ * {@link SignedPropertiesType }
+ *
+ */
+ public SignedPropertiesType getSignedProperties() {
+ return signedProperties;
+ }
+
+ /**
+ * Sets the value of the signedProperties property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignedPropertiesType }
+ *
+ */
+ public void setSignedProperties(SignedPropertiesType value) {
+ this.signedProperties = value;
+ }
+
+ /**
+ * Gets the value of the unsignedProperties property.
+ *
+ * @return
+ * possible object is
+ * {@link UnsignedPropertiesType }
+ *
+ */
+ public UnsignedPropertiesType getUnsignedProperties() {
+ return unsignedProperties;
+ }
+
+ /**
+ * Sets the value of the unsignedProperties property.
+ *
+ * @param value
+ * allowed object is
+ * {@link UnsignedPropertiesType }
+ *
+ */
+ public void setUnsignedProperties(UnsignedPropertiesType value) {
+ this.unsignedProperties = value;
+ }
+
+ /**
+ * Gets the value of the target property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getTarget() {
+ return target;
+ }
+
+ /**
+ * Sets the value of the target property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setTarget(String value) {
+ this.target = value;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/RevocationValuesType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/RevocationValuesType.java
new file mode 100644
index 00000000..36dfa0f4
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/RevocationValuesType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for RevocationValuesType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="RevocationValuesType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="CRLValues" type="{http://uri.etsi.org/01903/v1.1.1#}CRLValuesType" minOccurs="0"/>
+ * &lt;element name="OCSPValues" type="{http://uri.etsi.org/01903/v1.1.1#}OCSPValuesType" minOccurs="0"/>
+ * &lt;element name="OtherValues" type="{http://uri.etsi.org/01903/v1.1.1#}OtherCertStatusValuesType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RevocationValuesType", propOrder = {
+ "crlValues",
+ "ocspValues",
+ "otherValues"
+})
+public class RevocationValuesType {
+
+ @XmlElement(name = "CRLValues")
+ protected CRLValuesType crlValues;
+ @XmlElement(name = "OCSPValues")
+ protected OCSPValuesType ocspValues;
+ @XmlElement(name = "OtherValues")
+ protected OtherCertStatusValuesType otherValues;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the crlValues property.
+ *
+ * @return
+ * possible object is
+ * {@link CRLValuesType }
+ *
+ */
+ public CRLValuesType getCRLValues() {
+ return crlValues;
+ }
+
+ /**
+ * Sets the value of the crlValues property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CRLValuesType }
+ *
+ */
+ public void setCRLValues(CRLValuesType value) {
+ this.crlValues = value;
+ }
+
+ /**
+ * Gets the value of the ocspValues property.
+ *
+ * @return
+ * possible object is
+ * {@link OCSPValuesType }
+ *
+ */
+ public OCSPValuesType getOCSPValues() {
+ return ocspValues;
+ }
+
+ /**
+ * Sets the value of the ocspValues property.
+ *
+ * @param value
+ * allowed object is
+ * {@link OCSPValuesType }
+ *
+ */
+ public void setOCSPValues(OCSPValuesType value) {
+ this.ocspValues = value;
+ }
+
+ /**
+ * Gets the value of the otherValues property.
+ *
+ * @return
+ * possible object is
+ * {@link OtherCertStatusValuesType }
+ *
+ */
+ public OtherCertStatusValuesType getOtherValues() {
+ return otherValues;
+ }
+
+ /**
+ * Sets the value of the otherValues property.
+ *
+ * @param value
+ * allowed object is
+ * {@link OtherCertStatusValuesType }
+ *
+ */
+ public void setOtherValues(OtherCertStatusValuesType value) {
+ this.otherValues = value;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SPUserNoticeType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SPUserNoticeType.java
new file mode 100644
index 00000000..c021667d
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SPUserNoticeType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SPUserNoticeType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SPUserNoticeType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="NoticeRef" type="{http://uri.etsi.org/01903/v1.1.1#}NoticeReferenceType" minOccurs="0"/>
+ * &lt;element name="ExplicitText" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SPUserNoticeType", propOrder = {
+ "noticeRef",
+ "explicitText"
+})
+public class SPUserNoticeType {
+
+ @XmlElement(name = "NoticeRef")
+ protected NoticeReferenceType noticeRef;
+ @XmlElement(name = "ExplicitText")
+ protected String explicitText;
+
+ /**
+ * Gets the value of the noticeRef property.
+ *
+ * @return
+ * possible object is
+ * {@link NoticeReferenceType }
+ *
+ */
+ public NoticeReferenceType getNoticeRef() {
+ return noticeRef;
+ }
+
+ /**
+ * Sets the value of the noticeRef property.
+ *
+ * @param value
+ * allowed object is
+ * {@link NoticeReferenceType }
+ *
+ */
+ public void setNoticeRef(NoticeReferenceType value) {
+ this.noticeRef = value;
+ }
+
+ /**
+ * Gets the value of the explicitText property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getExplicitText() {
+ return explicitText;
+ }
+
+ /**
+ * Sets the value of the explicitText property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setExplicitText(String value) {
+ this.explicitText = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SigPolicyQualifiersListType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SigPolicyQualifiersListType.java
new file mode 100644
index 00000000..55729857
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SigPolicyQualifiersListType.java
@@ -0,0 +1,92 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SigPolicyQualifiersListType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SigPolicyQualifiersListType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="SigPolicyQualifier" type="{http://uri.etsi.org/01903/v1.1.1#}AnyType" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SigPolicyQualifiersListType", propOrder = {
+ "sigPolicyQualifier"
+})
+public class SigPolicyQualifiersListType {
+
+ @XmlElement(name = "SigPolicyQualifier", required = true)
+ protected List<AnyType> sigPolicyQualifier;
+
+ /**
+ * Gets the value of the sigPolicyQualifier property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the sigPolicyQualifier property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSigPolicyQualifier().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link AnyType }
+ *
+ *
+ */
+ public List<AnyType> getSigPolicyQualifier() {
+ if (sigPolicyQualifier == null) {
+ sigPolicyQualifier = new ArrayList<AnyType>();
+ }
+ return this.sigPolicyQualifier;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignaturePolicyIdType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignaturePolicyIdType.java
new file mode 100644
index 00000000..ce951513
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignaturePolicyIdType.java
@@ -0,0 +1,170 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+import org.w3._2000._09.xmldsig_.TransformsType;
+
+
+/**
+ * <p>Java class for SignaturePolicyIdType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignaturePolicyIdType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="SigPolicyId" type="{http://uri.etsi.org/01903/v1.1.1#}ObjectIdentifierType"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Transforms" minOccurs="0"/>
+ * &lt;element name="SigPolicyHash" type="{http://uri.etsi.org/01903/v1.1.1#}DigestAlgAndValueType"/>
+ * &lt;element name="SigPolicyQualifiers" type="{http://uri.etsi.org/01903/v1.1.1#}SigPolicyQualifiersListType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignaturePolicyIdType", propOrder = {
+ "sigPolicyId",
+ "transforms",
+ "sigPolicyHash",
+ "sigPolicyQualifiers"
+})
+public class SignaturePolicyIdType {
+
+ @XmlElement(name = "SigPolicyId", required = true)
+ protected ObjectIdentifierType sigPolicyId;
+ @XmlElement(name = "Transforms", namespace = "http://www.w3.org/2000/09/xmldsig#")
+ protected TransformsType transforms;
+ @XmlElement(name = "SigPolicyHash", required = true)
+ protected DigestAlgAndValueType sigPolicyHash;
+ @XmlElement(name = "SigPolicyQualifiers")
+ protected SigPolicyQualifiersListType sigPolicyQualifiers;
+
+ /**
+ * Gets the value of the sigPolicyId property.
+ *
+ * @return
+ * possible object is
+ * {@link ObjectIdentifierType }
+ *
+ */
+ public ObjectIdentifierType getSigPolicyId() {
+ return sigPolicyId;
+ }
+
+ /**
+ * Sets the value of the sigPolicyId property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ObjectIdentifierType }
+ *
+ */
+ public void setSigPolicyId(ObjectIdentifierType value) {
+ this.sigPolicyId = value;
+ }
+
+ /**
+ * Gets the value of the transforms property.
+ *
+ * @return
+ * possible object is
+ * {@link TransformsType }
+ *
+ */
+ public TransformsType getTransforms() {
+ return transforms;
+ }
+
+ /**
+ * Sets the value of the transforms property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TransformsType }
+ *
+ */
+ public void setTransforms(TransformsType value) {
+ this.transforms = value;
+ }
+
+ /**
+ * Gets the value of the sigPolicyHash property.
+ *
+ * @return
+ * possible object is
+ * {@link DigestAlgAndValueType }
+ *
+ */
+ public DigestAlgAndValueType getSigPolicyHash() {
+ return sigPolicyHash;
+ }
+
+ /**
+ * Sets the value of the sigPolicyHash property.
+ *
+ * @param value
+ * allowed object is
+ * {@link DigestAlgAndValueType }
+ *
+ */
+ public void setSigPolicyHash(DigestAlgAndValueType value) {
+ this.sigPolicyHash = value;
+ }
+
+ /**
+ * Gets the value of the sigPolicyQualifiers property.
+ *
+ * @return
+ * possible object is
+ * {@link SigPolicyQualifiersListType }
+ *
+ */
+ public SigPolicyQualifiersListType getSigPolicyQualifiers() {
+ return sigPolicyQualifiers;
+ }
+
+ /**
+ * Sets the value of the sigPolicyQualifiers property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SigPolicyQualifiersListType }
+ *
+ */
+ public void setSigPolicyQualifiers(SigPolicyQualifiersListType value) {
+ this.sigPolicyQualifiers = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignaturePolicyIdentifierType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignaturePolicyIdentifierType.java
new file mode 100644
index 00000000..9f90e350
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignaturePolicyIdentifierType.java
@@ -0,0 +1,144 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SignaturePolicyIdentifierType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignaturePolicyIdentifierType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice>
+ * &lt;element name="SignaturePolicyId" type="{http://uri.etsi.org/01903/v1.1.1#}SignaturePolicyIdType"/>
+ * &lt;element name="SignaturePolicyImplied">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignaturePolicyIdentifierType", propOrder = {
+ "signaturePolicyId",
+ "signaturePolicyImplied"
+})
+public class SignaturePolicyIdentifierType {
+
+ @XmlElement(name = "SignaturePolicyId")
+ protected SignaturePolicyIdType signaturePolicyId;
+ @XmlElement(name = "SignaturePolicyImplied")
+ protected SignaturePolicyIdentifierType.SignaturePolicyImplied signaturePolicyImplied;
+
+ /**
+ * Gets the value of the signaturePolicyId property.
+ *
+ * @return
+ * possible object is
+ * {@link SignaturePolicyIdType }
+ *
+ */
+ public SignaturePolicyIdType getSignaturePolicyId() {
+ return signaturePolicyId;
+ }
+
+ /**
+ * Sets the value of the signaturePolicyId property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignaturePolicyIdType }
+ *
+ */
+ public void setSignaturePolicyId(SignaturePolicyIdType value) {
+ this.signaturePolicyId = value;
+ }
+
+ /**
+ * Gets the value of the signaturePolicyImplied property.
+ *
+ * @return
+ * possible object is
+ * {@link SignaturePolicyIdentifierType.SignaturePolicyImplied }
+ *
+ */
+ public SignaturePolicyIdentifierType.SignaturePolicyImplied getSignaturePolicyImplied() {
+ return signaturePolicyImplied;
+ }
+
+ /**
+ * Sets the value of the signaturePolicyImplied property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignaturePolicyIdentifierType.SignaturePolicyImplied }
+ *
+ */
+ public void setSignaturePolicyImplied(SignaturePolicyIdentifierType.SignaturePolicyImplied value) {
+ this.signaturePolicyImplied = value;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "")
+ public static class SignaturePolicyImplied {
+
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignatureProductionPlaceType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignatureProductionPlaceType.java
new file mode 100644
index 00000000..e6acd8a7
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignatureProductionPlaceType.java
@@ -0,0 +1,169 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SignatureProductionPlaceType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignatureProductionPlaceType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="City" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="StateOrProvince" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="PostalCode" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;element name="CountryName" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignatureProductionPlaceType", propOrder = {
+ "city",
+ "stateOrProvince",
+ "postalCode",
+ "countryName"
+})
+public class SignatureProductionPlaceType {
+
+ @XmlElement(name = "City")
+ protected String city;
+ @XmlElement(name = "StateOrProvince")
+ protected String stateOrProvince;
+ @XmlElement(name = "PostalCode")
+ protected String postalCode;
+ @XmlElement(name = "CountryName")
+ protected String countryName;
+
+ /**
+ * Gets the value of the city property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getCity() {
+ return city;
+ }
+
+ /**
+ * Sets the value of the city property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setCity(String value) {
+ this.city = value;
+ }
+
+ /**
+ * Gets the value of the stateOrProvince property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getStateOrProvince() {
+ return stateOrProvince;
+ }
+
+ /**
+ * Sets the value of the stateOrProvince property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setStateOrProvince(String value) {
+ this.stateOrProvince = value;
+ }
+
+ /**
+ * Gets the value of the postalCode property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getPostalCode() {
+ return postalCode;
+ }
+
+ /**
+ * Sets the value of the postalCode property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setPostalCode(String value) {
+ this.postalCode = value;
+ }
+
+ /**
+ * Gets the value of the countryName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getCountryName() {
+ return countryName;
+ }
+
+ /**
+ * Sets the value of the countryName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setCountryName(String value) {
+ this.countryName = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignedDataObjectPropertiesType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignedDataObjectPropertiesType.java
new file mode 100644
index 00000000..b6a1aa85
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignedDataObjectPropertiesType.java
@@ -0,0 +1,191 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SignedDataObjectPropertiesType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignedDataObjectPropertiesType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="DataObjectFormat" type="{http://uri.etsi.org/01903/v1.1.1#}DataObjectFormatType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="CommitmentTypeIndication" type="{http://uri.etsi.org/01903/v1.1.1#}CommitmentTypeIndicationType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="AllDataObjectsTimeStamp" type="{http://uri.etsi.org/01903/v1.1.1#}TimeStampType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="IndividualDataObjectsTimeStamp" type="{http://uri.etsi.org/01903/v1.1.1#}TimeStampType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignedDataObjectPropertiesType", propOrder = {
+ "dataObjectFormat",
+ "commitmentTypeIndication",
+ "allDataObjectsTimeStamp",
+ "individualDataObjectsTimeStamp"
+})
+public class SignedDataObjectPropertiesType {
+
+ @XmlElement(name = "DataObjectFormat")
+ protected List<DataObjectFormatType> dataObjectFormat;
+ @XmlElement(name = "CommitmentTypeIndication")
+ protected List<CommitmentTypeIndicationType> commitmentTypeIndication;
+ @XmlElement(name = "AllDataObjectsTimeStamp")
+ protected List<TimeStampType> allDataObjectsTimeStamp;
+ @XmlElement(name = "IndividualDataObjectsTimeStamp")
+ protected List<TimeStampType> individualDataObjectsTimeStamp;
+
+ /**
+ * Gets the value of the dataObjectFormat property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the dataObjectFormat property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getDataObjectFormat().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link DataObjectFormatType }
+ *
+ *
+ */
+ public List<DataObjectFormatType> getDataObjectFormat() {
+ if (dataObjectFormat == null) {
+ dataObjectFormat = new ArrayList<DataObjectFormatType>();
+ }
+ return this.dataObjectFormat;
+ }
+
+ /**
+ * Gets the value of the commitmentTypeIndication property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the commitmentTypeIndication property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getCommitmentTypeIndication().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link CommitmentTypeIndicationType }
+ *
+ *
+ */
+ public List<CommitmentTypeIndicationType> getCommitmentTypeIndication() {
+ if (commitmentTypeIndication == null) {
+ commitmentTypeIndication = new ArrayList<CommitmentTypeIndicationType>();
+ }
+ return this.commitmentTypeIndication;
+ }
+
+ /**
+ * Gets the value of the allDataObjectsTimeStamp property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the allDataObjectsTimeStamp property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getAllDataObjectsTimeStamp().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link TimeStampType }
+ *
+ *
+ */
+ public List<TimeStampType> getAllDataObjectsTimeStamp() {
+ if (allDataObjectsTimeStamp == null) {
+ allDataObjectsTimeStamp = new ArrayList<TimeStampType>();
+ }
+ return this.allDataObjectsTimeStamp;
+ }
+
+ /**
+ * Gets the value of the individualDataObjectsTimeStamp property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the individualDataObjectsTimeStamp property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getIndividualDataObjectsTimeStamp().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link TimeStampType }
+ *
+ *
+ */
+ public List<TimeStampType> getIndividualDataObjectsTimeStamp() {
+ if (individualDataObjectsTimeStamp == null) {
+ individualDataObjectsTimeStamp = new ArrayList<TimeStampType>();
+ }
+ return this.individualDataObjectsTimeStamp;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignedPropertiesType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignedPropertiesType.java
new file mode 100644
index 00000000..f3599699
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignedPropertiesType.java
@@ -0,0 +1,148 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for SignedPropertiesType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignedPropertiesType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="SignedSignatureProperties" type="{http://uri.etsi.org/01903/v1.1.1#}SignedSignaturePropertiesType"/>
+ * &lt;element name="SignedDataObjectProperties" type="{http://uri.etsi.org/01903/v1.1.1#}SignedDataObjectPropertiesType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignedPropertiesType", propOrder = {
+ "signedSignatureProperties",
+ "signedDataObjectProperties"
+})
+public class SignedPropertiesType {
+
+ @XmlElement(name = "SignedSignatureProperties", required = true)
+ protected SignedSignaturePropertiesType signedSignatureProperties;
+ @XmlElement(name = "SignedDataObjectProperties")
+ protected SignedDataObjectPropertiesType signedDataObjectProperties;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the signedSignatureProperties property.
+ *
+ * @return
+ * possible object is
+ * {@link SignedSignaturePropertiesType }
+ *
+ */
+ public SignedSignaturePropertiesType getSignedSignatureProperties() {
+ return signedSignatureProperties;
+ }
+
+ /**
+ * Sets the value of the signedSignatureProperties property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignedSignaturePropertiesType }
+ *
+ */
+ public void setSignedSignatureProperties(SignedSignaturePropertiesType value) {
+ this.signedSignatureProperties = value;
+ }
+
+ /**
+ * Gets the value of the signedDataObjectProperties property.
+ *
+ * @return
+ * possible object is
+ * {@link SignedDataObjectPropertiesType }
+ *
+ */
+ public SignedDataObjectPropertiesType getSignedDataObjectProperties() {
+ return signedDataObjectProperties;
+ }
+
+ /**
+ * Sets the value of the signedDataObjectProperties property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignedDataObjectPropertiesType }
+ *
+ */
+ public void setSignedDataObjectProperties(SignedDataObjectPropertiesType value) {
+ this.signedDataObjectProperties = value;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignedSignaturePropertiesType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignedSignaturePropertiesType.java
new file mode 100644
index 00000000..1bfca870
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignedSignaturePropertiesType.java
@@ -0,0 +1,200 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+
+/**
+ * <p>Java class for SignedSignaturePropertiesType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignedSignaturePropertiesType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="SigningTime" type="{http://www.w3.org/2001/XMLSchema}dateTime"/>
+ * &lt;element name="SigningCertificate" type="{http://uri.etsi.org/01903/v1.1.1#}CertIDListType"/>
+ * &lt;element name="SignaturePolicyIdentifier" type="{http://uri.etsi.org/01903/v1.1.1#}SignaturePolicyIdentifierType"/>
+ * &lt;element name="SignatureProductionPlace" type="{http://uri.etsi.org/01903/v1.1.1#}SignatureProductionPlaceType" minOccurs="0"/>
+ * &lt;element name="SignerRole" type="{http://uri.etsi.org/01903/v1.1.1#}SignerRoleType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignedSignaturePropertiesType", propOrder = {
+ "signingTime",
+ "signingCertificate",
+ "signaturePolicyIdentifier",
+ "signatureProductionPlace",
+ "signerRole"
+})
+public class SignedSignaturePropertiesType {
+
+ @XmlElement(name = "SigningTime", required = true)
+ @XmlSchemaType(name = "dateTime")
+ protected XMLGregorianCalendar signingTime;
+ @XmlElement(name = "SigningCertificate", required = true)
+ protected CertIDListType signingCertificate;
+ @XmlElement(name = "SignaturePolicyIdentifier", required = true)
+ protected SignaturePolicyIdentifierType signaturePolicyIdentifier;
+ @XmlElement(name = "SignatureProductionPlace")
+ protected SignatureProductionPlaceType signatureProductionPlace;
+ @XmlElement(name = "SignerRole")
+ protected SignerRoleType signerRole;
+
+ /**
+ * Gets the value of the signingTime property.
+ *
+ * @return
+ * possible object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public XMLGregorianCalendar getSigningTime() {
+ return signingTime;
+ }
+
+ /**
+ * Sets the value of the signingTime property.
+ *
+ * @param value
+ * allowed object is
+ * {@link XMLGregorianCalendar }
+ *
+ */
+ public void setSigningTime(XMLGregorianCalendar value) {
+ this.signingTime = value;
+ }
+
+ /**
+ * Gets the value of the signingCertificate property.
+ *
+ * @return
+ * possible object is
+ * {@link CertIDListType }
+ *
+ */
+ public CertIDListType getSigningCertificate() {
+ return signingCertificate;
+ }
+
+ /**
+ * Sets the value of the signingCertificate property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CertIDListType }
+ *
+ */
+ public void setSigningCertificate(CertIDListType value) {
+ this.signingCertificate = value;
+ }
+
+ /**
+ * Gets the value of the signaturePolicyIdentifier property.
+ *
+ * @return
+ * possible object is
+ * {@link SignaturePolicyIdentifierType }
+ *
+ */
+ public SignaturePolicyIdentifierType getSignaturePolicyIdentifier() {
+ return signaturePolicyIdentifier;
+ }
+
+ /**
+ * Sets the value of the signaturePolicyIdentifier property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignaturePolicyIdentifierType }
+ *
+ */
+ public void setSignaturePolicyIdentifier(SignaturePolicyIdentifierType value) {
+ this.signaturePolicyIdentifier = value;
+ }
+
+ /**
+ * Gets the value of the signatureProductionPlace property.
+ *
+ * @return
+ * possible object is
+ * {@link SignatureProductionPlaceType }
+ *
+ */
+ public SignatureProductionPlaceType getSignatureProductionPlace() {
+ return signatureProductionPlace;
+ }
+
+ /**
+ * Sets the value of the signatureProductionPlace property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignatureProductionPlaceType }
+ *
+ */
+ public void setSignatureProductionPlace(SignatureProductionPlaceType value) {
+ this.signatureProductionPlace = value;
+ }
+
+ /**
+ * Gets the value of the signerRole property.
+ *
+ * @return
+ * possible object is
+ * {@link SignerRoleType }
+ *
+ */
+ public SignerRoleType getSignerRole() {
+ return signerRole;
+ }
+
+ /**
+ * Sets the value of the signerRole property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignerRoleType }
+ *
+ */
+ public void setSignerRole(SignerRoleType value) {
+ this.signerRole = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignerRoleType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignerRoleType.java
new file mode 100644
index 00000000..c90c5671
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/SignerRoleType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SignerRoleType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignerRoleType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="ClaimedRoles" type="{http://uri.etsi.org/01903/v1.1.1#}ClaimedRolesListType" minOccurs="0"/>
+ * &lt;element name="CertifiedRoles" type="{http://uri.etsi.org/01903/v1.1.1#}CertifiedRolesListType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignerRoleType", propOrder = {
+ "claimedRoles",
+ "certifiedRoles"
+})
+public class SignerRoleType {
+
+ @XmlElement(name = "ClaimedRoles")
+ protected ClaimedRolesListType claimedRoles;
+ @XmlElement(name = "CertifiedRoles")
+ protected CertifiedRolesListType certifiedRoles;
+
+ /**
+ * Gets the value of the claimedRoles property.
+ *
+ * @return
+ * possible object is
+ * {@link ClaimedRolesListType }
+ *
+ */
+ public ClaimedRolesListType getClaimedRoles() {
+ return claimedRoles;
+ }
+
+ /**
+ * Sets the value of the claimedRoles property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ClaimedRolesListType }
+ *
+ */
+ public void setClaimedRoles(ClaimedRolesListType value) {
+ this.claimedRoles = value;
+ }
+
+ /**
+ * Gets the value of the certifiedRoles property.
+ *
+ * @return
+ * possible object is
+ * {@link CertifiedRolesListType }
+ *
+ */
+ public CertifiedRolesListType getCertifiedRoles() {
+ return certifiedRoles;
+ }
+
+ /**
+ * Sets the value of the certifiedRoles property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CertifiedRolesListType }
+ *
+ */
+ public void setCertifiedRoles(CertifiedRolesListType value) {
+ this.certifiedRoles = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/TimeStampType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/TimeStampType.java
new file mode 100644
index 00000000..4256ca78
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/TimeStampType.java
@@ -0,0 +1,150 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for TimeStampType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="TimeStampType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="HashDataInfo" type="{http://uri.etsi.org/01903/v1.1.1#}HashDataInfoType" maxOccurs="unbounded"/>
+ * &lt;choice>
+ * &lt;element name="EncapsulatedTimeStamp" type="{http://uri.etsi.org/01903/v1.1.1#}EncapsulatedPKIDataType"/>
+ * &lt;element name="XMLTimeStamp" type="{http://uri.etsi.org/01903/v1.1.1#}AnyType"/>
+ * &lt;/choice>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TimeStampType", propOrder = {
+ "hashDataInfo",
+ "encapsulatedTimeStamp",
+ "xmlTimeStamp"
+})
+public class TimeStampType {
+
+ @XmlElement(name = "HashDataInfo", required = true)
+ protected List<HashDataInfoType> hashDataInfo;
+ @XmlElement(name = "EncapsulatedTimeStamp")
+ protected EncapsulatedPKIDataType encapsulatedTimeStamp;
+ @XmlElement(name = "XMLTimeStamp")
+ protected AnyType xmlTimeStamp;
+
+ /**
+ * Gets the value of the hashDataInfo property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the hashDataInfo property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getHashDataInfo().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link HashDataInfoType }
+ *
+ *
+ */
+ public List<HashDataInfoType> getHashDataInfo() {
+ if (hashDataInfo == null) {
+ hashDataInfo = new ArrayList<HashDataInfoType>();
+ }
+ return this.hashDataInfo;
+ }
+
+ /**
+ * Gets the value of the encapsulatedTimeStamp property.
+ *
+ * @return
+ * possible object is
+ * {@link EncapsulatedPKIDataType }
+ *
+ */
+ public EncapsulatedPKIDataType getEncapsulatedTimeStamp() {
+ return encapsulatedTimeStamp;
+ }
+
+ /**
+ * Sets the value of the encapsulatedTimeStamp property.
+ *
+ * @param value
+ * allowed object is
+ * {@link EncapsulatedPKIDataType }
+ *
+ */
+ public void setEncapsulatedTimeStamp(EncapsulatedPKIDataType value) {
+ this.encapsulatedTimeStamp = value;
+ }
+
+ /**
+ * Gets the value of the xmlTimeStamp property.
+ *
+ * @return
+ * possible object is
+ * {@link AnyType }
+ *
+ */
+ public AnyType getXMLTimeStamp() {
+ return xmlTimeStamp;
+ }
+
+ /**
+ * Sets the value of the xmlTimeStamp property.
+ *
+ * @param value
+ * allowed object is
+ * {@link AnyType }
+ *
+ */
+ public void setXMLTimeStamp(AnyType value) {
+ this.xmlTimeStamp = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/UnsignedDataObjectPropertiesType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/UnsignedDataObjectPropertiesType.java
new file mode 100644
index 00000000..a992e849
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/UnsignedDataObjectPropertiesType.java
@@ -0,0 +1,92 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for UnsignedDataObjectPropertiesType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="UnsignedDataObjectPropertiesType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="UnsignedDataObjectProperty" type="{http://uri.etsi.org/01903/v1.1.1#}AnyType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "UnsignedDataObjectPropertiesType", propOrder = {
+ "unsignedDataObjectProperty"
+})
+public class UnsignedDataObjectPropertiesType {
+
+ @XmlElement(name = "UnsignedDataObjectProperty")
+ protected List<AnyType> unsignedDataObjectProperty;
+
+ /**
+ * Gets the value of the unsignedDataObjectProperty property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the unsignedDataObjectProperty property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getUnsignedDataObjectProperty().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link AnyType }
+ *
+ *
+ */
+ public List<AnyType> getUnsignedDataObjectProperty() {
+ if (unsignedDataObjectProperty == null) {
+ unsignedDataObjectProperty = new ArrayList<AnyType>();
+ }
+ return this.unsignedDataObjectProperty;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/UnsignedPropertiesType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/UnsignedPropertiesType.java
new file mode 100644
index 00000000..ec037e65
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/UnsignedPropertiesType.java
@@ -0,0 +1,148 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for UnsignedPropertiesType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="UnsignedPropertiesType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="UnsignedSignatureProperties" type="{http://uri.etsi.org/01903/v1.1.1#}UnsignedSignaturePropertiesType" minOccurs="0"/>
+ * &lt;element name="UnsignedDataObjectProperties" type="{http://uri.etsi.org/01903/v1.1.1#}UnsignedDataObjectPropertiesType" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "UnsignedPropertiesType", propOrder = {
+ "unsignedSignatureProperties",
+ "unsignedDataObjectProperties"
+})
+public class UnsignedPropertiesType {
+
+ @XmlElement(name = "UnsignedSignatureProperties")
+ protected UnsignedSignaturePropertiesType unsignedSignatureProperties;
+ @XmlElement(name = "UnsignedDataObjectProperties")
+ protected UnsignedDataObjectPropertiesType unsignedDataObjectProperties;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the unsignedSignatureProperties property.
+ *
+ * @return
+ * possible object is
+ * {@link UnsignedSignaturePropertiesType }
+ *
+ */
+ public UnsignedSignaturePropertiesType getUnsignedSignatureProperties() {
+ return unsignedSignatureProperties;
+ }
+
+ /**
+ * Sets the value of the unsignedSignatureProperties property.
+ *
+ * @param value
+ * allowed object is
+ * {@link UnsignedSignaturePropertiesType }
+ *
+ */
+ public void setUnsignedSignatureProperties(UnsignedSignaturePropertiesType value) {
+ this.unsignedSignatureProperties = value;
+ }
+
+ /**
+ * Gets the value of the unsignedDataObjectProperties property.
+ *
+ * @return
+ * possible object is
+ * {@link UnsignedDataObjectPropertiesType }
+ *
+ */
+ public UnsignedDataObjectPropertiesType getUnsignedDataObjectProperties() {
+ return unsignedDataObjectProperties;
+ }
+
+ /**
+ * Sets the value of the unsignedDataObjectProperties property.
+ *
+ * @param value
+ * allowed object is
+ * {@link UnsignedDataObjectPropertiesType }
+ *
+ */
+ public void setUnsignedDataObjectProperties(UnsignedDataObjectPropertiesType value) {
+ this.unsignedDataObjectProperties = value;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/UnsignedSignaturePropertiesType.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/UnsignedSignaturePropertiesType.java
new file mode 100644
index 00000000..ad713c1f
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/UnsignedSignaturePropertiesType.java
@@ -0,0 +1,338 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+
+package org.etsi.uri._01903.v1_1;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for UnsignedSignaturePropertiesType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="UnsignedSignaturePropertiesType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="CounterSignature" type="{http://uri.etsi.org/01903/v1.1.1#}CounterSignatureType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="SignatureTimeStamp" type="{http://uri.etsi.org/01903/v1.1.1#}TimeStampType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="CompleteCertificateRefs" type="{http://uri.etsi.org/01903/v1.1.1#}CompleteCertificateRefsType" minOccurs="0"/>
+ * &lt;element name="CompleteRevocationRefs" type="{http://uri.etsi.org/01903/v1.1.1#}CompleteRevocationRefsType" minOccurs="0"/>
+ * &lt;choice>
+ * &lt;element name="SigAndRefsTimeStamp" type="{http://uri.etsi.org/01903/v1.1.1#}TimeStampType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;element name="RefsOnlyTimeStamp" type="{http://uri.etsi.org/01903/v1.1.1#}TimeStampType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/choice>
+ * &lt;element name="CertificateValues" type="{http://uri.etsi.org/01903/v1.1.1#}CertificateValuesType" minOccurs="0"/>
+ * &lt;element name="RevocationValues" type="{http://uri.etsi.org/01903/v1.1.1#}RevocationValuesType" minOccurs="0"/>
+ * &lt;element name="ArchiveTimeStamp" type="{http://uri.etsi.org/01903/v1.1.1#}TimeStampType" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "UnsignedSignaturePropertiesType", propOrder = {
+ "counterSignature",
+ "signatureTimeStamp",
+ "completeCertificateRefs",
+ "completeRevocationRefs",
+ "sigAndRefsTimeStamp",
+ "refsOnlyTimeStamp",
+ "certificateValues",
+ "revocationValues",
+ "archiveTimeStamp"
+})
+public class UnsignedSignaturePropertiesType {
+
+ @XmlElement(name = "CounterSignature")
+ protected List<CounterSignatureType> counterSignature;
+ @XmlElement(name = "SignatureTimeStamp")
+ protected List<TimeStampType> signatureTimeStamp;
+ @XmlElement(name = "CompleteCertificateRefs")
+ protected CompleteCertificateRefsType completeCertificateRefs;
+ @XmlElement(name = "CompleteRevocationRefs")
+ protected CompleteRevocationRefsType completeRevocationRefs;
+ @XmlElement(name = "SigAndRefsTimeStamp")
+ protected List<TimeStampType> sigAndRefsTimeStamp;
+ @XmlElement(name = "RefsOnlyTimeStamp")
+ protected List<TimeStampType> refsOnlyTimeStamp;
+ @XmlElement(name = "CertificateValues")
+ protected CertificateValuesType certificateValues;
+ @XmlElement(name = "RevocationValues")
+ protected RevocationValuesType revocationValues;
+ @XmlElement(name = "ArchiveTimeStamp")
+ protected List<TimeStampType> archiveTimeStamp;
+
+ /**
+ * Gets the value of the counterSignature property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the counterSignature property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getCounterSignature().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link CounterSignatureType }
+ *
+ *
+ */
+ public List<CounterSignatureType> getCounterSignature() {
+ if (counterSignature == null) {
+ counterSignature = new ArrayList<CounterSignatureType>();
+ }
+ return this.counterSignature;
+ }
+
+ /**
+ * Gets the value of the signatureTimeStamp property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the signatureTimeStamp property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSignatureTimeStamp().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link TimeStampType }
+ *
+ *
+ */
+ public List<TimeStampType> getSignatureTimeStamp() {
+ if (signatureTimeStamp == null) {
+ signatureTimeStamp = new ArrayList<TimeStampType>();
+ }
+ return this.signatureTimeStamp;
+ }
+
+ /**
+ * Gets the value of the completeCertificateRefs property.
+ *
+ * @return
+ * possible object is
+ * {@link CompleteCertificateRefsType }
+ *
+ */
+ public CompleteCertificateRefsType getCompleteCertificateRefs() {
+ return completeCertificateRefs;
+ }
+
+ /**
+ * Sets the value of the completeCertificateRefs property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CompleteCertificateRefsType }
+ *
+ */
+ public void setCompleteCertificateRefs(CompleteCertificateRefsType value) {
+ this.completeCertificateRefs = value;
+ }
+
+ /**
+ * Gets the value of the completeRevocationRefs property.
+ *
+ * @return
+ * possible object is
+ * {@link CompleteRevocationRefsType }
+ *
+ */
+ public CompleteRevocationRefsType getCompleteRevocationRefs() {
+ return completeRevocationRefs;
+ }
+
+ /**
+ * Sets the value of the completeRevocationRefs property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CompleteRevocationRefsType }
+ *
+ */
+ public void setCompleteRevocationRefs(CompleteRevocationRefsType value) {
+ this.completeRevocationRefs = value;
+ }
+
+ /**
+ * Gets the value of the sigAndRefsTimeStamp property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the sigAndRefsTimeStamp property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSigAndRefsTimeStamp().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link TimeStampType }
+ *
+ *
+ */
+ public List<TimeStampType> getSigAndRefsTimeStamp() {
+ if (sigAndRefsTimeStamp == null) {
+ sigAndRefsTimeStamp = new ArrayList<TimeStampType>();
+ }
+ return this.sigAndRefsTimeStamp;
+ }
+
+ /**
+ * Gets the value of the refsOnlyTimeStamp property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the refsOnlyTimeStamp property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getRefsOnlyTimeStamp().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link TimeStampType }
+ *
+ *
+ */
+ public List<TimeStampType> getRefsOnlyTimeStamp() {
+ if (refsOnlyTimeStamp == null) {
+ refsOnlyTimeStamp = new ArrayList<TimeStampType>();
+ }
+ return this.refsOnlyTimeStamp;
+ }
+
+ /**
+ * Gets the value of the certificateValues property.
+ *
+ * @return
+ * possible object is
+ * {@link CertificateValuesType }
+ *
+ */
+ public CertificateValuesType getCertificateValues() {
+ return certificateValues;
+ }
+
+ /**
+ * Sets the value of the certificateValues property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CertificateValuesType }
+ *
+ */
+ public void setCertificateValues(CertificateValuesType value) {
+ this.certificateValues = value;
+ }
+
+ /**
+ * Gets the value of the revocationValues property.
+ *
+ * @return
+ * possible object is
+ * {@link RevocationValuesType }
+ *
+ */
+ public RevocationValuesType getRevocationValues() {
+ return revocationValues;
+ }
+
+ /**
+ * Sets the value of the revocationValues property.
+ *
+ * @param value
+ * allowed object is
+ * {@link RevocationValuesType }
+ *
+ */
+ public void setRevocationValues(RevocationValuesType value) {
+ this.revocationValues = value;
+ }
+
+ /**
+ * Gets the value of the archiveTimeStamp property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the archiveTimeStamp property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getArchiveTimeStamp().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link TimeStampType }
+ *
+ *
+ */
+ public List<TimeStampType> getArchiveTimeStamp() {
+ if (archiveTimeStamp == null) {
+ archiveTimeStamp = new ArrayList<TimeStampType>();
+ }
+ return this.archiveTimeStamp;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/package-info.java b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/package-info.java
new file mode 100644
index 00000000..ff4b8905
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/etsi/uri/_01903/v1_1/package-info.java
@@ -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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.25 at 10:14:41 AM GMT
+//
+
+@javax.xml.bind.annotation.XmlSchema(namespace = "http://uri.etsi.org/01903/v1.1.1#", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package org.etsi.uri._01903.v1_1;
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/CanonicalizationMethodType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/CanonicalizationMethodType.java
new file mode 100644
index 00000000..675ded2d
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/CanonicalizationMethodType.java
@@ -0,0 +1,125 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CanonicalizationMethodType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CanonicalizationMethodType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;attribute name="Algorithm" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CanonicalizationMethodType", propOrder = {
+ "content"
+})
+public class CanonicalizationMethodType {
+
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+ @XmlAttribute(name = "Algorithm", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String algorithm;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Object }
+ * {@link String }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+ /**
+ * Gets the value of the algorithm property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAlgorithm() {
+ return algorithm;
+ }
+
+ /**
+ * Sets the value of the algorithm property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAlgorithm(String value) {
+ this.algorithm = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/DSAKeyValueType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/DSAKeyValueType.java
new file mode 100644
index 00000000..6a9916f1
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/DSAKeyValueType.java
@@ -0,0 +1,243 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DSAKeyValueType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="DSAKeyValueType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;sequence minOccurs="0">
+ * &lt;element name="P" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ * &lt;element name="Q" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ * &lt;/sequence>
+ * &lt;element name="G" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary" minOccurs="0"/>
+ * &lt;element name="Y" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ * &lt;element name="J" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary" minOccurs="0"/>
+ * &lt;sequence minOccurs="0">
+ * &lt;element name="Seed" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ * &lt;element name="PgenCounter" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ * &lt;/sequence>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DSAKeyValueType", propOrder = {
+ "p",
+ "q",
+ "g",
+ "y",
+ "j",
+ "seed",
+ "pgenCounter"
+})
+public class DSAKeyValueType {
+
+ @XmlElement(name = "P")
+ protected byte[] p;
+ @XmlElement(name = "Q")
+ protected byte[] q;
+ @XmlElement(name = "G")
+ protected byte[] g;
+ @XmlElement(name = "Y", required = true)
+ protected byte[] y;
+ @XmlElement(name = "J")
+ protected byte[] j;
+ @XmlElement(name = "Seed")
+ protected byte[] seed;
+ @XmlElement(name = "PgenCounter")
+ protected byte[] pgenCounter;
+
+ /**
+ * Gets the value of the p property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getP() {
+ return p;
+ }
+
+ /**
+ * Sets the value of the p property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setP(byte[] value) {
+ this.p = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the q property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getQ() {
+ return q;
+ }
+
+ /**
+ * Sets the value of the q property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setQ(byte[] value) {
+ this.q = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the g property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getG() {
+ return g;
+ }
+
+ /**
+ * Sets the value of the g property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setG(byte[] value) {
+ this.g = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the y property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getY() {
+ return y;
+ }
+
+ /**
+ * Sets the value of the y property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setY(byte[] value) {
+ this.y = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the j property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getJ() {
+ return j;
+ }
+
+ /**
+ * Sets the value of the j property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setJ(byte[] value) {
+ this.j = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the seed property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getSeed() {
+ return seed;
+ }
+
+ /**
+ * Sets the value of the seed property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setSeed(byte[] value) {
+ this.seed = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the pgenCounter property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getPgenCounter() {
+ return pgenCounter;
+ }
+
+ /**
+ * Sets the value of the pgenCounter property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setPgenCounter(byte[] value) {
+ this.pgenCounter = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/DigestMethodType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/DigestMethodType.java
new file mode 100644
index 00000000..8a93927c
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/DigestMethodType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for DigestMethodType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="DigestMethodType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;attribute name="Algorithm" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DigestMethodType", propOrder = {
+ "content"
+})
+public class DigestMethodType {
+
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+ @XmlAttribute(name = "Algorithm", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String algorithm;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Element }
+ * {@link String }
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+ /**
+ * Gets the value of the algorithm property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAlgorithm() {
+ return algorithm;
+ }
+
+ /**
+ * Sets the value of the algorithm property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAlgorithm(String value) {
+ this.algorithm = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/KeyInfoType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/KeyInfoType.java
new file mode 100644
index 00000000..982d4dc5
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/KeyInfoType.java
@@ -0,0 +1,158 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for KeyInfoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="KeyInfoType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice maxOccurs="unbounded">
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}KeyName"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}KeyValue"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}RetrievalMethod"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}X509Data"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}PGPData"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}SPKIData"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}MgmtData"/>
+ * &lt;any/>
+ * &lt;/choice>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "KeyInfoType", propOrder = {
+ "content"
+})
+public class KeyInfoType {
+
+ @XmlElementRefs({
+ @XmlElementRef(name = "KeyName", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "PGPData", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "X509Data", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "SPKIData", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "MgmtData", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "KeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "RetrievalMethod", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class)
+ })
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link JAXBElement }{@code <}{@link String }{@code >}
+ * {@link JAXBElement }{@code <}{@link PGPDataType }{@code >}
+ * {@link Element }
+ * {@link JAXBElement }{@code <}{@link X509DataType }{@code >}
+ * {@link String }
+ * {@link Object }
+ * {@link JAXBElement }{@code <}{@link SPKIDataType }{@code >}
+ * {@link JAXBElement }{@code <}{@link String }{@code >}
+ * {@link JAXBElement }{@code <}{@link KeyValueType }{@code >}
+ * {@link JAXBElement }{@code <}{@link RetrievalMethodType }{@code >}
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/KeyValueType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/KeyValueType.java
new file mode 100644
index 00000000..8bfa9f17
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/KeyValueType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for KeyValueType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="KeyValueType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}DSAKeyValue"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}RSAKeyValue"/>
+ * &lt;any/>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "KeyValueType", propOrder = {
+ "content"
+})
+public class KeyValueType {
+
+ @XmlElementRefs({
+ @XmlElementRef(name = "DSAKeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "RSAKeyValue", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class)
+ })
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link JAXBElement }{@code <}{@link DSAKeyValueType }{@code >}
+ * {@link String }
+ * {@link Object }
+ * {@link Element }
+ * {@link JAXBElement }{@code <}{@link RSAKeyValueType }{@code >}
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ManifestType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ManifestType.java
new file mode 100644
index 00000000..b8e2d049
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ManifestType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for ManifestType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ManifestType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Reference" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ManifestType", propOrder = {
+ "reference"
+})
+public class ManifestType {
+
+ @XmlElement(name = "Reference", required = true)
+ protected List<ReferenceType> reference;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the reference property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the reference property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getReference().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link ReferenceType }
+ *
+ *
+ */
+ public List<ReferenceType> getReference() {
+ if (reference == null) {
+ reference = new ArrayList<ReferenceType>();
+ }
+ return this.reference;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ObjectFactory.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ObjectFactory.java
new file mode 100644
index 00000000..fae77451
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ObjectFactory.java
@@ -0,0 +1,576 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import java.math.BigInteger;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each
+ * Java content interface and Java element interface
+ * generated in the org.w3._2000._09.xmldsig_ package.
+ * <p>An ObjectFactory allows you to programatically
+ * construct new instances of the Java representation
+ * for XML content. The Java representation of XML
+ * content can consist of schema derived interfaces
+ * and classes representing the binding of schema
+ * type definitions, element declarations and model
+ * groups. Factory methods for each of these are
+ * provided in this class.
+ *
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _Signature_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Signature");
+ private final static QName _PGPData_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "PGPData");
+ private final static QName _DSAKeyValue_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "DSAKeyValue");
+ private final static QName _SPKIData_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SPKIData");
+ private final static QName _SignedInfo_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SignedInfo");
+ private final static QName _RetrievalMethod_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "RetrievalMethod");
+ private final static QName _CanonicalizationMethod_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "CanonicalizationMethod");
+ private final static QName _Object_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Object");
+ private final static QName _SignatureProperty_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SignatureProperty");
+ private final static QName _SignatureValue_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SignatureValue");
+ private final static QName _Manifest_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Manifest");
+ private final static QName _Transforms_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Transforms");
+ private final static QName _Transform_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Transform");
+ private final static QName _X509Data_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "X509Data");
+ private final static QName _SignatureMethod_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SignatureMethod");
+ private final static QName _KeyInfo_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "KeyInfo");
+ private final static QName _DigestValue_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "DigestValue");
+ private final static QName _DigestMethod_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "DigestMethod");
+ private final static QName _SignatureProperties_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SignatureProperties");
+ private final static QName _MgmtData_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "MgmtData");
+ private final static QName _KeyName_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "KeyName");
+ private final static QName _KeyValue_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "KeyValue");
+ private final static QName _Reference_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "Reference");
+ private final static QName _RSAKeyValue_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "RSAKeyValue");
+ private final static QName _TransformTypeXPath_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "XPath");
+ private final static QName _SPKIDataTypeSPKISexp_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "SPKISexp");
+ private final static QName _SignatureMethodTypeHMACOutputLength_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "HMACOutputLength");
+ private final static QName _X509DataTypeX509IssuerSerial_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "X509IssuerSerial");
+ private final static QName _X509DataTypeX509Certificate_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "X509Certificate");
+ private final static QName _X509DataTypeX509SKI_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "X509SKI");
+ private final static QName _X509DataTypeX509SubjectName_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "X509SubjectName");
+ private final static QName _X509DataTypeX509CRL_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "X509CRL");
+ private final static QName _PGPDataTypePGPKeyID_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "PGPKeyID");
+ private final static QName _PGPDataTypePGPKeyPacket_QNAME = new QName("http://www.w3.org/2000/09/xmldsig#", "PGPKeyPacket");
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.w3._2000._09.xmldsig_
+ *
+ */
+ public ObjectFactory() {
+ }
+
+ /**
+ * Create an instance of {@link RetrievalMethodType }
+ *
+ */
+ public RetrievalMethodType createRetrievalMethodType() {
+ return new RetrievalMethodType();
+ }
+
+ /**
+ * Create an instance of {@link SignedInfoType }
+ *
+ */
+ public SignedInfoType createSignedInfoType() {
+ return new SignedInfoType();
+ }
+
+ /**
+ * Create an instance of {@link DSAKeyValueType }
+ *
+ */
+ public DSAKeyValueType createDSAKeyValueType() {
+ return new DSAKeyValueType();
+ }
+
+ /**
+ * Create an instance of {@link DigestMethodType }
+ *
+ */
+ public DigestMethodType createDigestMethodType() {
+ return new DigestMethodType();
+ }
+
+ /**
+ * Create an instance of {@link SignaturePropertiesType }
+ *
+ */
+ public SignaturePropertiesType createSignaturePropertiesType() {
+ return new SignaturePropertiesType();
+ }
+
+ /**
+ * Create an instance of {@link ObjectType }
+ *
+ */
+ public ObjectType createObjectType() {
+ return new ObjectType();
+ }
+
+ /**
+ * Create an instance of {@link X509DataType }
+ *
+ */
+ public X509DataType createX509DataType() {
+ return new X509DataType();
+ }
+
+ /**
+ * Create an instance of {@link ReferenceType }
+ *
+ */
+ public ReferenceType createReferenceType() {
+ return new ReferenceType();
+ }
+
+ /**
+ * Create an instance of {@link CanonicalizationMethodType }
+ *
+ */
+ public CanonicalizationMethodType createCanonicalizationMethodType() {
+ return new CanonicalizationMethodType();
+ }
+
+ /**
+ * Create an instance of {@link TransformType }
+ *
+ */
+ public TransformType createTransformType() {
+// return new at.gv.egiz.slbinding.impl.TransformType();
+ return new TransformType();
+ }
+
+ /**
+ * Create an instance of {@link SignatureMethodType }
+ *
+ */
+ public SignatureMethodType createSignatureMethodType() {
+ return new SignatureMethodType();
+ }
+
+ /**
+ * Create an instance of {@link PGPDataType }
+ *
+ */
+ public PGPDataType createPGPDataType() {
+ return new PGPDataType();
+ }
+
+ /**
+ * Create an instance of {@link KeyInfoType }
+ *
+ */
+ public KeyInfoType createKeyInfoType() {
+ return new KeyInfoType();
+ }
+
+ /**
+ * Create an instance of {@link RSAKeyValueType }
+ *
+ */
+ public RSAKeyValueType createRSAKeyValueType() {
+ return new RSAKeyValueType();
+ }
+
+ /**
+ * Create an instance of {@link KeyValueType }
+ *
+ */
+ public KeyValueType createKeyValueType() {
+ return new KeyValueType();
+ }
+
+ /**
+ * Create an instance of {@link SignaturePropertyType }
+ *
+ */
+ public SignaturePropertyType createSignaturePropertyType() {
+ return new SignaturePropertyType();
+ }
+
+ /**
+ * Create an instance of {@link ManifestType }
+ *
+ */
+ public ManifestType createManifestType() {
+ return new ManifestType();
+ }
+
+ /**
+ * Create an instance of {@link SignatureType }
+ *
+ */
+ public SignatureType createSignatureType() {
+ return new SignatureType();
+ }
+
+ /**
+ * Create an instance of {@link TransformsType }
+ *
+ */
+ public TransformsType createTransformsType() {
+ return new TransformsType();
+ }
+
+ /**
+ * Create an instance of {@link SignatureValueType }
+ *
+ */
+ public SignatureValueType createSignatureValueType() {
+ return new SignatureValueType();
+ }
+
+ /**
+ * Create an instance of {@link X509IssuerSerialType }
+ *
+ */
+ public X509IssuerSerialType createX509IssuerSerialType() {
+ return new X509IssuerSerialType();
+ }
+
+ /**
+ * Create an instance of {@link SPKIDataType }
+ *
+ */
+ public SPKIDataType createSPKIDataType() {
+ return new SPKIDataType();
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignatureType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Signature")
+ public JAXBElement<SignatureType> createSignature(SignatureType value) {
+ return new JAXBElement<SignatureType>(_Signature_QNAME, SignatureType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link PGPDataType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "PGPData")
+ public JAXBElement<PGPDataType> createPGPData(PGPDataType value) {
+ return new JAXBElement<PGPDataType>(_PGPData_QNAME, PGPDataType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link DSAKeyValueType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "DSAKeyValue")
+ public JAXBElement<DSAKeyValueType> createDSAKeyValue(DSAKeyValueType value) {
+ return new JAXBElement<DSAKeyValueType>(_DSAKeyValue_QNAME, DSAKeyValueType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SPKIDataType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SPKIData")
+ public JAXBElement<SPKIDataType> createSPKIData(SPKIDataType value) {
+ return new JAXBElement<SPKIDataType>(_SPKIData_QNAME, SPKIDataType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignedInfoType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SignedInfo")
+ public JAXBElement<SignedInfoType> createSignedInfo(SignedInfoType value) {
+ return new JAXBElement<SignedInfoType>(_SignedInfo_QNAME, SignedInfoType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link RetrievalMethodType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "RetrievalMethod")
+ public JAXBElement<RetrievalMethodType> createRetrievalMethod(RetrievalMethodType value) {
+ return new JAXBElement<RetrievalMethodType>(_RetrievalMethod_QNAME, RetrievalMethodType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link CanonicalizationMethodType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "CanonicalizationMethod")
+ public JAXBElement<CanonicalizationMethodType> createCanonicalizationMethod(CanonicalizationMethodType value) {
+ return new JAXBElement<CanonicalizationMethodType>(_CanonicalizationMethod_QNAME, CanonicalizationMethodType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ObjectType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Object")
+ public JAXBElement<ObjectType> createObject(ObjectType value) {
+ return new JAXBElement<ObjectType>(_Object_QNAME, ObjectType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignaturePropertyType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SignatureProperty")
+ public JAXBElement<SignaturePropertyType> createSignatureProperty(SignaturePropertyType value) {
+ return new JAXBElement<SignaturePropertyType>(_SignatureProperty_QNAME, SignaturePropertyType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignatureValueType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SignatureValue")
+ public JAXBElement<SignatureValueType> createSignatureValue(SignatureValueType value) {
+ return new JAXBElement<SignatureValueType>(_SignatureValue_QNAME, SignatureValueType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ManifestType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Manifest")
+ public JAXBElement<ManifestType> createManifest(ManifestType value) {
+ return new JAXBElement<ManifestType>(_Manifest_QNAME, ManifestType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TransformsType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Transforms")
+ public JAXBElement<TransformsType> createTransforms(TransformsType value) {
+ return new JAXBElement<TransformsType>(_Transforms_QNAME, TransformsType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link TransformType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Transform")
+ public JAXBElement<TransformType> createTransform(TransformType value) {
+ return new JAXBElement<TransformType>(_Transform_QNAME, TransformType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link X509DataType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "X509Data")
+ public JAXBElement<X509DataType> createX509Data(X509DataType value) {
+ return new JAXBElement<X509DataType>(_X509Data_QNAME, X509DataType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignatureMethodType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SignatureMethod")
+ public JAXBElement<SignatureMethodType> createSignatureMethod(SignatureMethodType value) {
+ return new JAXBElement<SignatureMethodType>(_SignatureMethod_QNAME, SignatureMethodType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link KeyInfoType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "KeyInfo")
+ public JAXBElement<KeyInfoType> createKeyInfo(KeyInfoType value) {
+ return new JAXBElement<KeyInfoType>(_KeyInfo_QNAME, KeyInfoType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "DigestValue")
+ public JAXBElement<byte[]> createDigestValue(byte[] value) {
+ return new JAXBElement<byte[]>(_DigestValue_QNAME, byte[].class, null, ((byte[]) value));
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link DigestMethodType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "DigestMethod")
+ public JAXBElement<DigestMethodType> createDigestMethod(DigestMethodType value) {
+ return new JAXBElement<DigestMethodType>(_DigestMethod_QNAME, DigestMethodType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link SignaturePropertiesType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SignatureProperties")
+ public JAXBElement<SignaturePropertiesType> createSignatureProperties(SignaturePropertiesType value) {
+ return new JAXBElement<SignaturePropertiesType>(_SignatureProperties_QNAME, SignaturePropertiesType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "MgmtData")
+ public JAXBElement<String> createMgmtData(String value) {
+ return new JAXBElement<String>(_MgmtData_QNAME, String.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "KeyName")
+ public JAXBElement<String> createKeyName(String value) {
+ return new JAXBElement<String>(_KeyName_QNAME, String.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link KeyValueType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "KeyValue")
+ public JAXBElement<KeyValueType> createKeyValue(KeyValueType value) {
+ return new JAXBElement<KeyValueType>(_KeyValue_QNAME, KeyValueType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ReferenceType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "Reference")
+ public JAXBElement<ReferenceType> createReference(ReferenceType value) {
+ return new JAXBElement<ReferenceType>(_Reference_QNAME, ReferenceType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link RSAKeyValueType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "RSAKeyValue")
+ public JAXBElement<RSAKeyValueType> createRSAKeyValue(RSAKeyValueType value) {
+ return new JAXBElement<RSAKeyValueType>(_RSAKeyValue_QNAME, RSAKeyValueType.class, null, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "XPath", scope = TransformType.class)
+ public JAXBElement<String> createTransformTypeXPath(String value) {
+ return new JAXBElement<String>(_TransformTypeXPath_QNAME, String.class, TransformType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "SPKISexp", scope = SPKIDataType.class)
+ public JAXBElement<byte[]> createSPKIDataTypeSPKISexp(byte[] value) {
+ return new JAXBElement<byte[]>(_SPKIDataTypeSPKISexp_QNAME, byte[].class, SPKIDataType.class, ((byte[]) value));
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link BigInteger }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "HMACOutputLength", scope = SignatureMethodType.class)
+ public JAXBElement<BigInteger> createSignatureMethodTypeHMACOutputLength(BigInteger value) {
+ return new JAXBElement<BigInteger>(_SignatureMethodTypeHMACOutputLength_QNAME, BigInteger.class, SignatureMethodType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link X509IssuerSerialType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "X509IssuerSerial", scope = X509DataType.class)
+ public JAXBElement<X509IssuerSerialType> createX509DataTypeX509IssuerSerial(X509IssuerSerialType value) {
+ return new JAXBElement<X509IssuerSerialType>(_X509DataTypeX509IssuerSerial_QNAME, X509IssuerSerialType.class, X509DataType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "X509Certificate", scope = X509DataType.class)
+ public JAXBElement<byte[]> createX509DataTypeX509Certificate(byte[] value) {
+ return new JAXBElement<byte[]>(_X509DataTypeX509Certificate_QNAME, byte[].class, X509DataType.class, ((byte[]) value));
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "X509SKI", scope = X509DataType.class)
+ public JAXBElement<byte[]> createX509DataTypeX509SKI(byte[] value) {
+ return new JAXBElement<byte[]>(_X509DataTypeX509SKI_QNAME, byte[].class, X509DataType.class, ((byte[]) value));
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link String }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "X509SubjectName", scope = X509DataType.class)
+ public JAXBElement<String> createX509DataTypeX509SubjectName(String value) {
+ return new JAXBElement<String>(_X509DataTypeX509SubjectName_QNAME, String.class, X509DataType.class, value);
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "X509CRL", scope = X509DataType.class)
+ public JAXBElement<byte[]> createX509DataTypeX509CRL(byte[] value) {
+ return new JAXBElement<byte[]>(_X509DataTypeX509CRL_QNAME, byte[].class, X509DataType.class, ((byte[]) value));
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "PGPKeyID", scope = PGPDataType.class)
+ public JAXBElement<byte[]> createPGPDataTypePGPKeyID(byte[] value) {
+ return new JAXBElement<byte[]>(_PGPDataTypePGPKeyID_QNAME, byte[].class, PGPDataType.class, ((byte[]) value));
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link byte[]}{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2000/09/xmldsig#", name = "PGPKeyPacket", scope = PGPDataType.class)
+ public JAXBElement<byte[]> createPGPDataTypePGPKeyPacket(byte[] value) {
+ return new JAXBElement<byte[]>(_PGPDataTypePGPKeyPacket_QNAME, byte[].class, PGPDataType.class, ((byte[]) value));
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ObjectType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ObjectType.java
new file mode 100644
index 00000000..f63304c2
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ObjectType.java
@@ -0,0 +1,187 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for ObjectType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ObjectType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence maxOccurs="unbounded" minOccurs="0">
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;attribute name="MimeType" type="{http://www.w3.org/2001/XMLSchema}string" />
+ * &lt;attribute name="Encoding" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ObjectType", propOrder = {
+ "content"
+})
+public class ObjectType {
+
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+ @XmlAttribute(name = "MimeType")
+ protected String mimeType;
+ @XmlAttribute(name = "Encoding")
+ @XmlSchemaType(name = "anyURI")
+ protected String encoding;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Element }
+ * {@link String }
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+ /**
+ * Gets the value of the mimeType property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getMimeType() {
+ return mimeType;
+ }
+
+ /**
+ * Sets the value of the mimeType property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setMimeType(String value) {
+ this.mimeType = value;
+ }
+
+ /**
+ * Gets the value of the encoding property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getEncoding() {
+ return encoding;
+ }
+
+ /**
+ * Sets the value of the encoding property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setEncoding(String value) {
+ this.encoding = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/PGPDataType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/PGPDataType.java
new file mode 100644
index 00000000..3f173371
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/PGPDataType.java
@@ -0,0 +1,121 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for PGPDataType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="PGPDataType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice>
+ * &lt;sequence>
+ * &lt;element name="PGPKeyID" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="PGPKeyPacket" type="{http://www.w3.org/2001/XMLSchema}base64Binary" minOccurs="0"/>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;sequence>
+ * &lt;element name="PGPKeyPacket" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PGPDataType", propOrder = {
+ "content"
+})
+public class PGPDataType {
+
+ @XmlElementRefs({
+ @XmlElementRef(name = "PGPKeyID", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "PGPKeyPacket", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class)
+ })
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+
+ /**
+ * Gets the rest of the content model.
+ *
+ * <p>
+ * You are getting this "catch-all" property because of the following reason:
+ * The field name "PGPKeyPacket" is used by two different parts of a schema. See:
+ * line 208 of file:/home/clemens/workspace/bku/schema-base/src/main/schema/xmldsig-core-schema.xsd
+ * line 203 of file:/home/clemens/workspace/bku/schema-base/src/main/schema/xmldsig-core-schema.xsd
+ * <p>
+ * To get rid of this property, apply a property customization to one
+ * of both of the following declarations to change their names:
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
+ * {@link Object }
+ * {@link Element }
+ * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/RSAKeyValueType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/RSAKeyValueType.java
new file mode 100644
index 00000000..dd456bb5
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/RSAKeyValueType.java
@@ -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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RSAKeyValueType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="RSAKeyValueType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="Modulus" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ * &lt;element name="Exponent" type="{http://www.w3.org/2000/09/xmldsig#}CryptoBinary"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RSAKeyValueType", propOrder = {
+ "modulus",
+ "exponent"
+})
+public class RSAKeyValueType {
+
+ @XmlElement(name = "Modulus", required = true)
+ protected byte[] modulus;
+ @XmlElement(name = "Exponent", required = true)
+ protected byte[] exponent;
+
+ /**
+ * Gets the value of the modulus property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getModulus() {
+ return modulus;
+ }
+
+ /**
+ * Sets the value of the modulus property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setModulus(byte[] value) {
+ this.modulus = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the exponent property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getExponent() {
+ return exponent;
+ }
+
+ /**
+ * Sets the value of the exponent property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setExponent(byte[] value) {
+ this.exponent = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ReferenceType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ReferenceType.java
new file mode 100644
index 00000000..9c005a02
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/ReferenceType.java
@@ -0,0 +1,230 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for ReferenceType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ReferenceType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Transforms" minOccurs="0"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}DigestMethod"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}DigestValue"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;attribute name="URI" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;attribute name="Type" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ReferenceType", propOrder = {
+ "transforms",
+ "digestMethod",
+ "digestValue"
+})
+public class ReferenceType {
+
+ @XmlElement(name = "Transforms")
+ protected TransformsType transforms;
+ @XmlElement(name = "DigestMethod", required = true)
+ protected DigestMethodType digestMethod;
+ @XmlElement(name = "DigestValue", required = true)
+ protected byte[] digestValue;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+ @XmlAttribute(name = "URI")
+ @XmlSchemaType(name = "anyURI")
+ protected String uri;
+ @XmlAttribute(name = "Type")
+ @XmlSchemaType(name = "anyURI")
+ protected String type;
+
+ /**
+ * Gets the value of the transforms property.
+ *
+ * @return
+ * possible object is
+ * {@link TransformsType }
+ *
+ */
+ public TransformsType getTransforms() {
+ return transforms;
+ }
+
+ /**
+ * Sets the value of the transforms property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TransformsType }
+ *
+ */
+ public void setTransforms(TransformsType value) {
+ this.transforms = value;
+ }
+
+ /**
+ * Gets the value of the digestMethod property.
+ *
+ * @return
+ * possible object is
+ * {@link DigestMethodType }
+ *
+ */
+ public DigestMethodType getDigestMethod() {
+ return digestMethod;
+ }
+
+ /**
+ * Sets the value of the digestMethod property.
+ *
+ * @param value
+ * allowed object is
+ * {@link DigestMethodType }
+ *
+ */
+ public void setDigestMethod(DigestMethodType value) {
+ this.digestMethod = value;
+ }
+
+ /**
+ * Gets the value of the digestValue property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getDigestValue() {
+ return digestValue;
+ }
+
+ /**
+ * Sets the value of the digestValue property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setDigestValue(byte[] value) {
+ this.digestValue = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+ /**
+ * Gets the value of the uri property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getURI() {
+ return uri;
+ }
+
+ /**
+ * Sets the value of the uri property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setURI(String value) {
+ this.uri = value;
+ }
+
+ /**
+ * Gets the value of the type property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * Sets the value of the type property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setType(String value) {
+ this.type = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/RetrievalMethodType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/RetrievalMethodType.java
new file mode 100644
index 00000000..179e3e2c
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/RetrievalMethodType.java
@@ -0,0 +1,143 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for RetrievalMethodType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="RetrievalMethodType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Transforms" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="URI" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;attribute name="Type" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "RetrievalMethodType", propOrder = {
+ "transforms"
+})
+public class RetrievalMethodType {
+
+ @XmlElement(name = "Transforms")
+ protected TransformsType transforms;
+ @XmlAttribute(name = "URI")
+ @XmlSchemaType(name = "anyURI")
+ protected String uri;
+ @XmlAttribute(name = "Type")
+ @XmlSchemaType(name = "anyURI")
+ protected String type;
+
+ /**
+ * Gets the value of the transforms property.
+ *
+ * @return
+ * possible object is
+ * {@link TransformsType }
+ *
+ */
+ public TransformsType getTransforms() {
+ return transforms;
+ }
+
+ /**
+ * Sets the value of the transforms property.
+ *
+ * @param value
+ * allowed object is
+ * {@link TransformsType }
+ *
+ */
+ public void setTransforms(TransformsType value) {
+ this.transforms = value;
+ }
+
+ /**
+ * Gets the value of the uri property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getURI() {
+ return uri;
+ }
+
+ /**
+ * Sets the value of the uri property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setURI(String value) {
+ this.uri = value;
+ }
+
+ /**
+ * Gets the value of the type property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getType() {
+ return type;
+ }
+
+ /**
+ * Sets the value of the type property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setType(String value) {
+ this.type = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SPKIDataType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SPKIDataType.java
new file mode 100644
index 00000000..ec0ae5dc
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SPKIDataType.java
@@ -0,0 +1,99 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for SPKIDataType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SPKIDataType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence maxOccurs="unbounded">
+ * &lt;element name="SPKISexp" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SPKIDataType", propOrder = {
+ "spkiSexpAndAny"
+})
+public class SPKIDataType {
+
+ @XmlElementRef(name = "SPKISexp", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class)
+ @XmlAnyElement(lax = true)
+ protected List<Object> spkiSexpAndAny;
+
+ /**
+ * Gets the value of the spkiSexpAndAny property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the spkiSexpAndAny property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSPKISexpAndAny().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
+ * {@link Element }
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getSPKISexpAndAny() {
+ if (spkiSexpAndAny == null) {
+ spkiSexpAndAny = new ArrayList<Object>();
+ }
+ return this.spkiSexpAndAny;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignatureMethodType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignatureMethodType.java
new file mode 100644
index 00000000..b915a92f
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignatureMethodType.java
@@ -0,0 +1,131 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import java.math.BigInteger;
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for SignatureMethodType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignatureMethodType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="HMACOutputLength" type="{http://www.w3.org/2000/09/xmldsig#}HMACOutputLengthType" minOccurs="0"/>
+ * &lt;any/>
+ * &lt;/sequence>
+ * &lt;attribute name="Algorithm" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignatureMethodType", propOrder = {
+ "content"
+})
+public class SignatureMethodType {
+
+ @XmlElementRef(name = "HMACOutputLength", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class)
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+ @XmlAttribute(name = "Algorithm", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String algorithm;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link JAXBElement }{@code <}{@link BigInteger }{@code >}
+ * {@link String }
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+ /**
+ * Gets the value of the algorithm property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAlgorithm() {
+ return algorithm;
+ }
+
+ /**
+ * Sets the value of the algorithm property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAlgorithm(String value) {
+ this.algorithm = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignaturePropertiesType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignaturePropertiesType.java
new file mode 100644
index 00000000..722d3587
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignaturePropertiesType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for SignaturePropertiesType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignaturePropertiesType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}SignatureProperty" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignaturePropertiesType", propOrder = {
+ "signatureProperty"
+})
+public class SignaturePropertiesType {
+
+ @XmlElement(name = "SignatureProperty", required = true)
+ protected List<SignaturePropertyType> signatureProperty;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the signatureProperty property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the signatureProperty property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getSignatureProperty().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link SignaturePropertyType }
+ *
+ *
+ */
+ public List<SignaturePropertyType> getSignatureProperty() {
+ if (signatureProperty == null) {
+ signatureProperty = new ArrayList<SignaturePropertyType>();
+ }
+ return this.signatureProperty;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignaturePropertyType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignaturePropertyType.java
new file mode 100644
index 00000000..10f15721
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignaturePropertyType.java
@@ -0,0 +1,160 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for SignaturePropertyType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignaturePropertyType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice maxOccurs="unbounded">
+ * &lt;any/>
+ * &lt;/choice>
+ * &lt;attribute name="Target" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignaturePropertyType", propOrder = {
+ "content"
+})
+public class SignaturePropertyType {
+
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+ @XmlAttribute(name = "Target", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String target;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link Element }
+ * {@link String }
+ * {@link Object }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+ /**
+ * Gets the value of the target property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getTarget() {
+ return target;
+ }
+
+ /**
+ * Sets the value of the target property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setTarget(String value) {
+ this.target = value;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignatureType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignatureType.java
new file mode 100644
index 00000000..ce71624b
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignatureType.java
@@ -0,0 +1,211 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for SignatureType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignatureType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}SignedInfo"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}SignatureValue"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}KeyInfo" minOccurs="0"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Object" maxOccurs="unbounded" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignatureType", propOrder = {
+ "signedInfo",
+ "signatureValue",
+ "keyInfo",
+ "object"
+})
+public class SignatureType {
+
+ @XmlElement(name = "SignedInfo", required = true)
+ protected SignedInfoType signedInfo;
+ @XmlElement(name = "SignatureValue", required = true)
+ protected SignatureValueType signatureValue;
+ @XmlElement(name = "KeyInfo")
+ protected KeyInfoType keyInfo;
+ @XmlElement(name = "Object")
+ protected List<ObjectType> object;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the signedInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link SignedInfoType }
+ *
+ */
+ public SignedInfoType getSignedInfo() {
+ return signedInfo;
+ }
+
+ /**
+ * Sets the value of the signedInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignedInfoType }
+ *
+ */
+ public void setSignedInfo(SignedInfoType value) {
+ this.signedInfo = value;
+ }
+
+ /**
+ * Gets the value of the signatureValue property.
+ *
+ * @return
+ * possible object is
+ * {@link SignatureValueType }
+ *
+ */
+ public SignatureValueType getSignatureValue() {
+ return signatureValue;
+ }
+
+ /**
+ * Sets the value of the signatureValue property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignatureValueType }
+ *
+ */
+ public void setSignatureValue(SignatureValueType value) {
+ this.signatureValue = value;
+ }
+
+ /**
+ * Gets the value of the keyInfo property.
+ *
+ * @return
+ * possible object is
+ * {@link KeyInfoType }
+ *
+ */
+ public KeyInfoType getKeyInfo() {
+ return keyInfo;
+ }
+
+ /**
+ * Sets the value of the keyInfo property.
+ *
+ * @param value
+ * allowed object is
+ * {@link KeyInfoType }
+ *
+ */
+ public void setKeyInfo(KeyInfoType value) {
+ this.keyInfo = value;
+ }
+
+ /**
+ * Gets the value of the object property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the object property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getObject().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link ObjectType }
+ *
+ *
+ */
+ public List<ObjectType> getObject() {
+ if (object == null) {
+ object = new ArrayList<ObjectType>();
+ }
+ return this.object;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignatureValueType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignatureValueType.java
new file mode 100644
index 00000000..764a2092
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignatureValueType.java
@@ -0,0 +1,115 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.XmlValue;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for SignatureValueType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignatureValueType">
+ * &lt;simpleContent>
+ * &lt;extension base="&lt;http://www.w3.org/2001/XMLSchema>base64Binary">
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/extension>
+ * &lt;/simpleContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignatureValueType", propOrder = {
+ "value"
+})
+public class SignatureValueType {
+
+ @XmlValue
+ protected byte[] value;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * byte[]
+ */
+ public byte[] getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * byte[]
+ */
+ public void setValue(byte[] value) {
+ this.value = ((byte[]) value);
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignedInfoType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignedInfoType.java
new file mode 100644
index 00000000..b045e668
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/SignedInfoType.java
@@ -0,0 +1,183 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlID;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.CollapsedStringAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for SignedInfoType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="SignedInfoType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}CanonicalizationMethod"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}SignatureMethod"/>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Reference" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;attribute name="Id" type="{http://www.w3.org/2001/XMLSchema}ID" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "SignedInfoType", propOrder = {
+ "canonicalizationMethod",
+ "signatureMethod",
+ "reference"
+})
+public class SignedInfoType {
+
+ @XmlElement(name = "CanonicalizationMethod", required = true)
+ protected CanonicalizationMethodType canonicalizationMethod;
+ @XmlElement(name = "SignatureMethod", required = true)
+ protected SignatureMethodType signatureMethod;
+ @XmlElement(name = "Reference", required = true)
+ protected List<ReferenceType> reference;
+ @XmlAttribute(name = "Id")
+ @XmlJavaTypeAdapter(CollapsedStringAdapter.class)
+ @XmlID
+ @XmlSchemaType(name = "ID")
+ protected String id;
+
+ /**
+ * Gets the value of the canonicalizationMethod property.
+ *
+ * @return
+ * possible object is
+ * {@link CanonicalizationMethodType }
+ *
+ */
+ public CanonicalizationMethodType getCanonicalizationMethod() {
+ return canonicalizationMethod;
+ }
+
+ /**
+ * Sets the value of the canonicalizationMethod property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CanonicalizationMethodType }
+ *
+ */
+ public void setCanonicalizationMethod(CanonicalizationMethodType value) {
+ this.canonicalizationMethod = value;
+ }
+
+ /**
+ * Gets the value of the signatureMethod property.
+ *
+ * @return
+ * possible object is
+ * {@link SignatureMethodType }
+ *
+ */
+ public SignatureMethodType getSignatureMethod() {
+ return signatureMethod;
+ }
+
+ /**
+ * Sets the value of the signatureMethod property.
+ *
+ * @param value
+ * allowed object is
+ * {@link SignatureMethodType }
+ *
+ */
+ public void setSignatureMethod(SignatureMethodType value) {
+ this.signatureMethod = value;
+ }
+
+ /**
+ * Gets the value of the reference property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the reference property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getReference().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link ReferenceType }
+ *
+ *
+ */
+ public List<ReferenceType> getReference() {
+ if (reference == null) {
+ reference = new ArrayList<ReferenceType>();
+ }
+ return this.reference;
+ }
+
+ /**
+ * Gets the value of the id property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getId() {
+ return id;
+ }
+
+ /**
+ * Sets the value of the id property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setId(String value) {
+ this.id = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/TransformType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/TransformType.java
new file mode 100644
index 00000000..5cfb679a
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/TransformType.java
@@ -0,0 +1,132 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlMixed;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for TransformType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="TransformType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice maxOccurs="unbounded" minOccurs="0">
+ * &lt;any/>
+ * &lt;element name="XPath" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;/choice>
+ * &lt;attribute name="Algorithm" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TransformType", propOrder = {
+ "content"
+})
+public class TransformType {
+
+ @XmlElementRef(name = "XPath", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class)
+ @XmlMixed
+ @XmlAnyElement(lax = true)
+ protected List<Object> content;
+ @XmlAttribute(name = "Algorithm", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String algorithm;
+
+ /**
+ * Gets the value of the content property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the content property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getContent().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link JAXBElement }{@code <}{@link String }{@code >}
+ * {@link Object }
+ * {@link String }
+ * {@link Element }
+ *
+ *
+ */
+ public List<Object> getContent() {
+ if (content == null) {
+ content = new ArrayList<Object>();
+ }
+ return this.content;
+ }
+
+ /**
+ * Gets the value of the algorithm property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getAlgorithm() {
+ return algorithm;
+ }
+
+ /**
+ * Sets the value of the algorithm property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setAlgorithm(String value) {
+ this.algorithm = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/TransformsType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/TransformsType.java
new file mode 100644
index 00000000..c7044c4c
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/TransformsType.java
@@ -0,0 +1,92 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for TransformsType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="TransformsType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element ref="{http://www.w3.org/2000/09/xmldsig#}Transform" maxOccurs="unbounded"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TransformsType", propOrder = {
+ "transform"
+})
+public class TransformsType {
+
+ @XmlElement(name = "Transform", required = true) //, type=at.gv.egiz.slbinding.impl.TransformType.class)
+ protected List<TransformType> transform;
+
+ /**
+ * Gets the value of the transform property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the transform property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getTransform().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link TransformType }
+ *
+ *
+ */
+ public List<TransformType> getTransform() {
+ if (transform == null) {
+ transform = new ArrayList<TransformType>();
+ }
+ return this.transform;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/X509DataType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/X509DataType.java
new file mode 100644
index 00000000..4c60f131
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/X509DataType.java
@@ -0,0 +1,116 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import java.util.ArrayList;
+import java.util.List;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAnyElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElementRefs;
+import javax.xml.bind.annotation.XmlType;
+import org.w3c.dom.Element;
+
+
+/**
+ * <p>Java class for X509DataType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="X509DataType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence maxOccurs="unbounded">
+ * &lt;choice>
+ * &lt;element name="X509IssuerSerial" type="{http://www.w3.org/2000/09/xmldsig#}X509IssuerSerialType"/>
+ * &lt;element name="X509SKI" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="X509SubjectName" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="X509Certificate" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;element name="X509CRL" type="{http://www.w3.org/2001/XMLSchema}base64Binary"/>
+ * &lt;any/>
+ * &lt;/choice>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "X509DataType", propOrder = {
+ "x509IssuerSerialOrX509SKIOrX509SubjectName"
+})
+public class X509DataType {
+
+ @XmlElementRefs({
+ @XmlElementRef(name = "X509SubjectName", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "X509CRL", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "X509SKI", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "X509Certificate", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class),
+ @XmlElementRef(name = "X509IssuerSerial", namespace = "http://www.w3.org/2000/09/xmldsig#", type = JAXBElement.class)
+ })
+ @XmlAnyElement(lax = true)
+ protected List<Object> x509IssuerSerialOrX509SKIOrX509SubjectName;
+
+ /**
+ * Gets the value of the x509IssuerSerialOrX509SKIOrX509SubjectName property.
+ *
+ * <p>
+ * This accessor method returns a reference to the live list,
+ * not a snapshot. Therefore any modification you make to the
+ * returned list will be present inside the JAXB object.
+ * This is why there is not a <CODE>set</CODE> method for the x509IssuerSerialOrX509SKIOrX509SubjectName property.
+ *
+ * <p>
+ * For example, to add a new item, do as follows:
+ * <pre>
+ * getX509IssuerSerialOrX509SKIOrX509SubjectName().add(newItem);
+ * </pre>
+ *
+ *
+ * <p>
+ * Objects of the following type(s) are allowed in the list
+ * {@link JAXBElement }{@code <}{@link String }{@code >}
+ * {@link Element }
+ * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
+ * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
+ * {@link Object }
+ * {@link JAXBElement }{@code <}{@link byte[]}{@code >}
+ * {@link JAXBElement }{@code <}{@link X509IssuerSerialType }{@code >}
+ *
+ *
+ */
+ public List<Object> getX509IssuerSerialOrX509SKIOrX509SubjectName() {
+ if (x509IssuerSerialOrX509SKIOrX509SubjectName == null) {
+ x509IssuerSerialOrX509SKIOrX509SubjectName = new ArrayList<Object>();
+ }
+ return this.x509IssuerSerialOrX509SKIOrX509SubjectName;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/X509IssuerSerialType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/X509IssuerSerialType.java
new file mode 100644
index 00000000..dfb0c353
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/X509IssuerSerialType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2000._09.xmldsig_;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for X509IssuerSerialType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="X509IssuerSerialType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="X509IssuerName" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ * &lt;element name="X509SerialNumber" type="{http://www.w3.org/2001/XMLSchema}integer"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "X509IssuerSerialType", propOrder = {
+ "x509IssuerName",
+ "x509SerialNumber"
+})
+public class X509IssuerSerialType {
+
+ @XmlElement(name = "X509IssuerName", required = true)
+ protected String x509IssuerName;
+ @XmlElement(name = "X509SerialNumber", required = true)
+ protected BigInteger x509SerialNumber;
+
+ /**
+ * Gets the value of the x509IssuerName property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getX509IssuerName() {
+ return x509IssuerName;
+ }
+
+ /**
+ * Sets the value of the x509IssuerName property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setX509IssuerName(String value) {
+ this.x509IssuerName = value;
+ }
+
+ /**
+ * Gets the value of the x509SerialNumber property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getX509SerialNumber() {
+ return x509SerialNumber;
+ }
+
+ /**
+ * Sets the value of the x509SerialNumber property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setX509SerialNumber(BigInteger value) {
+ this.x509SerialNumber = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/package-info.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/package-info.java
new file mode 100644
index 00000000..f7f42cb4
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2000/_09/xmldsig_/package-info.java
@@ -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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.w3.org/2000/09/xmldsig#", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package org.w3._2000._09.xmldsig_;
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/BasePointParamsType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/BasePointParamsType.java
new file mode 100644
index 00000000..4746ba0b
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/BasePointParamsType.java
@@ -0,0 +1,145 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2001._04.xmldsig_more_;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for BasePointParamsType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="BasePointParamsType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="BasePoint" type="{http://www.w3.org/2001/04/xmldsig-more#}ECPointType"/>
+ * &lt;element name="Order" type="{http://www.w3.org/2001/XMLSchema}positiveInteger"/>
+ * &lt;element name="Cofactor" type="{http://www.w3.org/2001/XMLSchema}positiveInteger" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "BasePointParamsType", propOrder = {
+ "basePoint",
+ "order",
+ "cofactor"
+})
+public class BasePointParamsType {
+
+ @XmlElement(name = "BasePoint", required = true)
+ protected ECPointType basePoint;
+ @XmlElement(name = "Order", required = true)
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger order;
+ @XmlElement(name = "Cofactor")
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger cofactor;
+
+ /**
+ * Gets the value of the basePoint property.
+ *
+ * @return
+ * possible object is
+ * {@link ECPointType }
+ *
+ */
+ public ECPointType getBasePoint() {
+ return basePoint;
+ }
+
+ /**
+ * Sets the value of the basePoint property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ECPointType }
+ *
+ */
+ public void setBasePoint(ECPointType value) {
+ this.basePoint = value;
+ }
+
+ /**
+ * Gets the value of the order property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getOrder() {
+ return order;
+ }
+
+ /**
+ * Sets the value of the order property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setOrder(BigInteger value) {
+ this.order = value;
+ }
+
+ /**
+ * Gets the value of the cofactor property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getCofactor() {
+ return cofactor;
+ }
+
+ /**
+ * Sets the value of the cofactor property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setCofactor(BigInteger value) {
+ this.cofactor = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/CharTwoFieldElemType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/CharTwoFieldElemType.java
new file mode 100644
index 00000000..84281793
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/CharTwoFieldElemType.java
@@ -0,0 +1,88 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2001._04.xmldsig_more_;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for CharTwoFieldElemType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CharTwoFieldElemType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.w3.org/2001/04/xmldsig-more#}FieldElemType">
+ * &lt;attribute name="Value" use="required" type="{http://www.w3.org/2001/XMLSchema}hexBinary" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CharTwoFieldElemType")
+public class CharTwoFieldElemType
+ extends FieldElemType
+{
+
+ @XmlAttribute(name = "Value", required = true)
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ @XmlSchemaType(name = "hexBinary")
+ protected byte[] value;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public byte[] getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setValue(byte[] value) {
+ this.value = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/CharTwoFieldParamsType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/CharTwoFieldParamsType.java
new file mode 100644
index 00000000..6bc6bf8d
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/CharTwoFieldParamsType.java
@@ -0,0 +1,95 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2001._04.xmldsig_more_;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for CharTwoFieldParamsType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CharTwoFieldParamsType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.w3.org/2001/04/xmldsig-more#}FieldParamsType">
+ * &lt;sequence>
+ * &lt;element name="M" type="{http://www.w3.org/2001/XMLSchema}positiveInteger"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CharTwoFieldParamsType", propOrder = {
+ "m"
+})
+@XmlSeeAlso({
+ TnBFieldParamsType.class,
+ PnBFieldParamsType.class
+})
+public abstract class CharTwoFieldParamsType
+ extends FieldParamsType
+{
+
+ @XmlElement(name = "M", required = true)
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger m;
+
+ /**
+ * Gets the value of the m property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getM() {
+ return m;
+ }
+
+ /**
+ * Sets the value of the m property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setM(BigInteger value) {
+ this.m = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/CurveParamsType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/CurveParamsType.java
new file mode 100644
index 00000000..13857c39
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/CurveParamsType.java
@@ -0,0 +1,146 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2001._04.xmldsig_more_;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
+import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+
+
+/**
+ * <p>Java class for CurveParamsType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="CurveParamsType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="A" type="{http://www.w3.org/2001/04/xmldsig-more#}FieldElemType"/>
+ * &lt;element name="B" type="{http://www.w3.org/2001/04/xmldsig-more#}FieldElemType"/>
+ * &lt;element name="Seed" type="{http://www.w3.org/2001/XMLSchema}hexBinary" minOccurs="0"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "CurveParamsType", propOrder = {
+ "a",
+ "b",
+ "seed"
+})
+public class CurveParamsType {
+
+ @XmlElement(name = "A", required = true)
+ protected FieldElemType a;
+ @XmlElement(name = "B", required = true)
+ protected FieldElemType b;
+ @XmlElement(name = "Seed", type = String.class)
+ @XmlJavaTypeAdapter(HexBinaryAdapter.class)
+ @XmlSchemaType(name = "hexBinary")
+ protected byte[] seed;
+
+ /**
+ * Gets the value of the a property.
+ *
+ * @return
+ * possible object is
+ * {@link FieldElemType }
+ *
+ */
+ public FieldElemType getA() {
+ return a;
+ }
+
+ /**
+ * Sets the value of the a property.
+ *
+ * @param value
+ * allowed object is
+ * {@link FieldElemType }
+ *
+ */
+ public void setA(FieldElemType value) {
+ this.a = value;
+ }
+
+ /**
+ * Gets the value of the b property.
+ *
+ * @return
+ * possible object is
+ * {@link FieldElemType }
+ *
+ */
+ public FieldElemType getB() {
+ return b;
+ }
+
+ /**
+ * Sets the value of the b property.
+ *
+ * @param value
+ * allowed object is
+ * {@link FieldElemType }
+ *
+ */
+ public void setB(FieldElemType value) {
+ this.b = value;
+ }
+
+ /**
+ * Gets the value of the seed property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public byte[] getSeed() {
+ return seed;
+ }
+
+ /**
+ * Sets the value of the seed property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setSeed(byte[] value) {
+ this.seed = ((byte[]) value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/DomainParamsType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/DomainParamsType.java
new file mode 100644
index 00000000..32df54ed
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/DomainParamsType.java
@@ -0,0 +1,175 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2001._04.xmldsig_more_;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for DomainParamsType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="DomainParamsType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;choice>
+ * &lt;element name="ExplicitParams" type="{http://www.w3.org/2001/04/xmldsig-more#}ExplicitParamsType"/>
+ * &lt;element name="NamedCurve">
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="URN" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * &lt;/element>
+ * &lt;/choice>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "DomainParamsType", propOrder = {
+ "explicitParams",
+ "namedCurve"
+})
+public class DomainParamsType {
+
+ @XmlElement(name = "ExplicitParams")
+ protected ExplicitParamsType explicitParams;
+ @XmlElement(name = "NamedCurve")
+ protected DomainParamsType.NamedCurve namedCurve;
+
+ /**
+ * Gets the value of the explicitParams property.
+ *
+ * @return
+ * possible object is
+ * {@link ExplicitParamsType }
+ *
+ */
+ public ExplicitParamsType getExplicitParams() {
+ return explicitParams;
+ }
+
+ /**
+ * Sets the value of the explicitParams property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ExplicitParamsType }
+ *
+ */
+ public void setExplicitParams(ExplicitParamsType value) {
+ this.explicitParams = value;
+ }
+
+ /**
+ * Gets the value of the namedCurve property.
+ *
+ * @return
+ * possible object is
+ * {@link DomainParamsType.NamedCurve }
+ *
+ */
+ public DomainParamsType.NamedCurve getNamedCurve() {
+ return namedCurve;
+ }
+
+ /**
+ * Sets the value of the namedCurve property.
+ *
+ * @param value
+ * allowed object is
+ * {@link DomainParamsType.NamedCurve }
+ *
+ */
+ public void setNamedCurve(DomainParamsType.NamedCurve value) {
+ this.namedCurve = value;
+ }
+
+
+ /**
+ * <p>Java class for anonymous complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType>
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;attribute name="URN" use="required" type="{http://www.w3.org/2001/XMLSchema}anyURI" />
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+ @XmlAccessorType(XmlAccessType.FIELD)
+ @XmlType(name = "")
+ public static class NamedCurve {
+
+ @XmlAttribute(name = "URN", required = true)
+ @XmlSchemaType(name = "anyURI")
+ protected String urn;
+
+ /**
+ * Gets the value of the urn property.
+ *
+ * @return
+ * possible object is
+ * {@link String }
+ *
+ */
+ public String getURN() {
+ return urn;
+ }
+
+ /**
+ * Sets the value of the urn property.
+ *
+ * @param value
+ * allowed object is
+ * {@link String }
+ *
+ */
+ public void setURN(String value) {
+ this.urn = value;
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ECDSAKeyValueType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ECDSAKeyValueType.java
new file mode 100644
index 00000000..3a5707f5
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ECDSAKeyValueType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2001._04.xmldsig_more_;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ECDSAKeyValueType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ECDSAKeyValueType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="DomainParameters" type="{http://www.w3.org/2001/04/xmldsig-more#}DomainParamsType" minOccurs="0"/>
+ * &lt;element name="PublicKey" type="{http://www.w3.org/2001/04/xmldsig-more#}ECPointType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ECDSAKeyValueType", propOrder = {
+ "domainParameters",
+ "publicKey"
+})
+public class ECDSAKeyValueType {
+
+ @XmlElement(name = "DomainParameters")
+ protected DomainParamsType domainParameters;
+ @XmlElement(name = "PublicKey", required = true)
+ protected ECPointType publicKey;
+
+ /**
+ * Gets the value of the domainParameters property.
+ *
+ * @return
+ * possible object is
+ * {@link DomainParamsType }
+ *
+ */
+ public DomainParamsType getDomainParameters() {
+ return domainParameters;
+ }
+
+ /**
+ * Sets the value of the domainParameters property.
+ *
+ * @param value
+ * allowed object is
+ * {@link DomainParamsType }
+ *
+ */
+ public void setDomainParameters(DomainParamsType value) {
+ this.domainParameters = value;
+ }
+
+ /**
+ * Gets the value of the publicKey property.
+ *
+ * @return
+ * possible object is
+ * {@link ECPointType }
+ *
+ */
+ public ECPointType getPublicKey() {
+ return publicKey;
+ }
+
+ /**
+ * Sets the value of the publicKey property.
+ *
+ * @param value
+ * allowed object is
+ * {@link ECPointType }
+ *
+ */
+ public void setPublicKey(ECPointType value) {
+ this.publicKey = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ECPointType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ECPointType.java
new file mode 100644
index 00000000..b0f89260
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ECPointType.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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2001._04.xmldsig_more_;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ECPointType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ECPointType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence minOccurs="0">
+ * &lt;element name="X" type="{http://www.w3.org/2001/04/xmldsig-more#}FieldElemType"/>
+ * &lt;element name="Y" type="{http://www.w3.org/2001/04/xmldsig-more#}FieldElemType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ECPointType", propOrder = {
+ "x",
+ "y"
+})
+public class ECPointType {
+
+ @XmlElement(name = "X")
+ protected FieldElemType x;
+ @XmlElement(name = "Y")
+ protected FieldElemType y;
+
+ /**
+ * Gets the value of the x property.
+ *
+ * @return
+ * possible object is
+ * {@link FieldElemType }
+ *
+ */
+ public FieldElemType getX() {
+ return x;
+ }
+
+ /**
+ * Sets the value of the x property.
+ *
+ * @param value
+ * allowed object is
+ * {@link FieldElemType }
+ *
+ */
+ public void setX(FieldElemType value) {
+ this.x = value;
+ }
+
+ /**
+ * Gets the value of the y property.
+ *
+ * @return
+ * possible object is
+ * {@link FieldElemType }
+ *
+ */
+ public FieldElemType getY() {
+ return y;
+ }
+
+ /**
+ * Sets the value of the y property.
+ *
+ * @param value
+ * allowed object is
+ * {@link FieldElemType }
+ *
+ */
+ public void setY(FieldElemType value) {
+ this.y = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ExplicitParamsType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ExplicitParamsType.java
new file mode 100644
index 00000000..9cee9105
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ExplicitParamsType.java
@@ -0,0 +1,141 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2001._04.xmldsig_more_;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for ExplicitParamsType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="ExplicitParamsType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;sequence>
+ * &lt;element name="FieldParams" type="{http://www.w3.org/2001/04/xmldsig-more#}FieldParamsType"/>
+ * &lt;element name="CurveParams" type="{http://www.w3.org/2001/04/xmldsig-more#}CurveParamsType"/>
+ * &lt;element name="BasePointParams" type="{http://www.w3.org/2001/04/xmldsig-more#}BasePointParamsType"/>
+ * &lt;/sequence>
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "ExplicitParamsType", propOrder = {
+ "fieldParams",
+ "curveParams",
+ "basePointParams"
+})
+public class ExplicitParamsType {
+
+ @XmlElement(name = "FieldParams", required = true)
+ protected FieldParamsType fieldParams;
+ @XmlElement(name = "CurveParams", required = true)
+ protected CurveParamsType curveParams;
+ @XmlElement(name = "BasePointParams", required = true)
+ protected BasePointParamsType basePointParams;
+
+ /**
+ * Gets the value of the fieldParams property.
+ *
+ * @return
+ * possible object is
+ * {@link FieldParamsType }
+ *
+ */
+ public FieldParamsType getFieldParams() {
+ return fieldParams;
+ }
+
+ /**
+ * Sets the value of the fieldParams property.
+ *
+ * @param value
+ * allowed object is
+ * {@link FieldParamsType }
+ *
+ */
+ public void setFieldParams(FieldParamsType value) {
+ this.fieldParams = value;
+ }
+
+ /**
+ * Gets the value of the curveParams property.
+ *
+ * @return
+ * possible object is
+ * {@link CurveParamsType }
+ *
+ */
+ public CurveParamsType getCurveParams() {
+ return curveParams;
+ }
+
+ /**
+ * Sets the value of the curveParams property.
+ *
+ * @param value
+ * allowed object is
+ * {@link CurveParamsType }
+ *
+ */
+ public void setCurveParams(CurveParamsType value) {
+ this.curveParams = value;
+ }
+
+ /**
+ * Gets the value of the basePointParams property.
+ *
+ * @return
+ * possible object is
+ * {@link BasePointParamsType }
+ *
+ */
+ public BasePointParamsType getBasePointParams() {
+ return basePointParams;
+ }
+
+ /**
+ * Sets the value of the basePointParams property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BasePointParamsType }
+ *
+ */
+ public void setBasePointParams(BasePointParamsType value) {
+ this.basePointParams = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/FieldElemType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/FieldElemType.java
new file mode 100644
index 00000000..ab93839a
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/FieldElemType.java
@@ -0,0 +1,59 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2001._04.xmldsig_more_;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for FieldElemType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="FieldElemType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "FieldElemType")
+@XmlSeeAlso({
+ OddCharExtensionFieldElemType.class,
+ PrimeFieldElemType.class,
+ CharTwoFieldElemType.class
+})
+public abstract class FieldElemType {
+
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/FieldParamsType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/FieldParamsType.java
new file mode 100644
index 00000000..23532f0a
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/FieldParamsType.java
@@ -0,0 +1,59 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2001._04.xmldsig_more_;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for FieldParamsType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="FieldParamsType">
+ * &lt;complexContent>
+ * &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ * &lt;/restriction>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "FieldParamsType")
+@XmlSeeAlso({
+ OddCharExtensionFieldParamsType.class,
+ PrimeFieldParamsType.class,
+ CharTwoFieldParamsType.class
+})
+public abstract class FieldParamsType {
+
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ObjectFactory.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ObjectFactory.java
new file mode 100644
index 00000000..9654e331
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/ObjectFactory.java
@@ -0,0 +1,180 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2001._04.xmldsig_more_;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.annotation.XmlElementDecl;
+import javax.xml.bind.annotation.XmlRegistry;
+import javax.xml.namespace.QName;
+
+
+/**
+ * This object contains factory methods for each
+ * Java content interface and Java element interface
+ * generated in the org.w3._2001._04.xmldsig_more_ package.
+ * <p>An ObjectFactory allows you to programatically
+ * construct new instances of the Java representation
+ * for XML content. The Java representation of XML
+ * content can consist of schema derived interfaces
+ * and classes representing the binding of schema
+ * type definitions, element declarations and model
+ * groups. Factory methods for each of these are
+ * provided in this class.
+ *
+ */
+@XmlRegistry
+public class ObjectFactory {
+
+ private final static QName _ECDSAKeyValue_QNAME = new QName("http://www.w3.org/2001/04/xmldsig-more#", "ECDSAKeyValue");
+
+ /**
+ * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: org.w3._2001._04.xmldsig_more_
+ *
+ */
+ public ObjectFactory() {
+ }
+
+ /**
+ * Create an instance of {@link OddCharExtensionFieldParamsType }
+ *
+ */
+ public OddCharExtensionFieldParamsType createOddCharExtensionFieldParamsType() {
+ return new OddCharExtensionFieldParamsType();
+ }
+
+ /**
+ * Create an instance of {@link DomainParamsType }
+ *
+ */
+ public DomainParamsType createDomainParamsType() {
+ return new DomainParamsType();
+ }
+
+ /**
+ * Create an instance of {@link ExplicitParamsType }
+ *
+ */
+ public ExplicitParamsType createExplicitParamsType() {
+ return new ExplicitParamsType();
+ }
+
+ /**
+ * Create an instance of {@link PrimeFieldElemType }
+ *
+ */
+ public PrimeFieldElemType createPrimeFieldElemType() {
+ return new PrimeFieldElemType();
+ }
+
+ /**
+ * Create an instance of {@link CharTwoFieldElemType }
+ *
+ */
+ public CharTwoFieldElemType createCharTwoFieldElemType() {
+ return new CharTwoFieldElemType();
+ }
+
+ /**
+ * Create an instance of {@link CurveParamsType }
+ *
+ */
+ public CurveParamsType createCurveParamsType() {
+ return new CurveParamsType();
+ }
+
+ /**
+ * Create an instance of {@link DomainParamsType.NamedCurve }
+ *
+ */
+ public DomainParamsType.NamedCurve createDomainParamsTypeNamedCurve() {
+ return new DomainParamsType.NamedCurve();
+ }
+
+ /**
+ * Create an instance of {@link ECPointType }
+ *
+ */
+ public ECPointType createECPointType() {
+ return new ECPointType();
+ }
+
+ /**
+ * Create an instance of {@link PrimeFieldParamsType }
+ *
+ */
+ public PrimeFieldParamsType createPrimeFieldParamsType() {
+ return new PrimeFieldParamsType();
+ }
+
+ /**
+ * Create an instance of {@link TnBFieldParamsType }
+ *
+ */
+ public TnBFieldParamsType createTnBFieldParamsType() {
+ return new TnBFieldParamsType();
+ }
+
+ /**
+ * Create an instance of {@link ECDSAKeyValueType }
+ *
+ */
+ public ECDSAKeyValueType createECDSAKeyValueType() {
+ return new ECDSAKeyValueType();
+ }
+
+ /**
+ * Create an instance of {@link OddCharExtensionFieldElemType }
+ *
+ */
+ public OddCharExtensionFieldElemType createOddCharExtensionFieldElemType() {
+ return new OddCharExtensionFieldElemType();
+ }
+
+ /**
+ * Create an instance of {@link PnBFieldParamsType }
+ *
+ */
+ public PnBFieldParamsType createPnBFieldParamsType() {
+ return new PnBFieldParamsType();
+ }
+
+ /**
+ * Create an instance of {@link BasePointParamsType }
+ *
+ */
+ public BasePointParamsType createBasePointParamsType() {
+ return new BasePointParamsType();
+ }
+
+ /**
+ * Create an instance of {@link JAXBElement }{@code <}{@link ECDSAKeyValueType }{@code >}}
+ *
+ */
+ @XmlElementDecl(namespace = "http://www.w3.org/2001/04/xmldsig-more#", name = "ECDSAKeyValue")
+ public JAXBElement<ECDSAKeyValueType> createECDSAKeyValue(ECDSAKeyValueType value) {
+ return new JAXBElement<ECDSAKeyValueType>(_ECDSAKeyValue_QNAME, ECDSAKeyValueType.class, null, value);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/OddCharExtensionFieldElemType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/OddCharExtensionFieldElemType.java
new file mode 100644
index 00000000..5108c86d
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/OddCharExtensionFieldElemType.java
@@ -0,0 +1,86 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2001._04.xmldsig_more_;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for OddCharExtensionFieldElemType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="OddCharExtensionFieldElemType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.w3.org/2001/04/xmldsig-more#}FieldElemType">
+ * &lt;attribute name="Value" use="required" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "OddCharExtensionFieldElemType")
+public class OddCharExtensionFieldElemType
+ extends FieldElemType
+{
+
+ @XmlAttribute(name = "Value", required = true)
+ @XmlSchemaType(name = "nonNegativeInteger")
+ protected BigInteger value;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setValue(BigInteger value) {
+ this.value = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/OddCharExtensionFieldParamsType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/OddCharExtensionFieldParamsType.java
new file mode 100644
index 00000000..b788d731
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/OddCharExtensionFieldParamsType.java
@@ -0,0 +1,119 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2001._04.xmldsig_more_;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for OddCharExtensionFieldParamsType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="OddCharExtensionFieldParamsType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.w3.org/2001/04/xmldsig-more#}FieldParamsType">
+ * &lt;sequence>
+ * &lt;element name="M" type="{http://www.w3.org/2001/XMLSchema}positiveInteger"/>
+ * &lt;element name="W" type="{http://www.w3.org/2001/XMLSchema}positiveInteger"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "OddCharExtensionFieldParamsType", propOrder = {
+ "m",
+ "w"
+})
+public class OddCharExtensionFieldParamsType
+ extends FieldParamsType
+{
+
+ @XmlElement(name = "M", required = true)
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger m;
+ @XmlElement(name = "W", required = true)
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger w;
+
+ /**
+ * Gets the value of the m property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getM() {
+ return m;
+ }
+
+ /**
+ * Sets the value of the m property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setM(BigInteger value) {
+ this.m = value;
+ }
+
+ /**
+ * Gets the value of the w property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getW() {
+ return w;
+ }
+
+ /**
+ * Sets the value of the w property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setW(BigInteger value) {
+ this.w = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/PnBFieldParamsType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/PnBFieldParamsType.java
new file mode 100644
index 00000000..fd829b60
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/PnBFieldParamsType.java
@@ -0,0 +1,148 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2001._04.xmldsig_more_;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for PnBFieldParamsType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="PnBFieldParamsType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.w3.org/2001/04/xmldsig-more#}CharTwoFieldParamsType">
+ * &lt;sequence>
+ * &lt;element name="K1" type="{http://www.w3.org/2001/XMLSchema}positiveInteger"/>
+ * &lt;element name="K2" type="{http://www.w3.org/2001/XMLSchema}positiveInteger"/>
+ * &lt;element name="K3" type="{http://www.w3.org/2001/XMLSchema}positiveInteger"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PnBFieldParamsType", propOrder = {
+ "k1",
+ "k2",
+ "k3"
+})
+public class PnBFieldParamsType
+ extends CharTwoFieldParamsType
+{
+
+ @XmlElement(name = "K1", required = true)
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger k1;
+ @XmlElement(name = "K2", required = true)
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger k2;
+ @XmlElement(name = "K3", required = true)
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger k3;
+
+ /**
+ * Gets the value of the k1 property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getK1() {
+ return k1;
+ }
+
+ /**
+ * Sets the value of the k1 property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setK1(BigInteger value) {
+ this.k1 = value;
+ }
+
+ /**
+ * Gets the value of the k2 property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getK2() {
+ return k2;
+ }
+
+ /**
+ * Sets the value of the k2 property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setK2(BigInteger value) {
+ this.k2 = value;
+ }
+
+ /**
+ * Gets the value of the k3 property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getK3() {
+ return k3;
+ }
+
+ /**
+ * Sets the value of the k3 property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setK3(BigInteger value) {
+ this.k3 = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/PrimeFieldElemType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/PrimeFieldElemType.java
new file mode 100644
index 00000000..10da8f46
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/PrimeFieldElemType.java
@@ -0,0 +1,86 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2001._04.xmldsig_more_;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for PrimeFieldElemType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="PrimeFieldElemType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.w3.org/2001/04/xmldsig-more#}FieldElemType">
+ * &lt;attribute name="Value" use="required" type="{http://www.w3.org/2001/XMLSchema}nonNegativeInteger" />
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PrimeFieldElemType")
+public class PrimeFieldElemType
+ extends FieldElemType
+{
+
+ @XmlAttribute(name = "Value", required = true)
+ @XmlSchemaType(name = "nonNegativeInteger")
+ protected BigInteger value;
+
+ /**
+ * Gets the value of the value property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getValue() {
+ return value;
+ }
+
+ /**
+ * Sets the value of the value property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setValue(BigInteger value) {
+ this.value = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/PrimeFieldParamsType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/PrimeFieldParamsType.java
new file mode 100644
index 00000000..c1c18de9
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/PrimeFieldParamsType.java
@@ -0,0 +1,90 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2001._04.xmldsig_more_;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for PrimeFieldParamsType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="PrimeFieldParamsType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.w3.org/2001/04/xmldsig-more#}FieldParamsType">
+ * &lt;sequence>
+ * &lt;element name="P" type="{http://www.w3.org/2001/XMLSchema}positiveInteger"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "PrimeFieldParamsType", propOrder = {
+ "p"
+})
+public class PrimeFieldParamsType
+ extends FieldParamsType
+{
+
+ @XmlElement(name = "P", required = true)
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger p;
+
+ /**
+ * Gets the value of the p property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getP() {
+ return p;
+ }
+
+ /**
+ * Sets the value of the p property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setP(BigInteger value) {
+ this.p = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/TnBFieldParamsType.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/TnBFieldParamsType.java
new file mode 100644
index 00000000..30e245fd
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/TnBFieldParamsType.java
@@ -0,0 +1,90 @@
+/*
+* 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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+
+package org.w3._2001._04.xmldsig_more_;
+
+import java.math.BigInteger;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlSchemaType;
+import javax.xml.bind.annotation.XmlType;
+
+
+/**
+ * <p>Java class for TnBFieldParamsType complex type.
+ *
+ * <p>The following schema fragment specifies the expected content contained within this class.
+ *
+ * <pre>
+ * &lt;complexType name="TnBFieldParamsType">
+ * &lt;complexContent>
+ * &lt;extension base="{http://www.w3.org/2001/04/xmldsig-more#}CharTwoFieldParamsType">
+ * &lt;sequence>
+ * &lt;element name="K" type="{http://www.w3.org/2001/XMLSchema}positiveInteger"/>
+ * &lt;/sequence>
+ * &lt;/extension>
+ * &lt;/complexContent>
+ * &lt;/complexType>
+ * </pre>
+ *
+ *
+ */
+@XmlAccessorType(XmlAccessType.FIELD)
+@XmlType(name = "TnBFieldParamsType", propOrder = {
+ "k"
+})
+public class TnBFieldParamsType
+ extends CharTwoFieldParamsType
+{
+
+ @XmlElement(name = "K", required = true)
+ @XmlSchemaType(name = "positiveInteger")
+ protected BigInteger k;
+
+ /**
+ * Gets the value of the k property.
+ *
+ * @return
+ * possible object is
+ * {@link BigInteger }
+ *
+ */
+ public BigInteger getK() {
+ return k;
+ }
+
+ /**
+ * Sets the value of the k property.
+ *
+ * @param value
+ * allowed object is
+ * {@link BigInteger }
+ *
+ */
+ public void setK(BigInteger value) {
+ this.k = value;
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/package-info.java b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/package-info.java
new file mode 100644
index 00000000..75a3fd6f
--- /dev/null
+++ b/mocca-1.2.11/utils/src/main/java/org/w3/_2001/_04/xmldsig_more_/package-info.java
@@ -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.
+*/
+//
+// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, vhudson-jaxb-ri-2.1-520
+// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>
+// Any modifications to this file will be lost upon recompilation of the source schema.
+// Generated on: 2008.07.21 at 09:30:44 AM GMT
+//
+
+@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.w3.org/2001/04/xmldsig-more#", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
+package org.w3._2001._04.xmldsig_more_;
diff --git a/mocca-1.2.11/utils/src/test/cardchannel/marshalled.xml b/mocca-1.2.11/utils/src/test/cardchannel/marshalled.xml
new file mode 100644
index 00000000..e53ab084
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/cardchannel/marshalled.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Script xmlns:ns2="http://www.buergerkarte.at/cardchannel"><ns2:Reset/></Script> \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/test/cardchannel/script.xml b/mocca-1.2.11/utils/src/test/cardchannel/script.xml
new file mode 100644
index 00000000..dd0da379
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/cardchannel/script.xml
@@ -0,0 +1,6 @@
+<!--Script>
+ <Reset cold='true' />
+ <CommandAPDU sequence='1' of='2' expectedSW='9000'>00A4000C023F00</CommandAPDU>
+ <CommandAPDU sequence='2' of='2' expectedSW='9000'>00B0820000</CommandAPDU>
+</Script-->
+<Script><Reset/></Script> \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/test/java/at/gv/egiz/bku/utils/HexDumpTest.java b/mocca-1.2.11/utils/src/test/java/at/gv/egiz/bku/utils/HexDumpTest.java
new file mode 100644
index 00000000..5d1a0fcf
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/java/at/gv/egiz/bku/utils/HexDumpTest.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.utils;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Random;
+
+import org.junit.Test;
+
+public class HexDumpTest {
+
+ @Test
+ public void testHexDump() throws IOException {
+
+ byte[] bytes = new byte[734];
+ int i = 0;
+ for (; i < 256; i++) {
+ bytes[i] = (byte) i;
+ }
+
+ Random random = new Random();
+ for (; i < bytes.length; i++) {
+ bytes[i] = (byte) random.nextInt();
+ }
+
+ PrintWriter writer = new PrintWriter(System.out);
+ HexDump.hexDump(new ByteArrayInputStream(bytes), writer, 32);
+ writer.flush();
+
+ }
+
+
+}
diff --git a/mocca-1.2.11/utils/src/test/java/at/gv/egiz/bku/utils/URLEncodingOutputStreamTest.java b/mocca-1.2.11/utils/src/test/java/at/gv/egiz/bku/utils/URLEncodingOutputStreamTest.java
new file mode 100644
index 00000000..e92b9584
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/java/at/gv/egiz/bku/utils/URLEncodingOutputStreamTest.java
@@ -0,0 +1,147 @@
+/*
+* 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.utils;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.net.URLEncoder;
+import java.nio.charset.Charset;
+
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+
+public class URLEncodingOutputStreamTest {
+
+ private static String buf;
+
+ private static Charset UTF_8 = Charset.forName("UTF-8");
+
+ @BeforeClass
+ public static void setUpClass() throws IOException {
+
+ ClassLoader cl = URLEncodingOutputStreamTest.class.getClassLoader();
+ InputStream is = cl.getResourceAsStream("BigRequest.xml");
+
+ assertNotNull(is);
+
+ InputStreamReader reader = new InputStreamReader(is, UTF_8);
+
+ StringBuilder sb = new StringBuilder();
+
+ char[] b = new char[512];
+ for (int l; (l = reader.read(b)) != -1;) {
+ sb.append(b, 0, l);
+ }
+
+ buf = sb.toString();
+
+ }
+
+ @Test
+ public void testCompareResults() throws IOException {
+
+ String out1;
+ String out2;
+
+ // new
+ StringWriter writer = new StringWriter();
+ URLEncodingOutputStream urlEnc = new URLEncodingOutputStream(writer);
+ OutputStreamWriter streamWriter = new OutputStreamWriter(urlEnc, UTF_8);
+ streamWriter.append(buf);
+ streamWriter.flush();
+ out1 = writer.toString();
+
+ // URLEncoder
+ out2 = URLEncoder.encode(buf, UTF_8.name());
+
+ for (int i = 0; i < out1.length(); i++) {
+ if (out1.charAt(i) != out2.charAt(i)) {
+ System.out.println(i + ": " + out1.substring(i));
+ System.out.println(i + ": " + out2.substring(i));
+ }
+ }
+
+ assertEquals(out1, out2);
+
+ }
+
+ @Ignore
+ @Test
+ public void testURLEncodingOutputStream() throws IOException {
+
+ NullWriter writer = new NullWriter();
+
+ URLEncodingOutputStream urlEnc = new URLEncodingOutputStream(writer);
+ OutputStreamWriter streamWriter = new OutputStreamWriter(urlEnc, UTF_8);
+
+ long t0, t1, dt = 0;
+ for (int run = 0; run < 1000; run++) {
+ t0 = System.currentTimeMillis();
+ streamWriter.append(buf);
+ t1 = System.currentTimeMillis();
+ if (run > 1) {
+ dt += t1 - t0;
+ }
+ }
+ System.out.println("Time " + dt + "ms");
+
+ }
+
+ @Ignore
+ @Test
+ public void testURLEncodingNaive() throws IOException {
+
+ String in = new String(buf);
+
+ long t0, t1, dt = 0;
+ for (int run = 0; run < 1000; run++) {
+ t0 = System.currentTimeMillis();
+ URLEncoder.encode(in, "UTF-8");
+ t1 = System.currentTimeMillis();
+ if (run > 1) {
+ dt += t1 - t0;
+ }
+ }
+ System.out.println("Time (naive) " + dt + "ms");
+
+ }
+
+ public class NullWriter extends Writer {
+
+ @Override
+ public void close() throws IOException {
+ }
+
+ @Override
+ public void flush() throws IOException {
+ }
+
+ @Override
+ public void write(char[] cbuf, int off, int len) throws IOException {
+ }
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/test/java/at/gv/egiz/idlink/CompressIdentityLink.java b/mocca-1.2.11/utils/src/test/java/at/gv/egiz/idlink/CompressIdentityLink.java
new file mode 100644
index 00000000..e040d7e8
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/java/at/gv/egiz/idlink/CompressIdentityLink.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.idlink;
+
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import javax.xml.bind.JAXBException;
+import javax.xml.transform.Source;
+import javax.xml.transform.stream.StreamSource;
+
+import at.buergerkarte.namespaces.personenbindung._20020506_.CompressedIdentityLinkType;
+import at.gv.egiz.idlink.ans1.IdentityLink;
+
+public class CompressIdentityLink {
+
+ /**
+ * @param args
+ * @throws JAXBException
+ * @throws IOException
+ */
+ public static void main(String[] args) throws JAXBException, IOException {
+
+ FileInputStream fis = new FileInputStream(args[0]);
+ Source source = new StreamSource(fis);
+
+ CompressedIdentityLinkFactory factory = CompressedIdentityLinkFactory.getInstance();
+
+ CompressedIdentityLinkType compressedIdentity = factory.unmarshallCompressedIdentityLink(source);
+
+ IdentityLink idLink = factory.createIdLink(compressedIdentity);
+
+ FileOutputStream outputStream = new FileOutputStream("idlink.bin");
+ outputStream.write(idLink.toByteArray());
+ outputStream.close();
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/test/java/at/gv/egiz/idlink/IdentityLink.java b/mocca-1.2.11/utils/src/test/java/at/gv/egiz/idlink/IdentityLink.java
new file mode 100644
index 00000000..a97a468e
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/java/at/gv/egiz/idlink/IdentityLink.java
@@ -0,0 +1,153 @@
+/*
+* 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.idlink;
+
+import iaik.xml.crypto.XSecProvider;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.PublicKey;
+import java.security.UnrecoverableKeyException;
+import java.security.cert.CertificateException;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+import java.security.spec.InvalidKeySpecException;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Enumeration;
+import java.util.List;
+
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.crypto.MarshalException;
+import javax.xml.crypto.dsig.XMLSignatureException;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+
+import oasis.names.tc.saml._1_0.assertion.AssertionType;
+import oasis.names.tc.saml._1_0.assertion.AttributeStatementType;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.w3c.dom.Document;
+
+import at.gv.egiz.xmldsig.KeyTypeNotSupportedException;
+
+public class IdentityLink {
+
+ private static String keyStoreType = "PKCS12";
+
+ private static String keyStoreFile = "at/gv/egiz/idlink/IdentityLinkTest.p12";
+
+ private static String keyStorePassword = "mocca";
+
+ private static String[] certificateFiles = new String [] {
+ "at/gv/egiz/idlink/certified.cer",
+ "at/gv/egiz/idlink/secure.cer"
+ };
+
+ private static PublicKey[] publicKeys;
+
+ private static X509Certificate signerCert;
+
+ private static PrivateKey signerKey;
+
+ @BeforeClass
+ public static void setupClass() throws NoSuchAlgorithmException, IOException,
+ InvalidKeySpecException, KeyStoreException, CertificateException,
+ UnrecoverableKeyException {
+
+ XSecProvider.addAsProvider(false);
+
+ ClassLoader classLoader = IdentityLink.class.getClassLoader();
+
+ CertificateFactory certificateFactory = CertificateFactory.getInstance("X509");
+
+ List<PublicKey> keys = new ArrayList<PublicKey>();
+ for (String certificateFile : certificateFiles) {
+
+ InputStream certStream = classLoader.getResourceAsStream(certificateFile);
+ X509Certificate cert = (X509Certificate) certificateFactory.generateCertificate(certStream);
+ keys.add(cert.getPublicKey());
+
+ }
+
+ publicKeys = keys.toArray(new PublicKey[0]);
+
+ KeyStore keyStore = KeyStore.getInstance(keyStoreType);
+ keyStore.load(classLoader.getResourceAsStream(keyStoreFile), keyStorePassword.toCharArray());
+
+ Enumeration<String> aliases = keyStore.aliases();
+ while (aliases.hasMoreElements()) {
+ String alias = (String) aliases.nextElement();
+ if (keyStore.isKeyEntry(alias)) {
+ signerKey = (PrivateKey) keyStore.getKey(alias, keyStorePassword.toCharArray());
+ signerCert = (X509Certificate) keyStore.getCertificate(alias);
+ }
+ }
+
+
+ }
+
+ @Test
+ public void testCreateIdentityLink() throws KeyTypeNotSupportedException, ParserConfigurationException, JAXBException, TransformerException, NoSuchAlgorithmException, InvalidAlgorithmParameterException, XMLSignatureException, MarshalException, FileNotFoundException {
+
+ IdentityLinkFactory factory = IdentityLinkFactory.getInstance();
+
+ AttributeStatementType attributeStatement = factory.createAttributeStatement(
+ "3utiDdA4KaodrJOeMqu9PA==",
+ "urn:publicid:gv.at:baseid",
+ "Max Moritz",
+ "Mustermann-Fall",
+ "1900-01-01",
+ publicKeys
+ );
+
+ Calendar calendar = Calendar.getInstance();
+ calendar.clear();
+ calendar.set(2007, 8, 29, 18, 0, 0);
+
+ JAXBElement<AssertionType> assertion = factory.createAssertion(
+ "bka.gv.at-2007-08-29T16.41.17.442",
+ calendar.getTime(),
+ "http://www.bka.gv.at/datenschutz/Stammzahlenregisterbehoerde",
+ 1L,
+ 0L,
+ attributeStatement);
+
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ Document doc = dbf.newDocumentBuilder().newDocument();
+
+ factory.marshallIdentityLink(assertion, doc, null);
+
+ factory.signIdentityLink(doc.getDocumentElement(), signerCert, signerKey);
+
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/test/java/at/gv/egiz/slbinding/RedirectTest.java b/mocca-1.2.11/utils/src/test/java/at/gv/egiz/slbinding/RedirectTest.java
new file mode 100644
index 00000000..7c8c206a
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/java/at/gv/egiz/slbinding/RedirectTest.java
@@ -0,0 +1,219 @@
+/*
+* 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.slbinding;
+
+import at.buergerkarte.namespaces.securitylayer._1.Base64XMLLocRefOptRefContentType;
+import javax.xml.bind.JAXBException;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import at.buergerkarte.namespaces.securitylayer._1.CreateXMLSignatureRequestType;
+import at.buergerkarte.namespaces.securitylayer._1.DataObjectAssociationType;
+import at.buergerkarte.namespaces.securitylayer._1.DataObjectInfoType;
+import at.buergerkarte.namespaces.securitylayer._1.MetaInfoType;
+import at.buergerkarte.namespaces.securitylayer._1.SignatureInfoCreationType;
+import at.buergerkarte.namespaces.securitylayer._1.TransformsInfoType;
+import at.gv.egiz.slbinding.impl.SignatureLocationType;
+import at.gv.egiz.slbinding.impl.XMLContentType;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Iterator;
+import java.util.List;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.namespace.NamespaceContext;
+import javax.xml.stream.XMLEventReader;
+import javax.xml.stream.XMLInputFactory;
+
+import static org.junit.Assert.*;
+import org.w3._2000._09.xmldsig_.TransformType;
+import org.w3._2000._09.xmldsig_.TransformsType;
+
+/**
+ *
+ * @author clemens
+ */
+public class RedirectTest {
+
+ public static final String FILENAME_REQ = "src/test/requests/CreateXMLSignatureRequest02.xml";
+ public static final String FILENAME_REQ_SCHEMA = "src/main/schema/Core-1.2.xsd";
+
+ /**
+ * Context path for unmarshaller (colon separated list of generated packages)
+ */
+ @Before
+ public void setUp() throws JAXBException {
+ }
+
+ @Test
+ public void testRedirect() {
+ try {
+ String slPkg = at.buergerkarte.namespaces.securitylayer._1.ObjectFactory.class.getPackage().getName();
+ String dsigPkg = org.w3._2000._09.xmldsig_.ObjectFactory.class.getPackage().getName();
+
+ JAXBContext jaxbContext = JAXBContext.newInstance(slPkg + ":" + dsigPkg);
+ Unmarshaller um = jaxbContext.createUnmarshaller();
+
+// SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
+// File schemaFile = new File(FILENAME_REQ_SCHEMA);
+// Schema TestRequestLaxSchema = schemaFactory.newSchema(schemaFile);
+// // validate request
+// um.setSchema(TestRequestLaxSchema);
+
+
+ FileInputStream fis = new FileInputStream(FILENAME_REQ);
+ InputStream is = new BufferedInputStream(fis);
+
+ XMLInputFactory inputFactory = XMLInputFactory.newInstance();
+ XMLEventReader reader = inputFactory.createXMLEventReader(is);
+ final RedirectEventFilter contentFilter = new RedirectEventFilter();
+ XMLEventReader filteredReader = inputFactory.createFilteredReader(reader, contentFilter);
+
+ um.setListener(new RedirectUnmarshallerListener(contentFilter));
+
+// List<Class> redirectTriggers = Arrays.asList(new Class[]{XMLContentType.class, TransformsType.class});
+// Set<Class<? extends RedirectCallback>> redirectTriggers = new HashSet<Class<? extends RedirectCallback>>(); //{XMLContentType.class, TransformsType.class
+// redirectTriggers.add(XMLContentType.class);
+// redirectTriggers.add(TransformsType.class);
+// ByteArrayRedirectCallback.registerRedirectTriggers(redirectTriggers);
+//
+// Set<Class<? extends RedirectCallback>> preserveNSContextTriggers = new HashSet<Class<? extends RedirectCallback>>();
+//// preserveNSContextTriggers.add(TransformsType.class);
+// preserveNSContextTriggers.add(SignatureInfoCreationType.SignatureLocation.class);
+// ByteArrayRedirectCallback.registerPreserveContextTriggers(preserveNSContextTriggers);
+
+ JAXBElement<CreateXMLSignatureRequestType> req = (JAXBElement<CreateXMLSignatureRequestType>) um.unmarshal(filteredReader);
+ is.close();
+
+ FileOutputStream fos = new FileOutputStream(FILENAME_REQ + "_redirect.txt");
+ OutputStream os = new BufferedOutputStream(fos);
+
+ CreateXMLSignatureRequestType request = req.getValue();
+ List<DataObjectInfoType> dataObjectInfos = request.getDataObjectInfo();
+ Iterator<DataObjectInfoType> doiIt = dataObjectInfos.iterator();
+ while (doiIt.hasNext()) {
+ DataObjectInfoType doi = doiIt.next();
+ Base64XMLLocRefOptRefContentType dataObj = doi.getDataObject();
+ XMLContentType dataObjXML = (XMLContentType) dataObj.getXMLContent();
+ if (dataObjXML != null) {
+ System.out.println("found at.gv.egiz.slbinding.impl.XMLContentType DataObject");
+ ByteArrayOutputStream xmlContent = dataObjXML.getRedirectedStream();
+ assertNotNull(xmlContent);
+ os.write(xmlContent.toByteArray());
+ os.write("\n\n\n".getBytes());
+ }
+
+ List<TransformsInfoType> transformsInfos = doi.getTransformsInfo();
+ Iterator<TransformsInfoType> tiIt = transformsInfos.iterator();
+ while (tiIt.hasNext()) {
+ at.gv.egiz.slbinding.impl.TransformsInfoType ti = (at.gv.egiz.slbinding.impl.TransformsInfoType) tiIt.next();
+// TransformsInfoType ti = tiIt.next();
+ assertNotNull(ti);
+ System.out.println("found sl:TransformsInfo: " + ti.getClass().getName()); //at.gv.egiz.slbinding.impl.TransformsInfoType TransformsInfo");
+// TransformsType ts = ti.getTransforms();
+// assertNotNull(ts);
+// System.out.println("found dsig:Transforms " + ts.getClass().getName()); //org.w3._2000._09.xmldsig_.TransformsType dsig:Transforms");
+// List<TransformType> tL = ts.getTransform();
+// assertNotNull(tL);
+// System.out.println("found " + tL.size() + " org.w3._2000._09.xmldsig_.TransformType dsig:Transform");
+// for (TransformType t : tL) {
+// if (t instanceof at.gv.egiz.slbinding.impl.TransformType) {
+// System.out.println("found at.gv.egiz.slbinding.impl.TransformType");
+// byte[] redirectedBytes = ((at.gv.egiz.slbinding.impl.TransformType) t).getRedirectedStream().toByteArray();
+// if (redirectedBytes != null && redirectedBytes.length > 0) {
+// System.out.println("reading redirected stream...");
+// os.write("--- redirected Transform ---".getBytes());
+// os.write(redirectedBytes);
+// os.write("\n".getBytes());
+// } else {
+// System.out.println("no redirected stream");
+// }
+// }
+// }
+
+ ByteArrayOutputStream dsigTransforms = ti.getRedirectedStream();
+ os.write("--- redirected TransformsInfo content ---".getBytes());
+ os.write(dsigTransforms.toByteArray());
+ os.write("\n---".getBytes());
+
+ MetaInfoType mi = ti.getFinalDataMetaInfo();
+ assertNotNull(mi);
+ assertNull(ti.getTransforms());
+
+ }
+ List<DataObjectAssociationType> supplements = doi.getSupplement();
+ if (supplements != null) {
+ Iterator<DataObjectAssociationType> doaIt = supplements.iterator();
+ while (doaIt.hasNext()) {
+ System.out.println("found Supplement");
+ }
+ }
+ }
+ SignatureInfoCreationType si = request.getSignatureInfo();
+ if (si != null) {
+// Base64XMLOptRefContentType sigEnv = si.getSignatureEnvironment();
+// XMLContentType sigEnvXML = sigEnv.getXMLContent();
+// if (sigEnvXML != null) {
+// System.out.println("found SignatureEnvironment XMLContent");
+// ByteArrayOutputStream xmlContent = sigEnvXML.getRedirectedStream();
+// os.write(xmlContent.toByteArray());
+// os.write("\n".getBytes());
+// }
+//
+// SignatureInfoCreationType.SignatureLocation sigLocation = si.getSignatureLocation();
+ SignatureLocationType sigLocation = (SignatureLocationType) si.getSignatureLocation();
+ assertNotNull(sigLocation);
+ System.out.println("found at.gv.egiz.slbinding.impl.SignatureLocationType SignatureLocation");
+
+ NamespaceContext ctx = sigLocation.getNamespaceContext();
+ assertNotNull(ctx);
+ String samlNS = ctx.getNamespaceURI("saml");
+ assertEquals(samlNS, "urn:oasis:names:tc:SAML:2.0:assertion");
+ System.out.println("found preserved namespace xmlns:saml " + samlNS);
+
+ }
+ os.flush();
+ os.close();
+
+ fos = new FileOutputStream(FILENAME_REQ + "_bound.xml");
+ os = new BufferedOutputStream(fos);
+
+ Marshaller m = jaxbContext.createMarshaller();
+ m.marshal(req, os);
+
+ os.flush();
+ os.close();
+
+ } catch (Exception ex) {
+ ex.printStackTrace();
+ }
+
+
+ }
+}
diff --git a/mocca-1.2.11/utils/src/test/java/at/gv/egiz/urldereferencer/FormDataTest.java b/mocca-1.2.11/utils/src/test/java/at/gv/egiz/urldereferencer/FormDataTest.java
new file mode 100644
index 00000000..ecd4c8f7
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/java/at/gv/egiz/urldereferencer/FormDataTest.java
@@ -0,0 +1,96 @@
+/*
+* 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.urldereferencer;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.MalformedURLException;
+
+import org.junit.Before;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+import at.gv.egiz.bku.utils.StreamUtil;
+import at.gv.egiz.bku.utils.urldereferencer.FormDataURLSupplier;
+import at.gv.egiz.bku.utils.urldereferencer.SimpleFormDataContextImpl;
+import at.gv.egiz.bku.utils.urldereferencer.StreamData;
+import at.gv.egiz.bku.utils.urldereferencer.URLDereferencer;
+import at.gv.egiz.bku.utils.urldereferencer.URLDereferencerContext;
+
+public class FormDataTest implements FormDataURLSupplier {
+
+ protected URLDereferencerContext urlCtx;
+ protected InputStream testStream = null;
+ protected String contentType = null;
+ protected String paramName = "";
+
+ @Override
+ public InputStream getFormData(String parameterName) {
+ if (paramName.equals(parameterName)) {
+ return testStream;
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public String getFormDataContentType(String parameterName) {
+ if (paramName.equals(parameterName)) {
+ return contentType;
+ } else {
+ return null;
+ }
+ }
+
+ @Before
+ public void setUp() {
+ urlCtx = new SimpleFormDataContextImpl(this);
+ }
+
+ @Test(expected = MalformedURLException.class)
+ public void testInvalidFormdataUrl() throws IOException {
+ String url = "abs://whatknowi";
+ StreamData sd = URLDereferencer.getInstance().dereference(url, urlCtx);
+ assertNull(sd);
+ url = ":://whatknowi";
+ sd = URLDereferencer.getInstance().dereference(url, urlCtx);
+ assertNull(sd);
+ url = "";
+ sd = URLDereferencer.getInstance().dereference(url, urlCtx);
+ }
+
+ @Test
+ public void testFormData() throws IOException {
+ paramName = "Müllcontainer";
+ testStream = new ByteArrayInputStream("HelloWorld".getBytes("UTF-8"));
+ String url = "formdata:"+paramName;
+ StreamData sd = URLDereferencer.getInstance().dereference(url, urlCtx);
+ assertNotNull(sd);
+ String result = StreamUtil.asString(sd.getStream(), "UTF-8");
+ assertEquals("HelloWorld", result);
+ }
+
+ @Test(expected=IOException.class)
+ public void testFormDataNotFound() throws IOException {
+ paramName = "Müllcontainer";
+ testStream = new ByteArrayInputStream("HelloWorld".getBytes("UTF-8"));
+ String url = "formdata:"+paramName+"2";
+ StreamData sd = URLDereferencer.getInstance().dereference(url, urlCtx);
+ }
+
+}
diff --git a/mocca-1.2.11/utils/src/test/java/cardchannel/UnmarshalTest.java b/mocca-1.2.11/utils/src/test/java/cardchannel/UnmarshalTest.java
new file mode 100644
index 00000000..998dd9e6
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/java/cardchannel/UnmarshalTest.java
@@ -0,0 +1,71 @@
+/*
+ * 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 cardchannel;
+
+import at.buergerkarte.namespaces.cardchannel.ObjectFactory;
+import at.buergerkarte.namespaces.cardchannel.ResetType;
+import at.buergerkarte.namespaces.cardchannel.ScriptType;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.List;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import org.junit.Ignore;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+public class UnmarshalTest {
+
+ @Test
+ public void unmarshalScript() throws FileNotFoundException, JAXBException {
+ JAXBContext ctx = JAXBContext.newInstance(ObjectFactory.class);
+ Unmarshaller um = ctx.createUnmarshaller();
+
+ JAXBElement<ScriptType> script = (JAXBElement<ScriptType>) um.unmarshal(new File("src/test/cardchannel/script.xml"));
+
+ ScriptType scriptT = script.getValue();
+ System.out.println("script " + scriptT.getClass());
+ List<Object> resetOrCommandAPDUOrVerifyAPDU = scriptT.getResetOrCommandAPDUOrVerifyAPDU();
+// assertEquals(3, resetOrCommandAPDUOrVerifyAPDU.size());
+ for (Object object : resetOrCommandAPDUOrVerifyAPDU) {
+ System.out.println("script contains: " + object.getClass());
+ }
+ }
+
+ @Test
+ @Ignore
+ public void marshalScript() throws JAXBException {
+ JAXBContext ctx = JAXBContext.newInstance(ObjectFactory.class);
+ Marshaller m = ctx.createMarshaller();
+
+ ObjectFactory of = new ObjectFactory();
+ ResetType r = of.createResetType();
+ ScriptType s = of.createScriptType();
+ s.getResetOrCommandAPDUOrVerifyAPDU().add(r);
+ JAXBElement<ScriptType> script = of.createScript(s);
+
+ m.marshal(script, new File("src/test/cardchannel/marshalled.xml"));
+
+ }
+}
diff --git a/mocca-1.2.11/utils/src/test/java/saml/KeyValueAttributeTypeTest.java b/mocca-1.2.11/utils/src/test/java/saml/KeyValueAttributeTypeTest.java
new file mode 100644
index 00000000..2df04ce6
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/java/saml/KeyValueAttributeTypeTest.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 saml;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.util.List;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
+import javax.xml.bind.JAXBException;
+import javax.xml.bind.Marshaller;
+import javax.xml.bind.Unmarshaller;
+import javax.xml.namespace.QName;
+import oasis.names.tc.saml._1_0.assertion.AnyType;
+import oasis.names.tc.saml._1_0.assertion.AssertionType;
+import oasis.names.tc.saml._1_0.assertion.AttributeStatementType;
+import oasis.names.tc.saml._1_0.assertion.AttributeType;
+import oasis.names.tc.saml._1_0.assertion.NameIdentifierType;
+import oasis.names.tc.saml._1_0.assertion.ObjectFactory;
+import oasis.names.tc.saml._1_0.assertion.StatementAbstractType;
+import oasis.names.tc.saml._1_0.assertion.SubjectType;
+import org.junit.Ignore;
+import org.junit.Test;
+import org.w3._2000._09.xmldsig_.KeyValueType;
+import org.w3._2000._09.xmldsig_.RSAKeyValueType;
+import org.w3c.dom.Element;
+
+/**
+ *
+ * @author Clemens Orthacker <clemens.orthacker@iaik.tugraz.at>
+ */
+@Ignore
+public class KeyValueAttributeTypeTest {
+
+ @Test
+ public void testAttrStatement() throws FileNotFoundException, JAXBException {
+ JAXBContext ctx = JAXBContext.newInstance(ObjectFactory.class, org.w3._2000._09.xmldsig_.ObjectFactory.class);
+ Unmarshaller um = ctx.createUnmarshaller();
+
+ JAXBElement<AssertionType> assertion = (JAXBElement<AssertionType>) um.unmarshal(new File("/home/clemens/workspace/schema-base/src/main/schema/test/saml10.xml"));
+ List<StatementAbstractType> statements = assertion.getValue().getStatementOrSubjectStatementOrAuthenticationStatement();
+ for (StatementAbstractType stmt : statements) {
+ if (stmt instanceof AttributeStatementType) {
+ System.out.println("AttributeStatement");
+ List<AttributeType> attrs = ((AttributeStatementType) stmt).getAttribute();
+ for (AttributeType attr : attrs) {
+ List<AnyType> attrValue = attr.getAttributeValue();
+ System.out.println(attrValue.size() + " AttributeValue(s)");
+ for (AnyType attrValueT : attrValue) {
+ List<Object> attrValueContent = attrValueT.getContent();
+ System.out.println(" AttributeValue: " + attrValueContent.size() + " child nodes");
+ for (Object node : attrValueContent) {
+ if (node instanceof String) {
+ System.out.println(" - CDATA: " + node);
+ } else if (node instanceof Element) {
+ System.out.println(" - DOM Element: " + ((Element)node).getTagName());
+ } else {
+ System.out.println(" - " + node.getClass());
+ }
+ }
+ }
+
+ }
+ }
+ }
+ }
+
+ @Test
+ public void testAttributeStatement() throws JAXBException {
+
+ org.w3._2000._09.xmldsig_.ObjectFactory dsOF = new org.w3._2000._09.xmldsig_.ObjectFactory();
+ RSAKeyValueType rsaKeyValueType = dsOF.createRSAKeyValueType();
+ rsaKeyValueType.setExponent("1234".getBytes());
+ rsaKeyValueType.setModulus("5678".getBytes());
+
+ JAXBElement<RSAKeyValueType> rsaKeyValue = dsOF.createRSAKeyValue(rsaKeyValueType);
+
+
+// KeyValueType kvT = dsOF.createKeyValueType();
+// kvT.getContent().add(rsaKeyValue);
+// JAXBElement<KeyValueType> kv = dsOF.createKeyValue(kvT);
+
+ ObjectFactory saml10OF = new ObjectFactory();
+ AssertionType assertionT = saml10OF.createAssertionType();
+
+ AttributeStatementType attrStatementT = saml10OF.createAttributeStatementType();
+ NameIdentifierType nameIdT = saml10OF.createNameIdentifierType();
+ nameIdT.setFormat("format");
+ nameIdT.setNameQualifier("qualifier");
+ nameIdT.setValue("value");
+ JAXBElement<NameIdentifierType> subjNameId = saml10OF.createNameIdentifier(nameIdT);
+ SubjectType subjT = saml10OF.createSubjectType();
+ subjT.getContent().add(subjNameId);
+ attrStatementT.setSubject(subjT);
+
+
+ AttributeType attrT = saml10OF.createAttributeType();
+// QName keyVal = new QName("testNS", "keyVal");
+ attrT.setAttributeName("RSAkeyvalue");
+ attrT.setAttributeNamespace("lskdfjlk");
+ AnyType attrValueT = saml10OF.createAnyType();
+ attrValueT.getContent().add(rsaKeyValue);
+ attrT.getAttributeValue().add(attrValueT); //kv); //keyValue); //new JAXBElement(keyVal, declaredType, attrT))
+ attrStatementT.getAttribute().add(attrT);
+ assertionT.getStatementOrSubjectStatementOrAuthenticationStatement().add(attrStatementT);
+ JAXBElement<AssertionType> assertion = saml10OF.createAssertion(assertionT);
+
+ JAXBContext ctx = JAXBContext.newInstance(saml10OF.getClass());
+ Marshaller m = ctx.createMarshaller();
+ m.marshal(assertion, System.out);
+ }
+}
diff --git a/mocca-1.2.11/utils/src/test/requests/CreateCMSSignatureRequest01.xml b/mocca-1.2.11/utils/src/test/requests/CreateCMSSignatureRequest01.xml
new file mode 100644
index 00000000..1406c1dd
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/requests/CreateCMSSignatureRequest01.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CreateCMSSignatureRequest xmlns="http://www.buergerkarte.at/namespaces/securitylayer/1.2#"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.buergerkarte.at/namespaces/securitylayer/1.2# file:/home/clemens/IAIK/BKU2/svn/bku/utils/src/main/schema/Core-1.2.xsd" Structure="detached">
+ <KeyboxIdentifier></KeyboxIdentifier>
+ <DataObject>
+ <MetaInfo>
+ <MimeType></MimeType>
+ </MetaInfo>
+ <Content>
+ <Base64Content></Base64Content>
+ </Content>
+ </DataObject>
+</CreateCMSSignatureRequest>
diff --git a/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest01.xml b/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest01.xml
new file mode 100644
index 00000000..72633ff7
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest01.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CreateXMLSignatureRequest xmlns="http://www.buergerkarte.at/namespaces/securitylayer/1.2#"
+ xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.buergerkarte.at/namespaces/securitylayer/1.2# file:/home/clemens/IAIK/BKU2/SLCore-1.2.xsd">
+ <KeyboxIdentifier/>
+ <DataObjectInfo Structure="enveloping">
+ <DataObject>
+ <XMLContent>
+ <PayloadRoot>
+ <!-- whitespaces are preserved -->
+ <PayloadChild>line
+ feed</PayloadChild>
+ </PayloadRoot>
+ </XMLContent>
+ </DataObject>
+ <TransformsInfo>
+ <dsig:Transforms>
+ <dsig:Transform Algorithm="transformalgorithm"/>
+ </dsig:Transforms>
+ <FinalDataMetaInfo>
+ <MimeType/>
+ <Description/>
+ </FinalDataMetaInfo>
+ </TransformsInfo>
+ </DataObjectInfo>
+ </CreateXMLSignatureRequest>
diff --git a/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest01_bound.xml b/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest01_bound.xml
new file mode 100644
index 00000000..7cd28d68
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest01_bound.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CreateXMLSignatureRequest xmlns="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#"><KeyboxIdentifier></KeyboxIdentifier><DataObjectInfo Structure="enveloping"><DataObject><XMLContent>
+
+ </XMLContent></DataObject><TransformsInfo><ns2:Transforms><ns2:Transform Algorithm="transformalgorithm"></ns2:Transform></ns2:Transforms><FinalDataMetaInfo><MimeType></MimeType><Description></Description></FinalDataMetaInfo></TransformsInfo></DataObjectInfo></CreateXMLSignatureRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest01_redirect.xml b/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest01_redirect.xml
new file mode 100644
index 00000000..b6b1cdb8
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest01_redirect.xml
@@ -0,0 +1,5 @@
+<PayloadRoot>
+ <!-- whitespaces are preserved -->
+ <PayloadChild>line
+ feed</PayloadChild>
+ </PayloadRoot> \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest02.xml b/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest02.xml
new file mode 100644
index 00000000..943722b1
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest02.xml
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<sl:CreateXMLSignatureRequest xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
+ xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#">
+ <sl:KeyboxIdentifier>SecureSignatureKeypair</sl:KeyboxIdentifier>
+ <sl:DataObjectInfo Structure="detached">
+ <sl:DataObject Reference=""/>
+ <sl:TransformsInfo>
+ <dsig:Transforms>
+ <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
+ <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
+ xmlns:pr="http://reference.e-government.gv.at/namespace/persondata/20020228#">
+ <xsl:template match="/" xmlns="http://www.w3.org/1999/xhtml">
+ <html>
+ <head>
+ <title>Signatur der Anmeldedaten</title>
+ <style type="text/css" media="screen">
+ .boldstyle { font-weight: bold; }
+ .italicstyle { font-style: italic; }
+ .annotationstyle { font-size: 0.8em; }
+ </style>
+ </head>
+ <body>
+ <h1>Signatur der Anmeldedaten</h1>
+ <p/>
+ <h4>Mit meiner elektronischen Signatur beantrage ich, <span
+ class="boldstyle">
+ <xsl:value-of select="//@Issuer"/>
+ </span>, geboren am <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,9,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,6,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,1,4)"
+ />, <xsl:if
+ test="//saml:Attribute[@AttributeName='OIDTextualDescription']"
+ > in der Rolle als <xsl:value-of
+ select="//saml:Attribute[@AttributeName='OIDTextualDescription']/saml:AttributeValue"
+ /> (OID***= <xsl:value-of
+ select="//saml:Attribute[@AttributeName='OID']/saml:AttributeValue"
+ />), </xsl:if> den Zugang zur gesicherten Anwendung. </h4>
+ <p/>
+ <h4>Datum und Uhrzeit: <xsl:value-of
+ select="substring(//@IssueInstant,9,2)"/>. <xsl:value-of
+ select="substring(//@IssueInstant,6,2)"/>. <xsl:value-of
+ select="substring(//@IssueInstant,1,4)"/>, <xsl:value-of
+ select="substring(//@IssueInstant,12,2)"/>:
+ <xsl:value-of select="substring(//@IssueInstant,15,2)"
+ />: <xsl:value-of select="substring(//@IssueInstant,18,2)"/>
+ </h4>
+ <xsl:if test="//saml:Attribute[@AttributeName='HPI']">
+ <h4>HPI(**): <xsl:value-of
+ select="//saml:Attribute[@AttributeName='HPI']/saml:AttributeValue"
+ /></h4>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='wbPK']">
+ <h4>wbPK(*): <xsl:value-of
+ select="//saml:Attribute[@AttributeName='wbPK']/saml:AttributeValue/pr:Identification/pr:Value"
+ /></h4>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='MandatorName']">
+ <hr/>
+ <h4>Ich bin weiters ermächtigt als <xsl:value-of
+ select="//saml:Attribute[@AttributeName='RepresentationType']/saml:AttributeValue/text()"
+ /> von <xsl:value-of
+ select="//saml:Attribute[@AttributeName='MandatorName']/saml:AttributeValue/text()"/>
+ <xsl:if
+ test="//saml:Attribute[@AttributeName='MandatorDateOfBirth']"
+ >, geboren am <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,9,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,6,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,1,4)"
+ />
+ </xsl:if>
+ <xsl:if
+ test="//saml:Attribute[@AttributeName='MandatorDomainIdentifier']"
+ >, <xsl:value-of
+ select="//saml:Attribute[@AttributeName='MandatorDomainIdentifier']/saml:AttributeValue/text()"
+ />
+ </xsl:if>, in deren Auftrag zu handeln. <xsl:if
+ test="//saml:Attribute[@AttributeName='MandatorWbpk']">
+ <h4>wbPK(*) des Vollmachtgebers: <xsl:value-of
+ select="//saml:Attribute[@AttributeName='MandatorWbpk']/saml:AttributeValue/text()"
+ /></h4>
+ </xsl:if>
+ </h4>
+ <p/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="//saml:Attribute[@AttributeName='OID']">
+ <p/>
+ <hr/>
+ </xsl:when>
+ <xsl:when test="//saml:Attribute[@AttributeName='HPI']">
+ <p/>
+ <hr/>
+ </xsl:when>
+ <xsl:when test="//saml:Attribute[@AttributeName='wbPK']">
+ <p/>
+ <hr/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:if test="//saml:Attribute[@AttributeName='wbPK']">
+ <div class="annotationstyle">(*) wbPK: Das <span
+ class="italicstyle">wirtschaftsbereichsspezifische
+ Personenkennzeichen</span> wird aus den jeweiligen
+ Stammzahlen des Bürgers und des Wirtschaftsunternehmens
+ berechnet und ermöglicht eine eindeutige Zuordnung des
+ Bürgers zum Wirtschaftsunternehmen.</div>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='HPI']">
+ <div class="annotationstyle">(**) HPI: Der <span
+ class="italicstyle">eHealth Professional
+ Identifier</span> wird aus den jeweiligen Stammzahlen
+ der Gesundheitsdiensteanbieterinnen /
+ Gesundheitsdiensteanbieter berechnet und ermöglicht eine
+ eindeutige Zuordnung der Gesundheitsdiensteanbieterin /
+ des Gesundheitsdiensteanbieters im
+ Gesundheitsbereich.</div>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='OID']">
+ <div class="annotationstyle">(***) OID: <span
+ class="italicstyle">Object Identifier</span> sind
+ standardisierte Objekt-Bezeichner und beschreiben
+ eindeutig die Rollen des GDA-Token Inhabers.</div>
+ </xsl:if>
+ </body>
+ </html>
+ </xsl:template>
+ </xsl:stylesheet>
+ </dsig:Transform>
+ <dsig:Transform
+ Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
+ </dsig:Transforms>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>application/xhtml+xml</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ <sl:TransformsInfo>
+ <dsig:Transforms>
+ <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
+ <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
+ <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
+ xmlns:pr="http://reference.e-government.gv.at/namespace/persondata/20020228#">
+ <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
+ <xsl:template match="/" xmlns="http://www.w3.org/1999/xhtml">
+ <html>
+ <head>
+ <title>Signatur der Anmeldedaten</title>
+ </head>
+ <body>
+ <h1>Signatur der Anmeldedaten</h1>
+ <p/>
+ <h4>Mit meiner elektronischen Signatur beantrage ich, <b>
+ <xsl:value-of select="//@Issuer"/>
+ </b>, geboren am <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,9,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,6,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,1,4)"
+ />, <xsl:if
+ test="//saml:Attribute[@AttributeName='OIDTextualDescription']"
+ > in der Rolle als <xsl:value-of
+ select="//saml:Attribute[@AttributeName='OIDTextualDescription']/saml:AttributeValue"
+ /> (OID***= <xsl:value-of
+ select="//saml:Attribute[@AttributeName='OID']/saml:AttributeValue"
+ />), </xsl:if> den Zugang zur gesicherten Anwendung. </h4>
+ <p/>
+ <h4>Datum und Uhrzeit: <xsl:value-of
+ select="substring(//@IssueInstant,9,2)"/>. <xsl:value-of
+ select="substring(//@IssueInstant,6,2)"/>. <xsl:value-of
+ select="substring(//@IssueInstant,1,4)"/>, <xsl:value-of
+ select="substring(//@IssueInstant,12,2)"/>:
+ <xsl:value-of select="substring(//@IssueInstant,15,2)"
+ />: <xsl:value-of select="substring(//@IssueInstant,18,2)"/>
+ </h4>
+ <xsl:if test="//saml:Attribute[@AttributeName='HPI']">
+ <h4>HPI(**): <xsl:value-of
+ select="//saml:Attribute[@AttributeName='HPI']/saml:AttributeValue"
+ /></h4>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='wbPK']">
+ <h4>wbPK(*): <xsl:value-of
+ select="//saml:Attribute[@AttributeName='wbPK']/saml:AttributeValue/pr:Identification/pr:Value"
+ /></h4>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='MandatorName']">
+ <hr/>
+ <h4>Ich bin weiters ermächtigt als <xsl:value-of
+ select="//saml:Attribute[@AttributeName='RepresentationType']/saml:AttributeValue/text()"
+ /> von <xsl:value-of
+ select="//saml:Attribute[@AttributeName='MandatorName']/saml:AttributeValue/text()"/>
+ <xsl:if
+ test="//saml:Attribute[@AttributeName='MandatorDateOfBirth']"
+ >, geboren am <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,9,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,6,2)"
+ />. <xsl:value-of
+ select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,1,4)"
+ />
+ </xsl:if>
+ <xsl:if
+ test="//saml:Attribute[@AttributeName='MandatorDomainIdentifier']"
+ >, <xsl:value-of
+ select="//saml:Attribute[@AttributeName='MandatorDomainIdentifier']/saml:AttributeValue/text()"
+ />
+ </xsl:if>, in deren Auftrag zu handeln. <xsl:if
+ test="//saml:Attribute[@AttributeName='MandatorWbpk']">
+ <h4>wbPK(*) des Vollmachtgebers: <xsl:value-of
+ select="//saml:Attribute[@AttributeName='MandatorWbpk']/saml:AttributeValue/text()"
+ /></h4>
+ </xsl:if>
+ </h4>
+ <p/>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="//saml:Attribute[@AttributeName='OID']">
+ <p/>
+ <hr/>
+ </xsl:when>
+ <xsl:when test="//saml:Attribute[@AttributeName='HPI']">
+ <p/>
+ <hr/>
+ </xsl:when>
+ <xsl:when test="//saml:Attribute[@AttributeName='wbPK']">
+ <p/>
+ <hr/>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:if test="//saml:Attribute[@AttributeName='wbPK']">
+ <h6>(*) wbPK: Das <i>wirtschaftsbereichsspezifische
+ Personenkennzeichen</i> wird aus den jeweiligen
+ Stammzahlen des Bürgers und des Wirtschaftsunternehmens
+ berechnet und ermöglicht eine eindeutige Zuordnung des
+ Bürgers zum Wirtschaftsunternehmen.</h6>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='HPI']">
+ <h6>(**) HPI: Der <i>eHealth Professional Identifier</i>
+ wird aus den jeweiligen Stammzahlen der
+ Gesundheitsdiensteanbieterinnen /
+ Gesundheitsdiensteanbieter berechnet und ermöglicht eine
+ eindeutige Zuordnung der Gesundheitsdiensteanbieterin /
+ des Gesundheitsdiensteanbieters im
+ Gesundheitsbereich.</h6>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='OID']">
+ <h6>(***) OID: <i>Object Identifier</i> sind standardisierte
+ Objekt-Bezeichner und beschreiben eindeutig die Rollen
+ des GDA-Token Inhabers.</h6>
+ </xsl:if>
+ </body>
+ </html>
+ </xsl:template>
+ </xsl:stylesheet>
+ </dsig:Transform>
+ <dsig:Transform
+ Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
+ </dsig:Transforms>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>text/html</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ </sl:DataObjectInfo>
+ <sl:SignatureInfo>
+ <sl:SignatureEnvironment>
+ <sl:XMLContent>
+ <saml:Assertion xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"
+ xmlns:pr="http://reference.e-government.gv.at/namespace/persondata/20020228#"
+ MajorVersion="1" MinorVersion="0" AssertionID="any" Issuer="Klämens Örthäçké"
+ IssueInstant="2008-06-05T11:26:10+02:00">
+ <saml:AttributeStatement>
+ <saml:Subject>
+ <saml:NameIdentifier>https://demo.egiz.gv.at/exchange-moa-id-auth/</saml:NameIdentifier>
+ </saml:Subject>
+ <saml:Attribute AttributeName="wbPK"
+ AttributeNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#">
+ <saml:AttributeValue>
+ <pr:Identification>
+ <pr:Value>LTpz8VYzns2jrx0J8Gm/R/nAhxA=</pr:Value>
+ <pr:Type>urn:publicid:gv.at:wbpk+FN+TODO</pr:Type>
+ </pr:Identification>
+ </saml:AttributeValue>
+ </saml:Attribute>
+ <saml:Attribute AttributeName="OA"
+ AttributeNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#">
+ <saml:AttributeValue>https://apps.egiz.gv.at/urlaubsschein-frontend/moaid-login</saml:AttributeValue>
+ </saml:Attribute>
+ <saml:Attribute AttributeName="Geburtsdatum"
+ AttributeNamespace="http://reference.e-government.gv.at/namespace/moa/20020822#">
+ <saml:AttributeValue>1971-11-10</saml:AttributeValue>
+ </saml:Attribute>
+ </saml:AttributeStatement>
+ </saml:Assertion>
+ </sl:XMLContent>
+ </sl:SignatureEnvironment>
+ <sl:SignatureLocation Index="2" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">/saml:Assertion</sl:SignatureLocation>
+ </sl:SignatureInfo>
+</sl:CreateXMLSignatureRequest>
diff --git a/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest02.xml_bound.xml b/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest02.xml_bound.xml
new file mode 100644
index 00000000..54af272b
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest02.xml_bound.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CreateXMLSignatureRequest xmlns="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#"><KeyboxIdentifier>SecureSignatureKeypair</KeyboxIdentifier><DataObjectInfo Structure="detached"><DataObject Reference=""/><TransformsInfo><FinalDataMetaInfo><MimeType>application/xhtml+xml</MimeType></FinalDataMetaInfo></TransformsInfo><TransformsInfo><FinalDataMetaInfo><MimeType>text/html</MimeType></FinalDataMetaInfo></TransformsInfo></DataObjectInfo><SignatureInfo><SignatureEnvironment><XMLContent/></SignatureEnvironment><SignatureLocation Index="2">/saml:Assertion</SignatureLocation></SignatureInfo></CreateXMLSignatureRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest02.xml_redirect.txt b/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest02.xml_redirect.txt
new file mode 100644
index 00000000..fc0e4f14
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest02.xml_redirect.txt
@@ -0,0 +1,165 @@
+--- redirected TransformsInfo content ---<dsig:Transforms>
+ <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></dsig:Transform>
+ <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
+ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:pr="http://reference.e-government.gv.at/namespace/persondata/20020228#" version="1.0">
+ <xsl:template xmlns="http://www.w3.org/1999/xhtml" match="/">
+ <html>
+ <head>
+ <title>Signatur der Anmeldedaten</title>
+ <style type="text/css" media="screen">
+ .boldstyle { font-weight: bold; }
+ .italicstyle { font-style: italic; }
+ .annotationstyle { font-size: 0.8em; }
+ </style>
+ </head>
+ <body>
+ <h1>Signatur der Anmeldedaten</h1>
+ <p></p>
+ <h4>Mit meiner elektronischen Signatur beantrage ich, <span class="boldstyle">
+ <xsl:value-of select="//@Issuer"></xsl:value-of>
+ </span>, geboren am <xsl:value-of select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,9,2)"></xsl:value-of>. <xsl:value-of select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,6,2)"></xsl:value-of>. <xsl:value-of select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,1,4)"></xsl:value-of>, <xsl:if test="//saml:Attribute[@AttributeName='OIDTextualDescription']"> in der Rolle als <xsl:value-of select="//saml:Attribute[@AttributeName='OIDTextualDescription']/saml:AttributeValue"></xsl:value-of> (OID***= <xsl:value-of select="//saml:Attribute[@AttributeName='OID']/saml:AttributeValue"></xsl:value-of>), </xsl:if> den Zugang zur gesicherten Anwendung. </h4>
+ <p></p>
+ <h4>Datum und Uhrzeit: <xsl:value-of select="substring(//@IssueInstant,9,2)"></xsl:value-of>. <xsl:value-of select="substring(//@IssueInstant,6,2)"></xsl:value-of>. <xsl:value-of select="substring(//@IssueInstant,1,4)"></xsl:value-of>, <xsl:value-of select="substring(//@IssueInstant,12,2)"></xsl:value-of>:
+ <xsl:value-of select="substring(//@IssueInstant,15,2)"></xsl:value-of>: <xsl:value-of select="substring(//@IssueInstant,18,2)"></xsl:value-of>
+ </h4>
+ <xsl:if test="//saml:Attribute[@AttributeName='HPI']">
+ <h4>HPI(**): <xsl:value-of select="//saml:Attribute[@AttributeName='HPI']/saml:AttributeValue"></xsl:value-of></h4>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='wbPK']">
+ <h4>wbPK(*): <xsl:value-of select="//saml:Attribute[@AttributeName='wbPK']/saml:AttributeValue/pr:Identification/pr:Value"></xsl:value-of></h4>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='MandatorName']">
+ <hr></hr>
+ <h4>Ich bin weiters ermächtigt als <xsl:value-of select="//saml:Attribute[@AttributeName='RepresentationType']/saml:AttributeValue/text()"></xsl:value-of> von <xsl:value-of select="//saml:Attribute[@AttributeName='MandatorName']/saml:AttributeValue/text()"></xsl:value-of>
+ <xsl:if test="//saml:Attribute[@AttributeName='MandatorDateOfBirth']">, geboren am <xsl:value-of select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,9,2)"></xsl:value-of>. <xsl:value-of select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,6,2)"></xsl:value-of>. <xsl:value-of select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,1,4)"></xsl:value-of>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='MandatorDomainIdentifier']">, <xsl:value-of select="//saml:Attribute[@AttributeName='MandatorDomainIdentifier']/saml:AttributeValue/text()"></xsl:value-of>
+ </xsl:if>, in deren Auftrag zu handeln. <xsl:if test="//saml:Attribute[@AttributeName='MandatorWbpk']">
+ <h4>wbPK(*) des Vollmachtgebers: <xsl:value-of select="//saml:Attribute[@AttributeName='MandatorWbpk']/saml:AttributeValue/text()"></xsl:value-of></h4>
+ </xsl:if>
+ </h4>
+ <p></p>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="//saml:Attribute[@AttributeName='OID']">
+ <p></p>
+ <hr></hr>
+ </xsl:when>
+ <xsl:when test="//saml:Attribute[@AttributeName='HPI']">
+ <p></p>
+ <hr></hr>
+ </xsl:when>
+ <xsl:when test="//saml:Attribute[@AttributeName='wbPK']">
+ <p></p>
+ <hr></hr>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:if test="//saml:Attribute[@AttributeName='wbPK']">
+ <div class="annotationstyle">(*) wbPK: Das <span class="italicstyle">wirtschaftsbereichsspezifische
+ Personenkennzeichen</span> wird aus den jeweiligen
+ Stammzahlen des Bürgers und des Wirtschaftsunternehmens
+ berechnet und ermöglicht eine eindeutige Zuordnung des
+ Bürgers zum Wirtschaftsunternehmen.</div>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='HPI']">
+ <div class="annotationstyle">(**) HPI: Der <span class="italicstyle">eHealth Professional
+ Identifier</span> wird aus den jeweiligen Stammzahlen
+ der Gesundheitsdiensteanbieterinnen /
+ Gesundheitsdiensteanbieter berechnet und ermöglicht eine
+ eindeutige Zuordnung der Gesundheitsdiensteanbieterin /
+ des Gesundheitsdiensteanbieters im
+ Gesundheitsbereich.</div>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='OID']">
+ <div class="annotationstyle">(***) OID: <span class="italicstyle">Object Identifier</span> sind
+ standardisierte Objekt-Bezeichner und beschreiben
+ eindeutig die Rollen des GDA-Token Inhabers.</div>
+ </xsl:if>
+ </body>
+ </html>
+ </xsl:template>
+ </xsl:stylesheet>
+ </dsig:Transform>
+ <dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></dsig:Transform>
+ </dsig:Transforms>
+------ redirected TransformsInfo content ---<dsig:Transforms>
+ <dsig:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></dsig:Transform>
+ <dsig:Transform Algorithm="http://www.w3.org/TR/1999/REC-xslt-19991116">
+ <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion" xmlns:pr="http://reference.e-government.gv.at/namespace/persondata/20020228#" version="1.0">
+ <xsl:output indent="yes" encoding="UTF-8" method="xml" version="1.0"></xsl:output>
+ <xsl:template xmlns="http://www.w3.org/1999/xhtml" match="/">
+ <html>
+ <head>
+ <title>Signatur der Anmeldedaten</title>
+ </head>
+ <body>
+ <h1>Signatur der Anmeldedaten</h1>
+ <p></p>
+ <h4>Mit meiner elektronischen Signatur beantrage ich, <b>
+ <xsl:value-of select="//@Issuer"></xsl:value-of>
+ </b>, geboren am <xsl:value-of select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,9,2)"></xsl:value-of>. <xsl:value-of select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,6,2)"></xsl:value-of>. <xsl:value-of select="substring(//saml:Attribute[@AttributeName='Geburtsdatum']/saml:AttributeValue,1,4)"></xsl:value-of>, <xsl:if test="//saml:Attribute[@AttributeName='OIDTextualDescription']"> in der Rolle als <xsl:value-of select="//saml:Attribute[@AttributeName='OIDTextualDescription']/saml:AttributeValue"></xsl:value-of> (OID***= <xsl:value-of select="//saml:Attribute[@AttributeName='OID']/saml:AttributeValue"></xsl:value-of>), </xsl:if> den Zugang zur gesicherten Anwendung. </h4>
+ <p></p>
+ <h4>Datum und Uhrzeit: <xsl:value-of select="substring(//@IssueInstant,9,2)"></xsl:value-of>. <xsl:value-of select="substring(//@IssueInstant,6,2)"></xsl:value-of>. <xsl:value-of select="substring(//@IssueInstant,1,4)"></xsl:value-of>, <xsl:value-of select="substring(//@IssueInstant,12,2)"></xsl:value-of>:
+ <xsl:value-of select="substring(//@IssueInstant,15,2)"></xsl:value-of>: <xsl:value-of select="substring(//@IssueInstant,18,2)"></xsl:value-of>
+ </h4>
+ <xsl:if test="//saml:Attribute[@AttributeName='HPI']">
+ <h4>HPI(**): <xsl:value-of select="//saml:Attribute[@AttributeName='HPI']/saml:AttributeValue"></xsl:value-of></h4>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='wbPK']">
+ <h4>wbPK(*): <xsl:value-of select="//saml:Attribute[@AttributeName='wbPK']/saml:AttributeValue/pr:Identification/pr:Value"></xsl:value-of></h4>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='MandatorName']">
+ <hr></hr>
+ <h4>Ich bin weiters ermächtigt als <xsl:value-of select="//saml:Attribute[@AttributeName='RepresentationType']/saml:AttributeValue/text()"></xsl:value-of> von <xsl:value-of select="//saml:Attribute[@AttributeName='MandatorName']/saml:AttributeValue/text()"></xsl:value-of>
+ <xsl:if test="//saml:Attribute[@AttributeName='MandatorDateOfBirth']">, geboren am <xsl:value-of select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,9,2)"></xsl:value-of>. <xsl:value-of select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,6,2)"></xsl:value-of>. <xsl:value-of select="substring(//saml:Attribute[@AttributeName='MandatorDateOfBirth']/saml:AttributeValue,1,4)"></xsl:value-of>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='MandatorDomainIdentifier']">, <xsl:value-of select="//saml:Attribute[@AttributeName='MandatorDomainIdentifier']/saml:AttributeValue/text()"></xsl:value-of>
+ </xsl:if>, in deren Auftrag zu handeln. <xsl:if test="//saml:Attribute[@AttributeName='MandatorWbpk']">
+ <h4>wbPK(*) des Vollmachtgebers: <xsl:value-of select="//saml:Attribute[@AttributeName='MandatorWbpk']/saml:AttributeValue/text()"></xsl:value-of></h4>
+ </xsl:if>
+ </h4>
+ <p></p>
+ </xsl:if>
+ <xsl:choose>
+ <xsl:when test="//saml:Attribute[@AttributeName='OID']">
+ <p></p>
+ <hr></hr>
+ </xsl:when>
+ <xsl:when test="//saml:Attribute[@AttributeName='HPI']">
+ <p></p>
+ <hr></hr>
+ </xsl:when>
+ <xsl:when test="//saml:Attribute[@AttributeName='wbPK']">
+ <p></p>
+ <hr></hr>
+ </xsl:when>
+ </xsl:choose>
+ <xsl:if test="//saml:Attribute[@AttributeName='wbPK']">
+ <h6>(*) wbPK: Das <i>wirtschaftsbereichsspezifische
+ Personenkennzeichen</i> wird aus den jeweiligen
+ Stammzahlen des Bürgers und des Wirtschaftsunternehmens
+ berechnet und ermöglicht eine eindeutige Zuordnung des
+ Bürgers zum Wirtschaftsunternehmen.</h6>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='HPI']">
+ <h6>(**) HPI: Der <i>eHealth Professional Identifier</i>
+ wird aus den jeweiligen Stammzahlen der
+ Gesundheitsdiensteanbieterinnen /
+ Gesundheitsdiensteanbieter berechnet und ermöglicht eine
+ eindeutige Zuordnung der Gesundheitsdiensteanbieterin /
+ des Gesundheitsdiensteanbieters im
+ Gesundheitsbereich.</h6>
+ </xsl:if>
+ <xsl:if test="//saml:Attribute[@AttributeName='OID']">
+ <h6>(***) OID: <i>Object Identifier</i> sind standardisierte
+ Objekt-Bezeichner und beschreiben eindeutig die Rollen
+ des GDA-Token Inhabers.</h6>
+ </xsl:if>
+ </body>
+ </html>
+ </xsl:template>
+ </xsl:stylesheet>
+ </dsig:Transform>
+ <dsig:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"></dsig:Transform>
+ </dsig:Transforms>
+--- \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest03.xml b/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest03.xml
new file mode 100644
index 00000000..c21fa6b1
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest03.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sl:CreateXMLSignatureRequest
+xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#"
+xmlns:dsig="http://www.w3.org/2000/09/xmldsig#">
+   <sl:DataObjectInfo Structure="enveloping">
+     <sl:DataObject>
+       <sl:XMLContent>I am a simple <funny>funny</funny> text.</sl:XMLContent>
+     </sl:DataObject>
+   </sl:DataObjectInfo>
+</sl:CreateXMLSignatureRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest03.xml_bound.xml b/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest03.xml_bound.xml
new file mode 100644
index 00000000..31cc86df
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest03.xml_bound.xml
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><CreateXMLSignatureRequest xmlns="http://www.buergerkarte.at/namespaces/securitylayer/1.2#" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#"><DataObjectInfo Structure="enveloping"><DataObject><XMLContent></XMLContent></DataObject></DataObjectInfo></CreateXMLSignatureRequest> \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest03.xml_redirect.txt b/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest03.xml_redirect.txt
new file mode 100644
index 00000000..80a4dce3
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/requests/CreateXMLSignatureRequest03.xml_redirect.txt
@@ -0,0 +1,3 @@
+I am a simple <funny>funny</funny> text.
+
+
diff --git a/mocca-1.2.11/utils/src/test/resources/BigRequest.xml b/mocca-1.2.11/utils/src/test/resources/BigRequest.xml
new file mode 100644
index 00000000..90eb1eb8
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/resources/BigRequest.xml
@@ -0,0 +1,1060 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<sl:CreateXMLSignatureRequest
+ xmlns:sl="http://www.buergerkarte.at/namespaces/securitylayer/1.2#">
+<sl:KeyboxIdentifier>SecureSignatureKeypair</sl:KeyboxIdentifier>
+ <sl:DataObjectInfo Structure="enveloping">
+ <sl:DataObject>
+ <sl:Base64Content>TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2Np
+bmcgZWxpdC4gTnVsbGFtIHZ1bHB1dGF0ZSwgcmlzdXMgaW1wZXJkaWV0IGNvbnNl
+cXVhdCB2YXJpdXMsIHJpc3VzIGR1aSB0ZW1wdXMgbGVvLCBub24gbGFjaW5pYSBl
+bmltIG51bmMgYSBzZW0uIERvbmVjIHBvcnRhLCBpcHN1bSB0aW5jaWR1bnQgdWx0
+cmljZXMgaW50ZXJkdW0sIGZlbGlzIGF1Z3VlIHNvZGFsZXMgYW50ZSwgdmVsIG9y
+bmFyZSBsaWJlcm8gbnVsbGEgZXQgcHVydXMuIENyYXMgdGVtcHVzIHZhcml1cyBw
+b3J0YS4gRG9uZWMgaWQgcHVydXMgdXQgdmVsaXQgYmliZW5kdW0gbHVjdHVzIGJs
+YW5kaXQgc2l0IGFtZXQgbmVxdWUuIENsYXNzIGFwdGVudCB0YWNpdGkgc29jaW9z
+cXUgYWQgbGl0b3JhIHRvcnF1ZW50IHBlciBjb251YmlhIG5vc3RyYSwgcGVyIGlu
+Y2VwdG9zIGhpbWVuYWVvcy4gQ3JhcyBmYWNpbGlzaXMgdGVtcHVzIGZlcm1lbnR1
+bS4gRG9uZWMgZmVybWVudHVtIG1hc3NhIGV0IHNhcGllbiBwb3N1ZXJlIHZlbmVu
+YXRpcy4gSW4gcXVpcyB1cm5hIG9yY2kuIER1aXMgYSBsaWJlcm8gb3JjaS4gTnVs
+bGEgcG9ydHRpdG9yIGF1Z3VlIHZpdGFlIGxpZ3VsYSB0ZW1wb3Igc2VkIHJ1dHJ1
+bSBtaSBjdXJzdXMuIEFlbmVhbiBpYWN1bGlzIG5pc2kgYXQgaXBzdW0gY29uc2Vj
+dGV0dXIgZWdldCB2YXJpdXMgbWFnbmEgc29sbGljaXR1ZGluLiBVdCBmYWNpbGlz
+aXMgdGVsbHVzIGEgbmVxdWUgZWdlc3RhcyBwbGFjZXJhdC4gRG9uZWMgdG9ydG9y
+IHZlbGl0LCB0aW5jaWR1bnQgYSBtb2xsaXMgY3Vyc3VzLCBsdWN0dXMgYWxpcXVh
+bSBsaWJlcm8uIER1aXMgbm9uIHRlbGx1cyBwcmV0aXVtIHRlbGx1cyB2YXJpdXMg
+ZWxlaWZlbmQgaW4gc2VkIHNlbS4gU3VzcGVuZGlzc2UgZmVybWVudHVtIHRlbGx1
+cyBpZCBmZWxpcyB0ZW1wdXMgdml2ZXJyYS4gRG9uZWMgcG9ydHRpdG9yIHRpbmNp
+ZHVudCBtYXVyaXMgbmVjIGV1aXNtb2QuCgpQcmFlc2VudCB1bGxhbWNvcnBlciB0
+cmlzdGlxdWUgbG9yZW0sIGV0IHBsYWNlcmF0IG51bmMgZWxlbWVudHVtIHV0LiBN
+b3JiaSBldCBhZGlwaXNjaW5nIHNlbS4gTmFtIHZlbCBuaWJoIGV1IGxlbyBjb25k
+aW1lbnR1bSByaG9uY3VzIHF1aXMgc2VkIHVybmEuIFBoYXNlbGx1cyBpZCBqdXN0
+byB1dCBvcmNpIHZlc3RpYnVsdW0gc2NlbGVyaXNxdWUuIE5hbSBtb2xsaXMgdG9y
+dG9yIHB1cnVzLiBQZWxsZW50ZXNxdWUgaWFjdWxpcyBzZW1wZXIgbWFsZXN1YWRh
+LiBJbnRlZ2VyIGJsYW5kaXQgZmVsaXMgYXQgbG9yZW0gZXVpc21vZCB2ZW5lbmF0
+aXMuIE1hZWNlbmFzIG5lYyBlbGVpZmVuZCBsZW8uIERvbmVjIGxvYm9ydGlzLCBy
+aXN1cyBuZWMgdGVtcHVzIHZvbHV0cGF0LCBudWxsYSBlbGl0IGx1Y3R1cyBhcmN1
+LCBhYyBwb3N1ZXJlIGxhY3VzIG1hc3NhIGluIG1pLiBNYWVjZW5hcyBzaXQgYW1l
+dCBudW5jIG5lYyB0ZWxsdXMgZWdlc3RhcyB2ZXN0aWJ1bHVtIHZpdGFlIGV0IGVs
+aXQuIE51bGxhbSBjb25zZWN0ZXR1ciBydXRydW0gdGVsbHVzIGFjIGFjY3Vtc2Fu
+LiBDdXJhYml0dXIgZ3JhdmlkYSBhdWd1ZSBldCBtZXR1cyBjdXJzdXMgZWxlaWZl
+bmQuIENyYXMgb2RpbyBhcmN1LCB0aW5jaWR1bnQgdXQgZWdlc3RhcyB2ZWwsIGdy
+YXZpZGEgaW4gZXJvcy4gTnVuYyBldCBtYWxlc3VhZGEgcXVhbS4gTWF1cmlzIGFj
+IHRlbGx1cyBhcmN1LgoKQ3JhcyBuaXNsIHNhcGllbiwgdGluY2lkdW50IGVnZXQg
+ZWxlaWZlbmQgdmVsLCBwcmV0aXVtIGlkIGxlY3R1cy4gQWxpcXVhbSB0b3J0b3Ig
+dXJuYSwgcG9zdWVyZSBpZCBydXRydW0gbHVjdHVzLCBhdWN0b3Igc2VkIGFudGUu
+IFByb2luIGZlcm1lbnR1bSwgbmliaCBhIHZvbHV0cGF0IHZvbHV0cGF0LCBlcm9z
+IGRvbG9yIHNjZWxlcmlzcXVlIG1hZ25hLCB0ZW1wdXMgc29sbGljaXR1ZGluIGxp
+YmVybyBkb2xvciBydXRydW0gZXN0LiBNYXVyaXMgcXVpcyBqdXN0byBhcmN1LiBQ
+cm9pbiB2ZWhpY3VsYSBhZGlwaXNjaW5nIGVyb3Mgbm9uIGNvbmRpbWVudHVtLiBO
+dW5jIHN1c2NpcGl0LCBsZWN0dXMgZXUgaWFjdWxpcyBtb2xlc3RpZSwgbWkgZG9s
+b3IgcG9ydGEgZG9sb3IsIGV1IHNhZ2l0dGlzIG1hc3NhIGlwc3VtIGluIG1pLiBO
+dW5jIHNlbXBlciBzY2VsZXJpc3F1ZSBsb3JlbSwgYSBzb2RhbGVzIHRvcnRvciBw
+b3J0dGl0b3IgaWQuIE51bGxhIG1hdHRpcywgdG9ydG9yIG5lYyBpYWN1bGlzIHBy
+ZXRpdW0sIGVyYXQgbGFjdXMgdnVscHV0YXRlIGR1aSwgdnVscHV0YXRlIGZhY2ls
+aXNpcyBkb2xvciB0dXJwaXMgdXQgZmVsaXMuIE1hZWNlbmFzIHZpdGFlIHNlbSBl
+dCBuaWJoIHNhZ2l0dGlzIHRpbmNpZHVudCBxdWlzIGluIHRvcnRvci4gQWxpcXVh
+bSBpZCBzb2RhbGVzIHJpc3VzLiBJbnRlZ2VyIGZhY2lsaXNpcywgc2FwaWVuIHV0
+IHNhZ2l0dGlzIGNvbnNlY3RldHVyLCBkaWFtIGxvcmVtIHZpdmVycmEgZG9sb3Is
+IHF1aXMgY29tbW9kbyBuaWJoIGVyYXQgcXVpcyBtZXR1cy4gUHJvaW4gZGljdHVt
+IHJpc3VzIG1hdXJpcy4gTnVuYyBldSB1cm5hIHNpdCBhbWV0IHZlbGl0IHBsYWNl
+cmF0IGVsZWlmZW5kLiBBZW5lYW4gc2l0IGFtZXQgcHVydXMgbnVuYy4gUHJvaW4g
+bm9uIG5lcXVlIGEgdGVsbHVzIG1hdHRpcyBlZ2VzdGFzIGF0IHV0IG51bmMuIERv
+bmVjIG5vbiBhbnRlIHZpdGFlIG9yY2kgcGVsbGVudGVzcXVlIHNjZWxlcmlzcXVl
+LiBNYWVjZW5hcyBhYyBpYWN1bGlzIGZlbGlzLiBVdCBhZGlwaXNjaW5nIHN1c2Np
+cGl0IGRpYW0gdXQgcG9ydGEuIERvbmVjIHZlc3RpYnVsdW0gbGFjaW5pYSBtYWdu
+YSwgaWQgcnV0cnVtIG5pc2kgdmVuZW5hdGlzIHNlZC4KCk51bGxhIHNhZ2l0dGlz
+IHBoYXJldHJhIGFudGUgZXUgb3JuYXJlLiBBbGlxdWFtIGV1IGRvbG9yIHV0IHVy
+bmEgY29uZGltZW50dW0gcnV0cnVtLiBJbnRlZ2VyIHN1c2NpcGl0LCB2ZWxpdCBu
+ZWMgc29sbGljaXR1ZGluIGN1cnN1cywgbGVjdHVzIHF1YW0gc2NlbGVyaXNxdWUg
+bWksIGlkIGF1Y3RvciBzYXBpZW4gdG9ydG9yIHNlZCB0ZWxsdXMuIERvbmVjIHRp
+bmNpZHVudCB0aW5jaWR1bnQgbGVjdHVzLCBxdWlzIHNvZGFsZXMgcHVydXMgaW1w
+ZXJkaWV0IGV0LiBOdWxsYSBmYWNpbGlzaS4gTnVsbGFtIGlhY3VsaXMgZWxlbWVu
+dHVtIGZlbGlzLCBlZ2V0IG1hdHRpcyBkb2xvciB0cmlzdGlxdWUgYWMuIFNlZCBl
+Z2V0IHNlbSBuZXF1ZS4gVXQgZmVybWVudHVtLCBtaSBxdWlzIHZvbHV0cGF0IHZl
+bmVuYXRpcywgbGFjdXMgbmVxdWUgY29udmFsbGlzIGVzdCwgdml0YWUgc3VzY2lw
+aXQgdHVycGlzIGFudGUgYXQgcmlzdXMuIE51bmMgZmVybWVudHVtLCBtYWduYSBx
+dWlzIHZlbmVuYXRpcyBldWlzbW9kLCBlbGl0IHZlbGl0IGZlcm1lbnR1bSBqdXN0
+bywgYSBkaWN0dW0gbGlndWxhIGp1c3RvIGFjIGxvcmVtLiBTZWQgZWdldCB0b3J0
+b3IgbWFnbmEsIHZpdmVycmEgaW50ZXJkdW0gbGVvLiBRdWlzcXVlIGluIGxhY3Vz
+IGV0IGxlY3R1cyBhZGlwaXNjaW5nIGNvbnNlY3RldHVyIGluIHF1aXMgZXN0LiBN
+YXVyaXMgZXQgZG9sb3IgZXQgbmVxdWUgbW9sZXN0aWUgY29uc2VjdGV0dXIgZXVp
+c21vZCBldSBlbGl0LiBOdWxsYSBmYWNpbGlzaS4gUHJvaW4gYWMgdmVsaXQgaXBz
+dW0sIHV0IHRyaXN0aXF1ZSBtYWduYS4gVmVzdGlidWx1bSBwb3N1ZXJlIG1hbGVz
+dWFkYSBuaXNsIHNpdCBhbWV0IGFsaXF1YW0uIFN1c3BlbmRpc3NlIHNlZCBpcHN1
+bSBpZCB0ZWxsdXMgcG9ydGEgcG9zdWVyZSBlZ2V0IHNpdCBhbWV0IHR1cnBpcy4g
+TnVuYyBhYyBkb2xvciB2ZWwgdXJuYSBkYXBpYnVzIGZlcm1lbnR1bSBuZWMgdmVo
+aWN1bGEgdXJuYS4gRnVzY2UgdGluY2lkdW50IG1ldHVzIGV1IGlwc3VtIG1hdHRp
+cyB0cmlzdGlxdWUuIFNlZCBmYXVjaWJ1cyBmcmluZ2lsbGEgYWRpcGlzY2luZy4g
+Q3JhcyBwaGFyZXRyYSwgYW50ZSBzZWQgYWNjdW1zYW4gcmhvbmN1cywgZWxpdCBk
+b2xvciBsYWNpbmlhIG1hdXJpcywgYXQgbGFvcmVldCBsaWJlcm8gYXVndWUgYXQg
+bmlzbC4KClByb2luIGEgbGVvIHV0IHRvcnRvciBwb3J0YSBsdWN0dXMuIFZlc3Rp
+YnVsdW0gYW50ZSBpcHN1bSBwcmltaXMgaW4gZmF1Y2lidXMgb3JjaSBsdWN0dXMg
+ZXQgdWx0cmljZXMgcG9zdWVyZSBjdWJpbGlhIEN1cmFlOyBVdCBzZWQgbnVuYyB2
+ZWwgbWV0dXMgc3VzY2lwaXQgY29uZ3VlIGF0IGEgZG9sb3IuIE51bmMgZXUgdG9y
+dG9yIGxvcmVtLCBuZWMgY29uZ3VlIGxpYmVyby4gTW9yYmkgbGFvcmVldCBsZWN0
+dXMgbmlzbCwgdml0YWUgcmhvbmN1cyBlbGl0LiBTdXNwZW5kaXNzZSBldCBxdWFt
+IHF1aXMgZHVpIGxhY2luaWEgc29kYWxlcyBuZWMgZXUgbGlndWxhLiBQZWxsZW50
+ZXNxdWUgbm9uIGlwc3VtIGxlbywgc2l0IGFtZXQgbW9sZXN0aWUgZHVpLiBTZWQg
+YSBhdWd1ZSBlZ2V0IG1hdXJpcyBncmF2aWRhIG1hbGVzdWFkYSBldCBxdWlzIGlw
+c3VtLiBBbGlxdWFtIGFjIG5pYmggbGlndWxhLCBpbiBwb3J0dGl0b3IgZWxpdC4g
+TWF1cmlzIHR1cnBpcyBvcmNpLCBhY2N1bXNhbiBpbiBpbnRlcmR1bSBhdCwgZmFj
+aWxpc2lzIHZpdGFlIHR1cnBpcy4gUXVpc3F1ZSBtYXR0aXMgcGVsbGVudGVzcXVl
+IGVyb3MgdmVsIHZpdmVycmEuIFZlc3RpYnVsdW0gbGFvcmVldCBjb25ndWUgYWxp
+cXVhbS4gRG9uZWMgcG9zdWVyZSBtYXVyaXMgbmVjIGxpYmVybyBvcm5hcmUgZXQg
+ZWdlc3RhcyBhbnRlIHB1bHZpbmFyLiBDdXJhYml0dXIgYW50ZSBhbnRlLCBtb2xl
+c3RpZSB1dCBiaWJlbmR1bSB2aXRhZSwgcnV0cnVtIHZlbCByaXN1cy4gRG9uZWMg
+ZXQgbmVxdWUgcHVydXMsIHNpdCBhbWV0IGFkaXBpc2NpbmcgZmVsaXMuIFBlbGxl
+bnRlc3F1ZSBkaWduaXNzaW0gdmVzdGlidWx1bSBzYXBpZW4gbmVjIGZyaW5naWxs
+YS4gUHJvaW4gbmVjIHB1cnVzIGV0IGVzdCBldWlzbW9kIHBoYXJldHJhLiBQZWxs
+ZW50ZXNxdWUgZGFwaWJ1cyBkYXBpYnVzIG1ldHVzIHZlbCBmYWNpbGlzaXMuIFZp
+dmFtdXMgdmVsIGVsaXQgbnVuYy4KCkV0aWFtIGFjIGVuaW0gZWdldCBtYXVyaXMg
+ZmF1Y2lidXMgZGFwaWJ1cy4gTW9yYmkgdml0YWUgbGVjdHVzIG5lcXVlLiBNYXVy
+aXMgc2FwaWVuIG1ldHVzLCBzdXNjaXBpdCBzaXQgYW1ldCBlZ2VzdGFzIHZpdGFl
+LCBwaGFyZXRyYSBhIG1hc3NhLiBVdCB2YXJpdXMsIHRvcnRvciBzZWQgZnJpbmdp
+bGxhIHBsYWNlcmF0LCBuZXF1ZSBkaWFtIGNvbmd1ZSBudW5jLCBpZCBhbGlxdWV0
+IG5pc2kgcmlzdXMgdXQgdXJuYS4gVml2YW11cyBwbGFjZXJhdCBwb3J0YSBhcmN1
+IHZpdGFlIGFjY3Vtc2FuLiBNYXVyaXMgaGVuZHJlcml0LCBlbmltIHZpdGFlIGFs
+aXF1YW0gcG9ydHRpdG9yLCBwdXJ1cyBuZXF1ZSBncmF2aWRhIG1hZ25hLCBub24g
+cHJldGl1bSBuZXF1ZSBsZWN0dXMgc2l0IGFtZXQgdG9ydG9yLiBEdWlzIHN1c2Np
+cGl0IG9ybmFyZSBvZGlvIHZpdGFlIHBoYXJldHJhLiBEb25lYyBlbGVpZmVuZCwg
+ZHVpIG5vbiBncmF2aWRhIGNvbnZhbGxpcywgb2RpbyBhcmN1IGJsYW5kaXQgbWFn
+bmEsIG5vbiBwb3J0YSBsZW8gbGliZXJvIHBvcnRhIG1hZ25hLiBEdWlzIGVzdCB1
+cm5hLCBsdWN0dXMgZXUgaW50ZXJkdW0gbmVjLCBpYWN1bGlzIG5lYyBlbGl0LiBD
+dXJhYml0dXIgZmFjaWxpc2lzIHRlbXB1cyB0ZW1wdXMuIFNlZCBzZW0gdXJuYSwg
+dml2ZXJyYSBldSBpbXBlcmRpZXQgc2l0IGFtZXQsIGludGVyZHVtIGV0IGp1c3Rv
+LiBJbiBoYWMgaGFiaXRhc3NlIHBsYXRlYSBkaWN0dW1zdC4gRG9uZWMgdGluY2lk
+dW50IG1hc3NhIHV0IGR1aSBmZXJtZW50dW0gcG9zdWVyZSBldCBuZWMgdHVycGlz
+LiBFdGlhbSBmZXJtZW50dW0gcG9ydGEgbWF1cmlzLiBTdXNwZW5kaXNzZSBsYWN1
+cyBsaWJlcm8sIHByZXRpdW0gaW4gZWdlc3RhcyB2ZWwsIHNhZ2l0dGlzIGV0IG1h
+c3NhLiBOdWxsYSBhbGlxdWFtIGxhb3JlZXQgc2FwaWVuLCBhdCBwZWxsZW50ZXNx
+dWUgZXJvcyB2ZW5lbmF0aXMgcXVpcy4gSW50ZWdlciBhY2N1bXNhbiwgbGFjdXMg
+dXQgZGFwaWJ1cyBlZ2VzdGFzLCByaXN1cyBuaXNsIHNlbXBlciB0dXJwaXMsIHNp
+dCBhbWV0IHZpdmVycmEgZmVsaXMgdHVycGlzIHNlZCB2ZWxpdC4KCkRvbmVjIHZl
+aGljdWxhLCB0ZWxsdXMgcXVpcyBtb2xlc3RpZSBiaWJlbmR1bSwgYXVndWUgbmlz
+bCB0ZW1wdXMgbG9yZW0sIHNpdCBhbWV0IGNvbmRpbWVudHVtIGp1c3RvIGF1Z3Vl
+IHNpdCBhbWV0IGFudGUuIE51bGxhbSB0b3J0b3Igc2VtLCBtYXR0aXMgYWMgcG9y
+dHRpdG9yIHZpdGFlLCBpYWN1bGlzIHNlZCBkdWkuIEN1bSBzb2NpaXMgbmF0b3F1
+ZSBwZW5hdGlidXMgZXQgbWFnbmlzIGRpcyBwYXJ0dXJpZW50IG1vbnRlcywgbmFz
+Y2V0dXIgcmlkaWN1bHVzIG11cy4gRXRpYW0gaW4gc2VtIGlwc3VtLiBJbiBldSBt
+b2xlc3RpZSBtZXR1cy4gVml2YW11cyBsYW9yZWV0IGZhdWNpYnVzIG5pYmgsIGEg
+c2VtcGVyIG5pYmggZnJpbmdpbGxhIHV0LiBNYWVjZW5hcyBsYW9yZWV0LCBwdXJ1
+cyBldSBzb2xsaWNpdHVkaW4gcGhhcmV0cmEsIGp1c3RvIHRlbGx1cyBjb21tb2Rv
+IGF1Z3VlLCBpbiBmYXVjaWJ1cyBsZW8ganVzdG8gbmVjIG5pc2wuIE5hbSBldSBw
+cmV0aXVtIGVzdC4gRnVzY2Ugc2l0IGFtZXQgcXVhbSBsb3JlbSwgdXQgc29kYWxl
+cyB0ZWxsdXMuIE51bmMgZWxlbWVudHVtLCBzZW0gc2NlbGVyaXNxdWUgaWFjdWxp
+cyBpbnRlcmR1bSwgZXJvcyBkdWkgb3JuYXJlIG9yY2ksIHNlZCBwbGFjZXJhdCBy
+aXN1cyBlcmF0IGVnZXQgYXJjdS4gTW9yYmkgYWMgbWV0dXMgaWQgbGlndWxhIHBv
+cnRhIGdyYXZpZGEuIE51bmMgY29udmFsbGlzIGRpYW0gaW4gbmlzaSBncmF2aWRh
+IGFjIGNvbW1vZG8gbGFjdXMgZGlnbmlzc2ltLiBDdW0gc29jaWlzIG5hdG9xdWUg
+cGVuYXRpYnVzIGV0IG1hZ25pcyBkaXMgcGFydHVyaWVudCBtb250ZXMsIG5hc2Nl
+dHVyIHJpZGljdWx1cyBtdXMuIEV0aWFtIHF1aXMgdmVsaXQgZXUgZmVsaXMgbHVj
+dHVzIHBlbGxlbnRlc3F1ZSBub24gZWdlc3RhcyBuZXF1ZS4gTnVuYyBuaWJoIHRl
+bGx1cywgcGxhY2VyYXQgbm9uIGZlcm1lbnR1bSBhdCwgb3JuYXJlIHF1aXMgZGlh
+bS4gU3VzcGVuZGlzc2Ugc2l0IGFtZXQgcHVydXMgcXVpcyBkdWkgY29uc2VxdWF0
+IHByZXRpdW0uIEZ1c2NlIGV0IG1hZ25hIG5pc2ksIHZlbCB2ZXN0aWJ1bHVtIGVy
+b3MuIEluIGZhdWNpYnVzLCBsYWN1cyBlZ2V0IGZhdWNpYnVzIGZldWdpYXQsIGxp
+Z3VsYSBlbmltIHZlc3RpYnVsdW0gbG9yZW0sIGEgdml2ZXJyYSBsb3JlbSBlc3Qg
+dml0YWUgcXVhbS4gTnVuYyBwdXJ1cyBuaXNsLCB2YXJpdXMgZXQgdGVtcG9yIHVs
+dHJpY2llcywgaWFjdWxpcyBhIGxpYmVyby4gQ2xhc3MgYXB0ZW50IHRhY2l0aSBz
+b2Npb3NxdSBhZCBsaXRvcmEgdG9ycXVlbnQgcGVyIGNvbnViaWEgbm9zdHJhLCBw
+ZXIgaW5jZXB0b3MgaGltZW5hZW9zLgoKRnVzY2UgdmVsIGp1c3RvIHNpdCBhbWV0
+IHF1YW0gbWFsZXN1YWRhIG9ybmFyZSBzaXQgYW1ldCBldCBhbnRlLiBOdWxsYW0g
+cmhvbmN1cyBwb3J0YSBzZW0gcXVpcyBtYWxlc3VhZGEuIENsYXNzIGFwdGVudCB0
+YWNpdGkgc29jaW9zcXUgYWQgbGl0b3JhIHRvcnF1ZW50IHBlciBjb251YmlhIG5v
+c3RyYSwgcGVyIGluY2VwdG9zIGhpbWVuYWVvcy4gRG9uZWMgYW50ZSBvZGlvLCB0
+aW5jaWR1bnQgYWMgbW9sbGlzIGluLCB1bHRyaWNlcyBuZWMgZHVpLiBOdW5jIGN1
+cnN1cyBtYWduYSBuZWMgcHVydXMgZnJpbmdpbGxhIGEgbW9sZXN0aWUgcHVydXMg
+bG9ib3J0aXMuIEZ1c2NlIHJ1dHJ1bSwgbG9yZW0gZWdldCB1bGxhbWNvcnBlciBm
+cmluZ2lsbGEsIGR1aSBsaWd1bGEgc29sbGljaXR1ZGluIHJpc3VzLCB2aXRhZSBw
+b3N1ZXJlIG5lcXVlIGZlbGlzIHZpdGFlIHF1YW0uIEN1cmFiaXR1ciBjb25kaW1l
+bnR1bSBsaWJlcm8gYXQgb3JjaSBhdWN0b3IgZXUgY29tbW9kbyBsaWJlcm8gc29s
+bGljaXR1ZGluLiBDcmFzIHNlZCBwdXJ1cyBtaSwgc2VkIGNvbnZhbGxpcyBuaWJo
+LiBOdWxsYW0gYWMgbG9yZW0gYSBpcHN1bSBsYWNpbmlhIHVsbGFtY29ycGVyIGlk
+IHF1aXMgdG9ydG9yLiBNb3JiaSBlbGVpZmVuZCwgbnVsbGEgdmVsIHZlbmVuYXRp
+cyBjb25kaW1lbnR1bSwgbGVjdHVzIHRvcnRvciB2ZW5lbmF0aXMgcmlzdXMsIGEg
+bHVjdHVzIGxhY3VzIGlwc3VtIHV0IHNhcGllbi4KCk1hdXJpcyBsYW9yZWV0IG51
+bmMgc2l0IGFtZXQgZW5pbSBkaWN0dW0gbG9ib3J0aXMuIE1hdXJpcyBydXRydW0s
+IGVsaXQgdXQgbW9sZXN0aWUgb3JuYXJlLCB0b3J0b3IgZXJvcyB2YXJpdXMgbnVu
+YywgdHJpc3RpcXVlIHBlbGxlbnRlc3F1ZSB0dXJwaXMgYXVndWUgaW4gYW50ZS4g
+QWVuZWFuIGZlbGlzIGR1aSwgZnJpbmdpbGxhIGluIGFsaXF1YW0gYXQsIG9ybmFy
+ZSB1dCBudWxsYS4gSW4gbWkgbnVuYywgc2VtcGVyIGluIGNvbmRpbWVudHVtIG5v
+biwgY29uZ3VlIGFjIG1hdXJpcy4gQ3VyYWJpdHVyIGltcGVyZGlldCByaG9uY3Vz
+IHNlbSwgbW9sZXN0aWUgYWRpcGlzY2luZyBpcHN1bSBzb2xsaWNpdHVkaW4gYS4g
+Vml2YW11cyB1dCBpcHN1bSBxdWlzIHR1cnBpcyBhbGlxdWV0IHRpbmNpZHVudCBh
+Y2N1bXNhbiBhYyBxdWFtLiBDdXJhYml0dXIgcG9ydHRpdG9yLCBtYXVyaXMgYWMg
+bHVjdHVzIHZpdmVycmEsIHB1cnVzIGVzdCBhZGlwaXNjaW5nIHNhcGllbiwgc2l0
+IGFtZXQgYWxpcXVhbSBxdWFtIG51bGxhIGF0IGVyYXQuIFZpdmFtdXMgdGVtcHVz
+LCBqdXN0byBhIHByZXRpdW0gZGljdHVtLCBpcHN1bSBudW5jIGxhb3JlZXQgdGVs
+bHVzLCBuZWMgdGVtcHVzIHNlbSBuaXNpIGFjIHF1YW0uIFZpdmFtdXMgaW4gbWFz
+c2EgZW5pbS4gUXVpc3F1ZSBuZWMgdG9ydG9yIHZpdGFlIG51bGxhIHVsdHJpY2Vz
+IGNvbnZhbGxpcy4gTnVsbGFtIHRvcnRvciBtYXVyaXMsIGF1Y3RvciB2aXRhZSB0
+ZW1wb3IgZXQsIGF1Y3RvciBuZWMgc2FwaWVuLiBRdWlzcXVlIHVsbGFtY29ycGVy
+IHZpdmVycmEgdmVuZW5hdGlzLiBNYWVjZW5hcyBxdWlzIGdyYXZpZGEgbWFzc2Eu
+IEludGVnZXIgdml0YWUganVzdG8gbGVjdHVzLCBhYyBtYWxlc3VhZGEgcXVhbS4g
+TWFlY2VuYXMgc2l0IGFtZXQgbmVxdWUgbnVsbGEsIG5lYyBpbXBlcmRpZXQgaXBz
+dW0uIFNlZCB0ZW1wdXMgYmliZW5kdW0gc2FwaWVuLCBub24gZnJpbmdpbGxhIG51
+bmMgZWxlbWVudHVtIGV1LiBOdW5jIGF1Y3RvciBhbGlxdWV0IGxlbywgYmliZW5k
+dW0gcHJldGl1bSBkaWFtIHBsYWNlcmF0IGFjLiBOYW0gaW4gZW5pbSBkdWkuIFNl
+ZCBldCBuaWJoIG5vbiBudW5jIHBsYWNlcmF0IHBoYXJldHJhLiBTZWQgb2RpbyBs
+ZW8sIGNvbmRpbWVudHVtIGV1IHN1c2NpcGl0IGV1LCBtb2xsaXMgZWdldCBuaXNp
+LgoKUHJvaW4gb3JuYXJlLCBpcHN1bSB2aXRhZSBsYW9yZWV0IHZhcml1cywgbGFj
+dXMgbGVvIHBoYXJldHJhIG1hdXJpcywgc2VkIGNvbnZhbGxpcyBsaWJlcm8gbWV0
+dXMgcmhvbmN1cyBvcmNpLiBNYXVyaXMgcnV0cnVtIGxlbyB2ZWwgYW50ZSBlZ2Vz
+dGFzIGEgYWRpcGlzY2luZyBlc3QgdmVuZW5hdGlzLiBJbiBldSBtaSB1dCBlbGl0
+IHRyaXN0aXF1ZSB2ZWhpY3VsYS4gTnVuYyBwb3N1ZXJlLCBlbmltIHF1aXMgc3Vz
+Y2lwaXQgYWNjdW1zYW4sIGVsaXQgbGVvIHNlbXBlciBudW5jLCBub24gbGFvcmVl
+dCBhbnRlIG5pYmggc2l0IGFtZXQgbWF1cmlzLiBBbGlxdWFtIGFjIHF1YW0gcXVp
+cyBuaXNsIHNvbGxpY2l0dWRpbiBtb2xlc3RpZSBpZCBhYyBudWxsYS4gSW50ZWdl
+ciBldSBkb2xvciBpcHN1bS4gUGhhc2VsbHVzIGludGVyZHVtIHZlaGljdWxhIHNl
+bXBlci4gU3VzcGVuZGlzc2UgbmVjIGFyY3UgYWMgZXN0IGlhY3VsaXMgdmVoaWN1
+bGEuIE1hZWNlbmFzIHNlbXBlciBsaWJlcm8gaWFjdWxpcyBsb3JlbSBmZXVnaWF0
+IGF1Y3Rvci4gQWxpcXVhbSBibGFuZGl0IHNlbXBlciBibGFuZGl0LiBVdCBlZ2Vz
+dGFzIGVyb3Mgc2VkIG5pc2kgZGFwaWJ1cyBhIHNlbXBlciBtZXR1cyBkYXBpYnVz
+LiBNb3JiaSB2dWxwdXRhdGUgbGFvcmVldCB2ZWxpdCwgZXUgYmliZW5kdW0gYXJj
+dSBjb21tb2RvIG5vbi4gTWFlY2VuYXMgZmVsaXMgbnVuYywgdm9sdXRwYXQgaWQg
+dmVzdGlidWx1bSB2aXRhZSwgdmVzdGlidWx1bSB2aXRhZSBhbnRlLgoKU2VkIG51
+bmMgaXBzdW0sIGF1Y3RvciB2ZWwgZmV1Z2lhdCBzaXQgYW1ldCwgaW50ZXJkdW0g
+YXQgbGlndWxhLiBNYXVyaXMgcXVpcyBuaXNpIGVnZXQgbGVjdHVzIGdyYXZpZGEg
+c2VtcGVyIGluIHF1aXMgZW5pbS4gTnVsbGEgYXVjdG9yIGVsZW1lbnR1bSBqdXN0
+bywgbm9uIGJpYmVuZHVtIGR1aSBmZXJtZW50dW0gYWMuIEZ1c2NlIGxvcmVtIGF1
+Z3VlLCBjb21tb2RvIG5vbiB0aW5jaWR1bnQgc2l0IGFtZXQsIGFjY3Vtc2FuIHNl
+ZCBtZXR1cy4gTmFtIHNhcGllbiBlbmltLCBkaWduaXNzaW0gZXQgdmFyaXVzIGV1
+LCBsdWN0dXMgYXQgb3JjaS4gTnVsbGFtIGxpYmVybyBvcmNpLCBiaWJlbmR1bSBh
+IGxhY2luaWEgYWMsIHZ1bHB1dGF0ZSBmYXVjaWJ1cyBtaS4gTW9yYmkgY29uZGlt
+ZW50dW0gZmVybWVudHVtIGRpZ25pc3NpbS4gTG9yZW0gaXBzdW0gZG9sb3Igc2l0
+IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdC4gUXVpc3F1ZSBldCBu
+ZXF1ZSBlcmF0LCB1dCB2b2x1dHBhdCBsZW8uIFZlc3RpYnVsdW0gdmVsIGxpZ3Vs
+YSBuZXF1ZS4gTnVuYyBwaGFyZXRyYSBsaWJlcm8gaW4gbWF1cmlzIGRhcGlidXMg
+aW4gbGFvcmVldCBkdWkgbHVjdHVzLiBQaGFzZWxsdXMgdmVsaXQgbmlzaSwgZGlj
+dHVtIGF0IHZvbHV0cGF0IG5lYywgaGVuZHJlcml0IGZhY2lsaXNpcyBlc3QuIFN1
+c3BlbmRpc3NlIG1hdXJpcyBwdXJ1cywgZGlnbmlzc2ltIHNpdCBhbWV0IHRpbmNp
+ZHVudCBhYywgaWFjdWxpcyBpZCBzZW0uIER1aXMgcmlzdXMganVzdG8sIGZyaW5n
+aWxsYSBhdCB2dWxwdXRhdGUgYXQsIGxvYm9ydGlzIG5vbiBhcmN1LiBBbGlxdWFt
+IGVyYXQgdm9sdXRwYXQuCgpWaXZhbXVzIGxlY3R1cyBtaSwgdWxsYW1jb3JwZXIg
+ZXQgZmV1Z2lhdCBzaXQgYW1ldCwgZ3JhdmlkYSBxdWlzIHZlbGl0LiBDcmFzIHRp
+bmNpZHVudCBtZXR1cyByaXN1cywgZWdldCB0cmlzdGlxdWUgYXJjdS4gTnVuYyBl
+Z2V0IGxlbyBhIGVsaXQgdGVtcG9yIHBvcnR0aXRvci4gQ3VtIHNvY2lpcyBuYXRv
+cXVlIHBlbmF0aWJ1cyBldCBtYWduaXMgZGlzIHBhcnR1cmllbnQgbW9udGVzLCBu
+YXNjZXR1ciByaWRpY3VsdXMgbXVzLiBQcmFlc2VudCB0ZW1wdXMgbnVuYyBlZ2V0
+IG5pYmggY29uc2VjdGV0dXIgYWMgY29udmFsbGlzIGVuaW0gc2FnaXR0aXMuIEFs
+aXF1YW0gaXBzdW0gdXJuYSwgZmF1Y2lidXMgYWMgdHJpc3RpcXVlIHZlbCwgbGFv
+cmVldCBhIGxlby4gUGhhc2VsbHVzIGNvbmRpbWVudHVtIGVuaW0gZWdldCBpcHN1
+bSB2b2x1dHBhdCB1dCBhY2N1bXNhbiBuaWJoIHBlbGxlbnRlc3F1ZS4gTnVsbGFt
+IGxhb3JlZXQsIHRvcnRvciBpbiB1bGxhbWNvcnBlciBmcmluZ2lsbGEsIGR1aSBv
+ZGlvIHNjZWxlcmlzcXVlIHB1cnVzLCB1dCBpYWN1bGlzIGVyYXQgcmlzdXMgYWMg
+bnVsbGEuIEFsaXF1YW0gZWdlc3RhcyBsYWNpbmlhIGFsaXF1YW0uIE1hdXJpcyBi
+bGFuZGl0LCB0b3J0b3IgcXVpcyBtb2xsaXMgcGVsbGVudGVzcXVlLCBudWxsYSBt
+YWduYSB2ZXN0aWJ1bHVtIGVyYXQsIGV0IHRyaXN0aXF1ZSBsaWd1bGEgc2VtIGVn
+ZXQgdGVsbHVzLiBWZXN0aWJ1bHVtIGZlbGlzIHRvcnRvciwgc2VtcGVyIGluIHN1
+c2NpcGl0IGVnZXQsIHRpbmNpZHVudCB2ZWwgdmVsaXQuCgpNYWVjZW5hcyBzZW0g
+dGVsbHVzLCBiaWJlbmR1bSBhYyBjdXJzdXMgdXQsIGZldWdpYXQgdmVsIHRvcnRv
+ci4gU2VkIHZlbmVuYXRpcyBmZWxpcyBhIGF1Z3VlIHByZXRpdW0gZXUgbGFvcmVl
+dCBkdWkgbWF0dGlzLiBNYWVjZW5hcyByaG9uY3VzIHZlc3RpYnVsdW0gbWFnbmEg
+ZWdldCBjb252YWxsaXMuIE51bGxhIGZhY2lsaXNpLiBGdXNjZSBpbnRlcmR1bSBk
+aWN0dW0gbGVvIG5lYyBhZGlwaXNjaW5nLiBOdW5jIHZpdGFlIGxvcmVtIHF1YW0u
+IEluIHVsdHJpY2llcyBzZW0gZXUgbGlndWxhIGVsZWlmZW5kIGluIHNhZ2l0dGlz
+IGFyY3UgcnV0cnVtLiBOdWxsYW0gZGlhbSBqdXN0bywgZmVybWVudHVtIG5lYyBs
+dWN0dXMgZXUsIGltcGVyZGlldCBuZWMgbGliZXJvLiBJbnRlZ2VyIGhlbmRyZXJp
+dCB0ZW1wb3IgZGFwaWJ1cy4gU3VzcGVuZGlzc2UgcG90ZW50aS4gRG9uZWMgdXQg
+YXJjdSBuZWMgbG9yZW0gbHVjdHVzIHZhcml1cyB2aXRhZSBhIG51bmMuIEZ1c2Nl
+IGEgc2FwaWVuIGxhb3JlZXQgdGVsbHVzIGFkaXBpc2NpbmcgdmVzdGlidWx1bS4g
+QWxpcXVhbSB2YXJpdXMgZGljdHVtIG1pIGVnZXQgZmV1Z2lhdC4gRXRpYW0gc2Vk
+IGxlbyBldCBtYXVyaXMgZmV1Z2lhdCBldWlzbW9kLiBTdXNwZW5kaXNzZSBxdWlz
+IG1hZ25hIG1hZ25hLCBhIHRpbmNpZHVudCBvcmNpLiBMb3JlbSBpcHN1bSBkb2xv
+ciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LiBEb25lYyBu
+aXNpIHR1cnBpcywgYWxpcXVldCBldSBzb2xsaWNpdHVkaW4gdml0YWUsIGxhb3Jl
+ZXQgbmVjIG5pc2kuIFZlc3RpYnVsdW0gdHJpc3RpcXVlLCB2ZWxpdCB2aXRhZSB1
+bGxhbWNvcnBlciBjb25kaW1lbnR1bSwgbGVjdHVzIG9yY2kgcG9ydHRpdG9yIGFy
+Y3UsIGV1IHBsYWNlcmF0IGZlbGlzIHB1cnVzIG5lYyBvcmNpLiBOYW0gaXBzdW0g
+YXVndWUsIHNjZWxlcmlzcXVlIGF0IGxhY2luaWEgc2l0IGFtZXQsIG1hdHRpcyBh
+IGVyYXQuIFBoYXNlbGx1cyBhIG1hZ25hIHF1aXMgbGFjdXMgdmFyaXVzIHBsYWNl
+cmF0LgoKUHJvaW4gb3JuYXJlIHZpdmVycmEgcGxhY2VyYXQuIFNlZCBpYWN1bGlz
+IHVsdHJpY2VzIG1hZ25hLCBjb252YWxsaXMgYXVjdG9yIG1pIHRyaXN0aXF1ZSB2
+ZWwuIFBlbGxlbnRlc3F1ZSBhYyBuaXNpIHNpdCBhbWV0IG5pc2kgYWxpcXVhbSB0
+aW5jaWR1bnQgYWMgdXQgaXBzdW0uIFByYWVzZW50IGEgdGVsbHVzIG5vbiBudW5j
+IGlhY3VsaXMgYWRpcGlzY2luZy4gUXVpc3F1ZSBmYWNpbGlzaXMganVzdG8gZWdl
+dCBtZXR1cyBncmF2aWRhIHVsbGFtY29ycGVyLiBEb25lYyBzYWdpdHRpcywgdG9y
+dG9yIGV1aXNtb2QgYWxpcXVhbSBpbnRlcmR1bSwgYXVndWUgYXVndWUgbGFvcmVl
+dCBlbGl0LCBpbiBjb21tb2RvIHVybmEgbGFjdXMgdmVsIGVzdC4gVmVzdGlidWx1
+bSBkdWkgbmliaCwgdmFyaXVzIGEgaW50ZXJkdW0gYSwgcG9ydGEgdXQgbWV0dXMu
+IFV0IGxlY3R1cyB1cm5hLCBwb3N1ZXJlIGluIGx1Y3R1cyBldCwgcnV0cnVtIGEg
+ZXJhdC4gU3VzcGVuZGlzc2UgY3Vyc3VzLCB0b3J0b3Igdml0YWUgc2NlbGVyaXNx
+dWUgdHJpc3RpcXVlLCBkb2xvciBlcmF0IGRpZ25pc3NpbSBsZWN0dXMsIG5lYyBz
+b2RhbGVzIG1hdXJpcyB0ZWxsdXMgdmVsIHB1cnVzLiBEdWlzIGVsaXQgbWF1cmlz
+LCBhY2N1bXNhbiB1dCBwb3N1ZXJlIHZ1bHB1dGF0ZSwgbWFsZXN1YWRhIGV0IGFu
+dGUuIE1vcmJpIGJsYW5kaXQgbGFjdXMgYXQgbWF1cmlzIHNhZ2l0dGlzIHJ1dHJ1
+bS4gUGhhc2VsbHVzIGRvbG9yIG1hdXJpcywgY29uc2VxdWF0IHZlbCBmYXVjaWJ1
+cyB2ZWwsIHB1bHZpbmFyIG5lYyBhcmN1LiBOYW0gY29tbW9kbywgcHVydXMgdml0
+YWUgbW9sbGlzIHNjZWxlcmlzcXVlLCBzYXBpZW4gdHVycGlzIGJpYmVuZHVtIGFu
+dGUsIGV1IGZhY2lsaXNpcyBpcHN1bSBpcHN1bSBuZWMgbmVxdWUuIENsYXNzIGFw
+dGVudCB0YWNpdGkgc29jaW9zcXUgYWQgbGl0b3JhIHRvcnF1ZW50IHBlciBjb251
+YmlhIG5vc3RyYSwgcGVyIGluY2VwdG9zIGhpbWVuYWVvcy4gUGVsbGVudGVzcXVl
+IGNvbnZhbGxpcyBkaWduaXNzaW0gbWFnbmEgc2l0IGFtZXQgdnVscHV0YXRlLiBT
+ZWQgY29uZGltZW50dW0gdmVoaWN1bGEgbWF0dGlzLiBWaXZhbXVzIHRpbmNpZHVu
+dCBmYWNpbGlzaXMgaXBzdW0sIGV0IHBvcnRhIHJpc3VzIHVsdHJpY2VzIHZpdGFl
+LiBRdWlzcXVlIG5vbiBjb25zZXF1YXQgbmlzbC4gQ3VyYWJpdHVyIGp1c3RvIG51
+bGxhLCBiaWJlbmR1bSBpbiB2ZW5lbmF0aXMgZWdldCwgcG9zdWVyZSBlZ2V0IHNl
+bS4KClBlbGxlbnRlc3F1ZSBzaXQgYW1ldCByaXN1cyB2ZWwgbGliZXJvIGV1aXNt
+b2Qgc3VzY2lwaXQgdmVsIHNpdCBhbWV0IG1ldHVzLiBEb25lYyBncmF2aWRhLCBs
+ZW8gcXVpcyBpbnRlcmR1bSBjb25ndWUsIHF1YW0gbGVjdHVzIHRyaXN0aXF1ZSBu
+aXNpLCBldSB1bHRyaWNlcyBzZW0gdHVycGlzIHRpbmNpZHVudCBlc3QuIFByYWVz
+ZW50IHB1bHZpbmFyIGNvbnZhbGxpcyB1cm5hIHZpdGFlIGlhY3VsaXMuIFV0IGNv
+bnZhbGxpcyBwdWx2aW5hciBmYWNpbGlzaXMuIEN1bSBzb2NpaXMgbmF0b3F1ZSBw
+ZW5hdGlidXMgZXQgbWFnbmlzIGRpcyBwYXJ0dXJpZW50IG1vbnRlcywgbmFzY2V0
+dXIgcmlkaWN1bHVzIG11cy4gQWVuZWFuIGV0IGVyYXQgZG9sb3IsIGFjIHBvc3Vl
+cmUgbWV0dXMuIFNlZCBjb25kaW1lbnR1bSBhZGlwaXNjaW5nIGlwc3VtLCBlZ2V0
+IHVsdHJpY2llcyBqdXN0byBmZXJtZW50dW0gc2l0IGFtZXQuIE5hbSBmZXJtZW50
+dW0gbGVvIHZpdGFlIGxlY3R1cyBtYXR0aXMgaW1wZXJkaWV0LiBFdGlhbSBkb2xv
+ciBsYWN1cywgbWF0dGlzIGF0IHRlbXB1cyBldSwgY29uZ3VlIHZlbCB2ZWxpdC4g
+UHJhZXNlbnQgYmxhbmRpdCB2aXZlcnJhIHJob25jdXMuIFBlbGxlbnRlc3F1ZSB2
+aXRhZSBsYWN1cyBsZW8uCgpRdWlzcXVlIGlkIGxvcmVtIHF1aXMgdHVycGlzIGx1
+Y3R1cyBjb25zZXF1YXQgaW4gc2l0IGFtZXQgZXN0LiBDdXJhYml0dXIgdHJpc3Rp
+cXVlLCBhcmN1IGEgY3Vyc3VzIHZvbHV0cGF0LCBudWxsYSBlc3QgYXVjdG9yIHRl
+bGx1cywgbmVjIGZhY2lsaXNpcyBuaWJoIGF1Z3VlIG5lYyBvcmNpLiBNYXVyaXMg
+ZmV1Z2lhdCwgZXN0IGFjIGF1Y3RvciBldWlzbW9kLCBvZGlvIG5pYmggYWNjdW1z
+YW4gbmVxdWUsIGluIGZlcm1lbnR1bSBvcmNpIG1hc3NhIHZpdGFlIGF1Z3VlLiBQ
+ZWxsZW50ZXNxdWUgcXVpcyBtaSBhcmN1LCBub24gaW1wZXJkaWV0IGlwc3VtLiBO
+dWxsYW0gZGFwaWJ1cyBoZW5kcmVyaXQgZmVsaXMsIGFjIHVsbGFtY29ycGVyIHRv
+cnRvciBwaGFyZXRyYSBldC4gTnVsbGEgYWNjdW1zYW4sIGxhY3VzIHNlZCBlbGVt
+ZW50dW0gaW50ZXJkdW0sIG1pIGFyY3UgdmVzdGlidWx1bSBuZXF1ZSwgZWdldCBm
+YWNpbGlzaXMgZXJvcyBudW5jIGF0IGVsaXQuIFN1c3BlbmRpc3NlIGV1IG1hdXJp
+cyBzdXNjaXBpdCBwdXJ1cyBkaWN0dW0gaWFjdWxpcy4gUHJhZXNlbnQgc2l0IGFt
+ZXQgbnVuYyBuZWMgbGFjdXMgZmFjaWxpc2lzIHBvcnRhLiBNYXVyaXMgbnVuYyBp
+cHN1bSwgc29sbGljaXR1ZGluIHNlZCBwb3N1ZXJlIGluLCBmZXJtZW50dW0gYWMg
+dGVsbHVzLiBOdWxsYSBmcmluZ2lsbGEgc2NlbGVyaXNxdWUgZXJhdCBpZCBwbGFj
+ZXJhdC4KCkludGVnZXIgZnJpbmdpbGxhIGZlcm1lbnR1bSB0dXJwaXMgZWdldCBs
+YW9yZWV0LiBTdXNwZW5kaXNzZSBwb3N1ZXJlIGVzdCBhYyBlcm9zIGNvbnNlcXVh
+dCBub24gZGlnbmlzc2ltIHB1cnVzIGFsaXF1ZXQuIE1hdXJpcyBwcmV0aXVtIHZl
+bmVuYXRpcyBwdWx2aW5hci4gVXQgbmVxdWUgbWV0dXMsIGN1cnN1cyBpZCBkaWdu
+aXNzaW0gc2l0IGFtZXQsIGNvbmRpbWVudHVtIGVnZXQgZXJvcy4gQWxpcXVhbSBl
+cmF0IHZvbHV0cGF0LiBFdGlhbSBwb3J0YSBhbGlxdWFtIG5pc2ksIHNpdCBhbWV0
+IGNvbnNlY3RldHVyIHB1cnVzIGxvYm9ydGlzIG5lYy4gVmVzdGlidWx1bSB0aW5j
+aWR1bnQgcGxhY2VyYXQgcXVhbSBhYyBjdXJzdXMuIFByYWVzZW50IGxhb3JlZXQg
+ZXJvcyBub24gbmVxdWUgcmhvbmN1cyBhYyBoZW5kcmVyaXQgZHVpIHRlbXBvci4g
+Q3JhcyBzb2RhbGVzIGVsaXQgdml0YWUgdXJuYSBpbnRlcmR1bSBhY2N1bXNhbi4g
+TnVsbGFtIG5lYyBsYW9yZWV0IGFyY3UuIERvbmVjIGZyaW5naWxsYSBzY2VsZXJp
+c3F1ZSByaXN1cywgbmVjIHNhZ2l0dGlzIG9kaW8gYWNjdW1zYW4gbm9uLiBRdWlz
+cXVlIHJ1dHJ1bSBzb2RhbGVzIG9kaW8uIE1hdXJpcyBmYWNpbGlzaXMsIG5pYmgg
+cXVpcyBlbGVpZmVuZCBzb2xsaWNpdHVkaW4sIGR1aSBvZGlvIGF1Y3RvciBvcmNp
+LCBldSBwb3J0dGl0b3IgYXJjdSBudW5jIGFjIGxpZ3VsYS4gSW4gc2VkIG1pIG5l
+cXVlLiBNYXVyaXMgZWdlc3RhcywgdGVsbHVzIHNlZCBldWlzbW9kIGVnZXN0YXMs
+IGVyb3MgbGlndWxhIGdyYXZpZGEgcmlzdXMsIGF0IGFsaXF1YW0gbGVvIGxpZ3Vs
+YSB1dCBvZGlvLiBBbGlxdWFtIHZlbCB2YXJpdXMgc2FwaWVuLiBFdGlhbSBldSBs
+ZW8gZXJvcywgcXVpcyBjb25zZXF1YXQgbWkuIE51bGxhbSBzb2RhbGVzIHBlbGxl
+bnRlc3F1ZSBvZGlvIG5vbiB0cmlzdGlxdWUuCgpBbGlxdWFtIGVyYXQgdm9sdXRw
+YXQuIEFlbmVhbiBsYW9yZWV0LCBudW5jIGVnZXQgbW9sbGlzIGF1Y3RvciwgbWkg
+bGlndWxhIGxvYm9ydGlzIGR1aSwgYSB1bHRyaWNpZXMgcXVhbSB2ZWxpdCB1dCBz
+YXBpZW4uIFV0IHZlbCBpYWN1bGlzIG5pYmguIEV0aWFtIHV0IHJpc3VzIGR1aS4g
+TWF1cmlzIGF0IGp1c3RvIGZlbGlzLiBNYXVyaXMgaWFjdWxpcyBiaWJlbmR1bSB2
+ZWxpdCBlZ2V0IGRhcGlidXMuIEFsaXF1YW0gZXJhdCB2b2x1dHBhdC4gTnVsbGEg
+c2l0IGFtZXQgb3JjaSBhbnRlLCBhIGVnZXN0YXMgc2FwaWVuLiBNb3JiaSB1bGxh
+bWNvcnBlciBsZWN0dXMgdmVsIG1hdXJpcyB2ZXN0aWJ1bHVtIG1hbGVzdWFkYS4g
+Q3JhcyB2ZWwgbGVjdHVzIGlwc3VtLiBEdWlzIGVnZXN0YXMgdmVuZW5hdGlzIHBy
+ZXRpdW0uIE1vcmJpIHNlZCB0b3J0b3IgZXUgb2RpbyBzdXNjaXBpdCBydXRydW0u
+IFNlZCB1bHRyaWNlcyBtYXNzYSBmZXJtZW50dW0gbGFjdXMgdGVtcHVzIHBoYXJl
+dHJhLiBJbiBldCBtYXVyaXMgcXVhbSwgaWQgZnJpbmdpbGxhIG1ldHVzLgoKQWVu
+ZWFuIG5lYyB2ZWxpdCBkdWkuIE51bGxhbSBlZ2VzdGFzIG1pIGV1IGlwc3VtIHVs
+dHJpY2VzIGVnZXQgdmVuZW5hdGlzIHZlbGl0IGxhY2luaWEuIFZpdmFtdXMgbmVj
+IGxpZ3VsYSBzaXQgYW1ldCBqdXN0byBhZGlwaXNjaW5nIHZhcml1cyB1dCB1dCBw
+dXJ1cy4gQWVuZWFuIGx1Y3R1cyBuaXNsIGVnZXQgbmlzbCB1bHRyaWNlcyBpbXBl
+cmRpZXQuIFZpdmFtdXMgYSBuaWJoIGF0IGVsaXQgc29kYWxlcyBldWlzbW9kLiBB
+ZW5lYW4gaGVuZHJlcml0IG5pc2kgdmVsIG1ldHVzIGNvbnZhbGxpcyB2dWxwdXRh
+dGUuIE1vcmJpIHVybmEgdHVycGlzLCB0ZW1wb3IgYXQgcHVsdmluYXIgdmVsLCBj
+b25zZWN0ZXR1ciBldSBtZXR1cy4gTmFtIGZyaW5naWxsYSBtYXVyaXMgc2VkIG9y
+Y2kgcG9ydGEgYWMgbW9sbGlzIG51bGxhIGJsYW5kaXQuIEluIHVsdHJpY2llcyB2
+ZWxpdCBhdWN0b3IgYXJjdSBncmF2aWRhIGZlcm1lbnR1bS4gVXQgdmVsIG5lcXVl
+IGV0IHZlbGl0IHByZXRpdW0gYmxhbmRpdCBldSBpbiBhbnRlLiBWZXN0aWJ1bHVt
+IHV0IGR1aSBtYWduYS4gTmFtIGV0IGxhY3VzIGlwc3VtLCBzZWQgdGluY2lkdW50
+IHRlbGx1cy4gRG9uZWMgZWxlbWVudHVtIGVsZWlmZW5kIHRvcnRvciB1dCB2ZXN0
+aWJ1bHVtLgoKRXRpYW0gdm9sdXRwYXQgbWV0dXMgc2VkIGxvcmVtIGRhcGlidXMg
+bGFjaW5pYS4gQ2xhc3MgYXB0ZW50IHRhY2l0aSBzb2Npb3NxdSBhZCBsaXRvcmEg
+dG9ycXVlbnQgcGVyIGNvbnViaWEgbm9zdHJhLCBwZXIgaW5jZXB0b3MgaGltZW5h
+ZW9zLiBWZXN0aWJ1bHVtIGEgYmxhbmRpdCBuaWJoLiBQaGFzZWxsdXMgZXQgbG9y
+ZW0gdmVsIGVyb3MgaWFjdWxpcyB1bHRyaWNpZXMuIFNlZCBzaXQgYW1ldCBtYWdu
+YSBzaXQgYW1ldCBlc3QgbW9sZXN0aWUgcHJldGl1bSBzZWQgbmVjIG9yY2kuIFN1
+c3BlbmRpc3NlIHBvdGVudGkuIE51bGxhIGNvbnZhbGxpcyBhbnRlIHZpdGFlIGRv
+bG9yIGNvbnZhbGxpcyBub24gdmFyaXVzIG5lcXVlIHBlbGxlbnRlc3F1ZS4gQ3Jh
+cyBldWlzbW9kIG1hc3NhIGEgZXJvcyBhbGlxdWFtIHVsdHJpY2VzLiBTZWQgdml0
+YWUgcHVydXMgdXQgbmlzaSBmYXVjaWJ1cyBmZXVnaWF0LiBQcmFlc2VudCBhIGxl
+Y3R1cyBldCB2ZWxpdCBlZ2VzdGFzIHBoYXJldHJhIGV0IHNpdCBhbWV0IGRvbG9y
+LiBEdWlzIHF1aXMgbGFjaW5pYSBvZGlvLiBTZWQgc2VkIGVuaW0gbGVvLiBEb25l
+YyBwdWx2aW5hciBzb2xsaWNpdHVkaW4gbmVxdWUgdXQgZnJpbmdpbGxhLiBFdGlh
+bSBtYWxlc3VhZGEgbmlzbCBkaWN0dW0gZXJhdCBkaWN0dW0gZGFwaWJ1cy4gRnVz
+Y2UgZmFjaWxpc2lzLCBtaSB2ZWwgdmFyaXVzIG9ybmFyZSwgdG9ydG9yIG51bGxh
+IG9ybmFyZSBlcm9zLCBhdCBldWlzbW9kIG5pYmggbmlzaSBldCBhdWd1ZS4gTWFl
+Y2VuYXMgZWdldCBzYXBpZW4gbWkuIFNlZCBzZWQgbnVsbGEgbGVjdHVzLiBOdW5j
+IGRpZ25pc3NpbSBsdWN0dXMgbGVjdHVzLCBhdCBhbGlxdWV0IGRvbG9yIHZlbmVu
+YXRpcyBxdWlzLiBVdCBwdWx2aW5hciwgdG9ydG9yIHNpdCBhbWV0IHNjZWxlcmlz
+cXVlIHBoYXJldHJhLCBmZWxpcyBsZW8gcHJldGl1bSBmZWxpcywgZXQgbWF0dGlz
+IHNhcGllbiBtYXVyaXMgbWF0dGlzIG51bGxhLgoKU3VzcGVuZGlzc2UgcG90ZW50
+aS4gTnVuYyBxdWlzIHB1bHZpbmFyIHF1YW0uIER1aXMgZGFwaWJ1cyBiaWJlbmR1
+bSBmYWNpbGlzaXMuIE51bGxhbSBsb2JvcnRpcyBlcmF0IHNpdCBhbWV0IHF1YW0g
+YWRpcGlzY2luZyBldSBtb2xlc3RpZSB0b3J0b3IgYWNjdW1zYW4uIFByYWVzZW50
+IHB1bHZpbmFyIGVuaW0gZXUganVzdG8gZGFwaWJ1cyBpbiB2aXZlcnJhIG1hdXJp
+cyBjb21tb2RvLiBFdGlhbSBtb2xsaXMgY29uc2VxdWF0IHZlbGl0LCBub24gbW9s
+ZXN0aWUgZXJvcyBjb25kaW1lbnR1bSBhYy4gRXRpYW0gdml0YWUgZXJhdCBuZWMg
+ZWxpdCBjb25ndWUgY29uZGltZW50dW0gYSB1bGxhbWNvcnBlciB0dXJwaXMuIFZl
+c3RpYnVsdW0gYW50ZSBpcHN1bSBwcmltaXMgaW4gZmF1Y2lidXMgb3JjaSBsdWN0
+dXMgZXQgdWx0cmljZXMgcG9zdWVyZSBjdWJpbGlhIEN1cmFlOyBWZXN0aWJ1bHVt
+IHZpdGFlIGxvcmVtIGV0IGxlY3R1cyBjb252YWxsaXMgY29uc2VjdGV0dXIuIFN1
+c3BlbmRpc3NlIHNpdCBhbWV0IGZlbGlzIG5vbiBtZXR1cyBtYXR0aXMgbG9ib3J0
+aXMuIE1vcmJpIGV1IG51bGxhIHRvcnRvci4gTWFlY2VuYXMgaGVuZHJlcml0IG9y
+Y2kgc2l0IGFtZXQgbGlndWxhIGludGVyZHVtIGV0IGlhY3VsaXMgbnVsbGEgcGxh
+Y2VyYXQuIE5hbSBkaWN0dW0gbGFjdXMgYXQgYXJjdSByaG9uY3VzIGVsZWlmZW5k
+LiBJbiBoYWMgaGFiaXRhc3NlIHBsYXRlYSBkaWN0dW1zdC4KCkN1cmFiaXR1ciBh
+YyB2ZW5lbmF0aXMgZHVpLiBDbGFzcyBhcHRlbnQgdGFjaXRpIHNvY2lvc3F1IGFk
+IGxpdG9yYSB0b3JxdWVudCBwZXIgY29udWJpYSBub3N0cmEsIHBlciBpbmNlcHRv
+cyBoaW1lbmFlb3MuIEludGVnZXIgYXVjdG9yIHBvcnRhIG5lcXVlIHZlbCBwZWxs
+ZW50ZXNxdWUuIEFlbmVhbiBhYyBwdXJ1cyBxdWlzIHZlbGl0IGlhY3VsaXMgcG9y
+dHRpdG9yIGluIGluIHNlbS4gRHVpcyB0aW5jaWR1bnQgcmlzdXMgaW4gcmlzdXMg
+ZmF1Y2lidXMgYSBhbGlxdWFtIGRpYW0gYXVjdG9yLiBOdWxsYW0gc2VtIGF1Z3Vl
+LCBhZGlwaXNjaW5nIHNlZCB0aW5jaWR1bnQgcXVpcywgbW9sZXN0aWUgc2VkIGxp
+YmVyby4gVmVzdGlidWx1bSBjb21tb2RvIG9kaW8gdGVtcG9yIG51bGxhIG9ybmFy
+ZSBwbGFjZXJhdC4gTW9yYmkgZG9sb3IgbWFzc2EsIGJpYmVuZHVtIGluIGVsZWlm
+ZW5kIGlkLCBtb2xlc3RpZSB1dCBqdXN0by4gUXVpc3F1ZSB2YXJpdXMgbnVuYyBz
+aXQgYW1ldCBuaXNsIGRhcGlidXMgZmFjaWxpc2lzLiBEb25lYyB1dCBlcmF0IG1p
+LiBEdWlzIGVnZXQgY29uc2VjdGV0dXIgbWFnbmEuIE1hdXJpcyBlZ2VzdGFzIHNl
+bXBlciBlZ2VzdGFzLiBTZWQgZXQganVzdG8gc2VkIG51bGxhIGJsYW5kaXQgYWNj
+dW1zYW4gYXQgbm9uIGxlby4gSW4gZWdldCBlc3QgaXBzdW0uIE51bGxhIHRlbGx1
+cyBsaWd1bGEsIGFsaXF1ZXQgc2l0IGFtZXQgdnVscHV0YXRlIHZpdGFlLCBtb2xs
+aXMgZXUgZXJhdC4KCkFlbmVhbiBhYyBhdWd1ZSBvZGlvLiBQcm9pbiBtb2xsaXMs
+IGRvbG9yIHV0IGZldWdpYXQgc3VzY2lwaXQsIGR1aSBhbnRlIGNvbnNlY3RldHVy
+IG9kaW8sIHZpdGFlIGNvbmRpbWVudHVtIHRlbGx1cyBudWxsYSBhYyBmZWxpcy4g
+UGVsbGVudGVzcXVlIGVnZXN0YXMgdWx0cmljZXMgbnVuYywgZXUgc2FnaXR0aXMg
+c2FwaWVuIGV1aXNtb2Qgdml0YWUuIEludGVnZXIgc29sbGljaXR1ZGluIGZldWdp
+YXQgbGVvIG5lYyBjb25zZWN0ZXR1ci4gUHJhZXNlbnQgc2l0IGFtZXQgc2VtIGVy
+YXQsIG5lYyB2b2x1dHBhdCBsYWN1cy4gRXRpYW0gYSBsYWN1cyBudWxsYSwgbm9u
+IGludGVyZHVtIGVyYXQuIE1hZWNlbmFzIHF1aXMgZGljdHVtIGxlY3R1cy4gUGVs
+bGVudGVzcXVlIGFjIGxpYmVybyB2ZWwgZWxpdCB0cmlzdGlxdWUgc2VtcGVyLiBR
+dWlzcXVlIGV1IHN1c2NpcGl0IGR1aS4gSW4gaGFjIGhhYml0YXNzZSBwbGF0ZWEg
+ZGljdHVtc3QuIENyYXMgZXUgcG9ydGEgcXVhbS4gQ3VyYWJpdHVyIHBoYXJldHJh
+LCBmZWxpcyB1dCByaG9uY3VzIHRpbmNpZHVudCwgbnVsbGEgYXVndWUgcGxhY2Vy
+YXQgc2FwaWVuLCBpZCB2ZXN0aWJ1bHVtIG5pc2wgbmVxdWUgYXQgZGlhbS4KClF1
+aXNxdWUgbGFvcmVldCBkYXBpYnVzIGx1Y3R1cy4gTW9yYmkgZXJhdCBvZGlvLCBt
+YXR0aXMgc2l0IGFtZXQgdWx0cmljaWVzIGV1LCBpbnRlcmR1bSBldCBudWxsYS4g
+TmFtIHZ1bHB1dGF0ZSwgbWV0dXMgbm9uIGVsZW1lbnR1bSBoZW5kcmVyaXQsIHVy
+bmEgcHVydXMgcGhhcmV0cmEgZWxpdCwgdml0YWUgc29kYWxlcyBwdXJ1cyBsaWd1
+bGEgbm9uIHF1YW0uIEV0aWFtIGlkIGxpZ3VsYSB0aW5jaWR1bnQgbGVvIHBlbGxl
+bnRlc3F1ZSBibGFuZGl0LiBVdCBhbnRlIHVybmEsIHZlc3RpYnVsdW0gc2VkIGVs
+ZW1lbnR1bSBhYywgcGVsbGVudGVzcXVlIHNpdCBhbWV0IHRvcnRvci4gRnVzY2Ug
+dmVuZW5hdGlzIGNvbW1vZG8gYW50ZSBhdCB0ZW1wb3IuIE51bGxhIGluIG9kaW8g
+bGVjdHVzLiBEb25lYyBsYWNpbmlhIGRhcGlidXMgdmVoaWN1bGEuIFN1c3BlbmRp
+c3NlIHNjZWxlcmlzcXVlIG9kaW8gdXQgbG9yZW0gZGlnbmlzc2ltIGlkIHByZXRp
+dW0gdG9ydG9yIHN1c2NpcGl0LiBOdWxsYW0gZmVsaXMgYW50ZSwgZmVybWVudHVt
+IGVnZXQgc29sbGljaXR1ZGluIHNpdCBhbWV0LCBjb21tb2RvIGF0IGVuaW0uIERv
+bmVjIGFsaXF1ZXQgbWF1cmlzIGluIGVsaXQgYXVjdG9yIGF0IGNvbnZhbGxpcyBx
+dWFtIHVsbGFtY29ycGVyLiBEdWlzIGVuaW0gbmliaCwgdnVscHV0YXRlIGluIGZh
+Y2lsaXNpcyBpZCwgYWRpcGlzY2luZyBpbnRlcmR1bSBsYWN1cy4gQWVuZWFuIHNv
+bGxpY2l0dWRpbiBjb25ndWUgY29uc2VjdGV0dXIuIFByYWVzZW50IGxvYm9ydGlz
+IG5pc2wgZXQgbWV0dXMgZXVpc21vZCBjb25ndWUuIFN1c3BlbmRpc3NlIGlkIHRl
+bXB1cyBpcHN1bS4KCkRvbmVjIGV1IGF1Y3RvciBzYXBpZW4uIEluIHBsYWNlcmF0
+IGF1Y3RvciBtYXNzYSB1dCBwbGFjZXJhdC4gVml2YW11cyBhdCB0dXJwaXMgZWxp
+dC4gRG9uZWMgY29uZ3VlIHJob25jdXMgZXN0IGEgdml2ZXJyYS4gTnVuYyBub24g
+b2RpbyBlbmltLiBDdW0gc29jaWlzIG5hdG9xdWUgcGVuYXRpYnVzIGV0IG1hZ25p
+cyBkaXMgcGFydHVyaWVudCBtb250ZXMsIG5hc2NldHVyIHJpZGljdWx1cyBtdXMu
+IE1hZWNlbmFzIHF1aXMgbWFzc2EgbGliZXJvLCBxdWlzIGVsZW1lbnR1bSBtYXVy
+aXMuIFZlc3RpYnVsdW0gYW50ZSBpcHN1bSBwcmltaXMgaW4gZmF1Y2lidXMgb3Jj
+aSBsdWN0dXMgZXQgdWx0cmljZXMgcG9zdWVyZSBjdWJpbGlhIEN1cmFlOyBWZXN0
+aWJ1bHVtIHZhcml1cyB2ZWxpdCBhIG9yY2kgZ3JhdmlkYSB1bHRyaWNpZXMgc2Vk
+IHZlbCBsaWd1bGEuIFZlc3RpYnVsdW0gcHJldGl1bSB2ZWhpY3VsYSBhbGlxdWV0
+LiBTdXNwZW5kaXNzZSBhdWN0b3IgY29uZ3VlIG1hZ25hLCBhYyBjb252YWxsaXMg
+ZGlhbSB1bGxhbWNvcnBlciB2ZWwuCgpBZW5lYW4gcGxhY2VyYXQgbW9sbGlzIGlw
+c3VtLCBuZWMgdWxsYW1jb3JwZXIgcXVhbSBoZW5kcmVyaXQgZWdldC4gQWVuZWFu
+IHNlZCBpcHN1bSBhIGFyY3UgbG9ib3J0aXMgdGluY2lkdW50LiBDbGFzcyBhcHRl
+bnQgdGFjaXRpIHNvY2lvc3F1IGFkIGxpdG9yYSB0b3JxdWVudCBwZXIgY29udWJp
+YSBub3N0cmEsIHBlciBpbmNlcHRvcyBoaW1lbmFlb3MuIEV0aWFtIGNvbnZhbGxp
+cyB0b3J0b3Igc2FnaXR0aXMgbmlzbCBwb3J0YSBmZXJtZW50dW0uIFZpdmFtdXMg
+YWNjdW1zYW4gbHVjdHVzIGNvbmd1ZS4gTWF1cmlzIGV0IGxlY3R1cyBsb3JlbS4g
+TnVuYyBldCBudW5jIGV0IGF1Z3VlIGdyYXZpZGEgYmliZW5kdW0uIE51bGxhbSBz
+dXNjaXBpdCBhcmN1IGV0IG1hdXJpcyBpYWN1bGlzIHZpdGFlIGNvbmd1ZSBuaXNs
+IHRlbXB1cy4gQ2xhc3MgYXB0ZW50IHRhY2l0aSBzb2Npb3NxdSBhZCBsaXRvcmEg
+dG9ycXVlbnQgcGVyIGNvbnViaWEgbm9zdHJhLCBwZXIgaW5jZXB0b3MgaGltZW5h
+ZW9zLiBDcmFzIGRvbG9yIHRlbGx1cywgbHVjdHVzIHNlZCBpbXBlcmRpZXQgZXUs
+IGFjY3Vtc2FuIG5lYyBsb3JlbS4gQ3JhcyBxdWlzIGlwc3VtIGFudGUuIFZlc3Rp
+YnVsdW0gYW50ZSBpcHN1bSBwcmltaXMgaW4gZmF1Y2lidXMgb3JjaSBsdWN0dXMg
+ZXQgdWx0cmljZXMgcG9zdWVyZSBjdWJpbGlhIEN1cmFlOyBRdWlzcXVlIHZpdGFl
+IGRpYW0gYXVndWUsIGV1IHVsdHJpY2VzIGFyY3UuIFByYWVzZW50IGFudGUgdmVs
+aXQsIHZlaGljdWxhIGVnZXQgY3Vyc3VzIGV0LCBjb25zZXF1YXQgc2l0IGFtZXQg
+dG9ydG9yLiBNYWVjZW5hcyB1bHRyaWNlcyBsaWd1bGEgaW4gb2RpbyB2ZWhpY3Vs
+YSB0aW5jaWR1bnQuIEFlbmVhbiB1bHRyaWNpZXMgaXBzdW0gdXQgc2VtIHZ1bHB1
+dGF0ZSB2aXRhZSBwdWx2aW5hciBkaWFtIGNvbnNlY3RldHVyLiBOYW0gdmVsIGVn
+ZXN0YXMgZXJvcy4KClByb2luIHVybmEgbmliaCwgYWxpcXVldCBuZWMgc2FnaXR0
+aXMgYSwgY29uZ3VlIHNlZCBqdXN0by4gTWF1cmlzIHJpc3VzIG5lcXVlLCBibGFu
+ZGl0IGN1cnN1cyBzZW1wZXIgZXUsIGZlcm1lbnR1bSBlZ2V0IHB1cnVzLiBDdXJh
+Yml0dXIgaW4gbGFjdXMgYXVndWUsIHNpdCBhbWV0IGNvbmRpbWVudHVtIG1pLiBN
+YXVyaXMgZXUgc2VtIGlwc3VtLCBpbiB1bHRyaWNlcyBtZXR1cy4gUXVpc3F1ZSBm
+cmluZ2lsbGEgc2VtIGEgbmlzaSBjb21tb2RvIHZhcml1cy4gTnVuYyB1bHRyaWNl
+cyBwbGFjZXJhdCBwbGFjZXJhdC4gVml2YW11cyBub24gbGVjdHVzIGRvbG9yLCBl
+Z2V0IGhlbmRyZXJpdCBhdWd1ZS4gTmFtIHV0IG1hdHRpcyBwdXJ1cy4gSW50ZWdl
+ciB2ZWwgdXJuYSBldCB0ZWxsdXMgbGFjaW5pYSBmYWNpbGlzaXMgcGVsbGVudGVz
+cXVlIHV0IHRlbGx1cy4gRXRpYW0gbGFvcmVldCByaXN1cyBxdWlzIGVsaXQgZGlj
+dHVtIGlkIHRyaXN0aXF1ZSBsZW8gc2VtcGVyLiBVdCBvcm5hcmUgbmlzbCBldSBu
+aXNsIHVsbGFtY29ycGVyIGluIHNvbGxpY2l0dWRpbiBtYXVyaXMgZ3JhdmlkYS4g
+RXRpYW0gaW4gdGluY2lkdW50IHZlbGl0LiBVdCB0ZW1wdXMgdHVycGlzIHZpdGFl
+IHVybmEgc2FnaXR0aXMgdmVsIHBvcnRhIHNlbSB2b2x1dHBhdC4gRHVpcyBub24g
+anVzdG8gbWV0dXMsIHRlbXBvciBmYXVjaWJ1cyBxdWFtLiBBbGlxdWFtIGluIGxh
+Y3VzIG5lYyBtaSB2ZXN0aWJ1bHVtIGZyaW5naWxsYS4gUHJhZXNlbnQgdGVtcG9y
+IGxlY3R1cyBhdCBtZXR1cyBwb3J0YSB1dCBjb25ndWUgZHVpIGZyaW5naWxsYS4K
+Ck5hbSBhYyBsZWN0dXMgc2VtLCBhdCB2aXZlcnJhIHJpc3VzLiBDcmFzIHNpdCBh
+bWV0IHNvZGFsZXMgbWFzc2EuIFF1aXNxdWUgY29uc2VjdGV0dXIgbGlndWxhIHBv
+c3VlcmUgdHVycGlzIGV1aXNtb2QgaW50ZXJkdW0uIFV0IGV1IHRlbGx1cyBldSBt
+YXNzYSB1bHRyaWNpZXMgYmliZW5kdW0gdml0YWUgaWQgbWV0dXMuIEN1cmFiaXR1
+ciBpbXBlcmRpZXQgY29uc2VxdWF0IHRpbmNpZHVudC4gVXQgZW5pbSBxdWFtLCBj
+b25zZWN0ZXR1ciBhdCBwb3J0dGl0b3IgaW4sIHZhcml1cyBldSBtYWduYS4gTnVu
+YyBhcmN1IGVsaXQsIHNvZGFsZXMgbm9uIGRhcGlidXMgdnVscHV0YXRlLCBsYWNp
+bmlhIGlkIGZlbGlzLiBDdXJhYml0dXIgbHVjdHVzLCByaXN1cyBxdWlzIHZpdmVy
+cmEgY29udmFsbGlzLCBtYXNzYSBqdXN0byB0ZW1wdXMgbGliZXJvLCB2aXRhZSBw
+b3J0dGl0b3IgbGlndWxhIHZlbGl0IGEgdHVycGlzLiBOdW5jIHZpdmVycmEsIG1l
+dHVzIGEgbWFsZXN1YWRhIGNvbnZhbGxpcywgbmVxdWUgYW50ZSBiaWJlbmR1bSBu
+aXNsLCBlZ2V0IGltcGVyZGlldCBlbmltIGxlY3R1cyBldSBlbmltLiBQZWxsZW50
+ZXNxdWUgZW5pbSBuaXNsLCBhZGlwaXNjaW5nIGVnZXQgbW9sZXN0aWUgYXQsIGNv
+bnNlY3RldHVyIGV1IG9yY2kuIFNlZCBwb3J0YSB1bGxhbWNvcnBlciBlc3QsIG5l
+YyBkaWN0dW0gdHVycGlzIHNlbXBlciBzaXQgYW1ldC4KClF1aXNxdWUgcG9ydGEg
+bWkgYWMgdmVsaXQgcmhvbmN1cyBhIHZlaGljdWxhIGxlbyBjb25zZXF1YXQuIE1v
+cmJpIGxhb3JlZXQgbWF1cmlzIGVsaXQuIEZ1c2NlIHNlbXBlciByaXN1cyB2ZWwg
+bGFjdXMgZWdlc3RhcyByaG9uY3VzLiBQZWxsZW50ZXNxdWUgdGluY2lkdW50IG51
+bGxhIGp1c3RvLCB2aXRhZSB2ZWhpY3VsYSBsaWJlcm8uIE1hdXJpcyBkYXBpYnVz
+IGR1aSBpbiBtYWduYSB0cmlzdGlxdWUgc2l0IGFtZXQgZmFjaWxpc2lzIHJpc3Vz
+IGxvYm9ydGlzLiBBZW5lYW4gc2l0IGFtZXQgZG9sb3Igdml0YWUgbG9yZW0gZXVp
+c21vZCBjb252YWxsaXMuIE51bGxhbSBzaXQgYW1ldCBhZGlwaXNjaW5nIGp1c3Rv
+LiBWaXZhbXVzIHZlc3RpYnVsdW0gb3JuYXJlIHN1c2NpcGl0LiBWZXN0aWJ1bHVt
+IG1hbGVzdWFkYSB1bHRyaWNlcyB2ZWxpdCBub24gZmV1Z2lhdC4gVmVzdGlidWx1
+bSBhbnRlIGlwc3VtIHByaW1pcyBpbiBmYXVjaWJ1cyBvcmNpIGx1Y3R1cyBldCB1
+bHRyaWNlcyBwb3N1ZXJlIGN1YmlsaWEgQ3VyYWU7IE1hdXJpcyBhcmN1IGlwc3Vt
+LCBjb21tb2RvIGluIGlhY3VsaXMgc2VkLCBjb25zZXF1YXQgdXQgYXVndWUuIEFs
+aXF1YW0gbGliZXJvIG1hdXJpcywgYWxpcXVldCBhdCBjb25kaW1lbnR1bSBub24s
+IGhlbmRyZXJpdCBuZWMgZXJhdC4gSW4gdXQgbWF1cmlzIGxvcmVtLiBWaXZhbXVz
+IGVnZXQgbGlndWxhIGlkIG5pc2kgc29sbGljaXR1ZGluIHBsYWNlcmF0IGlkIG5l
+YyB0ZWxsdXMuIE51bGxhIG5vbiBmYXVjaWJ1cyBsb3JlbS4gTnVsbGEgbm9uIG5p
+YmggZXUgZW5pbSB2aXZlcnJhIGNvbnNlY3RldHVyLiBNb3JiaSBsaWJlcm8gbmlz
+bCwgY29udmFsbGlzIGlkIGFsaXF1YW0gaWQsIHN1c2NpcGl0IGFjIGRpYW0uIENs
+YXNzIGFwdGVudCB0YWNpdGkgc29jaW9zcXUgYWQgbGl0b3JhIHRvcnF1ZW50IHBl
+ciBjb251YmlhIG5vc3RyYSwgcGVyIGluY2VwdG9zIGhpbWVuYWVvcy4gSW50ZWdl
+ciBlZ2V0IGFudGUgc2FwaWVuLiBTZWQgbm9uIGF1Y3RvciBtYXNzYS4KCk1hZWNl
+bmFzIHRpbmNpZHVudCBncmF2aWRhIGNvbnZhbGxpcy4gVmVzdGlidWx1bSBldCBp
+YWN1bGlzIGxpYmVyby4gU2VkIHVybmEgb3JjaSwgY29udmFsbGlzIGluIGNvbnNl
+cXVhdCBpZCwgdWx0cmljaWVzIHF1aXMgc2VtLiBFdGlhbSBhbGlxdWV0IHNhZ2l0
+dGlzIGltcGVyZGlldC4gTWF1cmlzIG5lYyBuZXF1ZSBxdWFtLiBNb3JiaSB0aW5j
+aWR1bnQgbW9sbGlzIHZlbGl0IGVnZXQgdWx0cmljZXMuIERvbmVjIGF0IHR1cnBp
+cyBtYWduYSwgZXUgcGxhY2VyYXQgZXJvcy4gUXVpc3F1ZSB0b3J0b3IgbmlzbCwg
+dGluY2lkdW50IGV1IGltcGVyZGlldCBxdWlzLCBwb3N1ZXJlIG5lYyBlbGl0LiBD
+dW0gc29jaWlzIG5hdG9xdWUgcGVuYXRpYnVzIGV0IG1hZ25pcyBkaXMgcGFydHVy
+aWVudCBtb250ZXMsIG5hc2NldHVyIHJpZGljdWx1cyBtdXMuIFF1aXNxdWUgYWxp
+cXVldCBsYW9yZWV0IGRpY3R1bS4KClF1aXNxdWUgdmVsIGJpYmVuZHVtIGxlby4g
+RXRpYW0gZXQgbWF1cmlzIGxhY3VzLCBzZWQgc29sbGljaXR1ZGluIG5pc2kuIFF1
+aXNxdWUgaWQgcmlzdXMgaW4gbG9yZW0gbWF0dGlzIGRpY3R1bS4gU3VzcGVuZGlz
+c2UgcG90ZW50aS4gRG9uZWMgbmVjIGp1c3RvIGFyY3UsIHV0IHBlbGxlbnRlc3F1
+ZSBzZW0uIFN1c3BlbmRpc3NlIHBvdGVudGkuIFBlbGxlbnRlc3F1ZSBlZ2V0IG5p
+c2kgaWQgbmlzbCBsYWNpbmlhIGltcGVyZGlldC4gTmFtIGNvbnNlY3RldHVyIGZh
+Y2lsaXNpcyBsZW8gbmVjIHRlbXBvci4gRHVpcyBmZXJtZW50dW0gbGFvcmVldCB0
+dXJwaXMgZXQgcHJldGl1bS4gQ2xhc3MgYXB0ZW50IHRhY2l0aSBzb2Npb3NxdSBh
+ZCBsaXRvcmEgdG9ycXVlbnQgcGVyIGNvbnViaWEgbm9zdHJhLCBwZXIgaW5jZXB0
+b3MgaGltZW5hZW9zLiBBZW5lYW4gbGFvcmVldCBlc3Qgc2l0IGFtZXQgZWxpdCBm
+ZXVnaWF0IGRhcGlidXMuIEV0aWFtIHRlbXB1cyBzdXNjaXBpdCB2ZWxpdCwgb3Ju
+YXJlIGRhcGlidXMgaXBzdW0gcG9ydGEgbm9uLiBOdW5jIHV0IGRvbG9yIHV0IGR1
+aSBwb3J0YSBhY2N1bXNhbi4gSW50ZWdlciBkaWN0dW0sIHNlbSBub24gc3VzY2lw
+aXQgc29sbGljaXR1ZGluLCB0b3J0b3IgZXJhdCBsYW9yZWV0IHRlbGx1cywgc2l0
+IGFtZXQgcHJldGl1bSBkb2xvciBtaSB1dCBpcHN1bS4gVml2YW11cyBhdWN0b3Ig
+ZGlhbSBkaWN0dW0gc2FwaWVuIGZlcm1lbnR1bSBhZGlwaXNjaW5nLiBQaGFzZWxs
+dXMgc2NlbGVyaXNxdWUgb2RpbyBxdWlzIG9yY2kgY3Vyc3VzIGV0IHRlbXBvciBz
+ZW0gdGluY2lkdW50LiBJbiBoYWMgaGFiaXRhc3NlIHBsYXRlYSBkaWN0dW1zdC4g
+QWVuZWFuIHNvZGFsZXMsIGVzdCBldCBtYXR0aXMgc29kYWxlcywgbG9yZW0gZGlh
+bSBkYXBpYnVzIHF1YW0sIGFjIHByZXRpdW0gbGFjdXMgbGVjdHVzIGV1IHNhcGll
+bi4gRG9uZWMgYWRpcGlzY2luZyBsb2JvcnRpcyBtaSBlZ2V0IHZlc3RpYnVsdW0u
+CgpNYWVjZW5hcyBhdCBhbnRlIGVsaXQuIEluIHRlbXB1cyBydXRydW0gZXN0LCB2
+aXRhZSBlbGVtZW50dW0gbnVuYyBtb2xlc3RpZSBhYy4gQWxpcXVhbSB1dCBlbmlt
+IGFyY3UsIG5lYyBzb2RhbGVzIG51bGxhLiBVdCBkaWduaXNzaW0gYWRpcGlzY2lu
+ZyBvcm5hcmUuIER1aXMgZGljdHVtIGNvbW1vZG8gaXBzdW0sIGEgb3JuYXJlIHJp
+c3VzIG1hbGVzdWFkYSBzZWQuIEV0aWFtIGlkIGFyY3UgbWF1cmlzLCBuZWMgcGhh
+cmV0cmEgc2FwaWVuLiBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2Vj
+dGV0dXIgYWRpcGlzY2luZyBlbGl0LiBBZW5lYW4gcnV0cnVtIGxlY3R1cyBzZWQg
+dHVycGlzIHBvcnR0aXRvciBoZW5kcmVyaXQuIEludGVnZXIgbWV0dXMgbGVvLCBs
+dWN0dXMgYWMgbGFjaW5pYSBpbiwgZWxlaWZlbmQgZXQgbmVxdWUuIFBlbGxlbnRl
+c3F1ZSBiaWJlbmR1bSBudWxsYSBzaXQgYW1ldCB0ZWxsdXMgZXVpc21vZCB2ZWwg
+c2NlbGVyaXNxdWUgbWFnbmEgcnV0cnVtLiBBZW5lYW4gdWx0cmljZXMgY29udmFs
+bGlzIG5pc2wsIGlkIG9ybmFyZSB0ZWxsdXMgYXVjdG9yIGV1LiBRdWlzcXVlIGxv
+Ym9ydGlzIGF1Y3RvciBqdXN0bywgc2l0IGFtZXQgdGluY2lkdW50IGR1aSBsYWNp
+bmlhIG5lYy4gTnVsbGFtIGNvbmd1ZSBudW5jIGF0IGZlbGlzIHBvcnR0aXRvciBy
+dXRydW0gbm9uIGF0IGVuaW0uCgpVdCBjb252YWxsaXMgY29uZGltZW50dW0gbGFj
+dXMgc2VkIGZhY2lsaXNpcy4gQWxpcXVhbSBwcmV0aXVtIGxpZ3VsYSBlZ2V0IG1h
+Z25hIHBsYWNlcmF0IHZvbHV0cGF0LiBEb25lYyBub24gbG9yZW0gcGVsbGVudGVz
+cXVlIGlwc3VtIGxvYm9ydGlzIHVsbGFtY29ycGVyLiBTdXNwZW5kaXNzZSB2b2x1
+dHBhdCBmZXJtZW50dW0gbWFsZXN1YWRhLiBQcmFlc2VudCBtb2xlc3RpZSBtYWxl
+c3VhZGEgbG9yZW0sIHNpdCBhbWV0IGVsZWlmZW5kIG1hc3NhIGVsZWlmZW5kIG5l
+Yy4gTnVsbGEgZmFjaWxpc2lzIHRpbmNpZHVudCBlcmF0LCBpbiBwb3J0dGl0b3Ig
+ZXJvcyBzYWdpdHRpcyBpZC4gU2VkIGxvYm9ydGlzLCBsaWJlcm8gYXVjdG9yIGlu
+dGVyZHVtIGhlbmRyZXJpdCwgZmVsaXMgcXVhbSB2ZXN0aWJ1bHVtIG5pYmgsIGVn
+ZXQgaW1wZXJkaWV0IG1hZ25hIGxpZ3VsYSBhdCBudWxsYS4gQWxpcXVhbSBlcmF0
+IHZvbHV0cGF0LiBBbGlxdWFtIG5lYyBuaXNsIHZlbGl0LiBOdW5jIGRhcGlidXMg
+ZGlnbmlzc2ltIG1hc3NhIGFjIGx1Y3R1cy4gTWF1cmlzIG5vbiBvZGlvIHB1cnVz
+LiBEdWlzIGVyYXQgYW50ZSwgY29uc2VjdGV0dXIgcXVpcyBjb21tb2RvIGEsIGlh
+Y3VsaXMgc2VkIGVzdC4gQ3VyYWJpdHVyIGp1c3RvIGp1c3RvLCBiaWJlbmR1bSBp
+biBzZW1wZXIgdmVsLCBmYXVjaWJ1cyBpbiBuaWJoLiBFdGlhbSBtYWduYSBhcmN1
+LCBldWlzbW9kIGF0IHRpbmNpZHVudCBxdWlzLCBzb2xsaWNpdHVkaW4gZXQgbGVj
+dHVzLiBOdWxsYW0gcHVydXMgbWV0dXMsIGZlcm1lbnR1bSBlZ2V0IHVsdHJpY2ll
+cyBuZWMsIGNvbmd1ZSBhIG5pYmguIFBoYXNlbGx1cyBhIGxhY3VzIGlwc3VtLCBp
+ZCBzb2xsaWNpdHVkaW4gdmVsaXQuCgpQaGFzZWxsdXMgbm9uIHZlbGl0IG9yY2ks
+IGFjIGZldWdpYXQgbGFjdXMuIEN1cmFiaXR1ciBzZWQgc2FwaWVuIG1hZ25hLiBJ
+biB2ZWwgcHVsdmluYXIgZmVsaXMuIE1hdXJpcyBxdWlzIGRpYW0gcXVpcyBtYXNz
+YSB2YXJpdXMgdmFyaXVzLiBQcmFlc2VudCB1dCBhdWd1ZSBsZW8sIGV0IGZhY2ls
+aXNpcyBtYXNzYS4gSW50ZWdlciBhdCB2ZWxpdCBvcmNpLCBuZWMgbW9sZXN0aWUg
+ZXN0LiBNb3JiaSBwb3J0YSBibGFuZGl0IHR1cnBpcyBhdCBmcmluZ2lsbGEuIFNl
+ZCBsYW9yZWV0IG9kaW8gdXQgZWxpdCBmZXJtZW50dW0gc2VkIGFjY3Vtc2FuIHRv
+cnRvciB2b2x1dHBhdC4gVmVzdGlidWx1bSBhbnRlIGlwc3VtIHByaW1pcyBpbiBm
+YXVjaWJ1cyBvcmNpIGx1Y3R1cyBldCB1bHRyaWNlcyBwb3N1ZXJlIGN1YmlsaWEg
+Q3VyYWU7IEV0aWFtIGlkIG1hc3NhIHZpdGFlIGVyb3MgaWFjdWxpcyBmYWNpbGlz
+aXMgc2VkIGFjIHNlbS4gRXRpYW0gdG9ydG9yIHF1YW0sIG1hbGVzdWFkYSBpbiBz
+b2RhbGVzIGEsIHZ1bHB1dGF0ZSB0aW5jaWR1bnQgcXVhbS4gTnVsbGEgZmFjaWxp
+c2kuIERvbmVjIGNvbmRpbWVudHVtIHZhcml1cyB1bHRyaWNlcy4gRnVzY2UgYmxh
+bmRpdCwgdmVsaXQgdml0YWUgc2NlbGVyaXNxdWUgZXVpc21vZCwgbmliaCBudWxs
+YSBpbnRlcmR1bSBhcmN1LCB2ZWwgdnVscHV0YXRlIGZlbGlzIGVzdCBpbiB0b3J0
+b3IuIFNlZCB1dCB1cm5hIGZlcm1lbnR1bSBkaWFtIGVsZWlmZW5kIGxvYm9ydGlz
+LgoKQWxpcXVhbSBub24gbnVuYyBvZGlvLiBBbGlxdWFtIGlkIGRpYW0gdmVsIG1p
+IHBvc3VlcmUgYXVjdG9yLiBQcmFlc2VudCB0ZW1wb3IgdGVsbHVzIHF1aXMgb2Rp
+byB0aW5jaWR1bnQgcG9zdWVyZS4gSW50ZWdlciBhIG1hc3NhIHB1cnVzLCBhYyBn
+cmF2aWRhIG1pLiBEb25lYyB2YXJpdXMgbmVxdWUgZXUgZXJvcyBzY2VsZXJpc3F1
+ZSBibGFuZGl0LiBNYWVjZW5hcyBjb25kaW1lbnR1bSB2b2x1dHBhdCBvZGlvIHBy
+ZXRpdW0gY29udmFsbGlzLiBEdWlzIHBvc3VlcmUgdmVoaWN1bGEgdm9sdXRwYXQu
+IFNlZCB0aW5jaWR1bnQgc2FwaWVuIGV1IGRpYW0gY3Vyc3VzIHZpdGFlIG9ybmFy
+ZSBxdWFtIGFkaXBpc2NpbmcuIE5hbSBmYXVjaWJ1cyB0aW5jaWR1bnQgZWxlaWZl
+bmQuIEFlbmVhbiBmYWNpbGlzaXMgY29uc2VxdWF0IHR1cnBpcywgYWMgbG9ib3J0
+aXMgdmVsaXQgZGljdHVtIHF1aXMuIE1hdXJpcyBpbXBlcmRpZXQgY29udmFsbGlz
+IGxpZ3VsYSBtYXR0aXMgY29uZ3VlLiBOdWxsYW0gdWx0cmljaWVzIGNvbmd1ZSBs
+YWN1cyBldCBwcmV0aXVtLiBQcmFlc2VudCBlcm9zIGFyY3UsIGxvYm9ydGlzIHV0
+IHBvcnR0aXRvciB1dCwgaW50ZXJkdW0gZXUgbGliZXJvLiBOYW0gbmVjIG9yY2kg
+ZXJhdC4gQ3JhcyBoZW5kcmVyaXQgY29uc2VjdGV0dXIgbWFzc2EsIGlkIGxvYm9y
+dGlzIGFyY3UgZXVpc21vZCBpZC4gU3VzcGVuZGlzc2UgcG90ZW50aS4gTnVsbGFt
+IGVnZXN0YXMsIGVyb3MgYWMgc3VzY2lwaXQgbW9sZXN0aWUsIG5lcXVlIHRlbGx1
+cyBhZGlwaXNjaW5nIG1hdXJpcywgbm9uIGNvbW1vZG8gZmVsaXMgb2RpbyB1dCBz
+ZW0uIE51bGxhbSBzYWdpdHRpcyBncmF2aWRhIHByZXRpdW0uIEZ1c2NlIHJ1dHJ1
+bSBjdXJzdXMgc2NlbGVyaXNxdWUuIFF1aXNxdWUgY29udmFsbGlzLCBkb2xvciBp
+biBwdWx2aW5hciBhbGlxdWV0LCBzYXBpZW4gaXBzdW0gdGVtcG9yIGR1aSwgaWQg
+dHJpc3RpcXVlIGVzdCBtYXVyaXMgYXVjdG9yIGp1c3RvLgoKQWVuZWFuIGFsaXF1
+ZXQgbWV0dXMgZXUgbWFnbmEgdHJpc3RpcXVlIGV1IGZlcm1lbnR1bSBtYWduYSB1
+bGxhbWNvcnBlci4gQWVuZWFuIHNjZWxlcmlzcXVlIGJsYW5kaXQgZWxlaWZlbmQu
+IEludGVnZXIgYSBvcm5hcmUgb2Rpby4gTWFlY2VuYXMgZWxlaWZlbmQgaGVuZHJl
+cml0IGFudGUgaWQgbW9sZXN0aWUuIE1hdXJpcyByaG9uY3VzIHBsYWNlcmF0IGFs
+aXF1YW0uIFN1c3BlbmRpc3NlIGEgZWxpdCBkaWFtLCBldCBwaGFyZXRyYSBlc3Qu
+IER1aXMgZWxlbWVudHVtIG9yY2kgZXUgYW50ZSBtYXR0aXMgYWMgY29uZ3VlIG5p
+c2wgYWxpcXVldC4gSW50ZWdlciBzaXQgYW1ldCBkb2xvciBldCBtYXVyaXMgZWxl
+aWZlbmQgbGFvcmVldC4gU2VkIGFsaXF1ZXQgcHJldGl1bSBudWxsYSwgaW4gZWxl
+aWZlbmQgYXVndWUgcnV0cnVtIHF1aXMuIFF1aXNxdWUgZGFwaWJ1cyBuaXNsIHZp
+dGFlIHRlbGx1cyBpbnRlcmR1bSBldSBibGFuZGl0IGFyY3UgY29uc2VxdWF0LiBF
+dGlhbSBzZWQgcHVydXMgcmlzdXMuIEZ1c2NlIHR1cnBpcyBsaWJlcm8sIGFsaXF1
+YW0gbmVjIGxhY2luaWEgYXQsIGJsYW5kaXQgbmVjIG51bmMuIFByYWVzZW50IHZp
+dmVycmEsIGxvcmVtIGFjIHBvcnR0aXRvciBtYWxlc3VhZGEsIGxvcmVtIHZlbGl0
+IHNvbGxpY2l0dWRpbiB2ZWxpdCwgc2l0IGFtZXQgdGluY2lkdW50IHVybmEgZHVp
+IHZpdGFlIGxlby4KCkRvbmVjIHZpdGFlIGZlbGlzIHF1aXMgZW5pbSB2dWxwdXRh
+dGUgcmhvbmN1cy4gUHJhZXNlbnQgZWxlbWVudHVtIHRyaXN0aXF1ZSBjb25ndWUu
+IERvbmVjIHF1aXMgbWV0dXMgbmliaC4gTWFlY2VuYXMgYXJjdSBhbnRlLCBsYWNp
+bmlhIGluIGRhcGlidXMgaWQsIGZlcm1lbnR1bSBzZWQgZXJhdC4gTW9yYmkgYWRp
+cGlzY2luZyBncmF2aWRhIG1hZ25hLCB1dCBwb3N1ZXJlIG9kaW8gZmV1Z2lhdCB2
+aXRhZS4gU3VzcGVuZGlzc2UgcG9ydGEgbHVjdHVzIGxhb3JlZXQuIEFsaXF1YW0g
+aW4gZXJhdCBzaXQgYW1ldCBvZGlvIHZlaGljdWxhIG9ybmFyZSBxdWlzIGF0IGR1
+aS4gU3VzcGVuZGlzc2Ugbm9uIGxvcmVtIHZpdGFlIGxpZ3VsYSBsdWN0dXMgY29u
+c2VjdGV0dXIgYWMgaWQgcHVydXMuIE51bmMgdXQgbmlzaSBqdXN0by4gTnVsbGFt
+IGVnZXQgc2FwaWVuIGNvbW1vZG8gZHVpIHN1c2NpcGl0IHBlbGxlbnRlc3F1ZS4g
+Vml2YW11cyBzZW1wZXIgbWkgc2VkIGFyY3Ugc2VtcGVyIHZhcml1cy4gQ3JhcyBh
+bGlxdWV0IHZlc3RpYnVsdW0gc2FwaWVuLCBhIGludGVyZHVtIG1pIHVsbGFtY29y
+cGVyIHZlbC4gTW9yYmkgcHVydXMgZGlhbSwgb3JuYXJlIG5vbiB0ZW1wb3Igbm9u
+LCBjb252YWxsaXMgbmVjIGVuaW0uIE51bGxhbSB0cmlzdGlxdWUgdnVscHV0YXRl
+IGxlbyBuZWMgZmFjaWxpc2lzLiBQZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkg
+dHJpc3RpcXVlIHNlbmVjdHVzIGV0IG5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcyBh
+YyB0dXJwaXMgZWdlc3Rhcy4KCk1vcmJpIGltcGVyZGlldCB2ZWhpY3VsYSBjb25n
+dWUuIE1hdXJpcyBxdWlzIG51bGxhIG9kaW8sIGEgZmF1Y2lidXMgdXJuYS4gTnVs
+bGEgZXQgZXJvcyBkb2xvci4gRnVzY2UgYSBmYXVjaWJ1cyBpcHN1bS4gTWF1cmlz
+IGZlcm1lbnR1bSBmZXVnaWF0IGRpZ25pc3NpbS4gVXQgYSBqdXN0byBlbGl0LCBu
+b24gYXVjdG9yIHF1YW0uIFNlZCBsYWN1cyBhdWd1ZSwgcGxhY2VyYXQgYXQgYWxp
+cXVhbSBub24sIG1hdHRpcyBpZCBtaS4gQWVuZWFuIGEgbGFvcmVldCBlcm9zLiBD
+cmFzIHVsdHJpY2llcyBlbGl0IGluIG51bmMgc3VzY2lwaXQgaWQgc29sbGljaXR1
+ZGluIGVuaW0gY29uZGltZW50dW0uIFBoYXNlbGx1cyBkaWduaXNzaW0gbmlzaSBx
+dWlzIGxlbyBpbnRlcmR1bSBwaGFyZXRyYS4gRG9uZWMgc2l0IGFtZXQgbGVvIGEg
+ZHVpIHZpdmVycmEgbW9sZXN0aWUuIEN1cmFiaXR1ciBsb2JvcnRpcyBzYXBpZW4g
+cXVpcyBuZXF1ZSBwdWx2aW5hciBhdCBmcmluZ2lsbGEgbmlzaSB2ZWhpY3VsYS4K
+ClByYWVzZW50IG5vbiBwdXJ1cyB0ZWxsdXMuIEludGVnZXIgaWFjdWxpcyBkYXBp
+YnVzIG5pc2wsIHRyaXN0aXF1ZSB2ZXN0aWJ1bHVtIG1pIG1hbGVzdWFkYSBzaXQg
+YW1ldC4gU2VkIGxvYm9ydGlzIGhlbmRyZXJpdCBsb2JvcnRpcy4gUXVpc3F1ZSB0
+ZW1wb3IsIGFyY3UgYWMgdGVtcHVzIGF1Y3RvciwgbmVxdWUgcXVhbSBkaWN0dW0g
+cXVhbSwgdml0YWUgZ3JhdmlkYSBsaWd1bGEgbmliaCBldSBhdWd1ZS4gQWVuZWFu
+IGV1aXNtb2QgdGVtcG9yIGlwc3VtIGEgaGVuZHJlcml0LiBDcmFzIGRvbG9yIGxp
+Z3VsYSwgZmF1Y2lidXMgYWMgaGVuZHJlcml0IGVnZXQsIGFsaXF1YW0gYSBuaXNs
+LiBJbnRlZ2VyIG5lYyBjb25zZXF1YXQganVzdG8uIEludGVnZXIgcGhhcmV0cmEg
+c2NlbGVyaXNxdWUgbGVvLiBBZW5lYW4gZXVpc21vZCB2ZWhpY3VsYSBhbnRlIG5v
+biBwaGFyZXRyYS4gVmVzdGlidWx1bSBzb2xsaWNpdHVkaW4ganVzdG8gZXUgc2Vt
+IGxhb3JlZXQgaW4gdGVtcHVzIG5lcXVlIGNvbW1vZG8uCgpVdCBpbiBhcmN1IGFu
+dGUuIEN1cmFiaXR1ciB1bHRyaWNpZXMgdmVsaXQgZGlhbS4gQWxpcXVhbSB2ZWxp
+dCBlcm9zLCB2b2x1dHBhdCBxdWlzIGN1cnN1cyBpZCwgdmVoaWN1bGEgYWMgdG9y
+dG9yLiBOdWxsYSBwcmV0aXVtLCBlcmF0IGlkIGZhY2lsaXNpcyBibGFuZGl0LCBy
+aXN1cyB0ZWxsdXMgYWxpcXVldCBvcmNpLCB2ZWwgY29uZGltZW50dW0gbmliaCBl
+bGl0IHZpdGFlIGVsaXQuIFBoYXNlbGx1cyB1bGxhbWNvcnBlciBjb25zZWN0ZXR1
+ciBhbnRlIHNpdCBhbWV0IGx1Y3R1cy4gTnVsbGEgdXQgbnVsbGEgZWdldCBlcm9z
+IGRpY3R1bSBwZWxsZW50ZXNxdWUgdmVsIHV0IG51bGxhLiBEb25lYyBsYW9yZWV0
+IHZpdmVycmEgbWFnbmEgdXQgaW50ZXJkdW0uIFZpdmFtdXMgcHVsdmluYXIgc2Fw
+aWVuIGNvbnZhbGxpcyBtYWduYSBzb2RhbGVzIGVnZXQgZWdlc3RhcyBlc3QgaW1w
+ZXJkaWV0LiBRdWlzcXVlIGZhY2lsaXNpcyBhbGlxdWFtIHNvZGFsZXMuIEV0aWFt
+IGZlcm1lbnR1bSwgb2RpbyBhYyBzZW1wZXIgc2NlbGVyaXNxdWUsIHB1cnVzIGVu
+aW0gaW1wZXJkaWV0IGF1Z3VlLCBzaXQgYW1ldCBkaWduaXNzaW0gc2FwaWVuIHRv
+cnRvciBuZWMgbWF1cmlzLiBTdXNwZW5kaXNzZSBlbGVpZmVuZCBjb21tb2RvIG51
+bmMgcXVpcyBjb25zZWN0ZXR1ci4gRG9uZWMgZWdldCB0cmlzdGlxdWUgbGVvLgoK
+U3VzcGVuZGlzc2Ugc29sbGljaXR1ZGluIHBoYXJldHJhIHNlbXBlci4gU2VkIGp1
+c3RvIGVzdCwgZmF1Y2lidXMgaWQgY3Vyc3VzIGEsIHBlbGxlbnRlc3F1ZSBpbiBt
+aS4gTWF1cmlzIHNhZ2l0dGlzLCBpcHN1bSBjdXJzdXMgYmxhbmRpdCBpbXBlcmRp
+ZXQsIGVzdCBlc3QgbHVjdHVzIHJpc3VzLCBxdWlzIGZlcm1lbnR1bSBsZW8gb3Jj
+aSBhIG9kaW8uIE51bmMgc2l0IGFtZXQgdmVsaXQgaXBzdW0uIE5hbSBldWlzbW9k
+IHB1bHZpbmFyIG1ldHVzLCBhYyBhZGlwaXNjaW5nIGR1aSB1bGxhbWNvcnBlciBh
+LiBWZXN0aWJ1bHVtIGFudGUgaXBzdW0gcHJpbWlzIGluIGZhdWNpYnVzIG9yY2kg
+bHVjdHVzIGV0IHVsdHJpY2VzIHBvc3VlcmUgY3ViaWxpYSBDdXJhZTsgU2VkIG1v
+bGVzdGllIHRpbmNpZHVudCBkb2xvciwgc2VkIHByZXRpdW0gbWFnbmEgY29uc2Vj
+dGV0dXIgdXQuIExvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1
+ciBhZGlwaXNjaW5nIGVsaXQuIEFsaXF1YW0gbGVjdHVzIGxpZ3VsYSwgaW50ZXJk
+dW0gYXQgbG9ib3J0aXMgaWQsIGNvbnZhbGxpcyBzaXQgYW1ldCBzZW0uIFNlZCBl
+Z2V0IG5lcXVlIGluIGFyY3UgdWx0cmljZXMgZmV1Z2lhdC4gUHJvaW4gdnVscHV0
+YXRlIGxlbyBlZ2V0IGVyb3MgZGFwaWJ1cyBhbGlxdWV0LiBGdXNjZSBmYWNpbGlz
+aXMgY29uc2VxdWF0IGRpYW0sIHNlZCB2ZXN0aWJ1bHVtIG1pIHVsdHJpY2llcyBl
+Z2V0LiBVdCBwb3N1ZXJlIGNvbmd1ZSBsaWJlcm8gc2l0IGFtZXQgZGlnbmlzc2lt
+LiBQcm9pbiBxdWlzIGFyY3UgbGliZXJvLgoKVmVzdGlidWx1bSBhdCBhdWd1ZSBt
+YXVyaXMuIEFsaXF1YW0gc2FnaXR0aXMgcG9ydGEgYW50ZSBpbiB2YXJpdXMuIFZl
+c3RpYnVsdW0gbHVjdHVzIGlhY3VsaXMgYXJjdSBhIGludGVyZHVtLiBVdCB2YXJp
+dXMgaGVuZHJlcml0IGxhY3VzIG5lYyBzYWdpdHRpcy4gU2VkIHV0IHJpc3VzIGFj
+IGxlY3R1cyB1bHRyaWNpZXMgbW9sbGlzLiBOdW5jIGZldWdpYXQgc3VzY2lwaXQg
+bnVuYyBxdWlzIGVsZW1lbnR1bS4gU3VzcGVuZGlzc2UgcG90ZW50aS4gRnVzY2Ug
+bGFvcmVldCBlbGl0IGV1IG9kaW8gZnJpbmdpbGxhIHBlbGxlbnRlc3F1ZS4gRXRp
+YW0gdml0YWUgYXJjdSBxdWlzIHF1YW0gc29kYWxlcyBmYWNpbGlzaXMgY29uc2Vx
+dWF0IHV0IG9yY2kuIFBoYXNlbGx1cyB2aXRhZSBxdWFtIHF1aXMgbGVvIGNvbmd1
+ZSBpbnRlcmR1bSBzZWQgc3VzY2lwaXQgZXN0LiBNYWVjZW5hcyBjb25kaW1lbnR1
+bSwgbWFzc2EgZWdldCB0ZW1wb3IgcGhhcmV0cmEsIGVyYXQgbGVvIGxhY2luaWEg
+b2Rpbywgc2l0IGFtZXQgZmV1Z2lhdCBtYXVyaXMgcmlzdXMgc2VkIHNhcGllbi4g
+TW9yYmkgYXJjdSBsb3JlbSwgZGFwaWJ1cyBlZ2V0IHZlbmVuYXRpcyBzZWQsIHNl
+bXBlciBlZ2V0IGVyb3MuIENyYXMgc2VtcGVyIHVsdHJpY2llcyBlcm9zIHZvbHV0
+cGF0IHZ1bHB1dGF0ZS4gTW9yYmkgYXQgbnVuYyBlZ2V0IG5pYmggZmV1Z2lhdCB0
+ZW1wdXMuCgpJbiBlZ2V0IGVsaXQgYSBkaWFtIHBsYWNlcmF0IHZvbHV0cGF0IHNl
+ZCB0ZW1wdXMgZGlhbS4gTWFlY2VuYXMgdGVtcG9yIHNlbSBpZCBzZW0gdml2ZXJy
+YSB2ZWwgZmVybWVudHVtIHJpc3VzIHBvcnR0aXRvci4gUHJvaW4gYSBtZXR1cyBt
+ZXR1cy4gQWVuZWFuIHF1aXMgdGluY2lkdW50IG1hZ25hLiBEb25lYyBzaXQgYW1l
+dCBwb3N1ZXJlIHJpc3VzLiBEb25lYyBlc3QganVzdG8sIGRhcGlidXMgaW4gc29s
+bGljaXR1ZGluIGV1LCB2ZW5lbmF0aXMgc2l0IGFtZXQgZWxpdC4gQ2xhc3MgYXB0
+ZW50IHRhY2l0aSBzb2Npb3NxdSBhZCBsaXRvcmEgdG9ycXVlbnQgcGVyIGNvbnVi
+aWEgbm9zdHJhLCBwZXIgaW5jZXB0b3MgaGltZW5hZW9zLiBDcmFzIGluIHR1cnBp
+cyBuZWMgbnVuYyBmcmluZ2lsbGEgaWFjdWxpcy4gRXRpYW0gc3VzY2lwaXQgbmli
+aCB2aXRhZSBsaWJlcm8gcGVsbGVudGVzcXVlIHZpdmVycmEuIENyYXMgaWQgbGVj
+dHVzIHF1aXMgZW5pbSBvcm5hcmUgbW9sZXN0aWUgdml0YWUgdmVsIHRlbGx1cy4g
+SW4gdmVzdGlidWx1bSB2dWxwdXRhdGUgdHVycGlzIGlkIHBvc3VlcmUuCgpOYW0g
+ZXN0IGVyYXQsIHJob25jdXMgbm9uIGltcGVyZGlldCBpbiwgc2FnaXR0aXMgdml0
+YWUgaXBzdW0uIE51bGxhIHJ1dHJ1bSB0aW5jaWR1bnQgbGVjdHVzIGV0IGJsYW5k
+aXQuIFV0IHNlZCBsaWd1bGEgbmlzbCwgbm9uIGRpY3R1bSBlcmF0LiBBZW5lYW4g
+bG9yZW0gZW5pbSwgbW9sbGlzIHV0IHRpbmNpZHVudCBpZCwgY29tbW9kbyBzaXQg
+YW1ldCBuaXNsLiBNYWVjZW5hcyBibGFuZGl0IHJob25jdXMgc2VtcGVyLiBGdXNj
+ZSBhIG1hc3NhIG9yY2ksIGV0IHZlbmVuYXRpcyBhcmN1LiBNYXVyaXMgbW9sbGlz
+IGR1aSBxdWlzIGZlbGlzIGJpYmVuZHVtIHBoYXJldHJhLiBDcmFzIHNlZCBpcHN1
+bSBtYXNzYSwgcG9ydHRpdG9yIHB1bHZpbmFyIG5pc2kuIExvcmVtIGlwc3VtIGRv
+bG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuIFZpdmFt
+dXMgY3Vyc3VzIGVsaXQgc2FnaXR0aXMgbGliZXJvIGhlbmRyZXJpdCB2ZXN0aWJ1
+bHVtLiBTZWQgcG9ydHRpdG9yLCB0b3J0b3IgdGluY2lkdW50IHBvcnR0aXRvciBz
+ZW1wZXIsIGRpYW0gbWFnbmEgZWxlaWZlbmQgbnVuYywgc2VkIGNvbmRpbWVudHVt
+IG5pYmggZXJhdCBxdWlzIG9kaW8uIERvbmVjIHBvc3VlcmUgdmVoaWN1bGEgcHVy
+dXMsIGluIHB1bHZpbmFyIG9kaW8gaW50ZXJkdW0gZXUuIFZlc3RpYnVsdW0gZmFj
+aWxpc2lzIHRpbmNpZHVudCBkYXBpYnVzLiBGdXNjZSBsdWN0dXMgbG9yZW0gZWdl
+dCBxdWFtIGFjY3Vtc2FuIGluIG1hdHRpcyBuaWJoIHZvbHV0cGF0LiBOdWxsYW0g
+ZXQgbGVvIGEgdXJuYSBwb3J0YSB2YXJpdXMgbm9uIHZpdGFlIGR1aS4gU2VkIGlu
+dGVyZHVtLCBtZXR1cyBldSBydXRydW0gcGhhcmV0cmEsIG5pc2wgc2VtIHRlbXB1
+cyBqdXN0bywgdmFyaXVzIGNvbnZhbGxpcyBpcHN1bSBkaWFtIHV0IGxlY3R1cy4K
+CkluIGhhYyBoYWJpdGFzc2UgcGxhdGVhIGRpY3R1bXN0LiBWZXN0aWJ1bHVtIGNv
+bmd1ZSBzb2RhbGVzIG5pc2kgcXVpcyBvcm5hcmUuIEZ1c2NlIGN1cnN1cyBuaXNp
+IGF0IHR1cnBpcyBjb25ndWUgaGVuZHJlcml0LiBWZXN0aWJ1bHVtIG5vbiBsYWN1
+cyB2ZWwgc2FwaWVuIHB1bHZpbmFyIHZlaGljdWxhIGF0IGluIGFudGUuIE51bGxh
+IGZhY2lsaXNpLiBVdCB0cmlzdGlxdWUgdGluY2lkdW50IGVyYXQgaWQgbHVjdHVz
+LiBDdXJhYml0dXIgcG9zdWVyZSBzb2RhbGVzIG5lcXVlIHF1aXMgdmFyaXVzLiBD
+dXJhYml0dXIgY3Vyc3VzIGFjY3Vtc2FuIGlwc3VtLCB2ZWwgbHVjdHVzIGxpZ3Vs
+YSBkYXBpYnVzIG5vbi4gQ3JhcyB2ZWhpY3VsYSBtYWduYSBpbiBsYWN1cyBvcm5h
+cmUgZGFwaWJ1cy4gRG9uZWMgYWxpcXVldCBzb2xsaWNpdHVkaW4gbGFjdXMsIGV1
+IGlhY3VsaXMgZXJhdCBiaWJlbmR1bSBjb21tb2RvLiBEb25lYyBibGFuZGl0IGJp
+YmVuZHVtIGZldWdpYXQuIFByYWVzZW50IGV1IGVzdCBqdXN0by4gUGVsbGVudGVz
+cXVlIGF0IGVuaW0gc2VkIHNlbSB2aXZlcnJhIGNvbnZhbGxpcy4gTWFlY2VuYXMg
+dmVuZW5hdGlzIG1ldHVzIHNhcGllbi4gU2VkIHBsYWNlcmF0IGZhY2lsaXNpcyBl
+bGl0IG5lYyBtYWxlc3VhZGEuIEZ1c2NlIHNhcGllbiBlc3QsIGNvbnNlcXVhdCBh
+IGNvbmd1ZSBlZ2V0LCBhY2N1bXNhbiBlZ2V0IGxvcmVtLiBTdXNwZW5kaXNzZSB0
+aW5jaWR1bnQgcHJldGl1bSBtYWduYSBlZ2V0IGRhcGlidXMuIEZ1c2NlIHZlbCBl
+cm9zIGV0IGxvcmVtIGNvbnNlcXVhdCB0cmlzdGlxdWUgbmVjIGEgaXBzdW0uCgpQ
+cm9pbiBxdWlzIGN1cnN1cyBhcmN1LiBNYWVjZW5hcyBlbGVpZmVuZCBsb3JlbSBp
+ZCBuaXNsIHNjZWxlcmlzcXVlIHBsYWNlcmF0LiBGdXNjZSBpbXBlcmRpZXQgbG9y
+ZW0gZXUgdXJuYSBkaWduaXNzaW0gZmVybWVudHVtLiBQZWxsZW50ZXNxdWUgbnVu
+YyBuaXNsLCBpbXBlcmRpZXQgdXQgYWNjdW1zYW4gaWQsIGZlcm1lbnR1bSBub24g
+bWF1cmlzLiBBZW5lYW4gZnJpbmdpbGxhIGxlY3R1cyB2aXRhZSB0dXJwaXMgZmVy
+bWVudHVtIHZpdGFlIGZhY2lsaXNpcyBvZGlvIG1vbGxpcy4gQWVuZWFuIG5vbiBz
+ZW0gZXQgZXJvcyBjb25ndWUgcG9ydGEgaWQgc2l0IGFtZXQgZGlhbS4gRG9uZWMg
+ZnJpbmdpbGxhIGVyb3MgYXQgcXVhbSBpbXBlcmRpZXQgYXQgZ3JhdmlkYSB0b3J0
+b3IgdWxsYW1jb3JwZXIuIEZ1c2NlIGRvbG9yIHJpc3VzLCB2aXZlcnJhIGlkIGFs
+aXF1ZXQgc2VkLCBkaWduaXNzaW0gcXVpcyBtYXVyaXMuIFF1aXNxdWUgYWMgbWV0
+dXMgaWQgcXVhbSBsb2JvcnRpcyB0cmlzdGlxdWUgYXQgdmVsIGVuaW0uIFBoYXNl
+bGx1cyBpbiB0b3J0b3IgbWF1cmlzLiBTZWQgdGluY2lkdW50IGR1aSBub24gZXJv
+cyBzb2xsaWNpdHVkaW4gdm9sdXRwYXQuIEN1cmFiaXR1ciB2aXZlcnJhIGVsZW1l
+bnR1bSBhcmN1IGFjIHVsdHJpY2VzLiBOdWxsYSBmZWxpcyBsaWd1bGEsIGF1Y3Rv
+ciBhdCBsYWNpbmlhIHNlZCwgdGluY2lkdW50IGF0IG1pLiBJbiB2ZWwgZWxpdCBv
+cmNpLiBWZXN0aWJ1bHVtIGVyYXQgbmlzaSwgbW9sZXN0aWUgdmVsIGF1Y3RvciB2
+ZWwsIHNhZ2l0dGlzIGFjIGxlY3R1cy4gUGVsbGVudGVzcXVlIHVsdHJpY2llcyBj
+b25kaW1lbnR1bSBudWxsYSBuZWMgZXVpc21vZC4KCkRvbmVjIGNvbnNlY3RldHVy
+IHZlbmVuYXRpcyBzZW1wZXIuIFN1c3BlbmRpc3NlIHZlbCBkaWN0dW0gYXVndWUu
+IFBlbGxlbnRlc3F1ZSBub24gbWF1cmlzIGp1c3RvLiBEb25lYyBhY2N1bXNhbiwg
+bWV0dXMgdXQgcHJldGl1bSBtb2xlc3RpZSwgbGlndWxhIGp1c3RvIGx1Y3R1cyBv
+cmNpLCBub24gdmFyaXVzIG1pIG5pYmggZXUganVzdG8uIFZlc3RpYnVsdW0gc2Vt
+IHNlbSwgdGluY2lkdW50IGVnZXQgcG9ydGEgYSwgZmVybWVudHVtIGV0IHNhcGll
+bi4gTnVsbGEgZmFjaWxpc2kuIFBlbGxlbnRlc3F1ZSBpbiB2ZXN0aWJ1bHVtIGFu
+dGUuIE51bmMgaWFjdWxpcyBsaWd1bGEgbmVjIG9kaW8gc2FnaXR0aXMgbmVjIHBv
+cnR0aXRvciBuaWJoIHNlbXBlci4gVXQgZWdldCBtZXR1cyBvcmNpLiBQcm9pbiBn
+cmF2aWRhIG9yY2kgZGlnbmlzc2ltIGRpYW0gaWFjdWxpcyBhY2N1bXNhbi4gQWVu
+ZWFuIGF1Z3VlIG9yY2ksIHBsYWNlcmF0IGV0IGNvbnZhbGxpcyBlZ2V0LCBzb2Rh
+bGVzIHF1aXMgZGlhbS4gU2VkIHN1c2NpcGl0IG5pc2kgcXVpcyBsaWJlcm8gc29s
+bGljaXR1ZGluIGV1IG1vbGxpcyBuZXF1ZSBtb2xlc3RpZS4gTWFlY2VuYXMgcHVy
+dXMgbmlzbCwgY29uc2VjdGV0dXIgbm9uIHZlaGljdWxhIHNpdCBhbWV0LCB1bGxh
+bWNvcnBlciBxdWlzIG5pYmguIFByYWVzZW50IHF1YW0gaXBzdW0sIG1vbGVzdGll
+IGV1IHB1bHZpbmFyIGF0LCBpYWN1bGlzIGV1IHR1cnBpcy4gQ3JhcyBuZWMgZWxp
+dCB1dCBsaWJlcm8gc3VzY2lwaXQgYWxpcXVldCBldCBuZWMgbGVjdHVzLiBWZXN0
+aWJ1bHVtIHB1cnVzIGF1Z3VlLCB0cmlzdGlxdWUgdml0YWUgY29udmFsbGlzIGF0
+LCB2ZWhpY3VsYSBub24gbWV0dXMuIEZ1c2NlIGx1Y3R1cyBjb25ndWUgbWksIHZl
+bCBzYWdpdHRpcyBkb2xvciBtb2xsaXMgdmVsLiBQcmFlc2VudCBpbiBudW5jIGFj
+Y3Vtc2FuIGxvcmVtIGxvYm9ydGlzIGlhY3VsaXMgdXQgdml0YWUgaXBzdW0uIFN1
+c3BlbmRpc3NlIHB1bHZpbmFyLCBudW5jIGFjIGFsaXF1ZXQgc2VtcGVyLCBsYWN1
+cyBsb3JlbSBldWlzbW9kIHB1cnVzLCB2ZWwgbW9sbGlzIG1ldHVzIHJpc3VzIG5l
+YyBzYXBpZW4uCgpJbiB2ZW5lbmF0aXMgcG9zdWVyZSBzYXBpZW4sIHNpdCBhbWV0
+IGV1aXNtb2QgZG9sb3IgcGVsbGVudGVzcXVlIGV1LiBQcmFlc2VudCBsYW9yZWV0
+IGZlbGlzIHV0IG1ldHVzIHZlc3RpYnVsdW0gY29uZGltZW50dW0uIFV0IHNjZWxl
+cmlzcXVlIGxlbyBhdWd1ZS4gU3VzcGVuZGlzc2Ugdml0YWUgZG9sb3IgcHVydXMs
+IGlkIHJ1dHJ1bSBhbnRlLiBGdXNjZSBpbiB2ZWxpdCBhbnRlLCBhIHBlbGxlbnRl
+c3F1ZSBtaS4gTWFlY2VuYXMgdmVsIHJpc3VzIGVnZXQgb3JjaSBmZXJtZW50dW0g
+cHJldGl1bSBuZWMgdmVsIHNhcGllbi4gUGhhc2VsbHVzIGlwc3VtIG1hZ25hLCBi
+aWJlbmR1bSBxdWlzIGZhdWNpYnVzIHZlbCwgcGxhY2VyYXQgaWQgbWFnbmEuIFZp
+dmFtdXMgcXVhbSBkdWksIGNvbnNlY3RldHVyIHNlZCBwdWx2aW5hciBldSwgaW50
+ZXJkdW0gaWQgaXBzdW0uIENyYXMgbG9ib3J0aXMgZmFjaWxpc2lzIHJ1dHJ1bS4g
+Q3VtIHNvY2lpcyBuYXRvcXVlIHBlbmF0aWJ1cyBldCBtYWduaXMgZGlzIHBhcnR1
+cmllbnQgbW9udGVzLCBuYXNjZXR1ciByaWRpY3VsdXMgbXVzLiBOYW0gdmVzdGli
+dWx1bSBudW5jIHNlZCBqdXN0byBkaWduaXNzaW0gYWMgdGluY2lkdW50IHNhcGll
+biBjb25ndWUuCgpQaGFzZWxsdXMgbm9uIGRpY3R1bSB0dXJwaXMuIFByb2luIGVn
+ZXQgbWFzc2EgbGFjaW5pYSBsaWJlcm8gcnV0cnVtIHZlc3RpYnVsdW0uIE51bGxh
+IGFsaXF1ZXQgbGliZXJvIGlkIHNhcGllbiBhbGlxdWFtIGZlcm1lbnR1bS4gVml2
+YW11cyBsZWN0dXMgaXBzdW0sIHBoYXJldHJhIHV0IGRhcGlidXMgdXQsIGFsaXF1
+YW0gYWMgbmVxdWUuIFZpdmFtdXMgZmF1Y2lidXMgbWkgcXVpcyBtYXVyaXMgcnV0
+cnVtIGFjIHBsYWNlcmF0IG5pc2kgc2NlbGVyaXNxdWUuIE1hdXJpcyBlbGl0IG9y
+Y2ksIGFkaXBpc2NpbmcgZXUgY29uc2VxdWF0IGlkLCB2ZW5lbmF0aXMgaW4gbnVu
+Yy4gQWVuZWFuIG5vbiBibGFuZGl0IGxpYmVyby4gU3VzcGVuZGlzc2UgaWQgYXVn
+dWUgZHVpLiBRdWlzcXVlIG5lYyBvcmNpIHZlbCBvZGlvIG1hdHRpcyBncmF2aWRh
+LiBWZXN0aWJ1bHVtIGFudGUgaXBzdW0gcHJpbWlzIGluIGZhdWNpYnVzIG9yY2kg
+bHVjdHVzIGV0IHVsdHJpY2VzIHBvc3VlcmUgY3ViaWxpYSBDdXJhZTsgTWF1cmlz
+IHZvbHV0cGF0IGR1aSB1dCBsYWN1cyBhZGlwaXNjaW5nIGJpYmVuZHVtLiBMb3Jl
+bSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBl
+bGl0LiBWaXZhbXVzIHZlbmVuYXRpcyBqdXN0byBldSBzYXBpZW4gZmVybWVudHVt
+IGNvbmd1ZSBxdWlzIGluIG51bmMuIE51bGxhbSBsYWNpbmlhIGVyb3MgbG9yZW0s
+IHV0IGFsaXF1YW0gb3JjaS4gUGhhc2VsbHVzIHN1c2NpcGl0LCBsYWN1cyBldCB0
+ZW1wb3Igc2VtcGVyLCBlc3QgbWF1cmlzIGNvbmd1ZSBtYXNzYSwgc2VkIHVsdHJp
+Y2VzIG9yY2kgZGlhbSB2aXRhZSBpcHN1bS4KCk51bGxhIGZhY2lsaXNpLiBTZWQg
+cG9zdWVyZSBmcmluZ2lsbGEgZmVsaXMsIGFjIHZlbmVuYXRpcyBkdWkgdnVscHV0
+YXRlIHV0LiBQcm9pbiBlbGVpZmVuZCB0ZW1wb3IgbW9sZXN0aWUuIE51bGxhIHRp
+bmNpZHVudCBsZWN0dXMgdml0YWUgbmVxdWUgYmliZW5kdW0gcHJldGl1bS4gSW4g
+bGliZXJvIG5pc2wsIHRyaXN0aXF1ZSBuZWMgYmliZW5kdW0gc2l0IGFtZXQsIHVs
+bGFtY29ycGVyIG5lYyBlcmF0LiBTdXNwZW5kaXNzZSBpbnRlcmR1bSBwb3J0YSBv
+cmNpLCBxdWlzIHZpdmVycmEgZXJhdCBhdWN0b3IgYXQuIER1aXMgYWMgZGlhbSBl
+dCBsaWd1bGEgYmxhbmRpdCB0ZW1wb3IgbmVjIGV1IGxhY3VzLiBDdW0gc29jaWlz
+IG5hdG9xdWUgcGVuYXRpYnVzIGV0IG1hZ25pcyBkaXMgcGFydHVyaWVudCBtb250
+ZXMsIG5hc2NldHVyIHJpZGljdWx1cyBtdXMuIFByYWVzZW50IHBlbGxlbnRlc3F1
+ZSB2YXJpdXMgbnVsbGEgdmVsIGFsaXF1YW0uIEFsaXF1YW0gdXQgbGVjdHVzIG1h
+dXJpcywgaWQgYWxpcXVldCBsYWN1cy4gSW50ZWdlciBzY2VsZXJpc3F1ZSBlbGVt
+ZW50dW0gZHVpLCBldSBsYW9yZWV0IGF1Z3VlIGVsZW1lbnR1bSBzaXQgYW1ldC4g
+VXQgdWxsYW1jb3JwZXIgdGVsbHVzIGNvbnZhbGxpcyBzYXBpZW4gdmVzdGlidWx1
+bSBub24gbGFvcmVldCBwdXJ1cyBhZGlwaXNjaW5nLiBOdW5jIG5lYyBxdWFtIG51
+bmMuIFZpdmFtdXMgdWx0cmljZXMgZmVybWVudHVtIG1hc3NhLCBzaXQgYW1ldCBz
+Y2VsZXJpc3F1ZSBudW5jIGltcGVyZGlldCB1dC4KClZlc3RpYnVsdW0gYW50ZSBp
+cHN1bSBwcmltaXMgaW4gZmF1Y2lidXMgb3JjaSBsdWN0dXMgZXQgdWx0cmljZXMg
+cG9zdWVyZSBjdWJpbGlhIEN1cmFlOyBJbiBoYWMgaGFiaXRhc3NlIHBsYXRlYSBk
+aWN0dW1zdC4gTnVsbGFtIHRpbmNpZHVudCBtb2xlc3RpZSBpcHN1bSB2ZWwgcmhv
+bmN1cy4gSW50ZWdlciBlZ2V0IG51bmMgZXUgdGVsbHVzIHRpbmNpZHVudCBsYWNp
+bmlhLiBJbnRlZ2VyIG5lYyBuaXNpIGVnZXQgYXVndWUgc2VtcGVyIHZhcml1cyBp
+ZCBhYyBxdWFtLiBOYW0gdGluY2lkdW50LCB0ZWxsdXMgYWMgY29uZGltZW50dW0g
+YWNjdW1zYW4sIGRvbG9yIGVyb3Mgdml2ZXJyYSBsZW8sIHBoYXJldHJhIHB1bHZp
+bmFyIGxlY3R1cyBlcm9zIGluIG1pLiBEb25lYyBjb25zZXF1YXQsIHR1cnBpcyBp
+ZCBjb252YWxsaXMgdm9sdXRwYXQsIGFudGUgc2VtIGVsZW1lbnR1bSBtYWduYSwg
+cXVpcyB0ZW1wb3IgcmlzdXMgZGlhbSB2ZWwgdHVycGlzLiBNb3JiaSBhIG9yY2kg
+b3JjaSwgZWdlc3RhcyBmZXVnaWF0IGxlY3R1cy4gTnVsbGEgbmVjIG5pYmggaWQg
+YXVndWUgaW50ZXJkdW0gbW9sbGlzLiBTdXNwZW5kaXNzZSBwbGFjZXJhdCB0ZW1w
+dXMgbnVuYyBhYyB2ZXN0aWJ1bHVtLiBEb25lYyBldCBtZXR1cyBkaWN0dW0gbGVv
+IGJpYmVuZHVtIHVsdHJpY2VzIGluIG5lYyBsZWN0dXMuIFV0IHNlZCB2ZWxpdCBu
+aWJoLCBzb2RhbGVzIHBvcnRhIG51bmMuIEluIGhhYyBoYWJpdGFzc2UgcGxhdGVh
+IGRpY3R1bXN0LiBTZWQgZWxpdCB0b3J0b3IsIGFsaXF1ZXQgdmVsIHZvbHV0cGF0
+IGEsIHRpbmNpZHVudCBzZWQgc2FwaWVuLiBTdXNwZW5kaXNzZSBlZ2V0IGxpYmVy
+byBsYWN1cy4gVml2YW11cyBhdWN0b3IgYW50ZSBub24gbmVxdWUgcG9ydHRpdG9y
+IHV0IHByZXRpdW0gbmlzbCB0ZW1wdXMuIE51bGxhIHNvZGFsZXMgcmlzdXMgZXQg
+ZXJhdCB2YXJpdXMgbGFvcmVldC4gTWFlY2VuYXMgbHVjdHVzIGxvYm9ydGlzIGxp
+Z3VsYSBlZ2V0IGZlcm1lbnR1bS4KClZpdmFtdXMgY29udmFsbGlzIG5pYmggdml0
+YWUgdHVycGlzIGZldWdpYXQgdWx0cmljZXMuIFF1aXNxdWUgdml0YWUgYmxhbmRp
+dCBtYXNzYS4gTWF1cmlzIGV1aXNtb2QgdXJuYSB1dCBuZXF1ZSBmZXJtZW50dW0g
+dml0YWUgaW1wZXJkaWV0IG1hdXJpcyBldWlzbW9kLiBJbiBhIGR1aSB0ZWxsdXMs
+IG5lYyBwb3N1ZXJlIGRvbG9yLiBBZW5lYW4gdWxsYW1jb3JwZXIgYXVndWUgaWQg
+ZXJhdCBsYWNpbmlhIHB1bHZpbmFyLiBQZWxsZW50ZXNxdWUgYXQgbnVsbGEgdGVs
+bHVzLiBOYW0gZWxlbWVudHVtIGlhY3VsaXMgcHVsdmluYXIuIFZpdmFtdXMgdG9y
+dG9yIGxlY3R1cywgZ3JhdmlkYSB1dCBjb21tb2RvIGEsIHZpdmVycmEgdXQgb2Rp
+by4gUGhhc2VsbHVzIGVsZW1lbnR1bSBibGFuZGl0IG9kaW8sIG5lYyBkYXBpYnVz
+IGFudGUgbWFsZXN1YWRhIGEuIE1hZWNlbmFzIGltcGVyZGlldCwgZmVsaXMgYSBz
+ZW1wZXIgZmFjaWxpc2lzLCBtYXNzYSBudWxsYSBhbGlxdWV0IHRvcnRvciwgZXQg
+bWFsZXN1YWRhIG1hZ25hIGxlY3R1cyBhYyBwdXJ1cy4gQWVuZWFuIGF1Y3RvciB0
+ZWxsdXMgaWQganVzdG8gY29uZGltZW50dW0gdHJpc3RpcXVlLiBDcmFzIHZpdGFl
+IHJ1dHJ1bSBhcmN1LiBNYXVyaXMgdGVtcHVzLCBtYWduYSBlZ2V0IHZhcml1cyBp
+bnRlcmR1bSwgbmlzbCBqdXN0byBwb3J0YSBhdWd1ZSwgc2VkIHBvcnRhIG5pc2wg
+cXVhbSBhIG5pYmguIE1hZWNlbmFzIHZpdGFlIHB1cnVzIGRpYW0uIFByYWVzZW50
+IGJpYmVuZHVtIG5pYmggZHVpLCBpbiB0aW5jaWR1bnQgbnVuYy4gRHVpcyB2aXRh
+ZSBzZW0gYW50ZS4KCk1hdXJpcyBwb3N1ZXJlIGZlbGlzIGV0IHR1cnBpcyBzb2Rh
+bGVzIGhlbmRyZXJpdCB1dCBpZCBudW5jLiBEb25lYyBsYW9yZWV0IG1hbGVzdWFk
+YSBlcm9zLiBOYW0gcXVpcyBkaWFtIGFyY3UsIGV1IHRyaXN0aXF1ZSB0ZWxsdXMu
+IFBlbGxlbnRlc3F1ZSBxdWlzIGVsaXQgbnVuYy4gQ3JhcyBsZW8gbG9yZW0sIG9y
+bmFyZSBjb21tb2RvIG1vbGVzdGllIHNpdCBhbWV0LCBjb25zZXF1YXQgdmVsIGVz
+dC4gSW4gaGFjIGhhYml0YXNzZSBwbGF0ZWEgZGljdHVtc3QuIENyYXMgcmlzdXMg
+cXVhbSwgc3VzY2lwaXQgc2VtcGVyIGltcGVyZGlldCB1bHRyaWNlcywgdHJpc3Rp
+cXVlIG5lYyBzYXBpZW4uIFBlbGxlbnRlc3F1ZSBjb25kaW1lbnR1bSwgdHVycGlz
+IG5lYyBzb2RhbGVzIGNvbnNlY3RldHVyLCBkaWFtIHNlbSBiaWJlbmR1bSBkaWFt
+LCB2aXRhZSBhbGlxdWV0IG1pIGFyY3UgYSBhcmN1LiBQaGFzZWxsdXMgaGVuZHJl
+cml0LCBtYWduYSBxdWlzIGdyYXZpZGEgZmVybWVudHVtLCBtYWduYSBsZWN0dXMg
+c2VtcGVyIG1hc3NhLCBzZWQgY29uZ3VlIHVybmEgbmliaCBhdCBudWxsYS4gQ3Jh
+cyBzZWQgbmliaCBtaS4gTnVsbGEgdGVtcG9yIHByZXRpdW0gcG9ydGEuCgpVdCBp
+ZCBqdXN0byB2aXRhZSB0dXJwaXMgY29udmFsbGlzIGNvbmd1ZS4gQ3VyYWJpdHVy
+IG1hbGVzdWFkYSBwdXJ1cyBlZ2V0IGRpYW0gYXVjdG9yIGV0IHVsbGFtY29ycGVy
+IHZlbGl0IG1hbGVzdWFkYS4gUGhhc2VsbHVzIHNjZWxlcmlzcXVlIGZlcm1lbnR1
+bSBsaWJlcm8uIE1vcmJpIGR1aSB0b3J0b3IsIGJsYW5kaXQgbWFsZXN1YWRhIGxv
+Ym9ydGlzIHVsdHJpY2llcywgYmxhbmRpdCBldCBuaXNpLiBOdWxsYSBtYXR0aXMg
+ZmFjaWxpc2lzIGxhY3VzLiBBbGlxdWFtIHNvZGFsZXMgZWxpdCBzaXQgYW1ldCBt
+ZXR1cyB2ZW5lbmF0aXMgYSBjb21tb2RvIHF1YW0gYmliZW5kdW0uIFV0IG5vbiB0
+ZWxsdXMgdG9ydG9yLiBTZWQgc2VtcGVyLCBuaXNpIGluIHRlbXBvciB2ZXN0aWJ1
+bHVtLCBzZW0gbnVsbGEgZXVpc21vZCBhcmN1LCB1dCBzb2RhbGVzIGVzdCBudW5j
+IGF0IHRlbGx1cy4gRG9uZWMgbm9uIG1ldHVzIG5vbiBkb2xvciBzY2VsZXJpc3F1
+ZSB2aXZlcnJhLiBQaGFzZWxsdXMgbmVjIG51bGxhIGp1c3RvLCB1dCBwb3J0dGl0
+b3IgbnVsbGEuIEZ1c2NlIGZldWdpYXQgZ3JhdmlkYSBzb2xsaWNpdHVkaW4uIFNl
+ZCBpZCBoZW5kcmVyaXQgbWF1cmlzLiBEb25lYyBsZWN0dXMgdG9ydG9yLCBwb3J0
+YSBzaXQgYW1ldCBjb25kaW1lbnR1bSBzZWQsIHZhcml1cyBhIHZlbGl0LiBJbiBk
+aWN0dW0gZG9sb3Igc2VkIGVzdCBkaWN0dW0gaW4gcnV0cnVtIG5lcXVlIHN1c2Np
+cGl0LgoKTWFlY2VuYXMgaW1wZXJkaWV0IGNvbnZhbGxpcyB1bHRyaWNpZXMuIEN1
+bSBzb2NpaXMgbmF0b3F1ZSBwZW5hdGlidXMgZXQgbWFnbmlzIGRpcyBwYXJ0dXJp
+ZW50IG1vbnRlcywgbmFzY2V0dXIgcmlkaWN1bHVzIG11cy4gUGVsbGVudGVzcXVl
+IG51bmMgdHVycGlzLCBpYWN1bGlzIHF1aXMgZWxlaWZlbmQgZXUsIHRpbmNpZHVu
+dCB1dCBsYWN1cy4gQ3VyYWJpdHVyIHZpdGFlIHRlbGx1cyBuaWJoLiBQZWxsZW50
+ZXNxdWUgZWdldCBjb21tb2RvIG5pYmguIE51bGxhIGxhb3JlZXQsIGVyb3MgaWQg
+aW1wZXJkaWV0IG1vbGxpcywgbmlzaSBlc3QgZWdlc3RhcyBmZWxpcywgZWdldCBs
+dWN0dXMgZW5pbSBsYWN1cyB2aXRhZSBhcmN1LiBOdWxsYW0gaXBzdW0gZGlhbSwg
+ZmF1Y2lidXMgZmV1Z2lhdCBjb21tb2RvIGV0LCB0ZW1wb3IgYWMgbGFjdXMuIERv
+bmVjIHZlbCBlcmF0IG1hc3NhLCBhdCBwcmV0aXVtIGVzdC4gUGVsbGVudGVzcXVl
+IGx1Y3R1cyBuaXNpIG51bGxhLCBhYyBhbGlxdWV0IGF1Z3VlLiBNYWVjZW5hcyBp
+ZCBwaGFyZXRyYSBkb2xvci4gUHJvaW4gZGFwaWJ1cyBtYXR0aXMgY3Vyc3VzLiBN
+b3JiaSBpbnRlcmR1bSwgZW5pbSBxdWlzIGZlcm1lbnR1bSBwbGFjZXJhdCwgbmlz
+aSBtaSBjb25ndWUgc2VtLCBhIHRlbXBvciBuaXNsIG1hdXJpcyBpbiBzZW0uIElu
+IGNvbmRpbWVudHVtLCBpcHN1bSBuZWMgdmVuZW5hdGlzIHZlbmVuYXRpcywgbnVs
+bGEgZW5pbSBsYW9yZWV0IGFudGUsIG5lYyBoZW5kcmVyaXQgaXBzdW0gbGVjdHVz
+IGVnZXQgcmlzdXMuIFBlbGxlbnRlc3F1ZSBlbmltIGxpYmVybywgdGluY2lkdW50
+IHZpdGFlIG1vbGVzdGllIHNpdCBhbWV0LCBncmF2aWRhIG5lYyBsYWN1cy4gRHVp
+cyBhYyBzYXBpZW4gbGliZXJvLCBpbiBhbGlxdWV0IHF1YW0uIE1vcmJpIHRlbXBv
+ciBsaWJlcm8gcXVpcyBlc3QgZ3JhdmlkYSBzZWQgZWdlc3RhcyBudWxsYSB2dWxw
+dXRhdGUuCgpEb25lYyBsYWNpbmlhIG1pIGF0IHRlbGx1cyB2aXZlcnJhIGxvYm9y
+dGlzLiBOdWxsYSBpbnRlcmR1bSwgdXJuYSB1dCBmYXVjaWJ1cyBzZW1wZXIsIGR1
+aSBsZWN0dXMgZnJpbmdpbGxhIGVyYXQsIHV0IGFsaXF1YW0gbmlzbCBpcHN1bSBh
+dCBlcm9zLiBWaXZhbXVzIGNvbnZhbGxpcyBoZW5kcmVyaXQgYXJjdSBxdWlzIGNv
+bmRpbWVudHVtLiBQcmFlc2VudCBhdCBmZXVnaWF0IHNhcGllbi4gUXVpc3F1ZSBu
+b24gb3JjaSBhcmN1LiBQZWxsZW50ZXNxdWUgZWdldCBtaSBhcmN1LCBzaXQgYW1l
+dCBsdWN0dXMgbnVuYy4gQ3VyYWJpdHVyIGxlY3R1cyBsZW8sIGNvbnNlcXVhdCBz
+ZW1wZXIgaW1wZXJkaWV0IGV0LCBlbGVtZW50dW0gdml0YWUgZGlhbS4gUHJvaW4g
+cHVydXMgbnVsbGEsIHB1bHZpbmFyIGlkIGltcGVyZGlldCBzZWQsIGZldWdpYXQg
+YSBudWxsYS4gUHJvaW4gc3VzY2lwaXQgZWxpdCB2ZWwgYXJjdSB2ZW5lbmF0aXMg
+c29kYWxlcy4gQ3JhcyBhY2N1bXNhbiBtYXNzYSBhYyBudWxsYSBwdWx2aW5hciBm
+ZXVnaWF0IGV1IGF0IHRlbGx1cy4gUXVpc3F1ZSB2aXRhZSBlcmF0IG9yY2ksIG5v
+biB0ZW1wb3IgZW5pbS4gRG9uZWMgb3JuYXJlIGxvYm9ydGlzIG1pIHZpdGFlIGNv
+bnNlcXVhdC4gSW50ZWdlciB2aXZlcnJhLCB2ZWxpdCB2ZWwgcGVsbGVudGVzcXVl
+IGFjY3Vtc2FuLCBhdWd1ZSBsaWd1bGEgYmxhbmRpdCBuaXNsLCBlZ2V0IGNvbmRp
+bWVudHVtIG5lcXVlIGFyY3UgaW4gZXJhdC4gTmFtIHF1aXMgbG9yZW0gbG9yZW0s
+IHZlbCBjdXJzdXMgcmlzdXMuIEluIG5lYyBudW5jIGRvbG9yLCBxdWlzIHBvcnR0
+aXRvciBuZXF1ZS4gTWFlY2VuYXMgdHVycGlzIG9kaW8sIGRpY3R1bSB2aXRhZSBj
+b21tb2RvIHRpbmNpZHVudCwgYWxpcXVhbSB1dCBhdWd1ZS4gUGhhc2VsbHVzIGF0
+IGp1c3RvIGxhY3VzLiBQaGFzZWxsdXMgc2l0IGFtZXQgdXJuYSBhdCBhbnRlIHZh
+cml1cyBwZWxsZW50ZXNxdWUuIFBlbGxlbnRlc3F1ZSBpbiBsaWJlcm8gYWMgdXJu
+YSBmcmluZ2lsbGEgdGluY2lkdW50IHZpdGFlIHNlZCB2ZWxpdC4KCkRvbmVjIGFj
+IHJpc3VzIHNhcGllbi4gTnVsbGEgZmFjaWxpc2kuIERvbmVjIGF0IHZlbGl0IG5v
+biBudW5jIHRlbXB1cyBmZXJtZW50dW0uIEN1bSBzb2NpaXMgbmF0b3F1ZSBwZW5h
+dGlidXMgZXQgbWFnbmlzIGRpcyBwYXJ0dXJpZW50IG1vbnRlcywgbmFzY2V0dXIg
+cmlkaWN1bHVzIG11cy4gRnVzY2UgaW50ZXJkdW0gYWxpcXVhbSBsb3JlbSwgaW4g
+c2NlbGVyaXNxdWUgZW5pbSB0aW5jaWR1bnQgaWQuIFByYWVzZW50IHNvbGxpY2l0
+dWRpbiBkdWkgbmVjIGxhY3VzIGxhY2luaWEgcGxhY2VyYXQuIFV0IGVnZXQgbWF0
+dGlzIG1ldHVzLiBJbiB2ZWwgc2VtIHVybmEsIGV1IGNvbnZhbGxpcyB0dXJwaXMu
+IER1aXMgaGVuZHJlcml0IGlwc3VtIHVybmEsIG5vbiBwZWxsZW50ZXNxdWUgb3Jj
+aS4gVXQgZXN0IG1ldHVzLCBlbGVtZW50dW0gaW4gYmliZW5kdW0gaWQsIHZpdmVy
+cmEgZGlnbmlzc2ltIHRlbGx1cy4gRHVpcyBpZCBlcmF0IGxpYmVyby4gVmVzdGli
+dWx1bSBpbiBsaWJlcm8gbm9uIHNlbSB0aW5jaWR1bnQgZWxlbWVudHVtIHNlZCBl
+dCBuaXNpLiBQaGFzZWxsdXMgbGVjdHVzIGVyYXQsIGVsZWlmZW5kIGlkIHNhZ2l0
+dGlzIHV0LCBmcmluZ2lsbGEgc2VkIHR1cnBpcy4gQWxpcXVhbSB2ZWwgZXJvcyBp
+ZCBudW5jIHZlbmVuYXRpcyB1bGxhbWNvcnBlci4gQWxpcXVhbSB0cmlzdGlxdWUg
+bWFzc2EgYSBtYXVyaXMgc2NlbGVyaXNxdWUgbm9uIGZhdWNpYnVzIG5lcXVlIHVs
+dHJpY2llcy4KCkFsaXF1YW0gY29uc2VxdWF0IGx1Y3R1cyBlbGl0LCBpZCBtYWxl
+c3VhZGEgZXJvcyBsb2JvcnRpcyB1dC4gTnVsbGFtIGEgaGVuZHJlcml0IGxpYmVy
+by4gTWFlY2VuYXMgZXQgc2VtIGF0IGVyYXQgbWF0dGlzIGVsZWlmZW5kIHNlZCBz
+aXQgYW1ldCBzZW0uIE51bGxhIGxvYm9ydGlzIG5pYmggYSBvcmNpIGVsZWlmZW5k
+IHRlbXBvci4gUHJvaW4gbnVsbGEgZmVsaXMsIHZlbmVuYXRpcyBxdWlzIHVsdHJp
+Y2llcyB2ZWwsIGFsaXF1ZXQgaW4gZG9sb3IuIFBoYXNlbGx1cyB0aW5jaWR1bnQg
+ZG9sb3IgZmVybWVudHVtIG1hc3NhIGlhY3VsaXMgZGlnbmlzc2ltIHZlbCB1dCBk
+dWkuIFByb2luIHRpbmNpZHVudCBzYWdpdHRpcyBzb2RhbGVzLiBQcm9pbiBtYXR0
+aXMgdmFyaXVzIGVuaW0sIGF0IGx1Y3R1cyBzZW0gaGVuZHJlcml0IGV1LiBVdCB2
+aXRhZSBncmF2aWRhIG9kaW8uIEFsaXF1YW0gZXJhdCB2b2x1dHBhdC4gTnVsbGEg
+ZnJpbmdpbGxhIHBsYWNlcmF0IHZlbGl0LCBzZWQgYWxpcXVldCBudWxsYSBpbXBl
+cmRpZXQgYS4gRG9uZWMgZWxlaWZlbmQgcHVsdmluYXIgb3JjaSwgaW4gcG9ydGEg
+ZGlhbSBwb3N1ZXJlIGJpYmVuZHVtLiBQcm9pbiBlZ2VzdGFzIHBvcnR0aXRvciBh
+bGlxdWFtLiBRdWlzcXVlIHNhcGllbiBmZWxpcywgaGVuZHJlcml0IGlkIGNvbmd1
+ZSBldSwgdGluY2lkdW50IHNlZCBlc3QuIFZpdmFtdXMgY3Vyc3VzIHByZXRpdW0g
+ZXJhdCB1dCBmYXVjaWJ1cy4gSW50ZWdlciBsaWJlcm8gZWxpdCwgdmVuZW5hdGlz
+IHZlbCBhbGlxdWV0IG5lYywgaW50ZXJkdW0gaW4gZW5pbS4gTmFtIGEgdmVsaXQg
+anVzdG8sIHZpdGFlIGlhY3VsaXMgdHVycGlzLgoKVml2YW11cyBuaWJoIGxpZ3Vs
+YSwgaW50ZXJkdW0gdmVzdGlidWx1bSB2ZW5lbmF0aXMgdml0YWUsIGZlcm1lbnR1
+bSBpbiBtYWduYS4gU3VzcGVuZGlzc2UgZHVpIGFyY3UsIGdyYXZpZGEgYWMgZWdl
+c3RhcyBub24sIGNvbmd1ZSBub24gZGlhbS4gUGVsbGVudGVzcXVlIGhhYml0YW50
+IG1vcmJpIHRyaXN0aXF1ZSBzZW5lY3R1cyBldCBuZXR1cyBldCBtYWxlc3VhZGEg
+ZmFtZXMgYWMgdHVycGlzIGVnZXN0YXMuIFBlbGxlbnRlc3F1ZSBwdWx2aW5hciBw
+aGFyZXRyYSBsb3JlbSwgZXQgcG9zdWVyZSBzZW0gY29uZ3VlIHV0LiBTZWQgZWxl
+bWVudHVtIGNvbnZhbGxpcyBkb2xvciBldSB2dWxwdXRhdGUuIEludGVnZXIgbmli
+aCBqdXN0bywgcGVsbGVudGVzcXVlIGVnZXQgdWx0cmljaWVzIGF1Y3RvciwgZmVy
+bWVudHVtIG5vbiBtaS4gUGVsbGVudGVzcXVlIGF0IG5lcXVlIGVzdC4gQ3VyYWJp
+dHVyIHBlbGxlbnRlc3F1ZSBhcmN1IHNlZCBsYWN1cyBwbGFjZXJhdCBxdWlzIGRp
+Z25pc3NpbSBvcmNpIHBsYWNlcmF0LiBOdWxsYW0gcGVsbGVudGVzcXVlIGxpYmVy
+byBpZCBhbnRlIGRhcGlidXMgc2VkIGJpYmVuZHVtIG1ldHVzIHRyaXN0aXF1ZS4g
+Vml2YW11cyBpZCBkdWkgcXVpcyBhcmN1IHVsdHJpY2VzIHZpdmVycmEuIFBlbGxl
+bnRlc3F1ZSBhdWN0b3IgbmlzaSBzZWQgZXN0IGxhb3JlZXQgdml2ZXJyYS4gU3Vz
+cGVuZGlzc2UgbGFjaW5pYSBsZWN0dXMgbWFzc2EuIEFsaXF1YW0gZXJhdCB2b2x1
+dHBhdC4KClF1aXNxdWUgdWxsYW1jb3JwZXIgYXVndWUgaW4ganVzdG8gdWx0cmlj
+aWVzIHBvcnRhLiBTZWQgcXVpcyBhcmN1IGFjIGxvcmVtIGFjY3Vtc2FuIHBvc3Vl
+cmUuIE1hdXJpcyBjb25zZXF1YXQsIGxpYmVybyBlZ2V0IGZldWdpYXQgbG9ib3J0
+aXMsIGlwc3VtIGZlbGlzIHZlc3RpYnVsdW0gdGVsbHVzLCB2ZWwgdWx0cmljZXMg
+aXBzdW0gYXJjdSBldSBuaXNsLiBDdW0gc29jaWlzIG5hdG9xdWUgcGVuYXRpYnVz
+IGV0IG1hZ25pcyBkaXMgcGFydHVyaWVudCBtb250ZXMsIG5hc2NldHVyIHJpZGlj
+dWx1cyBtdXMuIEluIGhhYyBoYWJpdGFzc2UgcGxhdGVhIGRpY3R1bXN0LiBEdWlz
+IHZpdmVycmEgdHVycGlzIHZlbCBlbGl0IGVsZWlmZW5kIGF0IHBvcnR0aXRvciB2
+ZWxpdCByaG9uY3VzLiBTZWQgYXQgZG9sb3IgcXVpcyBuaXNpIGNvbW1vZG8gcG9y
+dHRpdG9yLiBNb3JiaSBsb3JlbSBvcmNpLCBjb21tb2RvIGEgbGFvcmVldCBuZWMs
+IHZhcml1cyBhdCBsYWN1cy4gTWF1cmlzIHNlZCB2YXJpdXMgZW5pbS4gQWxpcXVh
+bSBncmF2aWRhIGFkaXBpc2Npbmcgc2VtIG5vbiBzZW1wZXIuIFN1c3BlbmRpc3Nl
+IGVnZXQgZ3JhdmlkYSBudW5jLgoKQ3JhcyB2ZXN0aWJ1bHVtIHRvcnRvciBuZWMg
+bGlndWxhIG9ybmFyZSB0ZW1wb3IuIFV0IGlhY3VsaXMgbGlndWxhIGV0IGxlY3R1
+cyB0aW5jaWR1bnQgaWFjdWxpcy4gTWFlY2VuYXMgcHVsdmluYXIgdm9sdXRwYXQg
+bGFjaW5pYS4gQ3VyYWJpdHVyIGhlbmRyZXJpdCBtYWxlc3VhZGEgbGVjdHVzLCBz
+ZWQgbWFsZXN1YWRhIGVyb3MgZWdlc3RhcyBlZ2V0LiBBbGlxdWFtIGJpYmVuZHVt
+IHZhcml1cyBvZGlvIHZhcml1cyBtYXR0aXMuIFByb2luIGFjIHJob25jdXMgYXJj
+dS4gTnVsbGEgc3VzY2lwaXQgdG9ydG9yIGEgZXN0IHZpdmVycmEgdWxsYW1jb3Jw
+ZXIuIEN1cmFiaXR1ciBldCBkdWkgZGlhbS4gU2VkIGF0IG5lcXVlIG5pc2wuIEN1
+cmFiaXR1ciBzYWdpdHRpcyBvcmNpIG5pc2wuIEN1bSBzb2NpaXMgbmF0b3F1ZSBw
+ZW5hdGlidXMgZXQgbWFnbmlzIGRpcyBwYXJ0dXJpZW50IG1vbnRlcywgbmFzY2V0
+dXIgcmlkaWN1bHVzIG11cy4KCkNyYXMgZmVsaXMgbWV0dXMsIHZhcml1cyBzaXQg
+YW1ldCBjb25zZXF1YXQgZWdldCwgc2VtcGVyIHZpdGFlIGxlby4gTWF1cmlzIHV0
+IG5pc2kgbGFjdXMsIGEgcHJldGl1bSBsYWN1cy4gRHVpcyBlZ2V0IGVzdCBuZWMg
+ZG9sb3Igc29sbGljaXR1ZGluIGZlcm1lbnR1bS4gTWFlY2VuYXMgb3JuYXJlIGFk
+aXBpc2NpbmcgZHVpLCB2aXRhZSBwZWxsZW50ZXNxdWUgbmlzbCBhbGlxdWFtIGEu
+IFZpdmFtdXMgYXVjdG9yIGZyaW5naWxsYSBsaWd1bGEsIGlkIHRlbXBvciBqdXN0
+byBjb25ndWUgYS4gUHJhZXNlbnQgcXVpcyBsYW9yZWV0IGF1Z3VlLiBEb25lYyBp
+ZCBvcmNpIHV0IG5pc2kgdml2ZXJyYSBjb21tb2RvLiBQZWxsZW50ZXNxdWUgZGlj
+dHVtIHZhcml1cyBvcmNpIHZlbCBwaGFyZXRyYS4gTnVuYyBsaWJlcm8gbmlzbCBt
+YXNzYSBudW5jLg==</sl:Base64Content>
+ </sl:DataObject>
+ <sl:TransformsInfo>
+ <sl:FinalDataMetaInfo>
+ <sl:MimeType>text/plain</sl:MimeType>
+ </sl:FinalDataMetaInfo>
+ </sl:TransformsInfo>
+ </sl:DataObjectInfo>
+</sl:CreateXMLSignatureRequest>
+ \ No newline at end of file
diff --git a/mocca-1.2.11/utils/src/test/resources/at/gv/egiz/idlink/IdentityLinkTest.p12 b/mocca-1.2.11/utils/src/test/resources/at/gv/egiz/idlink/IdentityLinkTest.p12
new file mode 100644
index 00000000..574e1361
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/resources/at/gv/egiz/idlink/IdentityLinkTest.p12
Binary files differ
diff --git a/mocca-1.2.11/utils/src/test/resources/at/gv/egiz/idlink/certified.cer b/mocca-1.2.11/utils/src/test/resources/at/gv/egiz/idlink/certified.cer
new file mode 100644
index 00000000..1e350d4d
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/resources/at/gv/egiz/idlink/certified.cer
Binary files differ
diff --git a/mocca-1.2.11/utils/src/test/resources/at/gv/egiz/idlink/secure.cer b/mocca-1.2.11/utils/src/test/resources/at/gv/egiz/idlink/secure.cer
new file mode 100644
index 00000000..30ac4330
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/resources/at/gv/egiz/idlink/secure.cer
Binary files differ
diff --git a/mocca-1.2.11/utils/src/test/resources/commons-logging.properties b/mocca-1.2.11/utils/src/test/resources/commons-logging.properties
new file mode 100644
index 00000000..29292562
--- /dev/null
+++ b/mocca-1.2.11/utils/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/utils/src/test/resources/log4j.properties b/mocca-1.2.11/utils/src/test/resources/log4j.properties
new file mode 100644
index 00000000..d9065c14
--- /dev/null
+++ b/mocca-1.2.11/utils/src/test/resources/log4j.properties
@@ -0,0 +1,19 @@
+# loglever DEBUG, appender STDOUT
+log4j.rootLogger=DEBUG, 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 %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