کریپتو - پلتفرم

این ماژول شامل انتزاع پلتفرم برای 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
}
enum
پرچم های استفاده از کلید را تعریف می کند.
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
الگوریتم های کلیدی را تعریف می کند.
otCryptoKeyStorage {
OT_CRYPTO_KEY_STORAGE_VOLATILE ,
OT_CRYPTO_KEY_STORAGE_PERSISTENT
}
enum
انواع ذخیره سازی کلیدی را تعریف می کند.
otCryptoKeyType {
OT_CRYPTO_KEY_TYPE_RAW ,
OT_CRYPTO_KEY_TYPE_AES ,
OT_CRYPTO_KEY_TYPE_HMAC ,
OT_CRYPTO_KEY_TYPE_ECDSA
}
enum
انواع کلید را تعریف می کند.

Typedefs

otCryptoContext typedef
otCryptoKey typedef
struct otCryptoKey
otCryptoKeyRef typedef
uint32_t
این نوع داده نشان دهنده مرجع کلیدی است.
otPlatCryptoEcdsaKeyPair typedef
otPlatCryptoEcdsaPublicKey typedef
otPlatCryptoEcdsaSignature typedef
otPlatCryptoSha256Hash typedef
نشان دهنده هش 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 را با ورودی جدید به روز کنید.

سازه ها

otCryptoContext

شی متن را برای API های پلتفرم ذخیره می کند.

otCryptoKey

مواد کلیدی مورد نیاز برای عملیات کریپتو را نشان می دهد.

otPlatCryptoEcdsaKeyPair

یک جفت کلید ECDSA (کلیدهای عمومی و خصوصی) را نشان می دهد.

otPlatCryptoEcdsaPublicKey

یک کلید عمومی ECDSA را نشان می دهد.

otPlatCryptoEcdsaSignature

نشان دهنده یک امضای 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

 otCryptoKeyType

انواع کلید را تعریف می کند.

خواص
OT_CRYPTO_KEY_TYPE_AES

نوع کلید: AES

OT_CRYPTO_KEY_TYPE_ECDSA

نوع کلید: ECDSA

OT_CRYPTO_KEY_TYPE_HMAC

نوع کلید: HMAC

OT_CRYPTO_KEY_TYPE_RAW

نوع کلید: داده خام

Typedefs

otCryptoContext

struct otCryptoContext otCryptoContext

otCryptoKey

struct otCryptoKey otCryptoKey

otCryptoKeyRef

uint32_t otCryptoKeyRef

این نوع داده نشان دهنده مرجع کلیدی است.

otPlatCryptoEcdsaKeyPair

struct otPlatCryptoEcdsaKeyPair otPlatCryptoEcdsaKeyPair

otPlatCryptoEcdsaPublicKey

struct otPlatCryptoEcdsaPublicKey otPlatCryptoEcdsaPublicKey

otPlatCryptoEcdsaSignature

struct otPlatCryptoEcdsaSignature otPlatCryptoEcdsaSignature

otPlatCryptoSha256Hash

struct otPlatCryptoSha256Hash otPlatCryptoSha256Hash

نشان دهنده هش SHA-256 است.

متغیرها

OT_TOOL_PACKED_END

OT_TOOL_PACKED_BEGIN struct otPlatCryptoSha256Hash OT_TOOL_PACKED_END

کارکرد

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
شکست در از بین بردن کلید.

otPlatCryptoEcdsaExportPublicKey

otError otPlatCryptoEcdsaExportPublicKey(
  otCryptoKeyRef aKeyRef,
  otPlatCryptoEcdsaPublicKey *aPublicKey
)

کلید عمومی مرتبط را از مرجع کلید دریافت کنید.

بسته به کتابخانه پشتیبان رمزنگاری مورد استفاده (OPENTHREAD_CONFIG_CRYPTO_LIB) کلید عمومی به طور متفاوتی ذخیره می شود.

این API باید مطمئن شود که کلید عمومی را به عنوان یک نمایش توالی بایت از یک نقطه منحنی فشرده نشده برمی گرداند (RFC 6605 - sec 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
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 را انجام دهید.

جزئیات
مولفه های
[in] aContext
زمینه عملیات برای عملیات HKDF.
[in] aInfo
به دنباله Info اشاره کنید.
[in] aInfoLength
طول دنباله اطلاعات
[out] aOutputKey
اشاره گر به کلید خروجی
[in] aOutputKeyLength
اندازه بافر کلید خروجی
ارزش های بازگشتی
OT_ERROR_NONE
HKDF Expand موفقیت آمیز بود.
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 بود

otPlatCryptoHmacSha256شروع کنید

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 پلتفرم باید آن را به روز کند تا ref کلید جدید را برگرداند.

جزئیات
مولفه های
[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 core استفاده می‌شود که OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE فعال باشد.

otPlatCryptoInit

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 بود

otPlatCryptoSha256شروع کنید

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: پیشوند salt (6) + panid گسترده (8) + نام شبکه (16)

OT_CRYPTO_SHA256_HASH_SIZE

 OT_CRYPTO_SHA256_HASH_SIZE 32

طول هش SHA256 (بر حسب بایت).

منابع

موضوعات مرجع OpenThread API از کد منبع موجود در GitHub سرچشمه می گیرند. برای اطلاعات بیشتر، یا مشارکت در اسناد ما، به منابع مراجعه کنید.