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)