nl:: Weave:: Plataforma:: Seguridad
Este espacio de nombres incluye todas las interfaces de Weave para el administrador de memoria Weave Monitor.
Resumen
Las funciones de este espacio de nombres se deben implementar en plataformas que usan Weave, según las necesidades o restricciones del entorno específico.
Typedefs |
|
---|---|
BlockMark_t
|
typedefuint8_t
El tipo usado para marcar qué bloque está asignado o no asignado actualmente. |
BlockSetParams_t
|
typedefuint8_t
Este tipo se usa para codificar la información del conjunto de bloques. |
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
Parámetros de conjuntos de bloques codificados.
|
sBufferAllocationMask = {
kNetworkBuffer0BlockAllocationMask,
kNetworkBuffer1BlockAllocationMask,
}[kNumberOfNetworkBuffers]
|
const BlockMark_t
Conjunto de máscaras de bloque de búfer.
|
sMemBlocksAllocated = 0
|
Indica qué bloque se asignó o no está asignado.
|
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
|
void *
Se apuntan los punteros a los búferes de memoria a NULL.
|
sNetworkBuffersUsed = true
|
bool
Un valor booleano que indica si (true) o no (false) los búferes de red se usan en el asignador simple.
|
Functions |
|
---|---|
DecodeBlockSetParams(BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm)
|
void
|
GetSecureRandomData(uint8_t *buf, uint16_t len)
|
La capa de Weave llama a esta función para generar datos aleatorios.
|
InitSecureRandomDataSource(nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen)
|
La capa de Weave llama a esta función para inicializar la fuente de datos aleatoria.
|
MemoryAlloc(size_t size)
|
void *
La capa de Weave llama a esta función para asignar un bloque de memoria de bytes.
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
La capa de Weave llama a esta función para asignar un bloque de memoria de bytes.
|
MemoryFree(void *p)
|
void
La capa de Weave llama a esta función para liberar un bloque de memoria asignado por la función MemeoryAlloc().
|
MemoryInit(void *buf, size_t bufSize)
|
La capa de Weave llama a esta función a fin de inicializar la memoria y los recursos necesarios para un funcionamiento correcto del asignador de memoria del administrador de seguridad de Weave.
|
MemoryShutdown(void)
|
void
La capa de Weave llama a esta función para liberar todos los recursos que la función MemoryInit() asignó.
|
OnTimeConsumingCryptoDone(void)
|
void
Se llama a esta función para notificar a la aplicación cuando una operación criptográfica que consume mucho tiempo acaba de finalizar.
|
OnTimeConsumingCryptoStart(void)
|
void
Se llama a esta función para notificar a la aplicación cuando una operación criptográfica que consume mucho tiempo está a punto de comenzar.
|
Enumeraciones
BlockSetParamFields
BlockSetParamFields
Bloquear la ubicación de los campos de parámetro en un formato de 8 bits codificado.
Properties | |
---|---|
kBlockSetBufferIndexMask
|
Máscara del campo de índice del búfer. |
kBlockSetBufferIndexShift
|
Cambio en el campo de índice del búfer. |
kBlockSetCountMask
|
Máscara de campo de recuento. |
kBlockSetCountShift
|
Contar el cambio de campo. |
kBlockSetIsLongTermMask
|
Máscara de campo de tipo. |
kBlockSetIsLongTermShift
|
Cambiar tipo de campo. |
kBlockSetSizeMask
|
Es la máscara del campo de tamaño. |
kBlockSetSizeShift
|
Cambio en el campo de tamaño. |
kBlockSetSizeValueShift
|
Cambio en la decodificación de los campos de tamaño (se multiplica por 128). |
BlockSetParams
BlockSetParams
Define los parámetros del conjunto de bloques.
Properties | |
---|---|
kBlockSet1BufferIndex
|
Se estableció el índice de búfer n.o 1 en 0. |
kBlockSet1Count
|
El recuento de bloques n.o 1 es 1. |
kBlockSet1Size
|
El tamaño del conjunto n.o 1 es 128 bytes. |
kBlockSet1isLongTerm
|
El tipo n.° 1 establecido es a largo plazo. |
kBlockSet2BufferIndex
|
Se estableció el índice de búfer n.o 2 en 0. |
kBlockSet2Count
|
El recuento de bloques n.o 2 es 1. |
kBlockSet2Size
|
El tamaño del conjunto n.o 2 es 512 bytes. |
kBlockSet2isLongTerm
|
El conjunto n.° 2 es a largo plazo. |
kBlockSet3BufferIndex
|
Se estableció el índice de búfer n.o 3 en 0. |
kBlockSet3Count
|
El conjunto de bloques n.o 3 es 1. |
kBlockSet3Size
|
El tamaño del conjunto n.o 3 es de 512 bytes. |
kBlockSet3isLongTerm
|
El tipo n.o 3 es la opción a corto plazo. |
kBlockSet4BufferIndex
|
Se estableció el índice de búfer n.o 4 en 1. |
kBlockSet4Count
|
El recuento de bloques n.o 4 es 2. |
kBlockSet4Size
|
El tamaño del conjunto n.o 4 es 640 bytes. |
kBlockSet4isLongTerm
|
El tipo n.° 4 se configura a corto plazo. |
kMaxBlockSize
|
Tamaño máximo del bloque admitido por el asignador simple. |
kMinBufferSize
|
Tamaño mínimo del búfer de red necesario para admitir casos de uso del asignador simple. Este parámetro se deriva de dos tamaños de bloque de memoria (640 + 600) asignados en el búfer de red n.o 1. |
kNetworkBuffer0BlockAllocationMask
|
Esta máscara identifica todos los bloques de memoria asignados desde el búfer de red n.o 0. |
kNetworkBuffer1BlockAllocationMask
|
Esta máscara identifica todos los bloques de memoria asignados desde el búfer de red n.o 1. |
kNumberOfBlockSets
|
Cantidad de conjuntos de bloques utilizados por simple asignador. |
kNumberOfNetworkBuffers
|
Cantidad de búferes de red que usa el asignador simple. |
kTotalMemorySize
|
Memoria total usada por el asignador simple. |
Typedefs
BloquearMark_t
uint8_t BlockMark_t
El tipo usado para marcar qué bloque está asignado o no asignado actualmente.
uint8_t: admite hasta 8 bloques de memoria en total uint16_t: admite hasta 16 bloques de memoria en total uint32_t: admite hasta 32 bloques de memoria en total
BloqueSetParams_t
uint8_t BlockSetParams_t
Este tipo se usa para codificar la información del conjunto de bloques.
Un conjunto de bloques es un grupo de fragmentos de memoria que tienen las mismas propiedades (tamaño, tipo y pertenecen al mismo búfer). En el siguiente diagrama, se presenta la forma de bloquear la información del conjunto de bloques en un formato de 8 bits:
Es a largo plazo | Índice de bloqueo | Cantidad de bloques | Tamaño de bloque |
[7] | [6:5] | [4:3] | [2:0] |
[2:0] | Decodificación |
000 | 0 bytes |
001 | 128 bytes |
010 | 256 bytes |
… | - |
111 | 896 bytes |
[4:3] | Decodificación |
00 | 4 bloques |
01 | 1 bloque |
10 | 2 bloques |
11 | 3 bloques |
[6:5] | Decodificación |
00 | Búfer de red núm. 0 |
… | - |
11 | Búfer de red núm. 3 |
[7] | Decodificación |
0 | Bloques de memoria a corto plazo |
1 | Bloques de memoria a largo plazo |
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), }
Parámetros de conjuntos de bloques codificados.
Máscara de asignación
const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }
Conjunto de máscaras de bloque de búfer.
Identifica si todos los bloques del búfer están desasignados y, luego, se puede volver a liberar el búfer.
sMemBlocksAsignado
BlockMark_t sMemBlocksAllocated = 0
Indica qué bloque se asignó o no está asignado.
Inicializado en 0: Significa que todos los bloques de memoria no se asignaron.
mMBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
Se apuntan los punteros a los búferes de memoria a NULL.
Cuando se usan los búferes de red, sMemBufs [] apunta a los objetos PacketBuffer. Cuando se usa el búfer dedicado, sMemBufs[0] apunta a ese búfer y se ignoran otros punteros de sMemBufs[].
SNetworkBuffersus
bool sNetworkBuffersUsed = true
Un valor booleano que indica si (true) o no (false) los búferes de red se usan en el asignador simple.
Cuando es falso, se usa el búfer dedicado que se proporciona con la función 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 )
La capa de Weave llama a esta función para generar datos aleatorios.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores que se muestran |
|
InitSecureRandomDataSource
WEAVE_ERROR InitSecureRandomDataSource( nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen )
La capa de Weave llama a esta función para inicializar la fuente de datos aleatoria.
Esta función es específica de la plataforma y podría estar vacía cuando no se requiera la inicialización de una fuente de datos aleatoria.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores que se muestran |
|
MemoryAlloc
void * MemoryAlloc( size_t size )
La capa de Weave llama a esta función para asignar un bloque de memoria de bytes.
Esta función es equivalente a MemoryAlloc(size, false).
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
MemoryAlloc
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
La capa de Weave llama a esta función para asignar un bloque de memoria de bytes.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
Sin memoria
void MemoryFree( void *p )
La capa de Weave llama a esta función para liberar un bloque de memoria asignado por la función MemeoryAlloc().
Detalles | |||
---|---|---|---|
Parámetros |
|
MemoryInit
WEAVE_ERROR MemoryInit( void *buf, size_t bufSize )
La capa de Weave llama a esta función a fin de inicializar la memoria y los recursos necesarios para un funcionamiento correcto del asignador de memoria del administrador de seguridad de Weave.
Esta función es específica de la plataforma y es posible que esté vacía en algunos casos. Por ejemplo, esta función no realiza ninguna acción cuando las funciones de malloc() y free() de la biblioteca C estándar se usan para la asignación de memoria.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
Bloqueo de memoria
void MemoryShutdown( void )
La capa de Weave llama a esta función para liberar todos los recursos que la función MemoryInit() asignó.
Esta función puede ser una llamada vacía si no es necesario liberar recursos. Por ejemplo, este es el caso cuando las funciones malloc() y free() de la biblioteca C estándar se utilizan para la asignación de memoria.
OnTimeConsumingCryptoDone,
void OnTimeConsumingCryptoDone( void )
Se llama a esta función para notificar a la aplicación cuando una operación criptográfica que consume mucho tiempo acaba de finalizar.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
Se llama a esta función para notificar a la aplicación cuando una operación criptográfica que consume mucho tiempo está a punto de comenzar.