nl:: Weave:: Platform:: Security
この名前空間には、Weave セキュリティ モニターのメモリ マネージャー用の Weave 内のすべてのインターフェースが含まれます。
まとめ
この名前空間の関数は、特定の環境のニーズや制約に応じて、Weave を使用するプラットフォームで実装されます。
Typedef |
|
---|---|
BlockMark_t
|
typedefuint8_t
現在割り当てられている/割り当てられていないブロックをマークするために使用されるタイプ。 |
BlockSetParams_t
|
typedefuint8_t
このタイプは、ブロックセット情報をエンコードするために使用されます。 |
Variables |
|
---|---|
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
エンコードされたブロックセットのパラメータ。
|
sBufferAllocationMask = {
kNetworkBuffer0BlockAllocationMask,
kNetworkBuffer1BlockAllocationMask,
}[kNumberOfNetworkBuffers]
|
const BlockMark_t
バッファ ブロック マスクのセット。
|
sMemBlocksAllocated = 0
|
割り当てられている、または割り当て解除されているブロックを示します。
|
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
|
void *
NULL に初期化されたメモリバッファへのポインタ。
|
sNetworkBuffersUsed = true
|
bool
Simple Alocator でネットワーク バッファが使用されているかどうか(true)または無効(false)を示すブール値。
|
Functions |
|
---|---|
DecodeBlockSetParams(BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm)
|
void
|
GetSecureRandomData(uint8_t *buf, uint16_t len)
|
この関数は、Weave レイヤによって呼び出され、ランダムなデータが生成されます。
|
InitSecureRandomDataSource(nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen)
|
この関数は、ランダムなデータソースを初期化するために Weave レイヤによって呼び出されます。
|
MemoryAlloc(size_t size)
|
void *
この関数は、Weave レイヤによって呼び出され、サイズとバイトのメモリのブロックを割り当てます。
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
この関数は、Weave レイヤによって呼び出され、サイズとバイトのメモリのブロックを割り当てます。
|
MemoryFree(void *p)
|
void
この関数は、Weave レイヤによって呼び出され、MemeoryAlloc() 関数によって割り当てられたメモリブロックを解放します。
|
MemoryInit(void *buf, size_t bufSize)
|
この関数は Weave レイヤによって呼び出され、Weave Security Manager メモリ アロケータの適切な機能に必要なメモリとリソースを初期化します。
|
MemoryShutdown(void)
|
void
この関数は、MemoryInit() 関数によって割り当てられたすべてのリソースを解放するために Weave レイヤによって呼び出されます。
|
OnTimeConsumingCryptoDone(void)
|
void
この関数は、時間のかかる暗号オペレーションが終了した直後にアプリケーションに通知する目的で呼び出されます。
|
OnTimeConsumingCryptoStart(void)
|
void
この関数は、時間のかかる暗号オペレーションの開始時にアプリケーションに通知するときに呼び出されます。
|
列挙型
BlockSetParamFields
BlockSetParamFields
8 ビットでエンコードされたパラメータ フィールドの場所をブロックします。
Properties | |
---|---|
kBlockSetBufferIndexMask
|
バッファ インデックス フィールド マスク。 |
kBlockSetBufferIndexShift
|
バッファ インデックスのフィールド シフト。 |
kBlockSetCountMask
|
カウント フィールド マスク。 |
kBlockSetCountShift
|
カウント フィールドシフト。 |
kBlockSetIsLongTermMask
|
フィールド マスクを入力します。 |
kBlockSetIsLongTermShift
|
型入力シフト。 |
kBlockSetSizeMask
|
サイズ フィールド マスク。 |
kBlockSetSizeShift
|
サイズ フィールド シフト。 |
kBlockSetSizeValueShift
|
サイズ フィールドのデコード シフト(128 を掛ける)。 |
BlockSetParams
BlockSetParams
ブロックセットのパラメータを定義します。
Properties | |
---|---|
kBlockSet1BufferIndex
|
1 番目のバッファ インデックスは 0 です。 |
kBlockSet1Count
|
ブロック番号 1 のブロック数は 1 です。 |
kBlockSet1Size
|
セット 1 のサイズは 128 バイトです。 |
kBlockSet1isLongTerm
|
セット 1 のタイプは長期的なものです。 |
kBlockSet2BufferIndex
|
2 番目のバッファ インデックスが 0 です。 |
kBlockSet2Count
|
ブロック番号 2 のブロック数は 1 です。 |
kBlockSet2Size
|
セット 2 のサイズは 512 バイトです。 |
kBlockSet2isLongTerm
|
セット 2 のタイプは長期的なものです。 |
kBlockSet3BufferIndex
|
3 番のバッファ インデックスが 0 である。 |
kBlockSet3Count
|
ブロック 3 のブロック数は 1 |
kBlockSet3Size
|
セット 3 のサイズは 512 バイトです。 |
kBlockSet3isLongTerm
|
セット 3 のタイプは短期的です。 |
kBlockSet4BufferIndex
|
4 番目のバッファ インデックスは 1 です。 |
kBlockSet4Count
|
ブロック番号 4 は 2 です。 |
kBlockSet4Size
|
セット 4 のサイズは 640 バイトです。 |
kBlockSet4isLongTerm
|
セット 4 は短期的です。 |
kMaxBlockSize
|
シンプル アロケータでサポートされる最大ブロックサイズ。 |
kMinBufferSize
|
単純なアロケータのユースケースをサポートするために必要な最小ネットワーク バッファサイズ。 このパラメータは、ネットワーク バッファ #1 に割り当てられた 2 つのメモリブロック(640 + 600)のサイズから取得されます。 |
kNetworkBuffer0BlockAllocationMask
|
このマスクは、ネットワーク バッファ #0 から割り当てられたすべてのメモリブロックを識別します。 |
kNetworkBuffer1BlockAllocationMask
|
このマスクは、ネットワーク バッファ #1 から割り当てられたすべてのメモリブロックを識別します。 |
kNumberOfBlockSets
|
Simple Allocator が使用するブロックセットの数。 |
kNumberOfNetworkBuffers
|
Simple Alocator が使用するネットワーク バッファの数。 |
kTotalMemorySize
|
Simple Allocator が使用するメモリの合計です。 |
Typedef
BlockMark_t
uint8_t BlockMark_t
現在割り当てられている/割り当てられていないブロックをマークするために使用されるタイプ。
uint8_t - 合計で最大 8 個のメモリブロックをサポート uint16_t - 合計で最大 16 個のメモリブロックをサポート uint32_t - 合計で最大 32 個のメモリブロックをサポート
BlockSetParams_t(ブロックセットのパラメータ)
uint8_t BlockSetParams_t
このタイプは、ブロックセット情報をエンコードするために使用されます。
ブロックセットは、同じプロパティ(サイズ、タイプ、同じバッファに属する)を持つメモリチャンクのグループです。下図は、ブロックセット情報を 8 ビット形式でエンコードする方法を示しています。
長期的 | ブロック インデックス | ブロック数 | ブロックサイズ |
[7]。 | [6:5] | [4:3] | [2:0] |
[2:0] | デコード中 |
000 件 | 0 バイト |
001 | 128 バイト |
010 | 256 バイト |
... | - |
111 | 896 バイト |
[4:3] | デコード中 |
00 件 | 4 ブロック |
1 日 | 1 ブロック |
10 | 2 ブロック |
31 日 | 3 ブロック |
[6:5] | デコード中 |
00 件 | ネットワーク バッファ #0 |
... | - |
31 日 | ネットワーク バッファ #3 |
[7]。 | デコード中 |
撮影していない | 短期メモリブロック |
1 | 長期メモリブロック |
Variables
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), }
エンコードされたブロックセットのパラメータ。
sBufferAllocationMask
const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }
バッファ ブロック マスクのセット。
バッファ内のすべてのブロックと割り当てが解除されてからバッファを解放できるかどうかを示します。
sMemBlocksAllocated
BlockMark_t sMemBlocksAllocated = 0
割り当てられている、または割り当て解除されているブロックを示します。
0 に初期化 - すべてのメモリブロックと未割り当ての状態。
sMemBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
NULL に初期化されたメモリバッファへのポインタ。
ネットワーク バッファが使用された場合、sMemBufs[] は PacketBuffer オブジェクトを指します。専用バッファを使用する場合は、sMemBufs[0] はそのバッファを指し、他の sMemBufs[] ポインタは無視されます。
sNetworkBuffersUsed(ネットワーク バッファの使用あり)
bool sNetworkBuffersUsed = true
Simple Alocator でネットワーク バッファが使用されているかどうか(true)または無効(false)を示すブール値。
false の場合 - MemoryInit() 関数で提供される専用のバッファが使用されます。
Functions
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 )
この関数は、Weave レイヤによって呼び出され、ランダムなデータが生成されます。
詳細 | |||||||||
---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||
戻り値 |
|
InitSecureRandomDataSource
WEAVE_ERROR InitSecureRandomDataSource( nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen )
この関数は、ランダムなデータソースを初期化するために Weave レイヤによって呼び出されます。
この関数はプラットフォーム固有であり、ランダム データソースの初期化が不要な場合は空になることがあります。
詳細 | |||||||||
---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||
戻り値 |
|
メモリ アロック
void * MemoryAlloc( size_t size )
この関数は、Weave レイヤによって呼び出され、サイズとバイトのメモリのブロックを割り当てます。
この関数は、MemoryAlloc(size, false) と同等です。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
||||
戻り値 |
|
メモリ アロック
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
この関数は、Weave レイヤによって呼び出され、サイズとバイトのメモリのブロックを割り当てます。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
||||
戻り値 |
|
メモリの空き容量なし
void MemoryFree( void *p )
この関数は、Weave レイヤによって呼び出され、MemeoryAlloc() 関数によって割り当てられたメモリブロックを解放します。
詳細 | |||
---|---|---|---|
パラメータ |
|
Memoryinit
WEAVE_ERROR MemoryInit( void *buf, size_t bufSize )
この関数は Weave レイヤによって呼び出され、Weave Security Manager メモリ アロケータの適切な機能に必要なメモリとリソースを初期化します。
この関数はプラットフォーム固有であり、状況によっては空になることがあります。たとえば、メモリ割り当てに C 標準ライブラリの malloc() と free() 関数を使用した場合、この関数は何もしません。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
||||||
戻り値 |
|
メモリ シャットダウン
void MemoryShutdown( void )
この関数は、MemoryInit() 関数によって割り当てられたすべてのリソースを解放するために Weave レイヤによって呼び出されます。
リソースを解放する必要がない場合は、この関数は空の呼び出しになります。たとえば、メモリ割り当てに C 標準ライブラリの malloc() 関数と free() 関数が使用されている場合などです。
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
この関数は、時間のかかる暗号オペレーションが終了した直後にアプリケーションに通知する目的で呼び出されます。
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
この関数は、時間のかかる暗号オペレーションの開始時にアプリケーションに通知するときに呼び出されます。