You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Jono Morris (Jira)" <ji...@apache.org> on 2025/01/10 12:13:00 UTC

[jira] [Commented] (CAMEL-21505) camel-as2: Binary files get corrupt when using 'base64' content transfer encoding

    [ https://issues.apache.org/jira/browse/CAMEL-21505?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17911945#comment-17911945 ] 

Jono Morris commented on CAMEL-21505:
-------------------------------------

Looking at sections 3.4 and 3.5 of AS2 spec [1], AS2 appears to be primarily designed for sending EDI messages using 7-bit US-ASCII.  

Camel-AS2 provides EDIFACT, EDI-X12, EDI-CONSENT, and XML entity types, all of which only support text.  However, I've found
that Zip content can be sent if it is first Base64 encoded, and I've created a few examples [2].
   
   1. https://www.ietf.org/rfc/rfc4130.txt
   2. https://github.com/apache/camel/compare/main...jonomorris:camel:CAMEL-21505_zipfile_example?expand=1
   

> camel-as2: Binary files get corrupt when using 'base64' content transfer encoding
> ---------------------------------------------------------------------------------
>
>                 Key: CAMEL-21505
>                 URL: https://issues.apache.org/jira/browse/CAMEL-21505
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-as2
>    Affects Versions: 4.8.1
>         Environment: Windows and Docker 
> Java 21 Temurin
>            Reporter: Meinolf S-D
>            Priority: Minor
>             Fix For: 4.8.4, 4.10.0
>
>         Attachments: image-2024-12-03-12-29-47-487.png
>
>
> Binary files get corrupt when using *base64* content transfer encoding due to String assignment of the decoded byte[]
> This can easily be tested sending a .zip file to Camel AS2 listener.
> After some investigation the issue seems to be in the EntityUtil.decode method.
> As shown in the screenshot the decoded (binary) byte[] is assigned to a new String which result into corrupt date in case of binary content.
> !image-2024-12-03-12-29-47-487.png!
> In addition there are new line characters in the encoded base64 encoded String data object.
> In case of using transfer encoding type *binary* java.nio.charset.MalformedInputException: Input length = 1 it thrown which might be OK.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)