nl::Weave::Profiles::Security::AppKeys::GroupKeyStoreBase

Il s'agit d'une classe abstraite.

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

Définition de la classe de store de clés de groupe Weave.

Résumé

Les fonctions de cette classe sont appelées pour gérer les clés de groupe d'applications.

Héritage

Sous-classes directes connues :
  nl::Weave::DeviceLayer::Internal::GroupKeyStoreImpl
  nl::Weave::DeviceLayer::Internal::GroupKeyStoreImpl
  nl::Weave::DeviceLayer::Internal::GroupKeyStoreImpl
  nl::Weave::Profiles::Security::AppKeys::DummyGroupKeyStore

Attributs protégés

LastUsedEpochKeyId
uint32_t
NextEpochKeyStartTime
uint32_t

Fonctions publiques

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)
Dérive la clé d'application.
EnumerateGroupKeys(uint32_t keyType, uint32_t *keyIds, uint8_t keyIdsArraySize, uint8_t & keyCount)=0
virtual WEAVE_ERROR
GetCurrentAppKeyId(uint32_t keyId, uint32_t & curKeyId)
Renvoie l'ID de clé actuel.
GetCurrentUTCTime(uint32_t & utcTime)
virtual WEAVE_ERROR
Obtenez l'heure UTC de la plate-forme actuelle, en secondes.
GetGroupKey(uint32_t keyId, WeaveGroupKey & groupKey)
Obtenir la clé du groupe d'applications
RetrieveGroupKey(uint32_t keyId, WeaveGroupKey & key)=0
virtual WEAVE_ERROR
StoreGroupKey(const WeaveGroupKey & key)=0
virtual WEAVE_ERROR

Fonctions protégées

Init(void)
void
Initialisez les paramètres du magasin de clés de groupe local.
OnEpochKeysChange(void)
void
Renvoie l'ID de clé actuel.
RetrieveLastUsedEpochKeyId(void)=0
virtual WEAVE_ERROR
StoreLastUsedEpochKeyId(void)=0
virtual WEAVE_ERROR

Attributs protégés

LastUsedEpochKeyId

uint32_t LastUsedEpochKeyId

NextEpochKeyStartTime

uint32_t NextEpochKeyStartTime

Fonctions publiques

Effacer

virtual WEAVE_ERROR Clear(
  void
)=0

DeleteGroupKey

virtual WEAVE_ERROR DeleteGroupKey(
  uint32_t keyId
)=0

DeleteGroupKeysOfAType

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
)

Dérive la clé d'application.

Trois types de clés d'application sont acceptés : la clé d'application actuelle, la clé d'application rotative et la clé d'application statique. Lorsque la clé d'application actuelle est demandée, la fonction recherche et utilise la clé d'époque actuelle en fonction de l'heure système actuelle et du paramètre d'heure de début de chaque clé d'époque.

Détails
Paramètres
[in,out] keyId
Référence à l'ID de clé demandé. Lorsque la clé d'application actuelle est demandée, ce champ est mis à jour pour refléter le nouveau type (clé d'application en rotation) et l'ID de clé d'epoch réel utilisé pour générer la clé d'application.
[in] keySalt
Pointeur vers un tampon avec la valeur de sel de la clé d'application.
[in] saltLen
Longueur du sel de la clé d'application.
[in] keyDiversifier
Pointeur vers un tampon avec la valeur du diversifieur de clé d'application.
[in] diversifierLen
Longueur du diversifieur de clé d'application.
[out] appKey
Pointeur vers un tampon dans lequel la clé dérivée sera écrite.
[in] keyBufSize
Longueur du tampon de clé fourni.
[in] keyLen
Longueur du matériel de clé demandé.
[out] appGroupGlobalId
ID global du groupe d'applications de la clé associée.
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de réussite.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la taille du tampon de clé fournie n'est pas suffisante.
WEAVE_ERROR_INVALID_KEY_ID
Si l'ID de clé de la clé demandée n'est pas valide.
WEAVE_ERROR_INVALID_ARGUMENT
Si le keystore de la plate-forme renvoie des paramètres de clé non valides ou si la valeur de l'identifiant de clé est incorrecte.
other
Autres erreurs propres à la plate-forme renvoyées par les API du keystore de la plate-forme.

EnumerateGroupKeys

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

GetCurrentAppKeyId

WEAVE_ERROR GetCurrentAppKeyId(
  uint32_t keyId,
  uint32_t & curKeyId
)

Renvoie l'ID de clé actuel.

Recherche la clé d'époque actuelle en fonction de l'heure système actuelle et du paramètre d'heure de début de chaque clé d'époque. Si le système ne dispose pas d'une heure précise et valide, l'ID de clé d'époque utilisé en dernier est renvoyé.

Détails
Paramètres
[in] keyId
ID de clé d'application.
[out] curKeyId
ID de clé actuel de l'application.
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de réussite.
WEAVE_ERROR_INVALID_KEY_ID
Si la valeur de l'ID de clé saisi n'est pas valide.
WEAVE_ERROR_KEY_NOT_FOUND
Si les clés d'époque ne sont pas trouvées dans le keystore de la plate-forme.
other
Autres erreurs propres à la plate-forme renvoyées par les API du keystore de la plate-forme.

GetCurrentUTCTime

virtual WEAVE_ERROR GetCurrentUTCTime(
  uint32_t & utcTime
)

Obtenez l'heure UTC actuelle de la plate-forme, en secondes.

Détails
Paramètres
[out] utcTime
Référence à la valeur temporelle.
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de réussite.
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Si la plate-forme n'est pas compatible avec l'horloge en temps réel.
#WEAVE_SYSTEM_ERROR_REAL_TIME_NOT_SYNCED
Si l'horloge en temps réel du système n'est pas synchronisée avec une source temporelle précise.
other
Autres codes d'erreur Weave ou de la plate-forme

GetGroupKey

WEAVE_ERROR GetGroupKey(
  uint32_t keyId,
  WeaveGroupKey & groupKey
)

Obtenir la clé du groupe d'applications

Cette fonction dérive ou récupère des clés de groupe d'applications. Les types de clés compatibles avec cette fonction sont les suivants : secret fabric, clé racine, clé d'époque, clé principale de groupe et clé intermédiaire.

Détails
Paramètres
[in] keyId
ID de la clé du groupe.
[out] groupKey
Référence à l'objet clé de groupe.
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de réussite.
WEAVE_ERROR_INVALID_KEY_ID
Si l'ID de clé de la clé demandée n'est pas valide.
WEAVE_ERROR_INVALID_ARGUMENT
Si le keystore de la plate-forme renvoie des paramètres de clé non valides.
other
Autres erreurs propres à la plate-forme renvoyées par les API du keystore de la plate-forme.

RetrieveGroupKey

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

StoreGroupKey

virtual WEAVE_ERROR StoreGroupKey(
  const WeaveGroupKey & key
)=0

Fonctions protégées

Init

void Init(
  void
)

Initialisez les paramètres du magasin de clés de groupe local.

OnEpochKeysChange

void OnEpochKeysChange(
  void
)

Renvoie l'ID de clé actuel.

Définit les variables membres associées aux clés d'époque sur les valeurs par défaut lorsqu'une modification (suppression ou stockage) est apportée à l'ensemble des clés d'époque de l'application. Il incombe à la sous-classe qui implémente les fonctions StoreGroupKey(), DeleteGroupKey() et DeleteGroupKeysOfAType() d'appeler cette méthode.

RetrieveLastUsedEpochKeyId

virtual WEAVE_ERROR RetrieveLastUsedEpochKeyId(
  void
)=0

StoreLastUsedEpochKeyId

virtual WEAVE_ERROR StoreLastUsedEpochKeyId(
  void
)=0