/* $Id: FirmasatSign.java $ */

import net.cryptosys.firmasat.*;

public final class FirmasatSign {   
    public static void main(String[] args) {
        int n;
        String s;
        String fname, newname;
        String certfile, keyfile, password;
              
        System.out.println("\nSIGN AN XML FILE:");
        fname = "ejemplo_v32-base2012.xml";  // REQUIRED INPUT FILE IN CWD
        newname = "ejemplo_v32-new_signed.xml";
        keyfile = "emisor.key";
        password = "12345678a";   /* CAUTION: DO NOT HARD-CODE REAL PASSWORDS! */
        certfile = "emisor.cer";
        n = Sat.signXml(newname, fname, keyfile, password, certfile);
        System.out.println("Sat.signXml('"+fname+"'-->'"+newname+"') returns "+n);
        assert n == 0 : "Sat.signXml failed";
        // Did we make a valid XML file?
        n = Sat.validateXml(newname);
        System.out.println("Sat.validateXml('"+newname+"') returns "+n);
        assert n == 0 : "Sat.validateXml failed";
        
        System.out.println("\nVERIFY A SIGNATURE IN AN XML FILE:");       
        fname = newname;
        n = Sat.verifySignature(fname);
        System.out.println("Sat.verifySignature('"+fname+"') returns "+n);
        assert n == 0 :  "Sat.verifySignature failed";

        System.out.println("\nFORM THE PIPESTRING FROM AN XML FILE:");
        fname ="ejemplo_v32-base2012.xml";
        s = Sat.makePipeStringFromXml(fname);
        System.out.println("Sat.makePipeStringFromXml('"+fname+"')=\n" + s);
        assert s.length() > 0 : "Sat.makePipeStringFromXml failed";
        
        System.out.println("\nFORM THE DIGEST OF THE PIPESTRING IN AN XML FILE:");
        s = Sat.makeDigestFromXml(fname);
        System.out.println("Sat.makeDigestFromXml('"+ fname+"')=\n"+ s);
        assert s.length() > 0 : "Sat.makeDigestFromXml failed";
                
    }
}