nl::Weave::Platform::Security

इस नेमस्पेस में, Weave सिक्योरिटी मॉनिटर मेमोरी मैनेजर के लिए, 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 टाइपडिफ़
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]
कोड में बदले गए ब्लॉक सेट के पैरामीटर.
sBufferAllocationMask = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }[kNumberOfNetworkBuffers]
const BlockMark_t
बफ़र ब्लॉक मास्क का सेट.
sMemBlocksAllocated = 0
इससे पता चलता है कि कौनसा ब्लॉक असाइन किया गया है या कौनसा नहीं है.
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
void *
मेमोरी बफ़र के लिए पॉइंटर, शून्य में शुरू किए गए.
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 लेयर कॉल किया जाता है बाइट हैं.
MemoryAlloc(size_t size, bool isLongTermAlloc)
void *
"साइज़" वाली मेमोरी का एक ब्लॉक असाइन करने के लिए, इस फ़ंक्शन को Weave लेयर कॉल किया जाता है बाइट हैं.
MemoryFree(void *p)
void
इस फ़ंक्शन को Weave लेयर कॉल करके, MemeoryAlloc() फ़ंक्शन से असाइन किए गए मेमोरी ब्लॉक को रिलीज़ करता है.
MemoryInit(void *buf, size_t bufSize)
इस फ़ंक्शन को Weave लेयर से कॉल किया जाता है, ताकि Weave सिक्योरिटी मैनेजर मेमोरी ऐलोकेटर के सही तरीके से काम करने के लिए ज़रूरी मेमोरी और संसाधनों को शुरू किया जा सके.
MemoryShutdown(void)
void
MemoryInit() फ़ंक्शन से असाइन किए गए सभी संसाधनों को रिलीज़ करने के लिए, इस फ़ंक्शन को Weave लेयर कॉल किया जाता है.
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 के ब्लॉक की संख्या 1 है.

kBlockSet3Size

सेट #3 का साइज़ 512 बाइट है.

kBlockSet3isLongTerm

सेट #3 का टाइप कम समय के लिए है.

kBlockSet4BufferIndex

सेट #4 का बफ़र इंडेक्स 1 है.

kBlockSet4Count

सेट #4 पर ब्लॉक की संख्या दो है.

kBlockSet4Size

सेट #4 का साइज़ 640 बाइट है.

kBlockSet4isLongTerm

सेट #4 का टाइप कम समय के लिए है.

kMaxBlockSize

सरल आलोकेटर द्वारा समर्थित अधिकतम ब्लॉक आकार.

kMinBufferSize

सामान्य आलोकेटर के इस्तेमाल के उदाहरणों के लिए, कम से कम नेटवर्क बफ़र साइज़ का होना ज़रूरी है.

यह पैरामीटर, नेटवर्क बफ़र #1 में तय किए गए दो मेमोरी ब्लॉक (640 + 600) के साइज़ से लिया जाता है.

kNetworkBuffer0BlockAllocationMask

यह मास्क, नेटवर्क बफ़र #0 से असाइन किए गए सभी मेमोरी ब्लॉक की पहचान करता है.

kNetworkBuffer1BlockAllocationMask

यह मास्क, नेटवर्क बफ़र #1 से असाइन किए गए सभी मेमोरी ब्लॉक की पहचान करता है.

kNumberOfBlockSets

सिंपल आलोकेटर के इस्तेमाल किए गए ब्लॉक सेट की संख्या.

kNumberOfNetworkBuffers

सिंपल ऐलोकेटर की ओर से इस्तेमाल किए गए नेटवर्क बफ़र की संख्या.

kTotalMemorySize

सिंपल आलोकेटर की ओर से इस्तेमाल की गई कुल मेमोरी.

टाइपडिफ़

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 }

मेमोरी बफ़र के लिए पॉइंटर, शून्य में शुरू किए गए.

जब नेटवर्क बफ़र का इस्तेमाल किया जाता है, तो sMemBuffs[] PacketBuffer ऑब्जेक्ट पर ले जाती है. जब खास तरह के बफ़र का इस्तेमाल किया जाता है, तो उस बफ़र पर sMemBufs[0] पॉइंट पॉइंट किए जाते हैं और दूसरे sMemBufs[] पॉइंटर को अनदेखा कर दिया जाता है.

sNetworkBuffersUsed

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
)

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

ब्यौरा
पैरामीटर
[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
)

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

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

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

MemoryAlloc

void * MemoryAlloc(
  size_t size
)

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

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

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

MemoryAlloc

void * MemoryAlloc(
  size_t size,
  bool isLongTermAlloc
)

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

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

MemoryFree

void MemoryFree(
  void *p
)

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

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

MemoryInit

WEAVE_ERROR MemoryInit(
  void *buf,
  size_t bufSize
)

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

यह फ़ंक्शन सिर्फ़ प्लैटफ़ॉर्म के लिए है. कुछ मामलों में शायद यह उपलब्ध न हो. उदाहरण के लिए, जब C Standard Library Maloc() और free() फ़ंक्शन, मेमोरी के बंटवारे के लिए इस्तेमाल किए जाते हैं, तो यह फ़ंक्शन कुछ नहीं करता.

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

MemoryShutdown

void MemoryShutdown(
  void
)

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

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

OnTimeConsumingCryptoDone

void OnTimeConsumingCryptoDone(
  void
)

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

OnTimeConsumingCryptoStart

void OnTimeConsumingCryptoStart(
  void
)

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