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