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 yang akan disertakan dalam pesan CASE ke peer.
EndValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual void
Dipanggil di 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 di awal validasi sertifikat.

Implementasi harus melakukan inisialisasi objek WeaveCertificateSet yang disediakan dengan resource yang memadai untuk menangani validasi sertifikat mendatang. 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 oleh implementasi sesuai kebutuhan. Implementasi harus menetapkan kolom EffectiveTime, atau menetapkan flag validasi yang sesuai untuk menyembunyikan validasi masa berlaku sertifikat.

Jika hasil validasi mendetail diinginkan, penerapan dapat melakukan inisialisasi kolom CertValidationResults dan CertValidationLen.

Implementasi diperlukan untuk mempertahankan resource yang dialokasikan selama BeginValidation() sampai 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

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. Implementasi dapat secara opsional menyertakan kumpulan sertifikat dan/atau anchor kepercayaan terkait.

EncodeNodePayload

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

Enkode payload khusus aplikasi yang akan disertakan dalam pesan CASE ke peer.

Penerapan metode ini bersifat opsional. Implementasi default menampilkan payload panjang nol.

EndValidation

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

Dipanggil di akhir validasi sertifikat.

Implementasi dapat menggunakan panggilan ini untuk melakukan 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 ECDSASignature CASE ke penulisan 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 peer. 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 melakukan inisialisasi 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 menggantinya dengan menetapkan 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 peer. Pada waktu panggilan, sertifikat yang disediakan oleh peer akan dimuat ke dalam kumpulan sertifikat (termasuk sertifikatnya sendiri, jika ada). Selain itu, argumen subjekDN dan SubjectKeyId akan diinisialisasi ke nilai yang akan digunakan untuk me-resolve sertifikat pembanding dari kumpulan sertifikat. Jika peer menyediakan 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 ini juga dapat mengubah argumen subjectDN, subjectKeyId, atau validCtx sesuai kebutuhan. Yang paling penting, implementasi harus menyesuaikan kolom jenis sertifikat dengan sertifikat yang ditetapkan sebelum ditampilkan 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, implementasi harus menambahkan sertifikat yang cocok dengan DN subjek dan ID kunci peer ke kumpulan sertifikat sebelum ditampilkan.

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