Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

nl::Weave::Platform::Security

この名前空間には、Weave セキュリティ モニターのメモリ マネージャー用の Weave 内のすべてのインターフェースが含まれます。

まとめ

この名前空間の関数は、特定の環境のニーズや制約に応じて、Weave を使用するプラットフォームで実装されます。

列挙型

BlockSetParamFields{
  kBlockSetSizeMask = 0x07,
  kBlockSetSizeShift = 0,
  kBlockSetSizeValueShift = 7,
  kBlockSetCountMask = 0x18,
  kBlockSetCountShift = 3,
  kBlockSetBufferIndexMask = 0x60,
  kBlockSetBufferIndexShift = 5,
  kBlockSetIsLongTermMask = 0x80,
  kBlockSetIsLongTermShift = 7
}
列挙型
8 ビットでエンコードされたパラメータ フィールドの場所をブロックします。
BlockSetParams{
  kNumberOfNetworkBuffers = 2,
  kNumberOfBlockSets = 4,
  kNetworkBuffer0BlockAllocationMask = 0x07,
  kNetworkBuffer1BlockAllocationMask = 0x18,
  kBlockSet1Size = 1,
  kBlockSet1Count = 1,
  kBlockSet1BufferIndex = 0,
  kBlockSet1isLongTerm = 1,
  kBlockSet2Size = 4,
  kBlockSet2Count = 1,
  kBlockSet2BufferIndex = 0,
  kBlockSet2isLongTerm = 1,
  kBlockSet3Size = 4,
  kBlockSet3Count = 1,
  kBlockSet3BufferIndex = 0,
  kBlockSet3isLongTerm = 0,
  kBlockSet4Size = 5,
  kBlockSet4Count = 2,
  kBlockSet4BufferIndex = 1,
  kBlockSet4isLongTerm = 0,
  kTotalMemorySize = (kBlockSet1Size * kBlockSet1Count + kBlockSet2Size * kBlockSet2Count + kBlockSet3Size * kBlockSet3Count + kBlockSet4Size * kBlockSet4Count) << kBlockSetSizeValueShift,
  kMaxBlockSize = 600,
  kMinBufferSize = 1240
}
列挙型
ブロックセットのパラメータを定義します。

Typedef

BlockMark_t typedef
uint8_t
現在割り当てられている/割り当てられていないブロックをマークするために使用されるタイプ。
BlockSetParams_t typedef
uint8_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]
エンコードされたブロックセットのパラメータ。
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
この関数は、時間のかかる暗号オペレーションの開始時にアプリケーションに通知するときに呼び出されます。

クラス

nl::Weave::Platform::Security::AES128BlockCipher
nl::Weave::Platform::Security::AES128BlockCipherDec
nl::Weave::Platform::Security::AES128BlockCipherEnc
nl::Weave::Platform::Security::AES256BlockCipher
nl::Weave::Platform::Security::AES256BlockCipherDec
nl::Weave::Platform::Security::AES256BlockCipherEnc
nl::Weave::Platform::Security::SHA1
nl::Weave::Platform::Security::SHA256

列挙型

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] - セット内のメモリブロックのサイズ。サイズ値は 128 バイトの粒度でエンコードされます。
[2:0] デコード中
000 件 0 バイト
001 128 バイト
010 256 バイト
... -
111 896 バイト
[4:3] - セット内のブロック数。
[4:3] デコード中
00 件 4 ブロック
1 日 1 ブロック
10 2 ブロック
31 日 3 ブロック
[6:5] - メモリブロックが存在するネットワーク バッファのインデックス。専用バッファを使用すると、すべてのメモリブロックが専用バッファから割り当てられます。このインデックス パラメータは無視されます。
[6:5] デコード中
00 件 ネットワーク バッファ #0
... -
31 日 ネットワーク バッファ #3
[7] - ブロックを長期/短期ストレージとして使用するかどうかを指定します。
[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 レイヤによって呼び出され、ランダムなデータが生成されます。

詳細
パラメータ
[in] buf
リクエストされたランダム データを格納するメモリバッファへのポインタ。
[in] len
リクエストされたランダムなデータサイズをバイト単位で指定します。
戻り値
WEAVE_ERROR_DRBG_ENTROPY_SOURCE_FAILED
ランダムデータ生成ツールでリクエストされたエントロピーの生成にエントロピー ソースが失敗した場合。
WEAVE_ERROR_RANDOM_DATA_UNAVAILABLE
ランダムなデータソースでランダムなデータを生成できない場合。
WEAVE_ERROR_INCORRECT_STATE
ランダムなデータソースが間違った状態で見つかった場合。
WEAVE_NO_ERROR
成功

InitSecureRandomDataSource

WEAVE_ERROR InitSecureRandomDataSource(
  nl::Weave::Crypto::EntropyFunct entropyFunct,
  uint16_t entropyLen,
  const uint8_t *personalizationData,
  uint16_t perDataLen
)

この関数は、ランダムなデータソースを初期化するために Weave レイヤによって呼び出されます。

この関数はプラットフォーム固有であり、ランダム データソースの初期化が不要な場合は空になることがあります。

詳細
パラメータ
[in] entropyFunct
ランダム データ生成ツールへのエントロピーを生成する関数へのポインタ。アルゴリズムでエントロピー入力が不要な場合、この入力は NULL にできます。その場合、ランダムなバージョンのデータ生成ツールの OpenSSL バージョンが使用されます。
[in] entropyLen
エントロピー関数を使用するときに生成されるエントロピー サイズをバイト単位で指定します。
[in] personalizationData
パーソナライズ データ入力を格納するメモリバッファへのポインタ。このデータ入力はデバイス固有のもので、ランダムデータの統計的特性の改善に役立ちます。
[in] perDataLen
パーソナライズ データサイズをバイト単位で指定します。
戻り値
WEAVE_ERROR_INVALID_ARGUMENT
この関数に無効な引数が渡されたかどうか。
WEAVE_NO_ERROR
成功

メモリ アロック

void * MemoryAlloc(
  size_t size
)

この関数は、Weave レイヤによって呼び出され、サイズとバイトのメモリのブロックを割り当てます。

この関数は、MemoryAlloc(size, false) と同等です。

詳細
パラメータ
[in] size
リクエストされたメモリサイズをバイト単位で指定します。
戻り値
Pointer
メモリブロックに加算します。
NULL-pointer
メモリ割り当てが失敗した場合。

メモリ アロック

void * MemoryAlloc(
  size_t size,
  bool isLongTermAlloc
)

この関数は、Weave レイヤによって呼び出され、サイズとバイトのメモリのブロックを割り当てます。

詳細
パラメータ
[in] size
リクエストされたメモリサイズをバイト単位で指定します。
[in] isLongTermAlloc
リクエストされたメモリブロックが長期間使用するかどうか(true)か否か(false)を示すブール値。長期割り当てとは、セキュアなセッション/handshake が完了するまで割り当てを維持する必要があるメモリです。長期的な割り当ての例としては、CASE/PASE オブジェクトとそのコンテキスト データに割り当てられたブロックなどがあります。短期間の割り当ては、特定のオペレーションの実行に必要なメモリであり、その直後に解放できます。この入力は、メモリ制限のあるシステムにおけるメモリ使用率の最適化に役立ちます。このパラメータは任意であり、関数の実装方法によって異なります。たとえば、C 標準ライブラリ(malloc())を使用する場合、このパラメータは無視されます。
戻り値
Pointer
メモリブロックに加算します。
NULL-pointer
メモリ割り当てが失敗した場合。

メモリの空き容量なし

void MemoryFree(
  void *p
)

この関数は、Weave レイヤによって呼び出され、MemeoryAlloc() 関数によって割り当てられたメモリブロックを解放します。

詳細
パラメータ
[in] p
解放する必要があるメモリブロックへのポインタ。

Memoryinit

WEAVE_ERROR MemoryInit(
  void *buf,
  size_t bufSize
)

この関数は Weave レイヤによって呼び出され、Weave Security Manager メモリ アロケータの適切な機能に必要なメモリとリソースを初期化します。

この関数はプラットフォーム固有であり、状況によっては空になることがあります。たとえば、メモリ割り当てに C 標準ライブラリの malloc() と free() 関数を使用した場合、この関数は何もしません。

詳細
パラメータ
[in] buf
専用のメモリバッファへのポインタ。Weave Security Manager のメモリ割り当てのメモリプールとして使用する必要があります。この入力は任意(デフォルトは NULL)で、専用のメモリバッファが使用されていなければ使用するべきではありません。
[in] bufSize
専用メモリバッファのサイズ。この入力は任意(デフォルトは 0)です。専用メモリバッファを使用しない場合は、この入力を使用しないでください。専用のメモリバッファを使用すると、バッファのサイズが Weave Security Manager のユースケースをサポートするには不十分な場合、関数がエラーを確認して生成します。
戻り値
WEAVE_ERROR_BUFFER_TOO_SMALL
専用の入力バッファサイズでは、Weave セキュリティ マネージャーのユースケースをサポートできない。
WEAVE_NO_ERROR
成功
other
プラットフォーム固有のメモリ初期化関数によって生成されたエラー。

メモリ シャットダウン

void MemoryShutdown(
  void
)

この関数は、MemoryInit() 関数によって割り当てられたすべてのリソースを解放するために Weave レイヤによって呼び出されます。

リソースを解放する必要がない場合は、この関数は空の呼び出しになります。たとえば、メモリ割り当てに C 標準ライブラリの malloc() 関数と free() 関数が使用されている場合などです。

OnTimeConsumingCryptoDone

void OnTimeConsumingCryptoDone(
  void
)

この関数は、時間のかかる暗号オペレーションが終了した直後にアプリケーションに通知する目的で呼び出されます。

OnTimeConsumingCryptoStart

void OnTimeConsumingCryptoStart(
  void
)

この関数は、時間のかかる暗号オペレーションの開始時にアプリケーションに通知するときに呼び出されます。