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/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
Kumpulan parameter 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 Alcator.
|
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 melakukan inisialisasi sumber data acak.
|
MemoryAlloc(size_t size)
|
void *
Fungsi ini dipanggil oleh lapisan Weave untuk mengalokasikan blok memori "ukuran" {i>byte.<i}
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
Fungsi ini dipanggil oleh lapisan Weave untuk mengalokasikan blok memori "ukuran" {i>byte.<i}
|
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 melakukan inisialisasi memori dan resource yang diperlukan agar dapat berfungsi dengan baik dari pengalokasi memori Pengelola Security 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 ketika operasi kriptografi yang memakan waktu akan dimulai.
|
Enumerasi
BlockSetParamFields
BlockSetParamFields
Memblokir lokasi kolom parameter set dalam bentuk yang dienkode 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
|
Pergeseran kolom Ketik. |
kBlockSetSizeMask
|
Mask kolom ukuran. |
kBlockSetSizeShift
|
Pergeseran kolom ukuran. |
kBlockSetSizeValueShift
|
Pergeseran decoding kolom ukuran (dikalikan dengan 128). |
BlockSetParams
BlockSetParams
Menentukan parameter kumpulan blok.
Properti | |
---|---|
kBlockSet1BufferIndex
|
Indeks buffer set #1 adalah 0. |
kBlockSet1Count
|
Jumlah blok #1 adalah 1. |
kBlockSet1Size
|
Ukuran {i>set #1<i} adalah 128 byte. |
kBlockSet1isLongTerm
|
Jenis kumpulan #1 adalah jangka panjang. |
kBlockSet2BufferIndex
|
Indeks buffer set #2 adalah 0. |
kBlockSet2Count
|
Jumlah blok #2 adalah 1. |
kBlockSet2Size
|
Ukuran {i>Set #2<i} adalah 512 byte. |
kBlockSet2isLongTerm
|
Jenis kumpulan #2 adalah jangka panjang. |
kBlockSet3BufferIndex
|
Indeks buffer set #3 adalah 0. |
kBlockSet3Count
|
Jumlah blok #3 adalah 1. |
kBlockSet3Size
|
Ukuran {i>Set #3<i} adalah 512 byte. |
kBlockSet3isLongTerm
|
Jenis kumpulan #3 adalah jangka pendek. |
kBlockSet4BufferIndex
|
Indeks buffer set #4 adalah 1. |
kBlockSet4Count
|
Jumlah blok #4 adalah 2. |
kBlockSet4Size
|
Ukuran {i>Set #4<i} adalah 640 byte. |
kBlockSet4isLongTerm
|
Jenis kumpulan #4 adalah jangka pendek. |
kMaxBlockSize
|
Ukuran blok maksimum yang didukung oleh Alokasi Sederhana. |
kMinBufferSize
|
Ukuran buffer jaringan minimum yang diperlukan untuk mendukung kasus penggunaan Alokasi Sederhana. Parameter ini berasal dari ukuran dua blok memori (640 + 600) yang dialokasikan dalam 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 Alokasi Sederhana. |
kNumberOfNetworkBuffers
|
Jumlah buffer jaringan yang digunakan oleh Simple Alcator. |
kTotalMemorySize
|
Total memori yang digunakan oleh Simple Alcator. |
Typedef
BlockMark_t
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 total 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 buffer yang sama). Diagram di bawah ini 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 | Buffer jaringan #0 |
... | - |
11 | Buffer 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), }
Kumpulan parameter yang dienkode.
sBufferAllocationMask
const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }
Kumpulan mask blok buffer.
Mengidentifikasi apakah semua blok dalam buffer dan belum dialokasikan, kemudian buffer dapat dikurangi.
sMemBlocksAllocated
BlockMark_t sMemBlocksAllocated = 0
Menunjukkan blok mana yang dialokasikan/tidak dialokasikan.
Diinisialisasi ke 0 - berarti semua blok memori dan tidak dialokasikan.
sMemBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
Pointer ke buffer memori yang diinisialisasi ke NULL.
Jika buffer jaringan digunakan, sMemBufs[] arahkan ke objek PacketBuffer. Jika buffer khusus digunakan, titik sMemBufs[0] ke buffer tersebut dan pointer sMemBufs[] lainnya akan diabaikan.
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
Boolean yang menunjukkan apakah (true) atau tidak (false) buffer jaringan digunakan oleh Simple Alcator.
Jika false - buffer khusus yang disediakan dengan fungsi MemoryInit() akan 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 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 melakukan inisialisasi sumber data acak.
Fungsi ini khusus platform tertentu dan mungkin kosong jika inisialisasi sumber data acak tidak diperlukan.
Detail | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parameter |
|
||||||||
Nilai yang Ditampilkan |
|
MemoryAlloc
void * MemoryAlloc( size_t size )
Fungsi ini dipanggil oleh lapisan Weave untuk mengalokasikan blok memori "ukuran" {i>byte.<i}
Fungsi ini setara dengan MemoryAlloc(size, false).
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Nilai yang Ditampilkan |
|
MemoryAlloc
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
Fungsi ini dipanggil oleh lapisan Weave untuk mengalokasikan blok memori "ukuran" {i>byte.<i}
Detail | |||||
---|---|---|---|---|---|
Parameter |
|
||||
Nilai yang Ditampilkan |
|
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 melakukan inisialisasi memori dan resource yang diperlukan agar dapat berfungsi dengan baik dari pengalokasi memori Pengelola Security Weave.
Fungsi ini khusus untuk platform dan mungkin kosong dalam kasus tertentu. Misalnya, fungsi ini tidak melakukan apa-apa saat fungsi malloc() dan free() Library Standar C digunakan untuk alokasi memori.
Detail | |||||||
---|---|---|---|---|---|---|---|
Parameter |
|
||||||
Nilai yang Ditampilkan |
|
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 terjadi ketika fungsi malloc() dan free() Library Standar C 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.