Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Crypto: Plataforma

En este módulo, se incluye la abstracción de la plataforma para Crypto.

Resumen

Enumeraciones

anonymous enum{
  OT_CRYPTO_KEY_USAGE_NONE = 0,
  OT_CRYPTO_KEY_USAGE_EXPORT = 1 << 0,
  OT_CRYPTO_KEY_USAGE_ENCRYPT = 1 << 1,
  OT_CRYPTO_KEY_USAGE_DECRYPT = 1 << 2,
  OT_CRYPTO_KEY_USAGE_SIGN_HASH = 1 << 3
}
enum
En esta enumeración, se definen las marcas de uso de claves.
otCryptoKeyAlgorithm{
  OT_CRYPTO_KEY_ALG_VENDOR,
  OT_CRYPTO_KEY_ALG_AES_ECB,
  OT_CRYPTO_KEY_ALG_HMAC_SHA_256
}
enum
Esta enumeración define los algoritmos clave.
otCryptoKeyStorage{
  OT_CRYPTO_KEY_STORAGE_VOLATILE,
  OT_CRYPTO_KEY_STORAGE_PERSISTENT
}
enum
En esta enumeración se definen los tipos de almacenamiento de claves.
otCryptoKeyType{
  OT_CRYPTO_KEY_TYPE_RAW,
  OT_CRYPTO_KEY_TYPE_AES,
  OT_CRYPTO_KEY_TYPE_HMAC
}
enum
En esta enumeración se definen los tipos de claves.

Typedefs

otCryptoContext typedef
otCryptoKey typedef
struct otCryptoKey
otCryptoKeyRef typedef
uint32_t
Este tipo de datos representa la referencia clave.

Funciones

otPlatCryptoAesEncrypt(otCryptoContext *aContext, const uint8_t *aInput, uint8_t *aOutput)
Encriptar los datos proporcionados
otPlatCryptoAesFree(otCryptoContext *aContext)
Libera el contexto de AES.
otPlatCryptoAesInit(otCryptoContext *aContext)
Inicializa la operación de AES.
otPlatCryptoAesSetKey(otCryptoContext *aContext, const otCryptoKey *aKey)
Configura la clave para la operación AES.
otPlatCryptoDestroyKey(otCryptoKeyRef aKeyRef)
Destruir una clave almacenada en PSA ITS.
otPlatCryptoExportKey(otCryptoKeyRef aKeyRef, uint8_t *aBuffer, size_t aBufferLen, size_t *aKeyLen)
Exportar una clave almacenada en PSA ITS.
otPlatCryptoHasKey(otCryptoKeyRef aKeyRef)
bool
Verifica si la referencia de clave que se pasó tiene asociada una clave en PSA ITS.
otPlatCryptoHkdfDeinit(otCryptoContext *aContext)
Anula la inicialización del contexto de HKDF.
otPlatCryptoHkdfExpand(otCryptoContext *aContext, const uint8_t *aInfo, uint16_t aInfoLength, uint8_t *aOutputKey, uint16_t aOutputKeyLength)
Realiza el paso de expansión de HKDF.
otPlatCryptoHkdfExtract(otCryptoContext *aContext, const uint8_t *aSalt, uint16_t aSaltLength, const otCryptoKey *aInputKey)
Realiza el paso de extracción HKDF.
otPlatCryptoHkdfInit(otCryptoContext *aContext)
Inicializa el contexto de HKDF.
otPlatCryptoHmacSha256Deinit(otCryptoContext *aContext)
Anula la inicialización de la operación HMAC.
otPlatCryptoHmacSha256Finish(otCryptoContext *aContext, uint8_t *aBuf, size_t aBufLength)
Completa la operación HMAC.
otPlatCryptoHmacSha256Init(otCryptoContext *aContext)
Inicializa la operación HMAC.
otPlatCryptoHmacSha256Start(otCryptoContext *aContext, const otCryptoKey *aKey)
Inicia la operación HMAC.
otPlatCryptoHmacSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
Actualiza la operación HMAC con entradas nuevas.
otPlatCryptoImportKey(otCryptoKeyRef *aKeyRef, otCryptoKeyType aKeyType, otCryptoKeyAlgorithm aKeyAlgorithm, int aKeyUsage, otCryptoKeyStorage aKeyPersistence, const uint8_t *aKey, size_t aKeyLen)
Importa una clave a PSA ITS.
otPlatCryptoInit(void)
void
Inicializa el módulo de criptografía.
otPlatCryptoRandomDeinit(void)
void
Anular la inicialización de un generador de números seudoaleatorios criptográficamente seguro (CSPRNG)
otPlatCryptoRandomGet(uint8_t *aBuffer, uint16_t aSize)
Completa un búfer determinado con bytes aleatorios criptográficamente seguros.
otPlatCryptoRandomInit(void)
void
Inicializa un generador de números seudoaleatorios criptográficamente seguro (CSPRNG).
otPlatCryptoSha256Deinit(otCryptoContext *aContext)
Anula la inicialización de la operación SHA-256.
otPlatCryptoSha256Finish(otCryptoContext *aContext, uint8_t *aHash, uint16_t aHashSize)
Finaliza la operación SHA-256.
otPlatCryptoSha256Init(otCryptoContext *aContext)
Inicializa la operación SHA-256.
otPlatCryptoSha256Start(otCryptoContext *aContext)
Inicia la operación SHA-256.
otPlatCryptoSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
Actualiza la operación SHA-256 con una entrada nueva.

Structs

otCryptoContext

Esta estructura almacena el objeto de contexto para las API de la plataforma.

otCryptoKey.

Esta estructura representa el material de clave necesario para las operaciones criptográficas.

Enumeraciones

enumeración anónima

 anonymous enum

En esta enumeración, se definen las marcas de uso de claves.

Propiedades
OT_CRYPTO_KEY_USAGE_DECRYPT

Uso de la clave: AES ECB.

OT_CRYPTO_KEY_USAGE_ENCRYPT

Uso de claves: Encriptación (definida por el proveedor).

OT_CRYPTO_KEY_USAGE_EXPORT

Uso de la clave: Se puede exportar la clave.

OT_CRYPTO_KEY_USAGE_NONE

Uso de claves: El uso de claves está vacío.

OT_CRYPTO_KEY_USAGE_SIGN_HASH

Uso de la clave: HMAC SHA-256.

otCryptoKeyAlgorithm.

 otCryptoKeyAlgorithm

Esta enumeración define los algoritmos clave.

Propiedades
OT_CRYPTO_KEY_ALG_AES_ECB

Algoritmo de clave: AES ECB.

OT_CRYPTO_KEY_ALG_HMAC_SHA_256

Algoritmo de clave: HMAC SHA-256.

OT_CRYPTO_KEY_ALG_VENDOR

Algoritmo clave: definido por el proveedor.

otCryptoKeyStorage

 otCryptoKeyStorage

En esta enumeración se definen los tipos de almacenamiento de claves.

Propiedades
OT_CRYPTO_KEY_STORAGE_PERSISTENT

Persistencia de la clave: La clave es persistente.

OT_CRYPTO_KEY_STORAGE_VOLATILE

Persistencia de la clave: la clave es volátil.

Tipo de clave criptográfica

 otCryptoKeyType

En esta enumeración se definen los tipos de claves.

Propiedades
OT_CRYPTO_KEY_TYPE_AES

Tipo de clave: AES.

OT_CRYPTO_KEY_TYPE_HMAC

Tipo de clave: HMAC

OT_CRYPTO_KEY_TYPE_RAW

Tipo de clave: datos sin procesar.

Typedefs

ocriptCryptoContext

struct otCryptoContext otCryptoContext

otCryptoKey

struct otCryptoKey otCryptoKey

otCryptoKeyRef

uint32_t otCryptoKeyRef

Este tipo de datos representa la referencia clave.

Funciones

otPlatCryptoAesEncrypt

otError otPlatCryptoAesEncrypt(
  otCryptoContext *aContext,
  const uint8_t *aInput,
  uint8_t *aOutput
)

Encriptar los datos proporcionados

Detalles
Parámetros
[in] aContext
Contexto para la operación de AES
[in] aInput
Es el puntero al búfer de entrada.
[in] aOutput
Es el puntero al búfer de salida.
Valores que se muestran
OT_ERROR_NONE
aInput se encriptó correctamente.
OT_ERROR_FAILED
No se pudo encriptar aInput.
OT_ERROR_INVALID_ARGS
aContext, aKey o aOutput eran NULL

otPlatCryptoAesFree

otError otPlatCryptoAesFree(
  otCryptoContext *aContext
)

Libera el contexto de AES.

Detalles
Parámetros
[in] aContext
Contexto para la operación de AES
Valores que se muestran
OT_ERROR_NONE
Se liberó correctamente el contexto de AES.
OT_ERROR_FAILED
No se pudo liberar el contexto de AES.
OT_ERROR_INVALID_ARGS
aContext era NULL

otPlatCryptoAesInit

otError otPlatCryptoAesInit(
  otCryptoContext *aContext
)

Inicializa la operación de AES.

Detalles
Parámetros
[in] aContext
Contexto para la operación de AES
Valores que se muestran
OT_ERROR_NONE
Se inició correctamente la operación AES.
OT_ERROR_FAILED
No se pudo inicializar la operación AES.
OT_ERROR_INVALID_ARGS
aContext era NULL
OT_ERROR_NO_BUFS
No se puede asignar el contexto.

otPlatCryptoAesSetKey

otError otPlatCryptoAesSetKey(
  otCryptoContext *aContext,
  const otCryptoKey *aKey
)

Configura la clave para la operación AES.

Detalles
Parámetros
[in] aContext
Contexto para la operación de AES
[out] aKey
Clave para usar en la operación AES.
Valores que se muestran
OT_ERROR_NONE
Se configuró correctamente la clave para la operación AES.
OT_ERROR_FAILED
No se pudo configurar la clave para la operación AES.
OT_ERROR_INVALID_ARGS
aContext o aKey era NULL

otPlatCryptoDestroyKey

otError otPlatCryptoDestroyKey(
  otCryptoKeyRef aKeyRef
)

Destruir una clave almacenada en PSA ITS.

Detalles
Parámetros
[in] aKeyRef
La referencia de clave que se destruirá
Valores que se muestran
OT_ERROR_NONE
La clave se destruyó correctamente.
OT_ERROR_FAILED
No se pudo destruir la clave.

otPlatCryptoExportKey

otError otPlatCryptoExportKey(
  otCryptoKeyRef aKeyRef,
  uint8_t *aBuffer,
  size_t aBufferLen,
  size_t *aKeyLen
)

Exportar una clave almacenada en PSA ITS.

Detalles
Parámetros
[in] aKeyRef
La referencia de clave que se usará para las operaciones criptográficas.
[out] aBuffer
Es el puntero al búfer en el que se debe exportar la clave.
[in] aBufferLen
Longitud del búfer que se pasa para almacenar la clave exportada.
[out] aKeyLen
Es un puntero para mostrar la longitud de la clave exportada.
Valores que se muestran
OT_ERROR_NONE
aKeyRef se exportó correctamente.
OT_ERROR_FAILED
No se pudo exportar aKeyRef.
OT_ERROR_INVALID_ARGS
aBuffer era NULL

otPlatCryptoHasKey

bool otPlatCryptoHasKey(
  otCryptoKeyRef aKeyRef
)

Verifica si la referencia de clave que se pasó tiene asociada una clave en PSA ITS.

Detalles
Parámetros
[in] aKeyRef
La referencia de clave a comprobar.
Valores que se muestran
TRUE
Hay una clave asociada con aKeyRef.
FALSE
No hay ninguna clave asociada con aKeyRef.

otPlatCryptoHkdfDeinit

otError otPlatCryptoHkdfDeinit(
  otCryptoContext *aContext
)

Anula la inicialización del contexto de HKDF.

Detalles
Parámetros
[in] aContext
Contexto para la operación de HKDF.
Valores que se muestran
OT_ERROR_NONE
Se anuló correctamente la operación de HKDF.
OT_ERROR_FAILED
No se pudo anular la inicialización de la operación HKDF.
OT_ERROR_INVALID_ARGS
aContext era NULL

otPlatCryptoHkdfExpand

otError otPlatCryptoHkdfExpand(
  otCryptoContext *aContext,
  const uint8_t *aInfo,
  uint16_t aInfoLength,
  uint8_t *aOutputKey,
  uint16_t aOutputKeyLength
)

Realiza el paso de expansión de HKDF.

Detalles
Parámetros
[in] aContext
Contexto de la operación para la operación de HKDF
[in] aInfo
Es el puntero a la secuencia de información.
[in] aInfoLength
Longitud de la secuencia de información.
[out] aOutputKey
Es el puntero a la clave de salida.
[in] aOutputKeyLength
Tamaño del búfer de la clave de salida.
Valores que se muestran
OT_ERROR_NONE
La expansión de HKDF se realizó correctamente.
OT_ERROR_FAILED
No se pudo expandir HKDF.
OT_ERROR_INVALID_ARGS
aContext era NULL

otPlatCryptoHkdfExtract

otError otPlatCryptoHkdfExtract(
  otCryptoContext *aContext,
  const uint8_t *aSalt,
  uint16_t aSaltLength,
  const otCryptoKey *aInputKey
)

Realiza el paso de extracción HKDF.

Detalles
Parámetros
[in] aContext
Contexto de la operación para la operación de HKDF
[in] aSalt
Puntero a la sal para HKDF.
[in] aSaltLength
Longitud de la sal.
[in] aInputKey
Es un puntero a la tecla de entrada.
Valores que se muestran
OT_ERROR_NONE
El extracto de HKDF se realizó correctamente.
OT_ERROR_FAILED
No se pudo extraer la HKDF.

otPlatCryptoHkdfInit

otError otPlatCryptoHkdfInit(
  otCryptoContext *aContext
)

Inicializa el contexto de HKDF.

Detalles
Parámetros
[in] aContext
Contexto para la operación de HKDF.
Valores que se muestran
OT_ERROR_NONE
Se inició correctamente la operación AES.
OT_ERROR_FAILED
No se pudo inicializar la operación AES.
OT_ERROR_INVALID_ARGS
aContext era NULL

otPlatCryptoHmacSha256Deinit

otError otPlatCryptoHmacSha256Deinit(
  otCryptoContext *aContext
)

Anula la inicialización de la operación HMAC.

Detalles
Parámetros
[in] aContext
Contexto para el funcionamiento de HMAC
Valores que se muestran
OT_ERROR_NONE
La operación HMAC no se inicializó correctamente.
OT_ERROR_FAILED
No se pudo inicializar la operación HMAC no inicializada.
OT_ERROR_INVALID_ARGS
aContext era NULL

otPlatCryptoHmacSha256Finish

otError otPlatCryptoHmacSha256Finish(
  otCryptoContext *aContext,
  uint8_t *aBuf,
  size_t aBufLength
)

Completa la operación HMAC.

Detalles
Parámetros
[in] aContext
Contexto para el funcionamiento de HMAC
[out] aBuf
Un puntero para el búfer de salida.
[in] aBufLength
La longitud de aBuf en bytes.
Valores que se muestran
OT_ERROR_NONE
La operación HMAC se completó correctamente.
OT_ERROR_FAILED
No se pudo completar la operación de HMAC.
OT_ERROR_INVALID_ARGS
aContext o aBuf era NULL

otPlatCryptoHmacSha256Init

otError otPlatCryptoHmacSha256Init(
  otCryptoContext *aContext
)

Inicializa la operación HMAC.

Detalles
Parámetros
[in] aContext
Contexto para el funcionamiento de HMAC
Valores que se muestran
OT_ERROR_NONE
Se inicializó correctamente la operación HMAC.
OT_ERROR_FAILED
No se pudo inicializar la operación HMAC.
OT_ERROR_INVALID_ARGS
aContext era NULL

otPlatCryptoHmacSha256Start

otError otPlatCryptoHmacSha256Start(
  otCryptoContext *aContext,
  const otCryptoKey *aKey
)

Inicia la operación HMAC.

Detalles
Parámetros
[in] aContext
Contexto para el funcionamiento de HMAC
[in] aKey
El material de claves que se usará para la operación HMAC
Valores que se muestran
OT_ERROR_NONE
La operación HMAC se inició correctamente.
OT_ERROR_FAILED
No se pudo iniciar la operación HMAC.
OT_ERROR_INVALID_ARGS
aContext o aKey era NULL

Actualización otPlCryptoHmacSha256

otError otPlatCryptoHmacSha256Update(
  otCryptoContext *aContext,
  const void *aBuf,
  uint16_t aBufLength
)

Actualiza la operación HMAC con entradas nuevas.

Detalles
Parámetros
[in] aContext
Contexto para el funcionamiento de HMAC
[in] aBuf
Un puntero para el búfer de entrada.
[in] aBufLength
La longitud de aBuf en bytes.
Valores que se muestran
OT_ERROR_NONE
Se actualizó correctamente HMAC con la nueva operación de entrada.
OT_ERROR_FAILED
No se pudo actualizar la operación HMAC.
OT_ERROR_INVALID_ARGS
aContext o aBuf era NULL

otPlatCryptoImportKey

otError otPlatCryptoImportKey(
  otCryptoKeyRef *aKeyRef,
  otCryptoKeyType aKeyType,
  otCryptoKeyAlgorithm aKeyAlgorithm,
  int aKeyUsage,
  otCryptoKeyStorage aKeyPersistence,
  const uint8_t *aKey,
  size_t aKeyLen
)

Importa una clave a PSA ITS.

Nota: Si se pasa OT_CRYPTO_KEY_STORAGE_PERSISTENT para aKeyPersistence, se ingresa aKeyRef, y la plataforma debe usar la aKeyRef proporcionada, y NO DEBE cambiarla. Si se pasa OT_CRYPTO_KEY_STORAGE_VOLATILE por aKeyPersistence, se muestra aKeyRef, el valor inicial no importa y la API de la plataforma DEBE actualizarlo para mostrar la nueva referencia de clave.

Detalles
Parámetros
[in,out] aKeyRef
Es el puntero a la referencia clave que se usará para las operaciones criptográficas.
[in] aKeyType
Codificación del tipo de clave.
[in] aKeyAlgorithm
Codificación del algoritmo de claves para la clave.
[in] aKeyUsage
Codificación del uso de la clave (combinaciones de OT_CRYPTO_KEY_USAGE_*).
[in] aKeyPersistence
Persistencia de la clave
[in] aKey
Clave real que se importará.
[in] aKeyLen
Longitud de la clave que se importará.
Valores que se muestran
OT_ERROR_NONE
La clave se importó correctamente.
OT_ERROR_FAILED
No se pudo importar la clave.
OT_ERROR_INVALID_ARGS
aKey se configuró como NULL.

El núcleo de OT solo usa esta API cuando OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE está habilitado.

otPlCryptoCrypto

void otPlatCryptoInit(
  void
)

Inicializa el módulo de criptografía.

otPlatCryptoRandomDeinit

void otPlatCryptoRandomDeinit(
  void
)

Anular la inicialización de un generador de números seudoaleatorios criptográficamente seguro (CSPRNG)

otPlatCryptoRandomGet

otError otPlatCryptoRandomGet(
  uint8_t *aBuffer,
  uint16_t aSize
)

Completa un búfer determinado con bytes aleatorios criptográficamente seguros.

Detalles
Parámetros
[out] aBuffer
Un puntero para un búfer que se llenará con los bytes aleatorios.
[in] aSize
Tamaño del búfer (cantidad de bytes que se llenarán)
Valores que se muestran
OT_ERROR_NONE
Se completó correctamente el búfer con valores aleatorios.
OT_ERROR_FAILED
No se pudo realizar la operación.

otPlatCryptoRandomInit

void otPlatCryptoRandomInit(
  void
)

Inicializa un generador de números seudoaleatorios criptográficamente seguro (CSPRNG).

otPlatCryptoSha256Deinit

otError otPlatCryptoSha256Deinit(
  otCryptoContext *aContext
)

Anula la inicialización de la operación SHA-256.

Detalles
Parámetros
[in] aContext
Contexto para la operación SHA-256.
Valores que se muestran
OT_ERROR_NONE
Se anuló correctamente la operación SHA-256.
OT_ERROR_FAILED
No se pudo anular la inicialización de la operación SHA-256.
OT_ERROR_INVALID_ARGS
aContext era NULL

otPlatCryptoSha256Finish

otError otPlatCryptoSha256Finish(
  otCryptoContext *aContext,
  uint8_t *aHash,
  uint16_t aHashSize
)

Finaliza la operación SHA-256.

Detalles
Parámetros
[in] aContext
Contexto para la operación SHA-256.
[in] aHash
Un puntero para el búfer de salida, en el que se debe almacenar el hash.
[in] aHashSize
La longitud de aHash en bytes.
Valores que se muestran
OT_ERROR_NONE
Se completó correctamente la operación SHA-256.
OT_ERROR_FAILED
No se pudo completar la operación SHA-256.
OT_ERROR_INVALID_ARGS
aContext o aHash era NULL

otPlatCryptoSha256Init

otError otPlatCryptoSha256Init(
  otCryptoContext *aContext
)

Inicializa la operación SHA-256.

Detalles
Parámetros
[in] aContext
Contexto para la operación SHA-256.
Valores que se muestran
OT_ERROR_NONE
Se inicializó correctamente la operación SHA-256.
OT_ERROR_FAILED
No se pudo inicializar la operación SHA-256.
OT_ERROR_INVALID_ARGS
aContext era NULL

otPlatCryptoSha256Start

otError otPlatCryptoSha256Start(
  otCryptoContext *aContext
)

Inicia la operación SHA-256.

Detalles
Parámetros
[in] aContext
Contexto para la operación SHA-256.
Valores que se muestran
OT_ERROR_NONE
La operación SHA-256 se inició correctamente.
OT_ERROR_FAILED
No se pudo iniciar la operación SHA-256.
OT_ERROR_INVALID_ARGS
aContext era NULL

Actualización otPlatCryptoSha256

otError otPlatCryptoSha256Update(
  otCryptoContext *aContext,
  const void *aBuf,
  uint16_t aBufLength
)

Actualiza la operación SHA-256 con una entrada nueva.

Detalles
Parámetros
[in] aContext
Contexto para la operación SHA-256.
[in] aBuf
Un puntero para el búfer de entrada.
[in] aBufLength
La longitud de aBuf en bytes.
Valores que se muestran
OT_ERROR_NONE
Se actualizó correctamente el algoritmo SHA-256 con una operación de entrada nueva.
OT_ERROR_FAILED
No se pudo actualizar la operación SHA-256.
OT_ERROR_INVALID_ARGS
aContext o aBuf era NULL

Recursos

Los temas de referencia de la API de OpenThread se originan en el código fuente, disponible en GitHub. Para obtener más información o colaborar con nuestra documentación, consulta Recursos.