Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

nl::Weave::Plattform::Sicherheit

Dieser Namespace enthält alle Schnittstellen in Weave für den Speichermanager Weave von Weave.

Fazit

Funktionen in diesem Namespace werden von Plattformen implementiert, die Weave verwenden. Dies entspricht den Anforderungen/Einschränkungen der jeweiligen Umgebung.

Aufzählungen

BlockSetParamFields{
  kBlockSetSizeMask = 0x07,
  kBlockSetSizeShift = 0,
  kBlockSetSizeValueShift = 7,
  kBlockSetCountMask = 0x18,
  kBlockSetCountShift = 3,
  kBlockSetBufferIndexMask = 0x60,
  kBlockSetBufferIndexShift = 5,
  kBlockSetIsLongTermMask = 0x80,
  kBlockSetIsLongTermShift = 7
}
enum
Die Position der Parameterfelder in einer 8-Bit-codierten Form blockieren.
BlockSetParams{
  kNumberOfNetworkBuffers = 2,
  kNumberOfBlockSets = 4,
  kNetworkBuffer0BlockAllocationMask = 0x07,
  kNetworkBuffer1BlockAllocationMask = 0x18,
  kBlockSet1Size = 1,
  kBlockSet1Count = 1,
  kBlockSet1BufferIndex = 0,
  kBlockSet1isLongTerm = 1,
  kBlockSet2Size = 4,
  kBlockSet2Count = 1,
  kBlockSet2BufferIndex = 0,
  kBlockSet2isLongTerm = 1,
  kBlockSet3Size = 4,
  kBlockSet3Count = 1,
  kBlockSet3BufferIndex = 0,
  kBlockSet3isLongTerm = 0,
  kBlockSet4Size = 5,
  kBlockSet4Count = 2,
  kBlockSet4BufferIndex = 1,
  kBlockSet4isLongTerm = 0,
  kTotalMemorySize = (kBlockSet1Size * kBlockSet1Count + kBlockSet2Size * kBlockSet2Count + kBlockSet3Size * kBlockSet3Count + kBlockSet4Size * kBlockSet4Count) << kBlockSetSizeValueShift,
  kMaxBlockSize = 600,
  kMinBufferSize = 1240
}
enum
Definiert Parameter für Blocksätze.

Typdef.

BlockMark_t Typdef
uint8_t
Der Typ, mit dem gekennzeichnet wird, welcher Block derzeit zugewiesen bzw. nicht zugewiesen ist.
BlockSetParams_t Typdef
uint8_t
Mit diesem Typ werden Informationen zu Blocksätzen codiert.

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]
Codierte Blocksätze.
sBufferAllocationMask = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }[kNumberOfNetworkBuffers]
const BlockMark_t
Gruppe von Pufferblockmasken.
sMemBlocksAllocated = 0
Gibt an, welcher Block zugewiesen ist bzw. nicht zugewiesen ist.
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
void *
Verweise auf Speicherzwischenspeicher, die auf NULL initialisiert wurden.
sNetworkBuffersUsed = true
bool
Ein boolescher Wert, der angibt, ob der Netzwerkzwischenspeicher von „True Allocator“ verwendet wird (falsch).

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 der Größe „Größe“ zuzuweisen.
MemoryAlloc(size_t size, bool isLongTermAlloc)
void *
Diese Funktion wird von der Weave-Ebene aufgerufen, um einen Speicherblock mit der Größe „Größe“ 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 Funktionalität des Weave Security Manager-Speicherkontingents 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
Mit dieser Funktion wird die Anwendung benachrichtigt, wenn ein zeitaufwendiger kryptografischer Vorgang abgeschlossen ist.
OnTimeConsumingCryptoStart(void)
void
Mit dieser Funktion wird die Anwendung benachrichtigt, wenn ein zeitaufwendiger kryptografischer Vorgang beginnt.

Klassen

nl::Weave::Plattform::Sicherheit::AES128BlockCipher
nl::Weave::Plattform::Sicherheit::AES128BlockCipherDec
nl::Weave::Plattform::Sicherheit::AES128BlockCipherEnc
nl::Weave::Plattform::Sicherheit::AES256BlockCipher
nl::Weave::Plattform::Sicherheit::AES256BlockCipherDec
nl::Weave::Plattform::Sicherheit::AES256BlockCipherEnc
nl::Weave::Plattform::Sicherheit::SHA1
nl::Weave::Plattform::Sicherheit::SHA256

Aufzählungen

BlockSetParamFields

 BlockSetParamFields

Die Position der Parameterfelder in einer 8-Bit-codierten Form blockieren.

Attribute
kBlockSetBufferIndexMask

Feldmaske des Zwischenspeichers.

kBlockSetBufferIndexShift

Verschieben des Zwischenspeicherindexfelds

kBlockSetCountMask

Anzahlmaske.

kBlockSetCountShift

Anzahl der Felder verschieben.

kBlockSetIsLongTermMask

Feldmaske eingeben.

kBlockSetIsLongTermShift

Typfeld verschieben.

kBlockSetSizeMask

Größe Feldmaske.

kBlockSetSizeShift

Verschiebung des Größenfelds.

kBlockSetSizeValueShift

Verschiebung der Feldgröße der Größe (multiplizieren mit 128).

BlockSetParams

 BlockSetParams

Definiert Parameter für Blocksätze.

Attribute
kBlockSet1BufferIndex

Set-1-Zwischenspeicherindex ist 0.

kBlockSet1Count

Die Anzahl der Blöcke für Nummer 1 ist 1.

kBlockSet1Size

Set-Größe 1 ist 128 Bytes.

kBlockSet1isLongTerm

Satztyp 1 ist langfristig.

kBlockSet2BufferIndex

Set-2-Zwischenspeicherindex ist 0.

kBlockSet2Count

Block 2 ist auf 1 festgelegt.

kBlockSet2Size

Set-2 ist 512 Bytes.

kBlockSet2isLongTerm

Typ 2 ist langfristig.

kBlockSet3BufferIndex

Set-#3-Pufferindex ist 0.

kBlockSet3Count

Block 3 ist auf 1 festgelegt.

kBlockSet3Size

Set-#3 ist 512 Bytes groß.

kBlockSet3isLongTerm

Satz Nr. 3 ist ein kurzfristiger Typ.

kBlockSet4BufferIndex

Set-4-Pufferindex ist 1.

kBlockSet4Count

Block 4 ist auf 2 festgelegt.

kBlockSet4Size

Die Größe von Set 4 beträgt 640 Bytes.

kBlockSet4isLongTerm

Set-4-Typ ist kurzfristig.

kMaxBlockSize

Maximale Anzahl von Blocks, die von Simple Allocator unterstützt wird.

kMinBufferSize

Erforderliche Mindestgröße des Netzwerkpuffers zur Unterstützung von Simple Allocator-Anwendungsfällen.

Dieser Parameter wird von den Größen von zwei Arbeitsspeicherblöcken (640 + 600) abgeleitet, die im Netzwerkzwischenspeicher 1 zugewiesen sind.

kNetworkBuffer0BlockAllocationMask

Diese Maske identifiziert alle Arbeitsspeicherblöcke, die vom Netzwerkzwischenspeicher 0 zugewiesen sind.

kNetworkBuffer1BlockAllocationMask

Diese Maske identifiziert alle Arbeitsspeicherblöcke, die vom Netzwerkzwischenspeicher 1 zugewiesen sind.

kNumberOfBlockSets

Anzahl der von der einfachen Zuordnung verwendeten Blocksätze.

kNumberOfNetworkBuffers

Anzahl der Netzwerkzwischenspeicher, die vom Simple Allocator verwendet werden.

kTotalMemorySize

Gesamtspeicher, der vom Simple Allocator verwendet wird.

Typdef.

Blockmarke

uint8_t BlockMark_t

Der Typ, mit dem gekennzeichnet wird, welcher Block derzeit zugewiesen bzw. nicht zugewiesen ist.

uint8_t – unterstützt bis zu 8 Speicherblöcke insgesamt

BlockSetParams_t

uint8_t BlockSetParams_t

Mit diesem Typ werden Informationen zu Blocksätzen codiert.

Ein Blocksatz ist eine Gruppe von Arbeitsspeicherblöcken, die dieselben Attribute haben (Größe, Typ und derselbe Puffer). Diagramm unten: Blocksatzinformationen im 8-Bit-Format codiert:

Langfristig Index blockieren Anzahl von Blöcken Blockgröße
[7] [18:5] [4:3] [02:0]
[2:0] – Größe des Arbeitsspeicherblocks in einem Satz Der Größenwert ist mit einem Detaillierungsgrad von 128 Byte codiert.
[02:0] Decodierung
000 0 Bytes
001 128 Byte
010 256 Byte
... -
111 896 Byte
[4:3] – Die Anzahl der Blöcke in einer Gruppe.
[4:3] Decodierung
00 4 Blöcke
01 1 Block
10 2 Blöcke
11 3 Blöcke
[6:5] – Der Pufferindex des Netzwerks, in dem sich die Arbeitsspeicherblöcke befinden. Beachten Sie, dass bei Verwendung des dedizierten Zwischenspeichers alle Speicherblöcke vom dedizierten Puffer zugewiesen und dieser Indexparameter ignoriert wird.
[18:5] Decodierung
00 Netzwerkzwischenspeicher 0
... -
11 Netzwerkzwischenspeicher 3
[7] – Gibt an, ob Blockierungen für lange/kurze Speicherung gelten.
[7] Decodierung
0 Kurzfristige Arbeitsspeicherblöcke
1 Langfristige Arbeitsspeicherblö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 Blocksätze.

sBufferAllocationMask

const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = {
                                                   kNetworkBuffer0BlockAllocationMask,
                                                   kNetworkBuffer1BlockAllocationMask,




                                                                                       }

Gruppe von Pufferblockmasken.

Erkennt, ob alle Blöcke im Puffer nicht zugewiesen wurden. Anschließend kann der Puffer entfernt werden.

sMemBlocksAllocalized

BlockMark_t sMemBlocksAllocated = 0

Gibt an, welcher Block zugewiesen ist bzw. nicht zugewiesen ist.

„0“ initialisiert – bedeutet, dass alle Speicherblöcke blockiert und nicht zugewiesen werden.

sememufs

void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }

Verweise auf Speicherzwischenspeicher, die auf NULL initialisiert wurden.

Wenn Netzwerkzwischenspeicher verwendet werden, verweisen sMemBufs[] auf die PacketBuffer-Objekte. Wenn ein dedizierter Puffer verwendet wird, werden sMemBufs[0]-Punkte auf diesen Puffer und andere sMemBufs[]-Zeiger ignoriert.

Verwendung von sNetworkBuffers

bool sNetworkBuffersUsed = true

Ein boolescher Wert, der angibt, ob der Netzwerkzwischenspeicher von „True Allocator“ verwendet wird (falsch).

Bei „falsch“ wird ein dedizierter Zwischenspeicher mit der Funktion MemoryInit() verwendet.

Funktionen

DecodeBlockSetParams

void DecodeBlockSetParams(
  BlockSetParams_t blockSetParams,
  uint16_t & blockSize,
  uint8_t & blockCount,
  uint8_t & blockBufferIndex,
  bool & blockIsLongTerm
)

SecureSecureData

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
[in] buf
Bewegen Sie den Mauszeiger auf einen Zwischenspeicher, in dem die angeforderten Daten zufällig abgerufen werden sollen.
[in] len
Gibt die angeforderte zufällige Datengröße in Byte an.
Rückgabewerte
WEAVE_ERROR_DRBG_ENTROPY_SOURCE_FAILED
Wenn die Entropiequelle keine Entropie generiert, die vom Zufallsdatengenerator generiert wird.
WEAVE_ERROR_RANDOM_DATA_UNAVAILABLE
Wenn die zufällige Datenquelle keine Zufallsdaten generiert
WEAVE_ERROR_INCORRECT_STATE
Wenn die Zufallsquelle im falschen Zustand gefunden wird.
WEAVE_NO_ERROR
Erfolg.

Logo: InitSecureVIEWERDataSource

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.

Die Funktion ist plattformspezifisch und kann leer sein, wenn keine Initialisierung einer zufälligen Datenquelle erforderlich ist.

Details
Parameter
[in] entropyFunct
Bewegen Sie den Mauszeiger auf eine Funktion, die Entropie für den Zufallsgenerator erzeugt. Wenn eine Entropieeingabe nicht von der Erweiterung benötigt wird, kann die Eingabe NULL sein. Das ist der Fall, wenn die OpenSSL-Version des Zufallsdatengenerators verwendet wird.
[in] entropyLen
Gibt die Entropiegröße in Byte an, die von der Entropiefunktion generiert werden soll, wenn sie verwendet wird.
[in] personalizationData
Mauszeiger auf einen Zwischenspeicher, der die Personalisierungsdaten speichert. Diese Dateneingabe sollte gerätespezifisch sein und hilft dabei, die statistischen Eigenschaften der zufälligen Daten zu verbessern.
[in] perDataLen
Gibt die Größe der Personalisierungsdaten in Byte an.
Rückgabewerte
WEAVE_ERROR_INVALID_ARGUMENT
Wenn ein ungültiges Argument an diese Funktion übergeben wurde.
WEAVE_NO_ERROR
Erfolg.

Erinnerung alloc

void * MemoryAlloc(
  size_t size
)

Diese Funktion wird von der Weave-Ebene aufgerufen, um einen Speicherblock mit der Größe „Größe“ zuzuweisen.

Diese Funktion entspricht MemoryAlloc(size, false).

Details
Parameter
[in] size
Gibt die angeforderte Arbeitsspeichergröße in Byte an.
Rückgabewerte
Pointer
im Erfolgsfall auf einen Arbeitsspeicherblock.
NULL-pointer
wenn Speicherzuweisung fehlschlägt.

Erinnerung alloc

void * MemoryAlloc(
  size_t size,
  bool isLongTermAlloc
)

Diese Funktion wird von der Weave-Ebene aufgerufen, um einen Speicherblock mit der Größe „Größe“ zuzuweisen.

Details
Parameter
[in] size
Gibt die angeforderte Arbeitsspeichergröße in Byte an.
[in] isLongTermAlloc
Ein boolescher Wert, der angibt, ob der angeforderte Speicherblock für die langfristige Verwendung (wahr) oder nicht (falsch) ist. Eine langfristige Zuordnung ist ein Arbeitsspeicher, der zugewiesen werden soll, bis der sichere Sitzung/Handshake abgeschlossen ist. Beispiele für Langzeitzuordnungen sind Blöcke, die CASE/PASE-Objekte und ihre Kontextdaten zugewiesen sind. Eine Kurzzeitzuweisung ist ein Speicher, der für einen bestimmten Vorgang erforderlich ist und sofort danach freigegeben werden kann. Mit dieser Eingabe können Sie die Speicherauslastung in einem speicherbeschränkten System optimieren. Die Verwendung dieses Parameters ist beliebig und hängt von der Funktion ab. Dieser Parameter wird beispielsweise ignoriert, wenn „Campoc()“ in der C-Standardbibliothek verwendet wird.
Rückgabewerte
Pointer
im Erfolgsfall auf einen Arbeitsspeicherblock.
NULL-pointer
wenn Speicherzuweisung fehlschlägt.

Speicherfreies

void MemoryFree(
  void *p
)

Diese Funktion wird von der Weave-Ebene aufgerufen, um einen von der Funktion MemeoryAlloc() zugewiesenen Speicherblock freizugeben.

Details
Parameter
[in] p
Bewegen Sie den Mauszeiger auf einen Arbeitsspeicherblock, der freigegeben werden soll.

Logo: 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 Funktionalität des Weave Security Manager-Speicherkontingents erforderlich sind.

Die Funktion ist plattformspezifisch und kann in bestimmten Fällen leer sein. Diese Funktion hat beispielsweise keine Auswirkungen, wenn für die Arbeitsspeicherzuweisung die Funktionen „C Standard Library Malloc()“ und „free()“ verwendet werden.

Details
Parameter
[in] buf
Ein Zeiger auf einen dedizierten Speicherzwischenspeicher, der als Arbeitsspeicherpool für die Weave-Speicherverwaltung im Sicherheitsmanager verwendet werden soll. Die Eingabe ist optional und standardmäßig auf NULL gesetzt. Sie sollte nicht verwendet werden, wenn kein dedizierter Speicherzwischenspeicher verwendet wird.
[in] bufSize
Größe eines dedizierten Speicherzwischenspeichers. Diese Eingabe ist optional (standardmäßig 0) und sollte nicht verwendet werden, wenn kein dedizierter Speicherzwischenspeicher verwendet wird. Wenn ein dedizierter Arbeitsspeicherzwischenspeicher verwendet wird, prüft die Funktion und gibt einen Fehler aus, wenn die Puffergröße nicht groß genug ist, um Weave-Security-Anwendungsfälle zu unterstützen.
Rückgabewerte
WEAVE_ERROR_BUFFER_TOO_SMALL
Wenn die eingegebene Puffergröße nicht ausreicht, um Weave-Security-Anwendungsfälle zu unterstützen.
WEAVE_NO_ERROR
Erfolg.
other
Ein Fehler, der von einer plattformspezifischen Speicherinitialisierungsfunktion generiert wurde.

Arbeitsspeicher ausschalten

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 leer sein, wenn keine Ressourcen freigegeben werden müssen. Dies ist beispielsweise der Fall, wenn die Funktionen C Standard Library Malloc() und Free() für die Arbeitsspeicherzuweisung verwendet werden.

OnTimeConsumingCryptoDone

void OnTimeConsumingCryptoDone(
  void
)

Mit dieser Funktion wird die Anwendung benachrichtigt, wenn ein zeitaufwendiger kryptografischer Vorgang abgeschlossen ist.

OnTimeConsumingCryptoStart

void OnTimeConsumingCryptoStart(
  void
)

Mit dieser Funktion wird die Anwendung benachrichtigt, wenn ein zeitaufwendiger kryptografischer Vorgang beginnt.