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
กำหนดพารามิเตอร์ชุดบล็อก

Typedef

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)
เลเยอร์ 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 Security Manager
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 คือ 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

ขนาดบล็อกสูงสุดที่ Simple Allocator รองรับ

kMinBufferSize

ขนาดบัฟเฟอร์เครือข่ายขั้นต่ำที่กำหนดเพื่อรองรับกรณีการใช้งาน Allo แบบง่าย

พารามิเตอร์นี้มาจากขนาดของบล็อกหน่วยความจำ 2 บล็อก (640 + 600) ที่จัดสรรในบัฟเฟอร์เครือข่ายที่ 1

kNetworkBuffer0BlockAllocationMask

มาสก์นี้จะระบุบล็อกหน่วยความจำทั้งหมดที่จัดสรรจากบัฟเฟอร์เครือข่าย #0

kNetworkBuffer1BlockAllocationMask

มาสก์นี้จะระบุบล็อกหน่วยความจำทั้งหมดที่จัดสรรจากบัฟเฟอร์เครือข่ายที่ 1

kNumberOfBlockSets

จำนวนชุดบล็อกที่ Simple Allocator ใช้

kNumberOfNetworkBuffers

จำนวนบัฟเฟอร์เครือข่ายที่ Simple Allocator ใช้

kTotalMemorySize

หน่วยความจำทั้งหมดที่ Simple Allocator ใช้

Typedef

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[] จะชี้ไปที่ออบเจ็กต์ PacketBuffer เมื่อใช้บัฟเฟอร์เฉพาะ sMemBufs[0] จะชี้ไปที่บัฟเฟอร์ดังกล่าวและละเว้นตัวชี้ sMemBuf[] อื่นๆ

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
)

เลเยอร์ 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
ชี้ไปที่ฟังก์ชันที่สร้างเอนโทรปีไปยังเครื่องมือสร้างข้อมูลแบบสุ่ม เมื่ออัลกอริทึมไม่จำเป็นต้องใช้อินพุตเอนโทรปี อินพุตนี้ก็จะเป็น "NULL" ได้ ซึ่งจะเป็นกรณีที่มีการใช้เครื่องมือสร้างข้อมูลแบบสุ่มเวอร์ชัน OpenSSL
[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 และข้อมูลบริบท การจัดสรรระยะสั้นคือหน่วยความจำที่จำเป็นสำหรับการดำเนินการที่เจาะจง และปล่อยใช้ได้ทันทีหลังจากนั้น อินพุตนี้จะช่วยเพิ่มประสิทธิภาพการใช้งานหน่วยความจำในระบบที่จำกัดหน่วยความจำ การใช้พารามิเตอร์นี้จะขึ้นอยู่กับผู้ติดตั้งใช้งานฟังก์ชัน ตัวอย่างเช่น ระบบจะละเว้นพารามิเตอร์นี้เมื่อมีการใช้ C Standard Library Malloc()
ผลลัพธ์
Pointer
ไว้ในบล็อกหน่วยความจำได้เผื่อไว้ในกรณีที่ทำสำเร็จ
NULL-pointer
หากจัดสรรหน่วยความจำไม่สำเร็จ

MemoryFree

void MemoryFree(
  void *p
)

เลเยอร์ Weave จะเรียกใช้ฟังก์ชันนี้เพื่อปล่อยบล็อกหน่วยความจำที่ฟังก์ชัน MemeoryAlloc() จัดสรรไว้

รายละเอียด
พารามิเตอร์
[in] p
ชี้ไปที่บล็อกหน่วยความจำที่ควรปล่อย

MemoryInit

WEAVE_ERROR MemoryInit(
  void *buf,
  size_t bufSize
)

เลเยอร์ Weave เรียกใช้ฟังก์ชันนี้เพื่อเริ่มต้นหน่วยความจำและทรัพยากรที่จำเป็นสำหรับฟังก์ชันการทำงานที่เหมาะสมของตัวจัดสรรหน่วยความจำของ Weave Security Manager

ฟังก์ชันนี้เป็นฟังก์ชันเฉพาะของแต่ละแพลตฟอร์มและอาจว่างเปล่าในบางกรณี ตัวอย่างเช่น ฟังก์ชันนี้จะไม่ดำเนินการใดๆ เมื่อมีการใช้ฟังก์ชัน C Standard Library Malloc() และ Free() ในการจัดสรรหน่วยความจำ

รายละเอียด
พารามิเตอร์
[in] buf
ตัวชี้ไปยังบัฟเฟอร์หน่วยความจำโดยเฉพาะ ซึ่งควรใช้เป็นพูลหน่วยความจำสำหรับการจัดสรรหน่วยความจำของ Weave Security Manager อินพุตนี้ไม่บังคับ (ค่าเริ่มต้นคือ NULL) และไม่ควรใช้หากไม่ได้ใช้งานบัฟเฟอร์หน่วยความจำโดยเฉพาะ
[in] bufSize
ขนาดของบัฟเฟอร์หน่วยความจำโดยเฉพาะ อินพุตนี้ไม่บังคับ (ค่าเริ่มต้นคือ 0) และไม่ควรใช้หากไม่มีการใช้บัฟเฟอร์หน่วยความจำโดยเฉพาะ เมื่อใช้บัฟเฟอร์หน่วยความจำโดยเฉพาะ ฟังก์ชันจะตรวจสอบและสร้างข้อผิดพลาดหากขนาดบัฟเฟอร์ไม่ใหญ่พอที่จะรองรับกรณีการใช้งานของ Weave Security Manager
ผลลัพธ์
WEAVE_ERROR_BUFFER_TOO_SMALL
หากขนาดบัฟเฟอร์อินพุตโดยเฉพาะไม่เพียงพอที่จะรองรับกรณีการใช้งานของ Weave Security Manager
WEAVE_NO_ERROR
สำเร็จแล้ว
other
ข้อผิดพลาดที่เกิดจากฟังก์ชันการเริ่มต้นหน่วยความจำเฉพาะแพลตฟอร์ม

MemoryShutdown

void MemoryShutdown(
  void
)

เลเยอร์ Weave เรียกใช้ฟังก์ชันนี้เพื่อปล่อยทรัพยากรทั้งหมดที่ฟังก์ชัน MemoryInit() จัดสรรไว้

ฟังก์ชันนี้อาจเป็นการเรียกใช้เปล่าหากไม่จำเป็นต้องปล่อยทรัพยากร ตัวอย่างเช่น เมื่อมีการใช้ฟังก์ชัน C Standard Library Malloc() และ Free() ในการจัดสรรหน่วยความจำ

OnTimeConsumingCryptoDone

void OnTimeConsumingCryptoDone(
  void
)

มีการเรียกฟังก์ชันนี้เพื่อแจ้งแอปพลิเคชันเมื่อการดำเนินการเข้ารหัสที่ใช้เวลานานเพิ่งเสร็จสิ้น

OnTimeConsumingCryptoStart

void OnTimeConsumingCryptoStart(
  void
)

มีการเรียกใช้ฟังก์ชันนี้เพื่อแจ้งเตือนแอปพลิเคชันเมื่อการดำเนินการเข้ารหัสที่ใช้เวลานานกำลังจะเริ่มขึ้น