Der häufigste Inhaltstyp ist SignedData: der Inhalt (bei abgetrennten Signaturen nur ein Verweis darauf), die Zertifikate der Signierer und ein SignerInfo pro Signierer. Ein SignerInfo enthält meist signierte Attribute – mindestens den Inhaltstyp und den messageDigest des Inhalts, oft einen Signaturzeitpunkt –, und die Signatur wird über die DER-Kodierung dieser Attribute berechnet, nicht direkt über den Inhalt.
EnvelopedData verschlüsselt Inhalte für Empfänger, und zwar pro Empfänger per Schlüsseltransport (RSA), Schlüsseleinigung (ECDH) oder, seit RFC 9629, mit KEMs wie ML-KEM (RFC 9936). AuthEnvelopedData ergänzt eine Inhaltsverschlüsselung mit AEAD (RFC 5083). Die PEM-Labels lauten PKCS7 und CMS.
Die meisten Fehlschläge bei der Prüfung liegen an Details: abgetrennter Inhalt, der nicht byteidentisch mit dem Signierten ist (Zeilenenden bei S/MIME), eine fehlende Zertifikatskette, signierte Attribute, die mit anderer Sortierung von SET OF neu kodiert wurden, oder ein Digest-Algorithmus, den der Verifizierer nicht mehr akzeptiert. openssl cms -verify und der S/MIME-Signatur-Verifizierer zeigen, welcher Schritt fehlgeschlagen ist.