Sdílet prostřednictvím


CertStore_InstallClientCertificate funkce

Hlavička: #include <applibs/certstore.h>

Nainstaluje klientský certifikát, který se skládá z veřejného certifikátu a privátního klíče se zadaným ID. ID se pak dá použít k odkaz na certifikát v jiných funkcích. Pokud už je nějaký typ certifikátu se stejným ID nainstalovaný, nahradí se novým certifikátem.

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

Parametry

  • identifier ID certifikátu.

  • certBlob Ukazatel na objekt blob, který obsahuje veřejný certifikát ve formátu PEM. Objekt blob musí obsahovat pouze obsah mezi značkami -----BEGIN... a -----END... . Například značky pro certifikát jsou -----BEGIN CERTIFICATE----- a -----END CERTIFICATE-----.

  • certBlobLength Délka objektu blob certifikátu bez znaku ukončovací znak null

  • privateKeyBlob Ukazatel na objekt blob, který obsahuje privátní klíč ve formátu PEM.

  • privateKeyBlobLength Délka objektu blob certifikátu bez znaku ukončovací znak null

  • privateKeyPassword Ukazatel na pole znaků s ukončenou hodnotou null, které obsahuje heslo privátního klíče. Délka pole musí být menší nebo rovna CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH bajtů. Heslo se vyžaduje, pokud privateKeyBlob je zašifrované.

Chyby

Vrátí hodnotu -1, pokud dojde k chybě, a nastaví errno se na chybovou hodnotu.

  • EACCES: Operace není povolená, protože v manifestu aplikace není nastavená funkce CertStore.

  • EAGAIN: Komponenta certstore operačního systému ještě není připravená.

  • EFAULT: certBlobParametr , identifiernebo privateKeyBlob má hodnotu NULL.

  • EINVAL: identifier Parametr není null-terminated, certBlob nebo privateKeyBlob obsahuje neplatná data.

  • ENOSPC: V úložišti certifikátů pro tento certifikát není dostatek místa.

  • ERANGE: certBlobLength hodnota nebo privateKeyBlobLength je nula nebo větší než CERTSTORE_MAX_CERT_SIZE nebo privateKeyPassword je délka větší než CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH.

Je také možné zadat jakékoli jiné errno chyby. Tyto chyby nejsou deterministické a neexistuje žádná záruka, že se stejné chování zachová prostřednictvím aktualizací systému.

Vrácená hodnota

Vrátí hodnotu 0 pro úspěch nebo -1 pro selhání. V tomto případě errno je nastavená na chybovou hodnotu.

Poznámky

Platným identifikátorem musí být jedinečný řetězec o délce od jednoho do CERTSTORE_MAX_IDENTIFIER_LENGTH znaků. Následující znaky jsou platné v identiferu:

  • A až Z
  • "a" až "z"
  • Od 0 do 9
  • '.' nebo '-' nebo '_'

Pozor

Vzhledem k tomu, že ID certifikátů jsou pro celý systém, az sphere může příkaz nebo volání funkce, které přidává nový certifikát, přepsat certifikát přidaný dřívějším voláním příkazu nebo funkce, což může způsobit selhání síťového připojení. Důrazně doporučujeme vyvinout jasné postupy aktualizace certifikátů a pečlivě zvolit ID certifikátů.

Další informace o tom, jak Azure Sphere používá ID certifikátů, najdete v tématu ID certifikátů.

Požadavky manifestu aplikace

Manifest aplikace musí obsahovat funkci CertStore.