nl:: Weave:: Platform:: Security
Questo spazio dei nomi include tutte le interfacce all'interno di Weave per il gestore della memoria Weave Security Monitor.
Riepilogo
Le funzioni in questo spazio dei nomi devono essere implementate da piattaforme che utilizzano Weave, in base alle esigenze/limitazioni 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 sul set 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 degli insiemi di blocchi codificati.
|
sBufferAllocationMask = {
kNetworkBuffer0BlockAllocationMask,
kNetworkBuffer1BlockAllocationMask,
}[kNumberOfNetworkBuffers]
|
const BlockMark_t
Set di maschere del blocco del buffer.
|
sMemBlocksAllocated = 0
|
Indica quale blocco è allocato/non allocato.
|
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
|
void *
Puntatori ai buffer di memoria inizializzati in NULL.
|
sNetworkBuffersUsed = true
|
bool
Un valore booleano che indica se (true) o meno (false) i buffer di rete sono utilizzati dall'allocatore semplice.
|
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 richiamata dal livello Weave per generare dati casuali.
|
InitSecureRandomDataSource(nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen)
|
Questa funzione viene richiamata dal livello Weave per inizializzare l'origine dati casuale.
|
MemoryAlloc(size_t size)
|
void *
Questa funzione viene richiamata dal livello Weave per allocare un blocco di memoria di "dimensioni" byte.
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
Questa funzione viene richiamata dal livello Weave per allocare un blocco di memoria di "dimensioni" byte.
|
MemoryFree(void *p)
|
void
Questa funzione viene chiamata dal livello 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 Weave Security Manager.
|
MemoryShutdown(void)
|
void
Questa funzione viene chiamata dal livello Weave per rilasciare tutte le risorse allocate dalla funzione MemoryInit().
|
OnTimeConsumingCryptoDone(void)
|
void
Questa funzione viene chiamata per notificare l'applicazione quando si è appena conclusa un'operazione crittografica dispendiosa in termini di tempo.
|
OnTimeConsumingCryptoStart(void)
|
void
Questa funzione viene chiamata per notificare l'applicazione quando sta per iniziare un'operazione crittografica dispendiosa in termini di tempo.
|
Enumerazioni
BlockSetParamFields
BlockSetParamFields
Posizione dei campi di parametri del set di blocchi in un formato codificato a 8 bit.
Proprietà | |
---|---|
kBlockSetBufferIndexMask
|
Maschera del campo dell'indice del buffer. |
kBlockSetBufferIndexShift
|
Spostamento del campo dell'indice del buffer. |
kBlockSetCountMask
|
Maschera per il campo del conteggio. |
kBlockSetCountShift
|
Maiusc campo Conteggio. |
kBlockSetIsLongTermMask
|
Maschera del campo del tipo. |
kBlockSetIsLongTermShift
|
Digita lo spostamento di un 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 #1 è 0. |
kBlockSet1Count
|
Il numero di blocchi del set 1 è 1. |
kBlockSet1Size
|
Le dimensioni del set 1 sono di 128 byte. |
kBlockSet1isLongTerm
|
Il tipo di set 1 è a lungo termine. |
kBlockSet2BufferIndex
|
L'indice di buffer impostato n. 2 è 0. |
kBlockSet2Count
|
Il numero di blocchi del set 2 è 1. |
kBlockSet2Size
|
Le dimensioni del set 2 sono di 512 byte. |
kBlockSet2isLongTerm
|
Il tipo di set 2 è a lungo termine. |
kBlockSet3BufferIndex
|
L'indice di buffer impostato n. 3 è 0. |
kBlockSet3Count
|
Il numero di blocchi del set 3 è 1. |
kBlockSet3Size
|
Le dimensioni del set 3 sono di 512 byte. |
kBlockSet3isLongTerm
|
Il tipo di set 3 è a breve termine. |
kBlockSet4BufferIndex
|
L'indice di buffer impostato n. 4 è 1. |
kBlockSet4Count
|
Il numero di blocchi del set 4 è 2. |
kBlockSet4Size
|
Le dimensioni del set 4 sono di 640 byte. |
kBlockSet4isLongTerm
|
Il tipo di set 4 è a breve termine. |
kMaxBlockSize
|
Dimensione massima del blocco supportata dall'allocatore semplice. |
kMinBufferSize
|
Dimensioni minime del buffer di rete necessarie per supportare i casi d'uso di allocatore semplice. 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 n. 1. |
kNumberOfBlockSets
|
Numero di insiemi di blocchi utilizzati dall'allocatore semplice. |
kNumberOfNetworkBuffers
|
Numero di buffer di rete utilizzati dall'allocatore semplice. |
kTotalMemorySize
|
Memoria totale utilizzata dall'allocatore 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 sul set di blocchi.
Un insieme di blocchi è un gruppo di blocchi di memoria che hanno le stesse proprietà (dimensioni, tipo e appartengono allo stesso buffer). Il seguente diagramma presenta come le informazioni sul set di blocchi sono codificate in un formato a 8 bit:
È a lungo termine | Blocca indice | Numero di blocchi | Dimensione blocco |
[7] | [6:5] | [4:3] | [2:0] |
[2:0] | Decodifica |
000 | 0 byte |
001 | 128 byte |
010 | 256 byte |
... | - |
111 | 896 byte |
[4:3] | Decodifica |
00 | 4 blocchi |
01 | 1 blocco |
10 | 2 blocchi |
11 | 3 blocchi |
[6:5] | Decodifica |
00 | Buffer di rete n. 0 |
... | - |
11 | Buffer di rete n. 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 degli insiemi di blocchi codificati.
sBufferAllocationMask
const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }
Set di maschere del blocco del buffer.
Identifica se tutti i blocchi nel buffer non sono allocati e se il buffer può essere allentato.
sMemBlocksAllocated
BlockMark_t sMemBlocksAllocated = 0
Indica quale blocco è allocato/non allocato.
Inizializzato a 0 significa che tutti i blocchi di memoria e non allocati.
sMemBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
Puntatori ai buffer di memoria inizializzati in NULL.
Quando vengono utilizzati i buffer di rete, sMemBufs[] punta agli oggetti PacketBuffer. Quando viene usato un buffer dedicato, sMemBufs[0] punta a quel buffer e altri puntatori sMemBufs[] vengono ignorati.
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
Un valore booleano che indica se (true) o meno (false) i buffer di rete sono utilizzati dall'allocatore semplice.
Se 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 richiamata dal livello 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 richiamata dal livello Weave per inizializzare l'origine 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 richiamata dal livello Weave per allocare un blocco di memoria di "dimensioni" byte.
Questa funzione è equivalente a MemoryAlloc(size, false).
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
MemoryAlloc
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
Questa funzione viene richiamata dal livello Weave per allocare un blocco di memoria di "dimensioni" byte.
Dettagli | |||||
---|---|---|---|---|---|
Parametri |
|
||||
Valori restituiti |
|
MemoryFree
void MemoryFree( void *p )
Questa funzione viene chiamata dal livello 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 Weave Security Manager.
Questa funzione è specifica per la piattaforma e potrebbe essere vuota in alcuni casi. Ad esempio, questa funzione non produce alcun effetto quando vengono utilizzate le funzioni Malloc() e free() della libreria standard C per l'allocazione della memoria.
Dettagli | |||||||
---|---|---|---|---|---|---|---|
Parametri |
|
||||||
Valori restituiti |
|
MemoryShutdown
void MemoryShutdown( void )
Questa funzione viene chiamata dal livello Weave per rilasciare tutte le risorse allocate dalla funzione MemoryInit().
Questa funzione può essere una chiamata vuota se non è necessario rilasciare risorse. Ad esempio, questo è il caso in cui per l'allocazione della memoria vengono utilizzate le funzioni Malloc() e free() della libreria standard C.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
Questa funzione viene chiamata per notificare l'applicazione quando si è appena conclusa un'operazione crittografica dispendiosa in termini di tempo.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
Questa funzione viene chiamata per notificare l'applicazione quando sta per iniziare un'operazione crittografica dispendiosa in termini di tempo.