CryptMsgCalculateEncodedLength-Funktion (wincrypt.h)
Die CryptMsgCalculateEncodedLength-Funktion berechnet die maximale Anzahl von Bytes, die für eine codierte kryptografische Nachricht benötigt werden, wobei der Nachrichtentyp, die Codierungsparameter und die Gesamtlänge der zu codierenden Daten angegeben werden. Beachten Sie, dass das Ergebnis immer größer oder gleich der tatsächlich benötigten Anzahl von Bytes ist.
Syntax
DWORD CryptMsgCalculateEncodedLength(
[in] DWORD dwMsgEncodingType,
[in] DWORD dwFlags,
[in] DWORD dwMsgType,
[in] void const *pvMsgEncodeInfo,
[in, optional] LPSTR pszInnerContentObjID,
[in] DWORD cbData
);
Parameter
[in] dwMsgEncodingType
Gibt den verwendeten Codierungstyp an. Es ist immer akzeptabel, sowohl den Zertifikat- als auch den Nachrichtencodierungstyp anzugeben, indem sie mit einem bitweisen OR-Vorgang kombiniert werden, wie im folgenden Beispiel gezeigt:
X509_ASN_ENCODING | PKCS_7_ASN_ENCODING
Derzeit definierte Codierungstypen sind:
- X509_ASN_ENCODING
- PKCS_7_ASN_ENCODING
[in] dwFlags
Derzeit definierte Flags werden in der folgenden Tabelle angezeigt.
Wert | Bedeutung |
---|---|
|
Gibt an, dass die gestreamte Ausgabe keinen äußeren ContentInfo-Wrapper aufweist (gemäß PKCS #7). Dies macht es geeignet, in eine eingeschlossene Nachricht gestreamt zu werden. |
|
Gibt an, dass für die nachfolgenden Aufrufe von CryptMsgUpdate getrennte Daten bereitgestellt werden. |
|
Wird verwendet, um die Größe einer DER-Codierung einer Nachricht zu berechnen, die in einer umhüllten Nachricht geschachtelt werden soll. Dies ist besonders nützlich, wenn Streaming ausgeführt wird. |
|
Innerer Inhalt des Nicht-Datentyps wird in einer OCTET-ZEICHENFOLGE gekapselt. Dieses Flag gilt für signierte und umhüllte Nachrichten. |
[in] dwMsgType
Die aktuell definierten Nachrichtentypen sind in der folgenden Tabelle dargestellt.
Wert | Bedeutung |
---|---|
|
Eine Oktettzeichenfolge (BYTE). |
|
|
|
|
|
Nicht implementiert. |
|
|
|
Nicht implementiert. |
[in] pvMsgEncodeInfo
Ein Zeiger auf die zu codierenden Daten. Der Typ der Daten, auf die verwiesen wird, hängt vom Wert von dwMsgType ab. Ausführliche Informationen finden Sie in der DwMsgType-Tabelle .
[in, optional] pszInnerContentObjID
Beim Aufrufen von CryptMsgCalculateEncodedLength mit bereits codierten Daten für CryptMsgUpdate wird der entsprechende Objektbezeichner in pszInnerContentObjID übergeben. Wenn pszInnerContentObjIDNULL ist, wird davon ausgegangen, dass der innere Inhaltstyp zuvor nicht codiert wurde und als Oktettzeichenfolge codiert ist und dem Typ CMSG_DATA.
Wenn Streaming verwendet wird, muss pszInnerContentObjID entweder NULL oder szOID_RSA_data sein.
Die folgenden Algorithmusobjektbezeichner werden häufig verwendet:
- szOID_RSA_data
- szOID_RSA_signedData
- szOID_RSA_envelopedData
- szOID_RSA_signEnvData
- szOID_RSA_digestedData
- szOID_RSA_encryptedData
- SPC_INDIRECT_DATA_OBJID
[in] cbData
Die Größe des Inhalts in Bytes.
Rückgabewert
Gibt die erforderliche Länge für eine codierte kryptografische Nachricht zurück. Diese Länge ist möglicherweise nicht die genaue Länge, aber sie ist nicht kleiner als die erforderliche Länge. Null wird zurückgegeben, wenn die Funktion fehlschlägt.
Verwenden Sie zum Abrufen erweiterter Fehlerinformationen die GetLastError-Funktion . In der folgenden Tabelle sind die am häufigsten zurückgegebenen Fehlercodes aufgeführt.
Rückgabecode | Beschreibung |
---|---|
|
Ungültiger Nachrichtentyp. |
|
Der kryptografische Algorithmus ist unbekannt. |
|
Mindestens ein Argument ist ungültig. |
Anforderungen
Unterstützte Mindestversion (Client) | Windows XP [Desktop-Apps | UWP-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [Desktop-Apps | UWP-Apps] |
Zielplattform | Windows |
Kopfzeile | wincrypt.h |
Bibliothek | Crypt32.lib |
DLL | Crypt32.dll |