CertStore_InstallClientCertificate-Funktion
Header: #include <applibs/certstore.h>
Installiert ein Clientzertifikat, das aus einem öffentlichen Zertifikat und einem privaten Schlüssel mit der angegebenen ID besteht. Die ID kann dann verwendet werden, um in anderen Funktionen auf das Zertifikat zu verweisen. Wenn bereits ein Zertifikattyp mit derselben ID installiert ist, wird es durch das neue Zertifikat ersetzt.
int CertStore_InstallClientCertificate(const char *identifier, const char *certBlob, size_t certBlobLength, const char *privateKeyBlob, size_t privateKeyBlobLength, const char *privateKeyPassword);
Parameter
identifier
Die ID des Zertifikats.certBlob
Ein Zeiger auf ein Blob, das das öffentliche Zertifikat im PEM-Format enthält. Das Blob darf nur den Inhalt zwischen den-----BEGIN...
Tags und-----END...
enthalten. Die Tags für ein Zertifikat sind-----BEGIN CERTIFICATE-----
z. B. und-----END CERTIFICATE-----
.certBlobLength
Die Länge des Zertifikatblobs, ohne das Nullabschlusszeichen.privateKeyBlob
Ein Zeiger auf ein Blob, das den privaten Schlüssel im PEM-Format enthält.privateKeyBlobLength
Die Länge des Zertifikatblobs, ohne das Nullabschlusszeichen.privateKeyPassword
Ein Zeiger auf ein Mit NULL endendes Zeichenarray, das das Kennwort für den privaten Schlüssel enthält. Die Länge des Arrays muss kleiner oder gleich CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH Bytes sein. Wenn verschlüsselt ist, ist ein Kennwort erforderlichprivateKeyBlob
.
Fehler
Gibt -1 zurück, wenn ein Fehler auftritt, und legt auf den Fehlerwert fest errno
.
EACCES: Der Vorgang ist nicht zulässig, da die CertStore-Funktion im Anwendungsmanifest nicht festgelegt ist.
EAGAIN: Die Zertifikatspeicherkomponente des Betriebssystems ist noch nicht bereit.
EFAULT: Der
certBlob
Parameter ,identifier
oderprivateKeyBlob
ist NULL.EINVAL: Der
identifier
Parameter ist nicht NULL-terminiert, odercertBlob
privateKeyBlob
enthält ungültige Daten.ENOSPC: Im Zertifikatspeicher ist nicht genügend Speicherplatz für dieses Zertifikat vorhanden.
ERANGE: oder
certBlobLength
privateKeyBlobLength
ist null oder größer als CERTSTORE_MAX_CERT_SIZE oder dieprivateKeyPassword
Länge ist größer als CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH.
Auch andere errno
Fehler können angegeben werden. Solche Fehler sind nicht deterministisch, und es gibt keine Garantie, dass das gleiche Verhalten durch Systemupdates beibehalten wird.
Rückgabewert
Gibt 0 für erfolg oder -1 für Fehler zurück. In diesem Fall errno
wird auf den Fehlerwert festgelegt.
Bemerkungen
Ein gültiger Bezeichner muss eine eindeutige Zeichenfolge zwischen einem und CERTSTORE_MAX_IDENTIFIER_LENGTH Zeichen sein. Die folgenden Zeichen sind in einem Identifer gültig:
- "A" bis "Z"
- "a" bis "z"
- "0" bis "9"
- "." oder "-" oder "_"
Vorsicht
Da Zertifikat-IDs systemweit sind, kann ein az sphere
Befehl oder Funktionsaufruf, der ein neues Zertifikat hinzufügt, ein Zertifikat überschreiben, das von einem früheren Befehl oder Funktionsaufruf hinzugefügt wurde, was zu Netzwerkverbindungsfehlern führen kann. Es wird dringend empfohlen, eindeutige Prozeduren für die Zertifikataktualisierung zu entwickeln und Zertifikat-IDs sorgfältig auszuwählen.
Weitere Informationen zur Verwendung von Zertifikat-IDs in Azure Sphere finden Sie unter Zertifikat-IDs .
Anforderungen an das Anwendungsmanifest
Das Anwendungsmanifest muss die CertStore-Funktion enthalten.