nl :: Tecer:: Plataforma:: Segurança
Este namespace inclui todas as interfaces dentro do Weave para o gerenciador de memória do Weave Security Monitor.
Resumo
As funções neste namespace devem ser implementadas por plataformas que usam o Weave, de acordo com as necessidades / restrições do ambiente específico.
Typedefs | |
---|---|
BlockMark_t | typedefuint8_t O tipo usado para marcar qual bloco está atualmente alocado / não alocado. |
BlockSetParams_t | typedefuint8_t Este tipo é usado para codificar informações do conjunto de blocos. |
Variáveis | |
---|---|
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 Parâmetros de conjuntos de blocos codificados. |
sBufferAllocationMask = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }[kNumberOfNetworkBuffers] | const BlockMark_t Conjunto de máscaras de bloco de buffer. |
sMemBlocksAllocated = 0 | Indica qual bloco está alocado / não alocado. |
sMemBufs = { NULL }[kNumberOfNetworkBuffers] | void * Ponteiros para buffers de memória inicializados com NULL. |
sNetworkBuffersUsed = true | bool Um booleano que indica se (verdadeiro) ou não (falso) os buffers de rede são usados pelo Simple Allocator. |
Funções | |
---|---|
DecodeBlockSetParams ( BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm) | void |
GetSecureRandomData (uint8_t *buf, uint16_t len) | Esta função é chamada pela camada Weave para gerar dados aleatórios. |
InitSecureRandomDataSource ( nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen) | Esta função é chamada pela camada Weave para inicializar a fonte de dados aleatória. |
MemoryAlloc (size_t size) | void * Esta função é chamada pela camada Weave para alocar um bloco de memória de bytes de "tamanho". |
MemoryAlloc (size_t size, bool isLongTermAlloc) | void * Esta função é chamada pela camada Weave para alocar um bloco de memória de bytes de "tamanho". |
MemoryFree (void *p) | void Esta função é chamada pela camada Weave para liberar um bloco de memória alocado pela função MemeoryAlloc (). |
MemoryInit (void *buf, size_t bufSize) | Essa função é chamada pela camada do Weave para inicializar a memória e os recursos necessários para a funcionalidade adequada do alocador de memória do Weave Security Manager. |
MemoryShutdown (void) | void Esta função é chamada pela camada Weave para liberar todos os recursos que foram alocados pela função MemoryInit () . |
OnTimeConsumingCryptoDone (void) | void Esta função é chamada para notificar o aplicativo quando uma operação criptográfica demorada acaba de ser concluída. |
OnTimeConsumingCryptoStart (void) | void Essa função é chamada para notificar o aplicativo quando uma operação criptográfica demorada está prestes a começar. |
Enumerações
BlockSetParamFields
BlockSetParamFields
Localização dos campos de parâmetros do conjunto de blocos em um formato codificado de 8 bits.
BlockSetParams
BlockSetParams
Define os parâmetros do conjunto de blocos.
Typedefs
BlockMark_t
uint8_t BlockMark_t
O tipo usado para marcar qual bloco está atualmente alocado / não alocado.
uint8_t - suporta até 8 blocos de memória no total uint16_t - suporta até 16 blocos de memória no total uint32_t - suporta até 32 blocos de memória no total
BlockSetParams_t
uint8_t BlockSetParams_t
Este tipo é usado para codificar informações do conjunto de blocos.
Um conjunto de blocos é um grupo de blocos de memória que possuem as mesmas propriedades (tamanho, tipo e pertencem ao mesmo buffer). O diagrama abaixo apresenta como as informações do conjunto de blocos são codificadas em um formato de 8 bits:
É de longo prazo | Índice de Bloco | Número de Blocos | Tamanho do bloco |
[7] | [6: 5] | [4: 3] | [2: 0] |
[2: 0] | Decodificação |
000 | 0 bytes |
001 | 128 bytes |
010 | 256 bytes |
... | - |
111 | 896 bytes |
[4: 3] | Decodificação |
00 | 4 blocos |
01 | 1 bloco |
10 | 2 blocos |
11 | 3 blocos |
[6: 5] | Decodificação |
00 | Buffer de rede # 0 |
... | - |
11 | Buffer de rede # 3 |
[7] | Decodificação |
0 | Blocos de memória de curto prazo |
1 | Blocos de memória de longo prazo |
Variáveis
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), }
Parâmetros de conjuntos de blocos codificados.
sBufferAllocationMask
const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }
Conjunto de máscaras de bloco de buffer.
Identifica se todos os blocos no buffer e não alocados e, em seguida, o buffer pode ser reativado.
sMemBlocksAllocated
BlockMark_t sMemBlocksAllocated = 0
Indica qual bloco está alocado / não alocado.
Inicializado em 0 - significa que todos os blocos de memória e não alocados.
sMemBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
Ponteiros para buffers de memória inicializados com NULL.
Quando buffers de rede são usados, sMemBufs [] aponta para os objetos PacketBuffer. Quando um buffer dedicado é usado, sMemBufs [0] aponta para esse buffer e outros ponteiros sMemBufs [] são ignorados.
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
Um booleano que indica se (verdadeiro) ou não (falso) os buffers de rede são usados pelo Simple Allocator.
Quando false - buffer dedicado fornecido com a função MemoryInit () é usado.
Funções
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 )
Esta função é chamada pela camada Weave para gerar dados aleatórios.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||
Valores Retornados |
|
InitSecureRandomDataSource
WEAVE_ERROR InitSecureRandomDataSource( nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen )
Esta função é chamada pela camada Weave para inicializar a fonte de dados aleatória.
Esta função é específica da plataforma e pode estar vazia quando nenhuma inicialização de fonte de dados aleatória é necessária.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||||
Valores Retornados |
|
MemoryAlloc
void * MemoryAlloc( size_t size )
Esta função é chamada pela camada Weave para alocar um bloco de memória de bytes de "tamanho".
Esta função é equivalente a MemoryAlloc (size, false).
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
| ||||
Valores Retornados |
|
MemoryAlloc
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
Esta função é chamada pela camada Weave para alocar um bloco de memória de bytes de "tamanho".
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
| ||||
Valores Retornados |
|
MemoryFree
void MemoryFree( void *p )
Esta função é chamada pela camada Weave para liberar um bloco de memória alocado pela função MemeoryAlloc ().
Detalhes | |||
---|---|---|---|
Parâmetros |
|
MemoryInit
WEAVE_ERROR MemoryInit( void *buf, size_t bufSize )
Essa função é chamada pela camada do Weave para inicializar a memória e os recursos necessários para a funcionalidade adequada do alocador de memória do Weave Security Manager.
Esta função é específica da plataforma e pode estar vazia em certos casos. Por exemplo, esta função não faz nada quando as funções malloc () e free () da Biblioteca Padrão C são usadas para alocação de memória.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
| ||||||
Valores Retornados |
|
MemoryShutdown
void MemoryShutdown( void )
Esta função é chamada pela camada Weave para liberar todos os recursos que foram alocados pela função MemoryInit () .
Esta função pode ser uma chamada vazia se não houver necessidade de liberar recursos. Por exemplo, este é o caso quando as funções malloc () e free () da Biblioteca Padrão C são usadas para alocação de memória.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
Esta função é chamada para notificar o aplicativo quando uma operação criptográfica demorada acaba de ser concluída.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
Essa função é chamada para notificar o aplicativo quando uma operação criptográfica demorada está prestes a começar.