nl:: Weave:: Platform:: Security
Bu ad alanı, Weave Security Monitor bellek yöneticisi için Weave içindeki tüm arayüzleri içerir.
Özet
Bu ad alanındaki işlevler, belirli ortamın ihtiyaçlarına/kısıtlamalarına göre Weave'i kullanan platformlar tarafından uygulanır.
Türdefler |
|
---|---|
BlockMark_t
|
typedefuint8_t
Şu anda ayrılmış/ayrılmış bloku işaretlemek için kullanılan tür. |
BlockSetParams_t
|
typedefuint8_t
Bu tür, blok grubu bilgilerini kodlamak için kullanılır. |
Değişkenler |
|
---|---|
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
Kodlanmış blok grubu parametreleri.
|
sBufferAllocationMask = {
kNetworkBuffer0BlockAllocationMask,
kNetworkBuffer1BlockAllocationMask,
}[kNumberOfNetworkBuffers]
|
const BlockMark_t
Tampon blok maskeleri grubu.
|
sMemBlocksAllocated = 0
|
Hangi blokun ayrıldığını/ayrıldığını gösterir.
|
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
|
void *
NULL olarak başlatılmış bellek arabelleklerine yönelik işaretçiler.
|
sNetworkBuffersUsed = true
|
bool
Ağ arabelleklerinin Basit Ayırıcı tarafından kullanılıp kullanılmadığını (doğru) veya olmadığını (yanlış) gösteren boole değeri.
|
İşlevler |
|
---|---|
DecodeBlockSetParams(BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm)
|
void
|
GetSecureRandomData(uint8_t *buf, uint16_t len)
|
Bu işlev, rastgele veriler oluşturmak için Weave katmanı tarafından çağrılır.
|
InitSecureRandomDataSource(nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen)
|
Bu işlev, rastgele veri kaynağını başlatmak için Weave katmanı tarafından çağrılır.
|
MemoryAlloc(size_t size)
|
void *
Bu işlev, "boyut" baytlık bir bellek bloğunu ayırmak için Weave katmanı tarafından çağrılır.
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
Bu işlev, "boyut" baytlık bir bellek bloğunu ayırmak için Weave katmanı tarafından çağrılır.
|
MemoryFree(void *p)
|
void
Bu işlev, MemeoryAlloc() işlevi tarafından ayrılmış bellek bloğunu serbest bırakmak için Weave katmanı tarafından çağrılır.
|
MemoryInit(void *buf, size_t bufSize)
|
Bu işlev, Weave Güvenlik Yöneticisi bellek ayırıcısının düzgün çalışması için gereken belleği ve kaynakları başlatmak amacıyla Weave katmanı tarafından çağrılır.
|
MemoryShutdown(void)
|
void
Bu işlev, MemoryInit() işlevi tarafından ayrılan tüm kaynakları serbest bırakmak için Weave katmanı tarafından çağrılır.
|
OnTimeConsumingCryptoDone(void)
|
void
Bu işlev, zaman alan bir şifreleme işlemi yeni bittiğinde uygulamayı bildirmek için çağrılır.
|
OnTimeConsumingCryptoStart(void)
|
void
Bu işlev, zaman alan bir şifreleme işlemi başlamak üzereyken uygulamayı bilgilendirmek için çağrılır.
|
Sıralamalar
BlockSetParamFields
BlockSetParamFields
Ayarlanan parametre alanlarının konumunu 8 bit olarak kodlanmış biçimde engelle.
Özellikler | |
---|---|
kBlockSetBufferIndexMask
|
Arabellek dizini alan maskesi. |
kBlockSetBufferIndexShift
|
Arabellek dizini alan kayması. |
kBlockSetCountMask
|
Sayı alanı maskesi. |
kBlockSetCountShift
|
Sayım alanı kayması. |
kBlockSetIsLongTermMask
|
Alan maskesini yazın. |
kBlockSetIsLongTermShift
|
Alan kaydırma yazın. |
kBlockSetSizeMask
|
Alan maskesini boyutlandırın. |
kBlockSetSizeShift
|
Boyut alanı kayması. |
kBlockSetSizeValueShift
|
Boyut alanı kod çözme kayması (128 ile çarpın). |
BlockSetParams
BlockSetParams
Blok grubu parametrelerini tanımlar.
Özellikler | |
---|---|
kBlockSet1BufferIndex
|
1. kümenin arabellek dizini 0'dır. |
kBlockSet1Count
|
1 numaralı küme sayısı 1'dir. |
kBlockSet1Size
|
1. kümenin boyutu 128 bayttır. |
kBlockSet1isLongTerm
|
1 numaralı küme türü uzun vadeli. |
kBlockSet2BufferIndex
|
2. kümenin arabellek dizini 0'dır. |
kBlockSet2Count
|
2. kümedeki blok sayısı 1'dir. |
kBlockSet2Size
|
2. kümenin boyutu 512 bayttır. |
kBlockSet2isLongTerm
|
2. küme türü uzun vadeli. |
kBlockSet3BufferIndex
|
3. kümenin arabellek dizini 0'dır. |
kBlockSet3Count
|
3. kümedeki blok sayısı 1'dir. |
kBlockSet3Size
|
3. kümenin boyutu 512 bayttır. |
kBlockSet3isLongTerm
|
3. küme türü kısa vadeli. |
kBlockSet4BufferIndex
|
4. kümenin arabellek dizini 1'dir. |
kBlockSet4Count
|
4. kümedeki blok sayısı 2'dir. |
kBlockSet4Size
|
4. kümenin boyutu 640 bayttır. |
kBlockSet4isLongTerm
|
4. küme türü kısa vadeli. |
kMaxBlockSize
|
Basit Ayırıcı tarafından desteklenen maksimum blok boyutu. |
kMinBufferSize
|
Basit Ayırıcı kullanım alanlarını desteklemek için gereken minimum ağ arabelleği boyutu. Bu parametre, 1. ağ arabelleğinde ayrılmış iki bellek bloğunun (640 + 600) boyutlarından türetilir. |
kNetworkBuffer0BlockAllocationMask
|
Bu maske, 0 numaralı ağ arabelleğinden ayrılan tüm bellek bloklarını tanımlar. |
kNetworkBuffer1BlockAllocationMask
|
Bu maske, 1 numaralı ağ arabelleğinden ayrılan tüm bellek bloklarını tanımlar. |
kNumberOfBlockSets
|
Basit Ayırıcı tarafından kullanılan blok kümesi sayısı. |
kNumberOfNetworkBuffers
|
Basit Ayırıcı tarafından kullanılan ağ arabelleklerinin sayısı. |
kTotalMemorySize
|
Basit Ayırıcı tarafından kullanılan toplam bellek. |
Türdefler
BlockMark_t
uint8_t BlockMark_t
Şu anda ayrılmış/ayrılmış bloku işaretlemek için kullanılan tür.
uint8_t - toplam 8 bellek bloğunu destekler uint16_t - toplam 16 bellek bloğunu destekler toplam uint32_t - toplamda en fazla 32 bellek bloğunu destekler
BlockSetParams_t
uint8_t BlockSetParams_t
Bu tür, blok grubu bilgilerini kodlamak için kullanılır.
Blok grubu, aynı özelliklere (boyut, tür ve aynı arabelleğe ait) sahip bellek parçaları grubudur. Aşağıdaki şemada, blok kümesi bilgilerinin 8 bit biçiminde nasıl kodlandığı gösterilmektedir:
Uzun Vadeli | Blok Dizini | Blok Sayısı | Blok Boyutu |
[7] | [6:5] | [4:3] | [2:0] |
[2:0] | Kod çözülüyor |
000 | 0 bayt |
001 | 128 bayt |
010 | 256 bayt |
... | - |
111 | 896 bayt |
[4:3] | Kod çözülüyor |
00 | 4 blok |
01 | 1 blok |
10 | 2 blok |
11 | 3 blok |
[6:5] | Kod çözülüyor |
00 | Ağ arabelleği #0 |
... | - |
11 | 3. Ağ arabelleği |
[7] | Kod çözülüyor |
0 | Kısa süreli bellek blokları |
1 | Uzun süreli bellek blokları |
Değişkenler
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), }
Kodlanmış blok grubu parametreleri.
sBufferAllocationMask
const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }
Tampon blok maskeleri grubu.
Tampondaki tüm blokların ayrılıp ayrılmadığını ve ardından tamponun serbest bırakılıp bırakılamayacağını tanımlar.
sMemBlocksAllocated
BlockMark_t sMemBlocksAllocated = 0
Hangi blokun ayrıldığını/ayrıldığını gösterir.
0 olarak başlatılır: Tüm bellek bloklarının ve ayrılmamış olduğu anlamına gelir.
sMemBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
NULL olarak başlatılmış bellek arabelleklerine yönelik işaretçiler.
Ağ arabellekleri kullanıldığında sMemBufs[], PacketBuffer nesnelerini işaret eder. Özel arabellek kullanıldığında sMemBufs[0], bu tamponu işaret eder ve diğer sMemBufs[] işaretçileri yok sayılır.
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
Ağ arabelleklerinin Basit Ayırıcı tarafından kullanılıp kullanılmadığını (doğru) veya olmadığını (yanlış) gösteren boole değeri.
Yanlış olduğunda - MemoryInit() işleviyle sağlanan özel arabellek kullanılır.
İşlevler
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 )
Bu işlev, rastgele veriler oluşturmak için Weave katmanı tarafından çağrılır.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||
Döndürülen Değerler |
|
InitSecureRandomDataSource
WEAVE_ERROR InitSecureRandomDataSource( nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen )
Bu işlev, rastgele veri kaynağını başlatmak için Weave katmanı tarafından çağrılır.
Bu işlev platforma özgüdür ve rastgele veri kaynağının başlatılması gerekmediğinde boş olabilir.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||
Döndürülen Değerler |
|
MemoryAlloc
void * MemoryAlloc( size_t size )
Bu işlev, "boyut" baytlık bir bellek bloğunu ayırmak için Weave katmanı tarafından çağrılır.
Bu işlev, MemoryAlloc(boyut, false) ile eşdeğerdir.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Döndürülen Değerler |
|
MemoryAlloc
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
Bu işlev, "boyut" baytlık bir bellek bloğunu ayırmak için Weave katmanı tarafından çağrılır.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Döndürülen Değerler |
|
MemoryFree
void MemoryFree( void *p )
Bu işlev, MemeoryAlloc() işlevi tarafından ayrılmış bellek bloğunu serbest bırakmak için Weave katmanı tarafından çağrılır.
Ayrıntılar | |||
---|---|---|---|
Parametreler |
|
MemoryInit
WEAVE_ERROR MemoryInit( void *buf, size_t bufSize )
Bu işlev, Weave Güvenlik Yöneticisi bellek ayırıcısının düzgün çalışması için gereken belleği ve kaynakları başlatmak amacıyla Weave katmanı tarafından çağrılır.
Bu işlev platforma özgüdür ve bazı durumlarda boş olabilir. Örneğin, bellek ayırma için C Standart Kitaplığı Malloc() ve free() işlevleri kullanıldığında bu işlev hiçbir şey yapmaz.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Döndürülen Değerler |
|
MemoryShutdown
void MemoryShutdown( void )
Bu işlev, MemoryInit() işlevi tarafından ayrılan tüm kaynakları serbest bırakmak için Weave katmanı tarafından çağrılır.
Kaynakları serbest bırakmaya gerek yoksa bu işlev boş bir çağrı olabilir. Örneğin bu durum, bellek ayırma için C Standart Kitaplığı Malloc() ve free() işlevlerinin kullanıldığı durumlardır.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
Bu işlev, zaman alan bir şifreleme işlemi yeni bittiğinde uygulamayı bildirmek için çağrılır.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
Bu işlev, zaman alan bir şifreleme işlemi başlamak üzereyken uygulamayı bilgilendirmek için çağrılır.