nl::Weave::แพลตฟอร์ม::ความปลอดภัย

เนมสเปซนี้รวมอินเทอร์เฟซทั้งหมดภายใน 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 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
Basic บูลีนที่ระบุว่า (จริง) บัฟเฟอร์ (โดยใช้หรือไม่ใช้) เครือข่ายมีการใช้บัฟเฟอร์แบบง่ายหรือไม่

ฟังก์ชัน

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
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

การแจกแจง

บล็อก SetParamField

 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

ขนาดบล็อกสูงสุดที่รองรับโดย Allcatcator

kMinBufferSize

ขนาดบัฟเฟอร์เครือข่ายขั้นต่ําที่ต้องใช้เพื่อรองรับ Use Case ของ Allcatcator ที่เรียบง่าย

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

kNetworkBuffer0BlockAllocationMask

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

kNetworkBuffer1BlockAllocationMask

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

kNumberOfBlockSets

จํานวนชุดบล็อกที่ Simple Allcator ใช้

kNumberOfNetworkBuffers

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

kTotalMemorySize

หน่วยความจํารวมที่ใช้โดย Simple Allcator

ประเภทคําจํากัดความ

บล็อก_ทําเครื่องหมาย

uint8_t BlockMark_t

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

uint8_t - รองรับการบล็อกหน่วยความจําสูงสุด 8 บล็อก uint16_t - รองรับการบล็อกหน่วยความจําสูงสุด 16 บล็อก uint32_t - รองรับการบล็อกหน่วยความจําสูงสุด 32 บล็อก

บล็อก SetParams_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 การบล็อกหน่วยความจําระยะยาว

ตัวแปร

บล็อกบล็อกสี่เหลี่ยม

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),







}

พารามิเตอร์ชุดบล็อกที่เข้ารหัส

หน้ากากกันชน

const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = {
                                                   kNetworkBuffer0BlockAllocationMask,
                                                   kNetworkBuffer1BlockAllocationMask,




                                                                                       }

ชุดหน้ากากบล็อกบัฟเฟอร์

ดูว่าบล็อกทั้งหมดในบัฟเฟอร์และยกเลิกการจัดสรรหรือไม่ แล้วจะบัฟเฟอร์ได้

บล็อกสื่อหลายรายการ

BlockMark_t sMemBlocksAllocated = 0

ระบุการบล็อกที่จัดสรร/ไม่ได้จัดสรร

เริ่มต้นที่ 0 หมายความว่าหน่วยความจําทั้งหมดบล็อกและยกเลิกการจัดสรร

SMemBuf

void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }

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

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

sNetworkBuffers ใช้แล้ว

bool sNetworkBuffersUsed = true

Basic บูลีนที่ระบุว่า (จริง) บัฟเฟอร์ (โดยใช้หรือไม่ใช้) เครือข่ายมีการใช้บัฟเฟอร์แบบง่ายหรือไม่

เมื่อเป็นเท็จ - มีการใช้บัฟเฟอร์ที่มีให้กับฟังก์ชัน MemoryInit()

ฟังก์ชัน

ถอดรหัสบล็อกSetParams

void DecodeBlockSetParams(
  BlockSetParams_t blockSetParams,
  uint16_t & blockSize,
  uint8_t & blockCount,
  uint8_t & blockBufferIndex,
  bool & blockIsLongTerm
)

รับข้อมูลแบบสุ่มที่ปลอดภัย

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
สําเร็จแล้ว

แหล่งที่มาของข้อมูลแบบสุ่ม

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
สําเร็จแล้ว

หน่วยความจําทั้งหมด

void * MemoryAlloc(
  size_t size
)

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

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

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

หน่วยความจําทั้งหมด

void * MemoryAlloc(
  size_t size,
  bool isLongTermAlloc
)

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

รายละเอียด
พารามิเตอร์
[in] size
ระบุขนาดหน่วยความจําที่ขอในหน่วยไบต์
[in] isLongTermAlloc
บูลีนที่ระบุว่า (จริง) หรือไม่ (เท็จ) การบล็อกหน่วยความจําที่ขอสําหรับการใช้งานระยะยาว การจัดสรรระยะยาวคือหน่วยความจําที่ควรจัดสรรไว้จนกว่าเซสชัน/แฮนด์เชคที่ปลอดภัยจะเสร็จสิ้น ตัวอย่างการจัดสรรระยะยาว ได้แก่ การบล็อกที่จัดสรรให้กับออบเจ็กต์ CASE/PASE และข้อมูลของบริบท การจัดสรรระยะสั้นคือหน่วยความจําที่จําเป็นต่อการดําเนินการบางอย่างและอาจปล่อยว่างได้ทันที อินพุตนี้จะช่วยเพิ่มประสิทธิภาพการใช้งานหน่วยความจําในระบบที่หน่วยความจําถูกจํากัด การใช้พารามิเตอร์นี้ที่กําหนดเองและขึ้นอยู่กับการใช้งานฟังก์ชัน เช่น ระบบจะไม่สนใจพารามิเตอร์นี้เมื่อมีการใช้ศูนย์การค้า Mall Standard (C Standard)
แสดงผลค่า
Pointer
บล็อกหน่วยความจําในกรณีที่ประสบความสําเร็จ
NULL-pointer
หากจัดสรรหน่วยความจําไม่สําเร็จ

ไม่ต้องใช้หน่วยความจํา

void MemoryFree(
  void *p
)

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

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

หน่วยความจํา

WEAVE_ERROR MemoryInit(
  void *buf,
  size_t bufSize
)

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

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

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

หน่วยความจํา

void MemoryShutdown(
  void
)

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

ฟังก์ชันนี้อาจว่างเปล่าได้ถ้าไม่จําเป็นต้องปล่อยทรัพยากร เช่น กรณีที่มีการใช้ฟังก์ชันต่างๆ ของไลบรารีมาตรฐาน Standardoc() และ Free() สําหรับการจัดสรรหน่วยความจํา

OnTimeConsumingCryptoDone

void OnTimeConsumingCryptoDone(
  void
)

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

OnTimeConsumingCryptoStart

void OnTimeConsumingCryptoStart(
  void
)

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