nl::Weave::Profiles::Security::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 Diketahui: 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
Enkode payload khusus aplikasi untuk 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 pembanding 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 mendatang. Pada saat ini, Implementasi dapat memuat root certificate 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. Penerapan harus menyesuaikan jenis ini sesuai kebutuhan 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 implementasinya sesuai kebutuhan. Implementasi harus menetapkan kolom EffectiveTime, atau menetapkan tanda validasi yang sesuai untuk menghentikan 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() hingga EndValidation() yang sesuai dipanggil dibuat. Penerapan dijamin bahwa EndValidation() akan dipanggil tepat sekali untuk setiap panggilan yang berhasil ke BeginValidation().

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. Saat dipanggil, implementasi harus menulis struktur CertificateInformation yang berisi, setidaknya, sertifikat entitas node lokal. Implementasi 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
)

Enkode payload khusus aplikasi untuk disertakan dalam pesan CASE ke peer.

Mengimplementasikan metode ini bersifat opsional. Implementasi default menampilkan payload dengan panjang nol.

EndValidation

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

Dipanggil pada akhir validasi sertifikat.

Penerapan dapat menggunakan panggilan ini untuk melakukan pembersihan setelah validasi sertifikasi selesai. Penerapan dijamin bahwa EndValidation() akan dipanggil tepat sekali 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 ECDSASignature CASE dengan penulisan TLV yang disediakan menggunakan tag yang ditentukan.

Jika kunci pribadi node disimpan di buffering 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 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 melakukan inisialisasi kolom CertValidationResults dan CertValidationLen dalam struktur ValidationContext selama BeginValidation() yang dipanggil, kolom ini akan berisi hasil validasi mendetail untuk setiap sertifikat dalam kumpulan sertifikat.

Implementasi dapat mengganti 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 TIDAK BOLEH 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 saat panggilan, sertifikat yang disediakan 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 me-resolve sertifikat peer dari kumpulan sertifikat. Jika peer menyediakan sertifikatnya sendiri (bukan referensi sertifikat), maka bidang EntityCert dalam argumen validCtx akan berisi pointer ke sertifikat tersebut.

Selama pemanggilan ini, implementasi dapat mengubah konten kumpulan sertifikat, termasuk menambahkan sertifikat baru. Parameter ini juga dapat mengubah argumen subjectDN, subjectKeyId, atau validCtx sesuai kebutuhan. Yang paling penting, penerapan harus menyesuaikan kolom jenis sertifikat dengan sertifikat yang ditetapkan sebelum pengembalian 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, bidang EntityCert dalam konteks validasi akan berisi NULL. Jika penerapan ingin mendukung referensi sertifikat, penerapan harus menambahkan sertifikat yang cocok dengan DN subjek dan id kunci pembanding ke kumpulan sertifikat sebelum kembali.

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