nl:: बुनाई:: प्लैटफ़ॉर्म:: सुरक्षा
इस नेमस्पेस में Weave सुरक्षा मॉनिटर मेमोरी मैनेजर के लिए Weave के सभी इंटरफ़ेस शामिल हैं.
खास जानकारी
इस नेमस्पेस में फ़ंक्शन लागू किए जाते हैं, ताकि खास एनवायरमेंट की ज़रूरतों/सीमाओं के मुताबिक वेव का इस्तेमाल किया जा सके.
टाइपडेफ़ |
|
---|---|
BlockMark_t
|
टाइपडेफ़uint8_t
वह प्रकार जिससे यह पता चलता है कि फ़िलहाल किस ब्लॉक को बांटा गया है/नहीं किया गया है. |
BlockSetParams_t
|
टाइपडेफ़uint8_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)
|
यह फ़ंक्शन रैंडम डेटा जनरेट करने के लिए, Weave लेयर से कॉल किया जाता है.
|
InitSecureRandomDataSource(nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen)
|
यह फ़ंक्शन रैंडम डेटा सोर्स को शुरू करने के लिए, Weave लेयर से कॉल किया जाता है.
|
MemoryAlloc(size_t size)
|
void *
इस फ़ंक्शन को Weave लेयर से कॉल किया जाता है, ताकि & "size&कोटेशन; बाइट की मेमोरी का ब्लॉक बांटा जा सके.
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
इस फ़ंक्शन को Weave लेयर से कॉल किया जाता है, ताकि & "size&कोटेशन; बाइट की मेमोरी का ब्लॉक बांटा जा सके.
|
MemoryFree(void *p)
|
void
इस फ़ंक्शन को Memeory Alc() फ़ंक्शन से मिले मेमोरी ब्लॉक को छोड़ने के लिए, Weave लेयर से कॉल किया जाता है.
|
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
यह ब्लॉक सेट पैरामीटर के बारे में बताता है.
प्रॉपर्टी | |
---|---|
kBlockSet1BufferIndex
|
सेट #1 बफ़र इंडेक्स 0 है. |
kBlockSet1Count
|
सेट #1 ब्लॉक की संख्या 1 है. |
kBlockSet1Size
|
सेट #1 का साइज़ 128 बाइट है. |
kBlockSet1isLongTerm
|
सेट #1 का टाइप लंबे समय तक काम करता है. |
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
|
ज़्यादा से ज़्यादा ब्लॉक का साइज़, सिंपल ऐलरेटर के साथ काम करता है. |
kMinBufferSize
|
Simple Allcator को इस्तेमाल करने के लिए, कम से कम नेटवर्क बफ़र की ज़रूरत होती है. यह पैरामीटर, नेटवर्क बफ़र #1 में दिए गए दो मेमोरी ब्लॉक (640 + 600) के साइज़ से जुड़ा है. |
kNetworkBuffer0BlockAllocationMask
|
यह मास्क, नेटवर्क बफ़र #0 से मिले सभी मेमोरी ब्लॉक की पहचान करता है. |
kNetworkBuffer1BlockAllocationMask
|
यह मास्क, नेटवर्क बफ़र पर #1 से बांटे गए सभी मेमोरी ब्लॉक की पहचान करता है. |
kNumberOfBlockSets
|
Simple Allcator के इस्तेमाल किए गए ब्लॉक सेट की संख्या. |
kNumberOfNetworkBuffers
|
Simple Allcator के इस्तेमाल किए जाने वाले नेटवर्क बफ़र की संख्या. |
kTotalMemorySize
|
Simpleइस्तेमाल करने वाले की ओर से इस्तेमाल की गई कुल मेमोरी. |
टाइपडेफ़
Blockमार्क_ट
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 | तीन ब्लॉक |
[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, }
बफ़र ब्लॉक मास्क का सेट.
यह पता लगाता है कि क्या बफ़र में मौजूद सभी ब्लॉक को रद्द किया गया है और फिर उन्हें बफ़र किया जा सकता है.
sMemBlocksAloud
BlockMark_t sMemBlocksAllocated = 0
यह बताता है कि किस ब्लॉक को बांटा गया है/रोक लगाया गया है.
0 से शुरू होने वाला - इसका मतलब है कि सभी मेमोरी ब्लॉक हैं और तय नहीं हैं.
sMemBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
मेमोरी बफ़र के लिए पॉइंटर, NULL पर शुरू किए जाते हैं.
जब नेटवर्क बफ़र का इस्तेमाल sMemBufs [] का इस्तेमाल किया जाता है, तब PacketBuffer ऑब्जेक्ट पर ले जाता है. जब खास बफ़र का इस्तेमाल sMemBufs[0] की तरफ़ किया जाता है, तो वह बफ़र और दूसरे sMemBufs[] पॉइंटर को अनदेखा कर दिया जाता है.
SNetworkBuffersइस्तेमाल किया गया
bool sNetworkBuffersUsed = true
वह बूलियन जिससे यह पता चलता है कि सिंपल ऐलॉटर, नेटवर्क बफ़र का इस्तेमाल करता है या नहीं.
जब गलत है - MemoryInit() फ़ंक्शन के साथ दिए गए खास बफ़र का इस्तेमाल किया जाता है.
फ़ंक्शन
डिकोडब्लॉकसेटपरम
void DecodeBlockSetParams( BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm )
SecureSecureDataडेटा पाएं
WEAVE_ERROR GetSecureRandomData( uint8_t *buf, uint16_t len )
यह फ़ंक्शन रैंडम डेटा जनरेट करने के लिए, Weave लेयर से कॉल किया जाता है.
ब्यौरा | |||||||||
---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||
सामान लौटाने की वैल्यू |
|
InitSecureVirtualDataSource
WEAVE_ERROR InitSecureRandomDataSource( nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen )
यह फ़ंक्शन रैंडम डेटा सोर्स को शुरू करने के लिए, Weave लेयर से कॉल किया जाता है.
यह फ़ंक्शन प्लैटफ़ॉर्म के हिसाब से है और रैंडम डेटा सोर्स को शुरू करने की ज़रूरत नहीं होने पर, यह खाली हो सकता है.
ब्यौरा | |||||||||
---|---|---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||||
सामान लौटाने की वैल्यू |
|
मेमोरी ऐलोकेशन
void * MemoryAlloc( size_t size )
इस फ़ंक्शन को Weave लेयर से कॉल किया जाता है, ताकि & "size&कोटेशन; बाइट की मेमोरी का ब्लॉक बांटा जा सके.
यह फ़ंक्शन MemoryAlc(साइज़, गलत) के बराबर होता है.
ब्यौरा | |||||
---|---|---|---|---|---|
पैरामीटर |
|
||||
सामान लौटाने की वैल्यू |
|
मेमोरी ऐलोकेशन
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
इस फ़ंक्शन को Weave लेयर से कॉल किया जाता है, ताकि & "size&कोटेशन; बाइट की मेमोरी का ब्लॉक बांटा जा सके.
ब्यौरा | |||||
---|---|---|---|---|---|
पैरामीटर |
|
||||
सामान लौटाने की वैल्यू |
|
मेमोरीफ़्री
void MemoryFree( void *p )
इस फ़ंक्शन को Memeory Alc() फ़ंक्शन से मिले मेमोरी ब्लॉक को छोड़ने के लिए, Weave लेयर से कॉल किया जाता है.
ब्यौरा | |||
---|---|---|---|
पैरामीटर |
|
मेमोरी
WEAVE_ERROR MemoryInit( void *buf, size_t bufSize )
Weave परत को इस फ़ंक्शन का नाम, मेमोरी और संसाधनों को शुरू करने के लिए कहा जाता है, जो Weave सुरक्षा मैनेजर मेमोरी ऐलोकेशन की सही सुविधा के लिए ज़रूरी है.
यह फ़ंक्शन खास प्लैटफ़ॉर्म के लिए है और कुछ मामलों में यह खाली हो सकता है. उदाहरण के लिए, जब C Standard Library Malloc() और free() फ़ंक्शन का इस्तेमाल, मेमोरी के बंटवारे के लिए किया जाता है, तब यह फ़ंक्शन कुछ नहीं करता.
ब्यौरा | |||||||
---|---|---|---|---|---|---|---|
पैरामीटर |
|
||||||
सामान लौटाने की वैल्यू |
|
मेमोरी शट डाउन
void MemoryShutdown( void )
इस फ़ंक्शन को Weave लेयर से MemoryInit() फ़ंक्शन के ज़रिए बांटे गए सभी रिसॉर्स रिलीज़ करने के लिए कहा जाता है.
अगर संसाधनों को रिलीज़ करने की ज़रूरत नहीं है, तो यह फ़ंक्शन एक खाली कॉल हो सकता है. उदाहरण के लिए, ऐसा तब होता है, जब C आवंटन वाली लाइब्रेरी Malloc() और free() फ़ंक्शन का इस्तेमाल, मेमोरी के बंटवारे के लिए किया जाता है.
onTimeConsumingCryptoहो गया
void OnTimeConsumingCryptoDone( void )
इस फ़ंक्शन को ऐप्लिकेशन को तब सूचित करने के लिए कहा जाता है, जब समय बचाने वाली क्रिप्टोग्राफ़िक कार्रवाई पूरी हो जाती है.
onTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
इस फ़ंक्शन को ऐप्लिकेशन को सूचित करने के लिए तब कहा जाता है, जब समय निकालने वाली क्रिप्टोग्राफ़िक कार्रवाई शुरू होने वाली होती है.