Thanks for the patch! I'll try to take a look over the weekend!
Aleksey
Frank Gross wrote:
I attached the patch that allows the replaced nodes during encryption
and decryption to be returned in the 'xmlSecEncCtxPtr' structure.
Actually, I added two entries in the 'xmlSecEncCtrPtr' structure :
- nodeReplacementMode, an enum of type 'xmlEncCtxNodeReplacementMode',
to define if the nodes will be released or returned in the second entry,
- a pointer to a xmlNodePtr called 'replacedNodeList' that contains the
list of the nodes that have been replaced.
One additional point, as it's up to the user to release the returned
nodes, I'm not sure if the code I added in the 'xmlSecEncCtxReset'
function to release the node list is necessary, because if someone
releases the node but forget to set the pointer to NULL it will crash.
But if he doesn't release the nodes, and this code is not there we got a
memory leak.
If you could take a look
Thanks,
Frank
Aleksey Sanin a écrit :
Sure, I love patches :) BTW, you can't find any docs about
flags/flags2 in xmlSecEncCtx because they are not used at the moment :)
Just reserved for the future :)
Aleksey
Frank Gross wrote:
Yes I agree, but it would be more efficient if I wouldn't have to do
that. And I have the same problem when I try to encrypt only the
content of an element, where all sub-nodes are removed. Actually, I
try to write an API where you give the node to be encrypted, but the
node passed to my function is still alive, and simply destroying the
nodes inside the library is impossible in my case, because some other
references can point on these nodes.
Therefore may I suggest a request ? Could you add an option in the
'xmlSecEncCtxPtr' structure to specify how the nodes to be replaced
should be handled, and return them in a list in the structure if for
instance the option was set to not releasing them so that the user
can choose to release them by hand or not. And the same kind of
feature when decrypting a node, because in some cases you want to
keep trace of the encrypted node.
My 2 cents contribution that could really help in my case, and allow
the programmer to choose instead of the library.
If you agree I could make a patch, using flags or flags2 in the
'xmlSecEncCtxPtr' structure, and add a new entry of type xmlNodePtr
with the list of nodes that were replaced but not released according
to flags or flags2 value. BTW what is the difference between flags
and flags2 ? Are they used because I didn't find any information in
the documentation ?
Best Regards,
Frank
Aleksey Sanin a écrit :
Well, you can always copy the node yourself before encrypting it.
Aleksey
Frank Gross wrote:
Hi,
I noticed that function 'xmlSecEncCtxXmlEncrypt' releases the node
that was encrypted when replaced by the 'EncryptedData' node.
Does it exist a way to not release that node, and let the user
choose whether he wants to destroy it or not ?
Thanks,
Frank
_______________________________________________
xmlsec mailing list
[email protected]
http://www.aleksey.com/mailman/listinfo/xmlsec
_______________________________________________
xmlsec mailing list
[email protected]
http://www.aleksey.com/mailman/listinfo/xmlsec
------------------------------------------------------------------------
_______________________________________________
xmlsec mailing list
[email protected]
http://www.aleksey.com/mailman/listinfo/xmlsec
_______________________________________________
xmlsec mailing list
[email protected]
http://www.aleksey.com/mailman/listinfo/xmlsec