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.

Numaralandırmalar

BlockSetParamFields{
  kBlockSetSizeMask = 0x07,
  kBlockSetSizeShift = 0,
  kBlockSetSizeValueShift = 7,
  kBlockSetCountMask = 0x18,
  kBlockSetCountShift = 3,
  kBlockSetBufferIndexMask = 0x60,
  kBlockSetBufferIndexShift = 5,
  kBlockSetIsLongTermMask = 0x80,
  kBlockSetIsLongTermShift = 7
}
enum
Ayarlanan parametre alanlarının konumunu 8 bit olarak kodlanmış biçimde engelle.
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
}
enum
Blok grubu parametrelerini tanımlar.

Typedef'ler

BlockMark_t typedef
uint8_t
Hangi blokun şu anda ayrılmış/ayrılmamış olduğunu işaretlemek için kullanılan tür.
BlockSetParams_t typedef
uint8_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]
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.

Sınıflar

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

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]
[2:0] - Bir kümedeki bellek bloğunun boyutu. Boyut değeri, 128 bayt ayrıntı düzeyiyle kodlanmıştır.
[02:0] Kod çözme
000 0 bayt
001 128 bayt
010 256 bayt
... -
111 896 bayt
[4:3] - Bir kümedeki blok sayısı.
[4:3] Kod çözme
00 4 blok
01 1 blok
10 2 blok
11 3 blok
[6:5] - Bellek bloklarının bulunduğu ağ arabellek dizini. Özel arabellek kullanıldığında tüm bellek bloklarının ayrılmış arabellekten ayrıldığını ve bu dizin parametresinin yok sayıldığını unutmayın.
[6:5] Kod çözme
00 Ağ arabelleği #0
... -
11 3. ağ arabelleği
[7] - Engellemelerin uzun/kısa süreli depolama için olup olmadığını belirtir.
[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
[in] buf
İstenen rastgele verilerin depolanacağı bellek arabelleğine işaret eder.
[in] len
İstenen rastgele veri boyutunu bayt cinsinden belirtir.
Değerleri Döndür
WEAVE_ERROR_DRBG_ENTROPY_SOURCE_FAILED
Entropi kaynağı, rastgele veri oluşturucu tarafından istenen entropiyi oluşturamazsa
WEAVE_ERROR_RANDOM_DATA_UNAVAILABLE
Rastgele veri kaynağının rastgele veri oluşturamaması.
WEAVE_ERROR_INCORRECT_STATE
Rastgele veri kaynağı yanlış durumda bulunursa.
WEAVE_NO_ERROR
Başarıya merhaba.

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
[in] entropyFunct
Rastgele veri oluşturucuya entropi oluşturan bir işlevin işaretçisi. Algoritmanın entropi girişini gerektirmemesi durumunda, bu giriş NULL olabilir. Rastgele veri oluşturucunun OpenSSL sürümünün kullanılması durumunda bu durum geçerlidir.
[in] entropyLen
Kullanıldığında entropi işlevi tarafından oluşturulması gereken entropi boyutunu bayt cinsinden belirtir.
[in] personalizationData
Kişiselleştirme verisi girişini depolayan bir bellek arabelleğinin işaretçisini gösterir. Bu veri girişi cihaza özel olmalıdır ve rastgele verilerin istatistiksel özelliklerinin iyileştirilmesine yardımcı olur.
[in] perDataLen
Kişiselleştirme verilerinin boyutunu bayt cinsinden belirtir.
Değerleri Döndür
WEAVE_ERROR_INVALID_ARGUMENT
Bu işleve geçersiz bir bağımsız değişken iletilip iletilmediğini belirtir.
WEAVE_NO_ERROR
Başarıya merhaba.

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
[in] size
İstenen bellek boyutunu bayt cinsinden belirtir.
Değerleri Döndür
Pointer
bir bellek bloğuna geri yüklenir.
NULL-pointer
bellek ayırma işlemi başarısız olur.

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
[in] size
İstenen bellek boyutunu bayt cinsinden belirtir.
[in] isLongTermAlloc
İstenen bellek bloğunun uzun süreli kullanım için olduğunu (doğru) veya olmadığını (yanlış) gösteren bir boole değeri. Uzun vadeli ayırma, güvenli oturum/el sıkışma tamamlanana kadar ayrılmış olarak kalması gereken bellektir. Uzun vadeli ayırmaya örnek olarak CASE/PASE nesneleri için ayrılmış bloklar ve bunların bağlam verileri verilebilir. Kısa vadeli ayırma, belirli bir işlemi gerçekleştirmek için gereken bellektir ve bundan hemen sonra serbest bırakılabilir. Bu giriş, bellek kısıtlamalı bir sistemde bellek kullanımının optimize edilmesine yardımcı olur. Bu parametre rastgele kullanılır ve işlev uygulayıcısına bağlıdır. Örneğin, C Standart Kitaplığı Malloc() kullanıldığında bu parametre yoksayılır.
Değerleri Döndür
Pointer
bir bellek bloğuna geri yüklenir.
NULL-pointer
bellek ayırma işlemi başarısız olur.

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
[in] p
İşaretçi, serbest bırakılması gereken bir bellek bloğuna işaret eder.

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
[in] buf
Weave Security Manager bellek ayırma işlemi için bellek havuzu olarak kullanılması gereken özel bir bellek arabelleğine işaret eden bir işaret. Bu giriş isteğe bağlıdır (varsayılan olarak NULL değerine ayarlanır) ve özel bellek arabelleği kullanılmadığında kullanılmamalıdır.
[in] bufSize
Özel bellek arabelleğinin boyutu. Bu giriş isteğe bağlıdır (varsayılan olarak 0'dır) ve özel bellek arabelleği kullanılmazsa kullanılmamalıdır. Özel bir bellek arabelleği kullanıldığında işlev, arabellek boyutu Weave Güvenlik Yöneticisi kullanım alanlarını destekleyecek kadar büyük değilse hata olup olmadığını kontrol eder ve hata verir.
Değerleri Döndür
WEAVE_ERROR_BUFFER_TOO_SMALL
Özel giriş arabellek boyutu, Weave Güvenlik Yöneticisi kullanım alanlarını desteklemek için yeterli değilse.
WEAVE_NO_ERROR
Başarıya merhaba.
other
Platforma özel bellek başlatma işlevi tarafından oluşturulan hata.

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.