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::Weave::Profil::Keamanan::CASE::WeaveCASEAuthDelegate

Ini adalah class abstrak.

#include <src/lib/profiles/security/WeaveCASE.h>

Antarmuka abstrak tempat tindakan autentikasi didelegasikan selama pembuatan sesi CASE.

Ringkasan

Inheritance

Subclass Langsung yang Dikenal: nl::Weave::DeviceManager::WeaveDeviceManager

Fungsi publik

BeginValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual WEAVE_ERROR
Dipanggil pada awal validasi sertifikat.
EncodeNodeCertInfo(const BeginSessionContext & msgCtx, TLVWriter & writer)=0
virtual WEAVE_ERROR
Mengenkode Informasi Sertifikat CASE untuk node lokal.
EncodeNodePayload(const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen)
virtual WEAVE_ERROR
Enkode payload khusus aplikasi agar disertakan dalam pesan CASE ke pembanding.
EndValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual void
Dipanggil pada akhir validasi sertifikat.
GenerateNodeSignature(const BeginSessionContext & msgCtx, const uint8_t *msgHash, uint8_t msgHashLen, TLVWriter & writer, uint64_t tag)=0
virtual WEAVE_ERROR
Buat tanda tangan menggunakan kunci pribadi node lokal.
HandleValidationResult(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet, WEAVE_ERROR & validRes)=0
virtual WEAVE_ERROR
Dipanggil dengan hasil validasi sertifikat.
OnPeerCertsLoaded(const BeginSessionContext & msgCtx, WeaveDN & subjectDN, CertificateKeyId & subjectKeyId, ValidationContext & validCtx, WeaveCertificateSet & certSet)
virtual WEAVE_ERROR
Dipanggil setelah sertifikat pembanding dimuat.

Fungsi publik

MulaiValidasi

virtual WEAVE_ERROR BeginValidation(
  const BeginSessionContext & msgCtx,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet
)=0

Dipanggil pada awal validasi sertifikat.

Implementasi harus menginisialisasi objek WeaveCertificateSet yang disediakan dengan resource yang memadai untuk menangani validasi sertifikat mendatang. Saat ini Implementasi dapat memuat root CA atau sertifikat CA tepercaya ke dalam kumpulan sertifikat, atau menunggu hingga OnPeerCertsLoaded() dipanggil.

Setiap sertifikat yang dimuat ke dalam kumpulan sertifikat akan diberi jenis sertifikat default oleh fungsi pemuatan. Implementasi ini harus menyesuaikan jenis ini sebagaimana diperlukan untuk memastikan perlakuan sertifikat yang benar selama validasi, dan penetapan WeaveAuthMode yang benar untuk interaksi CASE.

Konteks validasi yang disediakan akan diinisialisasi dengan serangkaian kriteria validasi default, yang dapat diubah sesuai kebutuhan. Penerapan harus menetapkan kolom EffectiveTime, atau menetapkan flag validasi yang sesuai untuk menyembunyikan validasi sepanjang waktu sertifikat.

Jika hasil validasi mendetail diinginkan, implementasi dapat menginisialisasi kolom CertValidationResults dan CertValidationLen.

Implementasi diperlukan untuk mempertahankan resource yang dialokasikan selama BeginValidation() hingga EndValidation() yang sesuai dipanggil. Implementasi dijamin bahwa EndValidation() akan dipanggil tepat satu kali untuk setiap panggilan yang berhasil ke BeginValidation().

EncodeNodeCertInfo

virtual WEAVE_ERROR EncodeNodeCertInfo(
  const BeginSessionContext & msgCtx,
  TLVWriter & writer
)=0

Mengenkode Informasi Sertifikat CASE untuk node lokal.

Implementasi dapat menggunakan panggilan ini untuk mengganti encoding default struktur CertificateInformation CASE untuk node lokal. Saat dipanggil, implementasi harus menulis struktur CertificateInformation setidaknya yang berisi sertifikat entitas node lokal. Implementasi dapat secara opsional mencakup serangkaian sertifikat terkait dan/atau trust anchor.

EncodeNodePayload

virtual WEAVE_ERROR EncodeNodePayload(
  const BeginSessionContext & msgCtx,
  uint8_t *payloadBuf,
  uint16_t payloadBufSize,
  uint16_t & payloadLen
)

Enkode payload khusus aplikasi agar disertakan dalam pesan CASE ke pembanding.

Mengimplementasikan metode ini bersifat opsional. Implementasi default menampilkan payload tanpa durasi.

Validasi Akhir

virtual void EndValidation(
  const BeginSessionContext & msgCtx,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet
)=0

Dipanggil pada akhir validasi sertifikat.

Implementasi dapat menggunakan panggilan ini untuk menjalankan pembersihan setelah validasi sertifikasi selesai. Implementasi dijamin bahwa EndValidation() akan dipanggil tepat satu kali untuk setiap panggilan yang berhasil ke BeginValidation().

GenerateNodeSignature

virtual WEAVE_ERROR GenerateNodeSignature(
  const BeginSessionContext & msgCtx,
  const uint8_t *msgHash,
  uint8_t msgHashLen,
  TLVWriter & writer,
  uint64_t tag
)=0

Buat tanda tangan menggunakan kunci pribadi node lokal.

Saat dipanggil, implementasi harus menghitung tanda tangan pada nilai hash yang diberikan menggunakan kunci pribadi node. Tanda tangan yang dihasilkan kemudian harus ditulis dalam bentuk struktur CASE ECDSASignature untuk tulisan TLV yang disediakan menggunakan tag yang ditentukan.

Jika kunci pribadi node disimpan dalam buffer lokal, fungsi utilitas GenerateAndEncodeWeaveECDSASignature() dapat berguna untuk menerapkan metode ini.

HandleValidationResult

virtual WEAVE_ERROR HandleValidationResult(
  const BeginSessionContext & msgCtx,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet,
  WEAVE_ERROR & validRes
)=0

Dipanggil dengan hasil validasi sertifikat.

Implementasi dapat menggunakan panggilan ini untuk memeriksa, dan mungkin mengubah, hasil validasi sertifikat milik rekan. Jika validasi berhasil, validRes akan ditetapkan ke WEAVE_NO_ERROR. Dalam hal ini, konteks validasi akan berisi detail terkait hasilnya. Secara khusus, kolom TrustAnchor akan ditetapkan ke sertifikat trust anchor.

Jika implementasi menginisialisasi kolom CertValidationResults dan CertValidationLen dalam struktur ValidationContext selama panggilan BeginValidation(), kolom tersebut akan berisi hasil validasi mendetail untuk setiap sertifikat di kumpulan sertifikat.

Implementasi dapat menggantikan ini dengan menetapkan validRes ke nilai error, sehingga menyebabkan validasi gagal.

Jika validasi gagal, validRes akan mencerminkan alasan kegagalan. Penerapan dapat mengganti hasil ke nilai error yang berbeda, tetapi HARUS TIDAK menetapkan hasilnya ke WEAVE_NO_ERROR.

OnPeerCertsLoaded.

virtual WEAVE_ERROR OnPeerCertsLoaded(
  const BeginSessionContext & msgCtx,
  WeaveDN & subjectDN,
  CertificateKeyId & subjectKeyId,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet
)

Dipanggil setelah sertifikat pembanding dimuat.

Implementasi dapat menggunakan panggilan ini untuk menyelesaikan sertifikat input dan kriteria validasi yang akan digunakan untuk melakukan validasi sertifikat pembanding. Pada waktu panggilan, sertifikat yang diberikan oleh pembanding akan dimuat ke dalam kumpulan sertifikat (termasuk sertifikatnya sendiri, jika ada). Selain itu, argumen subjectDN dan subjectKeyId akan diinisialisasi ke nilai yang akan digunakan untuk menyelesaikan sertifikat pembanding dari kumpulan sertifikat. Jika peer memberikan sertifikatnya sendiri (bukan referensi sertifikat), kolom EntityCert dalam argumen validCtx akan berisi pointer ke sertifikat tersebut.

Selama tahap ini, implementasi dapat mengubah konten kumpulan sertifikat, termasuk menambahkan sertifikat baru. Fungsi tersebut juga dapat mengubah argumen subjectDN, subjectKeyId, atau validCtx jika perlu. Yang terpenting, penerapan harus menyesuaikan kolom jenis sertifikat dengan sertifikat yang ditetapkan sebelum kembali untuk memastikan perlakuan sertifikat yang benar selama validasi dan pemeriksaan kontrol akses berikutnya.

CATATAN: Jika peer menyediakan referensi sertifikat untuk dirinya sendiri, bukan sertifikat lengkap, kolom EntityCert dalam konteks validasi akan berisi NULL. Jika ingin mendukung referensi sertifikat, penerapan harus menambahkan sertifikat yang cocok dengan DN subjek dan ID kunci pembanding ke sertifikat yang ditetapkan sebelum kembali.

Mengimplementasikan metode ini bersifat opsional. Implementasi default tidak melakukan apa pun.