Cripto - Piattaforma

Questo modulo include l'astrazione della piattaforma per la crittografia.

Riepilogo

Enumerazioni

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
Definisce i flag di utilizzo delle chiavi.
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
Definisce gli algoritmi chiave.
otCryptoKeyStorage{
  OT_CRYPTO_KEY_STORAGE_VOLATILE,
  OT_CRYPTO_KEY_STORAGE_PERSISTENT
}
enum
Definisce i tipi di archiviazione delle chiavi.
otCryptoKeyType{
  OT_CRYPTO_KEY_TYPE_RAW,
  OT_CRYPTO_KEY_TYPE_AES,
  OT_CRYPTO_KEY_TYPE_HMAC,
  OT_CRYPTO_KEY_TYPE_ECDSA
}
enum
Definisce i tipi di chiavi.

Typedef

otCryptoContext typedef
otCryptoKey typedef
struct otCryptoKey
otCryptoKeyRef typedef
uint32_t
Questo tipo di dati rappresenta il riferimento chiave.
otPlatCryptoEcdsaKeyPair typedef
otPlatCryptoEcdsaPublicKey typedef
otPlatCryptoEcdsaSignature typedef
otPlatCryptoSha256Hash typedef
Rappresenta un hash SHA-256.

Variabili

OT_TOOL_PACKED_END

Funzioni

otPlatCryptoAesEncrypt(otCryptoContext *aContext, const uint8_t *aInput, uint8_t *aOutput)
Criptare i dati forniti.
otPlatCryptoAesFree(otCryptoContext *aContext)
Libera il contesto AES.
otPlatCryptoAesInit(otCryptoContext *aContext)
Inizializzare l'operazione AES.
otPlatCryptoAesSetKey(otCryptoContext *aContext, const otCryptoKey *aKey)
Imposta la chiave per il funzionamento con AES.
otPlatCryptoDestroyKey(otCryptoKeyRef aKeyRef)
Elimina una chiave archiviata in PSA ITS.
otPlatCryptoEcdsaExportPublicKey(otCryptoKeyRef aKeyRef, otPlatCryptoEcdsaPublicKey *aPublicKey)
Recupera la chiave pubblica associata dal riferimento alla chiave passato.
otPlatCryptoEcdsaGenerateAndImportKey(otCryptoKeyRef aKeyRef)
Genera e importa una nuova coppia di chiavi ECDSA al riferimento passato.
otPlatCryptoEcdsaGenerateKey(otPlatCryptoEcdsaKeyPair *aKeyPair)
Genera e compila il buffer di output con una nuova coppia di chiavi ECDSA.
otPlatCryptoEcdsaGetPublicKey(const otPlatCryptoEcdsaKeyPair *aKeyPair, otPlatCryptoEcdsaPublicKey *aPublicKey)
Recupera la chiave pubblica associata dal contesto di input.
otPlatCryptoEcdsaSign(const otPlatCryptoEcdsaKeyPair *aKeyPair, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
Calcola la firma ECDSA per un messaggio con hash utilizzando la chiave privata dal contesto di input.
otPlatCryptoEcdsaSignUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
Calcola la firma ECDSA per un messaggio con hash utilizzando il riferimento alla chiave passato.
otPlatCryptoEcdsaVerify(const otPlatCryptoEcdsaPublicKey *aPublicKey, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
Utilizza la chiave del contesto di input per verificare la firma ECDSA di un messaggio con hash.
otPlatCryptoEcdsaVerifyUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
Utilizza il riferimento chiave per verificare la firma ECDSA di un messaggio con hash.
otPlatCryptoExportKey(otCryptoKeyRef aKeyRef, uint8_t *aBuffer, size_t aBufferLen, size_t *aKeyLen)
Esporta una chiave archiviata in PSA ITS.
otPlatCryptoHasKey(otCryptoKeyRef aKeyRef)
bool
Verifica se al riferimento chiave passato è associata una chiave nell'ITS di PSA.
otPlatCryptoHkdfDeinit(otCryptoContext *aContext)
Annulla l'inizializzazione del contesto HKDF.
otPlatCryptoHkdfExpand(otCryptoContext *aContext, const uint8_t *aInfo, uint16_t aInfoLength, uint8_t *aOutputKey, uint16_t aOutputKeyLength)
Esegui il passaggio di espansione HKDF.
otPlatCryptoHkdfExtract(otCryptoContext *aContext, const uint8_t *aSalt, uint16_t aSaltLength, const otCryptoKey *aInputKey)
Esegui il passaggio di estrazione HKDF.
otPlatCryptoHkdfInit(otCryptoContext *aContext)
Inizializza il contesto HKDF.
otPlatCryptoHmacSha256Deinit(otCryptoContext *aContext)
Annulla l'inizializzazione dell'operazione HMAC.
otPlatCryptoHmacSha256Finish(otCryptoContext *aContext, uint8_t *aBuf, size_t aBufLength)
Completa l'operazione HMAC.
otPlatCryptoHmacSha256Init(otCryptoContext *aContext)
Inizializzare l'operazione HMAC.
otPlatCryptoHmacSha256Start(otCryptoContext *aContext, const otCryptoKey *aKey)
Avvia operazione HMAC.
otPlatCryptoHmacSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
Aggiorna l'operazione HMAC con un nuovo input.
otPlatCryptoImportKey(otCryptoKeyRef *aKeyRef, otCryptoKeyType aKeyType, otCryptoKeyAlgorithm aKeyAlgorithm, int aKeyUsage, otCryptoKeyStorage aKeyPersistence, const uint8_t *aKey, size_t aKeyLen)
Importa una chiave in PSA ITS.
otPlatCryptoInit(void)
void
Inizializza il modulo 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)
Eseguire PKCS#5 PBKDF2 utilizzando CMAC (AES-CMAC-PRF-128).
otPlatCryptoRandomDeinit(void)
void
Deinizializza il generatore di numeri pseudocasuali con protezione crittografica (CSPRNG).
otPlatCryptoRandomGet(uint8_t *aBuffer, uint16_t aSize)
Riempie un determinato buffer con byte casuali con protezione crittografica.
otPlatCryptoRandomInit(void)
void
Inizializzare il generatore di numeri pseudocasuali con protezione crittografica (CSPRNG).
otPlatCryptoSha256Deinit(otCryptoContext *aContext)
Annulla l'inizializzazione dell'operazione SHA-256.
otPlatCryptoSha256Finish(otCryptoContext *aContext, uint8_t *aHash, uint16_t aHashSize)
Completa l'operazione SHA-256.
otPlatCryptoSha256Init(otCryptoContext *aContext)
Inizializzare l'operazione SHA-256.
otPlatCryptoSha256Start(otCryptoContext *aContext)
Avvia l'operazione SHA-256.
otPlatCryptoSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
Aggiorna l'operazione SHA-256 con il nuovo input.

Strutture

otCryptoContext

Archivia l'oggetto di contesto per le API della piattaforma.

otCryptoKey

Rappresenta il materiale della chiave richiesto per le operazioni crittografiche.

otPlatCryptoEcdsaKeyPair

Rappresenta una coppia di chiavi ECDSA (chiavi pubbliche e private).

otPlatCryptoEcdsaPublicKey

Rappresenta una chiave pubblica ECDSA.

otPlatCryptoEcdsaSignature

Rappresenta una firma ECDSA.

otPlatCryptoSha256Hash

Rappresenta un hash SHA-256.

Enumerazioni

enum anonimo

 anonymous enum

Definisce i flag di utilizzo delle chiavi.

Proprietà
OT_CRYPTO_KEY_USAGE_DECRYPT

Utilizzo chiave: AES ECB.

OT_CRYPTO_KEY_USAGE_ENCRYPT

Utilizzo della chiave: crittografia (definita dal fornitore).

OT_CRYPTO_KEY_USAGE_EXPORT

Utilizzo della chiave: la chiave può essere esportata.

OT_CRYPTO_KEY_USAGE_NONE

Il campo Utilizzo chiave: il campo Utilizzo della chiave è vuoto.

OT_CRYPTO_KEY_USAGE_SIGN_HASH

Utilizzo della chiave: firma hash.

OT_CRYPTO_KEY_USAGE_VERIFY_HASH

Utilizzo chiave: verifica hash.

otCryptoKeyAlgorithm

 otCryptoKeyAlgorithm

Definisce gli algoritmi chiave.

Proprietà
OT_CRYPTO_KEY_ALG_AES_ECB

Algoritmo chiave: AES ECB.

OT_CRYPTO_KEY_ALG_ECDSA

Algoritmo chiave: ECDSA.

OT_CRYPTO_KEY_ALG_HMAC_SHA_256

Algoritmo chiave: HMAC SHA-256.

OT_CRYPTO_KEY_ALG_VENDOR

Algoritmo chiave: definito dal fornitore.

otCryptoKeyStorage

 otCryptoKeyStorage

Definisce i tipi di archiviazione delle chiavi.

Proprietà
OT_CRYPTO_KEY_STORAGE_PERSISTENT

Persistenza della chiave: la chiave è permanente.

OT_CRYPTO_KEY_STORAGE_VOLATILE

Persistenza della chiave: la chiave è volatile.

otCryptoKeyType

 otCryptoKeyType

Definisce i tipi di chiavi.

Proprietà
OT_CRYPTO_KEY_TYPE_AES

Tipo di chiave: AES.

OT_CRYPTO_KEY_TYPE_ECDSA

Tipo di chiave: ECDSA.

OT_CRYPTO_KEY_TYPE_HMAC

Tipo di chiave: HMAC.

OT_CRYPTO_KEY_TYPE_RAW

Tipo di chiave: dati non elaborati.

Typedef

otCryptoContext

struct otCryptoContext otCryptoContext

otCryptoKey

struct otCryptoKey otCryptoKey

otCryptoKeyRef

uint32_t otCryptoKeyRef

Questo tipo di dati rappresenta il riferimento chiave.

otPlatCryptoEcdsaKeyPair

struct otPlatCryptoEcdsaKeyPair otPlatCryptoEcdsaKeyPair

otPlatCryptoEcdsaPublicKey

struct otPlatCryptoEcdsaPublicKey otPlatCryptoEcdsaPublicKey

otPlatCryptoEcdsaSignature

struct otPlatCryptoEcdsaSignature otPlatCryptoEcdsaSignature

otPlatCryptoSha256Hash

struct otPlatCryptoSha256Hash otPlatCryptoSha256Hash

Rappresenta un hash SHA-256.

Variabili

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otPlatCryptoSha256Hash OT_TOOL_PACKED_END

Funzioni

otPlatCryptoAesEncrypt

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

Criptare i dati forniti.

Dettagli
Parametri
[in] aContext
Contesto per l'operazione AES.
[in] aInput
Punta al buffer di input.
[in] aOutput
Punta al buffer di output.
Valori restituiti
OT_ERROR_NONE
Crittografia di aInput riuscita.
OT_ERROR_FAILED
Impossibile criptare aInput.
OT_ERROR_INVALID_ARGS
aContext, aKey o aOutput erano NULL

otPlatCryptoAesFree

otError otPlatCryptoAesFree(
  otCryptoContext *aContext
)

Libera il contesto AES.

Dettagli
Parametri
[in] aContext
Contesto per l'operazione AES.
Valori restituiti
OT_ERROR_NONE
Contesto AES liberato correttamente.
OT_ERROR_FAILED
Impossibile liberare il contesto AES.
OT_ERROR_INVALID_ARGS
aContext era NULL

otPlatCryptoAesInit

otError otPlatCryptoAesInit(
  otCryptoContext *aContext
)

Inizializzare l'operazione AES.

Dettagli
Parametri
[in] aContext
Contesto per l'operazione AES.
Valori restituiti
OT_ERROR_NONE
Operazione AES inizializzata correttamente.
OT_ERROR_FAILED
Impossibile inizializzare l'operazione AES.
OT_ERROR_INVALID_ARGS
aContext era NULL
OT_ERROR_NO_BUFS
Impossibile assegnare il contesto.

otPlatCryptoAesSetKey

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

Imposta la chiave per il funzionamento con AES.

Dettagli
Parametri
[in] aContext
Contesto per l'operazione AES.
[out] aKey
Chiave da utilizzare per l'operazione AES.
Valori restituiti
OT_ERROR_NONE
Impostazione della chiave per l'operazione AES riuscita.
OT_ERROR_FAILED
Impossibile impostare la chiave per l'operazione AES.
OT_ERROR_INVALID_ARGS
aContext o aKey era NULL

otPlatCryptoDestroyKey

otError otPlatCryptoDestroyKey(
  otCryptoKeyRef aKeyRef
)

Elimina una chiave archiviata in PSA ITS.

Dettagli
Parametri
[in] aKeyRef
Il riferimento chiave da eliminare
Valori restituiti
OT_ERROR_NONE
Eliminazione della chiave riuscita.
OT_ERROR_FAILED
Impossibile eliminare la chiave.

otPlatCryptoEcdsaExportPublicKey

otError otPlatCryptoEcdsaExportPublicKey(
  otCryptoKeyRef aKeyRef,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

Recupera la chiave pubblica associata dal riferimento alla chiave passato.

La chiave pubblica viene archiviata in modo diverso a seconda della libreria backend di crittografia utilizzata (OPENTHREAD_CONFIG_CRYPTO_LIB).

Questa API deve assicurarsi di restituire la chiave pubblica come rappresentazione in sequenza di byte di un punto della curva non compresso (RFC 6605 - sec 4)

Dettagli
Parametri
[in] aKeyRef
Riferimento chiave allo slot in cui è memorizzata la coppia di chiavi.
[out] aPublicKey
Un puntatore a una struttura di chiave pubblica ECDSA per archiviare la chiave pubblica.
Valori restituiti
OT_ERROR_NONE
La chiave pubblica è stata recuperata correttamente e aBuffer è stato aggiornato.
OT_ERROR_PARSE
Impossibile analizzare il formato DER della coppia di chiavi (formato non valido).
OT_ERROR_INVALID_ARGS
Il valore aContext è NULL.

otPlatCryptoEcdsaGenerateAndImportKey

otError otPlatCryptoEcdsaGenerateAndImportKey(
  otCryptoKeyRef aKeyRef
)

Genera e importa una nuova coppia di chiavi ECDSA al riferimento passato.

Dettagli
Parametri
[in] aKeyRef
Riferimento chiave allo slot in cui è memorizzata la coppia di chiavi.
Valori restituiti
OT_ERROR_NONE
È stata generata una nuova coppia di chiavi.
OT_ERROR_NO_BUFS
Impossibile allocare il buffer per la generazione della chiave.
OT_ERROR_NOT_CAPABLE
Funzionalità non supportata.
OT_ERROR_FAILED
Impossibile generare la coppia di chiavi.

otPlatCryptoEcdsaGenerateKey

otError otPlatCryptoEcdsaGenerateKey(
  otPlatCryptoEcdsaKeyPair *aKeyPair
)

Genera e compila il buffer di output con una nuova coppia di chiavi ECDSA.

Dettagli
Parametri
[out] aKeyPair
Un puntatore a una struttura di coppie di chiavi ECDSA per memorizzare la coppia di chiavi generata.
Valori restituiti
OT_ERROR_NONE
È stata generata una nuova coppia di chiavi.
OT_ERROR_NO_BUFS
Impossibile allocare il buffer per la generazione della chiave.
OT_ERROR_NOT_CAPABLE
Funzionalità non supportata.
OT_ERROR_FAILED
Impossibile generare la coppia di chiavi.

otPlatCryptoEcdsaGetPublicKey

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

Recupera la chiave pubblica associata dal contesto di input.

Dettagli
Parametri
[in] aKeyPair
Un puntatore a una struttura di coppie di chiavi ECDSA in cui è memorizzata la coppia di chiavi.
[out] aPublicKey
Un puntatore a una struttura di chiave pubblica ECDSA per archiviare la chiave pubblica.
Valori restituiti
OT_ERROR_NONE
La chiave pubblica è stata recuperata correttamente e aBuffer è stato aggiornato.
OT_ERROR_PARSE
Impossibile analizzare il formato DER della coppia di chiavi (formato non valido).
OT_ERROR_INVALID_ARGS
Il valore aContext è NULL.

otPlatCryptoEcdsaSign

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

Calcola la firma ECDSA per un messaggio con hash utilizzando la chiave privata dal contesto di input.

Utilizza la procedura di generazione della firma digitale deterministica da RFC 6979.

Dettagli
Parametri
[in] aKeyPair
Un puntatore a una struttura di coppie di chiavi ECDSA in cui è memorizzata la coppia di chiavi.
[in] aHash
Un puntatore a una struttura hash SHA-256 in cui è archiviato il valore hash per il calcolo della firma.
[out] aSignature
Un puntatore a una struttura di firma ECDSA per generare la firma calcolata.
Valori restituiti
OT_ERROR_NONE
La firma è stata calcolata correttamente, aSignature è stato aggiornato.
OT_ERROR_PARSE
Impossibile analizzare il formato DER della coppia di chiavi (formato non valido).
OT_ERROR_NO_BUFS
Impossibile assegnare il buffer per il calcolo della firma.
OT_ERROR_INVALID_ARGS
Il valore aContext è NULL.

otPlatCryptoEcdsaSignUsingKeyRef

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

Calcola la firma ECDSA per un messaggio con hash utilizzando il riferimento alla chiave passato.

Utilizza la procedura di generazione della firma digitale deterministica da RFC 6979.

Dettagli
Parametri
[in] aKeyRef
Riferimento chiave allo slot in cui è memorizzata la coppia di chiavi.
[in] aHash
Un puntatore a una struttura hash SHA-256 in cui è archiviato il valore hash per il calcolo della firma.
[out] aSignature
Un puntatore a una struttura di firma ECDSA per generare la firma calcolata.
Valori restituiti
OT_ERROR_NONE
La firma è stata calcolata correttamente, aSignature è stato aggiornato.
OT_ERROR_PARSE
Impossibile analizzare il formato DER della coppia di chiavi (formato non valido).
OT_ERROR_NO_BUFS
Impossibile assegnare il buffer per il calcolo della firma.
OT_ERROR_INVALID_ARGS
Il valore aContext è NULL.

otPlatCryptoEcdsaVerify

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

Utilizza la chiave del contesto di input per verificare la firma ECDSA di un messaggio con hash.

Dettagli
Parametri
[in] aPublicKey
Un puntatore a una struttura di chiave pubblica ECDSA in cui è archiviata la chiave pubblica per la verifica della firma.
[in] aHash
Un puntatore a una struttura hash SHA-256 in cui è archiviato il valore hash per la verifica della firma.
[in] aSignature
Un puntatore a una struttura di firma ECDSA in cui è archiviato il valore della firma da verificare.
Valori restituiti
OT_ERROR_NONE
La firma è stata verificata.
OT_ERROR_SECURITY
La firma non è valida.
OT_ERROR_INVALID_ARGS
La chiave o l'hash non sono validi.
OT_ERROR_NO_BUFS
Impossibile allocare il buffer per la verifica della firma.

otPlatCryptoEcdsaVerifyUsingKeyRef

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

Utilizza il riferimento chiave per verificare la firma ECDSA di un messaggio con hash.

Dettagli
Parametri
[in] aKeyRef
Riferimento chiave allo slot in cui è memorizzata la coppia di chiavi.
[in] aHash
Un puntatore a una struttura hash SHA-256 in cui è archiviato il valore hash per la verifica della firma.
[in] aSignature
Un puntatore a una struttura di firma ECDSA in cui è archiviato il valore della firma da verificare.
Valori restituiti
OT_ERROR_NONE
La firma è stata verificata.
OT_ERROR_SECURITY
La firma non è valida.
OT_ERROR_INVALID_ARGS
La chiave o l'hash non sono validi.
OT_ERROR_NO_BUFS
Impossibile allocare il buffer per la verifica della firma.

otPlatCryptoExportKey

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

Esporta una chiave archiviata in PSA ITS.

Dettagli
Parametri
[in] aKeyRef
Il riferimento chiave da utilizzare per le operazioni crittografiche.
[out] aBuffer
Punta al buffer in cui è necessario esportare la chiave.
[in] aBufferLen
Lunghezza del buffer passato per archiviare la chiave esportata.
[out] aKeyLen
Puntatore per restituire la lunghezza della chiave esportata.
Valori restituiti
OT_ERROR_NONE
Esportazione di aKeyRef riuscita.
OT_ERROR_FAILED
Impossibile esportare aKeyRef.
OT_ERROR_INVALID_ARGS
aBuffer era NULL

otPlatCryptoHasKey

bool otPlatCryptoHasKey(
  otCryptoKeyRef aKeyRef
)

Verifica se al riferimento chiave passato è associata una chiave nell'ITS di PSA.

Dettagli
Parametri
[in] aKeyRef
Il riferimento chiave da verificare.
Valori restituiti
TRUE
Esiste una chiave associata a aKeyRef.
FALSE
Nessuna chiave associata a aKeyRef.

otPlatCryptoHkdfDeinit

otError otPlatCryptoHkdfDeinit(
  otCryptoContext *aContext
)

Annulla l'inizializzazione del contesto HKDF.

Dettagli
Parametri
[in] aContext
Contesto per l'operazione HKDF.
Valori restituiti
OT_ERROR_NONE
Operazione HKDF annullata correttamente.
OT_ERROR_FAILED
Impossibile non inizializzare l'operazione 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
)

Esegui il passaggio di espansione HKDF.

Dettagli
Parametri
[in] aContext
Contesto dell'operazione HKDF.
[in] aInfo
Punta il cursore sulla sequenza Informazioni.
[in] aInfoLength
Lunghezza della sequenza di informazioni.
[out] aOutputKey
Punta alla chiave di output.
[in] aOutputKeyLength
Dimensioni del buffer della chiave di output.
Valori restituiti
OT_ERROR_NONE
Espansione HKDF riuscita.
OT_ERROR_FAILED
Espansione HKDF non riuscita.
OT_ERROR_INVALID_ARGS
aContext era NULL

otPlatCryptoHkdfExtract

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

Esegui il passaggio di estrazione HKDF.

Dettagli
Parametri
[in] aContext
Contesto dell'operazione HKDF.
[in] aSalt
Puntatore al sale per HKDF.
[in] aSaltLength
Lunghezza del sale.
[in] aInputKey
Posiziona il puntatore del mouse sul tasto di immissione.
Valori restituiti
OT_ERROR_NONE
Estrazione HKDF riuscita.
OT_ERROR_FAILED
Estrazione HKDF non riuscita.

otPlatCryptoHkdfInit

otError otPlatCryptoHkdfInit(
  otCryptoContext *aContext
)

Inizializza il contesto HKDF.

Dettagli
Parametri
[in] aContext
Contesto per l'operazione HKDF.
Valori restituiti
OT_ERROR_NONE
Operazione AES inizializzata correttamente.
OT_ERROR_FAILED
Impossibile inizializzare l'operazione AES.
OT_ERROR_INVALID_ARGS
aContext era NULL

otPlatCryptoHmacSha256Deinit

otError otPlatCryptoHmacSha256Deinit(
  otCryptoContext *aContext
)

Annulla l'inizializzazione dell'operazione HMAC.

Dettagli
Parametri
[in] aContext
Contesto per l'operazione HMAC.
Valori restituiti
OT_ERROR_NONE
Operazione HMAC annullata correttamente.
OT_ERROR_FAILED
Impossibile non inizializzare l'operazione HMAC.
OT_ERROR_INVALID_ARGS
aContext era NULL

otPlatCryptoHmacSha256Finish

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

Completa l'operazione HMAC.

Dettagli
Parametri
[in] aContext
Contesto per l'operazione HMAC.
[out] aBuf
Un puntatore al buffer di output.
[in] aBufLength
La lunghezza di aBuf in byte.
Valori restituiti
OT_ERROR_NONE
Operazione HMAC completata.
OT_ERROR_FAILED
Impossibile completare l'operazione HMAC.
OT_ERROR_INVALID_ARGS
aContext o aBuf era NULL

otPlatCryptoHmacSha256Init

otError otPlatCryptoHmacSha256Init(
  otCryptoContext *aContext
)

Inizializzare l'operazione HMAC.

Dettagli
Parametri
[in] aContext
Contesto per l'operazione HMAC.
Valori restituiti
OT_ERROR_NONE
Operazione HMAC inizializzata.
OT_ERROR_FAILED
Impossibile inizializzare l'operazione HMAC.
OT_ERROR_INVALID_ARGS
aContext era NULL

otPlatCryptoHmacSha256Start

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

Avvia operazione HMAC.

Dettagli
Parametri
[in] aContext
Contesto per l'operazione HMAC.
[in] aKey
Materiale della chiave da utilizzare per il funzionamento HMAC.
Valori restituiti
OT_ERROR_NONE
Operazione HMAC avviata.
OT_ERROR_FAILED
Impossibile avviare l'operazione HMAC.
OT_ERROR_INVALID_ARGS
aContext o aKey era NULL

otPlatCryptoHmacSha256Update

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

Aggiorna l'operazione HMAC con un nuovo input.

Dettagli
Parametri
[in] aContext
Contesto per l'operazione HMAC.
[in] aBuf
Un puntatore al buffer di input.
[in] aBufLength
La lunghezza di aBuf in byte.
Valori restituiti
OT_ERROR_NONE
HMAC aggiornato con una nuova operazione di input.
OT_ERROR_FAILED
Impossibile aggiornare l'operazione 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 chiave in PSA ITS.

Se OT_CRYPTO_KEY_STORAGE_VOLATILE viene passato per aKeyPersistence, viene restituito aKeyRef, il valore iniziale non è importante e l'API della piattaforma DEVE aggiornarlo per restituire il nuovo riferimento della chiave.

Dettagli
Parametri
[in,out] aKeyRef
Puntatore al riferimento chiave da utilizzare per le operazioni crittografiche.
[in] aKeyType
Codifica Key Type per la chiave.
[in] aKeyAlgorithm
Codifica dell'algoritmo della chiave per la chiave.
[in] aKeyUsage
Codifica di utilizzo della chiave per la chiave (combinazioni di OT_CRYPTO_KEY_USAGE_*).
[in] aKeyPersistence
Persistenza della chiave per questa chiave
[in] aKey
Chiave effettiva da importare.
[in] aKeyLen
Lunghezza della chiave da importare.
Valori restituiti
OT_ERROR_NONE
Importazione della chiave riuscita.
OT_ERROR_FAILED
Impossibile importare la chiave.
OT_ERROR_INVALID_ARGS
aKey è stato impostato su NULL.

Questa API viene utilizzata dal core OT solo quando OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE è abilitato.

otPlatCryptoInit

void otPlatCryptoInit(
  void
)

Inizializza il modulo Crypto.

otPlatCryptoPbkdf2GeneraChiave

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
)

Eseguire PKCS#5 PBKDF2 utilizzando CMAC (AES-CMAC-PRF-128).

Dettagli
Parametri
[in] aPassword
Password da utilizzare durante la generazione della chiave.
[in] aPasswordLen
Lunghezza della password.
[in] aSalt
Sale da utilizzare durante la generazione della chiave.
[in] aSaltLen
Lunghezza del sale.
[in] aIterationCounter
Conteggio iterazioni.
[in] aKeyLen
Lunghezza della chiave generata in byte.
[out] aKey
Un puntatore alla chiave generata.
Valori restituiti
OT_ERROR_NONE
È stata generata una nuova coppia di chiavi.
OT_ERROR_NO_BUFS
Impossibile allocare il buffer per la generazione della chiave.
OT_ERROR_NOT_CAPABLE
Funzionalità non supportata.
OT_ERROR_FAILED
Impossibile generare la chiave.

otPlatCryptoRandomDeinit

void otPlatCryptoRandomDeinit(
  void
)

Deinizializza il generatore di numeri pseudocasuali con protezione crittografica (CSPRNG).

otPlatCryptoRandomGet

otError otPlatCryptoRandomGet(
  uint8_t *aBuffer,
  uint16_t aSize
)

Riempie un determinato buffer con byte casuali con protezione crittografica.

Dettagli
Parametri
[out] aBuffer
Un puntatore a un buffer da riempire con i byte casuali.
[in] aSize
Dimensione del buffer (numero di byte da riempire).
Valori restituiti
OT_ERROR_NONE
Buffer riempito correttamente con valori casuali.
OT_ERROR_FAILED
Operazione non riuscita.

otPlatCryptoRandomInit

void otPlatCryptoRandomInit(
  void
)

Inizializzare il generatore di numeri pseudocasuali con protezione crittografica (CSPRNG).

otPlatCryptoSha256Deinit

otError otPlatCryptoSha256Deinit(
  otCryptoContext *aContext
)

Annulla l'inizializzazione dell'operazione SHA-256.

Dettagli
Parametri
[in] aContext
Contesto per l'operazione SHA-256.
Valori restituiti
OT_ERROR_NONE
Operazione SHA-256 annullata correttamente.
OT_ERROR_FAILED
Impossibile non inizializzare l'operazione SHA-256.
OT_ERROR_INVALID_ARGS
aContext era NULL

otPlatCryptoSha256Finish

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

Completa l'operazione SHA-256.

Dettagli
Parametri
[in] aContext
Contesto per l'operazione SHA-256.
[in] aHash
Un puntatore al buffer di output, in cui è necessario archiviare l'hash.
[in] aHashSize
La lunghezza di aHash in byte.
Valori restituiti
OT_ERROR_NONE
Operazione SHA-256 completata.
OT_ERROR_FAILED
Impossibile completare l'operazione SHA-256.
OT_ERROR_INVALID_ARGS
aContext o aHash era NULL

otPlatCryptoSha256Init

otError otPlatCryptoSha256Init(
  otCryptoContext *aContext
)

Inizializzare l'operazione SHA-256.

Dettagli
Parametri
[in] aContext
Contesto per l'operazione SHA-256.
Valori restituiti
OT_ERROR_NONE
Operazione SHA-256 inizializzata.
OT_ERROR_FAILED
Impossibile inizializzare l'operazione SHA-256.
OT_ERROR_INVALID_ARGS
aContext era NULL

otPlatCryptoSha256Start

otError otPlatCryptoSha256Start(
  otCryptoContext *aContext
)

Avvia l'operazione SHA-256.

Dettagli
Parametri
[in] aContext
Contesto per l'operazione SHA-256.
Valori restituiti
OT_ERROR_NONE
Operazione SHA-256 avviata.
OT_ERROR_FAILED
Impossibile avviare l'operazione SHA-256.
OT_ERROR_INVALID_ARGS
aContext era NULL

otPlatCryptoSha256Update

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

Aggiorna l'operazione SHA-256 con il nuovo input.

Dettagli
Parametri
[in] aContext
Contesto per l'operazione SHA-256.
[in] aBuf
Un puntatore al buffer di input.
[in] aBufLength
La lunghezza di aBuf in byte.
Valori restituiti
OT_ERROR_NONE
SHA-256 aggiornato con una nuova operazione di input.
OT_ERROR_FAILED
Impossibile aggiornare l'operazione SHA-256.
OT_ERROR_INVALID_ARGS
aContext o aBuf era NULL

Macro

OT_CRYPTO_ECDSA_MAX_DER_SIZE

 OT_CRYPTO_ECDSA_MAX_DER_SIZE 125

Dimensione massima del buffer (in byte) per la rappresentazione della coppia di chiavi EDCSA in formato DER.

OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE

 OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE 64

Dimensione del buffer (in byte) per rappresentare la chiave pubblica EDCSA.

OT_CRYPTO_ECDSA_SIGNATURE_SIZE

 OT_CRYPTO_ECDSA_SIGNATURE_SIZE 64

Dimensione del buffer (in byte) per rappresentare la firma EDCSA.

OT_CRYPTO_PBDKF2_MAX_SALT_SIZE

 OT_CRYPTO_PBDKF2_MAX_SALT_SIZE 30

Lunghezza massima SALT PBKDF2: prefisso del sale (6) + panid esteso (8) + nome della rete (16)

OT_CRYPTO_SHA256_HASH_SIZE

 OT_CRYPTO_SHA256_HASH_SIZE 32

Lunghezza dell'hash SHA256 (in byte).

Risorse

Gli argomenti di riferimento dell'API OpenThread provengono dal codice sorgente, disponibile su GitHub. Per saperne di più o per contribuire alla nostra documentazione, consulta la sezione Risorse.