nl:: Tenun:: Platform:: Keamanan
Namespace ini mencakup semua antarmuka dalam Weave untuk pengelola memori Weave Security Monitor.
Ringkasan
Fungsi dalam namespace ini akan diterapkan 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/tidak 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
Blok kumpulan 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 buffer memori yang diinisialisasi ke NULL.
|
sNetworkBuffersUsed = true
|
bool
Boolean yang menunjukkan apakah buffer jaringan benar (benar) atau tidak (salah) 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 "ukuran" byte.
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
Fungsi ini dipanggil oleh lapisan Weave untuk mengalokasikan blok memori "ukuran" byte.
|
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 alokator memori Pengelola Keamanan Weave.
|
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 saat operasi kriptografi yang memakan waktu akan dimulai.
|
Enumerasi
BlokSetParamFields
BlockSetParamFields
Blokir lokasi kolom parameter set dalam bentuk yang dienkode 8 bit.
Properti | |
---|---|
kBlockSetBufferIndexMask
|
Masker kolom indeks buffer. |
kBlockSetBufferIndexShift
|
Buffering pergeseran kolom indeks. |
kBlockSetCountMask
|
Mask kolom penghitungan. |
kBlockSetCountShift
|
Menghitung pergeseran kolom. |
kBlockSetIsLongTermMask
|
Ketik mask kolom. |
kBlockSetIsLongTermShift
|
Ubah kolom. |
kBlockSetSizeMask
|
Mask kolom ukuran. |
kBlockSetSizeShift
|
Perubahan kolom ukuran. |
kBlockSetSizeValueShift
|
Pergeseran decoding kolom ukuran (dikalikan dengan 128). |
BlockSetParams
BlockSetParams
Menentukan parameter kumpulan blok.
Properti | |
---|---|
kBlockSet1BufferIndex
|
Kumpulan indeks buffer #1 adalah 0. |
kBlockSet1Count
|
Jumlah blok set #1 adalah 1. |
kBlockSet1Size
|
Ukuran kumpulan #1 adalah 128 byte. |
kBlockSet1isLongTerm
|
Jenis kumpulan #1 adalah jangka panjang. |
kBlockSet2BufferIndex
|
Kumpulan indeks buffer ke-2 adalah 0. |
kBlockSet2Count
|
Jumlah blok set #2 adalah 1. |
kBlockSet2Size
|
Ukuran kumpulan #2 adalah 512 byte. |
kBlockSet2isLongTerm
|
Jenis kumpulan #2 adalah jangka panjang. |
kBlockSet3BufferIndex
|
Kumpulan indeks buffer ke-3 adalah 0. |
kBlockSet3Count
|
Jumlah blok set #3 adalah 1. |
kBlockSet3Size
|
Ukuran kumpulan #3 adalah 512 byte. |
kBlockSet3isLongTerm
|
Jenis No. 3 adalah jangka pendek. |
kBlockSet4BufferIndex
|
Indeks buffer kumpulan nomor 4 adalah 1. |
kBlockSet4Count
|
Jumlah blok set #4 adalah 2. |
kBlockSet4Size
|
Ukuran kumpulan #4 adalah 640 byte. |
kBlockSet4isLongTerm
|
Jenis No. 4 adalah jangka pendek. |
kMaxBlockSize
|
Ukuran blok maksimum yang didukung oleh Simple Allocator. |
kMinBufferSize
|
Ukuran buffer jaringan minimum diperlukan untuk mendukung kasus penggunaan Simple Allocator. Parameter ini berasal dari ukuran dua blok memori (640 + 600) yang dialokasikan di buffer jaringan #1. |
kNetworkBuffer0BlockAllocationMask
|
Mask ini mengidentifikasi semua blok memori yang dialokasikan dari buffer jaringan #0. |
kNetworkBuffer1BlockAllocationMask
|
Mask ini mengidentifikasi semua blok memori yang dialokasikan dari buffer 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
Memblokir Markt
uint8_t BlockMark_t
Jenis yang digunakan untuk menandai blok mana yang saat ini dialokasikan/tidak dialokasikan.
uint8_t - mendukung hingga 8 blok memori total uint16_t - mendukung hingga 16 blok memori total uint32_t - mendukung hingga 32 blok memori total
BlokirSetParams_t
uint8_t BlockSetParams_t
Jenis ini digunakan untuk mengenkode informasi kumpulan blok.
Kumpulan blok adalah grup potongan memori yang memiliki properti yang sama (ukuran, jenis, dan milik buffer yang sama). Diagram di bawah menunjukkan bagaimana informasi kumpulan blok dienkode dalam format 8 bit:
Jangka Panjang | Blokir Indeks | 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
sBlockSetParam
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), }
Blok kumpulan yang dienkode.
sBufferAllocationMask
const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }
Kumpulan mask blok buffer.
Mengidentifikasi apakah semua blok di buffer dan tidak dialokasikan, lalu buffer bisa ditata ulang.
sMemBlocksAllokasi
BlockMark_t sMemBlocksAllocated = 0
Menunjukkan blok mana yang dialokasikan/tidak dialokasikan.
Diinisialisasi ke 0 - berarti semua memori diblokir dan tidak dialokasikan.
sMemBuf
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
Pointer buffer memori yang diinisialisasi ke NULL.
Jika buffer jaringan digunakan, sMemBufs[] akan mengarahkan ke objek PacketBuffer. Jika buffer khusus digunakan, titik sMemBufs[0] akan digunakan untuk buffer tersebut dan pointer sMemBufs[] lainnya akan diabaikan.
sNetworkBuffersDigunakan
bool sNetworkBuffersUsed = true
Boolean yang menunjukkan apakah buffer jaringan benar (benar) atau tidak (salah) digunakan oleh Simple Allocator.
Jika salah - 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 )
MendapatkanDataDataAcak
WEAVE_ERROR GetSecureRandomData( uint8_t *buf, uint16_t len )
Fungsi ini dipanggil oleh lapisan Weave untuk menghasilkan data acak.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Nilai yang Ditampilkan |
|
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 spesifik per platform dan mungkin kosong saat inisialisasi sumber data acak tidak diperlukan.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Nilai yang Ditampilkan |
|
MemoriSemua
void * MemoryAlloc( size_t size )
Fungsi ini dipanggil oleh lapisan Weave untuk mengalokasikan blok memori "ukuran" byte.
Fungsi ini setara dengan MemoryAlloc(ukuran, salah).
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Nilai yang Ditampilkan |
|
MemoriSemua
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
Fungsi ini dipanggil oleh lapisan Weave untuk mengalokasikan blok memori "ukuran" byte.
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Nilai yang Ditampilkan |
|
Tanpa Memori
void MemoryFree( void *p )
Fungsi ini dipanggil oleh lapisan Weave untuk melepaskan blok memori yang dialokasikan oleh fungsi MemeoryAlloc().
Detail | |||
---|---|---|---|
Parameter |
|
Memori
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 alokator memori Pengelola Keamanan Weave.
Fungsi ini bersifat spesifik per platform dan mungkin kosong dalam kasus tertentu. Misalnya, fungsi ini tidak melakukan apa pun saat fungsi C Standard Library malloc() dan free() digunakan untuk alokasi memori.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai yang Ditampilkan |
|
Matikan Memori
void MemoryShutdown( void )
Fungsi ini dipanggil oleh lapisan Weave untuk melepaskan semua resource yang dialokasikan oleh fungsi MemoryInit().
Fungsi ini bisa berupa panggilan kosong jika tidak perlu melepaskan resource. Misalnya, inilah 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 saat operasi kriptografi yang memakan waktu akan dimulai.