最もよく使われるコンテンツタイプは SignedData です。コンテンツ(分離署名の場合はコンテンツへの参照のみ)、署名者の証明書、署名者ごとに 1 つの SignerInfo を含みます。SignerInfo には通常、署名属性(少なくともコンテンツタイプとコンテンツの messageDigest、多くの場合は署名時刻も)が含まれ、署名はコンテンツに直接ではなく、これらの属性の DER エンコーディングに対して計算されます。
EnvelopedData は、受信者ごとの鍵輸送(RSA)、鍵共有(ECDH)、または RFC 9629 以降は ML-KEM(RFC 9936)などの KEM によって、コンテンツを受信者向けに暗号化します。AuthEnvelopedData は AEAD によるコンテンツ暗号化を追加します(RFC 5083)。PEM ラベルは PKCS7 と CMS です。
検証の失敗の多くは、次のような詳細に起因します。署名されたものとバイト単位で一致しない分離コンテンツ(S/MIME での改行コードの違い)、証明書チェーンの欠落、異なる SET OF の順序で再エンコードされた署名属性、検証者がもう受け付けないダイジェストアルゴリズムです。openssl cms -verify と S/MIME 署名検証ツールで、どの段階で失敗したかを確認できます。