Criptografía: 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,
  OT_CRYPTO_KEY_USAGE_VERIFY_HASH = 1 << 4
}
enum
Define 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,
  OT_CRYPTO_KEY_ALG_ECDSA
}
enum
Define los algoritmos clave.
otCryptoKeyStorage{
  OT_CRYPTO_KEY_STORAGE_VOLATILE,
  OT_CRYPTO_KEY_STORAGE_PERSISTENT
}
enum
Define los tipos de almacenamiento de claves.
otCryptoKeyType{
  OT_CRYPTO_KEY_TYPE_RAW,
  OT_CRYPTO_KEY_TYPE_AES,
  OT_CRYPTO_KEY_TYPE_HMAC,
  OT_CRYPTO_KEY_TYPE_ECDSA
}
enum
Define los tipos de claves.

Typedefs

otCryptoContext typedef
otCryptoKey typedef
struct otCryptoKey
otCryptoKeyRef typedef
uint32_t
Este tipo de datos representa la referencia clave.
otPlatCryptoEcdsaKeyPair typedef
otPlatCryptoEcdsaPublicKey typedef
otPlatCryptoEcdsaSignature typedef
otPlatCryptoSha256Hash typedef
Representa un hash SHA-256.

Variables

OT_TOOL_PACKED_END

remotas

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 AES.
otPlatCryptoAesSetKey(otCryptoContext *aContext, const otCryptoKey *aKey)
Establece la clave para la operación AES.
otPlatCryptoDestroyKey(otCryptoKeyRef aKeyRef)
Destruye una clave almacenada en PSA ITS.
otPlatCryptoEcdsaExportPublicKey(otCryptoKeyRef aKeyRef, otPlatCryptoEcdsaPublicKey *aPublicKey)
Obtén la clave pública asociada de la referencia de clave pasada.
otPlatCryptoEcdsaGenerateAndImportKey(otCryptoKeyRef aKeyRef)
Genera e importa un nuevo par de claves ECDSA cuando se pasa la referencia.
otPlatCryptoEcdsaGenerateKey(otPlatCryptoEcdsaKeyPair *aKeyPair)
Generar y propagar el búfer de salida con un nuevo par de claves ECDSA
otPlatCryptoEcdsaGetPublicKey(const otPlatCryptoEcdsaKeyPair *aKeyPair, otPlatCryptoEcdsaPublicKey *aPublicKey)
Obtén la clave pública asociada del contexto de entrada.
otPlatCryptoEcdsaSign(const otPlatCryptoEcdsaKeyPair *aKeyPair, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
Calcula la firma ECDSA de un mensaje con hash mediante la clave privada del contexto de entrada.
otPlatCryptoEcdsaSignUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
Calcula la firma ECDSA de un mensaje con hash mediante la referencia de clave pasada.
otPlatCryptoEcdsaVerify(const otPlatCryptoEcdsaPublicKey *aPublicKey, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
Usa la clave del contexto de entrada para verificar la firma ECDSA de un mensaje con hash.
otPlatCryptoEcdsaVerifyUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
Usa la referencia de clave para verificar la firma ECDSA de un mensaje con hash.
otPlatCryptoExportKey(otCryptoKeyRef aKeyRef, uint8_t *aBuffer, size_t aBufferLen, size_t *aKeyLen)
Exporta una clave almacenada en PSA ITS.
otPlatCryptoHasKey(otCryptoKeyRef aKeyRef)
bool
Comprueba si la referencia de clave aprobada tiene una clave asociada en el ITS de PSA.
otPlatCryptoHkdfDeinit(otCryptoContext *aContext)
No inicializa el contexto del 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 de HKDF.
otPlatCryptoHkdfInit(otCryptoContext *aContext)
Inicializa el contexto de HKDF.
otPlatCryptoHmacSha256Deinit(otCryptoContext *aContext)
No inicializa la operación HMAC.
otPlatCryptoHmacSha256Finish(otCryptoContext *aContext, uint8_t *aBuf, size_t aBufLength)
Completa la operación de 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 una entrada nueva.
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 Crypto.
otPlatCryptoPbkdf2GenerateKey(const uint8_t *aPassword, uint16_t aPasswordLen, const uint8_t *aSalt, uint16_t aSaltLen, uint32_t aIterationCounter, uint16_t aKeyLen, uint8_t *aKey)
Realiza PKCS#5 PBKDF2 con CMAC (AES-CMAC-PRF-128).
otPlatCryptoRandomDeinit(void)
void
Anula la inicialización del generador de números seudoaleatorio con seguridad criptográfica (CSPRNG).
otPlatCryptoRandomGet(uint8_t *aBuffer, uint16_t aSize)
Completa un búfer determinado con bytes aleatorios seguros a nivel criptográfico.
otPlatCryptoRandomInit(void)
void
Inicializa el generador de números pseudoaleatorios (CSPRNG) con seguridad criptográfica.
otPlatCryptoSha256Deinit(otCryptoContext *aContext)
No inicializa 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

Almacena el objeto de contexto para las APIs de la plataforma.

otCryptoKey

Representa el material de clave requerido para las operaciones criptográficas.

otPlatCryptoEcdsaKeyPair

Representa un par de claves ECDSA (claves públicas y privadas).

otPlatCryptoEcdsaPublicKey

Representa una clave pública ECDSA.

otPlatCryptoEcdsaSignature

Representa una firma ECDSA.

otPlatCryptoSha256Hash

Representa un hash SHA-256.

Enumeraciones

enumeración anónima

 anonymous enum

Define las marcas de uso de claves.

Propiedades
OT_CRYPTO_KEY_USAGE_DECRYPT

Uso de claves: 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 la clave: El uso de la clave está vacío.

OT_CRYPTO_KEY_USAGE_SIGN_HASH

Uso de la clave: Hash del signo.

OT_CRYPTO_KEY_USAGE_VERIFY_HASH

Uso de claves: verificar el hash.

otCryptoKeyAlgorithm

 otCryptoKeyAlgorithm

Define los algoritmos clave.

Propiedades
OT_CRYPTO_KEY_ALG_AES_ECB

Algoritmo clave: AES ECB.

OT_CRYPTO_KEY_ALG_ECDSA

Algoritmo clave: ECDSA.

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

Define 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.

otCryptoKeyType

 otCryptoKeyType

Define los tipos de claves.

Propiedades
OT_CRYPTO_KEY_TYPE_AES

Tipo de clave: AES.

OT_CRYPTO_KEY_TYPE_ECDSA

Tipo de clave: ECDSA

OT_CRYPTO_KEY_TYPE_HMAC

Tipo de clave: HMAC

OT_CRYPTO_KEY_TYPE_RAW

Tipo de clave: Datos sin procesar.

Typedefs

otCryptoContext

struct otCryptoContext otCryptoContext

otCryptoKey

struct otCryptoKey otCryptoKey

otCryptoKeyRef

uint32_t otCryptoKeyRef

Este tipo de datos representa la referencia clave.

otPlatCryptoEcdsaKeyPair

struct otPlatCryptoEcdsaKeyPair otPlatCryptoEcdsaKeyPair

otPlatCryptoEcdsaPublicKey

struct otPlatCryptoEcdsaPublicKey otPlatCryptoEcdsaPublicKey

otPlatCryptoEcdsaSignature

struct otPlatCryptoEcdsaSignature otPlatCryptoEcdsaSignature

otPlatCryptoSha256Hash

struct otPlatCryptoSha256Hash otPlatCryptoSha256Hash

Representa un hash SHA-256.

Variables

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otPlatCryptoSha256Hash OT_TOOL_PACKED_END

remotas

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 AES.
[in] aInput
Es el puntero al búfer de entrada.
[in] aOutput
Puntero al búfer de salida.
Valores que se muestran
OT_ERROR_NONE
Se encriptó correctamente aInput.
OT_ERROR_FAILED
No se pudo encriptar aInput.
OT_ERROR_INVALID_ARGS
aContext, aKey o aOutput eran NULOS

otPlatCryptoAesFree

otError otPlatCryptoAesFree(
  otCryptoContext *aContext
)

Libera el contexto de AES.

Detalles
Parámetros
[in] aContext
Contexto para la operación 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
El valor de aContext era NULL

otPlatCryptoAesInit

otError otPlatCryptoAesInit(
  otCryptoContext *aContext
)

Inicializa la operación AES.

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

otPlatCryptoAesSetKey

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

Establece la clave para la operación AES.

Detalles
Parámetros
[in] aContext
Contexto para la operación 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 establecer la clave para la operación AES.
OT_ERROR_INVALID_ARGS
aContext o aKey era NULL

otPlatCryptoDestroyKey

otError otPlatCryptoDestroyKey(
  otCryptoKeyRef aKeyRef
)

Destruye una clave almacenada en PSA ITS.

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

otPlatCryptoEcdsaExportPublicKey

otError otPlatCryptoEcdsaExportPublicKey(
  otCryptoKeyRef aKeyRef,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

Obtén la clave pública asociada de la referencia de clave pasada.

La clave pública se almacena de manera diferente según la biblioteca de backend criptográfica que se use (OPENTHREAD_CONFIG_CRYPTO_LIB).

Esta API debe asegurarse de mostrar la clave pública como una representación de secuencia de bytes de un punto de curva sin comprimir (RFC 6605 - sec 4)

Detalles
Parámetros
[in] aKeyRef
Referencia de la clave a la ranura en la que se almacena el par de claves.
[out] aPublicKey
Un puntero a una estructura de clave pública ECDSA para almacenar la clave pública
Valores que se muestran
OT_ERROR_NONE
La clave pública se recuperó correctamente y se actualizó aBuffer.
OT_ERROR_PARSE
No se pudo analizar el formato DER del par de claves (formato no válido).
OT_ERROR_INVALID_ARGS
El valor de aContext es NULL.

otPlatCryptoEcdsaGenerateAndImportKey

otError otPlatCryptoEcdsaGenerateAndImportKey(
  otCryptoKeyRef aKeyRef
)

Genera e importa un nuevo par de claves ECDSA cuando se pasa la referencia.

Detalles
Parámetros
[in] aKeyRef
Referencia de la clave a la ranura en la que se almacena el par de claves.
Valores que se muestran
OT_ERROR_NONE
Se generó correctamente un nuevo par de claves.
OT_ERROR_NO_BUFS
No se pudo asignar el búfer para la generación de la clave.
OT_ERROR_NOT_CAPABLE
Función no compatible.
OT_ERROR_FAILED
No se pudo generar el par de claves.

otPlatCryptoEcdsaGenerateKey

otError otPlatCryptoEcdsaGenerateKey(
  otPlatCryptoEcdsaKeyPair *aKeyPair
)

Generar y propagar el búfer de salida con un nuevo par de claves ECDSA

Detalles
Parámetros
[out] aKeyPair
Un puntero a una estructura de par de claves ECDSA para almacenar el par de claves generado
Valores que se muestran
OT_ERROR_NONE
Se generó correctamente un nuevo par de claves.
OT_ERROR_NO_BUFS
No se pudo asignar el búfer para la generación de la clave.
OT_ERROR_NOT_CAPABLE
Función no compatible.
OT_ERROR_FAILED
No se pudo generar el par de claves.

otPlatCryptoEcdsaGetPublicKey

otError otPlatCryptoEcdsaGetPublicKey(
  const otPlatCryptoEcdsaKeyPair *aKeyPair,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

Obtén la clave pública asociada del contexto de entrada.

Detalles
Parámetros
[in] aKeyPair
Un puntero a una estructura de par de claves ECDSA en la que se almacena el par de claves.
[out] aPublicKey
Un puntero a una estructura de clave pública ECDSA para almacenar la clave pública
Valores que se muestran
OT_ERROR_NONE
La clave pública se recuperó correctamente y se actualizó aBuffer.
OT_ERROR_PARSE
No se pudo analizar el formato DER del par de claves (formato no válido).
OT_ERROR_INVALID_ARGS
El valor de aContext es NULL.

otPlatCryptoEcdsaSign

otError otPlatCryptoEcdsaSign(
  const otPlatCryptoEcdsaKeyPair *aKeyPair,
  const otPlatCryptoSha256Hash *aHash,
  otPlatCryptoEcdsaSignature *aSignature
)

Calcula la firma ECDSA de un mensaje con hash mediante la clave privada del contexto de entrada.

Usa el procedimiento de generación de firma digital determinista de RFC 6979.

Detalles
Parámetros
[in] aKeyPair
Un puntero a una estructura de par de claves ECDSA en la que se almacena el par de claves.
[in] aHash
Un puntero a una estructura de hash SHA-256 en la que se almacena el valor de hash para el cálculo de la firma.
[out] aSignature
Un puntero a una estructura de firma ECDSA para generar la firma calculada.
Valores que se muestran
OT_ERROR_NONE
La firma se calculó correctamente; se actualizó aSignature.
OT_ERROR_PARSE
No se pudo analizar el formato DER del par de claves (formato no válido).
OT_ERROR_NO_BUFS
No se pudo asignar el búfer para el cálculo de la firma.
OT_ERROR_INVALID_ARGS
El valor de aContext es NULL.

otPlatCryptoEcdsaSignUsingKeyRef

otError otPlatCryptoEcdsaSignUsingKeyRef(
  otCryptoKeyRef aKeyRef,
  const otPlatCryptoSha256Hash *aHash,
  otPlatCryptoEcdsaSignature *aSignature
)

Calcula la firma ECDSA de un mensaje con hash mediante la referencia de clave pasada.

Usa el procedimiento de generación de firma digital determinista de RFC 6979.

Detalles
Parámetros
[in] aKeyRef
Referencia de la clave a la ranura en la que se almacena el par de claves.
[in] aHash
Un puntero a una estructura de hash SHA-256 en la que se almacena el valor de hash para el cálculo de la firma.
[out] aSignature
Un puntero a una estructura de firma ECDSA para generar la firma calculada.
Valores que se muestran
OT_ERROR_NONE
La firma se calculó correctamente; se actualizó aSignature.
OT_ERROR_PARSE
No se pudo analizar el formato DER del par de claves (formato no válido).
OT_ERROR_NO_BUFS
No se pudo asignar el búfer para el cálculo de la firma.
OT_ERROR_INVALID_ARGS
El valor de aContext es NULL.

otPlatCryptoEcdsaVerify

otError otPlatCryptoEcdsaVerify(
  const otPlatCryptoEcdsaPublicKey *aPublicKey,
  const otPlatCryptoSha256Hash *aHash,
  const otPlatCryptoEcdsaSignature *aSignature
)

Usa la clave del contexto de entrada para verificar la firma ECDSA de un mensaje con hash.

Detalles
Parámetros
[in] aPublicKey
Un puntero a una estructura de clave pública ECDSA en la que se almacena la clave pública para la verificación de firmas.
[in] aHash
Un puntero a una estructura de hash SHA-256 en la que se almacena el valor de hash para la verificación de firmas.
[in] aSignature
Un puntero a una estructura de firma ECDSA en la que se almacena el valor de firma que se verificará.
Valores que se muestran
OT_ERROR_NONE
La firma se verificó correctamente.
OT_ERROR_SECURITY
La firma no es válida.
OT_ERROR_INVALID_ARGS
La clave o el hash no son válidos.
OT_ERROR_NO_BUFS
No se pudo asignar el búfer para la verificación de la firma.

otPlatCryptoEcdsaVerifyUsingKeyRef

otError otPlatCryptoEcdsaVerifyUsingKeyRef(
  otCryptoKeyRef aKeyRef,
  const otPlatCryptoSha256Hash *aHash,
  const otPlatCryptoEcdsaSignature *aSignature
)

Usa la referencia de clave para verificar la firma ECDSA de un mensaje con hash.

Detalles
Parámetros
[in] aKeyRef
Referencia de la clave a la ranura en la que se almacena el par de claves.
[in] aHash
Un puntero a una estructura de hash SHA-256 en la que se almacena el valor de hash para la verificación de firmas.
[in] aSignature
Un puntero a una estructura de firma ECDSA en la que se almacena el valor de firma que se verificará.
Valores que se muestran
OT_ERROR_NONE
La firma se verificó correctamente.
OT_ERROR_SECURITY
La firma no es válida.
OT_ERROR_INVALID_ARGS
La clave o el hash no son válidos.
OT_ERROR_NO_BUFS
No se pudo asignar el búfer para la verificación de la firma.

otPlatCryptoExportKey

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

Exporta una clave almacenada en PSA ITS.

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

otPlatCryptoHasKey

bool otPlatCryptoHasKey(
  otCryptoKeyRef aKeyRef
)

Comprueba si la referencia de clave aprobada tiene una clave asociada en el ITS de PSA.

Detalles
Parámetros
[in] aKeyRef
La referencia clave que se debe 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
)

No inicializa el contexto del HKDF.

Detalles
Parámetros
[in] aContext
Contexto de la operación de HKDF.
Valores que se muestran
OT_ERROR_NONE
Se anuló correctamente la inicialización de HKDF.
OT_ERROR_FAILED
No se pudo anular la inicialización de la operación de HKDF.
OT_ERROR_INVALID_ARGS
El valor de 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 operación para la operación de HKDF.
[in] aInfo
Puntero a la secuencia de información.
[in] aInfoLength
Longitud de la secuencia de información.
[out] aOutputKey
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
Se realizó correctamente la expansión de HKDF.
OT_ERROR_FAILED
No se pudo expandir el HKDF.
OT_ERROR_INVALID_ARGS
El valor de aContext era NULL

otPlatCryptoHkdfExtract

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

Realiza el paso de extracción de HKDF.

Detalles
Parámetros
[in] aContext
Contexto de operación para la operación de HKDF.
[in] aSalt
Puntero sobre la sal para HKDF.
[in] aSaltLength
La longitud de la sal.
[in] aInputKey
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 el HKDF.

otPlatCryptoHkdfInit

otError otPlatCryptoHkdfInit(
  otCryptoContext *aContext
)

Inicializa el contexto de HKDF.

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

otPlatCryptoHmacSha256Deinit

otError otPlatCryptoHmacSha256Deinit(
  otCryptoContext *aContext
)

No inicializa la operación HMAC.

Detalles
Parámetros
[in] aContext
Contexto de la operación HMAC.
Valores que se muestran
OT_ERROR_NONE
La operación de HMAC se anuló correctamente.
OT_ERROR_FAILED
No se pudo inicializar la operación de HMAC.
OT_ERROR_INVALID_ARGS
El valor de aContext era NULL

otPlatCryptoHmacSha256Finish

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

Completa la operación de HMAC.

Detalles
Parámetros
[in] aContext
Contexto de la operación 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
Se completó correctamente la operación de HMAC.
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 de la operación HMAC.
Valores que se muestran
OT_ERROR_NONE
Se inicializó correctamente la operación de HMAC.
OT_ERROR_FAILED
No se pudo inicializar la operación de HMAC.
OT_ERROR_INVALID_ARGS
El valor de aContext era NULL

otPlatCryptoHmacSha256Start

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

Inicia la operación HMAC.

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

otPlatCryptoHmacSha256Update

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

Actualiza la operación HMAC con una entrada nueva.

Detalles
Parámetros
[in] aContext
Contexto de la operación 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 una nueva operación de entrada.
OT_ERROR_FAILED
No se pudo actualizar la operación de 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.

Si se pasa OT_CRYPTO_KEY_STORAGE_VOLATILE para aKeyPersistence, se muestra aKeyRef, el valor inicial no importa y la API de la plataforma DEBE actualizarla para mostrar la referencia de clave nueva.

Detalles
Parámetros
[in,out] aKeyRef
Es el puntero a la referencia de la clave que se usará para operaciones criptográficas.
[in] aKeyType
Es la codificación del tipo de clave para la clave.
[in] aKeyAlgorithm
Codificación del algoritmo de la clave para la clave.
[in] aKeyUsage
Es la codificación de uso de la clave para la clave (combinaciones de OT_CRYPTO_KEY_USAGE_*).
[in] aKeyPersistence
Persistencia de clave de esta clave
[in] aKey
Es la 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.

Solo el núcleo de OT usa esta API cuando se habilita OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE.

otPlatCryptoInit

void otPlatCryptoInit(
  void
)

Inicializa el módulo Crypto.

otPlatCryptoPbkdf2GenerateKey

otError otPlatCryptoPbkdf2GenerateKey(
  const uint8_t *aPassword,
  uint16_t aPasswordLen,
  const uint8_t *aSalt,
  uint16_t aSaltLen,
  uint32_t aIterationCounter,
  uint16_t aKeyLen,
  uint8_t *aKey
)

Realiza PKCS#5 PBKDF2 con CMAC (AES-CMAC-PRF-128).

Detalles
Parámetros
[in] aPassword
Contraseña que se usará al generar la clave.
[in] aPasswordLen
Longitud de la contraseña.
[in] aSalt
Sal para usar cuando se genera la clave.
[in] aSaltLen
Longitud de la sal.
[in] aIterationCounter
Recuento de iteraciones.
[in] aKeyLen
Longitud de la clave generada, expresada en bytes.
[out] aKey
Un puntero para la clave generada.
Valores que se muestran
OT_ERROR_NONE
Se generó correctamente un nuevo par de claves.
OT_ERROR_NO_BUFS
No se pudo asignar el búfer para la generación de la clave.
OT_ERROR_NOT_CAPABLE
Función no compatible.
OT_ERROR_FAILED
No se pudo generar la clave.

otPlatCryptoRandomDeinit

void otPlatCryptoRandomDeinit(
  void
)

Anula la inicialización del generador de números seudoaleatorio con seguridad criptográfica (CSPRNG).

otPlatCryptoRandomGet

otError otPlatCryptoRandomGet(
  uint8_t *aBuffer,
  uint16_t aSize
)

Completa un búfer determinado con bytes aleatorios seguros a nivel criptográfico.

Detalles
Parámetros
[out] aBuffer
Un puntero para un búfer que se completará con bytes aleatorios.
[in] aSize
Tamaño del búfer (cantidad de bytes que se completará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 el generador de números pseudoaleatorios (CSPRNG) con seguridad criptográfica.

otPlatCryptoSha256Deinit

otError otPlatCryptoSha256Deinit(
  otCryptoContext *aContext
)

No inicializa la operación SHA-256.

Detalles
Parámetros
[in] aContext
Contexto de la operación SHA-256.
Valores que se muestran
OT_ERROR_NONE
Se anuló correctamente la inicialización de 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
El valor de 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 de la operación SHA-256.
[in] aHash
Un puntero para el búfer de salida, donde 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 de 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
El valor de aContext era NULL

otPlatCryptoSha256Start

otError otPlatCryptoSha256Start(
  otCryptoContext *aContext
)

Inicia la operación SHA-256.

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

otPlatCryptoSha256Update

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 de 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 SHA-256 con una nueva operación de entrada.
OT_ERROR_FAILED
No se pudo actualizar la operación SHA-256.
OT_ERROR_INVALID_ARGS
aContext o aBuf era NULL

Macros

OT_CRYPTO_ECDSA_MAX_DER_SIZE

 OT_CRYPTO_ECDSA_MAX_DER_SIZE 125

Tamaño máximo del búfer (en bytes) para representar el par de claves EDCSA en formato DER.

OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE

 OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE 64

Tamaño del búfer (en bytes) para representar la clave pública de EDCSA.

OT_CRYPTO_ECDSA_SIGNATURE_SIZE

 OT_CRYPTO_ECDSA_SIGNATURE_SIZE 64

Tamaño del búfer (en bytes) para representar la firma de EDCSA.

OT_CRYPTO_PBDKF2_MAX_SALT_SIZE

 OT_CRYPTO_PBDKF2_MAX_SALT_SIZE 30

Longitud máxima de SALT de PBKDF2: prefijo de sal (6) + ayuda de panid extendido (8) + nombre de la red (16)

OT_CRYPTO_SHA256_HASH_SIZE

 OT_CRYPTO_SHA256_HASH_SIZE 32

Longitud del hash SHA256 (en bytes).

Recursos

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