nl:: Weave:: النظام الأساسي:: الأمان
تحتوي مساحة الاسم هذه على جميع الواجهات ضمن Weave لمدير ذاكرة Weave.
الملخّص
يجب تنفيذ الدوال في مساحة الاسم هذه من خلال الأنظمة الأساسية التي تستخدم 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
قيمة منطقية تشير إلى ما إذا كانت (صحيحة) أم لا (خطأ) يتم استخدام مخازن الشبكة المؤقتة في Simple Alcator.
|
الدوال |
|
---|---|
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 لتخصيص كتلة من الذاكرة "size" بايت.
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
تُسمى هذه الوظيفة طبقة Weave لتخصيص كتلة من الذاكرة "size" بايت.
|
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
يتم استدعاء هذه الوظيفة لإعلام التطبيق عندما توشك عملية التشفير التي تستغرق وقتًا كبيرًا على البدء.
|
تعداد
حظر حقول PPramram
BlockSetParamFields
حظر موقع حقول المعلمات في نموذج مشفر بـ 8 بت.
أماكن إقامة | |
---|---|
kBlockSetBufferIndexMask
|
قناع حقل المخزن المؤقت |
kBlockSetBufferIndexShift
|
تغيُّر حقل المؤشر المخزن المؤقت |
kBlockSetCountMask
|
قناع الحقل. |
kBlockSetCountShift
|
تغيُّر عدد الحقول |
kBlockSetIsLongTermMask
|
اكتب قناع الحقل. |
kBlockSetIsLongTermShift
|
اكتب تغيُّر الحقل. |
kBlockSetSizeMask
|
قناع حقل الحجم. |
kBlockSetSizeShift
|
التغيير في حقل الحجم. |
kBlockSetSizeValueShift
|
تغيّر فك ترميز حقل الحجم (ضرب في 128). |
رموز منع البناء
BlockSetParams
تحديد معلمات مجموعة الكتل.
أماكن إقامة | |
---|---|
kBlockSet1BufferIndex
|
ضبط فهرس المخزن المؤقت 1 على 0. |
kBlockSet1Count
|
عدد الكتلة #1 هو 1. |
kBlockSet1Size
|
حجم المجموعة #1 هو 128 بايت. |
kBlockSet1isLongTerm
|
المجموعة الأولى من نوع 1 طويلة الأمد. |
kBlockSet2BufferIndex
|
ضبط فهرس المخزن المؤقت 2 على 0. |
kBlockSet2Count
|
عدد الكتلة #2 هو 1. |
kBlockSet2Size
|
حجم المجموعة 2 هو 512 بايت. |
kBlockSet2isLongTerm
|
النوع الثاني هو الطريقة طويلة المدى. |
kBlockSet3BufferIndex
|
ضبط فهرس المخزن المؤقت 3 على 0. |
kBlockSet3Count
|
عدد الكتلة رقم 3 هو 1. |
kBlockSet3Size
|
حجم المجموعة #3 هو 512 بايت. |
kBlockSet3isLongTerm
|
يعدّ النوع 3 من قصيرة المدى. |
kBlockSet4BufferIndex
|
ضبط فهرس المخزن المؤقت 4 على 1. |
kBlockSet4Count
|
عدد المجموعات الكتلية رقم 4 هو 2. |
kBlockSet4Size
|
حجم المجموعة #4 هو 640 بايت. |
kBlockSet4isLongTerm
|
المجموعة رقم 4 من النوع القصير المدى. |
kMaxBlockSize
|
يمكن استخدام الحد الأقصى لحجم الكتلة باستخدام Simple Alcator. |
kMinBufferSize
|
الحد الأدنى لحجم ذاكرة التخزين المؤقت للشبكة المطلوب لإتاحة حالات استخدام تطبيق Simple Alatoror. تُستمد هذه المعلمة من أحجام كتلتَي ذاكرة (640 + 600) يتم تخصيصهما في المخزن المؤقت للشبكة رقم 1. |
kNetworkBuffer0BlockAllocationMask
|
يحدّد هذا القناع جميع وحدات الذاكرة المخصّصة من المخزن المؤقت للشبكة #0. |
kNetworkBuffer1BlockAllocationMask
|
يحدّد هذا القناع جميع وحدات الذاكرة المخصّصة من المخزن المؤقت للشبكة رقم 1. |
kNumberOfBlockSets
|
عدد مجموعات الكتل التي يستخدمها Simple Alcator. |
kNumberOfNetworkBuffers
|
عدد ذاكرات التخزين المؤقت على الشبكة التي يستخدمها Simple Alcator. |
kTotalMemorySize
|
إجمالي الذاكرة المستخدمة من قِبل تطبيق Simple Alcator. |
رفوف النوع
حظر_علامة_
uint8_t BlockMark_t
النوع المستخدم لوضع علامة على المجموعة المخصصة أو المخصّصة حاليًا.
uint8_t - يدعم ما يصل إلى 8 وحدات ذاكرة إجمالية uint16_t - يدعم ما يصل إلى 16 كتلة ذاكرة إجمالية uint32_t - يدعم ما يصل إلى 32 كتلة ذاكرة
حظر SetParams_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), }
مجموعات الكتل المشفّرة معلمات.
SufferAllocationMask
const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }
مجموعة من أقنعة حظر التخزين المؤقت
تحدّد ما إذا كانت جميع الكتلة في المخزن المؤقت وغير المخصّصة ويمكن تخصيصها بعد ذلك.
تم تخصيص SMemBlocksA
BlockMark_t sMemBlocksAllocated = 0
يشير هذا العمود إلى المجموعة التي تم تخصيصها/تخصيصها.
تم الضبط على القيمة 0 - تعني أن جميع أجزاء الذاكرة قد تم تخصيصها ولم يتم تخصيصها.
قناة SMemBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
تم إعداد مؤشرات المخزن المؤقت للذاكرة إلى NULL.
عند استخدام مخازن الشبكة المؤقتة (sMemBufs)، يجب الإشارة إلى كائنات PacketBuffer. عند استخدام المخزن المؤقت المخصّص، يتم تجاهل نقاط sMemBufs[0] إلى ذلك المخزن المؤقت وغيره من مؤشرات sMemBufs[].
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
قيمة منطقية تشير إلى ما إذا كانت (صحيحة) أم لا (خطأ) يتم استخدام مخازن الشبكة المؤقتة في Simple Alcator.
وعند ضبطها على "خطأ"، يتم استخدام ذاكرة التخزين المؤقت المخصّصة التي يتم تقديمها باستخدام الدالة MemoryInit().
الدوال
ترميز DeSetBlockSetParams
void DecodeBlockSetParams( BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm )
الحصول على بيانات آمنة آمنة
WEAVE_ERROR GetSecureRandomData( uint8_t *buf, uint16_t len )
تُسمى هذه الوظيفة طبقة Weave لإنشاء بيانات عشوائية.
التفاصيل | |||||||||
---|---|---|---|---|---|---|---|---|---|
المعلَمات |
|
||||||||
قيم الإرجاع |
|
مصدر بيانات InitSecure عشوائية
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 لتخصيص كتلة من الذاكرة "size" بايت.
وهذه الدالة تعادل MemoryAlloc(size, false).
التفاصيل | |||||
---|---|---|---|---|---|
المعلَمات |
|
||||
قيم الإرجاع |
|
تذكرة MemoryAlloc
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
تُسمى هذه الوظيفة طبقة Weave لتخصيص كتلة من الذاكرة "size" بايت.
التفاصيل | |||||
---|---|---|---|---|---|
المعلَمات |
|
||||
قيم الإرجاع |
|
بدون ذاكرة
void MemoryFree( void *p )
تُسمى هذه الوظيفة طبقة Weave لإيقاف كتلة الذاكرة التي خصّصتها دالة MemeoryAlloc().
التفاصيل | |||
---|---|---|---|
المعلَمات |
|
تذكرة MemoryInit
WEAVE_ERROR MemoryInit( void *buf, size_t bufSize )
تُسمى هذه الوظيفة طبقة Weave لإعداد الذاكرة والموارد المطلوبة لوظيفة "مدير أمان Weave "مدير" المناسبة.
هذه الوظيفة خاصة بالنظام الأساسي وقد تكون فارغة في حالات معينة. على سبيل المثال، لا تنفِّذ هذه الدالة أي إجراء عندما يتم استخدام دالّتَي C Standard Library (واجهة برمجة التطبيقات (MCC)) وfree() لتخصيص الذاكرة.
التفاصيل | |||||||
---|---|---|---|---|---|---|---|
المعلَمات |
|
||||||
قيم الإرجاع |
|
إيقاف الذاكرة
void MemoryShutdown( void )
تُسمى هذه الوظيفة طبقة Weave لتحرير جميع الموارد التي تم تخصيصها من خلال دالة MemoryInit().
يمكن أن تكون هذه الدالة استدعاءً فارغًا إذا لم تكن هناك حاجة إلى إلغاء حجز الموارد. وعلى سبيل المثال، هذه هي الحالة عند استخدام دالّتَي C Standard Library (المكتبة) وfree() لتخصيص الذاكرة.
OnTimeConsumingCryptoتمّ
void OnTimeConsumingCryptoDone( void )
يتم استدعاء هذه الوظيفة لإعلام التطبيق عند انتهاء عملية التشفير التي تستهلك الوقت.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
يتم استدعاء هذه الوظيفة لإعلام التطبيق عندما توشك عملية التشفير التي تستغرق وقتًا كبيرًا على البدء.