You are viewing a plain text version of this content. The canonical link for it is here.
Posted to xmlrpc-dev@ws.apache.org by "Arpit Doshi (JIRA)" <xm...@ws.apache.org> on 2006/06/21 12:47:30 UTC
[jira] Created: (XMLRPC-88)
org.apache.xml.security.encryption.XMLCipher.removeContent
org.apache.xml.security.encryption.XMLCipher.removeContent
----------------------------------------------------------
Key: XMLRPC-88
URL: http://issues.apache.org/jira/browse/XMLRPC-88
Project: XML-RPC
Type: Bug
Components: Releases
Versions: unspecified
Environment: OS:Windows 2000
J2SE:1.5
JRE:1.5.0_06
Hardware: P-4 2.4 Ghz CPU, 2GB RAM.
Reporter: Arpit Doshi
Priority: Blocker
Hello,
I am trying to encrypt a XML file using XMLCipher class. The size of the file is almost 35 MB, while encrypting the XML file it throws this error after around 3 minutes.
The program works perfectly fine for file size of less than 5 MB. This is very critical for our project and has to work as soon as possible.
Eventually we are going to port the application on AIX5.3
The piece of code I am using is:
public void encryptData() throws EncryptionException
{
final String methodName = "encryptData";
XMLCipher keyCipher,xmlCipher = null;
Document document = null;
String encryptedFileName = null;
Key symmetricKey = null;
Key keyEncryptKey = null;
boolean exceptionOccured = false;
try
{
System.out.println("now parsing document");
document=parseFile( fileToBeEncrypted );
// generate symmetric key
symmetricKey = GenerateSymmetricKey();
// Get a key to be used for encrypting the symmetric key
keyEncryptKey = GenerateKeyEncryptionKey();
// Write the key to a file
//and pass the key and the name of file in which it has to store the Key
storeKeyFile(keyEncryptKey,getKeyFileName(fileToBeEncrypted.toString()));
// initialize cipher and operation mode is to wrap a key
keyCipher =XMLCipher.getInstance(XMLCipher.TRIPLEDES_KeyWrap);
keyCipher.init(XMLCipher.WRAP_MODE, keyEncryptKey);
// encrypt symmetric key
EncryptedKey encryptedKey = keyCipher.encryptKey(document, symmetricKey);
// specify the element to encrypt, ideally it will be root element
Element rootElement = document.getDocumentElement();
Element elementToEncrypt = rootElement;
if (elementToEncrypt == null)
{
throw new EncryptionException("Element to Encrypt is null since the filename may not be correct" +
"or the file to be encrypted may not be well formed" +
"Please check in File" + "AMLFeederConfiguration.properties");
}
// initialize cipher for encrypting XML data using operation mode of ENCRYPT_MODE
xmlCipher = XMLCipher.getInstance(XMLCipher.TRIPLEDES);
xmlCipher.init(XMLCipher.ENCRYPT_MODE, symmetricKey);
// add key info to encrypted data element, so that within the encrypted data,
// there is also information about the key, that should be used to decrypt the data
EncryptedData encryptedDataElement = xmlCipher.getEncryptedData();
KeyInfo keyInfo = new KeyInfo(document);
keyInfo.add(encryptedKey);
encryptedDataElement.setKeyInfo(keyInfo);
Problem is caused while calling doFinal() // do the actual encryption
boolean encryptContentsOnly = true;
xmlCipher.doFinal(document, elementToEncrypt, encryptContentsOnly);
//this will return xxxxx_e.xml
encryptedFileName = getEncryptedFileNameToWrite(fileToBeEncrypted.toString());
// write the results to a file
writeEncryptedDocToFile(document, encryptedFileName);
this.encryptedFileName = encryptedFileName;
}
catch(FileNotFoundException fnfException){
}
catch (ContentHandlerAlreadyRegisteredException e) {
}
catch(XMLEncryptionException xeException){
}
catch( EncryptionException encryptionException )
{
}
catch(Exception e){
}
finally{
if(exceptionOccured){
moveToRejectedDir( this.fileToBeEncrypted );
moveToRejectedDir( this.keyFile );
}
document = null;
symmetricKey = null;
keyEncryptKey = null;
xmlCipher = null;
}
}
The exception I am getting is:
Exception in thread "main" java.lang.StackOverflowError
at org.apache.xerces.dom.ParentNode.internalRemoveChild(Unknown Source)
at org.apache.xerces.dom.ParentNode.removeChild(Unknown Source)
at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
urce)
at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
urce)
at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
urce)
at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
urce)
at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
urce)
at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
urce)
at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
urce)
at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
urce)
at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: xmlrpc-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: xmlrpc-dev-help@ws.apache.org
Re: [jira] Created: (XMLRPC-88) org.apache.xml.security.encryption.XMLCipher.removeContent
Posted by Siegfried Goeschl <si...@it20one.at>.
Mhmm,
looking at the stack trace you have a StackOverflowError in XERCES when
using XMLCipher. IMHO this is totally unrelated to XMLRPC
Cheers,
Siegfried Goeschl
Arpit Doshi (JIRA) wrote:
> org.apache.xml.security.encryption.XMLCipher.removeContent
> ----------------------------------------------------------
>
> Key: XMLRPC-88
> URL: http://issues.apache.org/jira/browse/XMLRPC-88
> Project: XML-RPC
> Type: Bug
>
> Components: Releases
> Versions: unspecified
> Environment: OS:Windows 2000
> J2SE:1.5
> JRE:1.5.0_06
> Hardware: P-4 2.4 Ghz CPU, 2GB RAM.
> Reporter: Arpit Doshi
> Priority: Blocker
>
>
> Hello,
>
> I am trying to encrypt a XML file using XMLCipher class. The size of the file is almost 35 MB, while encrypting the XML file it throws this error after around 3 minutes.
> The program works perfectly fine for file size of less than 5 MB. This is very critical for our project and has to work as soon as possible.
> Eventually we are going to port the application on AIX5.3
> The piece of code I am using is:
>
> public void encryptData() throws EncryptionException
> {
> final String methodName = "encryptData";
>
> XMLCipher keyCipher,xmlCipher = null;
> Document document = null;
> String encryptedFileName = null;
> Key symmetricKey = null;
> Key keyEncryptKey = null;
> boolean exceptionOccured = false;
>
> try
> {
> System.out.println("now parsing document");
> document=parseFile( fileToBeEncrypted );
> // generate symmetric key
> symmetricKey = GenerateSymmetricKey();
>
> // Get a key to be used for encrypting the symmetric key
> keyEncryptKey = GenerateKeyEncryptionKey();
>
> // Write the key to a file
> //and pass the key and the name of file in which it has to store the Key
> storeKeyFile(keyEncryptKey,getKeyFileName(fileToBeEncrypted.toString()));
>
>
>
> // initialize cipher and operation mode is to wrap a key
> keyCipher =XMLCipher.getInstance(XMLCipher.TRIPLEDES_KeyWrap);
> keyCipher.init(XMLCipher.WRAP_MODE, keyEncryptKey);
>
> // encrypt symmetric key
> EncryptedKey encryptedKey = keyCipher.encryptKey(document, symmetricKey);
> // specify the element to encrypt, ideally it will be root element
> Element rootElement = document.getDocumentElement();
>
> Element elementToEncrypt = rootElement;
>
> if (elementToEncrypt == null)
> {
> throw new EncryptionException("Element to Encrypt is null since the filename may not be correct" +
> "or the file to be encrypted may not be well formed" +
> "Please check in File" + "AMLFeederConfiguration.properties");
> }
>
>
>
> // initialize cipher for encrypting XML data using operation mode of ENCRYPT_MODE
> xmlCipher = XMLCipher.getInstance(XMLCipher.TRIPLEDES);
>
> xmlCipher.init(XMLCipher.ENCRYPT_MODE, symmetricKey);
>
>
> // add key info to encrypted data element, so that within the encrypted data,
> // there is also information about the key, that should be used to decrypt the data
> EncryptedData encryptedDataElement = xmlCipher.getEncryptedData();
> KeyInfo keyInfo = new KeyInfo(document);
> keyInfo.add(encryptedKey);
> encryptedDataElement.setKeyInfo(keyInfo);
>
> Problem is caused while calling doFinal() // do the actual encryption
> boolean encryptContentsOnly = true;
> xmlCipher.doFinal(document, elementToEncrypt, encryptContentsOnly);
>
> //this will return xxxxx_e.xml
> encryptedFileName = getEncryptedFileNameToWrite(fileToBeEncrypted.toString());
>
> // write the results to a file
> writeEncryptedDocToFile(document, encryptedFileName);
>
> this.encryptedFileName = encryptedFileName;
>
>
> }
> catch(FileNotFoundException fnfException){
>
> }
> catch (ContentHandlerAlreadyRegisteredException e) {
> }
> catch(XMLEncryptionException xeException){
> }
> catch( EncryptionException encryptionException )
> {
> }
> catch(Exception e){
> }
> finally{
>
> if(exceptionOccured){
> moveToRejectedDir( this.fileToBeEncrypted );
> moveToRejectedDir( this.keyFile );
> }
> document = null;
> symmetricKey = null;
> keyEncryptKey = null;
> xmlCipher = null;
>
> }
>
>
> }
>
>
>
> The exception I am getting is:
> Exception in thread "main" java.lang.StackOverflowError
> at org.apache.xerces.dom.ParentNode.internalRemoveChild(Unknown Source)
> at org.apache.xerces.dom.ParentNode.removeChild(Unknown Source)
> at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
> urce)
> at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
> urce)
> at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
> urce)
> at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
> urce)
> at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
> urce)
> at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
> urce)
> at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
> urce)
> at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
> urce)
> at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
>
---------------------------------------------------------------------
To unsubscribe, e-mail: xmlrpc-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: xmlrpc-dev-help@ws.apache.org
[jira] Closed: (XMLRPC-88)
org.apache.xml.security.encryption.XMLCipher.removeContent
Posted by "Jochen Wiedmann (JIRA)" <xm...@ws.apache.org>.
[ http://issues.apache.org/jira/browse/XMLRPC-88?page=all ]
Jochen Wiedmann closed XMLRPC-88:
---------------------------------
Resolution: Invalid
I cannot see, why this would be an issue for Apache XML-RPC. I suggest using a forum on java.sun.com, or a mailing list related to encryption.
> org.apache.xml.security.encryption.XMLCipher.removeContent
> ----------------------------------------------------------
>
> Key: XMLRPC-88
> URL: http://issues.apache.org/jira/browse/XMLRPC-88
> Project: XML-RPC
> Type: Bug
> Components: Releases
> Versions: unspecified
> Environment: OS:Windows 2000
> J2SE:1.5
> JRE:1.5.0_06
> Hardware: P-4 2.4 Ghz CPU, 2GB RAM.
> Reporter: Arpit Doshi
> Priority: Blocker
>
> Hello,
> I am trying to encrypt a XML file using XMLCipher class. The size of the file is almost 35 MB, while encrypting the XML file it throws this error after around 3 minutes.
> The program works perfectly fine for file size of less than 5 MB. This is very critical for our project and has to work as soon as possible.
> Eventually we are going to port the application on AIX5.3
> The piece of code I am using is:
> public void encryptData() throws EncryptionException
> {
> final String methodName = "encryptData";
>
> XMLCipher keyCipher,xmlCipher = null;
> Document document = null;
> String encryptedFileName = null;
> Key symmetricKey = null;
> Key keyEncryptKey = null;
> boolean exceptionOccured = false;
>
> try
> {
> System.out.println("now parsing document");
> document=parseFile( fileToBeEncrypted );
> // generate symmetric key
> symmetricKey = GenerateSymmetricKey();
>
> // Get a key to be used for encrypting the symmetric key
> keyEncryptKey = GenerateKeyEncryptionKey();
>
> // Write the key to a file
> //and pass the key and the name of file in which it has to store the Key
> storeKeyFile(keyEncryptKey,getKeyFileName(fileToBeEncrypted.toString()));
>
>
>
> // initialize cipher and operation mode is to wrap a key
> keyCipher =XMLCipher.getInstance(XMLCipher.TRIPLEDES_KeyWrap);
> keyCipher.init(XMLCipher.WRAP_MODE, keyEncryptKey);
>
> // encrypt symmetric key
> EncryptedKey encryptedKey = keyCipher.encryptKey(document, symmetricKey);
> // specify the element to encrypt, ideally it will be root element
> Element rootElement = document.getDocumentElement();
>
> Element elementToEncrypt = rootElement;
>
> if (elementToEncrypt == null)
> {
> throw new EncryptionException("Element to Encrypt is null since the filename may not be correct" +
> "or the file to be encrypted may not be well formed" +
> "Please check in File" + "AMLFeederConfiguration.properties");
> }
>
>
>
> // initialize cipher for encrypting XML data using operation mode of ENCRYPT_MODE
> xmlCipher = XMLCipher.getInstance(XMLCipher.TRIPLEDES);
>
> xmlCipher.init(XMLCipher.ENCRYPT_MODE, symmetricKey);
>
>
> // add key info to encrypted data element, so that within the encrypted data,
> // there is also information about the key, that should be used to decrypt the data
> EncryptedData encryptedDataElement = xmlCipher.getEncryptedData();
> KeyInfo keyInfo = new KeyInfo(document);
> keyInfo.add(encryptedKey);
> encryptedDataElement.setKeyInfo(keyInfo);
>
> Problem is caused while calling doFinal() // do the actual encryption
> boolean encryptContentsOnly = true;
> xmlCipher.doFinal(document, elementToEncrypt, encryptContentsOnly);
>
> //this will return xxxxx_e.xml
> encryptedFileName = getEncryptedFileNameToWrite(fileToBeEncrypted.toString());
> // write the results to a file
> writeEncryptedDocToFile(document, encryptedFileName);
> this.encryptedFileName = encryptedFileName;
> }
> catch(FileNotFoundException fnfException){
>
> }
> catch (ContentHandlerAlreadyRegisteredException e) {
> }
> catch(XMLEncryptionException xeException){
> }
> catch( EncryptionException encryptionException )
> {
> }
> catch(Exception e){
> }
> finally{
>
> if(exceptionOccured){
> moveToRejectedDir( this.fileToBeEncrypted );
> moveToRejectedDir( this.keyFile );
> }
> document = null;
> symmetricKey = null;
> keyEncryptKey = null;
> xmlCipher = null;
>
> }
>
> }
> The exception I am getting is:
> Exception in thread "main" java.lang.StackOverflowError
> at org.apache.xerces.dom.ParentNode.internalRemoveChild(Unknown Source)
> at org.apache.xerces.dom.ParentNode.removeChild(Unknown Source)
> at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
> urce)
> at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
> urce)
> at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
> urce)
> at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
> urce)
> at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
> urce)
> at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
> urce)
> at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
> urce)
> at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
> urce)
> at org.apache.xml.security.encryption.XMLCipher.removeContent(Unknown So
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: xmlrpc-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: xmlrpc-dev-help@ws.apache.org