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
단순 할당자가 네트워크 버퍼를 사용하는지 (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
이 함수는 Weave 레이어에 의해 호출되어 MemeoryAlloc() 함수에 의해 할당된 메모리 블록을 해제합니다.
|
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
|
필드 Shift를 입력합니다. |
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
|
단순 할당자가 지원하는 최대 블록 크기 |
kMinBufferSize
|
단순 할당자 사용 사례를 지원하는 데 필요한 최소 네트워크 버퍼 크기입니다. 이 매개변수는 네트워크 버퍼 #1에 할당된 두 메모리 블록 (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시] |
[2시] | 디코딩 |
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] | 디코딩 |
0 | 단기 메모리 블록 |
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
단순 할당자가 네트워크 버퍼를 사용하는지 (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 )
이 함수는 Weave 레이어에 의해 호출되어 MemeoryAlloc() 함수에 의해 할당된 메모리 블록을 해제합니다.
세부정보 | |||
---|---|---|---|
매개변수 |
|
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 )
이 함수는 시간이 많이 걸리는 암호화 작업이 시작되려고 할 때 애플리케이션에 알리기 위해 호출됩니다.