You have it backwards. You should encrypt/wrap the AES data encryption key with the recipient's *public* key. The recipient then decrypts with their *private* key.

If you think about the use cases, you'll quickly realize why that is.

--Brent


sermagico wrote:
Hi all,
I try to develop an application for xml encryption/decryption, but I have
some issue. I encrypt a file with a AES key, then I wrap this key with a
RSAprivateKey and I store it (wrapped AES) in the same xml file. Unfortunately when I try to unwrap the AES key with the PublicKey associated
with the previous PrivateKey the below exception is raised up:

Exception in thread "main"
org.apache.xml.security.encryption.XMLEncryptionException: unknown key type
passed to RSA
Original Exception was java.security.InvalidKeyException: unknown key type
passed to RSA


PublicKey and PrivateKey are stored on a smartcard.
This is my code:

        XMLCipher CKey= XMLCipher.getInstance();
        XMLCipher CMsg= XMLCipher.getInstance();
        CKey.init(XMLCipher.UNWRAP_MODE, this.pkey);
        CMsg.init(XMLCipher.DECRYPT_MODE, null);
Element encryptedDataElement = (Element) document .getElementsByTagNameNS(EncryptionConstants.EncryptionSpecNS,
                EncryptionConstants._TAG_ENCRYPTEDDATA).item(0);
EncryptedData encryptedData =
xmlCipherMsg.loadEncryptedData(document,
                encryptedDataElement);
        EncryptedKey encryptedKey = encryptedData.getKeyInfo()
        .itemEncryptedKey(0);
String algorithm =
encryptedKey.getEncryptionMethod().getAlgorithm();
CipherValue Value = encryptedKey.getCipherData().getCipherValue(); //Exception here
        Key secretKey = xmlCipherKey.decryptKey(encryptedKey,algorithm );
I hope you can help me.
Thank you in advance.
Best regards.

Sergio.

Reply via email to