Crypto: Platform
Este módulo incluye la abstracción de plataformas para criptografía.
Resumen
Enumeraciones |
|
---|---|
anonymous enum{
|
Enum En esta enumeración se definen las marcas de uso de claves. |
otCryptoKeyAlgorithm{
|
Enum Esta enumeración define los algoritmos clave. |
otCryptoKeyStorage{
|
Enum En esta enumeración se definen los tipos de almacenamiento de claves. |
otCryptoKeyType{
|
Enum Esta enumeración define los tipos de claves. |
Typedefs |
|
---|---|
otCryptoContext
|
typedefstruct otCryptoContext
|
otCryptoKey
|
typedefstruct otCryptoKey
|
otCryptoKeyRef
|
typedefuint32_t
Este tipo de datos representa la referencia de clave. |
otPlatCryptoEcdsaKeyPair
|
typedefstruct otPlatCryptoEcdsaKeyPair
|
otPlatCryptoEcdsaPublicKey
|
typedefstruct otPlatCryptoEcdsaPublicKey
|
otPlatCryptoEcdsaSignature
|
typedefstruct otPlatCryptoEcdsaSignature
|
otPlatCryptoSha256Hash
|
typedefstruct otPlatCryptoSha256Hash
Esta estructura representa un hash SHA-256. |
Variables |
|
---|---|
OT_TOOL_PACKED_END
|
Funciones |
|
---|---|
otPlatCryptoAesEncrypt(otCryptoContext *aContext, const uint8_t *aInput, uint8_t *aOutput)
|
Encriptar los datos proporcionados
|
otPlatCryptoAesFree(otCryptoContext *aContext)
|
Libera el contexto AES.
|
otPlatCryptoAesInit(otCryptoContext *aContext)
|
Inicializa la operación 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.
|
otPlatCryptoEcdsaGenerateKey(otPlatCryptoEcdsaKeyPair *aKeyPair)
|
Genera y propaga 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 para un mensaje con hash mediante la clave privada del contexto de entrada.
|
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.
|
otPlatCryptoExportKey(otCryptoKeyRef aKeyRef, uint8_t *aBuffer, size_t aBufferLen, size_t *aKeyLen)
|
Exporta una clave almacenada en PSA ITS.
|
otPlatCryptoHasKey(otCryptoKeyRef aKeyRef)
|
bool
Revisa si la referencia de clave aprobada tiene una clave asociada 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 de 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 de 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 ITSA PSA.
|
otPlatCryptoInit(void)
|
void
Inicializa el módulo de 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)
|
void
Ejecuta PKCS#5 PBKDF2 con CMAC (AES-CMAC-PRF-128).
|
otPlatCryptoRandomDeinit(void)
|
void
Inicializa el generador de números seudoaleatorios seguro y criptográficamente seguro (CSPRNG).
|
otPlatCryptoRandomGet(uint8_t *aBuffer, uint16_t aSize)
|
Rellena un búfer determinado con bytes aleatorios criptográficamente seguros.
|
otPlatCryptoRandomInit(void)
|
void
Inicializa el 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 claves requerido para las operaciones criptográficas. |
otPlatCryptoEcdsaKeyPair |
Esta estructura representa un par de claves ECDSA (claves públicas y privadas). |
otPlatCryptoEcdsaPublicKey |
Esta estructura representa una clave pública ECDSA. |
otPlatCryptoEcdsaSignature |
Esta estructura representa una firma de ECDSA. |
otPlatCryptoSha256Hash |
Esta estructura representa un hash SHA-256. |
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 la clave: Encriptación (definida por el proveedor). |
OT_CRYPTO_KEY_USAGE_EXPORT
|
Uso de la clave: La clave se puede exportar. |
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: HMAC SHA-256. |
otCryptoKeyAlgorithm.
otCryptoKeyAlgorithm
Esta enumeración define los algoritmos clave.
Propiedades | |
---|---|
OT_CRYPTO_KEY_ALG_AES_ECB
|
Algoritmo clave: AES ECB. |
OT_CRYPTO_KEY_ALG_HMAC_SHA_256
|
Algoritmo 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 CryptoKey de ot
otCryptoKeyType
Esta enumeración define 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
otCryptoContext
struct otCryptoContext otCryptoContext
otCryptoKey
struct otCryptoKey otCryptoKey
otCryptoKeyRef
uint32_t otCryptoKeyRef
Este tipo de datos representa la referencia de clave.
otPlatCryptoEcdsaKeyPair
struct otPlatCryptoEcdsaKeyPair otPlatCryptoEcdsaKeyPair
oPlACryptoEcdsaPublicKey
struct otPlatCryptoEcdsaPublicKey otPlatCryptoEcdsaPublicKey
oPlPlCryptoCryptoEcdsaSignature
struct otPlatCryptoEcdsaSignature otPlatCryptoEcdsaSignature
otPlatCryptoSha256Hash
struct otPlatCryptoSha256Hash otPlatCryptoSha256Hash
Esta estructura representa un hash SHA-256.
Variables
PO_TOOL_PACKED_END
OT_TOOL_PACKED_BEGIN struct otPlatCryptoSha256Hash OT_TOOL_PACKED_END
Funciones
otPlatCryptoAesEncrypt
otError otPlatCryptoAesEncrypt( otCryptoContext *aContext, const uint8_t *aInput, uint8_t *aOutput )
Encriptar los datos proporcionados
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
otPlatCryptoAesFree
otError otPlatCryptoAesFree( otCryptoContext *aContext )
Libera el contexto AES.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
otPlatCryptoAesInit
otError otPlatCryptoAesInit( otCryptoContext *aContext )
Inicializa la operación AES.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores de retorno |
|
otPlatCryptoAesSetKey
otError otPlatCryptoAesSetKey( otCryptoContext *aContext, const otCryptoKey *aKey )
Configura la clave para la operación AES.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
otPlatCryptoDestroyKey
otError otPlatCryptoDestroyKey( otCryptoKeyRef aKeyRef )
Destruir una clave almacenada en PSA ITS.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores de retorno |
|
otPlatCryptoEcdsaGenerateKey
otError otPlatCryptoEcdsaGenerateKey( otPlatCryptoEcdsaKeyPair *aKeyPair )
Genera y propaga el búfer de salida con un nuevo par de claves ECDSA.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores de retorno |
|
otPlatCryptoEcdsaGetPublicKey;
otError otPlatCryptoEcdsaGetPublicKey( const otPlatCryptoEcdsaKeyPair *aKeyPair, otPlatCryptoEcdsaPublicKey *aPublicKey )
Obtén la clave pública asociada del contexto de entrada.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
otPlatCryptoEcdsaSign
otError otPlatCryptoEcdsaSign( const otPlatCryptoEcdsaKeyPair *aKeyPair, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature )
Calcula la firma ECDSA para un mensaje con hash mediante la clave privada del contexto de entrada.
Este método usa el procedimiento de generación digital de firmas determinista de RFC 6979.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores de retorno |
|
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 |
|
||||||||
Valores de retorno |
|
otPlCryptoCryptoExport
otError otPlatCryptoExportKey( otCryptoKeyRef aKeyRef, uint8_t *aBuffer, size_t aBufferLen, size_t *aKeyLen )
Exporta una clave almacenada en PSA ITS.
Detalles | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||
Valores de retorno |
|
otPlatCryptoHasKey
bool otPlatCryptoHasKey( otCryptoKeyRef aKeyRef )
Revisa si la referencia de clave aprobada tiene una clave asociada en PSA ITS.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores de retorno |
|
otPlatCryptoHkdfDeinit
otError otPlatCryptoHkdfDeinit( otCryptoContext *aContext )
Anula la inicialización del contexto de HKDF.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
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 |
|
||||||||||
Valores de retorno |
|
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 |
|
||||||||
Valores de retorno |
|
otPlatCryptoHkdfInit
otError otPlatCryptoHkdfInit( otCryptoContext *aContext )
Inicializa el contexto de HKDF.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
otPlatCryptoHmacSha256Deinit
otError otPlatCryptoHmacSha256Deinit( otCryptoContext *aContext )
Anula la inicialización de la operación HMAC.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
otPlatCryptoHmacSha256Finish
otError otPlatCryptoHmacSha256Finish( otCryptoContext *aContext, uint8_t *aBuf, size_t aBufLength )
Completa la operación HMAC.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
otPlatCryptoHmacSha256Init
otError otPlatCryptoHmacSha256Init( otCryptoContext *aContext )
Inicializa la operación HMAC.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
otPlatCryptoHmacSha256Inicio
otError otPlatCryptoHmacSha256Start( otCryptoContext *aContext, const otCryptoKey *aKey )
Inicia la operación HMAC.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
Actualización de otPlatCryptoHmacSha256
otError otPlatCryptoHmacSha256Update( otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength )
Actualiza la operación de HMAC con entradas nuevas.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
otPlatCryptoImportKey
otError otPlatCryptoImportKey( otCryptoKeyRef *aKeyRef, otCryptoKeyType aKeyType, otCryptoKeyAlgorithm aKeyAlgorithm, int aKeyUsage, otCryptoKeyStorage aKeyPersistence, const uint8_t *aKey, size_t aKeyLen )
Importa una clave a ITSA PSA.
Nota: Si se pasa OT_CRYPTO_KEY_STORAGE_PERSISTENT para aKeyPersistence, aKeyRef
es la entrada y la plataforma debe usar el parámetro aKeyRef, y DEBE no cambiarlo.
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 nueva referencia de clave.
Detalles | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
||||||||||||||
Valores de retorno |
|
El núcleo de PO solo usa esta API cuando OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE
está habilitado.
otPlatCryptoInit
void otPlatCryptoInit( void )
Inicializa el módulo de Crypto.
otPlatCryptoPbkdf2GenerateKey
void otPlatCryptoPbkdf2GenerateKey( const uint8_t *aPassword, uint16_t aPasswordLen, const uint8_t *aSalt, uint16_t aSaltLen, uint32_t aIterationCounter, uint16_t aKeyLen, uint8_t *aKey )
Ejecuta PKCS#5 PBKDF2 con CMAC (AES-CMAC-PRF-128).
Detalles | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Parámetros |
|
otPlatCryptoRandomDeinit
void otPlatCryptoRandomDeinit( void )
Inicializa el generador de números seudoaleatorios seguro y criptográficamente seguro (CSPRNG).
otPlatCryptoRandomGet
otError otPlatCryptoRandomGet( uint8_t *aBuffer, uint16_t aSize )
Rellena un búfer determinado con bytes aleatorios criptográficamente seguros.
Detalles | |||||
---|---|---|---|---|---|
Parámetros |
|
||||
Valores de retorno |
|
otPlatCryptoRandomInit
void otPlatCryptoRandomInit( void )
Inicializa el 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 |
|
||||||
Valores de retorno |
|
otPlatCryptoSha256Finish
otError otPlatCryptoSha256Finish( otCryptoContext *aContext, uint8_t *aHash, uint16_t aHashSize )
Finaliza la operación SHA-256.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
otPlatCryptoSha256Init
otError otPlatCryptoSha256Init( otCryptoContext *aContext )
Inicializa la operación SHA-256.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
otPlatCryptoSha256Inicio
otError otPlatCryptoSha256Start( otCryptoContext *aContext )
Inicia la operación SHA-256.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
otPlatCryptoSha256Update
otError otPlatCryptoSha256Update( otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength )
Actualiza la operación SHA-256 con una entrada nueva.
Detalles | |||||||
---|---|---|---|---|---|---|---|
Parámetros |
|
||||||
Valores de retorno |
|
Macros
TS_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.
TS_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 EDCSA
PR_CRYPTO_ECDSA_SIGNATURE_SIZE
OT_CRYPTO_ECDSA_SIGNATURE_SIZE 64
Tamaño del búfer (en bytes) para representar la firma EDCSA
TC_CRYPTO_PBDKF2_MAX_SALT_SIZE
OT_CRYPTO_PBDKF2_MAX_SALT_SIZE 30
Longitud máxima de PBKDF2 SALT: Prefijo sal (6) + panid extendido (8) + nombre de la red (16)
TS_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 en el código fuente, disponible en GitHub. Para obtener más información o colaborar con nuestra documentación, consulta Recursos.