nl::Weave::Platform::Security

इस नेमस्पेस में Weave में मौजूद सभी इंटरफ़ेस सिक्योरिटी मॉनिटर मेमोरी मैनेजर के लिए शामिल किए जाते हैं.

खास जानकारी

इस नेमस्पेस में फ़ंक्शन, उन प्लैटफ़ॉर्म पर लागू किए जाते हैं जो किसी खास एनवायरमेंट की ज़रूरतों/सीमाओं के हिसाब से Weave का इस्तेमाल करते हैं.

गिनती

BlockSetParamFields{
  kBlockSetSizeMask = 0x07,
  kBlockSetSizeShift = 0,
  kBlockSetSizeValueShift = 7,
  kBlockSetCountMask = 0x18,
  kBlockSetCountShift = 3,
  kBlockSetBufferIndexMask = 0x60,
  kBlockSetBufferIndexShift = 5,
  kBlockSetIsLongTermMask = 0x80,
  kBlockSetIsLongTermShift = 7
}
enum
8-बिट कोड में बदले गए फ़ॉर्म में, सेट पैरामीटर फ़ील्ड की जगह को ब्लॉक करें.
BlockSetParams{
  kNumberOfNetworkBuffers = 2,
  kNumberOfBlockSets = 4,
  kNetworkBuffer0BlockAllocationMask = 0x07,
  kNetworkBuffer1BlockAllocationMask = 0x18,
  kBlockSet1Size = 1,
  kBlockSet1Count = 1,
  kBlockSet1BufferIndex = 0,
  kBlockSet1isLongTerm = 1,
  kBlockSet2Size = 4,
  kBlockSet2Count = 1,
  kBlockSet2BufferIndex = 0,
  kBlockSet2isLongTerm = 1,
  kBlockSet3Size = 4,
  kBlockSet3Count = 1,
  kBlockSet3BufferIndex = 0,
  kBlockSet3isLongTerm = 0,
  kBlockSet4Size = 5,
  kBlockSet4Count = 2,
  kBlockSet4BufferIndex = 1,
  kBlockSet4isLongTerm = 0,
  kTotalMemorySize = (kBlockSet1Size * kBlockSet1Count + kBlockSet2Size * kBlockSet2Count + kBlockSet3Size * kBlockSet3Count + kBlockSet4Size * kBlockSet4Count) << kBlockSetSizeValueShift,
  kMaxBlockSize = 600,
  kMinBufferSize = 1240
}
enum
ब्लॉक सेट पैरामीटर को तय करता है.

टाइपडीफ़

BlockMark_t typedef
uint8_t
टाइप, जिससे यह पता चलता है कि कौनसा ब्लॉक असाइन किया गया है या नहीं दिया गया है.
BlockSetParams_t typedef
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]
कोड में बदले गए ब्लॉक सेट पैरामीटर.
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
जब कोई ज़्यादा समय लेने वाला क्रिप्टोग्राफ़िक ऑपरेशन शुरू होने वाला होता है, तब इस फ़ंक्शन को ऐप्लिकेशन को सूचना देने के लिए कहा जाता है.

क्लास

nl::Weave::Platform::Security::AES128BlockCipher
nl::Weave::Platform::Security::AES128BlockCipherDec
nl::Weave::Platform::Security::AES128BlockCipherEnc
nl::Weave::Platform::Security::AES256BlockCipher
nl::Weave::Platform::Security::AES256BlockCipherDec
nl::Weave::Platform::Security::AES256BlockCipherEnc
nl::Weave::Platform::Security::SHA1
nl::Weave::Platform::Security::SHA256

गिनती

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] - किसी सेट में मेमोरी ब्लॉक का साइज़. साइज़ की वैल्यू को 128-बाइट के लेवल के हिसाब से एन्कोड किया जाता है.
[2:0] डिकोड करना
000 0 बाइट
001 128 बाइट
010 256 बाइट
... -
111 896 बाइट
[4:3] - किसी सेट में ब्लॉक की संख्या.
[4:3] डिकोड करना
00 4 ब्लॉक
01 1 ब्लॉक
10 2 ब्लॉक
11 3 ब्लॉक
[6:5] - नेटवर्क बफ़र इंडेक्स, जिसमें मेमोरी ब्लॉक मौजूद होते हैं. ध्यान दें कि जब खास बफ़र का इस्तेमाल किया जाता है, तब सभी मेमोरी ब्लॉक को खास बफ़र से असाइन किया जाता है और इस इंडेक्स पैरामीटर को अनदेखा कर दिया जाता है.
[6:5] डिकोड करना
00 नेटवर्क बफ़र #0
... -
11 नेटवर्क बफ़र #3
[7] - इससे यह पता चलता है कि ब्लॉक को लंबे/कम समय वाले स्टोरेज के लिए इस्तेमाल किया जा रहा है या नहीं.
[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
)

रैंडम डेटा जनरेट करने के लिए वीव लेयर इस फ़ंक्शन को कॉल करता है.

जानकारी
पैरामीटर
[in] buf
उस मेमोरी बफ़र पर कर्सर ले जाएं जहां अनुरोध किया गया रैंडम डेटा सेव किया जाना चाहिए.
[in] len
अनुरोध किए गए रैंडम डेटा साइज़ को बाइट में तय करता है.
रिटर्न वैल्यू
WEAVE_ERROR_DRBG_ENTROPY_SOURCE_FAILED
अगर एंट्रॉपी सोर्स, रैंडम डेटा जनरेटर से अनुरोध किया गया एंट्रॉपी जनरेट नहीं कर पाता है.
WEAVE_ERROR_RANDOM_DATA_UNAVAILABLE
अगर रैंडम डेटा सोर्स, रैंडम डेटा जनरेट नहीं कर पाता.
WEAVE_ERROR_INCORRECT_STATE
अगर रैंडम डेटा सोर्स गलत स्थिति में मिलता है.
WEAVE_NO_ERROR
सफलता पर.

InitSecureRandomDataSource

WEAVE_ERROR InitSecureRandomDataSource(
  nl::Weave::Crypto::EntropyFunct entropyFunct,
  uint16_t entropyLen,
  const uint8_t *personalizationData,
  uint16_t perDataLen
)

रैंडम डेटा सोर्स को शुरू करने के लिए, वीव लेयर इस फ़ंक्शन को कॉल करता है.

यह फ़ंक्शन खास प्लैटफ़ॉर्म के लिए है. जब किसी रैंडम डेटा सोर्स को शुरू करने की ज़रूरत नहीं होती, तब यह फ़ंक्शन खाली हो सकता है.

जानकारी
पैरामीटर
[in] entropyFunct
उस फ़ंक्शन की ओर पॉइंटर जो रैंडम डेटा जनरेटर से एंट्रॉपी जनरेट करता है. अगर एल्गोरिदम को एंट्रॉपी इनपुट की ज़रूरत नहीं होती है, तो यह इनपुट NULL हो सकता है. ऐसा तब होता है, जब रैंडम डेटा जनरेटर के खोलने के लिए इस्तेमाल किया जाता है.
[in] entropyLen
बाइट में एंट्रॉपी का साइज़ तय करता है, जिसे इस्तेमाल किए जाने पर एंट्रॉपी फ़ंक्शन से जनरेट होना चाहिए.
[in] personalizationData
उस मेमोरी बफ़र की ओर सूचक जो आपके हिसाब से बनाए गए डेटा के इनपुट को सेव करती है. यह डेटा इनपुट, डिवाइस के हिसाब से होना चाहिए. इससे रैंडम डेटा के आंकड़ों की प्रॉपर्टी को बेहतर बनाने में मदद मिलती है.
[in] perDataLen
मनमुताबिक बनाने के डेटा का साइज़ बाइट में बताता है.
रिटर्न वैल्यू
WEAVE_ERROR_INVALID_ARGUMENT
अगर इस फ़ंक्शन में कोई अमान्य तर्क पास किया गया था.
WEAVE_NO_ERROR
सफलता पर.

MemoryAlloc

void * MemoryAlloc(
  size_t size
)

"साइज़" बाइट के लिए, मेमोरी के ब्लॉक को असाइन करने के लिए, Weave लेयर इस फ़ंक्शन को कॉल करता है.

यह फ़ंक्शन, Memory Alloc(size, false) के बराबर है.

जानकारी
पैरामीटर
[in] size
अनुरोध की गई मेमोरी का साइज़ बाइट में बताता है.
रिटर्न वैल्यू
Pointer
सफल होने पर मेमोरी ब्लॉक कर दिया.
NULL-pointer
अगर मेमोरी का बंटवारा नहीं हो पाता.

MemoryAlloc

void * MemoryAlloc(
  size_t size,
  bool isLongTermAlloc
)

"साइज़" बाइट के लिए, मेमोरी के ब्लॉक को असाइन करने के लिए, Weave लेयर इस फ़ंक्शन को कॉल करता है.

जानकारी
पैरामीटर
[in] size
अनुरोध की गई मेमोरी का साइज़ बाइट में बताता है.
[in] isLongTermAlloc
बूलियन बताता है कि अनुरोध किया गया मेमोरी ब्लॉक, लंबे समय के इस्तेमाल के लिए है या नहीं (सही) या नहीं (गलत). लंबे समय के लिए बंटवारा एक ऐसी मेमोरी होती है जिसे सुरक्षित सेशन/हैंडशेक पूरा होने तक असाइन किया जाना चाहिए. लंबे समय के लिए बजट असाइन करने के उदाहरणों में, CASE/PASE ऑब्जेक्ट के लिए असाइन किए गए ब्लॉक और उनके कॉन्टेक्स्ट डेटा शामिल हैं. कम समय के लिए बजट असाइन करने का मतलब ऐसी मेमोरी है जो किसी खास कार्रवाई के लिए ज़रूरी होती है. इसके तुरंत बाद, इसे रिलीज़ किया जा सकता है. यह इनपुट, सीमित मेमोरी वाले सिस्टम में मेमोरी के इस्तेमाल को ऑप्टिमाइज़ करने में मदद करता है. इस पैरामीटर का इस्तेमाल आर्बिट्रेरी तरीके से किया जाता है. यह फ़ंक्शन लागू करने वाले टूल पर निर्भर करता है. उदाहरण के लिए, सी स्टैंडर्ड लाइब्रेरी Malloc() का इस्तेमाल किए जाने पर, इस पैरामीटर को अनदेखा किया जाता है.
रिटर्न वैल्यू
Pointer
सफल होने पर मेमोरी ब्लॉक कर दिया.
NULL-pointer
अगर मेमोरी का बंटवारा नहीं हो पाता.

MemoryFree

void MemoryFree(
  void *p
)

Weave लेयर इस फ़ंक्शन को कॉल करता है, ताकि Memeory Alloc() फ़ंक्शन के ज़रिए असाइन किए गए मेमोरी ब्लॉक को रिलीज़ किया जा सके.

जानकारी
पैरामीटर
[in] p
उस मेमोरी ब्लॉक पर कर्सर ले जाएं जिसे रिलीज़ किया जाना चाहिए.

MemoryInit

WEAVE_ERROR MemoryInit(
  void *buf,
  size_t bufSize
)

Weave लेयर इस फ़ंक्शन को कॉल करता है, ताकि Weave Security मैनेजर मेमोरी ऐलोकेटर के सही फ़ंक्शन के लिए ज़रूरी मेमोरी और संसाधन शुरू किया जा सके.

यह फ़ंक्शन किसी प्लैटफ़ॉर्म के हिसाब से है. इसलिए, हो सकता है कि कुछ मामलों में यह खाली दिखे. उदाहरण के लिए, जब सी स्टैंडर्ड लाइब्रेरी mailoc() और free() फ़ंक्शन, मेमोरी ऐलोकेशन के लिए इस्तेमाल किए जाते हैं, तो यह फ़ंक्शन कुछ नहीं कर रहा है.

जानकारी
पैरामीटर
[in] buf
खास मेमोरी बफ़र के लिए पॉइंटर, जिसका इस्तेमाल Weave Security मैनेजर में मेमोरी ऐलोकेशन के लिए मेमोरी पूल के तौर पर किया जाना चाहिए. यह इनपुट, डिफ़ॉल्ट तौर पर NULL कर देता है. अगर किसी खास मेमोरी बफ़र का इस्तेमाल न किया जाए, तो इसका इस्तेमाल नहीं किया जाना चाहिए.
[in] bufSize
खास मेमोरी बफ़र का साइज़. यह इनपुट देना ज़रूरी नहीं है (डिफ़ॉल्ट तौर पर 0 पर सेट होता है). अगर मेमोरी बफ़र का इस्तेमाल नहीं किया जाता, तो इसका इस्तेमाल नहीं किया जाना चाहिए. अगर किसी खास मेमोरी बफ़र का इस्तेमाल किया जाता है, तो फ़ंक्शन जांच करता है. साथ ही, अगर बफ़र साइज़, Weave Security मैनेजर के इस्तेमाल के उदाहरणों के साथ काम करने लायक नहीं है, तो गड़बड़ी भी जनरेट करता है.
रिटर्न वैल्यू
WEAVE_ERROR_BUFFER_TOO_SMALL
अगर Weave Security मैनेजर के इस्तेमाल के उदाहरणों के साथ काम करने के लिए, इनपुट बफ़र का साइज़ काफ़ी नहीं है, तो वह काफ़ी नहीं है.
WEAVE_NO_ERROR
सफलता पर.
other
प्लैटफ़ॉर्म के हिसाब से, मेमोरी शुरू करने वाले फ़ंक्शन से जनरेट हुई कोई गड़बड़ी.

MemoryShutdown

void MemoryShutdown(
  void
)

Weave लेयर इस फ़ंक्शन को कॉल करता है. इससे MemoryInit() फ़ंक्शन से असाइन किए गए सभी रिसॉर्स रिलीज़ हो जाते हैं.

अगर संसाधनों को रिलीज़ करने की ज़रूरत न हो, तो इस फ़ंक्शन में कोई खाली कॉल आ सकता है. उदाहरण के लिए, ऐसा तब होता है, जब मेमोरी ऐलोकेशन के लिए, C स्टैंडर्ड लाइब्रेरी Malloc() और free() फ़ंक्शन इस्तेमाल किए जाते हैं.

OnTimeConsumingCryptoDone

void OnTimeConsumingCryptoDone(
  void
)

यह फ़ंक्शन, समय लेने वाली क्रिप्टोग्राफ़िक कार्रवाई के खत्म होने के बाद, ऐप्लिकेशन को सूचना देने के लिए कहा जाता है.

OnTimeConsumingCryptoStart

void OnTimeConsumingCryptoStart(
  void
)

जब कोई ज़्यादा समय लेने वाला क्रिप्टोग्राफ़िक ऑपरेशन शुरू होने वाला होता है, तब इस फ़ंक्शन को ऐप्लिकेशन को सूचना देने के लिए कहा जाता है.