nl:: বুনা:: প্ল্যাটফর্ম:: নিরাপত্তা
এই নেমস্পেসটি উইভ সিকিউরিটি মনিটর মেমরি ম্যানেজারের জন্য উইভ-এর মধ্যে সমস্ত ইন্টারফেস অন্তর্ভুক্ত করে।
সারাংশ
এই নেমস্পেসে ফাংশনগুলি নির্দিষ্ট পরিবেশের প্রয়োজন/সীমাবদ্ধতা অনুসারে ওয়েভ ব্যবহার করে এমন প্ল্যাটফর্মগুলি দ্বারা প্রয়োগ করা হবে।
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 একটি বুলিয়ান নির্দেশ করে যে (সত্য) বা না (মিথ্যা) নেটওয়ার্ক বাফারগুলি সরল বরাদ্দকারী দ্বারা ব্যবহৃত হয়। |
ফাংশন | |
---|---|
DecodeBlockSetParams ( BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm) | void |
GetSecureRandomData (uint8_t *buf, uint16_t len) | এই ফাংশনটিকে ওয়েভ লেয়ার দ্বারা এলোমেলো ডেটা তৈরি করতে বলা হয়। |
InitSecureRandomDataSource ( nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen) | এই ফাংশনটিকে ওয়েভ লেয়ার দ্বারা র্যান্ডম ডেটা সোর্স আরম্ভ করার জন্য বলা হয়। |
MemoryAlloc (size_t size) | void * এই ফাংশনটিকে "আকার" বাইটের মেমরির একটি ব্লক বরাদ্দ করতে ওয়েভ লেয়ার দ্বারা বলা হয়। |
MemoryAlloc (size_t size, bool isLongTermAlloc) | void * এই ফাংশনটিকে "আকার" বাইটের মেমরির একটি ব্লক বরাদ্দ করতে ওয়েভ লেয়ার দ্বারা বলা হয়। |
MemoryFree (void *p) | void MemeoryAlloc() ফাংশন দ্বারা বরাদ্দ করা একটি মেমরি ব্লক প্রকাশ করার জন্য এই ফাংশনটিকে Weave লেয়ার দ্বারা ডাকা হয়। |
MemoryInit (void *buf, size_t bufSize) | ওয়েভ সিকিউরিটি ম্যানেজার মেমরি বরাদ্দকারীর সঠিক কার্যকারিতার জন্য প্রয়োজনীয় মেমরি এবং সংস্থানগুলি শুরু করার জন্য এই ফাংশনটিকে ওয়েভ লেয়ার দ্বারা ডাকা হয়। |
MemoryShutdown (void) | void MemoryInit() ফাংশন দ্বারা বরাদ্দ করা সমস্ত সংস্থান প্রকাশ করার জন্য এই ফাংশনটিকে Weave স্তর দ্বারা বলা হয়। |
OnTimeConsumingCryptoDone (void) | void একটি সময়সাপেক্ষ ক্রিপ্টোগ্রাফিক ক্রিয়াকলাপ সবেমাত্র শেষ হলে অ্যাপ্লিকেশনটিকে অবহিত করার জন্য এই ফাংশনটিকে বলা হয়৷ |
OnTimeConsumingCryptoStart (void) | void একটি সময়সাপেক্ষ ক্রিপ্টোগ্রাফিক ক্রিয়াকলাপ যখন শুরু হতে চলেছে তখন অ্যাপ্লিকেশনটিকে অবহিত করার জন্য এই ফাংশনটিকে বলা হয়৷ |
গণনা
BlockSetParamFields
BlockSetParamFields
একটি 8-বিট এনকোড করা ফর্মে সেট প্যারামিটার ক্ষেত্র অবস্থান ব্লক করুন।
BlockSetParams
BlockSetParams
ব্লক সেট প্যারামিটার সংজ্ঞায়িত করে।
Typedefs
ব্লকমার্ক_টি
uint8_t BlockMark_t
বর্তমানে কোন ব্লকটি বরাদ্দ/অবরাদ্দ করা হয়েছে তা চিহ্নিত করতে ব্যবহৃত প্রকার।
uint8_t - মোট 8টি মেমরি ব্লক সমর্থন করে
BlockSetParams_t
uint8_t BlockSetParams_t
এই ধরনের ব্লক সেট তথ্য এনকোড করতে ব্যবহৃত হয়.
একটি ব্লক সেট হল মেমরি খণ্ডগুলির একটি গ্রুপ যার একই বৈশিষ্ট্য রয়েছে (আকার, প্রকার এবং একই বাফারের অন্তর্গত)। নিচের ডায়াগ্রামে দেখানো হয়েছে কিভাবে ব্লক সেট তথ্য 8-বিট ফরম্যাটে এনকোড করা হয়েছে:
দীর্ঘ মেয়াদী | ব্লক সূচক | ব্লকের সংখ্যা | ব্লক সাইজ |
[৭] | [৬:৫] | [৪:৩] | [২:০] |
[২:০] | ডিকোডিং |
000 | 0 বাইট |
001 | 128 বাইট |
010 | 256 বাইট |
... | - |
111 | 896 বাইট |
[৪:৩] | ডিকোডিং |
00 | 4 ব্লক |
01 | 1 ব্লক |
10 | 2 ব্লক |
11 | 3 ব্লক |
[৬:৫] | ডিকোডিং |
00 | নেটওয়ার্ক বাফার #0 |
... | - |
11 | নেটওয়ার্ক বাফার #3 |
[৭] | ডিকোডিং |
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, }
বাফার ব্লক মাস্কের সেট।
বাফারের সমস্ত ব্লক এবং বরাদ্দ না থাকলে সনাক্ত করে এবং তারপরে বাফারটি রিলিজ করা যেতে পারে।
sMemBlocks বরাদ্দ
BlockMark_t sMemBlocksAllocated = 0
কোন ব্লক বরাদ্দ/অবরাদ্দ করা হয়েছে তা নির্দেশ করে।
0-তে সূচনা করা হয়েছে - এর অর্থ হল সমস্ত মেমরি ব্লক এবং অনির্বাণ।
sMemBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
মেমরি বাফারের পয়েন্টার NULL তে আরম্ভ করা হয়েছে।
যখন নেটওয়ার্ক বাফার ব্যবহার করা হয় sMemBufs[] PacketBuffer অবজেক্টের দিকে নির্দেশ করে। যখন ডেডিকেটেড বাফার ব্যবহার করা হয় তখন sMemBufs[0] সেই বাফারে পয়েন্ট করে এবং অন্যান্য sMemBufs[] পয়েন্টার উপেক্ষা করা হয়।
sNetworkBuffers ব্যবহার করা হয়েছে
bool sNetworkBuffersUsed = true
একটি বুলিয়ান নির্দেশ করে যে (সত্য) বা না (মিথ্যা) নেটওয়ার্ক বাফারগুলি সরল বরাদ্দকারী দ্বারা ব্যবহৃত হয়।
যখন মিথ্যা - 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 )
এই ফাংশনটিকে ওয়েভ লেয়ার দ্বারা এলোমেলো ডেটা তৈরি করতে বলা হয়।
বিস্তারিত | |||||||||
---|---|---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||||
রিটার্ন মান |
|
InitSecureRandomDataSource
WEAVE_ERROR InitSecureRandomDataSource( nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen )
এই ফাংশনটিকে ওয়েভ লেয়ার দ্বারা র্যান্ডম ডেটা সোর্স আরম্ভ করার জন্য বলা হয়।
এই ফাংশনটি প্ল্যাটফর্ম নির্দিষ্ট এবং খালি হতে পারে যখন র্যান্ডম ডেটা উত্সের আরম্ভ করার প্রয়োজন হয় না।
বিস্তারিত | |||||||||
---|---|---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||||
রিটার্ন মান |
|
MemoryAlloc
void * MemoryAlloc( size_t size )
এই ফাংশনটিকে "আকার" বাইটের মেমরির একটি ব্লক বরাদ্দ করতে ওয়েভ লেয়ার দ্বারা বলা হয়।
এই ফাংশনটি MemoryAlloc (আকার, মিথ্যা) এর সমতুল্য।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
MemoryAlloc
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
এই ফাংশনটিকে "আকার" বাইটের মেমরির একটি ব্লক বরাদ্দ করতে ওয়েভ লেয়ার দ্বারা বলা হয়।
বিস্তারিত | |||||
---|---|---|---|---|---|
পরামিতি |
| ||||
রিটার্ন মান |
|
মেমরি ফ্রি
void MemoryFree( void *p )
MemeoryAlloc() ফাংশন দ্বারা বরাদ্দ করা একটি মেমরি ব্লক প্রকাশ করার জন্য এই ফাংশনটিকে Weave লেয়ার দ্বারা ডাকা হয়।
বিস্তারিত | |||
---|---|---|---|
পরামিতি |
|
MemoryInit
WEAVE_ERROR MemoryInit( void *buf, size_t bufSize )
ওয়েভ সিকিউরিটি ম্যানেজার মেমরি বরাদ্দকারীর সঠিক কার্যকারিতার জন্য প্রয়োজনীয় মেমরি এবং সংস্থানগুলি শুরু করার জন্য এই ফাংশনটিকে ওয়েভ লেয়ার দ্বারা ডাকা হয়।
এই ফাংশনটি প্ল্যাটফর্ম নির্দিষ্ট এবং কিছু ক্ষেত্রে খালি হতে পারে। উদাহরণস্বরূপ, যখন C Standard Library malloc() এবং free() ফাংশন মেমরি বরাদ্দকরণের জন্য ব্যবহার করা হয় তখন এই ফাংশন কিছুই করে না।
বিস্তারিত | |||||||
---|---|---|---|---|---|---|---|
পরামিতি |
| ||||||
রিটার্ন মান |
|
মেমরি শাটডাউন
void MemoryShutdown( void )
MemoryInit() ফাংশন দ্বারা বরাদ্দ করা সমস্ত সংস্থান প্রকাশ করার জন্য এই ফাংশনটিকে Weave স্তর দ্বারা বলা হয়।
এই ফাংশনটি একটি খালি কল হতে পারে যদি সংস্থান প্রকাশ করার প্রয়োজন না হয়। উদাহরণস্বরূপ, যখন C স্ট্যান্ডার্ড লাইব্রেরি malloc() এবং free() ফাংশন মেমরি বরাদ্দের জন্য ব্যবহার করা হয় তখন এটি হয়।
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
একটি সময়সাপেক্ষ ক্রিপ্টোগ্রাফিক ক্রিয়াকলাপ সবেমাত্র শেষ হলে অ্যাপ্লিকেশনটিকে অবহিত করার জন্য এই ফাংশনটিকে বলা হয়৷
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
একটি সময়সাপেক্ষ ক্রিপ্টোগ্রাফিক ক্রিয়াকলাপ যখন শুরু হতে চলেছে তখন অ্যাপ্লিকেশনটিকে অবহিত করার জন্য এই ফাংশনটিকে বলা হয়৷