Krypto – Plattform

Dieses Modul enthält die Plattformabstraktion für Krypto.

Zusammenfassung

Aufzählungen

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
Definiert die Schlüsselnutzungs-Flags.
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
Definiert die Schlüsselalgorithmen.
otCryptoKeyStorage{
  OT_CRYPTO_KEY_STORAGE_VOLATILE,
  OT_CRYPTO_KEY_STORAGE_PERSISTENT
}
enum
Definiert die Schlüsselspeichertypen.
otCryptoKeyType{
  OT_CRYPTO_KEY_TYPE_RAW,
  OT_CRYPTO_KEY_TYPE_AES,
  OT_CRYPTO_KEY_TYPE_HMAC,
  OT_CRYPTO_KEY_TYPE_ECDSA
}
enum
Definiert die Schlüsseltypen.

Typedefs

otCryptoContext typedef
otCryptoKey typedef
struct otCryptoKey
otCryptoKeyRef typedef
uint32_t
Dieser Datentyp stellt den Schlüsselbezug dar.
otPlatCryptoEcdsaKeyPair typedef
otPlatCryptoEcdsaPublicKey typedef
otPlatCryptoEcdsaSignature typedef
otPlatCryptoSha256Hash typedef
Stellt einen SHA-256-Hash dar.

Variablen

OT_TOOL_PACKED_END

Funktionen

otPlatCryptoAesEncrypt(otCryptoContext *aContext, const uint8_t *aInput, uint8_t *aOutput)
Verschlüsseln Sie die angegebenen Daten.
otPlatCryptoAesFree(otCryptoContext *aContext)
Geben Sie den AES-Kontext kostenlos.
otPlatCryptoAesInit(otCryptoContext *aContext)
Initialisieren Sie den AES-Vorgang.
otPlatCryptoAesSetKey(otCryptoContext *aContext, const otCryptoKey *aKey)
Legen Sie den Schlüssel für den AES-Vorgang fest.
otPlatCryptoDestroyKey(otCryptoKeyRef aKeyRef)
Einen in der PSA ITS gespeicherten Schlüssel löschen.
otPlatCryptoEcdsaExportPublicKey(otCryptoKeyRef aKeyRef, otPlatCryptoEcdsaPublicKey *aPublicKey)
Ruft den zugehörigen öffentlichen Schlüssel aus der übergebenen Schlüsselreferenz ab.
otPlatCryptoEcdsaGenerateAndImportKey(otCryptoKeyRef aKeyRef)
Generieren und importieren Sie ein neues ECDSA-Schlüsselpaar bei einer bestandenen Referenz.
otPlatCryptoEcdsaGenerateKey(otPlatCryptoEcdsaKeyPair *aKeyPair)
Generieren Sie ein neues ECDSA-Schlüsselpaar und füllen Sie den Ausgabezwischenspeicher.
otPlatCryptoEcdsaGetPublicKey(const otPlatCryptoEcdsaKeyPair *aKeyPair, otPlatCryptoEcdsaPublicKey *aPublicKey)
Rufen Sie den zugehörigen öffentlichen Schlüssel aus dem Eingabekontext ab.
otPlatCryptoEcdsaSign(const otPlatCryptoEcdsaKeyPair *aKeyPair, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
Berechnen Sie die ECDSA-Signatur für eine gehashte Nachricht mithilfe des privaten Schlüssels aus dem Eingabekontext.
otPlatCryptoEcdsaSignUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
Berechnen Sie die ECDSA-Signatur für eine Hash-Nachricht mithilfe der übergebenen Schlüsselreferenz.
otPlatCryptoEcdsaVerify(const otPlatCryptoEcdsaPublicKey *aPublicKey, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
Verwenden Sie den Schlüssel aus dem Eingabekontext, um die ECDSA-Signatur einer gehashten Nachricht zu prüfen.
otPlatCryptoEcdsaVerifyUsingKeyRef(otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
Verwenden Sie „keyref“, um die ECDSA-Signatur einer Hash-Nachricht zu verifizieren.
otPlatCryptoExportKey(otCryptoKeyRef aKeyRef, uint8_t *aBuffer, size_t aBufferLen, size_t *aKeyLen)
Einen in PSA ITS gespeicherten Schlüssel exportieren.
otPlatCryptoHasKey(otCryptoKeyRef aKeyRef)
bool
Prüft, ob der übergebenen Schlüsselreferenz ein Schlüssel in PSA ITS zugeordnet ist.
otPlatCryptoHkdfDeinit(otCryptoContext *aContext)
Initialisieren Sie den HKDF-Kontext.
otPlatCryptoHkdfExpand(otCryptoContext *aContext, const uint8_t *aInfo, uint16_t aInfoLength, uint8_t *aOutputKey, uint16_t aOutputKeyLength)
Führen Sie den HKDF-Maximierungsschritt durch.
otPlatCryptoHkdfExtract(otCryptoContext *aContext, const uint8_t *aSalt, uint16_t aSaltLength, const otCryptoKey *aInputKey)
HKDF-Extraktionsschritt ausführen.
otPlatCryptoHkdfInit(otCryptoContext *aContext)
Initialisieren Sie den HKDF-Kontext.
otPlatCryptoHmacSha256Deinit(otCryptoContext *aContext)
Heben Sie die Initialisierung des HMAC-Vorgangs auf.
otPlatCryptoHmacSha256Finish(otCryptoContext *aContext, uint8_t *aBuf, size_t aBufLength)
Schließen Sie den HMAC-Vorgang ab.
otPlatCryptoHmacSha256Init(otCryptoContext *aContext)
Initialisieren Sie den HMAC-Vorgang.
otPlatCryptoHmacSha256Start(otCryptoContext *aContext, const otCryptoKey *aKey)
HMAC-Vorgang starten.
otPlatCryptoHmacSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
HMAC-Vorgang mit neuer Eingabe aktualisieren
otPlatCryptoImportKey(otCryptoKeyRef *aKeyRef, otCryptoKeyType aKeyType, otCryptoKeyAlgorithm aKeyAlgorithm, int aKeyUsage, otCryptoKeyStorage aKeyPersistence, const uint8_t *aKey, size_t aKeyLen)
Importieren Sie einen Schlüssel in PSA ITS.
otPlatCryptoInit(void)
void
Initialisieren Sie das Crypto-Modul.
otPlatCryptoPbkdf2GenerateKey(const uint8_t *aPassword, uint16_t aPasswordLen, const uint8_t *aSalt, uint16_t aSaltLen, uint32_t aIterationCounter, uint16_t aKeyLen, uint8_t *aKey)
Führen Sie PKCS#5 PBKDF2 mit CMAC (AES-CMAC-PRF-128) durch.
otPlatCryptoRandomDeinit(void)
void
Deinitialisieren des kryptografisch sicheren Pseudozufallszahlengenerators (CSPRNG)
otPlatCryptoRandomGet(uint8_t *aBuffer, uint16_t aSize)
Füllt einen bestimmten Puffer mit kryptografisch sicheren zufälligen Byte.
otPlatCryptoRandomInit(void)
void
Initialisieren Sie den kryptografisch sicheren Pseudozufallszahlengenerator (CSPRNG).
otPlatCryptoSha256Deinit(otCryptoContext *aContext)
Initialisieren Sie den SHA-256-Vorgang.
otPlatCryptoSha256Finish(otCryptoContext *aContext, uint8_t *aHash, uint16_t aHashSize)
Beenden Sie den SHA-256-Vorgang.
otPlatCryptoSha256Init(otCryptoContext *aContext)
Initialisieren Sie den SHA-256-Vorgang.
otPlatCryptoSha256Start(otCryptoContext *aContext)
SHA-256-Vorgang starten.
otPlatCryptoSha256Update(otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
SHA-256-Vorgang mit neuer Eingabe aktualisieren.

Strukturen

otCryptoContext

Speichert das Kontextobjekt für Plattform-APIs.

otCryptoKey

Stellt das für Crypto-Vorgänge erforderliche Schlüsselmaterial dar.

otPlatCryptoEcdsaKeyPair

Stellt ein ECDSA-Schlüsselpaar (öffentliche und private Schlüssel) dar.

otPlatCryptoEcdsaPublicKey

Stellt einen öffentlichen ECDSA-Schlüssel dar.

otPlatCryptoEcdsaSignature

Stellt eine ECDSA-Signatur dar.

otPlatCryptoSha256Hash

Stellt einen SHA-256-Hash dar.

Aufzählungen

Anonyme Aufzählung

 anonymous enum

Definiert die Schlüsselnutzungs-Flags.

Attribute
OT_CRYPTO_KEY_USAGE_DECRYPT

Schlüsselverwendung: AES ECB.

OT_CRYPTO_KEY_USAGE_ENCRYPT

Schlüsselverwendung: Verschlüsselung (vom Anbieter definiert).

OT_CRYPTO_KEY_USAGE_EXPORT

Schlüsselverwendung: Der Schlüssel kann exportiert werden.

OT_CRYPTO_KEY_USAGE_NONE

Schlüsselverwendung: Die Schlüsselverwendung ist leer.

OT_CRYPTO_KEY_USAGE_SIGN_HASH

Schlüsselverwendung: Signatur-Hash.

OT_CRYPTO_KEY_USAGE_VERIFY_HASH

Schlüsselverwendung: Hash überprüfen.

otCryptoKeyAlgorithm

 otCryptoKeyAlgorithm

Definiert die Schlüsselalgorithmen.

Attribute
OT_CRYPTO_KEY_ALG_AES_ECB

Schlüsselalgorithmus: AES ECB.

OT_CRYPTO_KEY_ALG_ECDSA

Schlüsselalgorithmus: ECDSA.

OT_CRYPTO_KEY_ALG_HMAC_SHA_256

Schlüsselalgorithmus: HMAC SHA-256.

OT_CRYPTO_KEY_ALG_VENDOR

Schlüsselalgorithmus: Anbieterdefiniert.

otCryptoKeyStorage

 otCryptoKeyStorage

Definiert die Schlüsselspeichertypen.

Attribute
OT_CRYPTO_KEY_STORAGE_PERSISTENT

Schlüsselpersistenz: Der Schlüssel ist dauerhaft.

OT_CRYPTO_KEY_STORAGE_VOLATILE

Schlüsselpersistenz: Der Schlüssel ist flüchtig.

otCryptoKeyType

 otCryptoKeyType

Definiert die Schlüsseltypen.

Attribute
OT_CRYPTO_KEY_TYPE_AES

Schlüsseltyp: AES.

OT_CRYPTO_KEY_TYPE_ECDSA

Schlüsseltyp: ECDSA.

OT_CRYPTO_KEY_TYPE_HMAC

Schlüsseltyp: HMAC.

OT_CRYPTO_KEY_TYPE_RAW

Schlüsseltyp: Rohdaten.

Typedefs

otCryptoContext

struct otCryptoContext otCryptoContext

otCryptoKey

struct otCryptoKey otCryptoKey

otCryptoKeyRef

uint32_t otCryptoKeyRef

Dieser Datentyp stellt den Schlüsselbezug dar.

otPlatCryptoEcdsaKeyPair

struct otPlatCryptoEcdsaKeyPair otPlatCryptoEcdsaKeyPair

otPlatCryptoEcdsaPublicKey

struct otPlatCryptoEcdsaPublicKey otPlatCryptoEcdsaPublicKey

otPlatCryptoEcdsaSignature

struct otPlatCryptoEcdsaSignature otPlatCryptoEcdsaSignature

otPlatCryptoSha256Hash

struct otPlatCryptoSha256Hash otPlatCryptoSha256Hash

Stellt einen SHA-256-Hash dar.

Variablen

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otPlatCryptoSha256Hash OT_TOOL_PACKED_END

Funktionen

otPlatCryptoAesEncrypt

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

Verschlüsseln Sie die angegebenen Daten.

Details
Parameter
[in] aContext
Kontext für AES-Vorgang.
[in] aInput
Zeiger auf den Eingabepuffer.
[in] aOutput
Zeiger auf den Ausgabepuffer.
Rückgabewerte
OT_ERROR_NONE
aInput wurde verschlüsselt.
OT_ERROR_FAILED
aInput konnte nicht verschlüsselt werden.
OT_ERROR_INVALID_ARGS
aContext oder aKey oder aOutput waren NULL

otPlatCryptoAesFree

otError otPlatCryptoAesFree(
  otCryptoContext *aContext
)

Geben Sie den AES-Kontext kostenlos.

Details
Parameter
[in] aContext
Kontext für AES-Vorgang.
Rückgabewerte
OT_ERROR_NONE
AES-Kontext wurde freigegeben.
OT_ERROR_FAILED
AES-Kontext konnte nicht freigegeben werden.
OT_ERROR_INVALID_ARGS
aContext war NULL

otPlatCryptoAesInit

otError otPlatCryptoAesInit(
  otCryptoContext *aContext
)

Initialisieren Sie den AES-Vorgang.

Details
Parameter
[in] aContext
Kontext für AES-Vorgang.
Rückgabewerte
OT_ERROR_NONE
AES-Vorgang erfolgreich initialisiert.
OT_ERROR_FAILED
AES-Vorgang konnte nicht initialisiert werden.
OT_ERROR_INVALID_ARGS
aContext war NULL
OT_ERROR_NO_BUFS
Kontext kann nicht zugewiesen werden.

otPlatCryptoAesSetKey

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

Legen Sie den Schlüssel für den AES-Vorgang fest.

Details
Parameter
[in] aContext
Kontext für AES-Vorgang.
[out] aKey
Schlüssel für den AES-Vorgang.
Rückgabewerte
OT_ERROR_NONE
Schlüssel für AES-Vorgang erfolgreich festgelegt.
OT_ERROR_FAILED
Der Schlüssel für den AES-Vorgang konnte nicht festgelegt werden.
OT_ERROR_INVALID_ARGS
aContext oder aKey war NULL

otPlatCryptoDestroyKey

otError otPlatCryptoDestroyKey(
  otCryptoKeyRef aKeyRef
)

Einen in der PSA ITS gespeicherten Schlüssel löschen.

Details
Parameter
[in] aKeyRef
Die zu löschende Schlüsselreferenz
Rückgabewerte
OT_ERROR_NONE
Der Schlüssel wurde gelöscht.
OT_ERROR_FAILED
Der Schlüssel konnte nicht gelöscht werden.

otPlatCryptoEcdsaExportPublicKey

otError otPlatCryptoEcdsaExportPublicKey(
  otCryptoKeyRef aKeyRef,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

Ruft den zugehörigen öffentlichen Schlüssel aus der übergebenen Schlüsselreferenz ab.

Der öffentliche Schlüssel wird abhängig von der verwendeten kryptografischen Back-End-Bibliothek unterschiedlich gespeichert (OPENTHREAD_CONFIG_CRYPTO_LIB).

Diese API muss dafür sorgen, dass der öffentliche Schlüssel als Bytesequenzdarstellung eines unkomprimierten Kurvenpunkts (RFC 6605 – Sek. 4) zurückgegeben wird.

Details
Parameter
[in] aKeyRef
Schlüsselreferenz auf den Slot, in dem das Schlüsselpaar gespeichert ist.
[out] aPublicKey
Ein Zeiger auf eine öffentliche ECDSA-Schlüsselstruktur zum Speichern des öffentlichen Schlüssels.
Rückgabewerte
OT_ERROR_NONE
Der öffentliche Schlüssel wurde abgerufen und aBuffer wird aktualisiert.
OT_ERROR_PARSE
Das Schlüsselpaar-DER-Format konnte nicht geparst werden (ungültiges Format).
OT_ERROR_INVALID_ARGS
aContext ist NULL.

otPlatCryptoEcdsaGenerateAndImportKey

otError otPlatCryptoEcdsaGenerateAndImportKey(
  otCryptoKeyRef aKeyRef
)

Generieren und importieren Sie ein neues ECDSA-Schlüsselpaar bei einer bestandenen Referenz.

Details
Parameter
[in] aKeyRef
Schlüsselreferenz auf den Slot, in dem das Schlüsselpaar gespeichert ist.
Rückgabewerte
OT_ERROR_NONE
Ein neues Schlüsselpaar wurde generiert.
OT_ERROR_NO_BUFS
Zwischenspeicher für Schlüsselgenerierung konnte nicht zugewiesen werden.
OT_ERROR_NOT_CAPABLE
Funktion nicht unterstützt.
OT_ERROR_FAILED
Schlüsselpaar konnte nicht generiert werden.

otPlatCryptoEcdsaGenerateKey

otError otPlatCryptoEcdsaGenerateKey(
  otPlatCryptoEcdsaKeyPair *aKeyPair
)

Generieren Sie ein neues ECDSA-Schlüsselpaar und füllen Sie den Ausgabezwischenspeicher.

Details
Parameter
[out] aKeyPair
Ein Zeiger auf eine ECDSA-Schlüsselpaarstruktur, um das generierte Schlüsselpaar zu speichern.
Rückgabewerte
OT_ERROR_NONE
Ein neues Schlüsselpaar wurde generiert.
OT_ERROR_NO_BUFS
Zwischenspeicher für Schlüsselgenerierung konnte nicht zugewiesen werden.
OT_ERROR_NOT_CAPABLE
Funktion nicht unterstützt.
OT_ERROR_FAILED
Schlüsselpaar konnte nicht generiert werden.

otPlatCryptoEcdsaGetPublicKey

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

Rufen Sie den zugehörigen öffentlichen Schlüssel aus dem Eingabekontext ab.

Details
Parameter
[in] aKeyPair
Ein Zeiger auf eine ECDSA-Schlüsselpaarstruktur, in der das Schlüsselpaar gespeichert ist.
[out] aPublicKey
Ein Zeiger auf eine öffentliche ECDSA-Schlüsselstruktur zum Speichern des öffentlichen Schlüssels.
Rückgabewerte
OT_ERROR_NONE
Der öffentliche Schlüssel wurde abgerufen und aBuffer wird aktualisiert.
OT_ERROR_PARSE
Das Schlüsselpaar-DER-Format konnte nicht geparst werden (ungültiges Format).
OT_ERROR_INVALID_ARGS
aContext ist NULL.

otPlatCryptoEcdsaSign

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

Berechnen Sie die ECDSA-Signatur für eine gehashte Nachricht mithilfe des privaten Schlüssels aus dem Eingabekontext.

Verwendet das Verfahren zur Generierung deterministischer digitaler Signaturen gemäß RFC 6979.

Details
Parameter
[in] aKeyPair
Ein Zeiger auf eine ECDSA-Schlüsselpaarstruktur, in der das Schlüsselpaar gespeichert ist.
[in] aHash
Ein Zeiger auf eine SHA-256-Hash-Struktur, in der der Hash-Wert für die Signaturberechnung gespeichert ist.
[out] aSignature
Ein Zeiger auf eine ECDSA-Signaturstruktur, um die berechnete Signatur auszugeben.
Rückgabewerte
OT_ERROR_NONE
Die Signatur wurde berechnet. aSignature wurde aktualisiert.
OT_ERROR_PARSE
Das Schlüsselpaar-DER-Format konnte nicht geparst werden (ungültiges Format).
OT_ERROR_NO_BUFS
Puffer für Signaturberechnung konnte nicht zugewiesen werden.
OT_ERROR_INVALID_ARGS
aContext ist NULL.

otPlatCryptoEcdsaSignUsingKeyRef

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

Berechnen Sie die ECDSA-Signatur für eine Hash-Nachricht mithilfe der übergebenen Schlüsselreferenz.

Verwendet das Verfahren zur Generierung deterministischer digitaler Signaturen gemäß RFC 6979.

Details
Parameter
[in] aKeyRef
Schlüsselreferenz auf den Slot, in dem das Schlüsselpaar gespeichert ist.
[in] aHash
Ein Zeiger auf eine SHA-256-Hash-Struktur, in der der Hash-Wert für die Signaturberechnung gespeichert ist.
[out] aSignature
Ein Zeiger auf eine ECDSA-Signaturstruktur, um die berechnete Signatur auszugeben.
Rückgabewerte
OT_ERROR_NONE
Die Signatur wurde berechnet. aSignature wurde aktualisiert.
OT_ERROR_PARSE
Das Schlüsselpaar-DER-Format konnte nicht geparst werden (ungültiges Format).
OT_ERROR_NO_BUFS
Puffer für Signaturberechnung konnte nicht zugewiesen werden.
OT_ERROR_INVALID_ARGS
aContext ist NULL.

otPlatCryptoEcdsaVerify

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

Verwenden Sie den Schlüssel aus dem Eingabekontext, um die ECDSA-Signatur einer gehashten Nachricht zu prüfen.

Details
Parameter
[in] aPublicKey
Ein Zeiger auf eine öffentliche ECDSA-Schlüsselstruktur, in der der öffentliche Schlüssel für die Signaturprüfung gespeichert ist.
[in] aHash
Ein Zeiger auf eine SHA-256-Hash-Struktur, in der der Hash-Wert für die Signaturprüfung gespeichert ist.
[in] aSignature
Ein Zeiger auf eine ECDSA-Signaturstruktur, in der der zu überprüfende Signaturwert gespeichert ist.
Rückgabewerte
OT_ERROR_NONE
Die Signatur wurde verifiziert.
OT_ERROR_SECURITY
Die Signatur ist ungültig.
OT_ERROR_INVALID_ARGS
Der Schlüssel oder Hash ist ungültig.
OT_ERROR_NO_BUFS
Zwischenspeicher für Signaturprüfung konnte nicht zugewiesen werden.

otPlatCryptoEcdsaVerifyUsingKeyRef

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

Verwenden Sie „keyref“, um die ECDSA-Signatur einer Hash-Nachricht zu verifizieren.

Details
Parameter
[in] aKeyRef
Schlüsselreferenz auf den Slot, in dem das Schlüsselpaar gespeichert ist.
[in] aHash
Ein Zeiger auf eine SHA-256-Hash-Struktur, in der der Hash-Wert für die Signaturprüfung gespeichert ist.
[in] aSignature
Ein Zeiger auf eine ECDSA-Signaturstruktur, in der der zu überprüfende Signaturwert gespeichert ist.
Rückgabewerte
OT_ERROR_NONE
Die Signatur wurde verifiziert.
OT_ERROR_SECURITY
Die Signatur ist ungültig.
OT_ERROR_INVALID_ARGS
Der Schlüssel oder Hash ist ungültig.
OT_ERROR_NO_BUFS
Zwischenspeicher für Signaturprüfung konnte nicht zugewiesen werden.

otPlatCryptoExportKey

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

Einen in PSA ITS gespeicherten Schlüssel exportieren.

Details
Parameter
[in] aKeyRef
Die Schlüsselreferenz, die für kryptografische Vorgänge verwendet werden soll.
[out] aBuffer
Zeiger auf den Puffer, in den der Schlüssel exportiert werden muss.
[in] aBufferLen
Länge des Zwischenspeichers, der zum Speichern des exportierten Schlüssels übergeben wird.
[out] aKeyLen
Zeiger, mit dem die Länge des exportierten Schlüssels zurückgegeben wird.
Rückgabewerte
OT_ERROR_NONE
aKeyRef erfolgreich exportiert.
OT_ERROR_FAILED
aKeyRef konnte nicht exportiert werden.
OT_ERROR_INVALID_ARGS
aBuffer war NULL

otPlatCryptoHasKey

bool otPlatCryptoHasKey(
  otCryptoKeyRef aKeyRef
)

Prüft, ob der übergebenen Schlüsselreferenz ein Schlüssel in PSA ITS zugeordnet ist.

Details
Parameter
[in] aKeyRef
Die zu prüfende Schlüsselreferenz.
Rückgabewerte
TRUE
Mit aKeyRef ist ein Schlüssel verknüpft.
FALSE
Mit aKeyRef ist kein Schlüssel verknüpft.

otPlatCryptoHkdfDeinit

otError otPlatCryptoHkdfDeinit(
  otCryptoContext *aContext
)

Initialisieren Sie den HKDF-Kontext.

Details
Parameter
[in] aContext
Kontext für den HKDF-Vorgang.
Rückgabewerte
OT_ERROR_NONE
Initialisierung des HKDF-Vorgangs wurde aufgehoben.
OT_ERROR_FAILED
HKDF-Vorgang konnte nicht rückgängig gemacht werden.
OT_ERROR_INVALID_ARGS
aContext war NULL

otPlatCryptoHkdfExpand

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

Führen Sie den HKDF-Maximierungsschritt durch.

Details
Parameter
[in] aContext
Vorgangskontext für den HKDF-Vorgang.
[in] aInfo
Zeiger auf die Informationssequenz.
[in] aInfoLength
Länge der Informationssequenz.
[out] aOutputKey
Zeiger auf den Ausgabeschlüssel.
[in] aOutputKeyLength
Größe des Ausgabeschlüsselpuffers.
Rückgabewerte
OT_ERROR_NONE
HKDF-Einblendung war erfolgreich.
OT_ERROR_FAILED
HKDF-Erweiterung fehlgeschlagen.
OT_ERROR_INVALID_ARGS
aContext war NULL

otPlatCryptoHkdfExtract

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

HKDF-Extraktionsschritt ausführen.

Details
Parameter
[in] aContext
Vorgangskontext für den HKDF-Vorgang.
[in] aSalt
Zeiger auf Salt für HKDF.
[in] aSaltLength
Salzlänge.
[in] aInputKey
Zeiger auf den Eingabeschlüssel.
Rückgabewerte
OT_ERROR_NONE
HKDF-Extraktion war erfolgreich.
OT_ERROR_FAILED
HKDF-Extrahieren fehlgeschlagen.

otPlatCryptoHkdfInit

otError otPlatCryptoHkdfInit(
  otCryptoContext *aContext
)

Initialisieren Sie den HKDF-Kontext.

Details
Parameter
[in] aContext
Kontext für den HKDF-Vorgang.
Rückgabewerte
OT_ERROR_NONE
AES-Vorgang erfolgreich initialisiert.
OT_ERROR_FAILED
AES-Vorgang konnte nicht initialisiert werden.
OT_ERROR_INVALID_ARGS
aContext war NULL

otPlatCryptoHmacSha256Deinit

otError otPlatCryptoHmacSha256Deinit(
  otCryptoContext *aContext
)

Heben Sie die Initialisierung des HMAC-Vorgangs auf.

Details
Parameter
[in] aContext
Kontext für HMAC-Vorgang.
Rückgabewerte
OT_ERROR_NONE
Initialisierung des HMAC-Vorgangs wurde aufgehoben.
OT_ERROR_FAILED
Initialisierung des HMAC-Vorgangs konnte nicht aufgehoben werden.
OT_ERROR_INVALID_ARGS
aContext war NULL

otPlatCryptoHmacSha256Finish

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

Schließen Sie den HMAC-Vorgang ab.

Details
Parameter
[in] aContext
Kontext für HMAC-Vorgang.
[out] aBuf
Ein Zeiger auf den Ausgabepuffer.
[in] aBufLength
Die Länge von aBuf in Byte.
Rückgabewerte
OT_ERROR_NONE
HMAC-Vorgang wurde abgeschlossen.
OT_ERROR_FAILED
HMAC-Vorgang konnte nicht abgeschlossen werden.
OT_ERROR_INVALID_ARGS
aContext oder aBuf war NULL

otPlatCryptoHmacSha256Init

otError otPlatCryptoHmacSha256Init(
  otCryptoContext *aContext
)

Initialisieren Sie den HMAC-Vorgang.

Details
Parameter
[in] aContext
Kontext für HMAC-Vorgang.
Rückgabewerte
OT_ERROR_NONE
HMAC-Vorgang wurde initialisiert.
OT_ERROR_FAILED
HMAC-Vorgang konnte nicht initialisiert werden.
OT_ERROR_INVALID_ARGS
aContext war NULL

otPlatCryptoHmacSha256Start

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

HMAC-Vorgang starten.

Details
Parameter
[in] aContext
Kontext für HMAC-Vorgang.
[in] aKey
Schlüsselmaterial, das für den HMAC-Vorgang verwendet werden soll.
Rückgabewerte
OT_ERROR_NONE
HMAC-Vorgang wurde gestartet.
OT_ERROR_FAILED
HMAC-Vorgang konnte nicht gestartet werden.
OT_ERROR_INVALID_ARGS
aContext oder aKey war NULL

otPlatCryptoHmacSha256Update

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

HMAC-Vorgang mit neuer Eingabe aktualisieren

Details
Parameter
[in] aContext
Kontext für HMAC-Vorgang.
[in] aBuf
Ein Zeiger auf den Eingabepuffer.
[in] aBufLength
Die Länge von aBuf in Byte.
Rückgabewerte
OT_ERROR_NONE
HMAC wurde mit neuem Eingabevorgang aktualisiert.
OT_ERROR_FAILED
HMAC-Vorgang konnte nicht aktualisiert werden.
OT_ERROR_INVALID_ARGS
aContext oder aBuf war NULL

otPlatCryptoImportKey

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

Importieren Sie einen Schlüssel in PSA ITS.

Wenn OT_CRYPTO_KEY_STORAGE_VOLATILE für aKeyPersistence übergeben wird und dann aKeyRef ausgegeben wird, spielt der Ausgangswert keine Rolle und die Plattform-API MUSS ihn aktualisieren, um die neue Schlüsselreferenz zurückzugeben.

Details
Parameter
[in,out] aKeyRef
Zeiger auf die Schlüsselreferenz, die für kryptografische Vorgänge verwendet werden soll.
[in] aKeyType
Schlüsseltypcodierung für den Schlüssel.
[in] aKeyAlgorithm
Codierung des Schlüsselalgorithmus für den Schlüssel.
[in] aKeyUsage
Key Usage-Codierung für den Schlüssel (Kombinationen von OT_CRYPTO_KEY_USAGE_*).
[in] aKeyPersistence
Schlüsselpersistenz für diesen Schlüssel
[in] aKey
Der zu importierende Schlüssel.
[in] aKeyLen
Länge des zu importierenden Schlüssels.
Rückgabewerte
OT_ERROR_NONE
Der Schlüssel wurde importiert.
OT_ERROR_FAILED
Der Schlüssel konnte nicht importiert werden.
OT_ERROR_INVALID_ARGS
aKey wurde auf NULL gesetzt.

Diese API wird nur vom OT Core verwendet, wenn OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE aktiviert ist.

otPlatCryptoInit

void otPlatCryptoInit(
  void
)

Initialisieren Sie das Crypto-Modul.

otPlatCryptoPbkdf2GenerateKey (Schlüssel: 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
)

Führen Sie PKCS#5 PBKDF2 mit CMAC (AES-CMAC-PRF-128) durch.

Details
Parameter
[in] aPassword
Passwort zum Generieren des Schlüssels.
[in] aPasswordLen
Länge des Passworts.
[in] aSalt
Salt, der beim Generieren des Schlüssels verwendet werden soll.
[in] aSaltLen
Salzlänge.
[in] aIterationCounter
Anzahl der Iterationen.
[in] aKeyLen
Länge des generierten Schlüssels in Byte.
[out] aKey
Ein Zeiger auf den generierten Schlüssel.
Rückgabewerte
OT_ERROR_NONE
Ein neues Schlüsselpaar wurde generiert.
OT_ERROR_NO_BUFS
Zwischenspeicher für Schlüsselgenerierung konnte nicht zugewiesen werden.
OT_ERROR_NOT_CAPABLE
Funktion nicht unterstützt.
OT_ERROR_FAILED
Schlüssel konnte nicht generiert werden.

otPlatCryptoRandomDeinit

void otPlatCryptoRandomDeinit(
  void
)

Deinitialisieren des kryptografisch sicheren Pseudozufallszahlengenerators (CSPRNG)

otPlatCryptoRandomGet

otError otPlatCryptoRandomGet(
  uint8_t *aBuffer,
  uint16_t aSize
)

Füllt einen bestimmten Puffer mit kryptografisch sicheren zufälligen Byte.

Details
Parameter
[out] aBuffer
Ein Zeiger auf einen Puffer, der mit zufälligen Byte gefüllt werden soll.
[in] aSize
Größe des Puffers (Anzahl der zu füllenden Byte).
Rückgabewerte
OT_ERROR_NONE
Puffer wurde mit zufälligen Werten gefüllt.
OT_ERROR_FAILED
Der Vorgang ist fehlgeschlagen.

otPlatCryptoRandomInit

void otPlatCryptoRandomInit(
  void
)

Initialisieren Sie den kryptografisch sicheren Pseudozufallszahlengenerator (CSPRNG).

otPlatCryptoSha256Deinit

otError otPlatCryptoSha256Deinit(
  otCryptoContext *aContext
)

Initialisieren Sie den SHA-256-Vorgang.

Details
Parameter
[in] aContext
Kontext für SHA-256-Vorgang.
Rückgabewerte
OT_ERROR_NONE
Initialisierung des SHA-256-Vorgangs wurde aufgehoben.
OT_ERROR_FAILED
Initialisierung des SHA-256-Vorgangs konnte nicht aufgehoben werden.
OT_ERROR_INVALID_ARGS
aContext war NULL

otPlatCryptoSha256Finish

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

Beenden Sie den SHA-256-Vorgang.

Details
Parameter
[in] aContext
Kontext für SHA-256-Vorgang.
[in] aHash
Ein Zeiger auf den Ausgabepuffer, in dem der Hash gespeichert werden muss.
[in] aHashSize
Die Länge von aHash in Byte.
Rückgabewerte
OT_ERROR_NONE
SHA-256-Vorgang erfolgreich abgeschlossen.
OT_ERROR_FAILED
SHA-256-Vorgang konnte nicht abgeschlossen werden.
OT_ERROR_INVALID_ARGS
aContext oder aHash war NULL

otPlatCryptoSha256Init

otError otPlatCryptoSha256Init(
  otCryptoContext *aContext
)

Initialisieren Sie den SHA-256-Vorgang.

Details
Parameter
[in] aContext
Kontext für SHA-256-Vorgang.
Rückgabewerte
OT_ERROR_NONE
SHA-256-Vorgang wurde initialisiert.
OT_ERROR_FAILED
SHA-256-Vorgang konnte nicht initialisiert werden.
OT_ERROR_INVALID_ARGS
aContext war NULL

otPlatCryptoSha256Start

otError otPlatCryptoSha256Start(
  otCryptoContext *aContext
)

SHA-256-Vorgang starten.

Details
Parameter
[in] aContext
Kontext für SHA-256-Vorgang.
Rückgabewerte
OT_ERROR_NONE
SHA-256-Vorgang wurde gestartet.
OT_ERROR_FAILED
SHA-256-Vorgang konnte nicht gestartet werden.
OT_ERROR_INVALID_ARGS
aContext war NULL

otPlatCryptoSha256Update

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

SHA-256-Vorgang mit neuer Eingabe aktualisieren.

Details
Parameter
[in] aContext
Kontext für SHA-256-Vorgang.
[in] aBuf
Ein Zeiger auf den Eingabepuffer.
[in] aBufLength
Die Länge von aBuf in Byte.
Rückgabewerte
OT_ERROR_NONE
SHA-256 wurde mit einem neuen Eingabevorgang aktualisiert.
OT_ERROR_FAILED
SHA-256-Vorgang konnte nicht aktualisiert werden.
OT_ERROR_INVALID_ARGS
aContext oder aBuf war NULL

Makros

OT_CRYPTO_ECDSA_MAX_DER_SIZE

 OT_CRYPTO_ECDSA_MAX_DER_SIZE 125

Maximale Puffergröße (in Byte) für die Darstellung des EDCSA-Schlüsselpaars im DER-Format.

OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE

 OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE 64

Puffergröße (in Byte) für die Darstellung des öffentlichen EDCSA-Schlüssels.

OT_CRYPTO_ECDSA_SIGNATURE_SIZE

 OT_CRYPTO_ECDSA_SIGNATURE_SIZE 64

Puffergröße (in Byte) für die Darstellung der EDCSA-Signatur.

OT_CRYPTO_PBDKF2_MAX_SALT_SIZE

 OT_CRYPTO_PBDKF2_MAX_SALT_SIZE 30

Max. PBKDF2-SALT-Länge: Salt-Präfix (6) + Extended-Panid (8) + Netzwerkname (16)

OT_CRYPTO_SHA256_HASH_SIZE

 OT_CRYPTO_SHA256_HASH_SIZE 32

Länge des SHA256-Hashs in Byte.

Ressourcen

OpenThread API-Referenzthemen stammen aus dem Quellcode, der auf GitHub verfügbar ist. Weitere Informationen finden Sie unter Ressourcen. Dort können Sie auch einen Beitrag zu unserer Dokumentation leisten.