Partilhar via


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 se privateKeyBlob 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 certBlobparâmetro , identifierou privateKeyBlob é NULL.

  • EINVAL: o identifier parâmetro não é terminado com NULL, o certBlob ou privateKeyBlob inclui dados inválidos.

  • ENOSPC: não existe espaço suficiente no armazenamento de certificados para este certificado.

  • ERANGE: ou certBlobLengthprivateKeyBlobLength é zero ou maior que CERTSTORE_MAX_CERT_SIZE ou o privateKeyPassword 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.