нл:: Переплетение:: Платформа:: Безопасность
Это пространство имен включает в себя все интерфейсы внутри Weave для диспетчера памяти Weave Security Monitor.
Краткое содержание
Функции в этом пространстве имен должны быть реализованы платформами, использующими Weave, в соответствии с потребностями/ограничениями конкретной среды.
Определения типов | |
---|---|
BlockMark_t | определение типаuint8_t Тип, используемый для обозначения того, какой блок в данный момент выделен/нераспределен. |
BlockSetParams_t | определение типаuint8_t Этот тип используется для кодирования информации о наборе блоков. |
Переменные | |
---|---|
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 Закодированный блок устанавливает параметры. |
sBufferAllocationMask = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }[kNumberOfNetworkBuffers] | const BlockMark_t Набор масок буферных блоков. |
sMemBlocksAllocated = 0 | Указывает, какой блок выделен/нераспределен. |
sMemBufs = { NULL }[kNumberOfNetworkBuffers] | void * Указатели на буферы памяти, инициализированные значением NULL. |
sNetworkBuffersUsed = true | bool Логическое значение, указывающее, используются ли (true) или нет (false) сетевые буферы Simple Allocator. |
Функции | |
---|---|
DecodeBlockSetParams ( BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm) | void |
GetSecureRandomData (uint8_t *buf, uint16_t len) | Эта функция вызывается слоем Weave для генерации случайных данных. |
InitSecureRandomDataSource ( nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen) | Эта функция вызывается слоем Weave для инициализации источника случайных данных. |
MemoryAlloc (size_t size) | void * Эта функция вызывается слоем Weave для выделения блока памяти «размера» в байтах. |
MemoryAlloc (size_t size, bool isLongTermAlloc) | void * Эта функция вызывается слоем Weave для выделения блока памяти «размера» в байтах. |
MemoryFree (void *p) | void Эта функция вызывается слоем Weave для освобождения блока памяти, выделенного функцией MemeoryAlloc(). |
MemoryInit (void *buf, size_t bufSize) | Эта функция вызывается уровнем Weave для инициализации памяти и ресурсов, необходимых для правильной работы распределителя памяти Weave Security Manager. |
MemoryShutdown (void) | void Эта функция вызывается слоем Weave для освобождения всех ресурсов, выделенных функцией MemoryInit() . |
OnTimeConsumingCryptoDone (void) | void Эта функция вызывается для уведомления приложения о завершении трудоемкой криптографической операции. |
OnTimeConsumingCryptoStart (void) | void Эта функция вызывается для уведомления приложения о начале трудоемкой криптографической операции. |
Перечисления
Блоксетпарамфилдс
BlockSetParamFields
Расположение полей параметров блочного набора в 8-битном закодированном виде.
Блоксетпарамс
BlockSetParams
Определяет параметры набора блоков.
Определения типов
БлокМарк_t
uint8_t BlockMark_t
Тип, используемый для обозначения того, какой блок в данный момент выделен/нераспределен.
uint8_t — всего поддерживается до 8 блоков памяти uint16_t — всего поддерживается до 16 блоков памяти uint32_t — всего поддерживается до 32 блоков памяти
БлокСетПарамс_т
uint8_t BlockSetParams_t
Этот тип используется для кодирования информации о наборе блоков.
Набор блоков — это группа фрагментов памяти, которые имеют одинаковые свойства (размер, тип и принадлежат одному и тому же буферу). На диаграмме ниже показано, как информация о наборе блоков кодируется в 8-битном формате:
долгосрочный | Индекс блока | Количество блоков | Размер блока |
[7] | [6:5] | [4:3] | [2:0] |
[2:0] | Декодирование |
000 | 0 байт |
001 | 128 байт |
010 | 256 байт |
... | - |
111 | 896 байт |
[4:3] | Декодирование |
00 | 4 блока |
01 | 1 блок |
10 | 2 блока |
11 | 3 блока |
[6:5] | Декодирование |
00 | Сетевой буфер №0 |
... | - |
11 | Сетевой буфер №3 |
[7] | Декодирование |
0 | Блоки кратковременной памяти |
1 | Блоки долговременной памяти |
Переменные
сблоксетпарамс
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), }
Закодированный блок устанавливает параметры.
sBufferAllocationMask
const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }
Набор масок буферных блоков.
Определяет, все ли блоки в буфере нераспределены, а затем можно освободить буфер.
смемблоксаллокатед
BlockMark_t sMemBlocksAllocated = 0
Указывает, какой блок выделен/нераспределен.
Инициализировано значением 0 — означает, что вся память заблокирована и нераспределена.
смембуфс
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
Указатели на буферы памяти, инициализированные значением NULL.
Когда используются сетевые буферы, sMemBufs[] указывает на объекты PacketBuffer. Когда используется выделенный буфер, sMemBufs[0] указывает на этот буфер, а другие указатели sMemBufs[] игнорируются.
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
Логическое значение, указывающее, используются ли (true) или нет (false) сетевые буферы Simple Allocator.
Когда false — используется выделенный буфер, предоставляемый функцией MemoryInit() .
Функции
Декодированиеблоксетпарамс
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 )
Эта функция вызывается слоем Weave для генерации случайных данных.
Подробности | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||
Возвращаемые значения |
|
InitSecureRandomDataSource
WEAVE_ERROR InitSecureRandomDataSource( nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen )
Эта функция вызывается слоем Weave для инициализации источника случайных данных.
Эта функция зависит от платформы и может быть пустой, если не требуется инициализация источника случайных данных.
Подробности | |||||||||
---|---|---|---|---|---|---|---|---|---|
Параметры |
| ||||||||
Возвращаемые значения |
|
ПамятьАллок
void * MemoryAlloc( size_t size )
Эта функция вызывается слоем Weave для выделения блока памяти «размера» в байтах.
Эта функция эквивалентна MemoryAlloc(size, false).
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возвращаемые значения |
|
ПамятьАллок
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
Эта функция вызывается слоем Weave для выделения блока памяти «размера» в байтах.
Подробности | |||||
---|---|---|---|---|---|
Параметры |
| ||||
Возвращаемые значения |
|
ПамятьБесплатно
void MemoryFree( void *p )
Эта функция вызывается слоем Weave для освобождения блока памяти, выделенного функцией MemeoryAlloc().
Подробности | |||
---|---|---|---|
Параметры |
|
ПамятьИнит
WEAVE_ERROR MemoryInit( void *buf, size_t bufSize )
Эта функция вызывается уровнем Weave для инициализации памяти и ресурсов, необходимых для правильной работы распределителя памяти Weave Security Manager.
Эта функция зависит от платформы и в некоторых случаях может быть пустой. Например, эта функция ничего не делает, когда для выделения памяти используются функции malloc() и free() стандартной библиотеки C.
Подробности | |||||||
---|---|---|---|---|---|---|---|
Параметры |
| ||||||
Возвращаемые значения |
|
ПамятьОтключение
void MemoryShutdown( void )
Эта функция вызывается слоем Weave для освобождения всех ресурсов, выделенных функцией MemoryInit() .
Эта функция может быть пустым вызовом, если нет необходимости освобождать ресурсы. Например, это тот случай, когда для распределения памяти используются функции malloc() и free() стандартной библиотеки C.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
Эта функция вызывается для уведомления приложения о завершении трудоемкой криптографической операции.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
Эта функция вызывается для уведомления приложения о начале трудоемкой криптографической операции.