nl:: Weave:: Platform:: Security
Không gian tên này bao gồm tất cả giao diện trong Weave dành cho trình quản lý bộ nhớ Giám sát Security của Weave.
Tóm tắt
Các hàm trong không gian tên này sẽ do các nền tảng sử dụng Weave triển khai, theo nhu cầu/quy tắc ràng buộc của môi trường cụ thể.
Typedef |
|
---|---|
BlockMark_t
|
typedefuint8_t
Loại được dùng để đánh dấu khối hiện đang được phân bổ/chưa phân bổ. |
BlockSetParams_t
|
typedefuint8_t
Loại này dùng để mã hoá thông tin về nhóm khối. |
Biến |
|
---|---|
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]
|
const BlockSetParams_t
Các tham số của nhóm khối được mã hoá.
|
sBufferAllocationMask = {
kNetworkBuffer0BlockAllocationMask,
kNetworkBuffer1BlockAllocationMask,
}[kNumberOfNetworkBuffers]
|
const BlockMark_t
Tập hợp các mặt nạ khối đệm.
|
sMemBlocksAllocated = 0
|
Cho biết khối nào được phân bổ/chưa được phân bổ.
|
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
|
void *
Con trỏ đến vùng đệm bộ nhớ được khởi tạo đến giá trị NULL.
|
sNetworkBuffersUsed = true
|
bool
Giá trị boolean cho biết liệu (true) hay không (false) các vùng đệm mạng được Trình phân bổ đơn giản sử dụng.
|
Hàm |
|
---|---|
DecodeBlockSetParams(BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm)
|
void
|
GetSecureRandomData(uint8_t *buf, uint16_t len)
|
Hàm này được lớp Weave gọi để tạo dữ liệu ngẫu nhiên.
|
InitSecureRandomDataSource(nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen)
|
Hàm này được lớp Weave gọi để khởi tạo nguồn dữ liệu ngẫu nhiên.
|
MemoryAlloc(size_t size)
|
void *
Hàm này được lớp Weave gọi để phân bổ một khối bộ nhớ có giá trị "size" byte.
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
Hàm này được lớp Weave gọi để phân bổ một khối bộ nhớ có giá trị "size" byte.
|
MemoryFree(void *p)
|
void
Hàm này được lớp Weave gọi để giải phóng một khối bộ nhớ do hàm Memeoryalloc() phân bổ.
|
MemoryInit(void *buf, size_t bufSize)
|
Lớp Weave gọi hàm này để khởi tạo bộ nhớ và tài nguyên cần thiết cho chức năng thích hợp của trình phân bổ bộ nhớ của Trình quản lý bảo mật Weave.
|
MemoryShutdown(void)
|
void
Hàm này do lớp Weave gọi để giải phóng tất cả tài nguyên do hàm MemoryInit() phân bổ.
|
OnTimeConsumingCryptoDone(void)
|
void
Hàm này được gọi để thông báo cho ứng dụng khi một thao tác mã hoá tốn thời gian vừa kết thúc.
|
OnTimeConsumingCryptoStart(void)
|
void
Hàm này được gọi để thông báo cho ứng dụng khi một thao tác mã hoá cần nhiều thời gian sắp bắt đầu.
|
Liệt kê
BlockSetParamFields
BlockSetParamFields
Chặn vị trí các trường tham số đã đặt ở dạng mã hoá 8 bit.
Thuộc tính | |
---|---|
kBlockSetBufferIndexMask
|
Mặt nạ trường chỉ mục vùng đệm. |
kBlockSetBufferIndexShift
|
Thay đổi trường chỉ mục vùng đệm. |
kBlockSetCountMask
|
Mặt nạ trường đếm. |
kBlockSetCountShift
|
Đếm lượt thay đổi trường. |
kBlockSetIsLongTermMask
|
Nhập mặt nạ trường. |
kBlockSetIsLongTermShift
|
Thay đổi trường loại. |
kBlockSetSizeMask
|
Mặt nạ trường kích thước. |
kBlockSetSizeShift
|
Thay đổi trường kích thước. |
kBlockSetSizeValueShift
|
Thay đổi giải mã trường kích thước (nhân với 128). |
BlockSetParams
BlockSetParams
Xác định tham số nhóm khối.
Thuộc tính | |
---|---|
kBlockSet1BufferIndex
|
Chỉ mục vùng đệm đặt số 1 là 0. |
kBlockSet1Count
|
Số khối #1 là 1. |
kBlockSet1Size
|
Kích thước của bộ số 1 là 128 byte. |
kBlockSet1isLongTerm
|
Loại đặt số 1 là dài hạn. |
kBlockSet2BufferIndex
|
Chỉ mục vùng đệm số 2 là 0. |
kBlockSet2Count
|
Số khối đặt #2 là 1. |
kBlockSet2Size
|
Kích thước của bộ số 2 là 512 byte. |
kBlockSet2isLongTerm
|
Loại đặt số 2 là dài hạn. |
kBlockSet3BufferIndex
|
Chỉ mục vùng đệm đặt số 3 là 0. |
kBlockSet3Count
|
Số khối đặt #3 là 1. |
kBlockSet3Size
|
Kích thước của bộ số 3 là 512 byte. |
kBlockSet3isLongTerm
|
Loại đặt số 3 là ngắn hạn. |
kBlockSet4BufferIndex
|
Chỉ mục vùng đệm số 4 là 1. |
kBlockSet4Count
|
Số khối đặt số 4 là 2. |
kBlockSet4Size
|
Kích thước của bộ số 4 là 640 byte. |
kBlockSet4isLongTerm
|
Loại đặt số 4 là ngắn hạn. |
kMaxBlockSize
|
Kích thước khối tối đa được Trình phân bổ đơn giản hỗ trợ. |
kMinBufferSize
|
Cần có dung lượng bộ nhớ đệm mạng tối thiểu để hỗ trợ các trường hợp sử dụng của Simple Allocator. Tham số này lấy từ kích thước của hai khối bộ nhớ (640 + 600) được phân bổ trong vùng đệm mạng #1. |
kNetworkBuffer0BlockAllocationMask
|
Mặt nạ này xác định tất cả khối bộ nhớ được phân bổ từ vùng đệm mạng #0. |
kNetworkBuffer1BlockAllocationMask
|
Mặt nạ này xác định tất cả khối bộ nhớ được phân bổ từ vùng đệm mạng 1. |
kNumberOfBlockSets
|
Số tập hợp khối được Trình phân bổ đơn giản sử dụng. |
kNumberOfNetworkBuffers
|
Số vùng đệm mạng mà Simple Allocator sử dụng. |
kTotalMemorySize
|
Tổng bộ nhớ mà Trình phân bổ đơn giản đã sử dụng. |
Typedef
BlockMark_t
uint8_t BlockMark_t
Loại được dùng để đánh dấu khối hiện đang được phân bổ/chưa phân bổ.
uint8_t - hỗ trợ tổng cộng 8 khối bộ nhớ uint16_t - hỗ trợ tối đa 16 khối bộ nhớ tổng cộng uint32_t - hỗ trợ tổng cộng tối đa 32 khối bộ nhớ
BlockSetParams_t
uint8_t BlockSetParams_t
Loại này dùng để mã hoá thông tin về nhóm khối.
Nhóm khối là một nhóm các phần bộ nhớ có cùng thuộc tính (kích thước, loại và thuộc cùng một vùng đệm). Sơ đồ dưới đây trình bày cách thông tin nhóm khối được mã hoá theo định dạng 8 bit:
Dài hạn | Chỉ mục khối | Số lượng khối | Kích thước khối |
[7] | [6:5] | [4:3] | [2:0] |
[2:0] | Giải mã |
000 | 0 byte |
001 | 128 byte |
010 | 256 byte |
... | - |
111 | 896 byte |
[4:3] | Giải mã |
00 | 4 khối |
01 | 1 khối |
10 | 2 khối |
11 | 3 khối |
[6:5] | Giải mã |
00 | Vùng đệm mạng #0 |
... | - |
11 | Vùng đệm mạng 3 |
[7] | Giải mã |
0 | Khối kỷ niệm ngắn hạn |
1 | Khối bộ nhớ dài hạn |
Biến
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), }
Các tham số của nhóm khối được mã hoá.
sBufferAllocationMask
const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }
Tập hợp các mặt nạ khối đệm.
Xác định xem tất cả các khối trong vùng đệm và chưa được phân bổ, sau đó có thể giải phóng vùng đệm.
sMemBlocksAllocated
BlockMark_t sMemBlocksAllocated = 0
Cho biết khối nào được phân bổ/chưa được phân bổ.
Khởi tạo là 0 – có nghĩa là tất cả các khối bộ nhớ và chưa được phân bổ.
sMemBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
Con trỏ đến vùng đệm bộ nhớ được khởi tạo đến giá trị NULL.
Khi sử dụng vùng đệm mạng, sMemBufs[] sẽ trỏ đến các đối tượng PacketBuffer. Khi sử dụng vùng đệm chuyên dụng, sMemBufs[0] trỏ đến vùng đệm đó và các con trỏ sMemBufs[] khác sẽ bị bỏ qua.
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
Giá trị boolean cho biết liệu (true) hay không (false) các vùng đệm mạng được Trình phân bổ đơn giản sử dụng.
Khi giá trị là false, vùng đệm riêng được cung cấp kèm theo hàm MemoryInit() sẽ được sử dụng.
Hàm
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 )
Hàm này được lớp Weave gọi để tạo dữ liệu ngẫu nhiên.
Thông tin chi tiết | |||||||||
---|---|---|---|---|---|---|---|---|---|
Tham số |
|
||||||||
Giá trị trả về |
|
InitSecureRandomDataSource
WEAVE_ERROR InitSecureRandomDataSource( nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen )
Hàm này được lớp Weave gọi để khởi tạo nguồn dữ liệu ngẫu nhiên.
Hàm này dành riêng cho nền tảng và có thể trống khi không yêu cầu khởi chạy nguồn dữ liệu ngẫu nhiên.
Thông tin chi tiết | |||||||||
---|---|---|---|---|---|---|---|---|---|
Tham số |
|
||||||||
Giá trị trả về |
|
MemoryAlloc
void * MemoryAlloc( size_t size )
Hàm này được lớp Weave gọi để phân bổ một khối bộ nhớ có giá trị "size" byte.
Hàm này tương đương với Memoryalloc(size, false).
Thông tin chi tiết | |||||
---|---|---|---|---|---|
Tham số |
|
||||
Giá trị trả về |
|
MemoryAlloc
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
Hàm này được lớp Weave gọi để phân bổ một khối bộ nhớ có giá trị "size" byte.
Thông tin chi tiết | |||||
---|---|---|---|---|---|
Tham số |
|
||||
Giá trị trả về |
|
MemoryFree
void MemoryFree( void *p )
Hàm này được lớp Weave gọi để giải phóng một khối bộ nhớ do hàm Memeoryalloc() phân bổ.
Thông tin chi tiết | |||
---|---|---|---|
Tham số |
|
MemoryInit
WEAVE_ERROR MemoryInit( void *buf, size_t bufSize )
Lớp Weave gọi hàm này để khởi tạo bộ nhớ và tài nguyên cần thiết cho chức năng thích hợp của trình phân bổ bộ nhớ của Trình quản lý bảo mật Weave.
Hàm này dành riêng cho nền tảng và có thể trống trong một số trường hợp nhất định. Ví dụ: hàm này không làm gì khi dùng các hàm malloc() và free() trong Thư viện chuẩn C để phân bổ bộ nhớ.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Tham số |
|
||||||
Giá trị trả về |
|
MemoryShutdown
void MemoryShutdown( void )
Hàm này do lớp Weave gọi để giải phóng tất cả tài nguyên do hàm MemoryInit() phân bổ.
Hàm này có thể là một lệnh gọi trống nếu không cần giải phóng tài nguyên. Ví dụ: đây là trường hợp khi các hàm malloc() và free() của Thư viện chuẩn C được dùng để phân bổ bộ nhớ.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
Hàm này được gọi để thông báo cho ứng dụng khi một thao tác mã hoá tốn thời gian vừa kết thúc.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
Hàm này được gọi để thông báo cho ứng dụng khi một thao tác mã hoá cần nhiều thời gian sắp bắt đầu.