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śliprivateKeyBlob
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:
certBlob
parametridentifier
, lubprivateKeyBlob
ma wartość NULL.EINVAL:
identifier
parametr nie jest zakończony wartościącertBlob
NULL lubprivateKeyBlob
zawiera nieprawidłowe dane.ENOSPC: nie ma wystarczającej ilości miejsca w magazynie certyfikatu dla tego certyfikatu.
ERANGE:
certBlobLength
wartość lubprivateKeyBlobLength
jest równa zero lub większa niż CERTSTORE_MAX_CERT_SIZE lubprivateKeyPassword
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.