nl::Weave::Platform::Security

เนมสเปซนี้มีอินเทอร์เฟซทั้งหมดภายใน Weave สำหรับตัวจัดการหน่วยความจำ 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
กำหนดพารามิเตอร์ชุดบล็อก

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 *
ตัวชี้ไปยังบัฟเฟอร์หน่วยความจำเริ่มต้นเป็น NULL
sNetworkBuffersUsed = true
bool
บูลีนที่ระบุว่า (true) หรือไม่ (เท็จ) ใช้บัฟเฟอร์เครือข่ายโดย 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 เพื่อจัดสรรบล็อกหน่วยความจำขนาด "size" ไบต์
MemoryAlloc(size_t size, bool isLongTermAlloc)
void *
ฟังก์ชันนี้เรียกโดยเลเยอร์ Weave เพื่อจัดสรรบล็อกหน่วยความจำขนาด "size" ไบต์
MemoryFree(void *p)
void
ฟังก์ชันนี้เรียกโดยเลเยอร์ Weave เพื่อปล่อยบล็อกหน่วยความจำที่จัดสรรโดยฟังก์ชัน MemeoryAlloc()
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 คือ 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

ขนาดบัฟเฟอร์เครือข่ายขั้นต่ำที่จำเป็นต่อการรองรับ Use Case ของการจัดสรรแบบง่าย

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

kNetworkBuffer0BlockAllocationMask

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

kNetworkBuffer1BlockAllocationMask

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

kNumberOfBlockSets

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

kNumberOfNetworkBuffers

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

kTotalMemorySize

หน่วยความจำทั้งหมดที่ผู้จัดสรรแบบง่ายใช้

Typedef

BlockMark_t

uint8_t BlockMark_t

ประเภทที่ใช้เพื่อทำเครื่องหมายบล็อกที่มีการจัดสรร/ไม่ได้จัดสรรในปัจจุบัน

uint8_t - รองรับ uint16_t บล็อกหน่วยความจำทั้งหมดสูงสุด 8 บล็อก - รองรับ uint32_t บล็อกหน่วยความจำทั้งหมด 16 บล็อก - รองรับบล็อกหน่วยความจำรวมสูงสุด 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 }

ตัวชี้ไปยังบัฟเฟอร์หน่วยความจำเริ่มต้นเป็น NULL

เมื่อใช้บัฟเฟอร์ของเครือข่าย sMemBufs[] จะชี้ไปที่ออบเจ็กต์ PacketBuffer เมื่อใช้บัฟเฟอร์เฉพาะ sMemBufs[0] ชี้ไปยังบัฟเฟอร์นั้นและตัวชี้ sMemBufs[] อื่นๆ

sNetworkBuffersUsed

bool sNetworkBuffersUsed = true

บูลีนที่ระบุว่า (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 เพื่อจัดสรรบล็อกหน่วยความจำขนาด "size" ไบต์

ฟังก์ชันนี้เทียบเท่ากับ MemoryAlloc(size, false)

รายละเอียด
พารามิเตอร์
[in] size
ระบุขนาดหน่วยความจำที่ขอเป็นไบต์
แสดงผลค่า
Pointer
บล็อกความทรงจำไว้ในกรณีที่ทำสำเร็จ
NULL-pointer
หากการจัดสรรหน่วยความจำล้มเหลว

MemoryAlloc

void * MemoryAlloc(
  size_t size,
  bool isLongTermAlloc
)

ฟังก์ชันนี้เรียกโดยเลเยอร์ Weave เพื่อจัดสรรบล็อกหน่วยความจำขนาด "size" ไบต์

รายละเอียด
พารามิเตอร์
[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

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

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

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