nl::Weave::Perfiles::Seguridad::AppKeys::GroupKeyStoreBase

Esta es una clase abstracta.

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

La definición de la clase de almacén de claves de grupo de Weave.

Resumen

Se llama a las funciones de esta clase para administrar claves de grupo de aplicaciones.

Herencia

Subclases conocidas directas:
nl::Weave::DeviceLayer::Internal::GroupKeyStoreImpl
nl::Weave::DeviceLayer::Internal::GroupKeyStoreImpl
nl::Weave::DeviceLayer::KeyKey:

Atributos protegidos

LastUsedEpochKeyId
uint32_t
NextEpochKeyStartTime
uint32_t

Funciones públicas

Clear(void)=0
virtual WEAVE_ERROR
DeleteGroupKey(uint32_t keyId)=0
virtual WEAVE_ERROR
DeleteGroupKeysOfAType(uint32_t keyType)=0
virtual WEAVE_ERROR
DeriveApplicationKey(uint32_t & appKeyId, const uint8_t *keySalt, uint8_t saltLen, const uint8_t *keyDiversifier, uint8_t diversifierLen, uint8_t *appKey, uint8_t keyBufSize, uint8_t keyLen, uint32_t & appGroupGlobalId)
Deriva la clave de aplicación.
EnumerateGroupKeys(uint32_t keyType, uint32_t *keyIds, uint8_t keyIdsArraySize, uint8_t & keyCount)=0
virtual WEAVE_ERROR
GetCurrentAppKeyId(uint32_t keyId, uint32_t & curKeyId)
Muestra el ID de la clave actual.
GetCurrentUTCTime(uint32_t & utcTime)
virtual WEAVE_ERROR
Obtén el tiempo UTC actual de la plataforma en segundos.
GetGroupKey(uint32_t keyId, WeaveGroupKey & groupKey)
Obtén la clave del grupo de aplicaciones.
RetrieveGroupKey(uint32_t keyId, WeaveGroupKey & key)=0
virtual WEAVE_ERROR
StoreGroupKey(const WeaveGroupKey & key)=0
virtual WEAVE_ERROR

Funciones protegidas

Init(void)
void
Inicializa los parámetros del almacén de claves del grupo local.
OnEpochKeysChange(void)
void
Muestra el ID de la clave actual.
RetrieveLastUsedEpochKeyId(void)=0
virtual WEAVE_ERROR
StoreLastUsedEpochKeyId(void)=0
virtual WEAVE_ERROR

Atributos protegidos

Último id de clave de uso

uint32_t LastUsedEpochKeyId

Hora de la siguiente clave de inicio

uint32_t NextEpochKeyStartTime

Funciones públicas

Borrar

virtual WEAVE_ERROR Clear(
  void
)=0

BorrarGroupKey

virtual WEAVE_ERROR DeleteGroupKey(
  uint32_t keyId
)=0

BorrarGroupKeysOfAType

virtual WEAVE_ERROR DeleteGroupKeysOfAType(
  uint32_t keyType
)=0

DeriveApplicationKey

WEAVE_ERROR DeriveApplicationKey(
  uint32_t & appKeyId,
  const uint8_t *keySalt,
  uint8_t saltLen,
  const uint8_t *keyDiversifier,
  uint8_t diversifierLen,
  uint8_t *appKey,
  uint8_t keyBufSize,
  uint8_t keyLen,
  uint32_t & appGroupGlobalId
)

Deriva la clave de aplicación.

Se admiten tres tipos de claves de aplicación: clave de aplicación actual, clave de aplicación rotativa y clave de aplicación estática. Cuando se solicita la clave de aplicación actual, la función busca y usa la clave de ciclo de entrenamiento actual según la hora actual del sistema y el parámetro de hora de inicio de cada clave de ciclo de entrenamiento.

Detalles
Parámetros
[in,out] keyId
Una referencia al ID de clave solicitado. Cuando se solicita la clave de aplicación actual, este campo se actualiza para reflejar el nuevo tipo (clave de aplicación rotativa) y el ID de clave de ciclo de entrenamiento real que se usó para generar la clave de aplicación.
[in] keySalt
Un puntero para un búfer con valor de sal de la clave de aplicación.
[in] saltLen
La longitud de la sal de la clave de aplicación.
[in] keyDiversifier
Un puntero para un búfer con el valor del diversificador de la clave de aplicación.
[in] diversifierLen
La longitud del diversificador de claves de aplicación.
[out] appKey
Un puntero para un búfer en el que se escribirá la clave derivada.
[in] keyBufSize
La longitud del búfer de clave proporcionado.
[in] keyLen
La longitud del material de clave solicitado.
[out] appGroupGlobalId
El ID global del grupo de aplicaciones de la clave asociada.
Valores que se muestran
WEAVE_NO_ERROR
Si la operación se realiza correctamente
WEAVE_ERROR_BUFFER_TOO_SMALL
Si el tamaño del búfer de clave proporcionado no es suficiente.
WEAVE_ERROR_INVALID_KEY_ID
Si la clave solicitada tiene un ID de clave no válido.
WEAVE_ERROR_INVALID_ARGUMENT
Si el almacén de claves de la plataforma muestra parámetros de clave no válidos o un identificador de clave tiene un valor no válido.
other
Otros errores específicos de la plataforma que muestran las API del almacén de claves de la plataforma.

EnumerateGroupKeys

virtual WEAVE_ERROR EnumerateGroupKeys(
  uint32_t keyType,
  uint32_t *keyIds,
  uint8_t keyIdsArraySize,
  uint8_t & keyCount
)=0

ID de clave de la aplicación de GetCurrent

WEAVE_ERROR GetCurrentAppKeyId(
  uint32_t keyId,
  uint32_t & curKeyId
)

Muestra el ID de la clave actual.

Encuentra la clave de ciclo de entrenamiento actual en función de la hora actual del sistema y el parámetro de hora de inicio de cada clave de ciclo de entrenamiento. Si el sistema no tiene una hora válida y precisa, se muestra el ID de la clave de época en uso por última vez.

Detalles
Parámetros
[in] keyId
El ID de clave de aplicación.
[out] curKeyId
El ID de clave actual de la aplicación.
Valores que se muestran
WEAVE_NO_ERROR
Si la operación se realiza correctamente
WEAVE_ERROR_INVALID_KEY_ID
Si el ID de la clave de entrada tenía un valor no válido.
WEAVE_ERROR_KEY_NOT_FOUND
Si no se encuentran las claves de época en el almacén de claves de plataforma,
other
Otros errores específicos de la plataforma que muestran las API del almacén de claves de la plataforma.

Hora actualUTC

virtual WEAVE_ERROR GetCurrentUTCTime(
  uint32_t & utcTime
)

Obtén el tiempo UTC actual de la plataforma en segundos.

Detalles
Parámetros
[out] utcTime
Una referencia al valor de tiempo.
Valores que se muestran
WEAVE_NO_ERROR
Si la operación se realiza correctamente
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Si la plataforma no admite un reloj en tiempo real
#WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED
Si el reloj en tiempo real no está sincronizado con una fuente de tiempo exacta
other
Otros códigos de error de Weave o Platform.

ObtenerGrupoClave

WEAVE_ERROR GetGroupKey(
  uint32_t keyId,
  WeaveGroupKey & groupKey
)

Obtén la clave del grupo de aplicaciones.

Esta función deriva o recupera claves de grupo de aplicaciones. Los tipos de claves compatibles con esta función son el secreto de tejido, la clave raíz, la clave de época, la clave principal de grupo y la clave intermedia.

Detalles
Parámetros
[in] keyId
El ID de clave del grupo.
[out] groupKey
Una referencia al objeto de clave del grupo.
Valores que se muestran
WEAVE_NO_ERROR
Si la operación se realiza correctamente
WEAVE_ERROR_INVALID_KEY_ID
Si la clave solicitada tiene un ID de clave no válido.
WEAVE_ERROR_INVALID_ARGUMENT
Si el almacén de claves de la plataforma muestra parámetros de clave no válidos.
other
Otros errores específicos de la plataforma que muestran las API del almacén de claves de la plataforma.

Recuperar grupo de claves

virtual WEAVE_ERROR RetrieveGroupKey(
  uint32_t keyId,
  WeaveGroupKey & key
)=0

Clave del grupo de tiendas

virtual WEAVE_ERROR StoreGroupKey(
  const WeaveGroupKey & key
)=0

Funciones protegidas

Init

void Init(
  void
)

Inicializa los parámetros del almacén de claves del grupo local.

Cambio en las claves de onEpoch

void OnEpochKeysChange(
  void
)

Muestra el ID de la clave actual.

Establece las variables de miembro asociadas con las claves de ciclo de vida en los valores predeterminados cuando se produce cualquier cambio (borrar o almacenar) en el conjunto de claves de ciclo de vida de la aplicación. Es la responsabilidad de la subclase que implementa las funciones StoreGroupKey(), DeleteGroupKey() y DeleteGroupKeysOfAType() para llamar a este método.

Recupera el ID del último uso de la clave

virtual WEAVE_ERROR RetrieveLastUsedEpochKeyId(
  void
)=0

ID de la clave de último uso de la tienda

virtual WEAVE_ERROR StoreLastUsedEpochKeyId(
  void
)=0