nl:: Weave:: Platform:: Security
Namespace ini mencakup semua antarmuka dalam Weave untuk pengelola memori Weave Security Monitor.
Ringkasan
Fungsi dalam namespace ini akan diimplementasikan oleh platform yang menggunakan Weave, sesuai dengan kebutuhan/batasan lingkungan tertentu.
Typedef |
|
---|---|
BlockMark_t
|
typedefuint8_t
Jenis yang digunakan untuk menandai blok mana yang saat ini dialokasikan/belum dialokasikan. |
BlockSetParams_t
|
typedefuint8_t
Jenis ini digunakan untuk mengenkode informasi kumpulan blok. |
Variabel |
|
---|---|
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
Parameter kumpulan blok yang dienkode.
|
sBufferAllocationMask = {
kNetworkBuffer0BlockAllocationMask,
kNetworkBuffer1BlockAllocationMask,
}[kNumberOfNetworkBuffers]
|
const BlockMark_t
Kumpulan mask blok buffer.
|
sMemBlocksAllocated = 0
|
Menunjukkan blok mana yang dialokasikan/tidak dialokasikan.
|
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
|
void *
Pointer ke buffer memori yang diinisialisasi ke NULL.
|
sNetworkBuffersUsed = true
|
bool
Boolean yang menunjukkan apakah (true) atau tidak (false) buffer jaringan digunakan oleh Simple Allocator.
|
Fungsi |
|
---|---|
DecodeBlockSetParams(BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm)
|
void
|
GetSecureRandomData(uint8_t *buf, uint16_t len)
|
Fungsi ini dipanggil oleh lapisan Weave untuk menghasilkan data acak.
|
InitSecureRandomDataSource(nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen)
|
Fungsi ini dipanggil oleh lapisan Weave untuk menginisialisasi sumber data acak.
|
MemoryAlloc(size_t size)
|
void *
Fungsi ini dipanggil oleh lapisan Weave untuk mengalokasikan blok memori byte "ukuran".
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
Fungsi ini dipanggil oleh lapisan Weave untuk mengalokasikan blok memori byte "ukuran".
|
MemoryFree(void *p)
|
void
Fungsi ini dipanggil oleh lapisan Weave untuk melepaskan blok memori yang dialokasikan oleh fungsi MemeoryAlloc().
|
MemoryInit(void *buf, size_t bufSize)
|
Fungsi ini dipanggil oleh lapisan Weave untuk menginisialisasi memori dan resource yang diperlukan untuk fungsionalitas yang tepat dari pengalokasi memori Weave Security Manager.
|
MemoryShutdown(void)
|
void
Fungsi ini dipanggil oleh lapisan Weave untuk melepaskan semua resource yang dialokasikan oleh fungsi MemoryInit().
|
OnTimeConsumingCryptoDone(void)
|
void
Fungsi ini dipanggil untuk memberi tahu aplikasi saat operasi kriptografi yang memakan waktu baru saja selesai.
|
OnTimeConsumingCryptoStart(void)
|
void
Fungsi ini dipanggil untuk memberi tahu aplikasi ketika operasi kriptografi yang memakan waktu akan dimulai.
|
Enumerasi
BlockSetParamFields
BlockSetParamFields
Blok set lokasi kolom parameter dalam bentuk berenkode 8-bit.
Properti | |
---|---|
kBlockSetBufferIndexMask
|
Mask kolom indeks buffer. |
kBlockSetBufferIndexShift
|
Pergeseran kolom indeks buffer. |
kBlockSetCountMask
|
Mask kolom jumlah. |
kBlockSetCountShift
|
Hitung perubahan kolom. |
kBlockSetIsLongTermMask
|
Mask kolom jenis. |
kBlockSetIsLongTermShift
|
Perubahan kolom jenis. |
kBlockSetSizeMask
|
Mask kolom ukuran. |
kBlockSetSizeShift
|
Pergeseran kolom ukuran. |
kBlockSetSizeValueShift
|
Pergeseran decoding kolom ukuran (kalikan dengan 128). |
BlockSetParams
BlockSetParams
Menentukan parameter kumpulan blok.
Properti | |
---|---|
kBlockSet1BufferIndex
|
Tetapkan indeks buffering #1 adalah 0. |
kBlockSet1Count
|
Jumlah blok set #1 adalah 1. |
kBlockSet1Size
|
Ukuran set #1 adalah 128 byte. |
kBlockSet1isLongTerm
|
Jenis penetapan #1 bersifat jangka panjang. |
kBlockSet2BufferIndex
|
Tetapkan indeks buffering #2 adalah 0. |
kBlockSet2Count
|
Jumlah blok set #2 adalah 1. |
kBlockSet2Size
|
Ukuran set #2 adalah 512 byte. |
kBlockSet2isLongTerm
|
Jenis penetapan #2 bersifat jangka panjang. |
kBlockSet3BufferIndex
|
Tetapkan indeks buffering #3 adalah 0. |
kBlockSet3Count
|
Jumlah blok set #3 adalah 1. |
kBlockSet3Size
|
Ukuran set #3 adalah 512 byte. |
kBlockSet3isLongTerm
|
Jenis penetapan #3 bersifat jangka pendek. |
kBlockSet4BufferIndex
|
Tetapkan indeks buffering #4 adalah 1. |
kBlockSet4Count
|
Jumlah blok set #4 adalah 2. |
kBlockSet4Size
|
Ukuran set #4 adalah 640 byte. |
kBlockSet4isLongTerm
|
Jenis kumpulan #4 bersifat jangka pendek. |
kMaxBlockSize
|
Ukuran blok maksimum yang didukung oleh Simple Allocator. |
kMinBufferSize
|
Ukuran buffer jaringan minimum yang diperlukan untuk mendukung kasus penggunaan Simple Allocator. Parameter ini berasal dari ukuran dua blok memori (640 + 600) yang dialokasikan di buffering jaringan #1. |
kNetworkBuffer0BlockAllocationMask
|
Mask ini mengidentifikasi semua blok memori yang dialokasikan dari buffering jaringan #0. |
kNetworkBuffer1BlockAllocationMask
|
Mask ini mengidentifikasi semua blok memori yang dialokasikan dari buffering jaringan #1. |
kNumberOfBlockSets
|
Jumlah kumpulan blok yang digunakan oleh Simple Allocator. |
kNumberOfNetworkBuffers
|
Jumlah buffer jaringan yang digunakan oleh Simple Allocator. |
kTotalMemorySize
|
Total memori yang digunakan oleh Simple Allocator. |
Typedef
BlockMark_t
uint8_t BlockMark_t
Jenis yang digunakan untuk menandai blok mana yang saat ini dialokasikan/belum dialokasikan.
uint8_t - mendukung total hingga 8 blok memori uint16_t - mendukung hingga total 16 blok memori total uint32_t - mendukung total hingga 32 blok memori
BlockSetParams_t
uint8_t BlockSetParams_t
Jenis ini digunakan untuk mengenkode informasi kumpulan blok.
Set blok adalah sekelompok potongan memori yang memiliki properti yang sama (ukuran, jenis, dan milik {i>buffer<i} yang sama). Diagram di bawah menunjukkan bagaimana informasi kumpulan blok dienkode dalam format 8-bit:
Berjangka Panjang | Indeks Blokir | Jumlah Blok | Ukuran Blok |
[7] | [6:5] | [4:3] | [2:0] |
[2:0] | Dekode |
000 | 0 byte |
001 | 128 byte |
010 | 256 byte |
... | - |
111 | 896 byte |
[4:3] | Dekode |
00 | 4 blok |
01 | 1 blok |
10 | 2 blok |
11 | 3 blok |
[6:5] | Dekode |
00 | Buffering jaringan #0 |
... | - |
11 | Buffering jaringan #3 |
[7] | Dekode |
0 | Blok memori jangka pendek |
1 | Blok memori jangka panjang |
Variabel
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), }
Parameter kumpulan blok yang dienkode.
sBufferAllocationMask
const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }
Kumpulan mask blok buffer.
Mengidentifikasi apakah semua blok dalam buffer dan belum dialokasikan, lalu buffer dapat dihilangkan.
sMemBlocksAllocated
BlockMark_t sMemBlocksAllocated = 0
Menunjukkan blok mana yang dialokasikan/tidak dialokasikan.
Diinisialisasi ke 0 - berarti semua blok memori dan belum dialokasikan.
sMemBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
Pointer ke buffer memori yang diinisialisasi ke NULL.
Saat buffer jaringan digunakan, sMemBufs[] akan mengarah ke objek PacketBuffer. Jika buffering khusus digunakan, sMemBufs[0] akan mengarah ke buffer tersebut, dan pointer sMemBuf[] lainnya akan diabaikan.
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
Boolean yang menunjukkan apakah (true) atau tidak (false) buffer jaringan digunakan oleh Simple Allocator.
Saat false - buffer khusus yang disediakan dengan fungsi MemoryInit() digunakan.
Fungsi
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 )
Fungsi ini dipanggil oleh lapisan Weave untuk menghasilkan data acak.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Nilai Pengembalian |
|
InitSecureRandomDataSource
WEAVE_ERROR InitSecureRandomDataSource( nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen )
Fungsi ini dipanggil oleh lapisan Weave untuk menginisialisasi sumber data acak.
Fungsi ini bersifat spesifik per platform dan mungkin kosong jika tidak diperlukan inisialisasi sumber data acak.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Nilai Pengembalian |
|
MemoryAlloc
void * MemoryAlloc( size_t size )
Fungsi ini dipanggil oleh lapisan Weave untuk mengalokasikan blok memori byte "ukuran".
Fungsi ini setara dengan MemoryAlloc(size, false).
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Nilai Pengembalian |
|
MemoryAlloc
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
Fungsi ini dipanggil oleh lapisan Weave untuk mengalokasikan blok memori byte "ukuran".
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Nilai Pengembalian |
|
MemoryFree
void MemoryFree( void *p )
Fungsi ini dipanggil oleh lapisan Weave untuk melepaskan blok memori yang dialokasikan oleh fungsi MemeoryAlloc().
Detail | |||
---|---|---|---|
Parameter |
|
MemoryInit
WEAVE_ERROR MemoryInit( void *buf, size_t bufSize )
Fungsi ini dipanggil oleh lapisan Weave untuk menginisialisasi memori dan resource yang diperlukan untuk fungsionalitas yang tepat dari pengalokasi memori Weave Security Manager.
Fungsi ini khusus untuk platform dan mungkin kosong dalam kasus tertentu. Misalnya, fungsi ini tidak melakukan apa-apa ketika fungsi C Standard Library malloc() dan free() digunakan untuk alokasi memori.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai Pengembalian |
|
MemoryShutdown
void MemoryShutdown( void )
Fungsi ini dipanggil oleh lapisan Weave untuk melepaskan semua resource yang dialokasikan oleh fungsi MemoryInit().
Fungsi ini dapat berupa panggilan kosong jika tidak perlu melepaskan resource. Misalnya, ini adalah kasus ketika fungsi C Standard Library malloc() dan free() digunakan untuk alokasi memori.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
Fungsi ini dipanggil untuk memberi tahu aplikasi saat operasi kriptografi yang memakan waktu baru saja selesai.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
Fungsi ini dipanggil untuk memberi tahu aplikasi ketika operasi kriptografi yang memakan waktu akan dimulai.