nl:: Weave:: Platform:: Security
Ta przestrzeń nazw obejmuje wszystkie interfejsy weave na potrzeby menedżera pamięci Monitor zabezpieczeń Weave.
Podsumowanie
Funkcje w tej przestrzeni nazw powinny być wdrażane przez platformy używające Weave zgodnie z potrzebami i ograniczeniami danego środowiska.
Definicje typów |
|
---|---|
BlockMark_t
|
typedefuint8_t
Typ używany do oznaczania, który blok jest obecnie przydzielony/nieprzydzielony. |
BlockSetParams_t
|
typedefuint8_t
Ten typ służy do kodowania informacji o zestawie bloków. |
Zmienne |
|
---|---|
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
Zakodowany blok ustawia parametry.
|
sBufferAllocationMask = {
kNetworkBuffer0BlockAllocationMask,
kNetworkBuffer1BlockAllocationMask,
}[kNumberOfNetworkBuffers]
|
const BlockMark_t
Zestaw masek bloku bufora.
|
sMemBlocksAllocated = 0
|
Wskazuje, który blok jest przydzielony/nieprzydzielony.
|
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
|
void *
Wskaźniki do buforów pamięci zainicjowanych z wartością NULL.
|
sNetworkBuffersUsed = true
|
bool
Wartość logiczna wskazująca, czy (prawda) czy nie (fałsz) bufory sieciowe są używane przez prosty lokalizator.
|
Funkcje |
|
---|---|
DecodeBlockSetParams(BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm)
|
void
|
GetSecureRandomData(uint8_t *buf, uint16_t len)
|
Ta funkcja jest wywoływana przez warstwę Weave w celu wygenerowania losowych danych.
|
InitSecureRandomDataSource(nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen)
|
Ta funkcja jest wywoływana przez warstwę Weave, aby zainicjować losowe źródło danych.
|
MemoryAlloc(size_t size)
|
void *
Funkcja jest wywoływana przez warstwę Weave, aby przydzielić blok pamięci o rozmiarze bajtów.
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
Funkcja jest wywoływana przez warstwę Weave, aby przydzielić blok pamięci o rozmiarze bajtów.
|
MemoryFree(void *p)
|
void
Funkcja jest wywoływana przez warstwę Weave, aby zwolnić blok pamięci przydzielony przez funkcję MemeoryAlloc().
|
MemoryInit(void *buf, size_t bufSize)
|
Ta funkcja jest wywoływana przez warstwę Weave, aby zainicjować pamięć i zasoby wymagane do prawidłowego działania alokatora pamięci menedżera zabezpieczeń Weave.
|
MemoryShutdown(void)
|
void
Ta funkcja jest wywoływana przez warstwę Weave, aby zwolnić wszystkie zasoby przydzielone przez funkcję MemoryInit().
|
OnTimeConsumingCryptoDone(void)
|
void
Ta funkcja jest wywoływana, aby powiadomić aplikację o zakończeniu czasochłonnej operacji kryptograficznej.
|
OnTimeConsumingCryptoStart(void)
|
void
Ta funkcja jest wywoływana, aby powiadomić aplikację o zbliżającym się rozpoczęciu czasochłonnej operacji kryptograficznej.
|
Wyliczenia
BlockSetParamFields
BlockSetParamFields
Lokalizacja pól parametrów zestawu bloków w postaci 8-bitowej.
Właściwości | |
---|---|
kBlockSetBufferIndexMask
|
Maska pola indeksu bufora. |
kBlockSetBufferIndexShift
|
Przesunięcie pola indeksu bufora. |
kBlockSetCountMask
|
Maska pola liczby. |
kBlockSetCountShift
|
Licznik przesunięcia pola. |
kBlockSetIsLongTermMask
|
Wpisz maskę pola. |
kBlockSetIsLongTermShift
|
Wpisz przesunięcie pola. |
kBlockSetSizeMask
|
Maska pola rozmiaru. |
kBlockSetSizeShift
|
Przesunięcie pola rozmiaru. |
kBlockSetSizeValueShift
|
Przesunięcie pola dekodowania pola rozmiaru (pomnożenie przez 128). |
BlockSetParams
BlockSetParams
Określa parametry zestawu bloków.
Właściwości | |
---|---|
kBlockSet1BufferIndex
|
Ustawony indeks bufora nr 1 to 0. |
kBlockSet1Count
|
Ustawiony limit to 1. |
kBlockSet1Size
|
Zestaw 1 ma rozmiar 128 bajtów. |
kBlockSet1isLongTerm
|
Typ zestawu nr 1 jest długoterminowy. |
kBlockSet2BufferIndex
|
Ustaw indeks bufora nr 2 to 0. |
kBlockSet2Count
|
Ustawiona liczba bloków to 1. |
kBlockSet2Size
|
Zestaw 2 ma rozmiar 512 bajtów. |
kBlockSet2isLongTerm
|
Typ zestawu 2 jest długoterminowy. |
kBlockSet3BufferIndex
|
Ustaw indeks bufora nr 3 to 0. |
kBlockSet3Count
|
Ustawiony limit to 1. |
kBlockSet3Size
|
Zestaw 3 ma rozmiar 512 bajtów. |
kBlockSet3isLongTerm
|
Zestaw nr 3 jest typu krótkoterminowego. |
kBlockSet4BufferIndex
|
Ustaw indeks bufora nr 4 to 1. |
kBlockSet4Count
|
Ustawiona liczba bloków to 2. |
kBlockSet4Size
|
Zestaw 4 ma rozmiar 640 bajtów. |
kBlockSet4isLongTerm
|
Typ zestawu 4 jest krótkoterminowy. |
kMaxBlockSize
|
Maksymalny rozmiar bloku obsługiwany przez zwykły lokalizator. |
kMinBufferSize
|
Minimalny rozmiar bufora sieciowego wymagany do obsługi przypadków użycia funkcji Simple Allocator. Ten parametr pochodzi z rozmiarów 2 bloków pamięci (640 + 600) przydzielonych w buforze sieciowym nr 1. |
kNetworkBuffer0BlockAllocationMask
|
Ta maska identyfikuje wszystkie bloki pamięci przydzielone z bufora sieciowego nr 0. |
kNetworkBuffer1BlockAllocationMask
|
Ta maska identyfikuje wszystkie bloki pamięci przydzielone z bufora sieciowego nr 1. |
kNumberOfBlockSets
|
Liczba zestawów bloków używanych przez lokalizator. |
kNumberOfNetworkBuffers
|
Liczba buforów sieciowych używanych przez Simple Allocator. |
kTotalMemorySize
|
Łączna ilość pamięci używanej przez Simple Allocator. |
Definicje typów
BlockMark_t
uint8_t BlockMark_t
Typ używany do oznaczania, który blok jest obecnie przydzielony/nieprzydzielony.
uint8_t – obsługuje łącznie do 8 bloków pamięci uint16_t – obsługuje łącznie do 16 bloków pamięci uint32_t – obsługuje łącznie do 32 bloków pamięci
BlockSetParams_t
uint8_t BlockSetParams_t
Ten typ służy do kodowania informacji o zestawie bloków.
Zestaw bloków to grupa fragmentów pamięci o tych samych właściwościach (rozmiar, typ i należące do tego samego bufora). Poniższy diagram przedstawia sposób kodowania informacji o zestawie bloków w formacie 8-bitowym:
Jest długoterminowy | Zablokuj indeks | Liczba bloków | Rozmiar bloku |
[7] | [6:5] | [4:3] | [2:0] |
[2:0] | Dekodowanie |
000 | 0 bajtów |
001 | 128 bajtów |
010 | 256 bajtów |
... | - |
111 | 896 bajtów |
[4:3] | Dekodowanie |
00 | 4 bloki |
01 | 1 blok |
10 | 2 bloki |
11 | 3 bloki |
[6:5] | Dekodowanie |
00 | Bufor sieciowy nr 0 |
... | - |
11 | Bufor sieciowy nr 3 |
[7] | Dekodowanie |
0 | Bloki pamięci krótkoterminowej |
1 | Bloki pamięci długoterminowej |
Zmienne
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), }
Zakodowany blok ustawia parametry.
sBufferAllocationMask
const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }
Zestaw masek bloku bufora.
Określa, czy wszystkie bloki w buforze i nieprzydzielone, można zwolnić bufor.
sMemBlocksAllocated
BlockMark_t sMemBlocksAllocated = 0
Wskazuje, który blok jest przydzielony/nieprzydzielony.
Inicjowane na 0 – oznacza, że wszystkie bloki pamięci i nieprzydzielone.
sMemBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
Wskaźniki do buforów pamięci zainicjowanych z wartością NULL.
Gdy używane są bufory sieciowe, sMemBufs[] wskazują obiekty PacketBuffer. Gdy używany jest dedykowany bufor, sMemBufs[0] wskazuje ten bufor, a inne wskaźniki sMemBufs[] są ignorowane.
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
Wartość logiczna wskazująca, czy (prawda) czy nie (fałsz) bufory sieciowe są używane przez prosty lokalizator.
Jeśli ma wartość false (fałsz), używany jest specjalny bufor udostępniany z funkcją MemoryInit().
Funkcje
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 )
Ta funkcja jest wywoływana przez warstwę Weave w celu wygenerowania losowych danych.
Szczegóły | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||
Zwracane wartości |
|
InitSecureRandomDataSource
WEAVE_ERROR InitSecureRandomDataSource( nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen )
Ta funkcja jest wywoływana przez warstwę Weave, aby zainicjować losowe źródło danych.
Ta funkcja jest zależna od platformy i może być pusta, gdy nie jest wymagane inicjowanie losowego źródła danych.
Szczegóły | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametry |
|
||||||||
Zwracane wartości |
|
MemoryAlloc
void * MemoryAlloc( size_t size )
Funkcja jest wywoływana przez warstwę Weave, aby przydzielić blok pamięci o rozmiarze bajtów.
Ta funkcja jest odpowiednikiem funkcji MemoryAlloc(rozmiar; fałsz).
Szczegóły | |||||
---|---|---|---|---|---|
Parametry |
|
||||
Zwracane wartości |
|
MemoryAlloc
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
Funkcja jest wywoływana przez warstwę Weave, aby przydzielić blok pamięci o rozmiarze bajtów.
Szczegóły | |||||
---|---|---|---|---|---|
Parametry |
|
||||
Zwracane wartości |
|
MemoryFree
void MemoryFree( void *p )
Funkcja jest wywoływana przez warstwę Weave, aby zwolnić blok pamięci przydzielony przez funkcję MemeoryAlloc().
Szczegóły | |||
---|---|---|---|
Parametry |
|
MemoryInit
WEAVE_ERROR MemoryInit( void *buf, size_t bufSize )
Ta funkcja jest wywoływana przez warstwę Weave, aby zainicjować pamięć i zasoby wymagane do prawidłowego działania alokatora pamięci menedżera zabezpieczeń Weave.
Ta funkcja jest zależna od platformy i w niektórych przypadkach może być pusta. Na przykład ta funkcja nie robi nic, gdy do alokacji pamięci używane są funkcje Malloc() i free() w standardowej bibliotece C.
Szczegóły | |||||||
---|---|---|---|---|---|---|---|
Parametry |
|
||||||
Zwracane wartości |
|
MemoryShutdown
void MemoryShutdown( void )
Ta funkcja jest wywoływana przez warstwę Weave, aby zwolnić wszystkie zasoby przydzielone przez funkcję MemoryInit().
Ta funkcja może być pustym wywołaniem, jeśli nie ma potrzeby zwalniania zasobów. Dzieje się tak na przykład wtedy, gdy do alokacji pamięci używane są funkcje Malloc() i free() w C Standard Library.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
Ta funkcja jest wywoływana, aby powiadomić aplikację o zakończeniu czasochłonnej operacji kryptograficznej.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
Ta funkcja jest wywoływana, aby powiadomić aplikację o zbliżającym się rozpoczęciu czasochłonnej operacji kryptograficznej.