nl:: Weave:: Platform:: Security
Questo spazio dei nomi include tutte le interfacce di Weave per il gestore della memoria di Weave Security Monitor.
Riepilogo
Le funzioni in questo spazio dei nomi devono essere implementate dalle piattaforme che utilizzano Weave, in base alle esigenze/vincoli dell'ambiente specifico.
Typedef |
|
---|---|
BlockMark_t
|
typedefuint8_t
Il tipo utilizzato per contrassegnare il blocco attualmente allocato/non allocato. |
BlockSetParams_t
|
typedefuint8_t
Questo tipo viene utilizzato per codificare le informazioni sugli insiemi di blocchi. |
Variabili |
|
---|---|
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
Parametri dei set di blocchi codificati.
|
sBufferAllocationMask = {
kNetworkBuffer0BlockAllocationMask,
kNetworkBuffer1BlockAllocationMask,
}[kNumberOfNetworkBuffers]
|
const BlockMark_t
Set di maschere di blocco del buffer.
|
sMemBlocksAllocated = 0
|
Indica quale blocco è allocato/non allocato.
|
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
|
void *
Puntatori ai buffer di memoria inizializzati su NULL.
|
sNetworkBuffersUsed = true
|
bool
Un valore booleano che indica se (true) o meno (false) i buffer di rete vengono utilizzati da Simple Allocator.
|
Funzioni |
|
---|---|
DecodeBlockSetParams(BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm)
|
void
|
GetSecureRandomData(uint8_t *buf, uint16_t len)
|
Questa funzione viene chiamata dallo strato Weave per generare dati casuali.
|
InitSecureRandomDataSource(nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen)
|
Questa funzione viene chiamata dallo strato Weave per inizializzare l'origine di dati casuale.
|
MemoryAlloc(size_t size)
|
void *
Questa funzione viene chiamata dallo strato Weave per allocare un blocco di memoria di "size" byte.
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
Questa funzione viene chiamata dallo strato Weave per allocare un blocco di memoria di "size" byte.
|
MemoryFree(void *p)
|
void
Questa funzione viene chiamata dallo strato Weave per rilasciare un blocco di memoria allocato dalla funzione MemeoryAlloc().
|
MemoryInit(void *buf, size_t bufSize)
|
Questa funzione viene chiamata dal livello Weave per inizializzare la memoria e le risorse necessarie per il corretto funzionamento dell'allocatore di memoria di Weave Security Manager.
|
MemoryShutdown(void)
|
void
Questa funzione viene chiamata dallo strato Weave per rilasciare tutte le risorse allocate dalla funzione MemoryInit().
|
OnTimeConsumingCryptoDone(void)
|
void
Questa funzione viene chiamata per inviare una notifica all'applicazione quando è appena terminata un'operazione crittografica che richiede molto tempo.
|
OnTimeConsumingCryptoStart(void)
|
void
Questa funzione viene chiamata per informare l'applicazione quando sta per iniziare un'operazione crittografica che richiede molto tempo.
|
Enumerazioni
BlockSetParamFields
BlockSetParamFields
Posizione dei campi dei parametri del set di blocchi in un formato con codifica a 8 bit.
Proprietà | |
---|---|
kBlockSetBufferIndexMask
|
Maschera del campo dell'indice del buffer. |
kBlockSetBufferIndexShift
|
Spostamento di campo dell'indice del buffer. |
kBlockSetCountMask
|
Maschera campo di conteggio. |
kBlockSetCountShift
|
Conteggio della variazione di campo. |
kBlockSetIsLongTermMask
|
Maschera del campo del tipo. |
kBlockSetIsLongTermShift
|
Digita una variazione di campo. |
kBlockSetSizeMask
|
Maschera del campo delle dimensioni. |
kBlockSetSizeShift
|
Variazione del campo delle dimensioni. |
kBlockSetSizeValueShift
|
Variazione della decodifica del campo delle dimensioni (moltiplica per 128). |
BlockSetParams
BlockSetParams
Definisce i parametri del set di blocchi.
Proprietà | |
---|---|
kBlockSet1BufferIndex
|
L'indice di buffer impostato n. 1 è 0. |
kBlockSet1Count
|
Il numero di blocchi per il set 1 è 1. |
kBlockSet1Size
|
La dimensione del set 1 è di 128 byte. |
kBlockSet1isLongTerm
|
Il tipo di set 1 è a lungo termine. |
kBlockSet2BufferIndex
|
L'indice di buffer del set 2 è 0. |
kBlockSet2Count
|
Il numero di blocchi del set 2 è 1. |
kBlockSet2Size
|
La dimensione del set 2 è di 512 byte. |
kBlockSet2isLongTerm
|
Il tipo di set 2 è a lungo termine. |
kBlockSet3BufferIndex
|
L'indice di buffer del set 3 è 0. |
kBlockSet3Count
|
Il numero di blocchi nel set 3 è 1. |
kBlockSet3Size
|
La dimensione del set 3 è di 512 byte. |
kBlockSet3isLongTerm
|
Il tipo di set 3 è a breve termine. |
kBlockSet4BufferIndex
|
L'indice di buffer del set 4 è 1. |
kBlockSet4Count
|
Il numero di blocchi nel set 4 è 2. |
kBlockSet4Size
|
La dimensione del set 4 è di 640 byte. |
kBlockSet4isLongTerm
|
Il tipo di set 4 è a breve termine. |
kMaxBlockSize
|
Dimensione massima del blocco supportata da Simple Allocator. |
kMinBufferSize
|
Dimensione minima del buffer di rete richiesta per supportare i casi d'uso di Simple Allocator. Questo parametro deriva dalle dimensioni di due blocchi di memoria (640 + 600) allocati nel buffer di rete n. 1. |
kNetworkBuffer0BlockAllocationMask
|
Questa maschera identifica tutti i blocchi di memoria allocati dal buffer di rete n. 0. |
kNetworkBuffer1BlockAllocationMask
|
Questa maschera identifica tutti i blocchi di memoria allocati dal buffer di rete 1. |
kNumberOfBlockSets
|
Numero di insiemi di blocchi utilizzati da Simple Allocator. |
kNumberOfNetworkBuffers
|
Numero di buffer di rete utilizzati da Simple Allocator. |
kTotalMemorySize
|
Memoria totale utilizzata da Allocator semplice. |
Typedef
BlockMark_t
uint8_t BlockMark_t
Il tipo utilizzato per contrassegnare il blocco attualmente allocato/non allocato.
uint8_t - supporta fino a 8 blocchi di memoria in totale uint16_t - supporta fino a 16 blocchi di memoria in totale uint32_t - supporta fino a 32 blocchi di memoria in totale
BlockSetParams_t
uint8_t BlockSetParams_t
Questo tipo viene utilizzato per codificare le informazioni sugli insiemi di blocchi.
Un insieme di blocchi è un gruppo di blocchi di memoria che hanno le stesse proprietà (dimensione, tipo e appartenenti allo stesso buffer). Il seguente diagramma illustra come le informazioni sui set di blocchi codificate in un formato a 8 bit:
È a lungo termine | Blocca indice | Numero di blocchi | Dimensione blocco |
[7] | [06:5] | [04:3] | [02:0] |
[02:0] | Decodifica |
000 | 0 byte |
001 | 128 byte |
010 | 256 byte |
… | - |
111 | 896 byte |
[04:3] | Decodifica |
00 | 4 blocchi |
01 | 1 blocco |
10 | 2 blocchi |
11 | 3 blocchi |
[06:5] | Decodifica |
00 | Buffer di rete n. 0 |
… | - |
11 | Buffer di rete 3 |
[7] | Decodifica |
0 | Blocchi di memoria a breve termine |
1 | Blocchi di memoria a lungo termine |
Variabili
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), }
Parametri dei set di blocchi codificati.
sBufferAllocationMask
const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }
Set di maschere di blocco del buffer.
Identifica se tutti i blocchi nel buffer non sono allocati e se è possibile alleviare il buffer.
sMemBlocksAllocated
BlockMark_t sMemBlocksAllocated = 0
Indica quale blocco è allocato/non allocato.
Inizializzato su 0: indica che tutti i blocchi di memoria e non allocati.
sMemBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
Puntatori ai buffer di memoria inizializzati su NULL.
Quando vengono utilizzati i buffer di rete, sMemBufs[] punta agli oggetti PacketBuffer. Quando si utilizza un buffer dedicato, sMemBufs[0] punta a quel buffer e gli altri puntatori sMemBuf[] vengono ignorati.
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
Un valore booleano che indica se (true) o meno (false) i buffer di rete vengono utilizzati da Simple Allocator.
Se il valore è false, viene utilizzato il buffer dedicato fornito con la funzione MemoryInit().
Funzioni
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 )
Questa funzione viene chiamata dallo strato Weave per generare dati casuali.
Dettagli | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||
Valori restituiti |
|
InitSecureRandomDataSource
WEAVE_ERROR InitSecureRandomDataSource( nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen )
Questa funzione viene chiamata dallo strato Weave per inizializzare l'origine di dati casuale.
Questa funzione è specifica della piattaforma e potrebbe essere vuota quando non è richiesta l'inizializzazione di un'origine dati casuale.
Dettagli | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametri |
|
||||||||
Valori restituiti |
|
MemoryAlloc
void * MemoryAlloc( size_t size )
Questa funzione viene chiamata dallo strato Weave per allocare un blocco di memoria di "size" byte.
Questa funzione è equivalente a MemoryAlloc(size, false).
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
MemoryAlloc
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
Questa funzione viene chiamata dallo strato Weave per allocare un blocco di memoria di "size" byte.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
MemoryFree
void MemoryFree( void *p )
Questa funzione viene chiamata dallo strato Weave per rilasciare un blocco di memoria allocato dalla funzione MemeoryAlloc().
Dettagli | |||
---|---|---|---|
Parametri |
|
MemoryInit
WEAVE_ERROR MemoryInit( void *buf, size_t bufSize )
Questa funzione viene chiamata dal livello Weave per inizializzare la memoria e le risorse necessarie per il corretto funzionamento dell'allocatore di memoria di Weave Security Manager.
Questa funzione è specifica della piattaforma e in alcuni casi potrebbe essere vuota. Ad esempio, questa funzione non ha alcun effetto quando per l'allocazione della memoria vengono utilizzate le funzioni Malloc() e free() della libreria C Standard.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
MemoryShutdown
void MemoryShutdown( void )
Questa funzione viene chiamata dallo strato Weave per rilasciare tutte le risorse allocate dalla funzione MemoryInit().
Questa funzione può essere una chiamata vuota se non è necessario rilasciare risorse. Questo è il caso, ad esempio, delle funzioni Malloc() e free() della libreria C Standard utilizzate per l'allocazione della memoria.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
Questa funzione viene chiamata per inviare una notifica all'applicazione quando è appena terminata un'operazione crittografica che richiede molto tempo.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
Questa funzione viene chiamata per informare l'applicazione quando sta per iniziare un'operazione crittografica che richiede molto tempo.