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 du 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::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 actuelle de la plate-forme, en secondes.
GetGroupKey(uint32_t keyId, WeaveGroupKey & groupKey)
Permet d'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 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 de la clé associée.
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de réussite.
WEAVE_ERROR_BUFFER_TOO_SMALL
Si la taille de la mémoire tampon de la clé fournie est insuffisante.
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é a une valeur non valide.
other
Autres erreurs spécifiques à la plate-forme renvoyées par les API de 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 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 la clé actuelle de l'application.
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de 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 ne se trouvent pas dans le magasin de clés de la plate-forme.
other
Autres erreurs spécifiques à la plate-forme renvoyées par les API de 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 d'heure précise.
other
Autres codes d'erreur Weave ou de plate-forme.

GetGroupKey

WEAVE_ERROR GetGroupKey(
  uint32_t keyId,
  WeaveGroupKey & groupKey
)

Permet d'obtenir la clé du groupe d'applications.

Cette fonction extrait ou récupère les clés du groupe d'applications. Les types de clés pris en charge par cette fonction sont les suivants: le secret de la structure, la clé racine, la clé epoch, la clé principale du groupe et la clé intermédiaire.

Détails
Paramètres
[in] keyId
ID de la clé du groupe.
[out] groupKey
Référence à l'objet de clé de groupe.
Valeurs renvoyées
WEAVE_NO_ERROR
En cas de 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 de 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 de membre associées aux clés d'epoch sur les valeurs par défaut en cas de modification (suppression ou stockage) de l'ensemble des clés epoch de l'application. Il appartient à 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