nl:: Weave:: Platform:: Security
Bu ad alanı, Weave Security Monitor bellek yöneticisi için Weave'deki tüm arayüzleri içerir.
Özet
Bu ad alanındaki işlevler, söz konusu ortamın ihtiyaçlarına/kısıtlamalarına göre Weave kullanan platformlar tarafından uygulanmalıdır.
Typedef'ler |
|
---|---|
BlockMark_t
|
typedefuint8_t
Hangi blokun şu anda ayrılmış/ayrılmamış olduğunu işaretlemek için kullanılan tür. |
BlockSetParams_t
|
typedefuint8_t
Bu tür, blok kümesi 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, parametreleri ayarlar.
|
sBufferAllocationMask = {
kNetworkBuffer0BlockAllocationMask,
kNetworkBuffer1BlockAllocationMask,
}[kNumberOfNetworkBuffers]
|
const BlockMark_t
Arabellek bloku maskeleri grubu.
|
sMemBlocksAllocated = 0
|
Hangi blokun ayrıldığını veya ayrılmadığını gösterir.
|
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
|
void *
NULL olarak başlatılan 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 yanlış (yanlış) olarak gösteren bir 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şleve rastgele veri 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, Weave katmanı tarafından "boyut" değerine sahip bir bellek bloku ayırmak için çağrılır bayt olarak kabul edilir.
|
MemoryAlloc(size_t size, bool isLongTermAlloc)
|
void *
Bu işlev, Weave katmanı tarafından "boyut" değerine sahip bir bellek bloku ayırmak için çağrılır bayt olarak kabul edilir.
|
MemoryFree(void *p)
|
void
Bu işlev, MemeoryAlloc() işlevi tarafından ayrılan bir 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ı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 şifreleme işlemi tamamlandığında uygulamaya bildirim göndermek için çağrılır.
|
OnTimeConsumingCryptoStart(void)
|
void
Bu işlev, zaman alan bir kriptografik işlem başlamak üzere uygulamayı bilgilendirmek için çağrılır.
|
Numaralandırmalar
BlockSetParamFields
BlockSetParamFields
Ayarlanan parametre alanlarının konumunu 8 bit olarak kodlanmış biçimde engelleyin.
Özellikler | |
---|---|
kBlockSetBufferIndexMask
|
Arabellek dizin alanı maskesi. |
kBlockSetBufferIndexShift
|
Arabellek dizini alanında kayma. |
kBlockSetCountMask
|
Sayı alanı maskesi. |
kBlockSetCountShift
|
Sayı alanı kayması. |
kBlockSetIsLongTermMask
|
Alan maskesini yazın. |
kBlockSetIsLongTermShift
|
Alan değiştirme yazın. |
kBlockSetSizeMask
|
Boyut alanı maskesi. |
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. kümedeki blok sayısı 1'dir. |
kBlockSet1Size
|
1. küme boyutu 128 bayt. |
kBlockSet1isLongTerm
|
1. küme türü uzun vadeli. |
kBlockSet2BufferIndex
|
2. Küme tampon dizini 0'dır. |
kBlockSet2Count
|
2. küme blok sayısı 1. |
kBlockSet2Size
|
2. küme boyutu 512 bayt. |
kBlockSet2isLongTerm
|
2. küme türü uzun vadeli. |
kBlockSet3BufferIndex
|
3. Küme tampon dizini 0'dır. |
kBlockSet3Count
|
3. kümedeki blok sayısı 1'dir. |
kBlockSet3Size
|
3. kümenin boyutu 512 bayt. |
kBlockSet3isLongTerm
|
3. küme türü kısa süreli. |
kBlockSet4BufferIndex
|
4. Küme tampon dizini 1'dir. |
kBlockSet4Count
|
4. ayardaki blok sayısı 2'dir. |
kBlockSet4Size
|
4. küme boyutu 640 bayt. |
kBlockSet4isLongTerm
|
4. küme türü kısa süreli. |
kMaxBlockSize
|
Basit Ayırıcı tarafından desteklenen maksimum blok boyutu. |
kMinBufferSize
|
Basit Bağlayıcı kullanım alanlarını desteklemek için gereken minimum ağ arabelleği boyutu. Bu parametre, 1 numaralı 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ümelerinin 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. |
Typedef'ler
BlockMark_t
uint8_t BlockMark_t
Hangi blokun şu anda ayrılmış/ayrılmamış olduğunu işaretlemek için kullanılan tür.
uint8_t - toplam 8 bellek bloğunu destekler - toplam 16 bellek bloğunu destekler uint32_t - toplamda 32 bellek bloğu destekler
BlockSetParams_t
uint8_t BlockSetParams_t
Bu tür, blok kümesi 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] | [02:0] |
[02:0] | Kod çözme |
000 | 0 bayt |
001 | 128 bayt |
010 | 256 bayt |
... | - |
111 | 896 bayt |
[4:3] | Kod çözme |
00 | 4 blok |
01 | 1 blok |
10 | 2 blok |
11 | 3 blok |
[6:5] | Kod çözme |
00 | Ağ arabelleği #0 |
... | - |
11 | 3. ağ arabelleği |
[7] | Kod çözme |
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, parametreleri ayarlar.
sBufferAllocationMask
const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }
Arabellek bloku maskeleri grubu.
Tampondaki tüm blokların ve ayrılmamış olup olmadığını ve tamponun ortadan kaldırılıp kaldırılamayacağını belirler.
sMemBlocksAllocated
BlockMark_t sMemBlocksAllocated = 0
Hangi blokun ayrıldığını veya ayrılmadığını gösterir.
0 olarak başlatıldı: tüm bellek blokları ve ayrılmamış demektir.
sMemBufs
void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }
NULL olarak başlatılan bellek arabelleklerine yönelik işaretçiler.
Ağ arabellekleri kullanıldığında sMemBufs[] PacketBuffer nesnelerine işaret eder. Özel arabellek kullanıldığında bu arabelleğe giden sMemBufs[0] noktaları ve diğer sMemBuf[] işaretçileri yoksayılır.
sNetworkBuffersUsed
bool sNetworkBuffersUsed = true
Ağ arabelleklerinin Basit Ayırıcı tarafından kullanılıp kullanılmadığını (doğru) veya yanlış (yanlış) olarak gösteren bir boole değeri.
False (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şleve rastgele veri oluşturmak için Weave katmanı tarafından çağrılır.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||
Değerleri Döndür |
|
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 özeldir ve rastgele veri kaynağının başlatılmasına gerek olmadığında boş olabilir.
Ayrıntılar | |||||||||
---|---|---|---|---|---|---|---|---|---|
Parametreler |
|
||||||||
Değerleri Döndür |
|
MemoryAlloc
void * MemoryAlloc( size_t size )
Bu işlev, Weave katmanı tarafından "boyut" değerine sahip bir bellek bloku ayırmak için çağrılır bayt olarak kabul edilir.
Bu işlev, MemoryAlloc'a(boyut; false) eşdeğerdir.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Değerleri Döndür |
|
MemoryAlloc
void * MemoryAlloc( size_t size, bool isLongTermAlloc )
Bu işlev, Weave katmanı tarafından "boyut" değerine sahip bir bellek bloku ayırmak için çağrılır bayt olarak kabul edilir.
Ayrıntılar | |||||
---|---|---|---|---|---|
Parametreler |
|
||||
Değerleri Döndür |
|
MemoryFree
void MemoryFree( void *p )
Bu işlev, MemeoryAlloc() işlevi tarafından ayrılan bir 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ı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 özeldir ve belirli durumlarda boş olabilir. Örneğin, bu işlev, bellek ayırma için C Standart Kitaplığı Malloc() ve free() işlevleri kullanıldığında hiçbir şey yapmaz.
Ayrıntılar | |||||||
---|---|---|---|---|---|---|---|
Parametreler |
|
||||||
Değerleri Döndür |
|
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.
Bu işlev, kaynakları serbest bırakmaya gerek yoksa boş bir çağrı olabilir. Örneğin, bellek ayırma için C Standart Kitaplığı Malloc() ve free() işlevlerinin kullanıldığı durum budur.
OnTimeConsumingCryptoDone
void OnTimeConsumingCryptoDone( void )
Bu işlev, zaman alan şifreleme işlemi tamamlandığında uygulamaya bildirim göndermek için çağrılır.
OnTimeConsumingCryptoStart
void OnTimeConsumingCryptoStart( void )
Bu işlev, zaman alan bir kriptografik işlem başlamak üzere uygulamayı bilgilendirmek için çağrılır.