using System;
using System.Web;

using net.catcert.psis;

public class ValidacioPDF
{

    public ValidacioPDF()
    {
    }

    static void Main()
    {

        // Utilitats
        Utils utils = new Utils();

        // Objectes temporals
        Object[] objects = null;
        ItemsChoiceType6[] types6 = null;

        // Inicialització del client
        digitalSignatureService proxy = new digitalSignatureService();

        // Indicar l’adreça del servidor
        //
        // ATENCIO: http://.../dsspdf
        //
        proxy.Url = "http://psisbeta.catcert.net/psis/catcert-test/dsspdf";


        // Codi de composició del missatge

        // Document PDF a validar
        byte[] doc = utils.Base64File("C:/Documents and Settings/jriudavets/Mis documentos/Visual Studio 2005/Projects/TestPSIS/TestPSIS/bin/Release/pdfB64.txt");

        // Creació de l'element amb els documents a enviar
        Base64Data b64data = new Base64Data();
        b64data.Value = doc;

        DocumentType[] document = new DocumentType[1];
        document[0] = new DocumentType();
        document[0].Item = b64data;

        InputDocuments inpDocuments = new InputDocuments();
        inpDocuments.Items = document;

        // Creació de l'element amb els paràmetres opcionals a consultar
        OptionalInputs optInputs = new OptionalInputs();

        objects = new object[2];
        objects[0] = new Object();
        objects[1] = new Object();

        types6 = new ItemsChoiceType6[2];
        types6[0] = ItemsChoiceType6.ReturnProcessingDetails;
        types6[1] = ItemsChoiceType6.ReturnSignatureReason;

        optInputs.Items = objects;
        optInputs.ItemsElementName = types6;

        // Creació del missatge DSS
        VerifyRequest requestDocument = new VerifyRequest();
        requestDocument.InputDocuments = inpDocuments;
        requestDocument.OptionalInputs = optInputs;

        //
        // !!! IMPORTANT !!!
        //
        // Activar perfil PDF
        //
        requestDocument.Profile = "urn:oasis:names:tc:dss:1.0:profiles:DSS_PDF";

        // Execució del servei per a verificar
        VerifyResponse responseDocument = proxy.verify(requestDocument);

        // Visualització de la petició
        Console.WriteLine(utils.MessageToString(requestDocument));

        // Visualització de la resposta
        Console.WriteLine(utils.MessageToString(responseDocument));

    }
}
