função CertStore_InstallClientCertificate
Cabeçalho: #include <applibs/certstore.h>
Instala um certificado de cliente que consiste num certificado público e numa chave privada com o ID especificado. Em seguida, o ID pode ser utilizado para fazer referência ao certificado noutras funções. Se algum tipo de certificado já estiver instalado com o mesmo ID, 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
O ID do certificado.certBlob
Um ponteiro para um blob que contém o certificado público no formato PEM. O blob só tem de conter o conteúdo entre as-----BEGIN...
etiquetas e-----END...
. Por exemplo, as etiquetas de um certificado são-----BEGIN CERTIFICATE-----
e-----END CERTIFICATE-----
.certBlobLength
O comprimento do blob do certificado, sem incluir o caráter de terminação nulo.privateKeyBlob
Um ponteiro para um blob que contém a chave privada no formato PEM.privateKeyBlobLength
O comprimento do blob do certificado, sem incluir o caráter de terminação nulo.privateKeyPassword
Um ponteiro para uma matriz de carateres terminada nulo que contém a palavra-passe da chave privada. O comprimento da matriz tem de ser menor ou igual a CERTSTORE_MAX_PRIVATE_KEY_PASSWORD_LENGTH bytes. É necessária uma palavra-passe seprivateKeyBlob
estiver encriptada.
Erros
Devolve -1 se for encontrado um erro e define errno
para o valor de erro.
EACCES: a operação não é permitida porque a capacidade do CertStore não está definida no manifesto da aplicação.
EAGAIN: o componente certstore do SO ainda não está pronto.
EFAULT: o
certBlob
parâmetro ,identifier
ouprivateKeyBlob
é NULL.EINVAL: o
identifier
parâmetro não é terminado com NULL, ocertBlob
ouprivateKeyBlob
inclui dados inválidos.ENOSPC: não existe espaço suficiente no armazenamento de certificados para este certificado.
ERANGE: ou
certBlobLength
privateKeyBlobLength
é 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; tais erros não são deterministas e não há garantias de que o mesmo comportamento será mantido através de atualizações do sistema.
Valor devolvido
Devolve 0 para êxito ou -1 para falha, caso errno
em que está definido como o valor de erro.
Observações
Um identificador válido tem de ser uma cadeia exclusiva de um para CERTSTORE_MAX_IDENTIFIER_LENGTH carateres de comprimento. Os seguintes carateres são válidos num identificador:
- 'A' para 'Z'
- 'a' a 'z'
- '0' a '9'
- '.' ou '-' ou '_'
Atenção
Uma vez que os IDs de certificado são ao nível do sistema, um comando azsphere ou uma chamada de função que adiciona um novo certificado pode substituir um certificado que foi adicionado por uma chamada de comando ou função anterior, potencialmente causando falhas de ligação de rede. Recomendamos vivamente que desenvolva procedimentos de atualização de certificados claros e escolha cuidadosamente os IDs de certificado.
Veja IDs de certificado para obter mais informações sobre como o Azure Sphere utiliza IDs de certificado.
Requisitos do manifesto de aplicação
O manifesto da aplicação tem de incluir a capacidade CertStore.