En Google, luchamos por la equidad racial de la comunidad negra. Más información

nl :: Tejido:: Plataforma:: Seguridad

Este espacio de nombres incluye todas las interfaces dentro de la armadura para la armadura de seguridad encargado de la memoria del monitor.

Resumen

Las funciones en este espacio de nombres deben ser implementadas por plataformas que usan Weave, de acuerdo con las necesidades / limitaciones del entorno particular.

Enumeraciones

BlockSetParamFields {
kBlockSetSizeMask = 0x07,
kBlockSetSizeShift = 0,
kBlockSetSizeValueShift = 7,
kBlockSetCountMask = 0x18,
kBlockSetCountShift = 3,
kBlockSetBufferIndexMask = 0x60,
kBlockSetBufferIndexShift = 5,
kBlockSetIsLongTermMask = 0x80,
kBlockSetIsLongTermShift = 7
}
enumeración
Bloquear la ubicación de los campos de parámetros del conjunto en un formato codificado de 8 bits.
BlockSetParams {
kNumberOfNetworkBuffers = 2,
kNumberOfBlockSets = 4,
kNetworkBuffer0BlockAllocationMask = 0x07,
kNetworkBuffer1BlockAllocationMask = 0x18,
kBlockSet1Size = 1,
kBlockSet1Count = 1,
kBlockSet1BufferIndex = 0,
kBlockSet1isLongTerm = 1,
kBlockSet2Size = 4,
kBlockSet2Count = 1,
kBlockSet2BufferIndex = 0,
kBlockSet2isLongTerm = 1,
kBlockSet3Size = 4,
kBlockSet3Count = 1,
kBlockSet3BufferIndex = 0,
kBlockSet3isLongTerm = 0,
kBlockSet4Size = 5,
kBlockSet4Count = 2,
kBlockSet4BufferIndex = 1,
kBlockSet4isLongTerm = 0,
kTotalMemorySize = (kBlockSet1Size * kBlockSet1Count + kBlockSet2Size * kBlockSet2Count + kBlockSet3Size * kBlockSet3Count + kBlockSet4Size * kBlockSet4Count) << kBlockSetSizeValueShift,
kMaxBlockSize = 600,
kMinBufferSize = 1240
}
enumeración
Define los parámetros del conjunto de bloques.

Typedefs

BlockMark_t typedef
uint8_t
El tipo utilizado para marcar qué bloque está actualmente asignado / no asignado.
BlockSetParams_t typedef
uint8_t
Este tipo se utiliza para codificar información de conjuntos 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]
El bloque codificado establece parámetros.
sBufferAllocationMask = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }[kNumberOfNetworkBuffers]
Conjunto de máscaras de bloques tampón.
sMemBlocksAllocated = 0
Indica qué bloque está asignado / no asignado.
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
void *
Punteros a búferes de memoria inicializados en NULL.
sNetworkBuffersUsed = true
bool
Un booleano que indica si (verdadero) o no (falso) los búferes de red son utilizados por Simple Allocator.

Funciones

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 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 Weave llama a esta función para inicializar una fuente de datos aleatoria.
MemoryAlloc (size_t size)
void *
La capa 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 Weave llama a esta función para asignar un bloque de memoria de bytes de "tamaño".
MemoryFree (void *p)
void
La capa Weave llama a esta función para liberar un bloque de memoria asignado por la función MemeoryAlloc ().
MemoryInit (void *buf, size_t bufSize)
Esta función es llamada por la capa de la armadura de la memoria y los recursos necesarios para el correcto funcionamiento de la Urdimbre initialize Seguridad asignador de memoria Manager.
MemoryShutdown (void)
void
Esta función es llamada por la capa de la armadura que libera todos los recursos que fueron asignados por MemoryInit () función.
OnTimeConsumingCryptoDone (void)
void
Esta función se llama para notificar a la aplicación cuando acaba de finalizar una operación criptográfica que consume mucho tiempo.
OnTimeConsumingCryptoStart (void)
void
Esta función se llama para notificar a la aplicación cuando una operación criptográfica que consume mucho tiempo está a punto de comenzar.

Clases

nl :: Armadura :: Plataforma :: Seguridad :: AES128BlockCipher
nl :: Armadura :: Plataforma :: Seguridad :: AES128BlockCipherDec
nl :: Armadura :: Plataforma :: Seguridad :: AES128BlockCipherEnc
nl :: Armadura :: Plataforma :: Seguridad :: AES256BlockCipher
nl :: Armadura :: Plataforma :: Seguridad :: AES256BlockCipherDec
nl :: Armadura :: Plataforma :: Seguridad :: AES256BlockCipherEnc
nl :: Armadura :: Plataforma :: Seguridad :: SHA1
nl :: Armadura :: Plataforma :: Seguridad :: SHA256

Enumeraciones

BlockSetParamFields

 BlockSetParamFields

Bloquear la ubicación de los campos de parámetros en un formato codificado de 8 bits.

Propiedades
kBlockSetBufferIndexMask

Máscara de campo de índice de búfer.

kBlockSetBufferIndexShift

Cambio de campo de índice de búfer.

kBlockSetCountMask

Cuenta la máscara de campo.

kBlockSetCountShift

Cuente el cambio de campo.

kBlockSetIsLongTermMask

Escriba máscara de campo.

kBlockSetIsLongTermShift

Escriba cambio de campo.

kBlockSetSizeMask

Máscara de campo de tamaño.

kBlockSetSizeShift

Cambio de campo de tamaño.

kBlockSetSizeValueShift

Desplazamiento de decodificación del campo de tamaño (multiplicar por 128).

BlockSetParams

 BlockSetParams

Define los parámetros del conjunto de bloques.

Propiedades
kBlockSet1BufferIndex

El índice de búfer del conjunto n. ° 1 es 0.

kBlockSet1Count

El recuento de bloques del conjunto n. ° 1 es 1.

kBlockSet1Size

El tamaño del conjunto n. ° 1 es de 128 bytes.

kBlockSet1isLongTerm

El tipo de conjunto n. ° 1 es a largo plazo.

kBlockSet2BufferIndex

El índice de búfer del conjunto n. ° 2 es 0.

kBlockSet2Count

El recuento de bloques del conjunto n. ° 2 es 1.

kBlockSet2Size

El tamaño del conjunto n. ° 2 es de 512 bytes.

kBlockSet2isLongTerm

El tipo de conjunto n. ° 2 es a largo plazo.

kBlockSet3BufferIndex

El índice de búfer del conjunto n. ° 3 es 0.

kBlockSet3Count

El recuento de bloques del conjunto n. ° 3 es 1.

kBlockSet3Size

El tamaño del conjunto n. ° 3 es de 512 bytes.

kBlockSet3isLongTerm

El tipo de conjunto n. ° 3 es a corto plazo.

kBlockSet4BufferIndex

El índice de búfer del conjunto n. ° 4 es 1.

kBlockSet4Count

El recuento de bloques del conjunto n. ° 4 es 2.

kBlockSet4Size

El tamaño del conjunto n. ° 4 es de 640 bytes.

kBlockSet4isLongTerm

El tipo de conjunto n. ° 4 es a corto plazo.

kMaxBlockSize

Tamaño de bloque máximo admitido por Asignador simple.

kMinBufferSize

Tamaño mínimo de búfer de red requerido para admitir casos de uso de Simple Allocator.

Este parámetro se deriva de los tamaños de dos bloques de memoria (640 + 600) asignados en el búfer de red # 1.

kNetworkBuffer0BlockAllocationMask

Esta máscara identifica todos los bloques de memoria asignados desde el búfer de red # 0.

kNetworkBuffer1BlockAllocationMask

Esta máscara identifica todos los bloques de memoria asignados desde el búfer de red # 1.

kNumberOfBlockSets

Número de conjuntos de bloques utilizados por Asignador simple.

kNumberOfNetworkBuffers

Número de búferes de red que utiliza Simple Allocator.

kTotalMemorySize

Memoria total utilizada por Asignador simple.

Typedefs

BlockMark_t

uint8_t BlockMark_t

El tipo utilizado para marcar qué bloque está actualmente asignado / no asignado.

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 utiliza para codificar información de conjuntos 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). El siguiente diagrama muestra cómo se codifica la información del conjunto de bloques en un formato de 8 bits:

Es a largo plazo Índice de bloque Numero de bloques Tamaño de bloque
[7] [6: 5] [4: 3] [2: 0]
[2: 0] - Tamaño del bloque de memoria en un conjunto. El valor de tamaño se codifica con una granularidad de 128 bytes.
[2: 0] Descodificación
000 0 bytes
001 128 bytes
010 256 bytes
... -
111 896 octetos
[4: 3]: número de bloques en un conjunto.
[4: 3] Descodificación
00 4 cuadras
01 1 cuadra
10 2 cuadras
11 3 cuadras
[6: 5]: índice de búfer de red donde residen los bloques de memoria. Tenga en cuenta que cuando se utiliza un búfer dedicado, todos los bloques de memoria se asignan desde el búfer dedicado y este parámetro de índice se ignora.
[6: 5] Descodificación
00 Búfer de red # 0
... -
11 Búfer de red n. ° 3
[7]: especifica si los bloques son para almacenamiento a corto o largo plazo.
[7] Descodificació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),







}

El bloque codificado establece parámetros.

sBufferAllocationMask

const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = {
                                                   kNetworkBuffer0BlockAllocationMask,
                                                   kNetworkBuffer1BlockAllocationMask,




                                                                                       }

Conjunto de máscaras de bloques tampón.

Identifica si todos los bloques en el búfer no están asignados y luego el búfer se puede liberar.

sMemBlocksAllocated

BlockMark_t sMemBlocksAllocated = 0

Indica qué bloque está asignado / no asignado.

Inicializado a 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 utilizan búferes de red, sMemBufs [] apuntan a los objetos PacketBuffer. Cuando se usa un búfer dedicado, sMemBufs [0] apunta a ese búfer y se ignoran otros punteros sMemBufs [].

sNetworkBuffersUsed

bool sNetworkBuffersUsed = true

Un booleano que indica si (verdadero) o no (falso) los búferes de red son utilizados por Simple Allocator.

Cuando falsa - dedicada tampón proporcionado con MemoryInit () se utiliza la función.

Funciones

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 Weave llama a esta función para generar datos aleatorios.

Detalles
Parámetros
[in] buf
Puntero a un búfer de memoria, donde se deben almacenar los datos aleatorios solicitados.
[in] len
Especifica el tamaño de los datos aleatorios solicitados en bytes.
Valores devueltos
WEAVE_ERROR_DRBG_ENTROPY_SOURCE_FAILED
Si la fuente de entropía no genera la entropía solicitada por el generador de datos aleatorios.
WEAVE_ERROR_RANDOM_DATA_UNAVAILABLE
Si la fuente de datos aleatorios no genera datos aleatorios.
WEAVE_ERROR_INCORRECT_STATE
Si la fuente de datos aleatoria se encuentra en un estado incorrecto.
WEAVE_NO_ERROR
Sobre el éxito.

InitSecureRandomDataSource

WEAVE_ERROR InitSecureRandomDataSource(
  nl::Weave::Crypto::EntropyFunct entropyFunct,
  uint16_t entropyLen,
  const uint8_t *personalizationData,
  uint16_t perDataLen
)

La capa Weave llama a esta función para inicializar una fuente de datos aleatoria.

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
[in] entropyFunct
Puntero a una función que genera entropía al generador de datos aleatorios. Cuando el algoritmo no requiere la entrada de entropía, esta entrada puede ser NULL, que es el caso cuando se utiliza la versión OpenSSL del generador de datos aleatorios.
[in] entropyLen
Especifica el tamaño de la entropía en bytes que debe generar la función de entropía cuando se utiliza.
[in] personalizationData
Puntero a un búfer de memoria que almacena la entrada de datos de personalización. Esta entrada de datos debe ser específica del dispositivo y ayuda a mejorar las propiedades estadísticas de los datos aleatorios.
[in] perDataLen
Especifica el tamaño de los datos de personalización en bytes.
Valores devueltos
WEAVE_ERROR_INVALID_ARGUMENT
Si se pasó un argumento no válido a esta función.
WEAVE_NO_ERROR
Sobre el éxito.

MemoryAlloc

void * MemoryAlloc(
  size_t size
)

La capa Weave llama a esta función para asignar un bloque de memoria de bytes de "tamaño".

Esta función es equivalente a MemoryAlloc (tamaño, falso).

Detalles
Parámetros
[in] size
Especifica el tamaño de memoria solicitado en bytes.
Valores devueltos
Pointer
a un bloque de memoria en caso de éxito.
NULL-pointer
si falla la asignación de memoria.

MemoryAlloc

void * MemoryAlloc(
  size_t size,
  bool isLongTermAlloc
)

La capa Weave llama a esta función para asignar un bloque de memoria de bytes de "tamaño".

Detalles
Parámetros
[in] size
Especifica el tamaño de memoria solicitado en bytes.
[in] isLongTermAlloc
Un booleano que indica si (verdadero) o no (falso) el bloque de memoria solicitado es para uso a largo plazo. Una asignación a largo plazo es la memoria que debe permanecer asignada hasta que se complete la sesión / protocolo de enlace seguro. Los ejemplos de una asignación a largo plazo incluyen bloques asignados para objetos CASE / PASE y sus datos de contexto. Una asignación a corto plazo es una memoria necesaria para realizar una operación específica y puede liberarse inmediatamente después de eso. Esta entrada ayuda a optimizar la utilización de la memoria en un sistema con restricciones de memoria. El uso de este parámetro es arbitrario y depende del implementador de la función. Por ejemplo, este parámetro se ignora cuando se utiliza la biblioteca estándar de C malloc ().
Valores devueltos
Pointer
a un bloque de memoria en caso de éxito.
NULL-pointer
si falla la asignación de memoria.

MemoryFree

void MemoryFree(
  void *p
)

La capa Weave llama a esta función para liberar un bloque de memoria asignado por la función MemeoryAlloc ().

Detalles
Parámetros
[in] p
Puntero a un bloque de memoria que debería liberarse.

MemoryInit

WEAVE_ERROR MemoryInit(
  void *buf,
  size_t bufSize
)

Esta función es llamada por la capa de la armadura de la memoria y los recursos necesarios para el correcto funcionamiento de la Urdimbre initialize Seguridad asignador de memoria Manager.

Esta función es específica de la plataforma y puede estar vacía en ciertos casos. Por ejemplo, esta función no hace nada cuando se utilizan las funciones malloc () y free () de la biblioteca estándar de C para la asignación de memoria.

Detalles
Parámetros
[in] buf
Un puntero a un búfer de memoria dedicada, que debe ser utilizado como un banco de memoria de la armadura de Seguridad de asignación de memoria Manager. Esta entrada es opcional (por defecto es NULL) y no debe usarse si no se usa un búfer de memoria dedicado.
[in] bufSize
Tamaño de un búfer de memoria dedicado. Esta entrada es opcional (el valor predeterminado es 0) y no debe usarse si no se usa un búfer de memoria dedicado. Cuando un buffer de memoria dedicada se usa la función comprueba y genera un error si el tamaño del búfer no es suficientemente grande como para apoyar la armadura de Seguridad casos de uso Manager.
Valores devueltos
WEAVE_ERROR_BUFFER_TOO_SMALL
Si el tamaño del buffer de entrada dedicado no es suficiente para soportar la armadura de Seguridad casos de uso Manager.
WEAVE_NO_ERROR
Sobre el éxito.
other
Un error generado por la función de inicialización de memoria específica de la plataforma.

Memoria Apagado

void MemoryShutdown(
  void
)

Esta función es llamada por la capa de la armadura que libera todos los recursos que fueron asignados por MemoryInit () función.

Esta función puede ser una llamada vacía si no hay necesidad de liberar recursos. Por ejemplo, este es el caso cuando las funciones malloc () y free () de la biblioteca estándar C se utilizan para la asignación de memoria.

OnTimeConsumingCryptoDone

void OnTimeConsumingCryptoDone(
  void
)

Esta función se llama para notificar a la aplicación cuando acaba de finalizar una operación criptográfica que consume mucho tiempo.

OnTimeConsumingCryptoStart

void OnTimeConsumingCryptoStart(
  void
)

Esta función se llama para notificar a la aplicación cuando una operación criptográfica que consume mucho tiempo está a punto de comenzar.