nl:: Weave:: Platform:: Security
מרחב השמות הזה כולל את כל הממשקים ב-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
ערך בוליאני שמציין אם (true) או לא (false) את השימוש במאגרי הנתונים הזמניים של רשת ה-{8/}
|
פונקציות |
|
---|---|
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
|
הערך של אינדקס מאגר הנתונים הזמני מוגדר 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 Allcator. |
kMinBufferSize
|
הגודל המינימלי של מאגר הנתונים הזמני ברשת כדי לתמוך בתרחישים לדוגמה פשוטים ב-BigQuery. הפרמטר הזה נגזר מהגדלים של שני בלוקים של זיכרון (640 + 600) שהוקצו למאגר הנתונים הזמני של הרשת מס' 1. |
kNetworkBuffer0BlockAllocationMask
|
המסיכה הזו מזהה את כל גושי הזיכרון שהוקצו ממאגר נתונים זמני של רשת מס' 0. |
kNetworkBuffer1BlockAllocationMask
|
המסיכה הזו מזהה את כל גושי הזיכרון שהוקצו ממאגר אחסון זמני של רשת מס' 1. |
kNumberOfBlockSets
|
מספר ערכות הבלוקים שבהן משתמש ה-Simple BigQuerycator. |
kNumberOfNetworkBuffers
|
מספר מאגרי הנתונים הזמניים של רשת המשמשים את BigQuerycator |
kTotalMemorySize
|
הזיכרון הכולל שבו משתמש ה-PM בצורה פשוטה. |
ערכי דף
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 | 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.
כאשר נעשה שימוש במאגרי אחסון זמניים, sMemBuf[] מצביעים על האובייקטים של PacketBuffer. כשנעשה שימוש במאגר נתונים זמני ייעודי, sMemBufs[0] מפנים למאגר הנתונים הזמני, והמערכת מתעלמת ממצבי sMemBuf[] אחרים.
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
ערך בוליאני שמציין אם (true) או לא (false) את השימוש במאגרי הנתונים הזמניים של רשת ה-{8/}
אם הערך הוא 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.
הפונקציה הזו ספציפית לפלטפורמה ויכולה להיות ריקה במקרים מסוימים. לדוגמה, הפונקציה הזו לא מבצעת שום פעולה כאשר נעשה שימוש בפונקציות C Standard Library Malloc() ו-free() להקצאת זיכרון.
פרטים | |||||||
---|---|---|---|---|---|---|---|
פרמטרים |
|
||||||
ערכים מוחזרים |
|
MemoryShutdown
void MemoryShutdown( void )
הפונקציה הזו נקראת על ידי שכבת Weave כדי לשחרר את כל המשאבים שהוקצו על ידי הפונקציה MemoryInit().
הפונקציה הזו יכולה להיות קריאה ריקה אם אין צורך לשחרר משאבים. לדוגמה, זה מקרה שבו נעשה שימוש בפונקציות C Standard Library Malloc() ו-free() להקצאת זיכרון.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
הפונקציה הזו נקראת כדי ליידע את האפליקציה כשפעולה קריפטוגרפית שצורכת זמן רב הסתיימה.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
הפונקציה הזו נקראת כדי ליידע את האפליקציה כשפעולה קריפטוגרפית שצורכת זמן עומדת להתחיל.