Крипто — Платформа

Этот модуль включает абстракцию платформы для Crypto.

Краткое содержание

Перечисления

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
}
перечисление
Определяет флаги использования ключей.
otCryptoKeyAlgorithm {
OT_CRYPTO_KEY_ALG_VENDOR ,
OT_CRYPTO_KEY_ALG_AES_ECB ,
OT_CRYPTO_KEY_ALG_HMAC_SHA_256 ,
OT_CRYPTO_KEY_ALG_ECDSA
}
перечисление
Определяет ключевые алгоритмы.
otCryptoKeyStorage {
OT_CRYPTO_KEY_STORAGE_VOLATILE ,
OT_CRYPTO_KEY_STORAGE_PERSISTENT
}
перечисление
Определяет типы хранения ключей.
otCryptoKeyType {
OT_CRYPTO_KEY_TYPE_RAW ,
OT_CRYPTO_KEY_TYPE_AES ,
OT_CRYPTO_KEY_TYPE_HMAC ,
OT_CRYPTO_KEY_TYPE_ECDSA
}
перечисление
Определяет типы ключей.

Определения типов

otCryptoContext определение типа
otCryptoKey определение типа
struct otCryptoKey
otCryptoKeyRef определение типа
uint32_t
Этот тип данных представляет ключевую ссылку.
otPlatCryptoEcdsaKeyPair определение типа
otPlatCryptoEcdsaPublicKey определение типа
otPlatCryptoEcdsaSignature определение типа
otPlatCryptoSha256Hash определение типа
Представляет хэш SHA-256.

Переменные

OT_TOOL_PACKED_END

Функции

otPlatCryptoAesEncrypt ( otCryptoContext *aContext, const uint8_t *aInput, uint8_t *aOutput)
Зашифруйте данные.
otPlatCryptoAesFree ( otCryptoContext *aContext)
Освободите контекст AES.
otPlatCryptoAesInit ( otCryptoContext *aContext)
Инициализируйте операцию AES.
otPlatCryptoAesSetKey ( otCryptoContext *aContext, const otCryptoKey *aKey)
Установите ключ для работы AES.
otPlatCryptoDestroyKey ( otCryptoKeyRef aKeyRef)
Уничтожьте ключ, хранящийся в PSA ITS.
otPlatCryptoEcdsaExportPublicKey ( otCryptoKeyRef aKeyRef, otPlatCryptoEcdsaPublicKey *aPublicKey)
Получите связанный открытый ключ из переданной ссылки на ключ.
otPlatCryptoEcdsaGenerateAndImportKey ( otCryptoKeyRef aKeyRef)
Создайте и импортируйте новую пару ключей ECDSA по переданной ссылке.
otPlatCryptoEcdsaGenerateKey ( otPlatCryptoEcdsaKeyPair *aKeyPair)
Сгенерируйте и заполните выходной буфер новой парой ключей ECDSA.
otPlatCryptoEcdsaGetPublicKey (const otPlatCryptoEcdsaKeyPair *aKeyPair, otPlatCryptoEcdsaPublicKey *aPublicKey)
Получите связанный открытый ключ из контекста ввода.
otPlatCryptoEcdsaSign (const otPlatCryptoEcdsaKeyPair *aKeyPair, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
Вычислите подпись ECDSA для хешированного сообщения, используя закрытый ключ из входного контекста.
otPlatCryptoEcdsaSignUsingKeyRef ( otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, otPlatCryptoEcdsaSignature *aSignature)
Вычислите подпись ECDSA для хешированного сообщения, используя переданную ссылку на ключ.
otPlatCryptoEcdsaVerify (const otPlatCryptoEcdsaPublicKey *aPublicKey, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
Используйте ключ из входного контекста, чтобы проверить подпись ECDSA хешированного сообщения.
otPlatCryptoEcdsaVerifyUsingKeyRef ( otCryptoKeyRef aKeyRef, const otPlatCryptoSha256Hash *aHash, const otPlatCryptoEcdsaSignature *aSignature)
Используйте ссылку на ключ для проверки подписи ECDSA хешированного сообщения.
otPlatCryptoExportKey ( otCryptoKeyRef aKeyRef, uint8_t *aBuffer, size_t aBufferLen, size_t *aKeyLen)
Экспортируйте ключ, хранящийся в PSA ITS.
otPlatCryptoHasKey ( otCryptoKeyRef aKeyRef)
bool
Проверьте, имеет ли переданный ключ ref связанный ключ в PSA ITS.
otPlatCryptoHkdfDeinit ( otCryptoContext *aContext)
Деинициализируйте контекст HKDF.
otPlatCryptoHkdfExpand ( otCryptoContext *aContext, const uint8_t *aInfo, uint16_t aInfoLength, uint8_t *aOutputKey, uint16_t aOutputKeyLength)
Выполните шаг расширения HKDF.
otPlatCryptoHkdfExtract ( otCryptoContext *aContext, const uint8_t *aSalt, uint16_t aSaltLength, const otCryptoKey *aInputKey)
Выполните шаг извлечения HKDF.
otPlatCryptoHkdfInit ( otCryptoContext *aContext)
Инициализируйте контекст HKDF.
otPlatCryptoHmacSha256Deinit ( otCryptoContext *aContext)
Деинициализируйте операцию HMAC.
otPlatCryptoHmacSha256Finish ( otCryptoContext *aContext, uint8_t *aBuf, size_t aBufLength)
Завершите операцию HMAC.
otPlatCryptoHmacSha256Init ( otCryptoContext *aContext)
Инициализируйте операцию HMAC.
otPlatCryptoHmacSha256Start ( otCryptoContext *aContext, const otCryptoKey *aKey)
Запустите операцию HMAC.
otPlatCryptoHmacSha256Update ( otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
Обновите операцию HMAC, добавив новые данные.
otPlatCryptoImportKey ( otCryptoKeyRef *aKeyRef, otCryptoKeyType aKeyType, otCryptoKeyAlgorithm aKeyAlgorithm, int aKeyUsage, otCryptoKeyStorage aKeyPersistence, const uint8_t *aKey, size_t aKeyLen)
Импортируйте ключ в PSA ITS.
otPlatCryptoInit (void)
void
Инициализируйте модуль 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)
Выполните PKCS#5 PBKDF2, используя CMAC (AES-CMAC-PRF-128).
otPlatCryptoRandomDeinit (void)
void
Деинициализировать криптографически безопасный генератор псевдослучайных чисел (CSPRNG).
otPlatCryptoRandomGet (uint8_t *aBuffer, uint16_t aSize)
Заполняет заданный буфер криптографически безопасными случайными байтами.
otPlatCryptoRandomInit (void)
void
Инициализировать криптографически безопасный генератор псевдослучайных чисел (CSPRNG).
otPlatCryptoSha256Deinit ( otCryptoContext *aContext)
Деинициализируйте операцию SHA-256.
otPlatCryptoSha256Finish ( otCryptoContext *aContext, uint8_t *aHash, uint16_t aHashSize)
Завершите операцию SHA-256.
otPlatCryptoSha256Init ( otCryptoContext *aContext)
Инициализируйте операцию SHA-256.
otPlatCryptoSha256Start ( otCryptoContext *aContext)
Запустите операцию SHA-256.
otPlatCryptoSha256Update ( otCryptoContext *aContext, const void *aBuf, uint16_t aBufLength)
Обновите операцию SHA-256, добавив новые входные данные.

Структуры

откриптоконтекст

Хранит объект контекста для API платформы.

otCryptoKey

Представляет ключевой материал, необходимый для операций шифрования.

otPlatCryptoEcdsaKeyPair

Представляет пару ключей ECDSA (открытый и закрытый ключи).

otPlatCryptoEcdsaPublicKey

Представляет открытый ключ ECDSA.

otPlatCryptoEcdsaПодпись

Представляет подпись ECDSA.

otPlatCryptoSha256Hash

Представляет хэш SHA-256.

Перечисления

анонимное перечисление

 anonymous enum

Определяет флаги использования ключей.

Характеристики
OT_CRYPTO_KEY_USAGE_DECRYPT

Использование ключа: AES ECB.

OT_CRYPTO_KEY_USAGE_ENCRYPT

Использование ключа: Шифрование (определяется поставщиком).

OT_CRYPTO_KEY_USAGE_EXPORT

Использование ключа: ключ можно экспортировать.

OT_CRYPTO_KEY_USAGE_NONE

Использование ключа: Использование ключа пусто.

OT_CRYPTO_KEY_USAGE_SIGN_HASH

Использование ключа: Знак Хэша.

OT_CRYPTO_KEY_USAGE_VERIFY_HASH

Использование ключа: проверка хеша.

Алгоритм otCryptoKey

 otCryptoKeyAlgorithm

Определяет ключевые алгоритмы.

Характеристики
OT_CRYPTO_KEY_ALG_AES_ECB

Ключевой алгоритм: AES ECB.

OT_CRYPTO_KEY_ALG_ECDSA

Ключевой алгоритм: ECDSA.

OT_CRYPTO_KEY_ALG_HMAC_SHA_256

Ключевой алгоритм: HMAC SHA-256.

OT_CRYPTO_KEY_ALG_VENDOR

Ключевой алгоритм: определяется поставщиком.

otCryptoKeyStorage

 otCryptoKeyStorage

Определяет типы хранения ключей.

Характеристики
OT_CRYPTO_KEY_STORAGE_PERSISTENT

Сохранение ключа: ключ является постоянным.

OT_CRYPTO_KEY_STORAGE_VOLATILE

Сохранение ключа: ключ изменчив.

отКриптоКейТип

 otCryptoKeyType

Определяет типы ключей.

Характеристики
OT_CRYPTO_KEY_TYPE_AES

Тип ключа: AES.

OT_CRYPTO_KEY_TYPE_ECDSA

Тип ключа: ECDSA.

OT_CRYPTO_KEY_TYPE_HMAC

Тип ключа: HMAC.

OT_CRYPTO_KEY_TYPE_RAW

Тип ключа: необработанные данные.

Определения типов

откриптоконтекст

struct otCryptoContext otCryptoContext

otCryptoKey

struct otCryptoKey otCryptoKey

otCryptoKeyRef

uint32_t otCryptoKeyRef

Этот тип данных представляет ключевую ссылку.

otPlatCryptoEcdsaKeyPair

struct otPlatCryptoEcdsaKeyPair otPlatCryptoEcdsaKeyPair

otPlatCryptoEcdsaPublicKey

struct otPlatCryptoEcdsaPublicKey otPlatCryptoEcdsaPublicKey

otPlatCryptoEcdsaПодпись

struct otPlatCryptoEcdsaSignature otPlatCryptoEcdsaSignature

otPlatCryptoSha256Hash

struct otPlatCryptoSha256Hash otPlatCryptoSha256Hash

Представляет хэш SHA-256.

Переменные

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otPlatCryptoSha256Hash OT_TOOL_PACKED_END

Функции

отПлатКриптоАесЭнкрипт

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

Зашифруйте данные.

Подробности
Параметры
[in] aContext
Контекст для работы AES.
[in] aInput
Указатель на входной буфер.
[in] aOutput
Указатель на выходной буфер.
Возвращаемые значения
OT_ERROR_NONE
Успешно зашифрован aInput .
OT_ERROR_FAILED
Не удалось зашифровать aInput .
OT_ERROR_INVALID_ARGS
aContext или aKey или aOutput были NULL

otPlatCryptoAesFree

otError otPlatCryptoAesFree(
  otCryptoContext *aContext
)

Освободите контекст AES.

Подробности
Параметры
[in] aContext
Контекст для работы AES.
Возвращаемые значения
OT_ERROR_NONE
Контекст AES успешно освобожден.
OT_ERROR_FAILED
Не удалось освободить контекст AES.
OT_ERROR_INVALID_ARGS
aContext был NULL

отПлатКриптоАесИнит

otError otPlatCryptoAesInit(
  otCryptoContext *aContext
)

Инициализируйте операцию AES.

Подробности
Параметры
[in] aContext
Контекст для работы AES.
Возвращаемые значения
OT_ERROR_NONE
Операция AES успешно инициализирована.
OT_ERROR_FAILED
Не удалось инициализировать операцию AES.
OT_ERROR_INVALID_ARGS
aContext был NULL
OT_ERROR_NO_BUFS
Невозможно выделить контекст.

otPlatCryptoAesSetKey

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

Установите ключ для работы AES.

Подробности
Параметры
[in] aContext
Контекст для работы AES.
[out] aKey
Ключ для использования для работы AES.
Возвращаемые значения
OT_ERROR_NONE
Успешно установили ключ для работы AES.
OT_ERROR_FAILED
Не удалось установить ключ для работы AES.
OT_ERROR_INVALID_ARGS
aContext или aKey было NULL

otPlatCryptoDestroyKey

otError otPlatCryptoDestroyKey(
  otCryptoKeyRef aKeyRef
)

Уничтожьте ключ, хранящийся в PSA ITS.

Подробности
Параметры
[in] aKeyRef
Ключевая ссылка, которую нужно уничтожить
Возвращаемые значения
OT_ERROR_NONE
Ключ успешно уничтожен.
OT_ERROR_FAILED
Не удалось уничтожить ключ.

otPlatCryptoEcdsaExportPublicKey

otError otPlatCryptoEcdsaExportPublicKey(
  otCryptoKeyRef aKeyRef,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

Получите связанный открытый ключ из переданной ссылки на ключ.

Открытый ключ хранится по-разному в зависимости от используемой библиотеки шифрования (OPENTHREAD_CONFIG_CRYPTO_LIB).

Этот API должен обязательно возвращать открытый ключ в виде представления последовательности байтов несжатой точки кривой (RFC 6605, раздел 4).

Подробности
Параметры
[in] aKeyRef
Ключ Ссылка на слот, в котором хранится пара ключей.
[out] aPublicKey
Указатель на структуру открытого ключа ECDSA для хранения открытого ключа.
Возвращаемые значения
OT_ERROR_NONE
Открытый ключ успешно получен, aBuffer обновлен.
OT_ERROR_PARSE
Не удалось проанализировать формат DER пары ключей (недопустимый формат).
OT_ERROR_INVALID_ARGS
aContext имеет значение NULL.

otPlatCryptoEcdsaGenerateAndImportKey

otError otPlatCryptoEcdsaGenerateAndImportKey(
  otCryptoKeyRef aKeyRef
)

Создайте и импортируйте новую пару ключей ECDSA по переданной ссылке.

Подробности
Параметры
[in] aKeyRef
Ключ Ссылка на слот, в котором хранится пара ключей.
Возвращаемые значения
OT_ERROR_NONE
Новая пара ключей была успешно сгенерирована.
OT_ERROR_NO_BUFS
Не удалось выделить буфер для генерации ключа.
OT_ERROR_NOT_CAPABLE
Функция не поддерживается.
OT_ERROR_FAILED
Не удалось создать пару ключей.

otPlatCryptoEcdsaGenerateKey

otError otPlatCryptoEcdsaGenerateKey(
  otPlatCryptoEcdsaKeyPair *aKeyPair
)

Сгенерируйте и заполните выходной буфер новой парой ключей ECDSA.

Подробности
Параметры
[out] aKeyPair
Указатель на структуру пары ключей ECDSA для хранения сгенерированной пары ключей.
Возвращаемые значения
OT_ERROR_NONE
Новая пара ключей была успешно сгенерирована.
OT_ERROR_NO_BUFS
Не удалось выделить буфер для генерации ключа.
OT_ERROR_NOT_CAPABLE
Функция не поддерживается.
OT_ERROR_FAILED
Не удалось создать пару ключей.

otPlatCryptoEcdsaGetPublicKey

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

Получите связанный открытый ключ из контекста ввода.

Подробности
Параметры
[in] aKeyPair
Указатель на структуру пары ключей ECDSA, в которой хранится пара ключей.
[out] aPublicKey
Указатель на структуру открытого ключа ECDSA для хранения открытого ключа.
Возвращаемые значения
OT_ERROR_NONE
Открытый ключ успешно получен, aBuffer обновлен.
OT_ERROR_PARSE
Не удалось проанализировать формат DER пары ключей (недопустимый формат).
OT_ERROR_INVALID_ARGS
aContext имеет значение NULL.

otPlatCryptoEcdsaSign

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

Вычислите подпись ECDSA для хешированного сообщения, используя закрытый ключ из входного контекста.

Использует детерминированную процедуру генерации цифровой подписи из RFC 6979.

Подробности
Параметры
[in] aKeyPair
Указатель на структуру пары ключей ECDSA, в которой хранится пара ключей.
[in] aHash
Указатель на хеш-структуру SHA-256, в которой хранится хеш-значение для расчета подписи.
[out] aSignature
Указатель на структуру подписи ECDSA для вывода рассчитанной подписи.
Возвращаемые значения
OT_ERROR_NONE
Подпись рассчитана успешно, aSignature обновлена.
OT_ERROR_PARSE
Не удалось проанализировать формат DER пары ключей (недопустимый формат).
OT_ERROR_NO_BUFS
Не удалось выделить буфер для расчета подписи.
OT_ERROR_INVALID_ARGS
aContext имеет значение NULL.

otPlatCryptoEcdsaSignUsingKeyRef

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

Вычислите подпись ECDSA для хешированного сообщения, используя переданную ссылку на ключ.

Использует детерминированную процедуру генерации цифровой подписи из RFC 6979.

Подробности
Параметры
[in] aKeyRef
Ключ Ссылка на слот, в котором хранится пара ключей.
[in] aHash
Указатель на хеш-структуру SHA-256, в которой хранится хеш-значение для расчета подписи.
[out] aSignature
Указатель на структуру подписи ECDSA для вывода рассчитанной подписи.
Возвращаемые значения
OT_ERROR_NONE
Подпись рассчитана успешно, aSignature обновлена.
OT_ERROR_PARSE
Не удалось проанализировать формат DER пары ключей (недопустимый формат).
OT_ERROR_NO_BUFS
Не удалось выделить буфер для расчета подписи.
OT_ERROR_INVALID_ARGS
aContext имеет значение NULL.

otPlatCryptoEcdsaVerify

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

Используйте ключ из входного контекста, чтобы проверить подпись ECDSA хешированного сообщения.

Подробности
Параметры
[in] aPublicKey
Указатель на структуру открытого ключа ECDSA, в которой хранится открытый ключ для проверки подписи.
[in] aHash
Указатель на хеш-структуру SHA-256, в которой хранится хэш-значение для проверки подписи.
[in] aSignature
Указатель на структуру подписи ECDSA, в которой хранится значение подписи, подлежащее проверке.
Возвращаемые значения
OT_ERROR_NONE
Подпись успешно проверена.
OT_ERROR_SECURITY
Подпись недействительна.
OT_ERROR_INVALID_ARGS
Ключ или хэш недействителен.
OT_ERROR_NO_BUFS
Не удалось выделить буфер для проверки подписи.

otPlatCryptoEcdsaVerifyUsingKeyRef

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

Используйте ссылку на ключ для проверки подписи ECDSA хешированного сообщения.

Подробности
Параметры
[in] aKeyRef
Ключ Ссылка на слот, в котором хранится пара ключей.
[in] aHash
Указатель на хеш-структуру SHA-256, в которой хранится хэш-значение для проверки подписи.
[in] aSignature
Указатель на структуру подписи ECDSA, в которой хранится значение подписи, подлежащее проверке.
Возвращаемые значения
OT_ERROR_NONE
Подпись успешно проверена.
OT_ERROR_SECURITY
Подпись недействительна.
OT_ERROR_INVALID_ARGS
Ключ или хэш недействителен.
OT_ERROR_NO_BUFS
Не удалось выделить буфер для проверки подписи.

otPlatCryptoExportKey

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

Экспортируйте ключ, хранящийся в PSA ITS.

Подробности
Параметры
[in] aKeyRef
Ссылка на ключ, которая будет использоваться для криптографических операций.
[out] aBuffer
Указатель на буфер, куда необходимо экспортировать ключ.
[in] aBufferLen
Длина буфера, передаваемого для хранения экспортированного ключа.
[out] aKeyLen
Указатель для возврата длины экспортированного ключа.
Возвращаемые значения
OT_ERROR_NONE
Успешно экспортирован aKeyRef .
OT_ERROR_FAILED
Не удалось экспортировать aKeyRef .
OT_ERROR_INVALID_ARGS
aBuffer был NULL

otPlatCryptoHasKey

bool otPlatCryptoHasKey(
  otCryptoKeyRef aKeyRef
)

Проверьте, имеет ли переданный ключ ref связанный ключ в PSA ITS.

Подробности
Параметры
[in] aKeyRef
Ключевая ссылка для проверки.
Возвращаемые значения
TRUE
С aKeyRef связан ключ.
FALSE
С aKeyRef не связан ключ.

otPlatCryptoHkdfDeinit

otError otPlatCryptoHkdfDeinit(
  otCryptoContext *aContext
)

Деинициализируйте контекст HKDF.

Подробности
Параметры
[in] aContext
Контекст для работы HKDF.
Возвращаемые значения
OT_ERROR_NONE
Операция HKDF успешно деинициализирована.
OT_ERROR_FAILED
Не удалось деинициализировать операцию HKDF.
OT_ERROR_INVALID_ARGS
aContext был NULL

otPlatCryptoHkdfРазвернуть

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

Выполните шаг расширения HKDF.

Подробности
Параметры
[in] aContext
Контекст операции для операции HKDF.
[in] aInfo
Указатель на последовательность информации.
[in] aInfoLength
Длина информационной последовательности.
[out] aOutputKey
Указатель на выходной ключ.
[in] aOutputKeyLength
Размер выходного ключевого буфера.
Возвращаемые значения
OT_ERROR_NONE
Расширение HKDF прошло успешно.
OT_ERROR_FAILED
Не удалось развернуть HKDF.
OT_ERROR_INVALID_ARGS
aContext был NULL

otPlatCryptoHkdfExtract

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

Выполните шаг извлечения HKDF.

Подробности
Параметры
[in] aContext
Контекст операции для операции HKDF.
[in] aSalt
Указатель на соль для HKDF.
[in] aSaltLength
Длина соли.
[in] aInputKey
Указатель на клавишу ввода.
Возвращаемые значения
OT_ERROR_NONE
Извлечение HKDF прошло успешно.
OT_ERROR_FAILED
Не удалось извлечь HKDF.

otPlatCryptoHkdfinit

otError otPlatCryptoHkdfInit(
  otCryptoContext *aContext
)

Инициализируйте контекст HKDF.

Подробности
Параметры
[in] aContext
Контекст для работы HKDF.
Возвращаемые значения
OT_ERROR_NONE
Операция AES успешно инициализирована.
OT_ERROR_FAILED
Не удалось инициализировать операцию AES.
OT_ERROR_INVALID_ARGS
aContext был NULL

otPlatCryptoHmacSha256Deinit

otError otPlatCryptoHmacSha256Deinit(
  otCryptoContext *aContext
)

Деинициализируйте операцию HMAC.

Подробности
Параметры
[in] aContext
Контекст для работы HMAC.
Возвращаемые значения
OT_ERROR_NONE
Операция HMAC успешно деинициализирована.
OT_ERROR_FAILED
Не удалось выполнить неинициализированную операцию HMAC.
OT_ERROR_INVALID_ARGS
aContext был NULL

otPlatCryptoHmacSha256Finish

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

Завершите операцию HMAC.

Подробности
Параметры
[in] aContext
Контекст для работы HMAC.
[out] aBuf
Указатель на выходной буфер.
[in] aBufLength
Длина aBuf в байтах.
Возвращаемые значения
OT_ERROR_NONE
Операция HMAC успешно завершена.
OT_ERROR_FAILED
Не удалось завершить операцию HMAC.
OT_ERROR_INVALID_ARGS
aContext или aBuf был NULL

otPlatCryptoHmacSha256Init

otError otPlatCryptoHmacSha256Init(
  otCryptoContext *aContext
)

Инициализируйте операцию HMAC.

Подробности
Параметры
[in] aContext
Контекст для работы HMAC.
Возвращаемые значения
OT_ERROR_NONE
Операция HMAC успешно инициализирована.
OT_ERROR_FAILED
Не удалось инициализировать операцию HMAC.
OT_ERROR_INVALID_ARGS
aContext был NULL

otPlatCryptoHmacSha256Start

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

Запустите операцию HMAC.

Подробности
Параметры
[in] aContext
Контекст для работы HMAC.
[in] aKey
Ключевой материал, который будет использоваться для работы HMAC.
Возвращаемые значения
OT_ERROR_NONE
Операция HMAC успешно запущена.
OT_ERROR_FAILED
Не удалось запустить операцию HMAC.
OT_ERROR_INVALID_ARGS
aContext или aKey было NULL

otPlatCryptoHmacSha256Обновить

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

Обновите операцию HMAC, добавив новые данные.

Подробности
Параметры
[in] aContext
Контекст для работы HMAC.
[in] aBuf
Указатель на входной буфер.
[in] aBufLength
Длина aBuf в байтах.
Возвращаемые значения
OT_ERROR_NONE
HMAC успешно обновлен новой операцией ввода.
OT_ERROR_FAILED
Не удалось обновить операцию HMAC.
OT_ERROR_INVALID_ARGS
aContext или aBuf был NULL

otPlatCryptoImportKey

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

Импортируйте ключ в PSA ITS.

Если OT_CRYPTO_KEY_STORAGE_VOLATILE передается для aKeyPersistence, то выводится aKeyRef , начальное значение не имеет значения, и API платформы ДОЛЖЕН обновить его, чтобы вернуть новую ссылку на ключ.

Подробности
Параметры
[in,out] aKeyRef
Указатель на ссылку на ключ, который будет использоваться для криптографических операций.
[in] aKeyType
Кодировка типа ключа.
[in] aKeyAlgorithm
Ключевой алгоритм кодирования ключа.
[in] aKeyUsage
Кодировка использования ключа (комбинации OT_CRYPTO_KEY_USAGE_* ).
[in] aKeyPersistence
Постоянство ключа для этого ключа
[in] aKey
Фактический ключ, который нужно импортировать.
[in] aKeyLen
Длина импортируемого ключа.
Возвращаемые значения
OT_ERROR_NONE
Ключ успешно импортирован.
OT_ERROR_FAILED
Не удалось импортировать ключ.
OT_ERROR_INVALID_ARGS
aKey было установлено в NULL.

Этот API используется ядром OT только тогда, когда включен OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE .

отПлатКриптоинит

void otPlatCryptoInit(
  void
)

Инициализируйте модуль 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
)

Выполните PKCS#5 PBKDF2, используя CMAC (AES-CMAC-PRF-128).

Подробности
Параметры
[in] aPassword
Пароль, который будет использоваться при генерации ключа.
[in] aPasswordLen
Длина пароля.
[in] aSalt
Соль, которую следует использовать при генерации ключа.
[in] aSaltLen
Длина соли.
[in] aIterationCounter
Количество итераций.
[in] aKeyLen
Длина сгенерированного ключа в байтах.
[out] aKey
Указатель на сгенерированный ключ.
Возвращаемые значения
OT_ERROR_NONE
Новая пара ключей была успешно сгенерирована.
OT_ERROR_NO_BUFS
Не удалось выделить буфер для генерации ключа.
OT_ERROR_NOT_CAPABLE
Функция не поддерживается.
OT_ERROR_FAILED
Не удалось сгенерировать ключ.

otPlatCryptoRandomDeinit

void otPlatCryptoRandomDeinit(
  void
)

Деинициализировать криптографически безопасный генератор псевдослучайных чисел (CSPRNG).

otPlatCryptoRandomGet

otError otPlatCryptoRandomGet(
  uint8_t *aBuffer,
  uint16_t aSize
)

Заполняет заданный буфер криптографически безопасными случайными байтами.

Подробности
Параметры
[out] aBuffer
Указатель на буфер для заполнения случайными байтами.
[in] aSize
Размер буфера (количество байт для заполнения).
Возвращаемые значения
OT_ERROR_NONE
Буфер успешно заполнен случайными значениями.
OT_ERROR_FAILED
Операция не удалась.

otPlatCryptoRandomInit

void otPlatCryptoRandomInit(
  void
)

Инициализируйте криптографически безопасный генератор псевдослучайных чисел (CSPRNG).

otPlatCryptoSha256Deinit

otError otPlatCryptoSha256Deinit(
  otCryptoContext *aContext
)

Деинициализируйте операцию SHA-256.

Подробности
Параметры
[in] aContext
Контекст для работы SHA-256.
Возвращаемые значения
OT_ERROR_NONE
Операция SHA-256 успешно деинициализирована.
OT_ERROR_FAILED
Не удалось выполнить неинициализированную операцию SHA-256.
OT_ERROR_INVALID_ARGS
aContext был NULL

otPlatCryptoSha256Finish

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

Завершите операцию SHA-256.

Подробности
Параметры
[in] aContext
Контекст для работы SHA-256.
[in] aHash
Указатель на выходной буфер, в котором необходимо сохранить хэш.
[in] aHashSize
Длина aHash в байтах.
Возвращаемые значения
OT_ERROR_NONE
Успешно завершена операция SHA-256.
OT_ERROR_FAILED
Не удалось завершить операцию SHA-256.
OT_ERROR_INVALID_ARGS
aContext или aHash был NULL

otPlatCryptoSha256Init

otError otPlatCryptoSha256Init(
  otCryptoContext *aContext
)

Инициализируйте операцию SHA-256.

Подробности
Параметры
[in] aContext
Контекст для работы SHA-256.
Возвращаемые значения
OT_ERROR_NONE
Операция SHA-256 успешно инициализирована.
OT_ERROR_FAILED
Не удалось инициализировать операцию SHA-256.
OT_ERROR_INVALID_ARGS
aContext был NULL

otPlatCryptoSha256Start

otError otPlatCryptoSha256Start(
  otCryptoContext *aContext
)

Запустите операцию SHA-256.

Подробности
Параметры
[in] aContext
Контекст для работы SHA-256.
Возвращаемые значения
OT_ERROR_NONE
Операция SHA-256 успешно запущена.
OT_ERROR_FAILED
Не удалось запустить операцию SHA-256.
OT_ERROR_INVALID_ARGS
aContext был NULL

otPlatCryptoSha256Обновить

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

Обновите операцию SHA-256, добавив новые входные данные.

Подробности
Параметры
[in] aContext
Контекст для работы SHA-256.
[in] aBuf
Указатель на входной буфер.
[in] aBufLength
Длина aBuf в байтах.
Возвращаемые значения
OT_ERROR_NONE
SHA-256 успешно обновлен новой операцией ввода.
OT_ERROR_FAILED
Не удалось обновить операцию SHA-256.
OT_ERROR_INVALID_ARGS
aContext или aBuf был NULL

Макросы

OT_CRYPTO_ECDSA_MAX_DER_SIZE

 OT_CRYPTO_ECDSA_MAX_DER_SIZE 125

Максимальный размер буфера (в байтах) для представления пары ключей EDCSA в формате DER.

OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE

 OT_CRYPTO_ECDSA_PUBLIC_KEY_SIZE 64

Размер буфера (в байтах) для представления открытого ключа EDCSA.

OT_CRYPTO_ECDSA_SIGNATURE_SIZE

 OT_CRYPTO_ECDSA_SIGNATURE_SIZE 64

Размер буфера (в байтах) для представления подписи EDCSA.

OT_CRYPTO_PBDKF2_MAX_SALT_SIZE

 OT_CRYPTO_PBDKF2_MAX_SALT_SIZE 30

Максимальная длина PBKDF2 SALT: префикс соли (6) + расширенный панид (8) + имя сети (16)

OT_CRYPTO_SHA256_HASH_SIZE

 OT_CRYPTO_SHA256_HASH_SIZE 32

Длина хеша SHA256 (в байтах).

Ресурсы

Справочные разделы API OpenThread взяты из исходного кода, доступного на GitHub . Для получения дополнительной информации или внесения вклада в нашу документацию обратитесь к Ресурсам .