nl:: Weave:: 보안: 보안
이 네임스페이스에는 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
네트워크 할당자가 단순 할당자에서 네트워크 버퍼를 사용하고 있는지 여부를 나타내는 부울 값(true)입니다.
|
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 레이어에 의해 호출되며 "size" 바이트 메모리 블록을 할당합니다.
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
이 함수는 Weave 레이어에 의해 호출되며 "size" 바이트 메모리 블록을 할당합니다.
|
MemoryFree(void *p)
|
void
이 함수는 Weave 레이어에 의해 호출되며, MemeoryAlloc() 함수에서 할당한 메모리 블록을 해제합니다.
|
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
블록 집합 매개변수를 정의합니다.
속성 | |
---|---|
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를 설정합니다. |
kBlockSet4Count
|
블록 #4 설정 값은 2입니다. |
kBlockSet4Size
|
세트 4의 크기는 640바이트입니다. |
kBlockSet4isLongTerm
|
세트 4 유형은 단기입니다. |
kMaxBlockSize
|
단순 할당자에서 지원하는 최대 블록 크기입니다. |
kMinBufferSize
|
단순 할당자 사용 사례를 지원하는 데 필요한 최소 네트워크 버퍼 크기입니다. 이 매개변수는 네트워크 버퍼 #1에 할당된 2개의 메모리 블록 (640 + 600)에서 크기가 파생됩니다. |
kNetworkBuffer0BlockAllocationMask
|
이 마스크는 네트워크 버퍼 #0에서 할당된 모든 메모리 블록을 식별합니다. |
kNetworkBuffer1BlockAllocationMask
|
이 마스크는 네트워크 버퍼 #1에서 할당된 모든 메모리 블록을 식별합니다. |
kNumberOfBlockSets
|
단순 할당자에서 사용하는 블록 집합 수입니다. |
kNumberOfNetworkBuffers
|
단순 할당자에서 사용하는 네트워크 버퍼 수입니다. |
kTotalMemorySize
|
단순 할당자에서 사용한 총 메모리입니다. |
Typedef
블록마크_t
uint8_t BlockMark_t
현재 할당/할당되지 않은 블록을 표시하는 데 사용되는 유형입니다.
uint8_t - 총 8개 메모리 블록 지원 uint16_t - 총 16개의 메모리 블록 지원 uint32_t - 총 32개의 메모리 블록 지원
블록 세트 매개변수_
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] | 디코딩 |
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으로 초기화됨 - 모든 메모리 블록 및 할당되지 않은 상태를 의미합니다.
sememBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
메모리 버퍼에 대한 포인터가 NULL로 초기화되었습니다.
네트워크 버퍼를 사용할 경우 sMemBufs[] 는 PacketBuffer 객체를 가리킵니다. 전용 버퍼를 사용하면 sMemBufs[0] 가 이 버퍼를 가리키고 다른 sMemBufs[] 포인터는 무시됩니다.
sNetworkBuffers중고
bool sNetworkBuffersUsed = true
네트워크 할당자가 단순 할당자에서 네트워크 버퍼를 사용하고 있는지 여부를 나타내는 부울 값(true)입니다.
false - MemoryInit() 함수와 함께 제공된 전용 버퍼가 사용됩니다.
Functions
DecodeBlockSetParams
void DecodeBlockSetParams( BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm )
GetSecureRdataData
WEAVE_ERROR GetSecureRandomData( uint8_t *buf, uint16_t len )
이 함수는 Weave 레이어에 의해 호출되어 임의의 데이터를 생성합니다.
세부정보 | |||||||||
---|---|---|---|---|---|---|---|---|---|
매개변수 |
|
||||||||
반환 값 |
|
InitSecureRdataData
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 레이어에 의해 호출되며 "size" 바이트 메모리 블록을 할당합니다.
이 함수는 MemoryAlloc(size, false)과 동일합니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
||||
반환 값 |
|
메모리 할당
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
이 함수는 Weave 레이어에 의해 호출되며 "size" 바이트 메모리 블록을 할당합니다.
세부정보 | |||||
---|---|---|---|---|---|
매개변수 |
|
||||
반환 값 |
|
메모리 프리
void MemoryFree( void *p )
이 함수는 Weave 레이어에 의해 호출되며, MemeoryAlloc() 함수에서 할당한 메모리 블록을 해제합니다.
세부정보 | |||
---|---|---|---|
매개변수 |
|
메모리
WEAVE_ERROR MemoryInit( void *buf, size_t bufSize )
이 함수는 Weave 레이어에 의해 호출되며 Weave 보안 관리자 메모리 할당자의 적절한 기능에 필요한 메모리 및 리소스를 초기화합니다.
이 함수는 플랫폼에 따라 다르며 경우에 따라 비어 있을 수도 있습니다. 예를 들어 이 함수는 C 표준 라이브러리 malloc() 및 free() 함수가 메모리 할당에 사용되는 경우 아무 작업도 하지 않습니다.
세부정보 | |||||||
---|---|---|---|---|---|---|---|
매개변수 |
|
||||||
반환 값 |
|
메모리 종료
void MemoryShutdown( void )
이 함수는 Weave 레이어에 의해 호출되며 MemoryInit() 함수에서 할당한 모든 리소스를 해제합니다.
이 함수는 리소스를 해제할 필요가 없는 경우 빈 호출일 수 있습니다. 예를 들어 C 표준 라이브러리 malloc() 및 free() 함수가 메모리 할당에 사용되는 경우입니다.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
이 함수는 시간이 오래 걸리는 암호화 작업이 방금 완료된 경우 애플리케이션에 알리기 위해 호출됩니다.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
이 함수는 시간이 오래 걸리는 암호화 작업이 시작되려고 할 때 애플리케이션에 호출하기 위해 호출됩니다.