nl:: Weave:: Platform:: Security
この名前空間には、Weave Security Monitor メモリ マネージャー用の Weave 内のすべてのインターフェースが含まれます。
概要
この名前空間の関数は、特定の環境のニーズや制約に応じて、Weave を使用するプラットフォームによって実装されます。
Typedef |
|
---|---|
BlockMark_t
|
typedefuint8_t
現在割り当てられている/未割り当てのブロックをマークするために使用するタイプ。 |
BlockSetParams_t
|
typedefuint8_t
この型は、ブロックセット情報をエンコードするために使用されます。 |
変数 |
|
---|---|
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 Allocator で使用されている(true)かどうか(false)を示すブール値。
|
関数 |
|
---|---|
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 レイヤによって呼び出され、「size」のメモリブロックを割り当てます。あります。
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
この関数は Weave レイヤによって呼び出され、「size」のメモリブロックを割り当てます。あります。
|
MemoryFree(void *p)
|
void
この関数は、MemeoryAlloc()関数によって割り当てられたメモリブロックを解放するために、Weave レイヤによって呼び出されます。
|
MemoryInit(void *buf, size_t bufSize)
|
この関数は、Weave セキュリティ マネージャーのメモリ アロケータの適切な機能に必要なメモリとリソースを初期化するために、Weave レイヤによって呼び出されます。
|
MemoryShutdown(void)
|
void
この関数は Weave レイヤによって呼び出され、MemoryInit() 関数によって割り当てられたすべてのリソースを解放します。
|
OnTimeConsumingCryptoDone(void)
|
void
この関数は、時間のかかる暗号オペレーションが終了した直後にアプリケーションに通知するために呼び出されます。
|
OnTimeConsumingCryptoStart(void)
|
void
この関数は、時間のかかる暗号オペレーションが開始しようとしたときにアプリケーションに通知するために呼び出されます。
|
列挙型
BlockSetParamFields
BlockSetParamFields
ブロックセット パラメータ フィールドの場所は、8 ビットでエンコードされた形式で示されます。
プロパティ | |
---|---|
kBlockSetBufferIndexMask
|
バッファ インデックス フィールド マスク。 |
kBlockSetBufferIndexShift
|
バッファ インデックス フィールドのシフト。 |
kBlockSetCountMask
|
カウント フィールド マスク。 |
kBlockSetCountShift
|
フィールドのシフトをカウント。 |
kBlockSetIsLongTermMask
|
型フィールド マスク。 |
kBlockSetIsLongTermShift
|
型フィールド シフト。 |
kBlockSetSizeMask
|
サイズ フィールド マスク。 |
kBlockSetSizeShift
|
サイズ フィールドのシフト。 |
kBlockSetSizeValueShift
|
サイズ フィールドのデコード シフト(128 を乗算)。 |
BlockSetParams
BlockSetParams
ブロックセットのパラメータを定義します。
プロパティ | |
---|---|
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
|
Simple Allocator でサポートされる最大ブロックサイズ。 |
kMinBufferSize
|
Simple Allocator のユースケースをサポートするために必要な最小ネットワーク バッファサイズ。 このパラメータは、ネットワーク バッファ #1 に割り当てられた 2 つのメモリブロック(640 + 600)のサイズから導出されます。 |
kNetworkBuffer0BlockAllocationMask
|
このマスクは、ネットワーク バッファ #0 から割り当てられたすべてのメモリブロックを識別します。 |
kNetworkBuffer1BlockAllocationMask
|
このマスクは、ネットワーク バッファ #1 から割り当てられたすべてのメモリブロックを識別します。 |
kNumberOfBlockSets
|
Simple Allocator で使用されるブロックセットの数。 |
kNumberOfNetworkBuffers
|
Simple Allocator が使用するネットワーク バッファの数。 |
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 ブロック |
01 | 1 ブロック |
10 | 2 ブロック |
11 | 3 ブロック |
[6:5] | デコード |
00 | ネットワーク バッファ #0 |
... | - |
11 | ネットワーク バッファ #3 |
[7]。 | デコード |
撮影していない | 短期メモリブロック |
1 | 長期メモリブロック |
変数
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 Allocator で使用されている(true)かどうか(false)を示すブール値。
false の場合 - MemoryInit() 関数で提供される専用バッファが使用されます。
関数
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 レイヤによって呼び出されます。
この関数はプラットフォーム固有で、ランダムなデータソースの初期化が不要な場合は空になることがあります。
詳細 | |||||||||
---|---|---|---|---|---|---|---|---|---|
パラメータ |
|
||||||||
戻り値 |
|
MemoryAlloc
void * MemoryAlloc( size_t size )
この関数は Weave レイヤによって呼び出され、「size」のメモリブロックを割り当てます。あります。
この関数は MemoryAlloc(size, false) と同等です。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
||||
戻り値 |
|
MemoryAlloc
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
この関数は Weave レイヤによって呼び出され、「size」のメモリブロックを割り当てます。あります。
詳細 | |||||
---|---|---|---|---|---|
パラメータ |
|
||||
戻り値 |
|
MemoryFree
void MemoryFree( void *p )
この関数は、MemeoryAlloc()関数によって割り当てられたメモリブロックを解放するために、Weave レイヤによって呼び出されます。
詳細 | |||
---|---|---|---|
パラメータ |
|
MemoryInit
WEAVE_ERROR MemoryInit( void *buf, size_t bufSize )
この関数は、Weave Security Manager のメモリ アロケータの適切な機能に必要なメモリとリソースを初期化するために、Weave レイヤによって呼び出されます。
この関数はプラットフォーム固有で、空の場合もあります。たとえば、C 標準ライブラリの maloc() 関数と free() 関数がメモリ割り当てに使用される場合、この関数は何もしません。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
||||||
戻り値 |
|
MemoryShutdown
void MemoryShutdown( void )
この関数は Weave レイヤによって呼び出され、MemoryInit() 関数によって割り当てられたすべてのリソースを解放します。
リソースを解放する必要がない場合は、この関数を空の呼び出しにしてかまいません。たとえば、C 標準ライブラリの maloc() 関数と free() 関数がメモリ割り当てに使用される場合がこれに該当します。
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
この関数は、時間のかかる暗号オペレーションが終了した直後にアプリケーションに通知するために呼び出されます。
をご覧ください。OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
この関数は、時間のかかる暗号オペレーションが開始しようとしたときにアプリケーションに通知するために呼び出されます。
をご覧ください。