CryptSignAndEncodeCertificate-Funktion (wincrypt.h)
Die CryptSignAndEncodeCertificate-Funktion codiert und signiert ein Zertifikat, eine Zertifikatsperrliste (Certificate Revocation List , CRL), eine Zertifikatvertrauensliste (Certificate Trust List , CTL) oder eine Zertifikatanforderung.
Diese Funktion führt die folgenden Vorgänge aus:
- Ruft CryptEncodeObject mithilfe von lpszStructType auf, um die "zu signierten" Informationen zu codieren.
- Ruft CryptSignCertificate auf, um diese codierten Informationen zu signieren.
- Ruft CryptEncodeObject erneut auf, wobei lpszStructType auf X509_CERT festgelegt ist, um die resultierenden signierten, codierten Informationen weiter zu codieren.
Syntax
BOOL CryptSignAndEncodeCertificate(
[in] BCRYPT_KEY_HANDLE hBCryptKey,
[in] DWORD dwKeySpec,
[in] DWORD dwCertEncodingType,
[in] LPCSTR lpszStructType,
[in] const void *pvStructInfo,
[in] PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm,
[in] const void *pvHashAuxInfo,
[out] BYTE *pbEncoded,
[in, out] DWORD *pcbEncoded
);
Parameter
[in] hBCryptKey
Ein Handle des Kryptografiedienstanbieters (CSP ) für die Signatur. Bei diesem Handle handelt es sich um ein HCRYPTPROV-Handle , das mit der CryptAcquireContext-Funktion oder einem NCRYPT_KEY_HANDLE Handle erstellt wurde, das mithilfe der NCryptOpenKey-Funktion erstellt wurde. Neue Anwendungen sollten immer ein NCRYPT_KEY_HANDLE Handle eines CNG-CSP übergeben.
[in] dwKeySpec
Gibt den privaten Schlüssel an, der aus dem Container des Anbieters verwendet werden soll. Dies muss einer der folgenden Werte sein. Dieser Parameter wird ignoriert, wenn im Parameter hCryptProvOrNCryptKey ein CNG-Schlüssel übergeben wird.
Wert | Bedeutung |
---|---|
|
Verwenden Sie den Schlüsselaustauschschlüssel. |
|
Verwenden Sie den Schlüssel für die digitale Signatur. |
[in] dwCertEncodingType
Gibt den verwendeten Codierungstyp an. Dies kann der folgende Wert sein.
Wert | Bedeutung |
---|---|
|
Gibt die X.509-Zertifikatcodierung an. |
[in] lpszStructType
Ein Zeiger auf eine NULL-endende ANSI-Zeichenfolge, die den Typ der zu codierenden und signierten Daten enthält. Die folgenden vordefinierten lpszStructType-Konstanten werden mit Codierungsvorgängen verwendet.
Wert | Bedeutung |
---|---|
|
pvStructInfo ist die Adresse einer CRL_INFO-Struktur . |
|
pvStructInfo ist die Adresse einer CERT_REQUEST_INFO-Struktur . |
|
pvStructInfo ist die Adresse einer CERT_INFO-Struktur . |
|
pvStructInfo ist die Adresse einer CERT_KEYGEN_REQUEST_INFO-Struktur . |
[in] pvStructInfo
Die Adresse einer Struktur, die die zu signierten und codierten Daten enthält. Das Format dieser Struktur wird durch den lpszStructType-Parameter bestimmt.
[in] pSignatureAlgorithm
Ein Zeiger auf eine CRYPT_ALGORITHM_IDENTIFIER Struktur, die den Objektbezeichner (OID) des Signaturalgorithmus und alle zusätzlichen erforderlichen Parameter enthält. Diese Funktion verwendet die folgenden Algorithmus-OIDs:
- szOID_RSA_MD5RSA
- szOID_RSA_SHA1RSA
- szOID_X957_SHA1DSA
[in] pvHashAuxInfo
Reserviert. Muss NULL sein.
[out] pbEncoded
Ein Zeiger auf einen Puffer zum Empfangen der signierten und codierten Ausgabe.
Dieser Parameter kann NULL sein, um die Größe dieser Informationen für die Speicherbelegung festzulegen. Weitere Informationen finden Sie unter Abrufen von Daten mit unbekannter Länge.
[in, out] pcbEncoded
Ein Zeiger auf ein DWORD , das die Größe des Puffers in Bytes enthält, auf den der pbEncoded-Parameter verweist. Wenn die Funktion zurückgibt, enthält das DWORD die Anzahl der im Puffer gespeicherten oder zu speichernden Bytes.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich null (TRUE).
Wenn die Funktion fehlschlägt, ist der Rückgabewert 0 (FALSE). Rufen Sie GetLastError auf, um erweiterte Fehlerinformationen zu erhalten.
Rückgabecode | Beschreibung |
---|---|
|
Wenn der vom pbEncoded-Parameter angegebene Puffer nicht groß genug ist, um die zurückgegebenen Daten zu speichern, legt die Funktion den ERROR_MORE_DATA Code fest und speichert die erforderliche Puffergröße in Byte in der Variablen, auf die von pcbEncoded verwiesen wird. |
|
Ungültiger Zertifikatcodierungstyp. Derzeit wird nur X509_ASN_ENCODING unterstützt. |
|
Die OID des Signaturalgorithmus wird keinem bekannten oder unterstützten Hashalgorithmus zugeordnet. |
|
Fehler beim Codieren oder Decodieren. Die wahrscheinlichste Ursache für diesen Fehler ist die falsche Initialisierung der Felder in der Struktur, auf die von pvStructInfo verwiesen wird. |
Wenn die Funktion fehlschlägt, gibt GetLastError möglicherweise einen ASN.1-Codierungs-/Decodierungsfehler ( Abstract Syntax Notation One ) zurück. Informationen zu diesen Fehlern finden Sie unter ASN.1-Rückgabewerte für Codierung/Decodierung.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | wincrypt.h |
Bibliothek | Crypt32.lib |
DLL | Crypt32.dll |