Crypto – Plate-forme

Ce module inclut l'abstraction de plate-forme pour le chiffrement.

Résumé

Énumérations

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
Définit les indicateurs d'utilisation de la clé.
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
Définit les algorithmes clés.
otCryptoKeyStorage{
  OT_CRYPTO_KEY_STORAGE_VOLATILE,
  OT_CRYPTO_KEY_STORAGE_PERSISTENT
}
enum
Définit les types de stockage de clés.
otCryptoKeyType{
  OT_CRYPTO_KEY_TYPE_RAW,
  OT_CRYPTO_KEY_TYPE_AES,
  OT_CRYPTO_KEY_TYPE_HMAC,
  OT_CRYPTO_KEY_TYPE_ECDSA
}
enum
Définit les types de clés.

Typedefs

otCryptoContext typedef
otCryptoKey typedef
struct otCryptoKey
otCryptoKeyRef typedef
uint32_t
Ce type de données représente la référence de clé.
otPlatCryptoEcdsaKeyPair typedef
otPlatCryptoEcdsaPublicKey typedef
otPlatCryptoEcdsaSignature typedef
otPlatCryptoSha256Hash typedef
Représente un hachage SHA-256.

Variables

OT_TOOL_PACKED_END

distantes

otPlatCryptoAesEncrypt(otCryptoContext *aContext, const uint8_t *aInput, uint8_t *aOutput)
Chiffrer les données données
otPlatCryptoAesFree(otCryptoContext *aContext)
Libérez le contexte AES.
otPlatCryptoAesInit(otCryptoContext *aContext)
Initialisez l'opération AES.
otPlatCryptoAesSetKey(otCryptoContext *aContext, const otCryptoKey *aKey)
Définissez la clé pour l'opération AES.
otPlatCryptoDestroyKey(otCryptoKeyRef aKeyRef)
Détruisez une clé stockée dans l'PSA ITS.
otPlatCryptoEcdsaExportPublicKey(otCryptoKeyRef aKeyRef, otPlatCryptoEcdsaPublicKey *aPublicKey)
Obtenez la clé publique associée à partir de la référence de clé transmise.
otPlatCryptoEcdsaGenerateAndImportKey(otCryptoKeyRef aKeyRef)
Générez et importez une nouvelle paire de clés ECDSA une fois la référence transmise.
otPlatCryptoEcdsaGenerateKey(otPlatCryptoEcdsaKeyPair *aKeyPair)
Générez et remplissez le tampon de sortie avec une nouvelle paire de clés ECDSA.
otPlatCryptoEcdsaGetPublicKey(const otPlatCryptoEcdsaKeyPair *aKeyPair, otPlatCryptoEcdsaPublicKey *aPublicKey)
Permet d'obtenir la clé publique associée à partir du contexte d'entrée.
otPlatCryptoEcdsaSign(const otPlatCryptoEcdsaKeyPair *aKeyPair, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
Calculez la signature ECDSA pour un message haché à l'aide de la clé privée à partir du contexte d'entrée.
otPlatCryptoEcdsaSignUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
Calculez la signature ECDSA pour un message haché à l'aide de la référence de clé transmise.
otPlatCryptoEcdsaVerify(const otPlatCryptoEcdsaPublicKey *aPublicKey, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
Utilisez la clé du contexte d'entrée pour vérifier la signature ECDSA d'un message haché.
otPlatCryptoEcdsaVerifyUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
Utilisez la référence clé pour vérifier la signature ECDSA d'un message haché.
otPlatCryptoExportKey(otCryptoKeyRef aKeyRef, uint8_t *aBuffer, size_t aBufferLen, size_t *aKeyLen)
Exporter une clé stockée dans PSA ITS
otPlatCryptoHasKey(otCryptoKeyRef aKeyRef)
bool
Vérifiez si la référence de clé transmise est associée à une clé dans PSA ITS.
otPlatCryptoHkdfDeinit(otCryptoContext *aContext)
Annulez l'initialisation du contexte HKDF.
otPlatCryptoHkdfExpand(otCryptoContext *aContext, const uint8_t *aInfo, uint16_t aInfoLength, uint8_t *aOutputKey, uint16_t aOutputKeyLength)
Effectuez l'étape de développement HKDF.
otPlatCryptoHkdfExtract(otCryptoContext *aContext, const uint8_t *aSalt, uint16_t aSaltLength, const otCryptoKey *aInputKey)
Effectuez l'étape d'extraction HKDF.
otPlatCryptoHkdfInit(otCryptoContext *aContext)
Initialisez le contexte HKDF.
otPlatCryptoHmacSha256Deinit(otCryptoContext *aContext)
Annulez l'initialisation de l'opération HMAC.
otPlatCryptoHmacSha256Finish(otCryptoContext *aContext, uint8_t *aBuf, size_t aBufLength)
Terminez l'opération HMAC.
otPlatCryptoHmacSha256Init(otCryptoContext *aContext)
Initialiser l'opération HMAC
otPlatCryptoHmacSha256Start(otCryptoContext *aContext, const otCryptoKey *aKey)
Démarre l'opération HMAC.
otPlatCryptoHmacSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
Mettre à jour l'opération HMAC avec la nouvelle entrée.
otPlatCryptoImportKey(otCryptoKeyRef *aKeyRef, otCryptoKeyType aKeyType, otCryptoKeyAlgorithm aKeyAlgorithm, int aKeyUsage, otCryptoKeyStorage aKeyPersistence, const uint8_t *aKey, size_t aKeyLen)
Importez une clé dans le système PSA ITS.
otPlatCryptoInit(void)
void
Initialisez le module 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)
Exécuter PKCS#5 PBKDF2 à l'aide de CMAC (AES-CMAC-PRF-128).
otPlatCryptoRandomDeinit(void)
void
Déinitialisez le générateur de nombres pseudo-aléatoires cryptographiquement sécurisés (CSPRNG).
otPlatCryptoRandomGet(uint8_t *aBuffer, uint16_t aSize)
Remplis un tampon donné avec des octets aléatoires sécurisés cryptographiquement.
otPlatCryptoRandomInit(void)
void
Initialiser le générateur de nombres pseudo-aléatoires chiffrés
otPlatCryptoSha256Deinit(otCryptoContext *aContext)
Annulez l'initialisation de l'opération SHA-256.
otPlatCryptoSha256Finish(otCryptoContext *aContext, uint8_t *aHash, uint16_t aHashSize)
Terminez l'opération SHA-256.
otPlatCryptoSha256Init(otCryptoContext *aContext)
Initialisez l'opération SHA-256.
otPlatCryptoSha256Start(otCryptoContext *aContext)
Démarrez l'opération SHA-256.
otPlatCryptoSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
Mise à jour de l'opération SHA-256 avec la nouvelle entrée.

Structs

otCryptoContext

Stocke l'objet de contexte pour les API de la plate-forme.

otCryptoKey

Représente le matériel de clé requis pour les opérations de chiffrement.

otPlatCryptoEcdsaKeyPair

Représente une paire de clés ECDSA (clés publiques et privées).

otPlatCryptoEcdsaPublicKey

Représente une clé publique ECDSA.

otPlatCryptoEcdsaSignature

Représente une signature ECDSA.

otPlatCryptoSha256Hash

Représente un hachage SHA-256.

Énumérations

énumération anonyme

 anonymous enum

Définit les indicateurs d'utilisation de la clé.

Propriétés
OT_CRYPTO_KEY_USAGE_DECRYPT

Utilisation de la clé: AES ECB.

OT_CRYPTO_KEY_USAGE_ENCRYPT

Utilisation de la clé: chiffrement (défini par le fournisseur).

OT_CRYPTO_KEY_USAGE_EXPORT

Utilisation de la clé: la clé peut être exportée.

OT_CRYPTO_KEY_USAGE_NONE

Utilisation de la clé: l'utilisation de la clé est vide.

OT_CRYPTO_KEY_USAGE_SIGN_HASH

Utilisation de la clé: hachage de signature.

OT_CRYPTO_KEY_USAGE_VERIFY_HASH

Utilisation de la clé: vérifier le hachage.

otCryptoKeyAlgorithm

 otCryptoKeyAlgorithm

Définit les algorithmes clés.

Propriétés
OT_CRYPTO_KEY_ALG_AES_ECB

Algorithme de clé: AES ECB.

OT_CRYPTO_KEY_ALG_ECDSA

Algorithme de clé: ECDSA.

OT_CRYPTO_KEY_ALG_HMAC_SHA_256

Algorithme de clé: HMAC SHA-256.

OT_CRYPTO_KEY_ALG_VENDOR

Algorithme de clé: défini par le fournisseur.

otCryptoKeyStorage

 otCryptoKeyStorage

Définit les types de stockage de clés.

Propriétés
OT_CRYPTO_KEY_STORAGE_PERSISTENT

Persistance des clés: la clé est persistante.

OT_CRYPTO_KEY_STORAGE_VOLATILE

Persistance de la clé: la clé est volatile.

otCryptoKeyType

 otCryptoKeyType

Définit les types de clés.

Propriétés
OT_CRYPTO_KEY_TYPE_AES

Type de clé: AES.

OT_CRYPTO_KEY_TYPE_ECDSA

Type de clé: ECDSA.

OT_CRYPTO_KEY_TYPE_HMAC

Type de clé: HMAC.

OT_CRYPTO_KEY_TYPE_RAW

Type de clé: données brutes.

Typedefs

otCryptoContext

struct otCryptoContext otCryptoContext

otCryptoKey

struct otCryptoKey otCryptoKey

otCryptoKeyRef

uint32_t otCryptoKeyRef

Ce type de données représente la référence de clé.

otPlatCryptoEcdsaKeyPair

struct otPlatCryptoEcdsaKeyPair otPlatCryptoEcdsaKeyPair

otPlatCryptoEcdsaPublicKey

struct otPlatCryptoEcdsaPublicKey otPlatCryptoEcdsaPublicKey

otPlatCryptoEcdsaSignature

struct otPlatCryptoEcdsaSignature otPlatCryptoEcdsaSignature

otPlatCryptoSha256Hash

struct otPlatCryptoSha256Hash otPlatCryptoSha256Hash

Représente un hachage SHA-256.

Variables

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otPlatCryptoSha256Hash OT_TOOL_PACKED_END

distantes

otPlatCryptoAesEncrypt

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

Chiffrer les données données

Détails
Paramètres
[in] aContext
Contexte pour l'opération AES
[in] aInput
Pointeur vers le tampon d'entrée.
[in] aOutput
Pointeur vers le tampon de sortie.
Valeurs de retour
OT_ERROR_NONE
Le chiffrement de aInput a bien été effectué.
OT_ERROR_FAILED
Échec du chiffrement de aInput.
OT_ERROR_INVALID_ARGS
aContext, aKey ou aOutput étaient NULL

otPlatCryptoAesFree

otError otPlatCryptoAesFree(
  otCryptoContext *aContext
)

Libérez le contexte AES.

Détails
Paramètres
[in] aContext
Contexte pour l'opération AES
Valeurs de retour
OT_ERROR_NONE
Le contexte AES a bien été libéré.
OT_ERROR_FAILED
Échec de la libération du contexte AES.
OT_ERROR_INVALID_ARGS
aContext était NULL

otPlatCryptoAesInit

otError otPlatCryptoAesInit(
  otCryptoContext *aContext
)

Initialisez l'opération AES.

Détails
Paramètres
[in] aContext
Contexte pour l'opération AES
Valeurs de retour
OT_ERROR_NONE
L'opération AES a bien été initialisée.
OT_ERROR_FAILED
Échec de l'initialisation de l'opération AES.
OT_ERROR_INVALID_ARGS
aContext était NULL
OT_ERROR_NO_BUFS
Impossible d'allouer le contexte.

otPlatCryptoAesSetKey

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

Définissez la clé pour l'opération AES.

Détails
Paramètres
[in] aContext
Contexte pour l'opération AES
[out] aKey
Clé à utiliser pour l'opération AES.
Valeurs de retour
OT_ERROR_NONE
La clé a bien été définie pour l'opération AES.
OT_ERROR_FAILED
Échec de la définition de la clé pour l'opération AES.
OT_ERROR_INVALID_ARGS
aContext ou aKey était NULL

otPlatCryptoDestroyKey

otError otPlatCryptoDestroyKey(
  otCryptoKeyRef aKeyRef
)

Détruisez une clé stockée dans l'PSA ITS.

Détails
Paramètres
[in] aKeyRef
Référence de clé à détruire
Valeurs de retour
OT_ERROR_NONE
La clé a bien été détruite.
OT_ERROR_FAILED
Échec de la destruction de la clé.

otPlatCryptoEcdsaExportPublicKey

otError otPlatCryptoEcdsaExportPublicKey(
  otCryptoKeyRef aKeyRef,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

Obtenez la clé publique associée à partir de la référence de clé transmise.

La clé publique est stockée différemment selon la bibliothèque de backend de chiffrement utilisée (OPENTHREAD_CONFIG_CRYPTO_LIB).

Cette API doit veiller à renvoyer la clé publique sous forme de représentation de séquence d'octets d'un point de courbe non compressé (RFC 6605 – s 4).

Détails
Paramètres
[in] aKeyRef
Référence de la clé de l'emplacement où la paire de clés est stockée.
[out] aPublicKey
Pointeur vers une structure de clé publique ECDSA pour stocker la clé publique.
Valeurs de retour
OT_ERROR_NONE
La clé publique a bien été récupérée et aBuffer a été mis à jour.
OT_ERROR_PARSE
Impossible d'analyser le format DER de la paire de clés (format non valide).
OT_ERROR_INVALID_ARGS
aContext est NULL.

otPlatCryptoEcdsaGenerateAndImportKey

otError otPlatCryptoEcdsaGenerateAndImportKey(
  otCryptoKeyRef aKeyRef
)

Générez et importez une nouvelle paire de clés ECDSA une fois la référence transmise.

Détails
Paramètres
[in] aKeyRef
Référence de la clé de l'emplacement où la paire de clés est stockée.
Valeurs de retour
OT_ERROR_NONE
Une nouvelle paire de clés a été générée.
OT_ERROR_NO_BUFS
Échec de l'allocation du tampon pour la génération des clés.
OT_ERROR_NOT_CAPABLE
Fonctionnalité non disponible.
OT_ERROR_FAILED
Échec de la génération de la paire de clés.

otPlatCryptoEcdsaGenerateKey

otError otPlatCryptoEcdsaGenerateKey(
  otPlatCryptoEcdsaKeyPair *aKeyPair
)

Générez et remplissez le tampon de sortie avec une nouvelle paire de clés ECDSA.

Détails
Paramètres
[out] aKeyPair
Pointeur vers une structure de paire de clés ECDSA pour stocker la paire de clés générée.
Valeurs de retour
OT_ERROR_NONE
Une nouvelle paire de clés a été générée.
OT_ERROR_NO_BUFS
Échec de l'allocation du tampon pour la génération des clés.
OT_ERROR_NOT_CAPABLE
Fonctionnalité non disponible.
OT_ERROR_FAILED
Échec de la génération de la paire de clés.

otPlatCryptoEcdsaGetPublicKey

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

Permet d'obtenir la clé publique associée à partir du contexte d'entrée.

Détails
Paramètres
[in] aKeyPair
Pointeur vers une structure de paire de clés ECDSA dans laquelle la paire de clés est stockée.
[out] aPublicKey
Pointeur vers une structure de clé publique ECDSA pour stocker la clé publique.
Valeurs de retour
OT_ERROR_NONE
La clé publique a bien été récupérée et aBuffer a été mis à jour.
OT_ERROR_PARSE
Impossible d'analyser le format DER de la paire de clés (format non valide).
OT_ERROR_INVALID_ARGS
aContext est NULL.

otPlatCryptoEcdsaSign

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

Calculez la signature ECDSA pour un message haché à l'aide de la clé privée à partir du contexte d'entrée.

Utilise la procédure de génération de signature numérique déterministe du document RFC 6979.

Détails
Paramètres
[in] aKeyPair
Pointeur vers une structure de paire de clés ECDSA dans laquelle la paire de clés est stockée.
[in] aHash
Pointeur vers une structure de hachage SHA-256 dans laquelle la valeur de hachage pour le calcul de signature est stockée.
[out] aSignature
Pointeur vers une structure de signature ECDSA pour générer la signature calculée.
Valeurs de retour
OT_ERROR_NONE
La signature a bien été calculée. aSignature a été mis à jour.
OT_ERROR_PARSE
Impossible d'analyser le format DER de la paire de clés (format non valide).
OT_ERROR_NO_BUFS
Échec de l'allocation du tampon pour le calcul de la signature.
OT_ERROR_INVALID_ARGS
aContext est NULL.

otPlatCryptoEcdsaSignUsingKeyRef

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

Calculez la signature ECDSA pour un message haché à l'aide de la référence de clé transmise.

Utilise la procédure de génération de signature numérique déterministe du document RFC 6979.

Détails
Paramètres
[in] aKeyRef
Référence de la clé de l'emplacement où la paire de clés est stockée.
[in] aHash
Pointeur vers une structure de hachage SHA-256 dans laquelle la valeur de hachage pour le calcul de signature est stockée.
[out] aSignature
Pointeur vers une structure de signature ECDSA pour générer la signature calculée.
Valeurs de retour
OT_ERROR_NONE
La signature a bien été calculée. aSignature a été mis à jour.
OT_ERROR_PARSE
Impossible d'analyser le format DER de la paire de clés (format non valide).
OT_ERROR_NO_BUFS
Échec de l'allocation du tampon pour le calcul de la signature.
OT_ERROR_INVALID_ARGS
aContext est NULL.

otPlatCryptoEcdsaVerify

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

Utilisez la clé du contexte d'entrée pour vérifier la signature ECDSA d'un message haché.

Détails
Paramètres
[in] aPublicKey
Pointeur vers une structure de clé publique ECDSA dans laquelle est stockée la clé publique de validation de signature.
[in] aHash
Pointeur vers une structure de hachage SHA-256 dans laquelle la valeur de hachage pour la vérification de la signature est stockée.
[in] aSignature
Pointeur vers une structure de signature ECDSA dans laquelle la valeur de signature à vérifier est stockée.
Valeurs de retour
OT_ERROR_NONE
La signature a bien été validée.
OT_ERROR_SECURITY
La signature n'est pas valide.
OT_ERROR_INVALID_ARGS
La clé ou le hachage n'est pas valide.
OT_ERROR_NO_BUFS
Échec de l'allocation du tampon pour la validation de signature.

otPlatCryptoEcdsaVerifyUsingKeyRef

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

Utilisez la référence clé pour vérifier la signature ECDSA d'un message haché.

Détails
Paramètres
[in] aKeyRef
Référence de la clé de l'emplacement où la paire de clés est stockée.
[in] aHash
Pointeur vers une structure de hachage SHA-256 dans laquelle la valeur de hachage pour la vérification de la signature est stockée.
[in] aSignature
Pointeur vers une structure de signature ECDSA dans laquelle la valeur de signature à vérifier est stockée.
Valeurs de retour
OT_ERROR_NONE
La signature a bien été validée.
OT_ERROR_SECURITY
La signature n'est pas valide.
OT_ERROR_INVALID_ARGS
La clé ou le hachage n'est pas valide.
OT_ERROR_NO_BUFS
Échec de l'allocation du tampon pour la validation de signature.

otPlatCryptoExportKey

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

Exporter une clé stockée dans PSA ITS

Détails
Paramètres
[in] aKeyRef
Référence de clé à utiliser pour les opérations de chiffrement.
[out] aBuffer
Pointeur vers le tampon où la clé doit être exportée.
[in] aBufferLen
Longueur du tampon transmis pour stocker la clé exportée.
[out] aKeyLen
Pointeur permettant de renvoyer la longueur de la clé exportée.
Valeurs de retour
OT_ERROR_NONE
aKeyRef a bien été exporté.
OT_ERROR_FAILED
Échec de l'exportation de aKeyRef.
OT_ERROR_INVALID_ARGS
aBuffer était NULL

otPlatCryptoHasKey

bool otPlatCryptoHasKey(
  otCryptoKeyRef aKeyRef
)

Vérifiez si la référence de clé transmise est associée à une clé dans PSA ITS.

Détails
Paramètres
[in] aKeyRef
Référence clé à vérifier.
Valeurs de retour
TRUE
Une clé est associée à aKeyRef.
FALSE
Aucune clé n'est associée à aKeyRef.

otPlatCryptoHkdfDeinit

otError otPlatCryptoHkdfDeinit(
  otCryptoContext *aContext
)

Annulez l'initialisation du contexte HKDF.

Détails
Paramètres
[in] aContext
Contexte de l'opération HKDF
Valeurs de retour
OT_ERROR_NONE
L'initialisation de l'opération HKDF a bien été annulée.
OT_ERROR_FAILED
Échec de l'annulation de l'initialisation de HKDF.
OT_ERROR_INVALID_ARGS
aContext était NULL

otPlatCryptoHkdfExpand

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

Effectuez l'étape de développement HKDF.

Détails
Paramètres
[in] aContext
Contexte d'opération pour l'opération HKDF.
[in] aInfo
Pointeur sur la séquence d'informations.
[in] aInfoLength
Longueur de la séquence d'informations.
[out] aOutputKey
Pointeur vers la clé de sortie.
[in] aOutputKeyLength
Taille du tampon de la clé de sortie.
Valeurs de retour
OT_ERROR_NONE
Le développement HKDF a bien été effectué.
OT_ERROR_FAILED
Échec du développement HKDF.
OT_ERROR_INVALID_ARGS
aContext était NULL

otPlatCryptoHkdfExtract

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

Effectuez l'étape d'extraction HKDF.

Détails
Paramètres
[in] aContext
Contexte d'opération pour l'opération HKDF.
[in] aSalt
Pointeur vers le Salt pour HKDF.
[in] aSaltLength
Longueur du sel.
[in] aInputKey
Pointeur sur la touche d'entrée.
Valeurs de retour
OT_ERROR_NONE
L'extraction HKDF a réussi.
OT_ERROR_FAILED
Échec de l'extraction HKDF.

otPlatCryptoHkdfInit

otError otPlatCryptoHkdfInit(
  otCryptoContext *aContext
)

Initialisez le contexte HKDF.

Détails
Paramètres
[in] aContext
Contexte de l'opération HKDF
Valeurs de retour
OT_ERROR_NONE
L'opération AES a bien été initialisée.
OT_ERROR_FAILED
Échec de l'initialisation de l'opération AES.
OT_ERROR_INVALID_ARGS
aContext était NULL

otPlatCryptoHmacSha256Deinit

otError otPlatCryptoHmacSha256Deinit(
  otCryptoContext *aContext
)

Annulez l'initialisation de l'opération HMAC.

Détails
Paramètres
[in] aContext
Contexte pour l'opération HMAC.
Valeurs de retour
OT_ERROR_NONE
L'opération HMAC a bien été annulée.
OT_ERROR_FAILED
Échec de l'annulation de l'initialisation du HMAC.
OT_ERROR_INVALID_ARGS
aContext était NULL

otPlatCryptoHmacSha256Finish

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

Terminez l'opération HMAC.

Détails
Paramètres
[in] aContext
Contexte pour l'opération HMAC.
[out] aBuf
Pointeur vers le tampon de sortie.
[in] aBufLength
Longueur de aBuf en octets.
Valeurs de retour
OT_ERROR_NONE
L'opération HMAC a bien été effectuée.
OT_ERROR_FAILED
Échec de l'opération HMAC.
OT_ERROR_INVALID_ARGS
aContext ou aBuf était NULL

otPlatCryptoHmacSha256Init

otError otPlatCryptoHmacSha256Init(
  otCryptoContext *aContext
)

Initialiser l'opération HMAC

Détails
Paramètres
[in] aContext
Contexte pour l'opération HMAC.
Valeurs de retour
OT_ERROR_NONE
L'opération HMAC a bien été initialisée.
OT_ERROR_FAILED
Échec de l'initialisation de l'opération HMAC.
OT_ERROR_INVALID_ARGS
aContext était NULL

otPlatCryptoHmacSha256Start

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

Démarre l'opération HMAC.

Détails
Paramètres
[in] aContext
Contexte pour l'opération HMAC.
[in] aKey
Matériel de clé à utiliser pour les opérations HMAC.
Valeurs de retour
OT_ERROR_NONE
L'opération HMAC a bien démarré.
OT_ERROR_FAILED
Échec du démarrage de l'opération HMAC.
OT_ERROR_INVALID_ARGS
aContext ou aKey était NULL

otPlatCryptoHmacSha256Update

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

Mettre à jour l'opération HMAC avec la nouvelle entrée.

Détails
Paramètres
[in] aContext
Contexte pour l'opération HMAC.
[in] aBuf
Pointeur vers le tampon d'entrée.
[in] aBufLength
Longueur de aBuf en octets.
Valeurs de retour
OT_ERROR_NONE
Le HMAC a bien été mis à jour avec la nouvelle opération d'entrée.
OT_ERROR_FAILED
Échec de la mise à jour de l'opération HMAC.
OT_ERROR_INVALID_ARGS
aContext ou aBuf était NULL

otPlatCryptoImportKey

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

Importez une clé dans le système PSA ITS.

Si OT_CRYPTO_KEY_STORAGE_VOLATILE est transmis pour aKeyPersistence, aKeyRef est alors généré. La valeur initiale n'a pas d'importance, et l'API de la plate-forme DOIT la mettre à jour pour renvoyer la nouvelle référence de clé.

Détails
Paramètres
[in,out] aKeyRef
Pointeur pointant vers la référence de clé à utiliser pour les opérations de chiffrement.
[in] aKeyType
Encodage du type de clé.
[in] aKeyAlgorithm
Encodage de l'algorithme de clé pour la clé.
[in] aKeyUsage
Encodage d'utilisation de la clé (combinaisons de OT_CRYPTO_KEY_USAGE_*).
[in] aKeyPersistence
Persistance de la clé pour cette clé
[in] aKey
Clé réelle à importer.
[in] aKeyLen
Longueur de la clé à importer.
Valeurs de retour
OT_ERROR_NONE
La clé a bien été importée.
OT_ERROR_FAILED
Échec de l'importation de la clé.
OT_ERROR_INVALID_ARGS
aKey a été défini sur NULL.

Cette API n'est utilisée par OT Core que lorsque OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE est activé.

otPlatCryptoInit

void otPlatCryptoInit(
  void
)

Initialisez le module 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
)

Exécuter PKCS#5 PBKDF2 à l'aide de CMAC (AES-CMAC-PRF-128).

Détails
Paramètres
[in] aPassword
Mot de passe à utiliser lors de la génération de la clé.
[in] aPasswordLen
Longueur du mot de passe.
[in] aSalt
Salage à utiliser lors de la génération de la clé
[in] aSaltLen
Longueur du salage.
[in] aIterationCounter
Nombre d'itérations.
[in] aKeyLen
Longueur de la clé générée en octets.
[out] aKey
Un pointeur vers la clé générée.
Valeurs de retour
OT_ERROR_NONE
Une nouvelle paire de clés a été générée.
OT_ERROR_NO_BUFS
Échec de l'allocation du tampon pour la génération des clés.
OT_ERROR_NOT_CAPABLE
Fonctionnalité non disponible.
OT_ERROR_FAILED
Échec de la génération de la clé.

otPlatCryptoRandomDeinit

void otPlatCryptoRandomDeinit(
  void
)

Déinitialisez le générateur de nombres pseudo-aléatoires cryptographiquement sécurisés (CSPRNG).

otPlatCryptoRandomGet

otError otPlatCryptoRandomGet(
  uint8_t *aBuffer,
  uint16_t aSize
)

Remplis un tampon donné avec des octets aléatoires sécurisés cryptographiquement.

Détails
Paramètres
[out] aBuffer
Pointeur vers un tampon à remplir avec les octets aléatoires.
[in] aSize
Taille du tampon (nombre d'octets à remplir).
Valeurs de retour
OT_ERROR_NONE
Le tampon a bien été rempli avec des valeurs aléatoires.
OT_ERROR_FAILED
Échec de l'opération.

otPlatCryptoRandomInit

void otPlatCryptoRandomInit(
  void
)

Initialiser le générateur de nombres pseudo-aléatoires chiffrés

otPlatCryptoSha256Deinit

otError otPlatCryptoSha256Deinit(
  otCryptoContext *aContext
)

Annulez l'initialisation de l'opération SHA-256.

Détails
Paramètres
[in] aContext
Contexte pour l'opération SHA-256
Valeurs de retour
OT_ERROR_NONE
L'initialisation de l'opération SHA-256 a bien été annulée.
OT_ERROR_FAILED
Échec de l'annulation de l'initialisation de l'opération SHA-256.
OT_ERROR_INVALID_ARGS
aContext était NULL

otPlatCryptoSha256Finish

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

Terminez l'opération SHA-256.

Détails
Paramètres
[in] aContext
Contexte pour l'opération SHA-256
[in] aHash
Un pointeur vers le tampon de sortie, où le hachage doit être stocké.
[in] aHashSize
Longueur de aHash en octets.
Valeurs de retour
OT_ERROR_NONE
L'opération SHA-256 a bien été effectuée.
OT_ERROR_FAILED
Échec de l'opération SHA-256.
OT_ERROR_INVALID_ARGS
aContext ou aHash était NULL

otPlatCryptoSha256Init

otError otPlatCryptoSha256Init(
  otCryptoContext *aContext
)

Initialisez l'opération SHA-256.

Détails
Paramètres
[in] aContext
Contexte pour l'opération SHA-256
Valeurs de retour
OT_ERROR_NONE
L'opération SHA-256 a bien été initialisée.
OT_ERROR_FAILED
Échec de l'initialisation de l'opération SHA-256.
OT_ERROR_INVALID_ARGS
aContext était NULL

otPlatCryptoSha256Start

otError otPlatCryptoSha256Start(
  otCryptoContext *aContext
)

Démarrez l'opération SHA-256.

Détails
Paramètres
[in] aContext
Contexte pour l'opération SHA-256
Valeurs de retour
OT_ERROR_NONE
L'opération SHA-256 a bien été lancée.
OT_ERROR_FAILED
Échec du démarrage de l'opération SHA-256.
OT_ERROR_INVALID_ARGS
aContext était NULL

otPlatCryptoSha256Update

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

Mise à jour de l'opération SHA-256 avec la nouvelle entrée.

Détails
Paramètres
[in] aContext
Contexte pour l'opération SHA-256
[in] aBuf
Pointeur vers le tampon d'entrée.
[in] aBufLength
Longueur de aBuf en octets.
Valeurs de retour
OT_ERROR_NONE
SHA-256 a bien été mis à jour avec la nouvelle opération d'entrée.
OT_ERROR_FAILED
Échec de la mise à jour de l'opération SHA-256.
OT_ERROR_INVALID_ARGS
aContext ou aBuf était NULL

Macros

OT_CRYPTO_ECDSA_MAX_DER_SIZE

 OT_CRYPTO_ECDSA_MAX_DER_SIZE 125

Taille maximale de la mémoire tampon (en octets) pour représenter la paire de clés EDCSA au format DER.

OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE

 OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE 64

Taille de la mémoire tampon (en octets) destinée à représenter la clé publique EDCSA.

OT_CRYPTO_ECDSA_SIGNATURE_SIZE

 OT_CRYPTO_ECDSA_SIGNATURE_SIZE 64

Taille de la mémoire tampon (en octets) représentant la signature EDCSA.

OT_CRYPTO_PBDKF2_MAX_SALT_SIZE

 OT_CRYPTO_PBDKF2_MAX_SALT_SIZE 30

Longueur maximale du SALT PBKDF2: préfixe salé (6) + panid étendu (8) + nom du réseau (16)

OT_CRYPTO_SHA256_HASH_SIZE

 OT_CRYPTO_SHA256_HASH_SIZE 32

Longueur du hachage SHA256 (en octets).

Ressources

Les sujets de référence de l'API OpenThread proviennent du code source, disponible sur GitHub. Pour en savoir plus ou pour contribuer à notre documentation, consultez la section Ressources.