You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wss4j-dev@ws.apache.org by Maciej Kwiecien <ma...@gmail.com> on 2008/01/17 10:23:03 UTC
How to encrypt message with RSA/DES ?
Hello,
How can I encrypt message using RSA algorithm, I try do encrypt in that way:
public void encryptMessage(Document doc) throws WSSecurityException {
WSSecEncrypt builder = new WSSecEncrypt();
builder.setUserInfo("myalias", "mykeypass");
builder.setKeyIdentifierType(WSConstants.BST_DIRECT_REFERENCE);
builder.setSymmetricEncAlgorithm(WSConstants.RSA);
WSSecHeader secHeader = new WSSecHeader();
secHeader.insertSecurityHeader(doc);
/*
* Prepare the Encrypt object with the token, setup data structure
*/
builder.prepare(doc, crypto);
/*
* Set up the parts structure to encrypt the body
*/
SOAPConstants soapConstants = WSSecurityUtil.getSOAPConstants(doc
.getDocumentElement());
Vector parts = new Vector();
WSEncryptionPart encP = new WSEncryptionPart(soapConstants
.getBodyQName().getLocalPart(), soapConstants.getEnvelopeURI
(),
"Content");
parts.add(encP);
/*
* Encrypt the parts (Body), create EncrypedData elements that
reference
* the EncryptedKey, and get a ReferenceList that can be put into
the
* Security header. Be sure that the ReferenceList is after the
* EncryptedKey element in the Security header (strict layout)
*/
Element refs = builder.encryptForExternalRef(null, parts);
builder.addExternalRefElement(refs, secHeader);
/*
* now add (prepend) the EncryptedKey element, then a
* BinarySecurityToken if one was setup during prepare
*/
builder.prependToHeader(secHeader);
builder.prependBSTElementToHeader(secHeader);
}
I catch following exception:
org.apache.ws.security.WSSecurityException: An unsupported signature or
encryption algorithm was used (unsupported key transport encryption
algorithm: No such algorithm: http://www.w3.org/2001/04/xmlenc#rsa-1_5)
at org.apache.ws.security.util.WSSecurityUtil.getCipherInstance(
WSSecurityUtil.java:703)
at org.apache.ws.security.message.WSSecEncryptedKey.prepareInternal(
WSSecEncryptedKey.java:189)
at org.apache.ws.security.message.WSSecEncrypt.prepare(WSSecEncrypt.java
:216)
at com.sabre.ssg.common.xml.wse.WSSecuritySample.encryptMessage(
WSSecuritySample.java:182)
at com.sabre.ssg.common.xml.wse.WSSecuritySample.main(
WSSecuritySample.java:104)
My question is if there is no way to encrypt message with RSA using WSS4J?
What is more, if DES is supported by WSS4J?
Any help will be appreciated.
Regards,
Maciej