Skip to Main Content

Java Security

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

XML Asymmetric Encryption Problem

843811May 27 2010
Pliz help. I need help resolving the problem I am having with XML decryption. The document seems to be encrypting fine, but the decryption seems to fail, when I try to unwrap the symmetric key using a private key. Your help is appreciated. See code snippets below-
/**Encryption**/
I am generating a symmetric key using:
String jceAlgorithmName = "AES";
KeyGenerator keyGenerator =
KeyGenerator.getInstance(jceAlgorithmName);
keyGenerator.init(128);

Then I wrap the key using an RSA public key:
String algorithmURI = XMLCipher.RSA_v1dot5;


//Encrypt the symmetric key with the kek (pub key)
XMLCipher keyCipher = XMLCipher.getInstance(algorithmURI);
keyCipher.init(XMLCipher.WRAP_MODE, kek);
System.out.println("Trace: "+document);

EncryptedKey encryptedKey = keyCipher.encryptKey(document, symmetricKey);

I proceed to use this key to encrypt elements within a document:
if (elementsToEncrypt == null || elementName == null){
algorithmURI = XMLCipher.AES_128;
XMLCipher xmlCipher = XMLCipher.getInstance(algorithmURI);
xmlCipher.init(XMLCipher.ENCRYPT_MODE, symmetricKey);

//Setting keyinfo inside the encrypted data being prepared.
EncryptedData encryptedData = xmlCipher.getEncryptedData();
KeyInfo keyInfo = new KeyInfo(document);
KeyName keyName = new KeyName(document, alias);
keyInfo.add(keyName);
keyInfo.add(encryptedKey);
encryptedData.setKeyInfo(keyInfo);
xmlCipher.doFinal(document, elementToEncrypt, false);
}
else{
for (int i=0;i<elementsToEncrypt.length;i++){
elementToEncrypt = elementsToEncrypt;
algorithmURI = XMLCipher.AES_128;
XMLCipher xmlCipher = XMLCipher.getInstance(algorithmURI);
xmlCipher.init(XMLCipher.ENCRYPT_MODE, symmetricKey);

//Setting keyinfo inside the encrypted data being prepared.
EncryptedData encryptedData = xmlCipher.getEncryptedData();
KeyInfo keyInfo = new KeyInfo(document);
KeyName keyName = new KeyName(document, alias);
keyInfo.add(keyName);
keyInfo.add(encryptedKey);
encryptedData.setKeyInfo(keyInfo);
xmlCipher.doFinal(document, elementToEncrypt, false);
}
/**Decryption**/
I try to unwrap the key using the private key:
// initialize cipher for unwrap. (kek is priv key)
XMLCipher keyCipher = XMLCipher.getInstance(XMLCipher.RSA_v1dot5);//
keyCipher.init(XMLCipher.UNWRAP_MODE, kek);

key = (Key) keyCipher.decryptKey(ek, XMLCipher.RSA_v1dot5);

Then, I try to decrypt:
XMLCipher xmlCipher = XMLCipher.getInstance();

xmlCipher.init(XMLCipher.DECRYPT_MODE, key);
xmlCipher.setKEK(kek);


// * The following replaces the encrypted data with
// * decrypted contents in the document.

for (int i=0;i<elementsToDecrypt.length;i++){
encryptedDataElement = elementsToDecrypt[i];
xmlCipher.doFinal(doc, encryptedDataElement);

}
outputDocToFileThenDeleteFile(doc, decryptedFileName);

/**Errors**/
Exception in thread "main" org.apache.xml.security.encryption.XMLEncryptionException: Unwrapping failed
Original Exception was java.security.InvalidKeyException: Unwrapping failed
at org.apache.xml.security.encryption.XMLCipher.decryptKey(Unknown Source)
at nsu_pdp.PDP_Decryptor.decrypt(PDP_Decryptor.java:304)
at nsu_pdp.SimplePDP.<init>(SimplePDP.java:211)
at nsu_pdp.SimplePDP.main(SimplePDP.java:494)
java.security.InvalidKeyException: Unwrapping failed
at com.sun.crypto.provider.RSACipher.engineUnwrap(DashoA13*..)
at javax.crypto.Cipher.unwrap(DashoA13*..)
at org.apache.xml.security.encryption.XMLCipher.decryptKey(Unknown Source)
at nsu_pdp.PDP_Decryptor.decrypt(PDP_Decryptor.java:304)
at nsu_pdp.SimplePDP.<init>(SimplePDP.java:211)
at nsu_pdp.SimplePDP.main(SimplePDP.java:494)
Caused by: javax.crypto.BadPaddingException: Data must start with zero
at sun.security.rsa.RSAPadding.unpadV15(Unknown Source)
at sun.security.rsa.RSAPadding.unpad(Unknown Source)
at com.sun.crypto.provider.RSACipher.a(DashoA13*..)
... 6 more
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Jun 24 2010
Added on May 27 2010
0 comments
883 views