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

  • EINVAL: o identifier parâmetro não é encerrado por NULL, ou certBlobprivateKeyBlob inclui dados inválidos.

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

  • ERANGE: o certBlobLength ou privateKeyBlobLength é 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; 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.