nl:: بافت:: پلتفرم:: امنیت
این فضای نام شامل تمام رابط های موجود در 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 یک بولی که نشان می دهد (درست) یا نه (نادرست) بافرهای شبکه توسط 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 بیتی مسدود کنید.
BlockSetParams
BlockSetParams
پارامترهای مجموعه بلوک را تعریف می کند.
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 | 0 بایت |
001 | 128 بایت |
010 | 256 بایت |
... | - |
111 | 896 بایت |
[4:3] | رمزگشایی |
00 | 4 بلوک |
01 | 1 بلوک |
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] به آن بافر اشاره می کند و سایر اشاره گرهای sMemBufs[] نادیده گرفته می شوند.
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
یک بولی که نشان می دهد (درست) یا نه (نادرست) بافرهای شبکه توسط 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 (اندازه، نادرست) است.
جزئیات | |||||
---|---|---|---|---|---|
پارامترها |
| ||||
ارزش های بازگشتی |
|
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() برای تخصیص حافظه استفاده می شوند، این تابع هیچ کاری انجام نمی دهد.
جزئیات | |||||||
---|---|---|---|---|---|---|---|
پارامترها |
| ||||||
ارزش های بازگشتی |
|
Memory Shutdown
void MemoryShutdown( void )
این تابع توسط لایه Weave فراخوانی می شود تا تمام منابعی که توسط تابع MemoryInit() تخصیص داده شده اند را آزاد کند.
اگر نیازی به انتشار منابع نباشد، این تابع می تواند یک تماس خالی باشد. به عنوان مثال، این مورد زمانی است که توابع C Standard Library malloc() و free() برای تخصیص حافظه استفاده می شوند.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
این تابع برای اطلاع دادن به برنامه زمانی که یک عملیات رمزنگاری وقت گیر به تازگی به پایان رسیده است فراخوانی می شود.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
این تابع برای اطلاع دادن به برنامه زمانی که یک عملیات رمزنگاری وقت گیر در شرف شروع است، فراخوانی می شود.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates. The OPENTHREAD and related marks are trademarks of the Thread Group and are used under license.
تاریخ آخرین بهروزرسانی 2024-11-13 بهوقت ساعت هماهنگ جهانی.