nl:: Weave:: Platform:: Security
מרחב השמות הזה כולל את כל הממשקים ב-Weave עבור מנהל הזיכרון של Weave Security Monitor.
סיכום
הפונקציות במרחב השמות הזה יוטמעו על ידי פלטפורמות שמשתמשות ב-Weave, בהתאם לצרכים/למגבלות של הסביבה הספציפית.
Typedefs |
|
---|---|
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
|
גודל קבוצה 1 הוא 128 בייטים. |
kBlockSet1isLongTerm
|
הסוג הראשון הוא טווח ארוך. |
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
|
הגודל המינימלי של מאגר הנתונים הזמני ברשת שנדרש כדי לתמוך בתרחישים לדוגמה של Allocator. הפרמטר הזה נגזר מהגדלים של שני בלוקי זיכרון (640 + 600) שהוקצו במאגר הנתונים הזמני של הרשת מס' 1. |
kNetworkBuffer0BlockAllocationMask
|
המסכה הזו מזהה את כל בלוקי הזיכרון שהוקצו ממאגר נתונים זמני של רשת מס' 0. |
kNetworkBuffer1BlockAllocationMask
|
המסכה הזו מזהה את כל בלוקי הזיכרון שהוקצו ממאגר הנתונים הזמני של הרשת מס' 1. |
kNumberOfBlockSets
|
מספר ערכות הבלוקים שנעשה בהן שימוש ב-Simplecator. |
kNumberOfNetworkBuffers
|
מספר מאגרי הנתונים הזמניים של הרשת ב-Simplecator. |
kTotalMemorySize
|
הזיכרון הכולל בשימוש של Simple Allocator. |
Typedefs
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 | אפס בייט |
001 | 128 בייטים |
010 | 256 בייטים |
... | - |
111 | 896 בייטים |
[4:3] | פענוח הקוד |
00 | 4 בלוקים |
01 | בלוק אחד |
10 | 2 בלוקים |
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]), המערכת מתעלמת מנקודה למאגר הנתונים ומנקודות sMemBuf אחרות[].
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
ערך בוליאני שמציין אם (true) או לא (false) את מאגרי הנתונים הזמניים של הרשת Simple Allocator.
אם הערך הוא False, נעשה שימוש במאגר הנתונים הזמני הייעודי שמסופק באמצעות הפונקציה 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.
הפונקציה הזו ספציפית לפלטפורמה ויכול להיות שהיא תהיה ריקה במקרים מסוימים. לדוגמה, הפונקציה הזו לא מבצעת שום פעולה כשהפונקציות C Standard Library Malloc() ו-free() משמשות להקצאת זיכרון.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
מוחזר ערכים |
|
MemoryShutdown
void MemoryShutdown( void )
הפונקציה נקרא על ידי שכבת Weave כדי לשחרר את כל המשאבים שהוקצו על ידי פונקציית MemoryInit().
הפונקציה הזו יכולה להיות קריאה ריקה אם לא צריך לשחרר משאבים. לדוגמה, נניח שהפונקציות C Standard Library Malloc() ו-free() משמשות להקצאת זיכרון.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
הפונקציה הזו מופעלת כדי להודיע לאפליקציה כשפעולה קריפטוגרפית שגוזלת זמן רב הסתיימה.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
הפונקציה הזו מופעלת כדי להודיע לאפליקציה כשפעולה קריפטוגרפית שגוזלת זמן רב עומדת להתחיל.