nl:: Weave:: Platform:: Security
Cet espace de noms inclut toutes les interfaces de Weave pour le gestionnaire de mémoire Security Monitor de Weave.
Résumé
Les fonctions de cet espace de noms doivent être implémentées par les plates-formes qui utilisent Weave, selon les besoins/contraintes de l'environnement particulier.
Typedefs |
|
---|---|
BlockMark_t
|
typedefuint8_t
Type utilisé pour indiquer quel bloc est actuellement alloué/non alloué. |
BlockSetParams_t
|
typedefuint8_t
Ce type est utilisé pour encoder les informations sur l'ensemble de blocs. |
Variables |
|
---|---|
sBlockSetParams = {
((kBlockSet1Size << kBlockSetSizeShift) & kBlockSetSizeMask) |
((kBlockSet1Count << kBlockSetCountShift) & kBlockSetCountMask) |
((kBlockSet1BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) |
((kBlockSet1isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask),
((kBlockSet2Size << kBlockSetSizeShift) & kBlockSetSizeMask) |
((kBlockSet2Count << kBlockSetCountShift) & kBlockSetCountMask) |
((kBlockSet2BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) |
((kBlockSet2isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask),
((kBlockSet3Size << kBlockSetSizeShift) & kBlockSetSizeMask) |
((kBlockSet3Count << kBlockSetCountShift) & kBlockSetCountMask) |
((kBlockSet3BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) |
((kBlockSet3isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask),
((kBlockSet4Size << kBlockSetSizeShift) & kBlockSetSizeMask) |
((kBlockSet4Count << kBlockSetCountShift) & kBlockSetCountMask) |
((kBlockSet4BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) |
((kBlockSet4isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask),
}[kNumberOfBlockSets]
|
const BlockSetParams_t
Paramètres des ensembles de blocs encodés.
|
sBufferAllocationMask = {
kNetworkBuffer0BlockAllocationMask,
kNetworkBuffer1BlockAllocationMask,
}[kNumberOfNetworkBuffers]
|
const BlockMark_t
Ensemble de masques de bloc de tampon.
|
sMemBlocksAllocated = 0
|
Indique quel bloc est alloué/non alloué.
|
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
|
void *
Pointeurs vers des tampons de mémoire initialisés sur NULL.
|
sNetworkBuffersUsed = true
|
bool
Booléen indiquant si les tampons réseau sont utilisés (vrai) ou non (faux) par Simple Allocator.
|
Fonctions |
|
---|---|
DecodeBlockSetParams(BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm)
|
void
|
GetSecureRandomData(uint8_t *buf, uint16_t len)
|
Cette fonction est appelée par la couche Weave pour générer des données aléatoires.
|
InitSecureRandomDataSource(nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen)
|
Cette fonction est appelée par la couche Weave pour initialiser la source de données aléatoire.
|
MemoryAlloc(size_t size)
|
void *
Cette fonction est appelée par la couche Weave pour allouer un bloc de mémoire de "size" octets.
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
Cette fonction est appelée par la couche Weave pour allouer un bloc de mémoire de "size" octets.
|
MemoryFree(void *p)
|
void
Cette fonction est appelée par la couche Weave pour libérer un bloc de mémoire alloué par la fonction MemeoryAlloc().
|
MemoryInit(void *buf, size_t bufSize)
|
Cette fonction est appelée par la couche Weave pour initialiser la mémoire et les ressources nécessaires au bon fonctionnement de l'outil d'allocation de mémoire Security Manager de Weave.
|
MemoryShutdown(void)
|
void
Cette fonction est appelée par la couche Weave pour libérer toutes les ressources allouées par la fonction MemoryInit().
|
OnTimeConsumingCryptoDone(void)
|
void
Cette fonction est appelée pour avertir l'application lorsqu'une opération cryptographique chronophage vient de se terminer.
|
OnTimeConsumingCryptoStart(void)
|
void
Cette fonction est appelée pour avertir l'application lorsqu'une opération cryptographique chronophage est sur le point de démarrer.
|
Énumérations
BlockSetParamFields
BlockSetParamFields
Emplacement des champs de paramètres du jeu de blocs sous forme encodée sur 8 bits.
Propriétés | |
---|---|
kBlockSetBufferIndexMask
|
Masque de champ d'index de tampon. |
kBlockSetBufferIndexShift
|
Décalage du champ d'index de tampon. |
kBlockSetCountMask
|
Masque de champ de comptage. |
kBlockSetCountShift
|
Décalage du champ de comptage. |
kBlockSetIsLongTermMask
|
Masque de champ de type. |
kBlockSetIsLongTermShift
|
Changement de champ de type |
kBlockSetSizeMask
|
Masque de champ de taille. |
kBlockSetSizeShift
|
Décalage du champ de taille. |
kBlockSetSizeValueShift
|
Décodage du champ de taille (multiplié par 128). |
BlockSetParams
BlockSetParams
Définit les paramètres de l'ensemble de blocs.
Propriétés | |
---|---|
kBlockSet1BufferIndex
|
L'ensemble d'index de tampon n° 1 est 0. |
kBlockSet1Count
|
Le nombre de blocs n° 1 est égal à 1. |
kBlockSet1Size
|
La taille de l'ensemble n° 1 est de 128 octets. |
kBlockSet1isLongTerm
|
Le type de l'ensemble n° 1 est à long terme. |
kBlockSet2BufferIndex
|
L'ensemble d'index de tampon n° 2 est 0. |
kBlockSet2Count
|
Le nombre de blocs de l'ensemble n° 2 est de 1. |
kBlockSet2Size
|
La taille de l'ensemble n° 2 est de 512 octets. |
kBlockSet2isLongTerm
|
Le type de l'ensemble n° 2 est à long terme. |
kBlockSet3BufferIndex
|
L'ensemble d'index de tampon n° 3 est 0. |
kBlockSet3Count
|
Le nombre de blocs de l'ensemble n° 3 est de 1. |
kBlockSet3Size
|
La taille de l'ensemble n° 3 est de 512 octets. |
kBlockSet3isLongTerm
|
Le type de l'ensemble n° 3 est à court terme. |
kBlockSet4BufferIndex
|
L'ensemble d'index de tampon n° 4 est 1. |
kBlockSet4Count
|
Le nombre de blocs de l'ensemble n° 4 est de 2. |
kBlockSet4Size
|
La taille de l'ensemble n° 4 est de 640 octets. |
kBlockSet4isLongTerm
|
Le type de l'ensemble n° 4 est à court terme. |
kMaxBlockSize
|
Taille de bloc maximale acceptée par Simple Allocator. |
kMinBufferSize
|
Taille minimale du tampon réseau requise pour prendre en charge les cas d'utilisation Simple Allocator. Ce paramètre est dérivé des tailles de deux blocs de mémoire (640 + 600) alloués dans le tampon réseau n° 1. |
kNetworkBuffer0BlockAllocationMask
|
Ce masque identifie tous les blocs de mémoire alloués à partir du tampon réseau n° 0. |
kNetworkBuffer1BlockAllocationMask
|
Ce masque identifie tous les blocs de mémoire alloués à partir du tampon réseau n° 1. |
kNumberOfBlockSets
|
Nombre d'ensembles de blocs utilisés par Simple Allocator. |
kNumberOfNetworkBuffers
|
Nombre de tampons réseau utilisés par Simple Allocator. |
kTotalMemorySize
|
Mémoire totale utilisée par Simple Allocator. |
Typedefs
BlockMark_t
uint8_t BlockMark_t
Type utilisé pour indiquer quel bloc est actuellement alloué/non alloué.
uint8_t - accepte jusqu'à 8 blocs de mémoire au total uint16_t - accepte jusqu'à 16 blocs de mémoire au total uint32_t - accepte jusqu'à 32 blocs de mémoire au total
BlockSetParams_t
uint8_t BlockSetParams_t
Ce type est utilisé pour encoder les informations sur l'ensemble de blocs.
Un ensemble de blocs est un groupe de blocs de mémoire ayant les mêmes propriétés (taille, type et appartenant au même tampon). Le schéma ci-dessous présente la manière dont les informations du jeu de blocs sont encodées au format 8 bits:
Est à long terme | Bloquer l'index | Nombre de blocages | Taille du bloc |
[7] | [6:5] | [4:3] | [2:0] |
[2:0] | Décodage |
000 | 0 octet |
001 | 128 octets |
010 | 256 octets |
… | - |
111 | 896 octets |
[4:3] | Décodage |
00 | 4 blocs |
01 | 1 bloc |
10 | 2 blocs |
11 | 3 blocs |
[6:5] | Décodage |
00 | Tampon réseau n° 0 |
… | - |
11 | Tampon réseau n° 3 |
[7] | Décodage |
0 | Blocs de mémoire à court terme |
1 | Blocs de mémoire à long terme |
Variables
sBlockSetParams
const BlockSetParams_t sBlockSetParams[kNumberOfBlockSets] = { ((kBlockSet1Size << kBlockSetSizeShift) & kBlockSetSizeMask) | ((kBlockSet1Count << kBlockSetCountShift) & kBlockSetCountMask) | ((kBlockSet1BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) | ((kBlockSet1isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask), ((kBlockSet2Size << kBlockSetSizeShift) & kBlockSetSizeMask) | ((kBlockSet2Count << kBlockSetCountShift) & kBlockSetCountMask) | ((kBlockSet2BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) | ((kBlockSet2isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask), ((kBlockSet3Size << kBlockSetSizeShift) & kBlockSetSizeMask) | ((kBlockSet3Count << kBlockSetCountShift) & kBlockSetCountMask) | ((kBlockSet3BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) | ((kBlockSet3isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask), ((kBlockSet4Size << kBlockSetSizeShift) & kBlockSetSizeMask) | ((kBlockSet4Count << kBlockSetCountShift) & kBlockSetCountMask) | ((kBlockSet4BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) | ((kBlockSet4isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask), }
Paramètres des ensembles de blocs encodés.
sBufferAllocationMask
const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }
Ensemble de masques de bloc de tampon.
Indique si tous les blocs du tampon et non alloués, puis si le tampon peut être libéré.
sMemBlocksAllocated
BlockMark_t sMemBlocksAllocated = 0
Indique quel bloc est alloué/non alloué.
Initialisé à 0 : signifie que tous les blocs de mémoire sont présents et non alloués.
sMemBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
Pointeurs vers des tampons de mémoire initialisés sur NULL.
En cas d'utilisation de tampons réseau, sMemBufs[] pointe vers les objets PacketBuffer. Lorsqu'un tampon dédié est utilisé, sMemBufs[0] pointe vers ce tampon et les autres pointeurs sMemBufs[] sont ignorés.
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
Booléen indiquant si les tampons réseau sont utilisés (vrai) ou non (faux) par Simple Allocator.
Si la valeur est "false", un tampon dédié fourni avec la fonction MemoryInit() est utilisé.
Fonctions
DecodeBlockSetParams
void DecodeBlockSetParams( BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm )
GetSecureRandomData
WEAVE_ERROR GetSecureRandomData( uint8_t *buf, uint16_t len )
Cette fonction est appelée par la couche Weave pour générer des données aléatoires.
Détails | |||||||||
---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||
Valeurs renvoyées |
|
InitSecureRandomDataSource
WEAVE_ERROR InitSecureRandomDataSource( nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen )
Cette fonction est appelée par la couche Weave pour initialiser la source de données aléatoire.
Cette fonction est spécifique à la plate-forme et peut être vide si aucune initialisation de la source de données aléatoire n'est requise.
Détails | |||||||||
---|---|---|---|---|---|---|---|---|---|
Paramètres |
|
||||||||
Valeurs renvoyées |
|
MemoryAlloc
void * MemoryAlloc( size_t size )
Cette fonction est appelée par la couche Weave pour allouer un bloc de mémoire de "size" octets.
Cette fonction est équivalente à MemoryAlloc(size, false).
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs renvoyées |
|
MemoryAlloc
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
Cette fonction est appelée par la couche Weave pour allouer un bloc de mémoire de "size" octets.
Détails | |||||
---|---|---|---|---|---|
Paramètres |
|
||||
Valeurs renvoyées |
|
MemoryFree
void MemoryFree( void *p )
Cette fonction est appelée par la couche Weave pour libérer un bloc de mémoire alloué par la fonction MemeoryAlloc().
Détails | |||
---|---|---|---|
Paramètres |
|
MemoryInit
WEAVE_ERROR MemoryInit( void *buf, size_t bufSize )
Cette fonction est appelée par la couche Weave pour initialiser la mémoire et les ressources nécessaires au bon fonctionnement de l'outil d'allocation de mémoire Security Manager de Weave.
Cette fonction est spécifique à la plate-forme et peut être vide dans certains cas. Par exemple, cette fonction n'a aucun effet lorsque les fonctions malloc() et free() de la bibliothèque standard C sont utilisées pour l'allocation de mémoire.
Détails | |||||||
---|---|---|---|---|---|---|---|
Paramètres |
|
||||||
Valeurs renvoyées |
|
MemoryShutdown
void MemoryShutdown( void )
Cette fonction est appelée par la couche Weave pour libérer toutes les ressources allouées par la fonction MemoryInit().
Cette fonction peut être un appel vide s'il n'est pas nécessaire de libérer des ressources. C'est par exemple le cas lorsque les fonctions malloc() et free() de la bibliothèque standard C sont utilisées pour l'allocation de mémoire.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
Cette fonction est appelée pour avertir l'application lorsqu'une opération cryptographique chronophage vient de se terminer.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
Cette fonction est appelée pour avertir l'application lorsqu'une opération cryptographique chronophage est sur le point de démarrer.