O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

nl :: Tecer:: Perfis :: Segurança:: CASO:: WeaveCASEAuthDelegate

Esta é uma classe abstrata.

#include <src/lib/profiles/security/WeaveCASE.h>

Interface abstrata para que as ações de autenticação são delegadas durante CASE estabelecimento da sessão.

Resumo

Herança

Dirigir Subclasses conhecidas: nl :: Weave :: DeviceManager :: WeaveDeviceManager

Funções públicas

BeginValidation (const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual WEAVE_ERROR
Chamado no início da validação do certificado.
EncodeNodeCertInfo (const BeginSessionContext & msgCtx,TLVWriter & writer)=0
virtual WEAVE_ERROR
Encode CASE Informações do certificado para o nó local.
EncodeNodePayload (const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen)
virtual WEAVE_ERROR
Codificar uma carga útil de aplicação específica para ser incluída no CASE mensagem para o peer.
EndValidation (const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual void
Chamado no final da validação do certificado.
GenerateNodeSignature (const BeginSessionContext & msgCtx, const uint8_t *msgHash, uint8_t msgHashLen,TLVWriter & writer, uint64_t tag)=0
virtual WEAVE_ERROR
Gere uma assinatura usando a chave privada do nó local.
HandleValidationResult (const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet, WEAVE_ERROR & validRes)=0
virtual WEAVE_ERROR
Chamado com o resultado da validação do certificado.
OnPeerCertsLoaded (const BeginSessionContext & msgCtx, WeaveDN & subjectDN, CertificateKeyId & subjectKeyId, ValidationContext & validCtx, WeaveCertificateSet & certSet)
virtual WEAVE_ERROR
Chamado depois que os certificados do par foram carregados.

Funções públicas

BeginValidation

virtual WEAVE_ERROR BeginValidation(
  const BeginSessionContext & msgCtx,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet
)=0

Chamado no início da validação do certificado.

Implementações deve inicializar o fornecido WeaveCertificateSet objeto com recursos suficientes para lidar com a validação do certificado próximo. Neste momento implementações podem carregar raiz confiável ou certificados de CA para o conjunto de certificado, ou esperar até OnPeerCertsLoaded () é chamado.

Cada certificado carregado no conjunto de certificados receberá um tipo de certificado padrão pela função de carregamento. Implementações devem ajustar estes tipos, conforme necessário para garantir o tratamento correto do certificado durante a validação, e a atribuição correta de WeaveAuthMode para CASE interações.

O contexto de validação fornecido será inicializado com um conjunto de critérios de validação padrão, que a implementação pode alterar conforme necessário. A implementação deve definir o campo EffectiveTime ou definir os sinalizadores de validação apropriados para suprimir a validação do tempo de vida do certificado.

Se forem desejados resultados de validação detalhados, a implementação pode inicializar os campos CertValidationResults e CertValidationLen.

Implementações são obrigados a manter quaisquer recursos alocados durante BeginValidation () até que o correspondente EndValidation () é chamado é feito. Implementações está garantido que EndValidation () será chamado apenas uma vez para cada chamada bem-sucedida para BeginValidation () .

EncodeNodeCertInfo

virtual WEAVE_ERROR EncodeNodeCertInfo(
  const BeginSessionContext & msgCtx,
  TLVWriter & writer
)=0

Encode CASE Informações do certificado para o nó local.

Implementações podem usar essa chamada para substituir a codificação padrão do CASE estrutura CertificateInformation para o nó local. Quando chamada, a implementação deve escrever uma estrutura CertificateInformation contendo, no mínimo, o certificado de entidade do nó local. A implementação pode incluir opcionalmente um conjunto de certificados relacionados e / ou âncoras de confiança.

EncodeNodePayload

virtual WEAVE_ERROR EncodeNodePayload(
  const BeginSessionContext & msgCtx,
  uint8_t *payloadBuf,
  uint16_t payloadBufSize,
  uint16_t & payloadLen
)

Codificar uma carga útil de aplicação específica para ser incluída no CASE mensagem para o peer.

A implementação desse método é opcional. A implementação padrão retorna uma carga útil de comprimento zero.

EndValidation

virtual void EndValidation(
  const BeginSessionContext & msgCtx,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet
)=0

Chamado no final da validação do certificado.

As implementações podem usar esta chamada para realizar a limpeza após a conclusão da validação da certificação. Implementações está garantido que EndValidation () será chamado apenas uma vez para cada chamada bem-sucedida para BeginValidation () .

GenerateNodeSignature

virtual WEAVE_ERROR GenerateNodeSignature(
  const BeginSessionContext & msgCtx,
  const uint8_t *msgHash,
  uint8_t msgHashLen,
  TLVWriter & writer,
  uint64_t tag
)=0

Gere uma assinatura usando a chave privada do nó local.

Quando chamadas, as implementações devem calcular uma assinatura no valor de hash fornecido usando a chave privada do nó. A assinatura gerado deve ser escrito na forma de um CASE estrutura ECDSASignature ao fornecido TLV escrita usando a tag especificada.

Nos casos em que a chave privada do nó é realizada em um buffer local, o GenerateAndEncodeWeaveECDSASignature () função de utilidade pode ser útil para implementar este método.

HandleValidationResult

virtual WEAVE_ERROR HandleValidationResult(
  const BeginSessionContext & msgCtx,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet,
  WEAVE_ERROR & validRes
)=0

Chamado com o resultado da validação do certificado.

As implementações podem usar esta chamada para inspecionar e possivelmente alterar o resultado da validação do certificado do par. Se a validação for bem-sucedida, validRes será definido como WEAVE_NO_ERROR. Nesse caso, o contexto de validação conterá detalhes sobre o resultado. Em particular, o campo TrustAnchor será definido para o certificado de âncora de confiança.

Se a aplicação inicializados os CertValidationResults e campos CertValidationLen dentro do ValidationContext estrutura durante o BeginValidation () chamado, em seguida, estes campos serão contidas resultados detalhados de validação para cada certificado no conjunto certificado.

As implementações podem sobrescrever isso definindo validRes com um valor de erro, fazendo com que a validação falhe.

Se a validação falhou, validRes refletirá o motivo da falha. As implementações podem substituir o resultado por um valor de erro diferente, mas NÃO DEVEM definir o resultado como WEAVE_NO_ERROR.

OnPeerCertsLoaded

virtual WEAVE_ERROR OnPeerCertsLoaded(
  const BeginSessionContext & msgCtx,
  WeaveDN & subjectDN,
  CertificateKeyId & subjectKeyId,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet
)

Chamado depois que os certificados do par foram carregados.

As implementações podem usar esta chamada para finalizar os certificados de entrada e os critérios de validação que serão usados ​​para realizar a validação do certificado do par. No momento da chamada, os certificados fornecidos pelo par terão sido carregados no conjunto de certificados (incluindo seu próprio certificado, se houver). Além disso, os argumentos subjectDN e subjectKeyId terão sido inicializados com valores que serão usados ​​para resolver o certificado do par do conjunto de certificados. Se o par forneceu seu próprio certificado (em vez de uma referência de certificado), o campo EntityCert no argumento validCtx conterá um ponteiro para esse certificado.

Durante essa chamada, as implementações podem modificar o conteúdo do conjunto de certificados, incluindo a adição de novos certificados. Eles também podem alterar os argumentos subjectDN, subjectKeyId ou validCtx conforme necessário. Mais importante, as implementações devem ajustar os campos de tipo de certificado com o certificado definido antes de retornar para garantir o tratamento correto dos certificados durante a validação e as verificações de controle de acesso subsequentes.

NOTA: No caso de o par fornecer uma referência de certificado para si mesmo, em vez de um certificado completo, o campo EntityCert no contexto de validação conterá um NULL. Se uma implementação deseja oferecer suporte a referências de certificado, ela deve adicionar um certificado que corresponda ao DN do assunto do par e ID da chave ao conjunto de certificados antes de retornar.

A implementação desse método é opcional. A implementação padrão não faz nada.