Udostępnij za pośrednictwem


funkcja CertStore_InstallClientCertificate

Nagłówek: #include <applibs/certstore.h>

Instaluje certyfikat klienta składający się z certyfikatu publicznego i klucza prywatnego z określonym identyfikatorem. Identyfikator ten może być następnie używany do odwoływania się do certyfikatu w innych funkcjach. Jeśli jakikolwiek typ certyfikatu jest już zainstalowany z tym samym identyfikatorem, zostanie on zastąpiony nowym certyfikatem.

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

Parametry

  • identifier Identyfikator certyfikatu.

  • certBlob Wskaźnik do obiektu blob zawierającego certyfikat publiczny w formacie PEM. Obiekt blob musi zawierać tylko zawartość między tagami -----BEGIN... i -----END... . Na przykład tagi certyfikatu to -----BEGIN CERTIFICATE----- i -----END CERTIFICATE-----.

  • certBlobLength Długość obiektu blob certyfikatu, bez znaku null-terminator.

  • privateKeyBlob Wskaźnik do obiektu blob zawierającego klucz prywatny w formacie PEM.

  • privateKeyBlobLength Długość obiektu blob certyfikatu, bez znaku null-terminator.

  • privateKeyPassword Wskaźnik do tablicy znaków zakończonych wartością null, która zawiera hasło klucza prywatnego. Długość tablicy musi być mniejsza niż lub równa CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH bajtów. Hasło jest wymagane, jeśli privateKeyBlob jest szyfrowane.

Błędy

Zwraca wartość -1 w przypadku napotkania błędu i ustawia errno wartość błędu.

  • EACCES: operacja jest niedozwolona, ponieważ funkcja CertStore nie jest ustawiona w manifeście aplikacji.

  • EAGAIN: składnik certstore systemu operacyjnego nie jest jeszcze gotowy.

  • EFAULT: certBlobparametr identifier, lub privateKeyBlob ma wartość NULL.

  • EINVAL: identifier parametr nie jest zakończony wartością certBlob NULL lub privateKeyBlob zawiera nieprawidłowe dane.

  • ENOSPC: nie ma wystarczającej ilości miejsca w magazynie certyfikatu dla tego certyfikatu.

  • ERANGE: certBlobLength wartość lub privateKeyBlobLength jest równa zero lub większa niż CERTSTORE_MAX_CERT_SIZE lub privateKeyPassword jest większa niż CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH.

Mogą być również określone inne errno błędy; takie błędy nie są deterministyczne i nie ma gwarancji, że to samo zachowanie zostanie zachowane za pośrednictwem aktualizacji systemu.

Zwracana wartość

Zwraca wartość 0 dla powodzenia lub -1 dla niepowodzenia, w którym to przypadku errno jest ustawiona wartość błędu.

Uwagi

Prawidłowy identyfikator musi być unikatowym ciągiem od jednego do CERTSTORE_MAX_IDENTIFIER_LENGTH znaków o długości. W identiferze są prawidłowe następujące znaki:

  • "A" do "Z"
  • 'a' na 'z'
  • Od "0" do '9'
  • '' lub '-' lub '_'

Ostrożność

Ponieważ identyfikatory certyfikatów są w całym systemie, az sphere wywołanie polecenia lub funkcji, które dodaje nowy certyfikat, może zastąpić certyfikat dodany przez wcześniejsze wywołanie polecenia lub funkcji, co może powodować awarie połączenia sieciowego. Zdecydowanie zalecamy opracowanie przejrzystych procedur aktualizacji certyfikatów i staranne wybieranie identyfikatorów certyfikatów.

Zobacz Identyfikatory certyfikatów , aby uzyskać więcej informacji o tym, jak usługa Azure Sphere korzysta z identyfikatorów certyfikatów.

Wymagania dotyczące manifestu aplikacji

Manifest aplikacji musi zawierać funkcję CertStore.