import java.io.FileInputStream;
import org.w3c.dom.Document;
import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.KeyGenerator;
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;
public class WSSEncryptionSample {
public static void main ( String argv[] )
{
try {
FileInputStream br = new FileInputStream( "input.xml" );
String message = "";
int ch = 0;
while ( ( ch = br.read() ) != -1 )
message += (char)ch;
WSSMessage wssMessage = new WSSMessage ( message );
if ( wssMessage.getWSSDocument() != null )
{
System.out.println ( "The plain text WSS message is :\n" );
printDocument ( wssMessage.getWSSDocument() );
}//if
System.out.println ( "***************************************************" );
System.out.println ( );
System.out.println ( );
System.out.println ( );
EncryptedKeyToken encToken = new EncryptedKeyToken (
"tourOperatorRSAKey",
"myKeyStorePass",
"myTourOperatorKey",
"EncryptedKeyByEncryptedKeyToken",
wssMessage
);
encToken.setSecret( new String ( "myKeyPass" ).getBytes() );
EncryptedData ed1 = wssMessage.encryptElement (
"Param1",
encToken,
"encryptedParam1",
"http://www.w3.org/2001/04/xmlenc#tripledes-cbc"
);
if ( wssMessage.getWSSDocument() != null )
{
System.out.println ( "The XML Encrypted Message with EncryptedKeyToken is :\n" );
printDocument ( wssMessage.getWSSDocument() );
}//if
System.out.println ( "***************************************************" );
System.out.println ( );
System.out.println ( );
System.out.println ( );
EncryptedKeyTokenWithCrossReference encTokenWithRef
= new EncryptedKeyTokenWithCrossReference(
"tourOperatorRSAKey",
"myKeyStorePass",
"myTourOperatorKey",
"EncryptedKeyByEncryptedKeyTokenWithCrossReference1",
wssMessage
);
encTokenWithRef.setSecret( new String ( "myKeyPass" ).getBytes() );
EncryptedData ed4 = wssMessage.encryptElementWithXPath (
"//*[@Id=\"Param4\"]",
encTokenWithRef,
"encryptedParam4",
"http://www.w3.org/2001/04/xmlenc#tripledes-cbc"
);
if ( ed4.getDocument() != null )
{
System.out.println ( "The XML Encrypted Message with EncryptedKeyTokenWithCrossReference is :\n" );
printDocument ( wssMessage.getWSSDocument() );
}//if
System.out.println ( "***************************************************" );
System.out.println ( );
System.out.println ( );
System.out.println ( );
EncryptedKeyTokenWithCrossReference encTokenWithRef2
= new EncryptedKeyTokenWithCrossReference(
"tourOperatorRSAKey",
"myKeyStorePass",
"myTourOperatorKey",
"EncryptedKeyByEncryptedKeyTokenWithCrossReference2",
wssMessage
);
encTokenWithRef2.setSecret( new String ( "myKeyPass" ).getBytes() );
EncryptedData ed3 = wssMessage.encryptElementWithXPath (
"//*[@Id=\"Param3\"]",
encTokenWithRef2,
"encryptedParam3",
"http://www.w3.org/2001/04/xmlenc#tripledes-cbc"
);
if ( ed3.getDocument() != null )
{
System.out.println ( "The XML Encrypted Message with EncryptedKeyTokenWithCrossReference is :\n" );
printDocument ( wssMessage.getWSSDocument() );
}//if
}//try
catch ( Exception e ) {
System.out.println ( "Exception in the main method of WSSEncryptionSample......." );
e.printStackTrace();
}//catch
}// main()
private static void printDocument ( Document XMLDoc ) {
try {
System.out.println();
OutputFormat f = new OutputFormat ( XMLDoc );
f.setPreserveSpace ( true );
XMLSerializer s = new XMLSerializer ( System.out, f );
s.serialize ( XMLDoc );
System.out.println();
}//try
catch ( Exception e ) {
System.out.println ( "Exception in printDocument's method of Encrypt Class......." );
e.printStackTrace();
}//catch
}//printDocument
}//WSSEncryptionSample