nl:: Weave:: Platform:: Security
Este espacio de nombres incluye todas las interfaces dentro de Weave para el administrador de memoria del supervisor de seguridad de Weave.
Resumen
Las plataformas que usan Weave implementarán las funciones de este espacio de nombres, según las necesidades o restricciones del entorno particular.
Typedefs |
|
---|---|
BlockMark_t
|
typedefuint8_t
Es el tipo que se usa para marcar qué bloque está asignado o no asignado en este momento. |
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 está asignado o no asignado.
|
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
|
void *
Punteros a búferes de memoria inicializados en NULL.
|
sNetworkBuffersUsed = true
|
bool
Es un valor booleano que indica si (verdadero) o no (falso) los búferes de red se usan en el Asignador simple.
|
remotas |
|
---|---|
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 una fuente de datos aleatorios.
|
MemoryAlloc(size_t size)
|
void *
La capa de Weave llama a esta función para asignar un bloque de memoria de bytes de “tamaño”.
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
La capa de Weave llama a esta función para asignar un bloque de memoria de bytes de “tamaño”.
|
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 para inicializar la memoria y los recursos necesarios para el correcto funcionamiento 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 asignó la función MemoryInit().
|
OnTimeConsumingCryptoDone(void)
|
void
Esta función se llama para notificar a la aplicación cuando finaliza una operación criptográfica que requiere mucho tiempo.
|
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á por comenzar.
|
Enumeraciones
BlockSetParamFields
BlockSetParamFields
Ubicación de los campos del parámetro del conjunto de bloques con codificación de 8 bits.
Propiedades | |
---|---|
kBlockSetBufferIndexMask
|
Máscara de campo de índice del búfer. |
kBlockSetBufferIndexShift
|
Cambio del campo de índice del búfer. |
kBlockSetCountMask
|
Máscara de campo Count. |
kBlockSetCountShift
|
Recuento de cambios de campo |
kBlockSetIsLongTermMask
|
Máscara de campo Type. |
kBlockSetIsLongTermShift
|
Cambio en el campo de tipo. |
kBlockSetSizeMask
|
Máscara de campo de tamaño. |
kBlockSetSizeShift
|
Cambio en el campo de tamaño. |
kBlockSetSizeValueShift
|
Cambio en la decodificación del campo de tamaño (multiplicar por 128) |
BlockSetParams
BlockSetParams
Define los parámetros del conjunto de bloques.
Propiedades | |
---|---|
kBlockSet1BufferIndex
|
El índice del búfer del conjunto n.o 1 es 0. |
kBlockSet1Count
|
La cantidad de bloques 1 es 1. |
kBlockSet1Size
|
El tamaño del conjunto n.o 1 es de 128 bytes. |
kBlockSet1isLongTerm
|
El tipo del conjunto 1 es a largo plazo. |
kBlockSet2BufferIndex
|
El índice del búfer del conjunto n.o 2 es 0. |
kBlockSet2Count
|
El número de bloques 2 es 1. |
kBlockSet2Size
|
El tamaño del conjunto n.o 2 es de 512 bytes. |
kBlockSet2isLongTerm
|
El tipo del conjunto 2 es a largo plazo. |
kBlockSet3BufferIndex
|
El índice del búfer del conjunto n.o 3 es 0. |
kBlockSet3Count
|
El número de bloques 3 es 1. |
kBlockSet3Size
|
El tamaño del conjunto n.o 3 es de 512 bytes. |
kBlockSet3isLongTerm
|
El tipo del conjunto 3 es de corto plazo. |
kBlockSet4BufferIndex
|
El índice del búfer del conjunto n.o 4 es 1. |
kBlockSet4Count
|
El número de bloques 4 es 2. |
kBlockSet4Size
|
El tamaño del conjunto 4 es de 640 bytes. |
kBlockSet4isLongTerm
|
El tipo del conjunto 4 es de corto plazo. |
kMaxBlockSize
|
Tamaño de bloque máximo admitido por el asignador simple. |
kMinBufferSize
|
El tamaño mínimo del búfer de red se requiere para admitir los casos de uso del Asignador simple. Este parámetro se deriva de los tamaños de dos bloques 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 que utiliza el asignador simple. |
kNumberOfNetworkBuffers
|
Cantidad de búferes de red que utiliza el Asignador simple. |
kTotalMemorySize
|
Memoria total utilizada por el asignador simple. |
Typedefs
BlockMark_t
uint8_t BlockMark_t
Es el tipo que se usa para marcar qué bloque está asignado o no asignado en este momento.
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
BlockSetParams_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 bloques de memoria que tienen las mismas propiedades (tamaño, tipo y pertenencia al mismo búfer). En el siguiente diagrama, se presenta cómo se codifica la información del conjunto de bloques en un formato de 8 bits:
Es a largo plazo | Índice de bloque | Cantidad de bloques | Tamaño del 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 no 0 |
... | - |
11 | Búfer de red no 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
sBufferAllocationMask
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 sin asignar y, luego, se puede liberar el búfer.
sMemBlocksAllocated
BlockMark_t sMemBlocksAllocated = 0
Indica qué bloque está asignado o no asignado.
Inicializado en 0 significa que todos los bloques de memoria y sin asignar
sMemBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
Punteros a búferes de memoria inicializados en NULL.
Cuando se usan búferes de red, sMemBufs[] apunta a los objetos PacketBuffer. Cuando se usa un búfer dedicado, sMemBufs[0] apunta a ese búfer y otros punteros de sMemBufs[].
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
Es un valor booleano que indica si (verdadero) o no (falso) los búferes de red se usan en el Asignador simple.
Cuando es falso, se usa un búfer dedicado proporcionado con la función MemoryInit().
remotas
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 una fuente de datos aleatorios.
Esta función es específica de la plataforma y puede estar vacía cuando no se requiere 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 de “tamaño”.
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 de “tamaño”.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores que se muestran |
|
MemoryFree
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 para inicializar la memoria y los recursos necesarios para el correcto funcionamiento del asignador de memoria del administrador de seguridad de Weave.
Esta función es específica de la plataforma y puede estar vacía en ciertos casos. Por ejemplo, esta función no realiza ninguna acción cuando se usan las funciones malloc() y free() de la biblioteca C estándar para la asignación de memoria.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores que se muestran |
|
MemoryShutdown
void MemoryShutdown( void )
La capa de Weave llama a esta función para liberar todos los recursos que asignó la función MemoryInit().
Esta función puede ser una llamada vacía si no es necesario liberar recursos. Por ejemplo, este es el caso cuando se usan las funciones malloc() y free() de la biblioteca C estándar para la asignación de memoria.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
Esta función se llama para notificar a la aplicación cuando finaliza una operación criptográfica que requiere mucho tiempo.
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á por comenzar.