função CertStore_InstallClientCertificate
Cabeçalho: #include <applibs/certstore.h>
Instala um certificado de cliente que consiste em um certificado público e uma chave privada com a ID especificada. Em seguida, a ID pode ser usada para consultar o certificado em outras funções. Se qualquer tipo de certificado já estiver instalado com a mesma ID, ele será substituído pelo novo certificado.
int CertStore_InstallClientCertificate(const char *identifier, const char *certBlob, size_t certBlobLength, const char *privateKeyBlob, size_t privateKeyBlobLength, const char *privateKeyPassword);
Parâmetros
identifier
A ID do certificado.certBlob
Um ponteiro para um blob que contém o certificado público no formato PEM. O blob só deve conter o conteúdo entre as-----BEGIN...
marcas e-----END...
. Por exemplo, as marcas de um certificado são-----BEGIN CERTIFICATE-----
e-----END CERTIFICATE-----
.certBlobLength
O comprimento do blob de certificado, não incluindo o caractere null-terminator.privateKeyBlob
Um ponteiro para um blob que contém a chave privada no formato PEM.privateKeyBlobLength
O comprimento do blob de certificado, não incluindo o caractere null-terminator.privateKeyPassword
Um ponteiro para uma matriz de caracteres terminada em nulo que contém a senha da chave privada. O comprimento da matriz deve ser menor ou igual a CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH bytes. Uma senha será necessária seprivateKeyBlob
for criptografada.
Erros
Retorna -1 se um erro for encontrado e definir errno
como o valor do erro.
EACCES: a operação não é permitida porque o recurso CertStore não está definido no manifesto do aplicativo.
EAGAIN: o componente do certstore do sistema operacional ainda não está pronto.
EFAULT: o
certBlob
parâmetro ,identifier
ouprivateKeyBlob
é NULL.EINVAL: o
identifier
parâmetro não é encerrado por NULL, oucertBlob
privateKeyBlob
inclui dados inválidos.ENOSPC: não há espaço suficiente no armazenamento de certificados para este certificado.
ERANGE: o
certBlobLength
ouprivateKeyBlobLength
é zero ou maior que CERTSTORE_MAX_CERT_SIZE ou oprivateKeyPassword
comprimento é maior que CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH.
Qualquer outro errno
também pode ser especificado; esses erros não são determinísticos e não há garantia de que o mesmo comportamento será mantido por meio de atualizações do sistema.
Valor retornado
Retorna 0 para êxito ou -1 para falha, nesse caso errno
é definido como o valor do erro.
Observações
Um identificador válido deve ser uma cadeia de caracteres exclusiva de um para CERTSTORE_MAX_IDENTIFIER_LENGTH caracteres de comprimento. Os seguintes caracteres são válidos em um identifer:
- 'A' para 'Z'
- 'a' para 'z'
- '0' a '9'
- '.' ou '-' ou '_'
Cuidado
Como as IDs de certificado são em todo o sistema, um comando azsphere ou uma chamada de função que adiciona um novo certificado pode substituir um certificado que foi adicionado por um comando ou chamada de função anterior, potencialmente causando falhas de conexão de rede. Recomendamos que você desenvolva procedimentos claros de atualização de certificado e escolha as IDs de certificado cuidadosamente.
Consulte IDs de certificado para obter mais informações sobre como o Azure Sphere usa IDs de certificado.
Requisitos de manifesto do aplicativo
O manifesto do aplicativo deve incluir o recurso CertStore.