Partage via


CertStore_InstallClientCertificate fonction

En-tête : #include <applibs/certstore.h>

Installe un certificat client qui se compose d’un certificat public et d’une clé privée avec l’ID spécifié. L’ID peut ensuite être utilisé pour faire référence au certificat dans d’autres fonctions. Si un type de certificat est déjà installé avec le même ID, il est remplacé par le nouveau certificat.

int CertStore_InstallClientCertificate(const char *identifier, const char *certBlob, size_t certBlobLength, const char *privateKeyBlob, size_t privateKeyBlobLength, const char *privateKeyPassword);

Paramètres

  • identifier ID du certificat.

  • certBlob Pointeur vers un objet blob qui contient le certificat public au format PEM. L’objet blob doit uniquement contenir le contenu entre les -----BEGIN... balises et .-----END... Par exemple, les balises d’un certificat sont -----BEGIN CERTIFICATE----- et -----END CERTIFICATE-----.

  • certBlobLength Longueur de l’objet blob de certificat, sans inclure le caractère de fin null.

  • privateKeyBlob Pointeur vers un objet blob qui contient la clé privée au format PEM.

  • privateKeyBlobLength Longueur de l’objet blob de certificat, sans inclure le caractère de fin null.

  • privateKeyPassword Pointeur vers un tableau de caractères terminé par null qui contient le mot de passe de clé privée. La longueur du tableau doit être inférieure ou égale à CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH octets. Un mot de passe est requis si privateKeyBlob est chiffré.

Erreurs

Retourne -1 si une erreur est rencontrée et définit errno sur la valeur d’erreur.

  • EACCES : l’opération n’est pas autorisée, car la fonctionnalité CertStore n’est pas définie dans le manifeste de l’application.

  • EAGAIN : le composant certstore du système d’exploitation n’est pas encore prêt.

  • EFAULT : le certBlobparamètre , identifierou privateKeyBlob a la valeur NULL.

  • EINVAL : le identifier paramètre n’est pas terminé par NULL, ou privateKeyBlob inclut des certBlob données non valides.

  • ENOSPC : il n’y a pas suffisamment d’espace dans le stockage de certificat pour ce certificat.

  • ERANGE : certBlobLength ou privateKeyBlobLength est égal à zéro ou supérieur à CERTSTORE_MAX_CERT_SIZE ou la privateKeyPassword longueur est supérieure à CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH.

Toutes les autres errno peuvent également être spécifiées ; ces erreurs ne sont pas déterministes et il n’existe aucune garantie que le même comportement sera conservé via les mises à jour système.

Valeur de retour

Retourne 0 pour la réussite, ou -1 en cas d’échec, auquel cas errno est défini sur la valeur d’erreur.

Remarques

Un identificateur valide doit être une chaîne unique d’un à CERTSTORE_MAX_IDENTIFIER_LENGTH caractères de longueur. Les caractères suivants sont valides dans un identificateur :

  • 'A' à 'Z'
  • 'a' à 'z'
  • '0' à '9'
  • '.' ou '-' ou '_'

Attention

Étant donné que les ID de certificat sont à l’échelle du système, une commande azsphere ou un appel de fonction qui ajoute un nouveau certificat peut remplacer un certificat qui a été ajouté par une commande ou un appel de fonction antérieur, ce qui peut entraîner des échecs de connexion réseau. Nous vous recommandons vivement de développer des procédures de mise à jour de certificat claires et de choisir soigneusement les ID de certificat.

Pour plus d’informations sur la façon dont Azure Sphere utilise les ID de certificat, consultez ID de certificat.

Exigences du manifeste d’application

Le manifeste de l’application doit inclure la fonctionnalité CertStore.