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 magasin de clés du 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::GroupKeyStoreImplnl::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 actuelle de la plate-forme, en secondes.
GetGroupKey(uint32_t keyId, WeaveGroupKey & groupKey)
Permet d'obtenir une clé de 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 keystore du 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 trouve et utilise la clé d'epoch actuelle en fonction de l'heure système actuelle et du paramètre d'heure de début de chaque clé d'epoch.

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é epoch ayant été utilisé pour générer la clé d'application.
[in] keySalt
Pointeur vers un tampon avec une valeur de salage de la clé d'application.
[in] saltLen
Longueur du salage de la clé d'application.
[in] keyDiversifier
Pointeur vers un tampon avec une valeur de diversificateur de clé d'application.
[in] diversifierLen
Longueur du diversificateur 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 pour la clé associée.
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la taille de la mémoire tampon de clé fournie n'est pas suffisante.
WEAVE_ERROR_INVALID_KEY_ID
Si la clé demandée possède un ID de clé non valide,
WEAVE_ERROR_INVALID_ARGUMENT
Si le magasin de clés de la plate-forme renvoie des paramètres de clé non valides ou si l'identifiant de clé comporte une valeur non valide.
other
Autres erreurs spécifiques à 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'epoch actuelle en fonction de l'heure système actuelle et du paramètre d'heure de début de chaque clé d'epoch. Si le système ne dispose pas d'une heure valide et précise, l'ID de clé de l'epoch de la dernière utilisation est renvoyé.

Détails
Paramètres
[in] keyId
ID de la clé d'application.
[out] curKeyId
ID de clé actuel de l'application.
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
WEAVE_ERROR_INVALID_KEY_ID
Si l'ID de clé d'entrée comporte une valeur non valide.
WEAVE_ERROR_KEY_NOT_FOUND
Si les clés d'epoch sont introuvables dans le magasin de clés de la plate-forme.
other
Autres erreurs spécifiques à 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 de retour
WEAVE_NO_ERROR
Pour la réussite.
#WEAVE_SYSTEM_ERROR_NOT_SUPPORTED
Si la plate-forme n'est pas compatible avec une 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 de temps précise,
other
Autres codes d'erreur Weave ou de la plate-forme.

GetGroupKey

WEAVE_ERROR GetGroupKey(
  uint32_t keyId,
  WeaveGroupKey & groupKey
)

Permet d'obtenir une clé de 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 : " fabric secret" (secrète de la structure), clé racine, clé "epoch", "clé principale de groupe" et clé intermédiaire.

Détails
Paramètres
[in] keyId
ID de clé de groupe.
[out] groupKey
Référence à l'objet de clé de groupe.
Valeurs de retour
WEAVE_NO_ERROR
Pour la réussite.
WEAVE_ERROR_INVALID_KEY_ID
Si la clé demandée possède un ID de clé non valide,
WEAVE_ERROR_INVALID_ARGUMENT
Si le magasin de clés de la plate-forme renvoie des paramètres de clé non valides.
other
Autres erreurs spécifiques à 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 keystore du groupe local.

OnEpochKeysChange

void OnEpochKeysChange(
  void
)

Renvoie l'ID de clé actuel.

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

RetrieveLastUsedEpochKeyId

virtual WEAVE_ERROR RetrieveLastUsedEpochKeyId(
  void
)=0

StoreLastUsedEpochKeyId

virtual WEAVE_ERROR StoreLastUsedEpochKeyId(
  void
)=0