nl:: Weave:: Platform:: Security
Dieser Namespace enthält alle Weave-Schnittstellen für den Arbeitsspeicher-Manager des Weave Security Monitors.
Zusammenfassung
Funktionen in diesem Namespace müssen von Plattformen, die Weave verwenden, entsprechend den Anforderungen/Einschränkungen der jeweiligen Umgebung implementiert werden.
Typedefs |
|
---|---|
BlockMark_t
|
typedefuint8_t
Der Typ, der verwendet wird, um zu kennzeichnen, welcher Block derzeit zugewiesen/nicht zugewiesen ist. |
BlockSetParams_t
|
typedefuint8_t
Dieser Typ wird zum Codieren von Blocksatzinformationen verwendet. |
Variablen |
|
---|---|
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
Codierte Blocksatzparameter.
|
sBufferAllocationMask = {
kNetworkBuffer0BlockAllocationMask,
kNetworkBuffer1BlockAllocationMask,
}[kNumberOfNetworkBuffers]
|
const BlockMark_t
Satz von Pufferblockmasken.
|
sMemBlocksAllocated = 0
|
Gibt an, welcher Block zugewiesen/nicht zugewiesen ist.
|
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
|
void *
Zeiger auf Arbeitsspeicherpuffer, die auf NULL initialisiert wurden.
|
sNetworkBuffersUsed = true
|
bool
Ein boolescher Wert, der angibt, ob (true) oder nicht (false) die Netzwerkzwischenspeicher vom Simple Allocator verwendet werden.
|
Funktionen |
|
---|---|
DecodeBlockSetParams(BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm)
|
void
|
GetSecureRandomData(uint8_t *buf, uint16_t len)
|
Diese Funktion wird von der Weave-Ebene aufgerufen, um zufällige Daten zu generieren.
|
InitSecureRandomDataSource(nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen)
|
Diese Funktion wird von der Weave-Ebene aufgerufen, um eine zufällige Datenquelle zu initialisieren.
|
MemoryAlloc(size_t size)
|
void *
Diese Funktion wird von der Weave-Ebene aufgerufen, um einen Speicherblock mit „size“-Byte zuzuweisen.
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
Diese Funktion wird von der Weave-Ebene aufgerufen, um einen Speicherblock mit „size“-Byte zuzuweisen.
|
MemoryFree(void *p)
|
void
Diese Funktion wird von der Weave-Ebene aufgerufen, um einen von der Funktion MemeoryAlloc() zugewiesenen Speicherblock freizugeben.
|
MemoryInit(void *buf, size_t bufSize)
|
Diese Funktion wird von der Weave-Ebene aufgerufen, um den Arbeitsspeicher und die Ressourcen zu initialisieren, die für die ordnungsgemäße Funktion des Weave Security Manager-Arbeitsspeicherzuweisung erforderlich sind.
|
MemoryShutdown(void)
|
void
Diese Funktion wird von der Weave-Ebene aufgerufen, um alle Ressourcen freizugeben, die von der MemoryInit()-Funktion zugewiesen wurden.
|
OnTimeConsumingCryptoDone(void)
|
void
Diese Funktion wird aufgerufen, um die Anwendung zu benachrichtigen, wenn ein zeitaufwendiger kryptografischer Vorgang gerade abgeschlossen wurde.
|
OnTimeConsumingCryptoStart(void)
|
void
Diese Funktion wird aufgerufen, um die Anwendung zu benachrichtigen, wenn ein zeitaufwendiger kryptografischer Vorgang beginnt.
|
Aufzählungen
BlockSetParamFields
BlockSetParamFields
Sperrsatz-Parameterfelder in einer 8-Bit-codierten Form.
Attribute | |
---|---|
kBlockSetBufferIndexMask
|
Feldmaske für Pufferindex. |
kBlockSetBufferIndexShift
|
Verschiebung des Felds im Pufferindex. |
kBlockSetCountMask
|
Maske für das Feld „Anzahl“. |
kBlockSetCountShift
|
Zählerfeldverschiebung. |
kBlockSetIsLongTermMask
|
Feldmaske eingeben. |
kBlockSetIsLongTermShift
|
Geben Sie Feldverschiebung ein. |
kBlockSetSizeMask
|
Größenfeldmaske. |
kBlockSetSizeShift
|
Verschiebung des Größenfelds. |
kBlockSetSizeValueShift
|
Verschiebung der Decodierung des Größenfelds (multipliziert mit 128). |
BlockSetParams
BlockSetParams
Definiert Blocksatzparameter.
Attribute | |
---|---|
kBlockSet1BufferIndex
|
Pufferindex Nr. 1 ist 0. |
kBlockSet1Count
|
Satz Nr. 1 für die Blockanzahl ist 1. |
kBlockSet1Size
|
Set 1 hat eine Größe von 128 Byte. |
kBlockSet1isLongTerm
|
1. Typ ist langfristig. |
kBlockSet2BufferIndex
|
Pufferindex Nr. 2 ist 0. |
kBlockSet2Count
|
Satz Nr. 2 für die Blockanzahl ist 1. |
kBlockSet2Size
|
Set 2 hat eine Größe von 512 Byte. |
kBlockSet2isLongTerm
|
Satz Nr. 2 ist der langfristige Typ. |
kBlockSet3BufferIndex
|
Pufferindex Nr. 3 auf 0 festlegen. |
kBlockSet3Count
|
Satz Nr. 3 für die Blockanzahl ist 1. |
kBlockSet3Size
|
Set 3 hat eine Größe von 512 Byte. |
kBlockSet3isLongTerm
|
Der Typ von Satz 3 ist kurzfristig. |
kBlockSet4BufferIndex
|
Pufferindex Nr. 4 ist 1. |
kBlockSet4Count
|
4. Blockanzahl ist 2. |
kBlockSet4Size
|
Set 4 hat eine Größe von 640 Byte. |
kBlockSet4isLongTerm
|
Der Typ von Satz 4 ist kurzfristig. |
kMaxBlockSize
|
Maximale Blockgröße, die vom einfachen Allocator unterstützt wird. |
kMinBufferSize
|
Erforderliche Netzwerkpuffergröße zur Unterstützung von Anwendungsfällen für Simple Allocator. Dieser Parameter wird aus den Größen von zwei Speicherblöcken (640 + 600) abgeleitet, die im Netzwerkpuffer #1 zugewiesen sind. |
kNetworkBuffer0BlockAllocationMask
|
Diese Maske identifiziert alle Speicherblöcke, die dem Netzwerkpuffer #0 zugewiesen sind. |
kNetworkBuffer1BlockAllocationMask
|
Diese Maske identifiziert alle Speicherblöcke, die von Netzwerkpuffer 1 zugewiesen wurden. |
kNumberOfBlockSets
|
Anzahl der Blocksätze, die vom einfachen Allocator verwendet werden. |
kNumberOfNetworkBuffers
|
Anzahl der vom einfachen Allocator verwendeten Netzwerkpuffer. |
kTotalMemorySize
|
Insgesamt von Simple Allocator verwendeter Arbeitsspeicher. |
Typedefs
BlockMark_t
uint8_t BlockMark_t
Der Typ, der verwendet wird, um zu kennzeichnen, welcher Block derzeit zugewiesen/nicht zugewiesen ist.
uint8_t – unterstützt insgesamt bis zu 8 Arbeitsspeicherblöcke uint16_t – unterstützt insgesamt bis zu 16 Speicherblöcke uint32_t – unterstützt insgesamt bis zu 32 Speicherblöcke
BlockSetParams_t
uint8_t BlockSetParams_t
Dieser Typ wird zum Codieren von Blocksatzinformationen verwendet.
Ein Blocksatz ist eine Gruppe von Speicherblöcken mit denselben Eigenschaften (Größe, Typ und zum selben Zwischenspeicher gehören). Das folgende Diagramm zeigt, wie Blocksatzinformationen im 8-Bit-Format codiert sind:
Langfristig | Index blockieren | Anzahl der Blöcke | Blockgröße |
[7] | [6:5] | [4:3] | [2:0] |
[2:0] | Decodierung |
000 | 0 Byte |
001 | 128 Byte |
010 | 256 Byte |
... | - |
111 | 896 Byte |
[4:3] | Decodierung |
00 | 4 Blöcke |
01 | 1 Block |
10 | 2 Blöcke |
11 | 3 Blöcke |
[6:5] | Decodierung |
00 | Netzwerkpuffer Nr. 0 |
... | - |
11 | Netzwerkpuffer Nr. 3 |
[7] | Decodierung |
0 | Kurzzeitspeicherblöcke |
1 | Blöcke für Langzeitspeicher |
Variablen
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), }
Codierte Blocksatzparameter.
sBufferAllocationMask
const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }
Satz von Pufferblockmasken.
Gibt an, ob alle Blöcke im Zwischenspeicher und nicht zugewiesen sind, bevor der Puffer freigegeben werden kann.
sMemBlocksAllocated
BlockMark_t sMemBlocksAllocated = 0
Gibt an, welcher Block zugewiesen/nicht zugewiesen ist.
Auf 0 initialisiert – bedeutet, dass alle Speicherblöcke und nicht zugewiesen sind.
sMemBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
Zeiger auf Arbeitsspeicherpuffer, die auf NULL initialisiert wurden.
Bei Verwendung von Netzwerkpuffern verweisen sMemBufs[] auf die PacketBuffer-Objekte. Bei Verwendung eines dedizierten Zwischenspeichers werden sMemBufs[0]-Punkte auf diesen Puffer verwendet und andere sMemBufs[]-Zeiger werden ignoriert.
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
Ein boolescher Wert, der angibt, ob (true) oder nicht (false) die Netzwerkzwischenspeicher vom Simple Allocator verwendet werden.
Bei „false“: Der mit der Funktion MemoryInit() bereitgestellte Zwischenspeicher wird verwendet.
Funktionen
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 )
Diese Funktion wird von der Weave-Ebene aufgerufen, um zufällige Daten zu generieren.
Details | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Rückgabewerte |
|
InitSecureRandomDataSource
WEAVE_ERROR InitSecureRandomDataSource( nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen )
Diese Funktion wird von der Weave-Ebene aufgerufen, um eine zufällige Datenquelle zu initialisieren.
Diese Funktion ist plattformspezifisch und kann leer sein, wenn keine Initialisierung der zufälligen Datenquelle erforderlich ist.
Details | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Rückgabewerte |
|
MemoryAlloc
void * MemoryAlloc( size_t size )
Diese Funktion wird von der Weave-Ebene aufgerufen, um einen Speicherblock mit „size“-Byte zuzuweisen.
Diese Funktion entspricht MemoryAlloc(size, false).
Details | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Rückgabewerte |
|
MemoryAlloc
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
Diese Funktion wird von der Weave-Ebene aufgerufen, um einen Speicherblock mit „size“-Byte zuzuweisen.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Rückgabewerte |
|
MemoryFree
void MemoryFree( void *p )
Diese Funktion wird von der Weave-Ebene aufgerufen, um einen von der Funktion MemeoryAlloc() zugewiesenen Speicherblock freizugeben.
Details | |||
---|---|---|---|
Parameter |
|
MemoryInit
WEAVE_ERROR MemoryInit( void *buf, size_t bufSize )
Diese Funktion wird von der Weave-Ebene aufgerufen, um den Arbeitsspeicher und die Ressourcen zu initialisieren, die für die ordnungsgemäße Funktion des Weave Security Manager-Arbeitsspeicherzuweisung erforderlich sind.
Diese Funktion ist plattformspezifisch und kann in bestimmten Fällen leer sein. Zum Beispiel bewirkt diese Funktion nichts, wenn die Funktionen der C-Standardbibliothek Malloc() und free() für die Speicherzuweisung verwendet werden.
Details | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Rückgabewerte |
|
MemoryShutdown
void MemoryShutdown( void )
Diese Funktion wird von der Weave-Ebene aufgerufen, um alle Ressourcen freizugeben, die von der MemoryInit()-Funktion zugewiesen wurden.
Diese Funktion kann ein leerer Aufruf sein, wenn keine Ressourcen freigegeben werden müssen. Dies ist beispielsweise der Fall, wenn die Funktionen der C-Standardbibliothek Malloc() und free() für die Speicherzuweisung verwendet werden.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
Diese Funktion wird aufgerufen, um die Anwendung zu benachrichtigen, wenn ein zeitaufwendiger kryptografischer Vorgang gerade abgeschlossen wurde.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
Diese Funktion wird aufgerufen, um die Anwendung zu benachrichtigen, wenn ein zeitaufwendiger kryptografischer Vorgang beginnt.