Плат-крипто

Этот модуль включает абстракцию платформы для 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
}
перечислить
Это перечисление определяет ключевые флаги использования.
otCryptoKeyAlgorithm {
OT_CRYPTO_KEY_ALG_VENDOR ,
OT_CRYPTO_KEY_ALG_AES_ECB ,
OT_CRYPTO_KEY_ALG_HMAC_SHA_256
}
перечислить
Это перечисление определяет ключевые алгоритмы.
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
}
перечислить
Это перечисление определяет ключевые типы.

Typedefs

otCryptoContext typedef
otCryptoKey typedef
struct otCryptoKey
otCryptoKeyRef typedef
uint32_t
Этот тип данных представляет собой ключевую ссылку.

Функции

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.
otPlatCryptoExportKey ( otCryptoKeyRef aKeyRef, uint8_t *aBuffer, size_t aBufferLen, size_t *aKeyLen)
Экспорт ключа, хранящегося в PSA ITS.
otPlatCryptoHasKey ( otCryptoKeyRef aKeyRef)
bool
Убедитесь, что переданная ссылка на ключ имеет связанный ключ в PSA ITS.
otPlatCryptoHkdfDeinit ( otCryptoContext *aContext)
Отмените инициализацию контекста HKDF.
otPlatCryptoHkdfExpand ( otCryptoContext *aContext, const uint8_t *aInfo, uint16_t aInfoLength, uint8_t *aOutputKey, uint16_t aOutputKeyLength)
Выполните шаг HKDF Expand.
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)
Инициализируйте модуль Crypto.
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 с новым вводом.

Структуры

otCryptoContext

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

otCryptoKey

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

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

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

 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

Ключевое использование: HMAC SHA-256.

otCryptoKeyAlgorithm

 otCryptoKeyAlgorithm

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

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

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

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

 otCryptoKeyType

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

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

Тип ключа: AES.

OT_CRYPTO_KEY_TYPE_HMAC

Тип ключа: HMAC.

OT_CRYPTO_KEY_TYPE_RAW

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

Typedefs

otCryptoContext

struct otCryptoContext otCryptoContext

otCryptoKey

struct otCryptoKey otCryptoKey

otCryptoKeyRef

uint32_t otCryptoKeyRef

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

Функции

otPlatCryptoAesEncrypt

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

otPlatCryptoAesInit

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
Не удалось уничтожить ключ.

otPlatCryptoExportKey

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

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

Подробности
Параметры
[in] aKeyRef
Ключ ref, который будет использоваться для криптографических операций.
[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
)

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

Подробности
Параметры
[in] aKeyRef
Ключ Ref для проверки.
Возвращаемые значения
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

otPlatCryptoHkdfExpand

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

Выполните шаг HKDF Expand.

Подробности
Параметры
[in] aContext
Контекст операции для операции HKDF.
[in] aInfo
Указатель на информационную последовательность.
[in] aInfoLength
Длина информационной последовательности.
[out] aOutputKey
Указатель на выход Key.
[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] aInfoLength
длина соли.
[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

otPlatCryptoHmacSha256Update

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
Указатель на ключ ref, который будет использоваться для криптографических операций.
[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 включена.

otPlatCryptoInit

otError otPlatCryptoInit(
  void
)

Инициализируйте модуль Crypto.

Подробности
Возвращаемые значения
OT_ERROR_NONE
Модуль Crypto успешно инициализирован.
OT_ERROR_FAILED
Не удалось инициализировать модуль Crypto.

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] aContextSize
Размер контекста 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

otPlatCryptoSha256Update

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