nl:: Weave:: Platform:: Security
この名前空間には、Weave セキュリティ モニター メモリ マネージャー用の 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 Security Manager のメモリ アロケータの適切な機能に必要なメモリとリソースを初期化します。
|
MemoryShutdown(void)
|
void
この関数は Weave レイヤによって呼び出され、MemoryInit() 関数によって割り当てられたすべてのリソースを解放します。
|
OnTimeConsumingCryptoDone(void)
|
void
この関数は、時間のかかる暗号オペレーションが完了したときにアプリケーションに通知するために呼び出されます。
|
OnTimeConsumingCryptoStart(void)
|
void
この関数は、時間のかかる暗号オペレーションが開始するとアプリケーションに通知するために呼び出されます。
|
列挙型
BlockSetParamFields
BlockSetParamFields
8 ビット エンコード形式のブロックセット パラメータ フィールドの場所。
プロパティ | |
---|---|
kBlockSetBufferIndexMask
|
バッファ インデックスのフィールド マスク。 |
kBlockSetBufferIndexShift
|
バッファ インデックス フィールド シフト。 |
kBlockSetCountMask
|
件数フィールド マスク。 |
kBlockSetCountShift
|
カウントフィールドのシフト。 |
kBlockSetIsLongTermMask
|
フィールド マスクを入力します。 |
kBlockSetIsLongTermShift
|
フィールド シフトを入力します。 |
kBlockSetSizeMask
|
サイズ フィールド マスク。 |
kBlockSetSizeShift
|
Size フィールドのシフト。 |
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
|
シンプル アロケータで使用されるブロックセットの数。 |
kNumberOfNetworkBuffers
|
シンプル アロケータが使用するネットワーク バッファの数。 |
kTotalMemorySize
|
シンプル アロケータによって使用された合計メモリ。 |
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 レイヤによって呼び出され、Weave Security Manager のメモリ アロケータの適切な機能に必要なメモリとリソースを初期化します。
この関数はプラットフォーム固有であり、空の場合もあります。たとえば、C 標準ライブラリの malloc() と free() 関数がメモリ割り当てに使用されている場合、この関数は何も実行しません。
詳細 | |||||||
---|---|---|---|---|---|---|---|
パラメータ |
|
||||||
戻り値 |
|
MemoryShutdown
void MemoryShutdown( void )
この関数は Weave レイヤによって呼び出され、MemoryInit() 関数によって割り当てられたすべてのリソースを解放します。
リソースを解放する必要がない場合は、この関数を空の呼び出しにできます。たとえば、C 標準ライブラリの malloc() と free() 関数をメモリ割り当てに使用する場合などです。
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
この関数は、時間のかかる暗号オペレーションが完了したときにアプリケーションに通知するために呼び出されます。
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
この関数は、時間のかかる暗号オペレーションが開始するとアプリケーションに通知するために呼び出されます。