package test.at.gv.egovernment.moa.id.auth.parser; import iaik.security.rsa.RSAPublicKey; import java.io.FileOutputStream; import java.io.RandomAccessFile; import java.security.PublicKey; import org.w3c.dom.Document; import test.at.gv.egovernment.moa.id.UnitTestCase; import at.gv.egovernment.moa.id.auth.builder.VerifyXMLSignatureRequestBuilder; import at.gv.egovernment.moa.id.auth.data.IdentityLink; import at.gv.egovernment.moa.id.auth.parser.ECDSAKeyValueConverter; import at.gv.egovernment.moa.id.auth.parser.IdentityLinkAssertionParser; import at.gv.egovernment.moa.id.auth.parser.InfoboxReadResponseParser; import at.gv.egovernment.moa.id.auth.validator.IdentityLinkValidator; import at.gv.egovernment.moa.util.Constants; import at.gv.egovernment.moa.util.DOMUtils; /** * @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(); } } }