Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.
Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

nl::Tenun::Platform::Keamanan

Namespace ini mencakup semua antarmuka dalam Weave untuk pengelola memori Weave Security Monitor.

Ringkasan

Fungsi dalam namespace ini akan diterapkan oleh platform yang menggunakan Weave, sesuai dengan kebutuhan/batasan lingkungan tertentu.

Enumerasi

BlockSetParamFields{
  kBlockSetSizeMask = 0x07,
  kBlockSetSizeShift = 0,
  kBlockSetSizeValueShift = 7,
  kBlockSetCountMask = 0x18,
  kBlockSetCountShift = 3,
  kBlockSetBufferIndexMask = 0x60,
  kBlockSetBufferIndexShift = 5,
  kBlockSetIsLongTermMask = 0x80,
  kBlockSetIsLongTermShift = 7
}
enum
Blokir lokasi kolom parameter set dalam bentuk yang dienkode 8 bit.
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
Menentukan parameter kumpulan blok.

Typedef

BlockMark_t typedef
uint8_t
Jenis yang digunakan untuk menandai blok mana yang saat ini dialokasikan/tidak dialokasikan.
BlockSetParams_t typedef
uint8_t
Jenis ini digunakan untuk mengenkode informasi kumpulan blok.

Variabel

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]
Blok kumpulan yang dienkode.
sBufferAllocationMask = { kNetworkBuffer0BlockAllocationMask, kNetworkBuffer1BlockAllocationMask, }[kNumberOfNetworkBuffers]
const BlockMark_t
Kumpulan mask blok buffer.
sMemBlocksAllocated = 0
Menunjukkan blok mana yang dialokasikan/tidak dialokasikan.
sMemBufs = { NULL }[kNumberOfNetworkBuffers]
void *
Pointer buffer memori yang diinisialisasi ke NULL.
sNetworkBuffersUsed = true
bool
Boolean yang menunjukkan apakah buffer jaringan benar (benar) atau tidak (salah) digunakan oleh Simple Allocator.

Fungsi

DecodeBlockSetParams(BlockSetParams_t blockSetParams, uint16_t & blockSize, uint8_t & blockCount, uint8_t & blockBufferIndex, bool & blockIsLongTerm)
void
GetSecureRandomData(uint8_t *buf, uint16_t len)
Fungsi ini dipanggil oleh lapisan Weave untuk menghasilkan data acak.
InitSecureRandomDataSource(nl::Weave::Crypto::EntropyFunct entropyFunct, uint16_t entropyLen, const uint8_t *personalizationData, uint16_t perDataLen)
Fungsi ini dipanggil oleh lapisan Weave untuk menginisialisasi sumber data acak.
MemoryAlloc(size_t size)
void *
Fungsi ini dipanggil oleh lapisan Weave untuk mengalokasikan blok memori "ukuran" byte.
MemoryAlloc(size_t size, bool isLongTermAlloc)
void *
Fungsi ini dipanggil oleh lapisan Weave untuk mengalokasikan blok memori "ukuran" byte.
MemoryFree(void *p)
void
Fungsi ini dipanggil oleh lapisan Weave untuk melepaskan blok memori yang dialokasikan oleh fungsi MemeoryAlloc().
MemoryInit(void *buf, size_t bufSize)
Fungsi ini dipanggil oleh lapisan Weave untuk menginisialisasi memori dan resource yang diperlukan untuk fungsionalitas yang tepat dari alokator memori Pengelola Keamanan Weave.
MemoryShutdown(void)
void
Fungsi ini dipanggil oleh lapisan Weave untuk melepaskan semua resource yang dialokasikan oleh fungsi MemoryInit().
OnTimeConsumingCryptoDone(void)
void
Fungsi ini dipanggil untuk memberi tahu aplikasi saat operasi kriptografi yang memakan waktu baru saja selesai.
OnTimeConsumingCryptoStart(void)
void
Fungsi ini dipanggil untuk memberi tahu aplikasi saat operasi kriptografi yang memakan waktu akan dimulai.

Class

nl::Tenun::Platform::Keamanan::AES128BlockCipher
nl::Tenun::Platform::Keamanan::AES128BlockCipherDec
nl::Tenun::Platform::Keamanan::AES128BlockCipherEnc
nl::Tenun::Platform::Keamanan::AES256BlockCipher
nl::Tenun::Platform::Keamanan::AES256BlockCipherDec
nl::Tenun::Platform::Keamanan::AES256BlockCipherEnc
nl::Tenun::Platform::Keamanan::SHA1
nl::Tenun::Platform::Keamanan::SHA256

Enumerasi

BlokSetParamFields

 BlockSetParamFields

Blokir lokasi kolom parameter set dalam bentuk yang dienkode 8 bit.

Properti
kBlockSetBufferIndexMask

Masker kolom indeks buffer.

kBlockSetBufferIndexShift

Buffering pergeseran kolom indeks.

kBlockSetCountMask

Mask kolom penghitungan.

kBlockSetCountShift

Menghitung pergeseran kolom.

kBlockSetIsLongTermMask

Ketik mask kolom.

kBlockSetIsLongTermShift

Ubah kolom.

kBlockSetSizeMask

Mask kolom ukuran.

kBlockSetSizeShift

Perubahan kolom ukuran.

kBlockSetSizeValueShift

Pergeseran decoding kolom ukuran (dikalikan dengan 128).

BlockSetParams

 BlockSetParams

Menentukan parameter kumpulan blok.

Properti
kBlockSet1BufferIndex

Kumpulan indeks buffer #1 adalah 0.

kBlockSet1Count

Jumlah blok set #1 adalah 1.

kBlockSet1Size

Ukuran kumpulan #1 adalah 128 byte.

kBlockSet1isLongTerm

Jenis kumpulan #1 adalah jangka panjang.

kBlockSet2BufferIndex

Kumpulan indeks buffer ke-2 adalah 0.

kBlockSet2Count

Jumlah blok set #2 adalah 1.

kBlockSet2Size

Ukuran kumpulan #2 adalah 512 byte.

kBlockSet2isLongTerm

Jenis kumpulan #2 adalah jangka panjang.

kBlockSet3BufferIndex

Kumpulan indeks buffer ke-3 adalah 0.

kBlockSet3Count

Jumlah blok set #3 adalah 1.

kBlockSet3Size

Ukuran kumpulan #3 adalah 512 byte.

kBlockSet3isLongTerm

Jenis No. 3 adalah jangka pendek.

kBlockSet4BufferIndex

Indeks buffer kumpulan nomor 4 adalah 1.

kBlockSet4Count

Jumlah blok set #4 adalah 2.

kBlockSet4Size

Ukuran kumpulan #4 adalah 640 byte.

kBlockSet4isLongTerm

Jenis No. 4 adalah jangka pendek.

kMaxBlockSize

Ukuran blok maksimum yang didukung oleh Simple Allocator.

kMinBufferSize

Ukuran buffer jaringan minimum diperlukan untuk mendukung kasus penggunaan Simple Allocator.

Parameter ini berasal dari ukuran dua blok memori (640 + 600) yang dialokasikan di buffer jaringan #1.

kNetworkBuffer0BlockAllocationMask

Mask ini mengidentifikasi semua blok memori yang dialokasikan dari buffer jaringan #0.

kNetworkBuffer1BlockAllocationMask

Mask ini mengidentifikasi semua blok memori yang dialokasikan dari buffer jaringan #1.

kNumberOfBlockSets

Jumlah kumpulan blok yang digunakan oleh Simple Allocator.

kNumberOfNetworkBuffers

Jumlah buffer jaringan yang digunakan oleh Simple Allocator.

kTotalMemorySize

Total memori yang digunakan oleh Simple Allocator.

Typedef

Memblokir Markt

uint8_t BlockMark_t

Jenis yang digunakan untuk menandai blok mana yang saat ini dialokasikan/tidak dialokasikan.

uint8_t - mendukung hingga 8 blok memori total uint16_t - mendukung hingga 16 blok memori total uint32_t - mendukung hingga 32 blok memori total

BlokirSetParams_t

uint8_t BlockSetParams_t

Jenis ini digunakan untuk mengenkode informasi kumpulan blok.

Kumpulan blok adalah grup potongan memori yang memiliki properti yang sama (ukuran, jenis, dan milik buffer yang sama). Diagram di bawah menunjukkan bagaimana informasi kumpulan blok dienkode dalam format 8 bit:

Jangka Panjang Blokir Indeks Jumlah Blok Ukuran Blok
[7] [6:5] [4.3] [2:0]
[2:0] - Ukuran blok memori dalam satu set. Nilai ukuran dienkode dengan perincian 128 byte.
[2:0] Dekode
000 0 byte
001 128 byte
010 256 byte
... -
111 896 byte
[4:3] - Jumlah blok dalam satu kumpulan.
[4.3] Dekode
00 4 blok
01 1 blok
10 2 blok
11 3 blok
[6:5] - Indeks buffer jaringan tempat blok memori berada. Perhatikan bahwa saat buffer khusus digunakan, semua blok memori dialokasikan dari buffer khusus dan parameter indeks ini diabaikan.
[6:5] Dekode
00 Buffering jaringan #0
... -
11 Buffering jaringan #3
[7] - Menentukan apakah pemblokiran untuk penyimpanan jangka panjang/pendek.
[7] Dekode
0 Blok memori jangka pendek
1 Blok memori jangka panjang

Variabel

sBlockSetParam

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),







}

Blok kumpulan yang dienkode.

sBufferAllocationMask

const BlockMark_t sBufferAllocationMask[kNumberOfNetworkBuffers] = {
                                                   kNetworkBuffer0BlockAllocationMask,
                                                   kNetworkBuffer1BlockAllocationMask,




                                                                                       }

Kumpulan mask blok buffer.

Mengidentifikasi apakah semua blok di buffer dan tidak dialokasikan, lalu buffer bisa ditata ulang.

sMemBlocksAllokasi

BlockMark_t sMemBlocksAllocated = 0

Menunjukkan blok mana yang dialokasikan/tidak dialokasikan.

Diinisialisasi ke 0 - berarti semua memori diblokir dan tidak dialokasikan.

sMemBuf

void * sMemBufs[kNumberOfNetworkBuffers] = { NULL }

Pointer buffer memori yang diinisialisasi ke NULL.

Jika buffer jaringan digunakan, sMemBufs[] akan mengarahkan ke objek PacketBuffer. Jika buffer khusus digunakan, titik sMemBufs[0] akan digunakan untuk buffer tersebut dan pointer sMemBufs[] lainnya akan diabaikan.

sNetworkBuffersDigunakan

bool sNetworkBuffersUsed = true

Boolean yang menunjukkan apakah buffer jaringan benar (benar) atau tidak (salah) digunakan oleh Simple Allocator.

Jika salah - buffer khusus yang disediakan dengan fungsi MemoryInit() digunakan.

Fungsi

DecodeBlockSetParams

void DecodeBlockSetParams(
  BlockSetParams_t blockSetParams,
  uint16_t & blockSize,
  uint8_t & blockCount,
  uint8_t & blockBufferIndex,
  bool & blockIsLongTerm
)

MendapatkanDataDataAcak

WEAVE_ERROR GetSecureRandomData(
  uint8_t *buf,
  uint16_t len
)

Fungsi ini dipanggil oleh lapisan Weave untuk menghasilkan data acak.

Detail
Parameter
[in] buf
Pointer ke buffer memori, tempat data acak yang diminta harus disimpan.
[in] len
Menentukan ukuran data acak yang diminta dalam byte.
Nilai yang Ditampilkan
WEAVE_ERROR_DRBG_ENTROPY_SOURCE_FAILED
Jika sumber entropi gagal menghasilkan entropi yang diminta oleh generator data acak.
WEAVE_ERROR_RANDOM_DATA_UNAVAILABLE
Jika sumber data acak gagal menghasilkan data acak.
WEAVE_ERROR_INCORRECT_STATE
Jika sumber data acak ditemukan dalam status yang salah.
WEAVE_NO_ERROR
Jika berhasil.

InitSecureRandomDataSource

WEAVE_ERROR InitSecureRandomDataSource(
  nl::Weave::Crypto::EntropyFunct entropyFunct,
  uint16_t entropyLen,
  const uint8_t *personalizationData,
  uint16_t perDataLen
)

Fungsi ini dipanggil oleh lapisan Weave untuk menginisialisasi sumber data acak.

Fungsi ini spesifik per platform dan mungkin kosong saat inisialisasi sumber data acak tidak diperlukan.

Detail
Parameter
[in] entropyFunct
Pointer ke fungsi yang menghasilkan entropi ke generator data acak. Jika input entropi tidak diperlukan oleh algoritme, input ini dapat berupa NULL, yang akan terjadi jika versi OpenSSL dari generator data acak digunakan.
[in] entropyLen
Menentukan ukuran entropi dalam byte yang seharusnya dihasilkan oleh fungsi entropi saat digunakan.
[in] personalizationData
Pointer ke buffer memori yang menyimpan input data personalisasi. Input data ini harus spesifik untuk perangkat dan membantu meningkatkan properti statistik data acak.
[in] perDataLen
Menentukan ukuran data personalisasi dalam byte.
Nilai yang Ditampilkan
WEAVE_ERROR_INVALID_ARGUMENT
Jika argumen yang tidak valid diteruskan ke fungsi ini.
WEAVE_NO_ERROR
Jika berhasil.

MemoriSemua

void * MemoryAlloc(
  size_t size
)

Fungsi ini dipanggil oleh lapisan Weave untuk mengalokasikan blok memori "ukuran" byte.

Fungsi ini setara dengan MemoryAlloc(ukuran, salah).

Detail
Parameter
[in] size
Menentukan ukuran memori yang diminta dalam byte.
Nilai yang Ditampilkan
Pointer
ke blok memori jika berhasil.
NULL-pointer
jika alokasi memori gagal.

MemoriSemua

void * MemoryAlloc(
  size_t size,
  bool isLongTermAlloc
)

Fungsi ini dipanggil oleh lapisan Weave untuk mengalokasikan blok memori "ukuran" byte.

Detail
Parameter
[in] size
Menentukan ukuran memori yang diminta dalam byte.
[in] isLongTermAlloc
Boolean yang menunjukkan apakah blok memori yang diminta (benar) atau tidak (salah) digunakan untuk penggunaan jangka panjang. Alokasi jangka panjang adalah memori yang harus tetap dialokasikan hingga sesi/jabat tangan yang aman selesai. Contoh alokasi jangka panjang mencakup blok yang dialokasikan untuk objek CASE/PASE dan data konteksnya. Alokasi jangka pendek adalah memori yang diperlukan untuk menjalankan operasi tertentu dan dapat segera dilepaskan setelah itu. Input ini membantu mengoptimalkan pemanfaatan memori dalam sistem yang dibatasi memori. Penggunaan parameter ini tidak didukung dan bergantung pada pengimplementasi fungsi. Misalnya, parameter ini diabaikan saat malloc() pada C Standard Library digunakan.
Nilai yang Ditampilkan
Pointer
ke blok memori jika berhasil.
NULL-pointer
jika alokasi memori gagal.

Tanpa Memori

void MemoryFree(
  void *p
)

Fungsi ini dipanggil oleh lapisan Weave untuk melepaskan blok memori yang dialokasikan oleh fungsi MemeoryAlloc().

Detail
Parameter
[in] p
Pointer ke blok memori yang harus dilepaskan.

Memori

WEAVE_ERROR MemoryInit(
  void *buf,
  size_t bufSize
)

Fungsi ini dipanggil oleh lapisan Weave untuk menginisialisasi memori dan resource yang diperlukan untuk fungsionalitas yang tepat dari alokator memori Pengelola Keamanan Weave.

Fungsi ini bersifat spesifik per platform dan mungkin kosong dalam kasus tertentu. Misalnya, fungsi ini tidak melakukan apa pun saat fungsi C Standard Library malloc() dan free() digunakan untuk alokasi memori.

Detail
Parameter
[in] buf
Pointer ke buffer memori khusus, yang harus digunakan sebagai gabungan memori untuk alokasi memori Pengelola Keamanan Weave. Input ini bersifat opsional (default-nya adalah NULL) dan tidak boleh digunakan jika buffer memori khusus tidak digunakan.
[in] bufSize
Ukuran buffer memori khusus. Input ini bersifat opsional (default-nya 0) dan tidak boleh digunakan jika buffer memori khusus tidak digunakan. Jika buffer memori khusus digunakan, fungsi akan memeriksa dan menghasilkan error jika ukuran buffer tidak cukup besar untuk mendukung kasus penggunaan Pengelola Keamanan Weave.
Nilai yang Ditampilkan
WEAVE_ERROR_BUFFER_TOO_SMALL
Jika ukuran buffer input khusus tidak memadai untuk mendukung kasus penggunaan Pengelola Aman.
WEAVE_NO_ERROR
Jika berhasil.
other
Error yang dihasilkan oleh fungsi inisialisasi memori khusus platform.

Matikan Memori

void MemoryShutdown(
  void
)

Fungsi ini dipanggil oleh lapisan Weave untuk melepaskan semua resource yang dialokasikan oleh fungsi MemoryInit().

Fungsi ini bisa berupa panggilan kosong jika tidak perlu melepaskan resource. Misalnya, inilah kasus ketika fungsi C Standard Library malloc() dan free() digunakan untuk alokasi memori.

OnTimeConsumingCryptoDone

void OnTimeConsumingCryptoDone(
  void
)

Fungsi ini dipanggil untuk memberi tahu aplikasi saat operasi kriptografi yang memakan waktu baru saja selesai.

OnTimeConsumingCryptoStart

void OnTimeConsumingCryptoStart(
  void
)

Fungsi ini dipanggil untuk memberi tahu aplikasi saat operasi kriptografi yang memakan waktu akan dimulai.