nl:: बुनाई::प्लैटफ़ॉर्म::सुरक्षा

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

क्लास

nl:: बुनाई::प्लैटफ़ॉर्म::सुरक्षा::AES128BlockCipher
nl:: बुनाई::प्लैटफ़ॉर्म::सुरक्षा::AES128BlockCipherDec
nl:: बुनाई::प्लैटफ़ॉर्म::सुरक्षा::AES128BlockCipherEnc
nl:: बुनाई::प्लैटफ़ॉर्म::सुरक्षा::AES256BlockCipher
nl:: बुनाई::प्लैटफ़ॉर्म::सुरक्षा::AES256BlockCipherDec
nl:: बुनाई::प्लैटफ़ॉर्म::सुरक्षा::AES256BlockCipherEnc
nl:: बुनाई::प्लैटफ़ॉर्म::सुरक्षा::SHA1
nl:: बुनाई::प्लैटफ़ॉर्म::सुरक्षा::SHA256

गिनती

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




                                                                                       }

बफ़र ब्लॉक मास्क का सेट.

यह पता लगाता है कि क्या बफ़र में मौजूद सभी ब्लॉक को रद्द किया गया है और फिर उन्हें बफ़र किया जा सकता है.

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 लेयर से कॉल किया जाता है.

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

InitSecureVirtualDataSource

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

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

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

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

मेमोरी ऐलोकेशन

void * MemoryAlloc(
  size_t size
)

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

यह फ़ंक्शन MemoryAlc(साइज़, गलत) के बराबर होता है.

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

मेमोरी ऐलोकेशन

void * MemoryAlloc(
  size_t size,
  bool isLongTermAlloc
)

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

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

मेमोरीफ़्री

void MemoryFree(
  void *p
)

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

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

मेमोरी

WEAVE_ERROR MemoryInit(
  void *buf,
  size_t bufSize
)

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

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

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

मेमोरी शट डाउन

void MemoryShutdown(
  void
)

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

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

onTimeConsumingCryptoहो गया

void OnTimeConsumingCryptoDone(
  void
)

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

onTimeConsumingCryptoStart

void OnTimeConsumingCryptoStart(
  void
)

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