1 /*
2  * @(#) $Id: WSSDecrypt.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 WSSDecrypt {
27    public static void main(String[] args) throws Exception {
28        if (args.length < 1){
29            System.out.println("Usage:: java WSSDecrypt <inp-file> [<out-file>]");
30            return;
31        }
32        String datafile = args[0];
33        String outfile = "decrypted.xml";
34        if (args.length > 1)
35            outfile = args[1];
36
37        String keystore = "my.keystore";
38        String storepass = "changeit";
39        String kstype = "JCEKS";
40        String alias2 = "rsakey";
41
42        System.out.println("Decrypting SOAP data in file \"" + datafile + "\" using private key");
43        System.out.println("in keystore \"" + keystore + "\" at alias " + alias2 + " ...");
44
45        FileInputStream fis = new FileInputStream(keystore);
46        java.security.KeyStore ks = java.security.KeyStore.getInstance(kstype);
47        ks.load(fis, storepass.toCharArray());
48        PrivateKey prvk2 = (PrivateKey)ks.getKey(alias2, storepass.toCharArray());
49
50        Document doc = XmlUtility.readXML(datafile);
51
52        WSSecurity wss = new WSSecurity();
53        wss.decrypt(doc, prvk2, null);
54        WSSecurityExtn.removeWSSInfo(doc);
55
56        XmlUtility.writeXML(doc, new FileOutputStream(outfile));
57    }
58}