This algorithm specifies the conversion between the Internet e-mail message format and the Message object format for clear-signed, opaque-signed, and encrypted messages. This algorithm extends the [RFC2822] and MIME to Email Object Conversion Algorithm as described in [MS-OXCMAIL], which describes the general conversion between the Internet e-mail message format and the Message object format. The Internet e-mail message format is described in [RFC2822], [RFC2045], [RFC2046], [RFC2047], [RFC2048], [RFC2049], [RFC1847], and [RFC5751], and the Message object format is described in [MS-OXCMSG].
A conversion from the Internet e-mail message format to the Message object format is performed by the protocol role when it receives a message in the Internet e-mail message format. Likewise, a conversion from the Message object format to the Internet e-mail message format is performed by the protocol role when it sends a message. In cases where the protocol role supports protocols that allow for saving or reading messages in the Internet e-mail message format, a similar mapping is required to and/or from the internal format.
The conversion process maps MIME entities to Attachment objects or the message body, and it maps message header fields and MIME entity header fields to properties of the Message object or Attachment object. For details about the entire conversion process, see [MS-OXCMAIL] section 2.
Ordinarily, when an Internet e-mail message or MIME message is mapped to a Message object, it is completely deconstructed into a form suitable for direct consumption by a wire protocol, and it can be mapped to a typical client's message presentation. This manner of message deconstruction is not feasible for S/MIME messages for the following two reasons:
Encrypted message content and the entire message structure are not accessible without a proper decryption key, which is typically not available at the time of delivery.
Signed message content has to be preserved in its entirety, in the exact form in which it was signed, in order for the message signature (as described in [RFC5751]) to be verifiable at a later date.
The preceding points impose restrictions on how the server and the client map an S/MIME message to a Message object; the algorithm described in [MS-OXCMAIL] cannot be used without modifications.
A set of mapping conventions exists to resolve this problem and to enable the handling of S/MIME messages as Message objects. The mapping conventions are as follows:
Unprotected top-level message header fields and MIME entity header fields are mapped to properties of a Message object or Attachment object in accordance with the algorithm described in [MS-OXCMAIL].
The Message object is identified as an S/MIME message by having its message class (PidTagMessageClass property ([MS-OXCMSG] section 18.104.22.168)) set to one of the reserved values described in sections 22.214.171.124 and 126.96.36.199.
The entire protected content of the S/MIME message is mapped to a single Attachment object of a corresponding Message object.
This algorithm does not distinguish opaque-signed messages from encrypted messages; they are both converted in the same manner.