nl::Weave::Profiles::Security::CASE::WeaveCASEAuthDelegate

Ini adalah class abstrak.

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

Antarmuka abstrak tempat tindakan autentikasi didelegasikan selama penetapan sesi CASE.

Ringkasan

Inheritance

Subclass yang Dikenal Langsung: 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
Enkode Informasi Sertifikat CASE untuk node lokal.
EncodeNodePayload(const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen)
virtual WEAVE_ERROR
Lakukan enkode payload khusus aplikasi agar disertakan dalam pesan CASE ke peer.
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 peer dimuat.

Fungsi publik

BeginValidation

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 yang akan datang. Untuk saat ini, Penerapan dapat memuat sertifikat CA atau root 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 harus menyesuaikan jenis ini seperlunya untuk memastikan perlakuan sertifikat yang benar selama validasi, dan penetapan WeaveAuthMode yang benar untuk interaksi CASE.

Konteks validasi yang diberikan akan diinisialisasi dengan serangkaian kriteria validasi default, yang dapat diubah implementasinya sesuai kebutuhan. Implementasi tersebut harus menetapkan kolom EffectiveTime, atau menyetel tanda validasi yang sesuai untuk menyembunyikan validasi masa aktif sertifikat.

Jika menginginkan hasil validasi yang mendetail, implementasi dapat melakukan inisialisasi pada kolom CertValidationResults dan CertValidationLen.

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

EncodeNodeCertInfo

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

Enkode Informasi Sertifikat CASE untuk node lokal.

Implementasi dapat menggunakan panggilan ini untuk mengganti encoding default struktur CertificateInformation CASE untuk node lokal. Ketika dipanggil, implementasi harus menulis struktur CertificateInformation yang berisi, minimal, sertifikat entitas node lokal. Penerapan dapat secara opsional menyertakan kumpulan sertifikat dan/atau trust anchor terkait.

EncodeNodePayload

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

Lakukan enkode payload khusus aplikasi agar disertakan dalam pesan CASE ke peer.

Metode ini bersifat opsional. Implementasi default menampilkan payload panjang nol.

EndValidation

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

Dipanggil pada akhir validasi sertifikat.

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

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 ECDSASignature CASE ke tulisan TLV yang disediakan menggunakan tag yang ditentukan.

Jika kunci pribadi node disimpan di 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 pembanding. Jika validasi berhasil, validRes akan disetel 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 BeginValidation() dipanggil, kolom ini akan berisi hasil validasi mendetail untuk setiap sertifikat dalam kumpulan sertifikat.

Implementasi dapat mengganti ini dengan menyetel validRes ke nilai error, sehingga menyebabkan validasi gagal.

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

OnPeerCertsLoaded

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

Dipanggil setelah sertifikat peer 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 disediakan oleh peer 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 me-resolve 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 panggilan ini, penerapan dapat mengubah konten kumpulan sertifikat, termasuk menambahkan sertifikat baru. Argumen tersebut juga dapat mengubah argumen SubjectDN, SubjectKeyId, atau validCtx jika diperlukan. Yang terpenting, penerapan harus menyesuaikan kolom jenis sertifikat dengan sertifikat yang ditetapkan sebelum dikembalikan untuk memastikan perlakuan sertifikat yang benar selama validasi dan pemeriksaan kontrol akses berikutnya.

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

Metode ini bersifat opsional. Implementasi default tidak melakukan apa pun.