nl:: Weave:: Platform:: Security
Esse namespace inclui todas as interfaces no Weave para o gerenciador de memória Weave Monitor do Weave.
Resumo
As funções nesse 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á alocado/não alocado no momento. |
BlockSetParams_t
|
typedefuint8_t
Esse tipo é usado para codificar informações do conjunto de blocos. |
Variables |
|
---|---|
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
O bloco codificado define parâmetros.
|
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 como NULL.
|
sNetworkBuffersUsed = true
|
bool
Um booleano indicando se (verdadeiro) ou não (falso) os buffers de rede são usados pelo Allocator simples.
|
Functions |
|
---|---|
DecodeBlockSetParams(BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm)
|
void
|
GetSecureRandomData(uint8_t *buf, uint16_t len)
|
Essa 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)
|
Essa função é chamada pela camada Weave para inicializar a fonte de dados aleatória.
|
MemoryAlloc(size_t size)
|
void *
Essa função é chamada pela camada Weave para alocar um bloco de memória de bytes "size".
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
Essa função é chamada pela camada Weave para alocar um bloco de memória de bytes "size".
|
MemoryFree(void *p)
|
void
Essa 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 Weave para inicializar a memória e os recursos necessários para a funcionalidade adequada do alocador de memória do Gerenciador de segurança.
|
MemoryShutdown(void)
|
void
Essa função é chamada pela camada Weave para liberar todos os recursos que foram alocados pela função MemoryInit().
|
OnTimeConsumingCryptoDone(void)
|
void
Essa 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 estiver prestes a ser iniciada.
|
Enumerações
BlockSetParamFields
BlockSetParamFields
Bloquear a localização dos campos de parâmetros definidos em um formato codificado de 8 bits.
Propriedades | |
---|---|
kBlockSetBufferIndexMask
|
Máscara de campo do índice do buffer. |
kBlockSetBufferIndexShift
|
Mudança no campo de índice do buffer. |
kBlockSetCountMask
|
Máscara de campo de contagem. |
kBlockSetCountShift
|
Contagem de mudanças de campo. |
kBlockSetIsLongTermMask
|
Digite a máscara do campo. |
kBlockSetIsLongTermShift
|
Mudança de campo de tipo. |
kBlockSetSizeMask
|
Máscara de campo de tamanho. |
kBlockSetSizeShift
|
Mudança no campo de tamanho. |
kBlockSetSizeValueShift
|
Mudança na decodificação do campo de tamanho (multiplique por 128). |
BlockSetParams
BlockSetParams
Define os parâmetros do conjunto de blocos.
Propriedades | |
---|---|
kBlockSet1BufferIndex
|
O índice do buffer no 1 é 0. |
kBlockSet1Count
|
A contagem de blocos no 1 é 1. |
kBlockSet1Size
|
O tamanho do conjunto 1 é 128 bytes. |
kBlockSet1isLongTerm
|
O tipo #1 do conjunto é de longo prazo. |
kBlockSet2BufferIndex
|
O índice do buffer no 2 é 0. |
kBlockSet2Count
|
A contagem de blocos no 2 é 1. |
kBlockSet2Size
|
O tamanho do conjunto 2 é de 512 bytes. |
kBlockSet2isLongTerm
|
O tipo definido no 2 é longo. |
kBlockSet3BufferIndex
|
O índice do buffer definido no 3 é 0. |
kBlockSet3Count
|
A contagem de blocos no 3 é 1. |
kBlockSet3Size
|
O tamanho do conjunto 3 é de 512 bytes. |
kBlockSet3isLongTerm
|
O tipo definido no 3 é de curto prazo. |
kBlockSet4BufferIndex
|
O índice do buffer 4 é definido como 1. |
kBlockSet4Count
|
A contagem de bloqueio do conjunto no 4 é 2. |
kBlockSet4Size
|
O tamanho do conjunto 4 é de 640 bytes. |
kBlockSet4isLongTerm
|
O tipo definido no 4 é de curto prazo. |
kMaxBlockSize
|
Tamanho máximo do bloco compatível com o Simplecatcator. |
kMinBufferSize
|
Tamanho mínimo do buffer de rede necessário para dar suporte aos casos de uso do Simple Allocator. Esse parâmetro é derivado dos tamanhos de dois blocos de memória (640 + 600) alocados no buffer de rede 1. |
kNetworkBuffer0BlockAllocationMask
|
Essa máscara identifica todos os blocos de memória alocados do buffer de rede 0. |
kNetworkBuffer1BlockAllocationMask
|
Essa máscara identifica todos os blocos de memória alocados do buffer de rede 1. |
kNumberOfBlockSets
|
Número de conjuntos de blocos usados pelo Allocator simples. |
kNumberOfNetworkBuffers
|
Número de buffers de rede usados pelo Simple Allocator. |
kTotalMemorySize
|
Memória total usada pelo Simplecatcator. |
Typedefs
BlockMark_t
uint8_t BlockMark_t
É o tipo usado para marcar qual bloco está alocado/não alocado no momento.
uint8_t - suporta até 8 blocos de memória total uint16_t - suporta até 16 blocos de memória total uint32_t - suporta até 32 blocos de memória totais
BlockSetParams_t.
uint8_t BlockSetParams_t
Esse tipo é usado para codificar informações do conjunto de blocos.
Um conjunto de blocos é um grupo de blocos de memória que têm 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 | Bloquear índice | Número de blocos | Tamanho do bloco |
[7] | (18h55) | [4:3] | [2h0] |
[2h0] | Decodificação |
000 | 0 byte |
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 |
(18h55) | 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 |
Variables
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), }
O bloco codificado define parâmetros.
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 então o buffer pode ser reduzido.
sMemBlocks allocation
BlockMark_t sMemBlocksAllocated = 0
Indica qual bloco está alocado/não alocado.
Inicializado para 0 - significa que todos os blocos de memória e os alocados estão não alocados.
SMemBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
Ponteiros para buffers de memória inicializados como NULL.
Quando buffers de rede são usados, sMemBufs[] aponta para os objetos PackageBuffer. Quando um buffer dedicado é usado, os pontos sMemBufs[0] são armazenados nesse buffer e outros ponteiros sMemBufs[] são ignorados.
sNetworkBuffersUsado
bool sNetworkBuffersUsed = true
Um booleano indicando se (verdadeiro) ou não (falso) os buffers de rede são usados pelo Allocator simples.
Quando falso, é usado um buffer dedicado fornecido com a função MemoryInit().
Functions
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 )
Essa função é chamada pela camada Weave para gerar dados aleatórios.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||
Valores de retorno |
|
InitSecureRandomDataSource
WEAVE_ERROR InitSecureRandomDataSource( nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen )
Essa função é chamada pela camada Weave para inicializar a fonte de dados aleatória.
Essa função é específica da plataforma e pode estar vazia quando nenhuma inicialização de fonte de dados aleatória for necessária.
Detalhes | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||||
Valores de retorno |
|
MemoryAlloc
void * MemoryAlloc( size_t size )
Essa função é chamada pela camada Weave para alocar um bloco de memória de bytes "size".
Essa função é equivalente a MemoryAlloc(size, false).
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
||||
Valores de retorno |
|
MemoryAlloc
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
Essa função é chamada pela camada Weave para alocar um bloco de memória de bytes "size".
Detalhes | |||||
---|---|---|---|---|---|
Parâmetros |
|
||||
Valores de retorno |
|
Sem memória
void MemoryFree( void *p )
Essa 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 Weave para inicializar a memória e os recursos necessários para a funcionalidade adequada do alocador de memória do Gerenciador de segurança.
Essa função é específica da plataforma e pode estar vazia em alguns casos. Por exemplo, essa função não faz nada quando as funções malloc() e free() da Biblioteca C padrão são usadas para alocação de memória.
Detalhes | |||||||
---|---|---|---|---|---|---|---|
Parâmetros |
|
||||||
Valores de retorno |
|
Desligamento de memória
void MemoryShutdown( void )
Essa função é chamada pela camada Weave para liberar todos os recursos que foram alocados pela função MemoryInit().
Essa função poderá ser uma chamada vazia se não for necessário liberar recursos. Por exemplo, esse é o caso quando as funções malloc() e free() da Biblioteca C padrão são usadas para alocação de memória.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
Essa 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 estiver prestes a ser iniciada.