nl:: Weave:: Platform:: Bảo mật
Vùng chứa tên này bao gồm tất cả giao diện trong Weave cho trình quản lý bộ nhớ Weave Security giám sát.
Tóm tắt
Các chức năng trong vùng chứa tên này phải được triển khai bởi các nền tảng sử dụng Weave, theo nhu cầu/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 được phân bổ. |
BlockSetParams_t
|
typedefuint8_t
Loại này dùng để mã hóa 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
Khối mã hóa đặt các thông số.
|
sBufferAllocationMask = {
kNetworkBuffer0BlockAllocationMask,
kNetworkBuffer1BlockAllocationMask,
}[kNumberOfNetworkBuffers]
|
const BlockMark_t
Bộ mặt nạ chặn đệm.
|
sMemBlocksAllocated = 0
|
Cho biết khối nào được phân bổ/chưa được phân bổ.
|
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
|
void *
Trỏ tới bộ nhớ đệm khởi tạo thành NULL.
|
sNetworkBuffersUsed = true
|
bool
Boolean cho biết liệu bộ đệm mạng có được sử dụng (đúng) hay không (false).
|
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 chạy nguồn dữ liệu ngẫu nhiên.
|
MemoryAlloc(size_t size)
|
void *
Hàm này được gọi bởi lớp Weave để phân bổ một khối bộ nhớ gồm "size" byte.
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
Hàm này được gọi bởi lớp Weave để phân bổ một khối bộ nhớ gồm "size" byte.
|
MemoryFree(void *p)
|
void
Hàm này được lớp Weave gọi để giải phóng khối bộ nhớ do hàm Memeoryfusionc() 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 phù hợp của trình phân bổ bộ nhớ Trình quản lý bảo mật.
|
MemoryShutdown(void)
|
void
Hàm này được lớp Weave gọi để phát hành tất cả các tài nguyên được hàm CacheInit() 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ật mã 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ật mã tốn thời gian sắp bắt đầu.
|
Bảng liệt kê
Khối SetParamParamFields
BlockSetParamFields
Chặn vị trí các trường thông số đã đặt ở dạng mã hóa 8 bit.
Thuộc tính | |
---|---|
kBlockSetBufferIndexMask
|
Mặt nạ của trường chỉ mục đệm. |
kBlockSetBufferIndexShift
|
Thay đổi trường trường chỉ mục vùng đệm. |
kBlockSetCountMask
|
Mặt nạ đếm trường. |
kBlockSetCountShift
|
Đếm mức thay đổi trường. |
kBlockSetIsLongTermMask
|
Nhập mặt nạ trường. |
kBlockSetIsLongTermShift
|
Nhập mức thay đổi trường. |
kBlockSetSizeMask
|
Mặt nạ trường kích thước. |
kBlockSetSizeShift
|
Thay đổi trường kích thước. |
kBlockSetSizeValueShift
|
Thay đổi mức giải mã trường kích thước (nhân với 128). |
BlockSetparam
BlockSetParams
Xác định các thông số nhóm khối.
Thuộc tính | |
---|---|
kBlockSet1BufferIndex
|
Chỉ số bộ đệm số 1 là 0. |
kBlockSet1Count
|
Số khối số 1 là 1. |
kBlockSet1Size
|
Kích thước số 1 là 128 byte. |
kBlockSet1isLongTerm
|
Loại số 1 là loại dài hạn. |
kBlockSet2BufferIndex
|
Chỉ số bộ đệm số 2 là 0. |
kBlockSet2Count
|
Số khối số 2 là 1. |
kBlockSet2Size
|
Kích thước số 2 là 512 byte. |
kBlockSet2isLongTerm
|
Loại số 2 là loại dài hạn. |
kBlockSet3BufferIndex
|
Chỉ số bộ đệm số 3 là 0. |
kBlockSet3Count
|
Số khối số 3 là 1. |
kBlockSet3Size
|
Kích thước số 3 là 512 byte. |
kBlockSet3isLongTerm
|
Loại số 3 là ngắn hạn. |
kBlockSet4BufferIndex
|
Chỉ số bộ đệm số 4 là 1. |
kBlockSet4Count
|
Số khối đặt số 4 là 2. |
kBlockSet4Size
|
Kích thước #4 là 640 byte. |
kBlockSet4isLongTerm
|
Loại số 4 là ngắn hạn. |
kMaxBlockSize
|
Kích thước khối tối đa được Bộ phân bổ đơn giản hỗ trợ. |
kMinBufferSize
|
Dung lượng bộ nhớ đệm tối thiểu của mạng cần thiết để hỗ trợ các trường hợp sử dụng Bộ phân bổ đơn giản. Thông số này được lấy từ các kích thước của hai khối bộ nhớ (640 + 600) được phân bổ trong bộ đệm mạng số 1. |
kNetworkBuffer0BlockAllocationMask
|
Mặt nạ này xác định tất cả các khối bộ nhớ được phân bổ từ bộ đệm mạng số 0. |
kNetworkBuffer1BlockAllocationMask
|
Mặt nạ này xác định tất cả các khối bộ nhớ được phân bổ từ bộ đệm mạng số 1. |
kNumberOfBlockSets
|
Số tập hợp khối được sử dụng bởi Công cụ phân bổ đơn giản. |
kNumberOfNetworkBuffers
|
Số bộ đệm mạng được sử dụng trong Công cụ phân bổ đơn giản. |
kTotalMemorySize
|
Tổng mức bộ nhớ mà đơn vị phân bổ đơn giản đã sử dụng. |
Typedef
Khối Mark_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 được 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ớ tổng uint32_t - hỗ trợ tổng cộng tối đa 32 khối bộ nhớ
Khối SetParams_t
uint8_t BlockSetParams_t
Loại này dùng để mã hóa thông tin nhóm khối.
Tập hợp khối là một nhóm đoạn bộ nhớ có cùng thuộc tính (kích thước, loại và thuộc về cùng một bộ đệm). Sơ đồ dưới đây cho thấy cách thông tin về nhóm khối được mã hóa ở định dạng 8 bit:
Dài hạn | Chỉ mục chặn | Số 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 số 0 |
... | - |
11 | Vùng đệm mạng số 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), }
Khối mã hóa đặt các thông số.
sBufferAllocationMask
const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }
Bộ mặt nạ chặn đệm.
Xác định xem tất cả các khối trong bộ đệm và không được phân bổ thì bộ đệm có thể được gỡ bỏ hay không.
Đã phân bổ sMemBlocks
BlockMark_t sMemBlocksAllocated = 0
Cho biết khối nào được phân bổ/chưa được phân bổ.
Được khởi tạo bằng 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 }
Trỏ tới bộ nhớ đệm khởi tạo thành NULL.
Khi bộ đệm mạng được sử dụng sMemBufs[], hãy trỏ đến đối tượng PacketBuffer. Khi vùng đệm chuyên dụng được sử 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
Boolean cho biết liệu bộ đệm mạng có được sử dụng (đúng) hay không (false).
Khi sai - bộ đệm chuyên dụng được cung cấp với hàm StorageInit() được sử dụng.
Hàm
DecodeBlockSetParams
void DecodeBlockSetParams( BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm )
Nhận dữ liệu bảo mật ngẫu nhiên
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 thông 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 chạy 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 cần khởi tạo nguồn dữ liệu ngẫu nhiên.
Thông tin chi tiết | |||||||||
---|---|---|---|---|---|---|---|---|---|
Các thông số |
|
||||||||
Giá trị trả về |
|
Bộ nhớ sang trọng
void * MemoryAlloc( size_t size )
Hàm này được gọi bởi lớp Weave để phân bổ một khối bộ nhớ gồm "size" byte.
Hàm này tương đương với Memory {1/}c(size, false).
Thông tin chi tiết | |||||
---|---|---|---|---|---|
Các thông số |
|
||||
Giá trị trả về |
|
Bộ nhớ sang trọng
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
Hàm này được gọi bởi lớp Weave để phân bổ một khối bộ nhớ gồm "size" byte.
Thông tin chi tiết | |||||
---|---|---|---|---|---|
Các thông số |
|
||||
Giá trị trả về |
|
Bộ nhớ trống
void MemoryFree( void *p )
Hàm này được lớp Weave gọi để giải phóng khối bộ nhớ do hàm Memeoryfusionc() phân bổ.
Thông tin chi tiết | |||
---|---|---|---|
Các thông số |
|
Bộ nhớ
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 phù hợp của trình phân bổ bộ nhớ Trình quản lý bảo mật.
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. Ví dụ: hàm này không thực hiện thao tác nào khi hàm các tiêu chuẩn Thư viện C và thư viện() miễn phí() được dùng để phân bổ bộ nhớ.
Thông tin chi tiết | |||||||
---|---|---|---|---|---|---|---|
Các thông số |
|
||||||
Giá trị trả về |
|
Tắt bộ nhớ
void MemoryShutdown( void )
Hàm này được lớp Weave gọi để phát hành tất cả các tài nguyên được hàm CacheInit() phân bổ.
Hàm này có thể là một lệnh gọi trống nếu không cần hủy bỏ tài nguyên. Ví dụ: trường hợp này được sử dụng khi hàm các tiêu chuẩn Thư viện C và thư viện() miễn phí() được dùng để phân bổ bộ nhớ.
OnTimeConsumingcryptDone
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ật mã tốn thời gian vừa kết thúc.
OnTimeConsumingcryptStart
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ật mã tốn thời gian sắp bắt đầu.