nl:: Weave:: Platform:: Security
تشمل مساحة الاسم هذه جميع الواجهات داخل Weave لمدير الذاكرة Security Monitor.
ملخّص
سيتم تنفيذ الدوال في مساحة الاسم هذه بواسطة الأنظمة الأساسية التي تستخدم Weave، وفقًا لاحتياجات/قيود البيئة الخاصة.
تحديدات النوع |
|
---|---|
BlockMark_t
|
typedefuint8_t
النوع المستخدَم لوضع علامة على المجموعة المخصّصة حاليًا/غير المخصّصة. |
BlockSetParams_t
|
typedefuint8_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
قيمة منطقية تشير إلى ما إذا كان (true) أم لا (false) يتم استخدام المخازن المؤقتة للشبكة بواسطة 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 Security Manager بشكل مناسب.
|
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
|
حجم المجموعة الأولى هو 128 بايت. |
kBlockSet1isLongTerm
|
النوع رقم 1 طويل المدى. |
kBlockSet2BufferIndex
|
ضبط مؤشر المخزن المؤقت رقم 2 هي 0 |
kBlockSet2Count
|
ضبط رقم 2 لعدد الوحدات السكنية هو 1. |
kBlockSet2Size
|
حجم المجموعة الثانية هو 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
|
عدد مجموعات الكتل التي يستخدمها Simple Allocator. |
kNumberOfNetworkBuffers
|
عدد المخازن المؤقتة للشبكة التي يستخدمها تطبيق Simple Allocator. |
kTotalMemorySize
|
إجمالي الذاكرة التي يستخدمها تطبيق Simple Allocator. |
تحديدات النوع
BlockMark_t
uint8_t BlockMark_t
النوع المستخدَم لوضع علامة على المجموعة المخصّصة حاليًا/غير المخصّصة.
uint8_t - تدعم ما يصل إلى 8 كتل ذاكرة إجمالية uint16_t - تدعم ما يصل إلى 16 كتلة ذاكرة إجمالي uint32_t - تدعم ما يصل إلى 32 كتلة ذاكرة إجمالاً
BlockSetParams_t
uint8_t BlockSetParams_t
يُستخدم هذا النوع لترميز معلومات مجموعة الكتل.
مجموعة الكتل هي مجموعة من مقاطع الذاكرة التي لها نفس الخصائص (الحجم والنوع وتنتمي إلى نفس المخزن المؤقت). ويوضح الرسم البياني التالي كيفية ترميز معلومات مجموعة الكتل بتنسيق 8 بت:
طويلة الأجل | حظر الفهرس | عدد القوالب | حجم القطع |
[7] | [6:5] | [4:3] | [2:0] |
[2:0] | فك الترميز |
000 | 0 بايت |
001 | 128 بايت |
010 | 256 بايت |
... | - |
111 | 896 بايت |
[4:3] | فك الترميز |
00 | 4 مربّعات |
01 | مربّع واحد |
10 | مربّعان |
11 | 3 مربّعات |
[6:5] | فك الترميز |
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
قيمة منطقية تشير إلى ما إذا كان (true) أم لا (false) يتم استخدام المخازن المؤقتة للشبكة بواسطة 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 Security Manager بشكل مناسب.
هذه الدالة خاصة بالنظام الأساسي وقد تكون فارغة في بعض الحالات. على سبيل المثال، لا تفعل هذه الدالة أي شيء عند استخدام الدالتين shopping Standard Library (alloc()) وfree() لتخصيص الذاكرة.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المَعلمات |
|
||||||
قيم الإرجاع |
|
MemoryShutdown
void MemoryShutdown( void )
تستدعي طبقة Weave هذه الدالة لإصدار جميع الموارد التي تم تخصيصها من خلال الدالة MemoryInit().
يمكن أن تكون هذه الدالة استدعاءً فارغًا إذا لم تكن هناك حاجة إلى إصدار الموارد. على سبيل المثال، هذه هي الحالة التي يتم فيها استخدام الدالتين C Standard Libraryalloc() وfree() لتخصيص الذاكرة.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
ويتم استدعاء هذه الدالة لإشعار التطبيق عند انتهاء عملية تشفير تستهلك الكثير من الوقت.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
ويتم استدعاء هذه الدالة لإشعار التطبيق عندما تكون عملية التشفير على وشك البدء.