package ihe.iti.xcpd._2009;

import java.io.IOException;

import net.ihe.gazelle.simulator.common.utils.XmlUtil;
import net.ihe.gazelle.simulator.common.xua.SamlAssertionSupplier;
import net.ihe.gazelle.simulator.common.xua.SignatureException;
import net.ihe.gazelle.simulator.common.xua.SignatureUtil;
import net.ihe.xcpd.resp.tools.ElementString;

import org.w3c.dom.Element;
import org.xml.sax.SAXException;

/**
 * 
 * @author abderrazek boufahja
 *
 */
public class ValidateAssertion {
    
    public static String asser = "<Assertion xmlns=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:ns2=\"http://www.w3.org/2001/04/xmlenc#\" xmlns:ns3=\"http://www.w3.org/2000/09/xmldsig#\" ID=\"ID_901b2767-ed9f-4056-b6eb-a580a3bb6d4d\" IssueInstant=\"2010-09-22T14:12:12.616Z\" Version=\"2.0\"><Issuer>PicketLinkSTS</Issuer><Subject><NameID NameQualifier=\"urn:picketlink:identity-federation\">ANONYMOUS</NameID><SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"/></Subject><Conditions NotBefore=\"2010-09-22T14:12:12.616Z\" NotOnOrAfter=\"2010-09-22T16:12:12.616Z\"/><dsig:Signature xmlns:dsig=\"http://www.w3.org/2000/09/xmldsig#\"><dsig:SignedInfo><dsig:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#WithComments\"/><dsig:SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/><dsig:Reference URI=\"#ID_901b2767-ed9f-4056-b6eb-a580a3bb6d4d\"><dsig:Transforms><dsig:Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><dsig:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/></dsig:Transforms><dsig:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/><dsig:DigestValue>CVPvN0L2tVVdpSFvmGd5RC+fSqI=</dsig:DigestValue></dsig:Reference></dsig:SignedInfo><dsig:SignatureValue>eKn89KfwN78/fEQQYaXyZ8JG/WP8F3pcG4jKsXIvJBT7qT0N3IFce49NrsgImE0St/crs/619sk4" +
    		"IRkAwKL0bguVud8P5CfOAkmZy2/oJKorj5LTJdezZ/vKhRP7fSWdOlItU5HnwrBudWpZ3a7A4Z4V" +
    		"qpn7YdS+gfCpHQAgZe0=</dsig:SignatureValue><dsig:KeyInfo><dsig:KeyValue><dsig:RSAKeyValue><dsig:Modulus>suGIyhVTbFvDwZdx8Av62zmP+aGOlsBN8WUE3eEEcDtOIZgO78SImMQGwB2C0eIVMhiLRzVPqoW1" +
    		"dCPAveTm653zHOmubaps1fY0lLJDSZbTbhjeYhoQmmaBro/tDpVw5lKJns2qVnMuRK19ju2dxpKw" +
    		"lYGGtrP5VQv00dfNPbs=</dsig:Modulus><dsig:Exponent>AQAB</dsig:Exponent></dsig:RSAKeyValue></dsig:KeyValue></dsig:KeyInfo></dsig:Signature></Assertion>";
    
    
    
    public static boolean validate(Element assertion, String STSurl, String serviceName,String port) throws SignatureException {
    	SignatureUtil signatureUtil = new SignatureUtil("/usr/local/jboss/simu.valid.jks", "gazelle");
    	boolean validated = SamlAssertionSupplier.validateAssertion(assertion, signatureUtil);
    	return validated;
    }
    
    public static void main(String[] args) throws SAXException, IOException, SignatureException {
        Element e = ElementString.string2Element0(asser);
        boolean res = validate(e, "http://localhost:8080/picketlink-sts-1.0.3.SP1/PicketLinkSTS", "PicketLinkSTS", "PicketLinkSTSPort");
        System.out.println("res = " + res);
    }

}
