Этот модуль включает абстракцию платформы для 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 }
перечисление Определяет типы ключей.
Функции 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, добавив новые входные данные.
Перечисления анонимное перечисление 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
Тип ключа: необработанные данные.
Определения типов otCryptoKeyRef uint32_t otCryptoKeyRef Этот тип данных представляет ключевую ссылку.
Переменные Функции отПлатКриптоАесЭнкрипт 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.
Примечание. Драйвер платформы должен указывать контекст на правильный объект, например psa_key_id или mbedtls_aes_context_t.
Подробности Параметры [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.
Примечание. Этот API используется ядром OT только тогда, когда включен OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE
.
Подробности Параметры [in] aKeyRef
Ключевая ссылка, которую нужно уничтожить
Возвращаемые значения OT_ERROR_NONE
Ключ успешно уничтожен.
OT_ERROR_FAILED
Не удалось уничтожить ключ.
otPlatCryptoEcdsaExportPublicKey otError otPlatCryptoEcdsaExportPublicKey(
otCryptoKeyRef aKeyRef,
otPlatCryptoEcdsaPublicKey *aPublicKey
) Получите связанный открытый ключ из переданной ссылки на ключ.
Открытый ключ хранится по-разному в зависимости от используемой библиотеки шифрования (OPENTHREAD_CONFIG_CRYPTO_LIB).
Этот API должен обязательно возвращать открытый ключ в виде представления последовательности байтов несжатой точки кривой (RFC 6605, раздел 4).
Примечание. Этот API используется ядром OT только тогда, когда включен OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE
.
Подробности Параметры [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 по переданной ссылке.
Примечание. Этот API используется ядром OT только тогда, когда включен OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE
.
Подробности Параметры [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.
Примечание. Этот API используется ядром OT только тогда, когда включен OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE
.
Подробности Параметры [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 хешированного сообщения.
Примечание. Этот API используется ядром OT только тогда, когда включен OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE
.
Подробности Параметры [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.
Примечание. Этот API используется ядром OT только тогда, когда включен OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE
.
Подробности Параметры [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.
Примечание. Этот API используется ядром OT только тогда, когда включен OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE
.
Подробности Параметры [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
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.
Примечание. Драйвер платформы должен указывать контекст на правильный объект, например psa_key_derivation_operation_t или HmacSha256::Hash.
Подробности Параметры [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.
Примечание. Драйвер платформы должен указывать контекст на правильный объект, например psa_mac_operation_t или mbedtls_md_context_t.
Подробности Параметры [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_PERSISTENT передается для aKeyPersistence, тогда aKeyRef
является входным, и платформа должна использовать данный aKeyRef и НЕ ДОЛЖНА его менять. Если 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.
Примечание. Драйвер платформы должен указать контекст на правильный объект, например psa_hash_operation_t или mbedtls_sha256_context.
Подробности Параметры [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 . Для получения дополнительной информации или внесения вклада в нашу документацию обратитесь к Ресурсам .