En Google, luchamos por la equidad racial de la comunidad negra. Más información

nl :: Tejido:: Perfiles: Seguridad:: CASO:: WeaveCASEAuthDelegate

Esto es una clase abstracta.

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

Interfaz abstracta a la que se delegan las acciones de autenticación durante CASO establecimiento de la sesión.

Resumen

Herencia

Las subclases dirigir conocidos: nl :: Armadura :: :: DeviceManager WeaveDeviceManager

Funciones publicas

BeginValidation (const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual WEAVE_ERROR
Llamado al inicio de la validación del certificado.
EncodeNodeCertInfo (const BeginSessionContext & msgCtx,TLVWriter & writer)=0
virtual WEAVE_ERROR
Codificar CASO Información del certificado para el nodo local.
EncodeNodePayload (const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen)
virtual WEAVE_ERROR
Codificar una carga útil de aplicación específica que debe incluirse en el CASO mensaje a los pares.
EndValidation (const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual void
Llamado al final de la validación del certificado.
GenerateNodeSignature (const BeginSessionContext & msgCtx, const uint8_t *msgHash, uint8_t msgHashLen,TLVWriter & writer, uint64_t tag)=0
virtual WEAVE_ERROR
Genere una firma usando la clave privada del nodo local.
HandleValidationResult (const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet, WEAVE_ERROR & validRes)=0
virtual WEAVE_ERROR
Llamado con el resultado de la validación del certificado.
OnPeerCertsLoaded (const BeginSessionContext & msgCtx, WeaveDN & subjectDN, CertificateKeyId & subjectKeyId, ValidationContext & validCtx, WeaveCertificateSet & certSet)
virtual WEAVE_ERROR
Se llama después de que se hayan cargado los certificados del par.

Funciones publicas

BeginValidation

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

Llamado al inicio de la validación del certificado.

Implementaciones deben inicializar el suministrado WeaveCertificateSet objeto con recursos suficientes para manejar la validación de certificados próxima. En este momento implementaciones pueden cargar raíz de confianza o certificados de CA en el conjunto de certificados, o esperar hasta OnPeerCertsLoaded () se llama.

A cada certificado cargado en el conjunto de certificados se le asignará un tipo de certificado predeterminado por la función de carga. Las implementaciones deben ajustar estos tipos si es necesario para garantizar el correcto tratamiento del certificado durante la validación, y la correcta asignación de WeaveAuthMode para CASE interacciones.

El contexto de validación proporcionado se inicializará con un conjunto de criterios de validación predeterminados, que la implementación puede modificar según sea necesario. La implementación debe establecer el campo EffectiveTime o establecer los indicadores de validación adecuados para suprimir la validación de la vida útil del certificado.

Si se desean resultados de validación detallados, la implementación puede inicializar los campos CertValidationResults y CertValidationLen.

Se requieren Implementaciones para mantener los recursos asignados durante BeginValidation () hasta que el correspondiente EndValidation () se llama está hecho. Las implementaciones que están garantizados EndValidation () se llama exactamente una vez por cada llamada con éxito a BeginValidation () .

EncodeNodeCertInfo

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

Codificar CASO Información del certificado para el nodo local.

Las implementaciones pueden utilizar esta llamada para anular la codificación predeterminada del CASE estructura CertificateInformation para el nodo local. Cuando se llama, la implementación debe escribir una estructura CertificateInformation que contenga, como mínimo, el certificado de entidad del nodo local. La implementación puede incluir opcionalmente un conjunto de certificados relacionados y / o anclajes de confianza.

EncodeNodePayload

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

Codificar una carga útil de aplicación específica que debe incluirse en el CASO mensaje a los pares.

La implementación de este método es opcional. La implementación predeterminada devuelve una carga útil de longitud cero.

EndValidation

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

Llamado al final de la validación del certificado.

Las implementaciones pueden usar esta llamada para realizar la limpieza después de que se complete la validación de la certificación. Las implementaciones que están garantizados EndValidation () se llama exactamente una vez por cada llamada con éxito a BeginValidation () .

GenerateNodeSignature

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

Genere una firma usando la clave privada del nodo local.

Cuando se invoca, las implementaciones deben calcular una firma en el valor hash dado utilizando la clave privada del nodo. La firma generada debe entonces ser escrito en la forma de una CASO estructura ECDSASignature a la suministrada TLV escritura usando la etiqueta especificada.

En los casos en que la clave privada del nodo se llevó a cabo en un buffer local, el GenerateAndEncodeWeaveECDSASignature () función de utilidad puede ser útil para la aplicación de este método.

HandleValidationResult

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

Llamado con el resultado de la validación del certificado.

Las implementaciones pueden usar esta llamada para inspeccionar, y posiblemente alterar, el resultado de la validación del certificado del par. Si la validación fue exitosa, validRes se establecerá en WEAVE_NO_ERROR. En este caso, el contexto de validación contendrá detalles sobre el resultado. En particular, el campo TrustAnchor se establecerá en el certificado de anclaje de confianza.

Si la aplicación inicializa los CertValidationResults y campos CertValidationLen dentro del ValidationContext estructura durante el BeginValidation () llamada, entonces estos campos contenida resultados detallados de validación para cada certificado en el conjunto de certificados.

Las implementaciones pueden anular esto estableciendo validRes en un valor de error, lo que provoca que falle la validación.

Si la validación falló, validRes reflejará el motivo del fallo. Las implementaciones pueden anular el resultado a un valor de error diferente, pero NO DEBEN establecer el resultado en WEAVE_NO_ERROR.

OnPeerCertsLoaded

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

Se llama después de que se hayan cargado los certificados del par.

Las implementaciones pueden utilizar esta convocatoria para finalizar los certificados de entrada y los criterios de validación que se utilizarán para realizar la validación del certificado del par. En el momento de la llamada, los certificados proporcionados por el par se habrán cargado en el conjunto de certificados (incluido su propio certificado, si está presente). Además, los argumentos subjectDN y subjectKeyId se habrán inicializado a valores que se utilizarán para resolver el certificado del par del conjunto de certificados. Si el par proporcionó su propio certificado (en lugar de una referencia de certificado), el campo EntityCert dentro del argumento validCtx contendrá un puntero a ese certificado.

Durante esta llamada, las implementaciones pueden modificar el contenido del conjunto de certificados, incluida la adición de nuevos certificados. También pueden alterar los argumentos subjectDN, subjectKeyId o validCtx según sea necesario. Lo más importante es que las implementaciones deben ajustar los campos de tipo de certificado con el conjunto de certificados antes de regresar para garantizar el tratamiento correcto de los certificados durante la validación y las posteriores verificaciones de control de acceso.

NOTA: En el caso de que el par proporcione una referencia de certificado para sí mismo, en lugar de un certificado completo, el campo EntityCert en el contexto de validación contendrá un NULL. Si una implementación desea admitir referencias de certificados, debe agregar un certificado que coincida con el DN del sujeto del par y la identificación de clave al conjunto de certificados antes de regresar.

La implementación de este método es opcional. La implementación predeterminada no hace nada.