/** * Generic validate function. Validates known types of xml signature. * @param fileName name of the signature file to be validated */ public static void validate(String fileName) { Context context = new Context(Conn.ROOT_DIR + "efatura\\config\\"); // add external resolver to resolve policies context.addExternalResolver(getPolicyResolver()); XMLSignature signature = XMLSignature.parse( new FileDocument(new FileInfo(fileName)), context); ECertificate cert = signature.SigningCertificate; ValidationSystem vs; if (cert.isMaliMuhurCertificate()) { ValidationPolicy policy = new ValidationPolicy(); String policyPath = Conn.ROOT_DIR + "efatura\\config\\certval-policy-malimuhur.xml"; policy = PolicyReader.readValidationPolicy(policyPath); vs = CertificateValidation.createValidationSystem(policy); context.setCertValidationSystem(vs); } else { ValidationPolicy policy = new ValidationPolicy(); String policyPath = Conn.ROOT_DIR + "efatura\\config\\certval-policy.xml"; policy = PolicyReader.readValidationPolicy(policyPath); vs = CertificateValidation.createValidationSystem(policy); context.setCertValidationSystem(vs); } // no params, use the certificate in key info ValidationResult result = signature.verify(); String sonuc = result.toXml(); Console.WriteLine(result.toXml()); // Assert.True(result.Type == ValidationResultType.VALID,"Cant verify " + fileName); UnsignedSignatureProperties usp = signature.QualifyingProperties.UnsignedSignatureProperties; if (usp != null) { IList <XMLSignature> counterSignatures = usp.AllCounterSignatures; foreach (XMLSignature counterSignature in counterSignatures) { ValidationResult counterResult = signature.verify(); Console.WriteLine(counterResult.toXml()); //Assert.True(counterResult.Type == ValidationResultType.VALID, // "Cant verify counter signature" + fileName + " : "+counterSignature.Id); } } }