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 erforderlich privateKeyBlob .

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 certBlobParameter , identifieroder privateKeyBlob ist NULL.

  • EINVAL: Der identifier Parameter ist nicht NULL-terminiert, oder certBlobprivateKeyBlob enthält ungültige Daten.

  • ENOSPC: Im Zertifikatspeicher ist nicht genügend Speicherplatz für dieses Zertifikat vorhanden.

  • ERANGE: oder certBlobLengthprivateKeyBlobLength ist null oder größer als CERTSTORE_MAX_CERT_SIZE oder die privateKeyPassword 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 azsphere-Befehl oder ein 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.