nl:: Weave:: Platform:: Security
تشمل مساحة الاسم هذه جميع الواجهات ضمن Weave لمدير الذاكرة في مراقبة Weave.
ملخّص
يجب تنفيذ الدوال في مساحة الاسم هذه بواسطة الأنظمة الأساسية التي تستخدم Weave، وفقًا لاحتياجات/قيود بيئة معينة.
تعريف الأنواع |
|
---|---|
BlockMark_t
|
تعريف الكتابةuint8_t
النوع المستخدم لوضع علامة على القطعة المخصّصة حاليًا أو غير المخصّصة لها حاليًا. |
BlockSetParams_t
|
تعريف الكتابةuint8_t
يُستخدم هذا النوع لترميز معلومات مجموعة الكتل. |
المتغيرات |
|
---|---|
sBlockSetParams = {
((kBlockSet1Size << kBlockSetSizeShift) & kBlockSetSizeMask) |
((kBlockSet1Count << kBlockSetCountShift) & kBlockSetCountMask) |
((kBlockSet1BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) |
((kBlockSet1isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask),
((kBlockSet2Size << kBlockSetSizeShift) & kBlockSetSizeMask) |
((kBlockSet2Count << kBlockSetCountShift) & kBlockSetCountMask) |
((kBlockSet2BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) |
((kBlockSet2isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask),
((kBlockSet3Size << kBlockSetSizeShift) & kBlockSetSizeMask) |
((kBlockSet3Count << kBlockSetCountShift) & kBlockSetCountMask) |
((kBlockSet3BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) |
((kBlockSet3isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask),
((kBlockSet4Size << kBlockSetSizeShift) & kBlockSetSizeMask) |
((kBlockSet4Count << kBlockSetCountShift) & kBlockSetCountMask) |
((kBlockSet4BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) |
((kBlockSet4isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask),
}[kNumberOfBlockSets]
|
const BlockSetParams_t
مَعلمات مجموعات الكتل المشفَّرة
|
sBufferAllocationMask = {
kNetworkBuffer0BlockAllocationMask,
kNetworkBuffer1BlockAllocationMask,
}[kNumberOfNetworkBuffers]
|
const BlockMark_t
مجموعة من أقنعة كتلة المخزن المؤقت
|
sMemBlocksAllocated = 0
|
يشير إلى القطعة المخصّصة/غير المخصّصة.
|
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
|
void *
مؤشرات إلى المخزن المؤقت للذاكرة التي تم إعدادها على "NULL" (فارغ)
|
sNetworkBuffersUsed = true
|
bool
قيمة منطقية تشير إلى ما إذا كان (صحيح) (صحيح) أم لا (خطأ) يستخدم المخازن المؤقتة للشبكة من قِبل Simple Allocator.
|
الدوال |
|
---|---|
DecodeBlockSetParams(BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm)
|
void
|
GetSecureRandomData(uint8_t *buf, uint16_t len)
|
تستدعي طبقة Weave هذه الدالة لتوليد بيانات عشوائية.
|
InitSecureRandomDataSource(nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen)
|
يتم استدعاء هذه الدالة بواسطة طبقة Weave لتهيئة مصدر بيانات عشوائي.
|
MemoryAlloc(size_t size)
|
void *
يتم استدعاء هذه الدالة بواسطة طبقة Weave لتخصيص كتلة من ذاكرة "الحجم" بايت.
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
يتم استدعاء هذه الدالة بواسطة طبقة Weave لتخصيص كتلة من ذاكرة "الحجم" بايت.
|
MemoryFree(void *p)
|
void
يتم استدعاء هذه الدالة بواسطة طبقة Weave لإطلاق كتلة ذاكرة تخصصها دالة MemeoryAlloc() .
|
MemoryInit(void *buf, size_t bufSize)
|
يتم استدعاء هذه الدالة بواسطة طبقة Weave لتهيئة الذاكرة والموارد اللازمة للوظائف المناسبة لتخصيص ذاكرة مدير Weave.
|
MemoryShutdown(void)
|
void
يتم استدعاء هذه الدالة بواسطة طبقة Weave لإصدار جميع الموارد التي تم تخصيصها بواسطة الدالة MemoryInit().
|
OnTimeConsumingCryptoDone(void)
|
void
ويتم استدعاء هذه الدالة لإبلاغ التطبيق عند انتهاء عملية التشفير التي تستهلك الكثير من الوقت للتو.
|
OnTimeConsumingCryptoStart(void)
|
void
ويتم استدعاء هذه الدالة لإبلاغ التطبيق عند اقتراب بدء عملية تشفير تستغرق وقتًا طويلاً.
|
عمليات التعداد
BlockSetParamFields
BlockSetParamFields
حظر موقع حقول المَعلمات المحددة في نموذج بترميز 8 بت
أماكن إقامة | |
---|---|
kBlockSetBufferIndexMask
|
قناع حقل فهرس المخزن المؤقت. |
kBlockSetBufferIndexShift
|
تحول حقل فهرس المخزن المؤقت. |
kBlockSetCountMask
|
قناع حقل العدد. |
kBlockSetCountShift
|
حساب متغيّرات الحقول. |
kBlockSetIsLongTermMask
|
النوع قناع الحقل. |
kBlockSetIsLongTermShift
|
اكتب متغيّر الحقل. |
kBlockSetSizeMask
|
قناع حقل الحجم. |
kBlockSetSizeShift
|
تغيير حقل الحجم |
kBlockSetSizeValueShift
|
تغيير فك ترميز حقل الحجم (اضرب في 128). |
BlockSetParams
BlockSetParams
تحدِّد مَعلمات مجموعة الكتل.
أماكن إقامة | |
---|---|
kBlockSet1BufferIndex
|
تعيين مؤشر المخزن المؤقت رقم 1 هو 0. |
kBlockSet1Count
|
المجموعة رقم 1 هي 1. |
kBlockSet1Size
|
حجم المجموعة رقم 1 هو 128 بايت. |
kBlockSet1isLongTerm
|
المجموعة رقم 1 هي النوع طويل المدى. |
kBlockSet2BufferIndex
|
تعيين مؤشر المخزن المؤقت رقم 2 على 0. |
kBlockSet2Count
|
المجموعة رقم 2 هي 1. |
kBlockSet2Size
|
حجم المجموعة رقم 2 هو 512 بايت. |
kBlockSet2isLongTerm
|
نوع المجموعة رقم 2 طويل المدى. |
kBlockSet3BufferIndex
|
تعيين مؤشر المخزن المؤقت رقم 3 هو 0. |
kBlockSet3Count
|
المجموعة رقم 3 هي 1. |
kBlockSet3Size
|
حجم المجموعة رقم 3 هو 512 بايت. |
kBlockSet3isLongTerm
|
نوع المجموعة رقم 3 قصير المدى. |
kBlockSet4BufferIndex
|
قم بتعيين مؤشر المخزن المؤقت رقم 4 على 1. |
kBlockSet4Count
|
المجموعة رقم 4 هي 2. |
kBlockSet4Size
|
حجم المجموعة رقم 4 هو 640 بايت. |
kBlockSet4isLongTerm
|
نوع المجموعة رقم 4 قصير المدى. |
kMaxBlockSize
|
الحد الأقصى لحجم الكتلة المتوافق مع تطبيق Simple Allocator |
kMinBufferSize
|
الحد الأدنى لحجم المخزن المؤقت للشبكة المطلوب لدعم حالات استخدام Simple Allocator هذه المعلمة مشتقة من أحجام كتلتي ذاكرة (640 + 600) المخصصة في المخزن المؤقت للشبكة رقم 1. |
kNetworkBuffer0BlockAllocationMask
|
يحدد هذا القناع جميع وحدات الذاكرة المخصصة من المخزن المؤقت للشبكة رقم 0. |
kNetworkBuffer1BlockAllocationMask
|
يحدد هذا القناع جميع وحدات الذاكرة المخصصة من المخزن المؤقت للشبكة رقم 1. |
kNumberOfBlockSets
|
عدد مجموعات القوالب التي يستخدمها مُخصص البسيط. |
kNumberOfNetworkBuffers
|
عدد المخازن المؤقتة للشبكة المستخدمة بواسطة تطبيق Simple Allocator. |
kTotalMemorySize
|
إجمالي سعة الذاكرة المستخدمة بواسطة أداة التخصيص البسيط. |
تعريف الأنواع
BlockMark_t
uint8_t BlockMark_t
النوع المستخدم لوضع علامة على القطعة المخصّصة حاليًا أو غير المخصّصة لها حاليًا.
uint8_t: يتوافق مع ما يصل إلى 8 كتل ذاكرة إجمالاً uint16_t، ويتوافق مع إجمالي 16 كتلة ذاكرة uint32_t، ويتوافق مع إجمالي 32 كتلة ذاكرة.
BlockSetParams_t
uint8_t BlockSetParams_t
يُستخدم هذا النوع لترميز معلومات مجموعة الكتل.
مجموعة الكتل هي مجموعة من أجزاء الذاكرة التي لها نفس الخصائص (الحجم والنوع وتنتمي إلى نفس المخزن المؤقت). يوضّح الرسم البياني التالي كيفية تشفير معلومات مجموعة الكتل بتنسيق 8 بت:
طويلة الأمد | حظر الفهرس | عدد القوالب | حجم الكتلة |
[7] | [5:6] | [3:4] | [2:0] |
[2:0] | فك الترميز |
000 | 0 بايت |
001 | 128 بايت |
010 | 256 بايت |
... | - |
111 | 896 بايت |
[3:4] | فك الترميز |
00 | 4 مربّعات |
01 | قطعة واحدة |
10 | مربّعان |
11 | 3 مربّعات |
[5:6] | فك الترميز |
00 | المخزن المؤقت للشبكة 0 |
... | - |
11 | المخزن المؤقت للشبكة رقم 3 |
[7] | فك الترميز |
0 | وحدات الذاكرة القصيرة المدى |
1 | وحدات ذاكرة طويلة المدى |
المتغيرات
sBlockSetParams
const BlockSetParams_t sBlockSetParams[kNumberOfBlockSets] = { ((kBlockSet1Size << kBlockSetSizeShift) & kBlockSetSizeMask) | ((kBlockSet1Count << kBlockSetCountShift) & kBlockSetCountMask) | ((kBlockSet1BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) | ((kBlockSet1isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask), ((kBlockSet2Size << kBlockSetSizeShift) & kBlockSetSizeMask) | ((kBlockSet2Count << kBlockSetCountShift) & kBlockSetCountMask) | ((kBlockSet2BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) | ((kBlockSet2isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask), ((kBlockSet3Size << kBlockSetSizeShift) & kBlockSetSizeMask) | ((kBlockSet3Count << kBlockSetCountShift) & kBlockSetCountMask) | ((kBlockSet3BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) | ((kBlockSet3isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask), ((kBlockSet4Size << kBlockSetSizeShift) & kBlockSetSizeMask) | ((kBlockSet4Count << kBlockSetCountShift) & kBlockSetCountMask) | ((kBlockSet4BufferIndex << kBlockSetBufferIndexShift) & kBlockSetBufferIndexMask) | ((kBlockSet4isLongTerm << kBlockSetIsLongTermShift) & kBlockSetIsLongTermMask), }
مَعلمات مجموعات الكتل المشفَّرة
sBufferAllocationMask
const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }
مجموعة من أقنعة كتلة المخزن المؤقت
تحدِّد ما إذا كانت جميع عمليات الحظر في المخزن المؤقت وغير المخصصة، ثم يمكن إعادة إلغاء المخزن المؤقت.
sMemBlocksAllocated
BlockMark_t sMemBlocksAllocated = 0
يشير إلى القطعة المخصّصة/غير المخصّصة.
تعني "تم الإعداد على 0" أنّ جميع وحدات الذاكرة وغير المخصّصة.
sMemBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
مؤشرات إلى المخزن المؤقت للذاكرة التي تم إعدادها على "NULL" (فارغ)
عند استخدام المخزن المؤقت للشبكة، يشير sMemBufs[] إلى كائنات PacketBuffer. عند استخدام المخزن المؤقت المخصص، يتم تجاهل نقاط sMemBufs[0] إلى هذا المخزن المؤقت ويتم تجاهل مؤشرات sMemBufs[] الأخرى.
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
قيمة منطقية تشير إلى ما إذا كان (صحيح) (صحيح) أم لا (خطأ) يستخدم المخازن المؤقتة للشبكة من قِبل Simple Allocator.
عند ضبط السياسة على "خطأ"، يتم استخدام المخزن المؤقت المخصّص المتوفر مع الدالة MemoryInit().
الدوال
DecodeBlockSetParams
void DecodeBlockSetParams( BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm )
GetSecureRandomData
WEAVE_ERROR GetSecureRandomData( uint8_t *buf, uint16_t len )
تستدعي طبقة Weave هذه الدالة لتوليد بيانات عشوائية.
التفاصيل | |||||||||
---|---|---|---|---|---|---|---|---|---|
المعلمات |
|
||||||||
قيم الإرجاع |
|
InitSecureRandomDataSource
WEAVE_ERROR InitSecureRandomDataSource( nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen )
يتم استدعاء هذه الدالة بواسطة طبقة Weave لتهيئة مصدر بيانات عشوائي.
هذه الدالة خاصة بالنظام الأساسي وقد تكون فارغة عندما لا يكون إعداد مصدر البيانات العشوائي مطلوبًا.
التفاصيل | |||||||||
---|---|---|---|---|---|---|---|---|---|
المعلمات |
|
||||||||
قيم الإرجاع |
|
MemoryAlloc
void * MemoryAlloc( size_t size )
يتم استدعاء هذه الدالة بواسطة طبقة Weave لتخصيص كتلة من ذاكرة "الحجم" بايت.
تعادل هذه الدالة MemoryAlloc(size, false).
التفاصيل | |||||
---|---|---|---|---|---|
المعلمات |
|
||||
قيم الإرجاع |
|
MemoryAlloc
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
يتم استدعاء هذه الدالة بواسطة طبقة Weave لتخصيص كتلة من ذاكرة "الحجم" بايت.
التفاصيل | |||||
---|---|---|---|---|---|
المعلمات |
|
||||
قيم الإرجاع |
|
MemoryFree
void MemoryFree( void *p )
يتم استدعاء هذه الدالة بواسطة طبقة Weave لإطلاق كتلة ذاكرة تخصصها دالة MemeoryAlloc() .
التفاصيل | |||
---|---|---|---|
المعلمات |
|
MemoryInit
WEAVE_ERROR MemoryInit( void *buf, size_t bufSize )
يتم استدعاء هذه الدالة بواسطة طبقة Weave لتهيئة الذاكرة والموارد اللازمة للوظائف المناسبة لتخصيص ذاكرة مدير Weave.
هذه الدالة خاصة بالنظام الأساسي وقد تكون فارغة في حالات معينة. على سبيل المثال، لا تفعل هذه الدالة أي شيء عند استخدام الدالتين C Standard Library() وfree() لتخصيص الذاكرة.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المعلمات |
|
||||||
قيم الإرجاع |
|
MemoryShutdown
void MemoryShutdown( void )
يتم استدعاء هذه الدالة بواسطة طبقة Weave لإصدار جميع الموارد التي تم تخصيصها بواسطة الدالة MemoryInit().
يمكن أن تكون هذه الدالة طلبًا فارغًا إذا لم تكن هناك حاجة إلى تحرير الموارد. على سبيل المثال، هذه هي الحالة التي يتم فيها استخدام الدالتين C Standard Library ()C Standard Library () وfree() (free()) لتخصيص الذاكرة.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
ويتم استدعاء هذه الدالة لإبلاغ التطبيق عند انتهاء عملية التشفير التي تستهلك الكثير من الوقت للتو.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
ويتم استدعاء هذه الدالة لإبلاغ التطبيق عند اقتراب بدء عملية تشفير تستغرق وقتًا طويلاً.