1 /*
2  * @(#) $Id: WSSProcess.java,v 1.2 2003/07/08 08:13:52 pankaj Exp $
3  *
4  * Copyright (c) 2002-03 by Pankaj Kumar (http://www.pankaj-k.net). 
5  * All rights reserved.
6  *
7  * The license governing the use of this file can be found in the 
8  * root directory of the containing software.
9  */
10
11import java.io.FileInputStream;
12import java.io.FileOutputStream;
13import org.w3c.dom.Document;
14import java.security.PrivateKey;
15import java.security.cert.X509Certificate;
16
17import com.verisign.xmlsig.Signer;
18import com.verisign.xmlsig.VerifyingKey;
19import com.verisign.xmlsig.VerifyingKeyFactory;
20import com.verisign.messaging.WSSecurity;
21import com.verisign.messaging.MessageValidity;
22import com.verisign.xpath.XPath;
23import org.xmltrustcenter.verifier.TrustVerifier;
24import org.xmltrustcenter.verifier.X509TrustVerifier;
25
26public class WSSProcess {
27    public static void main(String[] args) throws Exception {
28        if (args.length < 1){
29            System.out.println("Usage:: java WSSProcess <inp-file>");
30            return;
31        }
32        String datafile = args[0];
33
34        // Info to get Signing Key.
35        String keystore = "my.keystore";
36        String storepass = "changeit";
37        String kstype = "JCEKS";
38        String alias2 = "rsakey";
39
40        System.out.println("Processing SOAP data in file \"" + datafile + "\"");
41        System.out.println("Using public key in keystore \"" + keystore + "\" ...");
42
43        // Get the private key and corresponding certificate.
44        FileInputStream fis = new FileInputStream(keystore);
45        java.security.KeyStore ks = java.security.KeyStore.getInstance(kstype);
46        ks.load(fis, storepass.toCharArray());
47        PrivateKey prvk2 = (PrivateKey)ks.getKey(alias2, storepass.toCharArray());
48
49        // Read the XML file
50        Document doc = XmlUtility.readXML(datafile);
51        TrustVerifier verifier = new X509TrustVerifier(ks);
52
53        WSSecurity wss = new WSSecurity();
54        MessageValidity[] resa = wss.verifyAndDecrypt(doc, verifier, null, prvk2, null);
55
56        for (int i = 0; i < resa.length; i++){
57            System.out.println("resa[" + i + "].isValid() = " + resa[i].isValid());
58            Document doc1 = resa[i].getDocument();
59            WSSecurityExtn.removeWSSInfo(doc1);
60            XmlUtility.writeXML(doc1, System.out);
61        }
62    }
63}