I think a new system property would be a reasonable approach with a default value of false. The current org.apache.xml.security.ignoreLineBreaks system property, if set to true, should override the value of the new property.

--Sean

On 3/26/25 8:26 AM, Ihor Kuzmanenko wrote:
Hello,


I know the discussion on line endings in Base64 being canonicalized to 
 has been hold for a while.


Taking into account the /base64Binary /data type of /DigestValue/, / SignatureValue /and other binary data fields and looking at the note on MIME line length limit in XML Schema doc (https://www.w3.org/TR/ xmlschema-2/#base64Binary <https://www.w3.org/TR/xmlschema-2/ #base64Binary>) - it looks reasonable to avoid line breaks at all.


Looking at the examples at https://www.w3.org/TR/xmldsig-core2 <https:// www.w3.org/TR/xmldsig-core2> and especially at the note after the Example 6 (https://www.w3.org/TR/xmldsig-core2/#sec-ECKeyValue <https:// www.w3.org/TR/xmldsig-core2/#sec-ECKeyValue>) I can guess that deviation from RFC 2045 related to line breaks is acceptable.


In Apache Santuario the only way to do this is to set the / org.apache.xml.security.ignoreLineBreaks/ property, but this removes all document formatting as well.


My suggestion is to introduce a separate property for line breaks in base64, for example /org.apache.xml.security.ignoreBase64LineBreaks/, to allow getting a 'pretty-printed' XML without carriage returns in Base64 in the end. We can make it compatible with existing behavior if we use/ java.util.Base64.getEncoder()/ when any of these properties is set.


A more flexible solution is to allow overriding of Base64.Encoder implementation in the API.


There was also a suggestion to set up encoding options with XMLSecurityProperties, see https://issues.apache.org/jira/browse/ SANTUARIO-525 <https://issues.apache.org/jira/browse/SANTUARIO-525>


Please let me know if you find any of these options reasonable and I can take care of PR preparation.


Thank you.


Best regards,

Ihor.



Reply via email to