RFC 6362

Multiple Attachments for Electronic Data Interchange - Internet Integration (EDIINT)

πŸ“… published August 2011, from ietf

Multiple Attachments for Electronic Data Interchange - Internet Integration (EDIINT) ✨

okay bestie, welcome to RFC 6362 πŸŽ€ this one is about how to cram multiple attachments into a single EDIINT message πŸ“Ž the title block first:

  • RFC number: 6362 πŸ’–
  • Stream: Internet Engineering Task Force (IETF) 🌸
  • Author: K. Meadors, Ed., from Drummond Group, Inc. πŸ’…
  • Category: Informational πŸ¦‹
  • Date: August 2011 πŸ—“οΈ
  • ISSN: 2070-1721
  • Obsoletes / Updates: the header doesn't list any RFCs this one obsoletes or updates ✨

Abstract ✨

okay so EDIINT AS1, AS2, and AS3 messages were built specifically to carry EDI documents πŸ“¦ one EDI document could already hold multiple interchanges, so there wasn't really a need to send several EDI documents in one message. then EDIINT got popular and people started using it for other stuff too πŸ”₯ some transactions needed several attachments that had to be read together and stored in one message. this Informational RFC explains how multiple documents, including non-EDI payloads, can be attached and sent together in a single EDIINT transport message πŸŽ€ the attachments live inside the MIME multipart/related structure. it also gives a minimal list of content-types that's meant to be supported as attachments 🫢


Status of This Memo 🌈

this document is not an Internet Standards Track specification, it's published for informational purposes πŸ’œ

this document is a product of the IETF πŸ‘‘ it represents the consensus of the IETF community and it got public review and was approved for publication by the Internet Engineering Steering Group (IESG). not every document the IESG approves is a candidate for any level of Internet Standard, so check Section 2 of RFC 5741 if you want the details 🧚

info about the current status of this document, any errata, and how to send feedback is at http://www.rfc-editor.org/info/rfc6362 ✨


Copyright (c) 2011 IETF Trust and the persons identified as the document authors. All rights reserved. πŸ’…

this document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) as they stand on the date this document was published πŸ“œ please read those carefully, because they spell out your rights and restrictions for this document. Code Components pulled out of this document must include the Simplified BSD License text described in Section 4.e of the Trust Legal Provisions, and they come without warranty, as described in the Simplified BSD License πŸ¦‹

this document may contain material from IETF Documents or IETF Contributions published or made publicly available before November 10, 2008 πŸ™ˆ the people controlling the copyright in some of that material may not have given the IETF Trust permission to allow modifications outside the IETF Standards Process. so unless you get an adequate license from whoever controls that copyright, this document may not be modified outside the IETF Standards Process, and derivative works of it may not be created outside the IETF Standards Process πŸ’€ the only exceptions are formatting it for publication as an RFC or translating it into languages other than English 🌍


Table of Contents πŸŽ€

   1. Introduction ....................................................3
      1.1. Requirements Language ......................................3
   2. Using Multiple Attachments in EDIINT ............................3
      2.1. Multipart/Related Structure ................................3
      2.2. EDIINT-Features Header .....................................4
      2.3. MIC Calculation ............................................4
      2.4. Document Processing ........................................5
      2.5. Content-Types to Support ...................................5
   3. Example Message .................................................6
   4. Security Considerations .........................................7
   5. Normative References ............................................7

1. Introduction πŸ’–

okay the main job of the EDIINT working group (WG) was to build a secure way to move EDI documents over the Internet πŸ” that got described in three WG-developed standards for secure transport: AS1 over SMTP [RFC3335], AS2 over HTTP [RFC4130], and AS3 over FTP [RFC4823] πŸ¦‹ for most EDI uses, all the info needed to finish one business transaction fit in a single document πŸ“„ but as EDIINT grew, new industries and businesses started using AS2 and needed to send multiple documents in one message to finish a trading-partner transaction 🌸 those documents came in a bunch of different MIME media types 🌈

so this Informational RFC explains how to use the MIME multipart/related body structure inside EDIINT messages to store multiple document attachments ✨ it also covers how the message integrity check (MIC) value is computed over that body πŸ”₯ and it gives a minimum list of MIME media types to support inside the multipart/related body, plus info on pulling those documents back out 🧚

1.1. Requirements Language 🫢

the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119] πŸ“–


2. Using Multiple Attachments in EDIINT πŸŽ€

multiple payload attachments for EDIINT messages are stored inside a multipart/related MIME body [RFC2387] πŸ“Ž the multipart/related structure lets multiple MIME attachments or message payloads travel together in a single structure and a single message 🫢

the attached payloads can be any MIME content-type depending on the trading-partner agreement, but Section 2.5 lists the content-types that MUST be supported πŸ‘‘ the use and format of the multipart/related body follows the rules in RFC 2387 [RFC2387], including the required type parameter that determines the root body part 🧚 using the optional start parameter is RECOMMENDED πŸ’œ

2.2. EDIINT-Features Header ✨

to show that it supports multiple attachments (MAs), an EDIINT application MUST use the EDIINT-Features header [RFC6017] πŸ¦‹ the header tells everyone the instance application can support various features, like certification exchange 🌸 and it's present in all messages from the instance application, not only the ones that feature certification exchange πŸ™ˆ

for applications that implement multiple attachments, the MA-Feature-Name MUST be used inside the EDIINT-Features header, following this ABNF [RFC5234] syntax:

   MA-Feature-Name = "multiple-attachments"

here's an example of the EDIINT-Features header in a message from an application that supports MA:

   EDIINT-Features: multiple-attachments

2.3. MIC Calculation πŸ”₯

MIC calculation in an EDIINT message with multiple attachments works the same way as for a single EDI payload 🌈 the only difference is that you calculate the message integrity check (MIC) over the whole multipart/related body instead of over a single EDI payload πŸ’– Section 5.2.1 of AS1 [RFC3335] and Section 4 of EDIINT COMPRESSION [RFC5402] describe the MIC calculations used for a single payload document inside an EDIINT message πŸ“– the approach is summarized below for the multipart/related body, but go read those sections for the full details 🧚

for a compressed but unsigned message, regardless of encryption, the MIC is calculated over the uncompressed multipart/related body, including any applied Content-Transfer-Encoding πŸŽ€ the body MUST be canonicalized according to the procedure described in the underlying transport protocol (for example, HTTP AS2 [RFC4130]) before the MIC is calculated πŸ’…

for an encrypted but unsigned and uncompressed message, the MIC is calculated on the decrypted multipart/related body, including the header and all attached documents πŸ” the body MUST be canonicalized according to the procedure described in the underlying transport protocol (for example, HTTP AS2 [RFC4130]) before the MIC is calculated 🫢

for an unsigned and unencrypted message, the MIC is calculated over the data inside the multipart/related boundaries, before Content-Transfer-Encoding πŸ™ˆ however, unsigned and unencrypted messages SHOULD NOT be sent because of the lack of security πŸ’€

⚠️ if the expected MIC value differs from the calculated MIC value, all attachments MUST be considered invalid and retransmitted 😭

2.4. Document Processing 🌸

when a receiver gets an EDIINT message with multiple attachments, the receiving user agent MUST be able to extract the attached payloads from the message, not just strip out the multipart/related body πŸ‘‘ what happens to the documents, and how they relate to the pending transaction, is implementation dependent 🧚

2.5. Content-Types to Support 🌈

documents of the following MIME media types MAY be found in a multipart/related body, and the user agent MUST accept them ✨ any media type can be used depending on industry need, and other media types MAY be accepted depending on the trading-partner agreement πŸ’œ for the definitions of the media types below, see [MIMEREG] πŸ“–

   application/xml
   application/pdf
   application/msword
   application/rtf
   application/octet-stream
   application/zip
   image/gif
   image/tiff
   image/jpeg
   text/plain
   text/html
   text/rtf
   text/xml

part 2 is where the example message, security stuff, and references live πŸ‘€πŸ«Ά

4. Security Considerations πŸ”βœ¨

okay bestie, this section is lowkey serious but also kind of iconic πŸ’…. multiple attachments have security concerns that are super similar to the three EDIINT transport standards 🫢. the big ones are using strong cryptography and making sure your certificates are valid and actually chain up to a trusted certification authority (CA) πŸ”’. for all the tea, go check out these three: SMTP AS1 [RFC3335], HTTP AS2 [RFC4130], and FTP AS3 [RFC4823] πŸ“š. they cover their own security considerations in depth, so don't skip them, periodt πŸ™ˆ.

the only extra security consideration is this: if the MIC calculation done by the user agent doesn't match the expected MIC calculation, then ALL the attached documents MUST be considered invalid 😭🚨. the MIC is calculated over the multipart/related body, so it basically validates the content integrity of every single document in there at once πŸ¦‹. that's giving main character energy for integrity checks πŸ’–.

⚠️ bestie, the MUST here is not optional. one bad MIC means every attachment gets thrown out, not just the one that looks wrong πŸ’€.

5. Normative References πŸ“–

okay so here's the reading list 🌸. I've kept every reference exactly as written so nothing gets lost in translation 🧚.

[MIMEREG] "MIME Media Types", <http://www.iana.org/>.

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2387] Levinson, E., "The MIME Multipart/Related Content-type", RFC 2387, August 1998.

[RFC3335] Harding, T., Drummond, R., and C. Shih, "MIME-based Secure Peer-to-Peer Business Data Interchange over the Internet", RFC 3335, September 2002.

[RFC4130] Moberg, D. and R. Drummond, "MIME-Based Secure Peer-to- Peer Business Data Interchange Using HTTP, Applicability Statement 2 (AS2)", RFC 4130, July 2005.

[RFC4823] Harding, T. and R. Scott, "FTP Transport for Secure Peer- to-Peer Business Data Interchange over the Internet", RFC 4823, April 2007.

[RFC5234] Crocker, D., Ed., and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, January 2008.

[RFC5402] Harding, T., Ed., "Compressed Data within an Internet Electronic Data Interchange (EDI) Message", RFC 5402, February 2010.

[RFC6017] Meadors, K., Ed., "Electronic Data Interchange - Internet Integration (EDIINT) Features Header Field", RFC 6017, September 2010.


Author's Address πŸŽ€

Kyle Meadors (editor)
Drummond Group, Inc.
Nashville, Tennessee  37221
US

Phone: +1 (817) 709-1627
EMail: kyle@drummondgroup.com

that's the whole doc, babe πŸ¦‹βœ¨ go slay your implementation πŸ‘‘

πŸ“¦ where this page comes from