nl:: Weave:: Platform:: Security
Dieser Namespace umfasst alle Schnittstellen in Weave für den Arbeitsspeichermanager des Weave Security Monitor.
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
|
typedef.uint8_t
Der Typ, mit dem markiert wird, welcher Block derzeit zugewiesen/nicht zugewiesen ist. |
BlockSetParams_t
|
typedef.uint8_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 wurde.
|
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
|
void *
Zeiger auf Zwischenspeicher, die als NULL initialisiert sind.
|
sNetworkBuffersUsed = true
|
bool
Ein boolescher Wert, der angibt, ob die Netzwerkzwischenspeicher (true) oder nicht (false) von der einfachen Zuordnung 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 der Größe „size“ zuzuordnen. Bytes.
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
Diese Funktion wird von der Weave-Ebene aufgerufen, um einen Speicherblock der Größe „size“ zuzuordnen. Bytes.
|
MemoryFree(void *p)
|
void
Diese Funktion wird von der Weave-Ebene aufgerufen, um einen Speicherblock freizugeben, der von der Funktion MemeoryAlloc() zugewiesen wurde.
|
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 der Arbeitsspeicherzuordnung des Weave Security Managers erforderlich sind.
|
MemoryShutdown(void)
|
void
Diese Funktion wird von der Weave-Ebene aufgerufen, um alle Ressourcen freizugeben, die von der Funktion MemoryInit() zugewiesen wurden.
|
OnTimeConsumingCryptoDone(void)
|
void
Diese Funktion wird aufgerufen, um die Anwendung zu benachrichtigen, sobald 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
Position der Blocksatz-Parameterfelder in 8-Bit-codierter Form.
Attribute | |
---|---|
kBlockSetBufferIndexMask
|
Maske für Pufferindexfeld. |
kBlockSetBufferIndexShift
|
Verschiebung des Zwischenspeicherindexfelds. |
kBlockSetCountMask
|
Anzahl der Feldmasken. |
kBlockSetCountShift
|
Verschiebung des Anzahlfelds. |
kBlockSetIsLongTermMask
|
Geben Sie eine Feldmaske ein. |
kBlockSetIsLongTermShift
|
Typfeldverschiebung. |
kBlockSetSizeMask
|
Feldmaske für Größe. |
kBlockSetSizeShift
|
Verschiebung des Größenfelds. |
kBlockSetSizeValueShift
|
Verschiebung der Felddecodierung in der Größe (multiplizieren mit 128). |
BlockSetParams
BlockSetParams
Definiert Blocksatzparameter.
Attribute | |
---|---|
kBlockSet1BufferIndex
|
Setzte den Pufferindex Nr. 1 auf 0. |
kBlockSet1Count
|
Blockanzahl 1 ist 1. |
kBlockSet1Size
|
Die Größe von Set Nr. 1 beträgt 128 Byte. |
kBlockSet1isLongTerm
|
Set Nr. 1 ist langfristig. |
kBlockSet2BufferIndex
|
Zwischenspeicherindex von Set 2 ist 0. |
kBlockSet2Count
|
Die Blockanzahl von Set 2 ist 1. |
kBlockSet2Size
|
Die Größe von Set Nr. 2 beträgt 512 Byte. |
kBlockSet2isLongTerm
|
Bei Satz 2 ist der Typ „Langfristig“. |
kBlockSet3BufferIndex
|
Der Pufferindex Nr. 3 ist 0. |
kBlockSet3Count
|
Blockanzahl 3 ist 1. |
kBlockSet3Size
|
Die Größe von Set Nr. 3 beträgt 512 Byte. |
kBlockSet3isLongTerm
|
Bei Satz Nr. 3 ist der Typ kurzfristig. |
kBlockSet4BufferIndex
|
Pufferindex von Set Nr. 4 ist 1. |
kBlockSet4Count
|
Blockanzahl 4 ist 2. |
kBlockSet4Size
|
Die Größe von Set Nr. 4 beträgt 640 Byte. |
kBlockSet4isLongTerm
|
Bei Satz Nr. 4 ist der Typ kurzfristig. |
kMaxBlockSize
|
Die maximale Blockgröße, die von der einfachen Zuordnung unterstützt wird. |
kMinBufferSize
|
Erforderliche Mindestgröße des Netzwerkpuffers zur Unterstützung von Anwendungsfällen vom Typ „Einfache Zuordnung“. Dieser Parameter wird aus den Größen von zwei Speicherblöcken (640 + 600) abgeleitet, die im Netzwerkpuffer Nr. 1 zugewiesen sind. |
kNetworkBuffer0BlockAllocationMask
|
Diese Maske identifiziert alle aus dem Netzwerkpuffer Nr. 0 zugewiesenen Speicherblöcke. |
kNetworkBuffer1BlockAllocationMask
|
Diese Maske identifiziert alle aus dem Netzwerkpuffer 1 zugewiesenen Speicherblöcke. |
kNumberOfBlockSets
|
Anzahl der von der einfachen Zuordnung verwendeten Blocksätze. |
kNumberOfNetworkBuffers
|
Anzahl der Netzwerkzwischenspeicher, die von der einfachen Zuordnung verwendet werden. |
kTotalMemorySize
|
Gesamter Arbeitsspeicher, der von der einfachen Zuordnung verwendet wird. |
Typedefs
BlockMark_t
uint8_t BlockMark_t
Der Typ, mit dem markiert wird, 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 Arbeitsspeicherblöcke
BlockSetParams_t
uint8_t BlockSetParams_t
Dieser Typ wird zum Codieren von Blocksatzinformationen verwendet.
Ein Blocksatz ist eine Gruppe von Speicherblöcken, die dieselben Eigenschaften (Größe, Typ und zum selben Zwischenspeicher gehören) haben. Das folgende Diagramm zeigt, wie Blocksatzinformationen im 8-Bit-Format codiert werden:
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 Häuserblocks |
11 | 3 Blöcke |
[6:5] | Decodierung |
00 | Netzwerkpuffer Nr. 0 |
… | - |
11 | Netzwerkpuffer 3 |
[7] | Decodierung |
0 | Kurzfristige Speicherblockierungen |
1 | Langfristige Speicherblöcke |
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.
Ermittelt, ob alle Blöcke im Zwischenspeicher und nicht zugeordnet sind, und dann kann der Puffer wieder entlastet werden.
sMemBlocksAllocated
BlockMark_t sMemBlocksAllocated = 0
Gibt an, welcher Block zugewiesen/nicht zugewiesen wurde.
Initialisiert mit 0 – bedeutet, dass alle Arbeitsspeicherblöcke und nicht zugewiesen sind.
sMemBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
Zeiger auf Zwischenspeicher, die als NULL initialisiert sind.
Bei der Verwendung von Netzwerkpuffern verweist sMemBufs[] auf die PacketBuffer-Objekte. Bei Verwendung eines dedizierten Zwischenspeichers werden sMemBufs[0]-Punkte auf diesen Zwischenspeicher und andere sMemBufs[]-Zeiger ignoriert.
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
Ein boolescher Wert, der angibt, ob die Netzwerkzwischenspeicher (true) oder nicht (false) von der einfachen Zuordnung verwendet werden.
Wenn „false“, wird ein dedizierter Zwischenspeicher verwendet, der mit der Funktion MemoryInit() bereitgestellt wird.
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 einer 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 der Größe „size“ zuzuordnen. Bytes.
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 der Größe „size“ zuzuordnen. Bytes.
Details | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Rückgabewerte |
|
MemoryFree
void MemoryFree( void *p )
Diese Funktion wird von der Weave-Ebene aufgerufen, um einen Speicherblock freizugeben, der von der Funktion MemeoryAlloc() zugewiesen wurde.
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 der Arbeitsspeicherzuordnung des Weave Security Managers erforderlich sind.
Diese Funktion ist plattformspezifisch und kann in bestimmten Fällen leer sein. Diese Funktion bewirkt beispielsweise nichts, wenn die Funktionen "maloc()" und "free()" der C-Standardbibliothek 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 Funktion MemoryInit() zugewiesen wurden.
Diese Funktion kann ein leerer Aufruf sein, wenn keine Ressourcen freigegeben werden müssen. Dies ist beispielsweise der Fall, wenn die Funktionen "maloc()" und "free()" der C-Standardbibliothek für die Speicherzuweisung verwendet werden.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
Diese Funktion wird aufgerufen, um die Anwendung zu benachrichtigen, sobald 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.