/******************************************************************************* * Copyright 2014 Federal Chancellery Austria * MOA-ID has been developed in a cooperation between BRZ, the Federal * Chancellery Austria - ICT staff unit, and Graz University of Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. ******************************************************************************/ /* * Copyright 2003 Federal Chancellery Austria * MOA-ID has been developed in a cooperation between BRZ, the Federal * Chancellery Austria - ICT staff unit, and Graz University of Technology. * * Licensed under the EUPL, Version 1.1 or - as soon they will be approved by * the European Commission - subsequent versions of the EUPL (the "Licence"); * You may not use this work except in compliance with the Licence. * You may obtain a copy of the Licence at: * http://www.osor.eu/eupl/ * * Unless required by applicable law or agreed to in writing, software * distributed under the Licence is distributed on an "AS IS" basis, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the Licence for the specific language governing permissions and * limitations under the Licence. * * This product combines work with different licenses. See the "NOTICE" text * file for details on the various modules and licenses. * The "NOTICE" text file is part of the distribution. Any derivative works * that you distribute must include a readable copy of the "NOTICE" text file. */ package test.at.gv.egovernment.moa.id.auth.parser; import java.io.FileOutputStream; import java.io.RandomAccessFile; import java.security.PublicKey; import org.w3c.dom.Document; import at.gv.egiz.eaaf.core.impl.utils.DOMUtils; import at.gv.egovernment.moa.id.auth.parser.IdentityLinkAssertionParser; import at.gv.egovernment.moa.id.auth.parser.InfoboxReadResponseParser; import at.gv.egovernment.moa.id.util.ECDSAKeyValueConverter; import at.gv.egovernment.moa.util.Constants; import iaik.security.rsa.RSAPublicKey; import test.at.gv.egovernment.moa.id.UnitTestCase; /** * @author Paul Ivancsics * @version $Id$ */ public class IdentityLinkAssertionParserTest extends UnitTestCase { IdentityLinkAssertionParser ilap; public IdentityLinkAssertionParserTest(String name) { super(name); } public void setUp() { try { RandomAccessFile s = new RandomAccessFile( "data/test/xmldata/testperson1/InfoboxReadResponse.xml", "r"); byte[] b = new byte[(int) s.length()]; s.read(b); String xmlInfoboxReadResponse = new String(b, "UTF-8"); InfoboxReadResponseParser irrp = new InfoboxReadResponseParser(xmlInfoboxReadResponse); ilap = new IdentityLinkAssertionParser(irrp.parseSAMLAssertion()); } catch (Exception e) { e.printStackTrace(); } } // public void testParseIdentityLink() throws Exception { // IdentityLink idl = ilap.parseIdentityLink(); // System.out.println(idl.getGivenName()); // System.out.println(idl.getFamilyName()); // System.out.println(idl.getDateOfBirth()); // System.out.println(idl.getIdentificationValue()); // // VerifyXMLSignatureRequestBuilder vx = new VerifyXMLSignatureRequestBuilder(); // // // Element zur�ck bekommen: vx.build(idl.getSamlAssertion()); // // IdentityLinkValidator idVali = IdentityLinkValidator.getInstance(); // idVali.validate(idl); // // } // public void testParseIdentityLinkECC() throws Exception { // RandomAccessFile s = // new RandomAccessFile( // "data/test/xmldata/IL.ResponseToRequest.01.ECDSA.xml", // "r"); // byte[] b = new byte[(int) s.length()]; // s.read(b); // String xmlInfoboxReadResponse = new String(b); // InfoboxReadResponseParser irrp = new InfoboxReadResponseParser(xmlInfoboxReadResponse); // String SAML = irrp.parseSAMLAssertion(); // ilap = new IdentityLinkAssertionParser(SAML); // IdentityLink idl = ilap.parseIdentityLink(); // System.out.println(idl.getGivenName()); // System.out.println(idl.getFamilyName()); // System.out.println(idl.getDateOfBirth()); // System.out.println(idl.getIdentificationValue()); // // VerifyXMLSignatureRequestBuilder vx = new VerifyXMLSignatureRequestBuilder(); // // // Element zur�ck bekommen: vx.build(idl.getSamlAssertion()); // // IdentityLinkValidator idVali = IdentityLinkValidator.getInstance(); // idVali.validate(idl); // // } public void testRSAPublicKeys() throws Exception { if (ilap.getPublicKeys()[0].getClass().getName().equals("iaik.security.rsa.RSAPublicKey")) { for (int i = 0; i < ilap.getPublicKeys().length; i++) { RSAPublicKey result = (RSAPublicKey)ilap.getPublicKeys()[i]; System.out.println("RSA Public Key No" + i); System.out.println("Modulus: " + result.getModulus()); System.out.println("Exponent: " + result.getPublicExponent()); } } } public void testECDSAPublicKeys() throws Exception { RandomAccessFile s = new RandomAccessFile( "data/test/xmldata/ECDSAKeyExample.xml", "r"); byte[] b = new byte[(int) s.length()]; s.read(b); String ecdsaKey = new String(b, "UTF-8"); Document e = DOMUtils.parseDocument(ecdsaKey,true,Constants.ALL_SCHEMA_LOCATIONS, null); PublicKey p = ECDSAKeyValueConverter.element2ECDSAPublicKey(e.getDocumentElement()); } public void testDsigCertificates() throws Exception { String[] result = ilap.getCertificates(); for (int i = 0; i < result.length; i++) { System.out.println("DSIG Certificate Length: " + result[i].length() + " No" + i + "\n" + result[i]); FileOutputStream raf = new FileOutputStream("data/test/certs/cert" + i + ".cer"); raf.write(result[i].getBytes()); raf.flush(); raf.close(); } } }