الترميز - النظام الأساسي

تتضمّن هذه الوحدة تجريب النظام الأساسي للتشفير.

الملخّص

التعدادات

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
}
تعداد
تحدّد هذه القائمة العدد أنواع المفاتيح.

مواقد الخط

otCryptoContext مَعلمة typetype
otCryptoKey مَعلمة typetype
struct otCryptoKey
otCryptoKeyRef مَعلمة typetype
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.
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
إعداد وحدة التشفير.
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

تخزِّن هذه البنية كائن السياق لواجهات برمجة تطبيقات النظام الأساسي.

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.

otCryptoKeyAlgoritham

 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

النوع الأساسي: بيانات أولية.

مواقد الخط

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 كان فارغًا

otPlatCryptoAesFree

otError otPlatCryptoAesFree(
  otCryptoContext *aContext
)

وفِّر سياق AES.

التفاصيل
المعلَمات
[in] aContext
سياق عملية AES.
قيم الإرجاع
OT_ERROR_NONE
لقد تمّ إخلاء سياق AES بنجاح.
OT_ERROR_FAILED
تعذَّر تعديل سياق AES.
OT_ERROR_INVALID_ARGS
aContext كان فارغًا

otPlatCryptoAesInit

otError otPlatCryptoAesInit(
  otCryptoContext *aContext
)

ابدأ عملية AES.

التفاصيل
المعلَمات
[in] aContext
سياق عملية AES.
قيم الإرجاع
OT_ERROR_NONE
تم إعداد عملية AES بنجاح.
OT_ERROR_FAILED
تعذّر إعداد عملية AES.
OT_ERROR_INVALID_ARGS
aContext كان فارغًا
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 كان فارغًا

مفتاح otPlatCryptoDestroy

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
الرقم المرجعي المطلوب استخدامه لإجراء عمليات التشفير
[out] aBuffer
أشِر إلى المخزن المؤقت حيث يجب تصدير المفتاح.
[in] aBufferLen
طول ذاكرة التخزين المؤقت التي تم تمريرها لتخزين المفتاح الذي تم تصديره.
[out] aKeyLen
أشِر إلى عرض طول المفتاح الذي تم تصديره.
قيم الإرجاع
OT_ERROR_NONE
تم تصدير aKeyRef بنجاح.
OT_ERROR_FAILED
تعذّر تصدير aKeyRef.
OT_ERROR_INVALID_ARGS
aBuffer كان فارغًا

otPlatCryptoHasKey

bool otPlatCryptoHasKey(
  otCryptoKeyRef aKeyRef
)

تحقق مما إذا كان المفتاح الذي تم تمريره يتضمن مفتاحًا مرتبطًا في 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 كان فارغًا

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 كان فارغًا

otPlatCryptoHkdfاستخراج

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 كان فارغًا

otPlatCryptoHmacSha256Deinit

otError otPlatCryptoHmacSha256Deinit(
  otCryptoContext *aContext
)

إعداد عملية HMAC.

التفاصيل
المعلَمات
[in] aContext
سياق عملية HMAC.
قيم الإرجاع
OT_ERROR_NONE
لم يتم إعداد عملية HMAC بنجاح.
OT_ERROR_FAILED
تعذّر إعداد عملية HMAC غير المُعدَّة.
OT_ERROR_INVALID_ARGS
aContext كان فارغًا

otPlatCryptoHmacSHa256إنهاء

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 كان فارغًا

otPlatCryptoHmacSha256Init

otError otPlatCryptoHmacSha256Init(
  otCryptoContext *aContext
)

ابدأ عملية HMAC.

التفاصيل
المعلَمات
[in] aContext
سياق عملية HMAC.
قيم الإرجاع
OT_ERROR_NONE
تم إعداد عملية HMAC بنجاح.
OT_ERROR_FAILED
تعذّر إعداد عملية HMAC.
OT_ERROR_INVALID_ARGS
aContext كان فارغًا

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 كان فارغًا

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 كان فارغًا

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 لـ KeyKeysistence، يجب أن يكون aKeyRef هو الإدخال والنظام الأساسي يجب أن يستخدم KeyKey المحدد ولا يجب أن يغيّره. إذا تم تمرير OT_CRYPTO_KEY_STORAGE_VOLATILE لـ KeyPersistence ثم aKeyRef، تكون القيمة الأولى غير مهمة ويجب على واجهة برمجة تطبيقات النظام الأساسي تحديثه لعرض مرجع المفتاح الجديد.

التفاصيل
المعلَمات
[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 إلى فارغ.

لا يتم استخدام واجهة برمجة التطبيقات هذه إلا من خلال OT Core عندما يتم تفعيل OPENTHREAD_CONFIG_PLATFORM_KEY_REFERENCES_ENABLE.

otPlatCryptoInit

void otPlatCryptoInit(
  void
)

إعداد وحدة التشفير.

otPlatCryptoHiddenDeinit

void otPlatCryptoRandomDeinit(
  void
)

إعداد أداة إعداد الأرقام الصورية المشفَّرة بأمان (CSPRNG).

otPlatCryptoHiddenGet

otError otPlatCryptoRandomGet(
  uint8_t *aBuffer,
  uint16_t aSize
)

يملأ ذاكرة تخزين مؤقت معيّنة بوحدات بايت عشوائية مشفّرة مشفّرة.

التفاصيل
المعلَمات
[out] aBuffer
مؤشر إلى ذاكرة التخزين المؤقت لملئه بوحدات البايت العشوائية.
[in] aSize
حجم المخزن المؤقت (عدد وحدات البايت المطلوب تعبئتها).
قيم الإرجاع
OT_ERROR_NONE
تم ملء المخزن المؤقت بقيم عشوائية بنجاح.
OT_ERROR_FAILED
تعذّر إتمام العملية.

otPlatCryptoHiddenInit

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 كان فارغًا

otPlatCryptoSHa256إنهاء

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 كان فارغًا

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 كان فارغًا

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 كان فارغًا

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 كان فارغًا

المراجع

تنشأ مواضيع واجهة برمجة التطبيقات المرجعية لـ OpenThread من رمز المصدر، المتوفر على GitHub. للاطّلاع على مزيد من المعلومات أو للمساهمة في مستنداتنا، يُرجى الرجوع إلى المراجع.