функция CertStore_InstallClientCertificate
Заголовок: #include <applibs/certstore.h>
Устанавливает сертификат клиента, состоящий из открытого сертификата и закрытого ключа с указанным идентификатором. Затем идентификатор можно использовать для ссылки на сертификат в других функциях. Если сертификат любого типа уже установлен с тем же идентификатором, он будет заменен новым сертификатом.
int CertStore_InstallClientCertificate(const char *identifier, const char *certBlob, size_t certBlobLength, const char *privateKeyBlob, size_t privateKeyBlobLength, const char *privateKeyPassword);
Параметры
identifier
Идентификатор сертификата.certBlob
Указатель на большой двоичный объект, содержащий открытый сертификат в формате PEM. Большой двоичный объект должен содержать только содержимое между-----BEGIN...
тегами и-----END...
. Например, теги для сертификата:-----BEGIN CERTIFICATE-----
и-----END CERTIFICATE-----
.certBlobLength
Длина большого двоичного объекта сертификата, не включая символ конца null.privateKeyBlob
Указатель на большой двоичный объект, содержащий закрытый ключ в формате PEM.privateKeyBlobLength
Длина большого двоичного объекта сертификата, не включая символ конца null.privateKeyPassword
Указатель на массив символов с завершающимися значениями NULL, который содержит пароль закрытого ключа. Длина массива должна быть меньше или равна CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH байтам. Пароль требуется, еслиprivateKeyBlob
зашифрован.
Ошибки
Возвращает значение -1 при обнаружении ошибки и задает errno
значение ошибки.
EACCES: операция запрещена, так как в манифесте приложения не задана возможность CertStore.
EAGAIN: компонент certstore ОС еще не готов.
EFAULT:
certBlob
параметр ,identifier
илиprivateKeyBlob
имеет значение NULL.EINVAL:
identifier
параметр не завершается null,certBlob
илиprivateKeyBlob
содержит недопустимые данные.ENOSPC: недостаточно места в хранилище сертификатов для этого сертификата.
ERANGE:
certBlobLength
значение илиprivateKeyBlobLength
равно нулю или больше CERTSTORE_MAX_CERT_SIZE либоprivateKeyPassword
длина больше CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH.
Можно также указать любой другой errno
вариант. Такие ошибки не являются детерминированными, и нет никакой гарантии, что такое же поведение будет сохранено при обновлении системы.
Возвращаемое значение
Возвращает значение 0 для успешного выполнения или -1 для сбоя. В этом случае errno
задается значение ошибки.
Замечания
Допустимый идентификатор должен быть уникальной строкой от одного до CERTSTORE_MAX_IDENTIFIER_LENGTH символов в длину. Следующие символы допустимы в идентификаторе:
- От "A" до "Z"
- от "a" до "z"
- От "0" до "9"
- "." или "-" или "_"
Осторожностью
Так как идентификаторы сертификатов являются общесистемными, az sphere
команда или вызов функции, добавляющий новый сертификат, может перезаписать сертификат, добавленный ранее командой или вызовом функции, что может привести к сбоям сетевого подключения. Настоятельно рекомендуется разработать четкие процедуры обновления сертификатов и тщательно выбирать идентификаторы сертификатов.
Дополнительные сведения о том, как Azure Sphere использует идентификаторы сертификатов, см. в разделе Идентификаторы сертификатов.
Требования к манифесту приложения
Манифест приложения должен включать возможность CertStore.