nl:: Weave:: Platform:: Security
इस नेमस्पेस में 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 *
मेमोरी बफ़र के लिए पॉइंटर, शून्य पर शुरू किए गए.
|
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)
|
रैंडम डेटा जनरेट करने के लिए वीव लेयर इस फ़ंक्शन को कॉल करता है.
|
InitSecureRandomDataSource(nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen)
|
रैंडम डेटा सोर्स को शुरू करने के लिए, वीव लेयर इस फ़ंक्शन को कॉल करता है.
|
MemoryAlloc(size_t size)
|
void *
"साइज़" बाइट के लिए, मेमोरी के ब्लॉक को असाइन करने के लिए, Weave लेयर इस फ़ंक्शन को कॉल करता है.
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
"साइज़" बाइट के लिए, मेमोरी के ब्लॉक को असाइन करने के लिए, Weave लेयर इस फ़ंक्शन को कॉल करता है.
|
MemoryFree(void *p)
|
void
Weave लेयर इस फ़ंक्शन को कॉल करता है, ताकि Memeory Alloc() फ़ंक्शन के ज़रिए असाइन किए गए मेमोरी ब्लॉक को रिलीज़ किया जा सके.
|
MemoryInit(void *buf, size_t bufSize)
|
Weave लेयर इस फ़ंक्शन को कॉल करता है, ताकि Weave Security मैनेजर मेमोरी ऐलोकेटर के सही फ़ंक्शन के लिए ज़रूरी मेमोरी और संसाधन शुरू किया जा सके.
|
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 ब्लॉक की संख्या एक है. |
kBlockSet1Size
|
सेट #1 का साइज़ 128 बाइट है. |
kBlockSet1isLongTerm
|
सेट #1 प्रकार लंबी अवधि है. |
kBlockSet2BufferIndex
|
सेट #2 का बफ़र इंडेक्स 0 है. |
kBlockSet2Count
|
सेट करें कि #2 ब्लॉक की संख्या एक है. |
kBlockSet2Size
|
सेट #2 का साइज़ 512 बाइट है. |
kBlockSet2isLongTerm
|
सेट #2 टाइप, लंबे समय के लिए है. |
kBlockSet3BufferIndex
|
सेट #3 का बफ़र इंडेक्स 0 है. |
kBlockSet3Count
|
सेट करें कि #3 ब्लॉक की संख्या एक है. |
kBlockSet3Size
|
सेट #3 का साइज़ 512 बाइट है. |
kBlockSet3isLongTerm
|
सेट #3 टाइप छोटी अवधि के लिए है. |
kBlockSet4BufferIndex
|
सेट #4 का बफ़र इंडेक्स 1 है. |
kBlockSet4Count
|
सेट करें कि #4 के ब्लॉक की संख्या दो है. |
kBlockSet4Size
|
सेट #4 का साइज़ 640 बाइट है. |
kBlockSet4isLongTerm
|
सेट #4 टाइप छोटी अवधि है. |
kMaxBlockSize
|
सिंपल एलोकेटर के साथ काम करने वाले ब्लॉक का ज़्यादा से ज़्यादा साइज़. |
kMinBufferSize
|
सिंपल Allocator के इस्तेमाल के उदाहरणों के साथ काम करने के लिए, नेटवर्क का कम से कम बफ़र साइज़ ज़रूरी है. यह पैरामीटर, नेटवर्क बफ़र #1 में असाइन किए गए दो मेमोरी ब्लॉक (640 + 600) के साइज़ से लिया जाता है. |
kNetworkBuffer0BlockAllocationMask
|
यह मास्क नेटवर्क बफ़र #0 से असाइन किए गए सभी मेमोरी ब्लॉक की पहचान करता है. |
kNetworkBuffer1BlockAllocationMask
|
यह मास्क नेटवर्क बफ़र #1 से असाइन किए गए सभी मेमोरी ब्लॉक की पहचान करता है. |
kNumberOfBlockSets
|
Simple Allocator के ज़रिए इस्तेमाल किए जाने वाले ब्लॉक सेट की संख्या. |
kNumberOfNetworkBuffers
|
Simple Allocator के ज़रिए इस्तेमाल किए जाने वाले नेटवर्क बफ़र की संख्या. |
kTotalMemorySize
|
Simple Allocator की ओर से इस्तेमाल की गई कुल मेमोरी. |
टाइपडीफ़
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 }
मेमोरी बफ़र के लिए पॉइंटर, शून्य पर शुरू किए गए.
जब नेटवर्क बफ़र का इस्तेमाल किया जाता है, तो sMemBufs[] पैकेट के ऑब्जेक्ट की तरफ़ इशारा करते हैं. जब खास बफ़र का इस्तेमाल किया जाता है, तब sMemBufs[0] उस बफ़र की तरफ़ पॉइंट करता है और दूसरे sMemBufs[] पॉइंटर को अनदेखा कर दिया जाता है.
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
वह बूलियन जिससे पता चलता है कि (सही) या गलत (गलत) नेटवर्क बफ़र का इस्तेमाल, Simple Allocator ने किया है या नहीं.
गलत होने पर - 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 )
"साइज़" बाइट के लिए, मेमोरी के ब्लॉक को असाइन करने के लिए, Weave लेयर इस फ़ंक्शन को कॉल करता है.
यह फ़ंक्शन, Memory Alloc(size, false) के बराबर है.
जानकारी | |||||
---|---|---|---|---|---|
पैरामीटर |
|
||||
रिटर्न वैल्यू |
|
MemoryAlloc
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
"साइज़" बाइट के लिए, मेमोरी के ब्लॉक को असाइन करने के लिए, Weave लेयर इस फ़ंक्शन को कॉल करता है.
जानकारी | |||||
---|---|---|---|---|---|
पैरामीटर |
|
||||
रिटर्न वैल्यू |
|
MemoryFree
void MemoryFree( void *p )
Weave लेयर इस फ़ंक्शन को कॉल करता है, ताकि Memeory Alloc() फ़ंक्शन के ज़रिए असाइन किए गए मेमोरी ब्लॉक को रिलीज़ किया जा सके.
जानकारी | |||
---|---|---|---|
पैरामीटर |
|
MemoryInit
WEAVE_ERROR MemoryInit( void *buf, size_t bufSize )
Weave लेयर इस फ़ंक्शन को कॉल करता है, ताकि Weave Security मैनेजर मेमोरी ऐलोकेटर के सही फ़ंक्शन के लिए ज़रूरी मेमोरी और संसाधन शुरू किया जा सके.
यह फ़ंक्शन किसी प्लैटफ़ॉर्म के हिसाब से है. इसलिए, हो सकता है कि कुछ मामलों में यह खाली दिखे. उदाहरण के लिए, जब सी स्टैंडर्ड लाइब्रेरी mailoc() और free() फ़ंक्शन, मेमोरी ऐलोकेशन के लिए इस्तेमाल किए जाते हैं, तो यह फ़ंक्शन कुछ नहीं कर रहा है.
जानकारी | |||||||
---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||
रिटर्न वैल्यू |
|
MemoryShutdown
void MemoryShutdown( void )
Weave लेयर इस फ़ंक्शन को कॉल करता है. इससे MemoryInit() फ़ंक्शन से असाइन किए गए सभी रिसॉर्स रिलीज़ हो जाते हैं.
अगर संसाधनों को रिलीज़ करने की ज़रूरत न हो, तो इस फ़ंक्शन में कोई खाली कॉल आ सकता है. उदाहरण के लिए, ऐसा तब होता है, जब मेमोरी ऐलोकेशन के लिए, C स्टैंडर्ड लाइब्रेरी Malloc() और free() फ़ंक्शन इस्तेमाल किए जाते हैं.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
यह फ़ंक्शन, समय लेने वाली क्रिप्टोग्राफ़िक कार्रवाई के खत्म होने के बाद, ऐप्लिकेशन को सूचना देने के लिए कहा जाता है.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
जब कोई ज़्यादा समय लेने वाला क्रिप्टोग्राफ़िक ऑपरेशन शुरू होने वाला होता है, तब इस फ़ंक्शन को ऐप्लिकेशन को सूचना देने के लिए कहा जाता है.