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

Đây là một lớp trừu tượng.

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

Giao diện trừu tượng mà các thao tác xác thực được uỷ quyền trong quá trình thiết lập phiên CASE.

Tóm tắt

Tính kế thừa

Lớp học con đã biết trực tiếp: nl::Weave::DeviceManager::WeaveDeviceManager

Hàm công khai

BeginValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual WEAVE_ERROR
Được gọi khi bắt đầu quá trình xác thực chứng chỉ.
EncodeNodeCertInfo(const BeginSessionContext & msgCtx, TLVWriter & writer)=0
virtual WEAVE_ERROR
Mã hoá thông tin chứng chỉ CASE cho nút cục bộ.
EncodeNodePayload(const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen)
virtual WEAVE_ERROR
Mã hoá một tải trọng dành riêng cho ứng dụng để đưa vào thông báo CASE cho ứng dụng ngang hàng.
EndValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual void
Được gọi khi kết thúc quá trình xác thực chứng chỉ.
GenerateNodeSignature(const BeginSessionContext & msgCtx, const uint8_t *msgHash, uint8_t msgHashLen, TLVWriter & writer, uint64_t tag)=0
virtual WEAVE_ERROR
Tạo chữ ký bằng cách sử dụng khoá riêng tư của nút cục bộ.
HandleValidationResult(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet, WEAVE_ERROR & validRes)=0
virtual WEAVE_ERROR
Được gọi với kết quả xác thực chứng chỉ.
OnPeerCertsLoaded(const BeginSessionContext & msgCtx, WeaveDN & subjectDN, CertificateKeyId & subjectKeyId, ValidationContext & validCtx, WeaveCertificateSet & certSet)
virtual WEAVE_ERROR
Được gọi sau khi chứng chỉ của ứng dụng ngang hàng đã được tải.

Hàm công khai

BeginValidation

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

Được gọi khi bắt đầu quá trình xác thực chứng chỉ.

Các hoạt động triển khai phải khởi tạo đối tượng WeaveCertificateSet đã cung cấp với đủ tài nguyên để xử lý quá trình xác thực chứng chỉ sắp tới. Tại thời điểm này, các hoạt động triển khai có thể tải chứng chỉ gốc hoặc chứng chỉ CA đáng tin cậy vào nhóm chứng chỉ hoặc đợi cho đến khi OnPeerCertsLoaded() được gọi.

Mỗi chứng chỉ được tải vào nhóm chứng chỉ sẽ được hàm tải gán một loại chứng chỉ mặc định. Các phương thức triển khai phải điều chỉnh các loại này (nếu cần) để đảm bảo chứng chỉ được xử lý chính xác trong quá trình xác thực và chỉ định đúng WeaveAuthMode cho các lượt tương tác CASE.

Ngữ cảnh xác thực đã cung cấp sẽ được khởi tạo với một bộ tiêu chí xác thực mặc định. Quá trình triển khai có thể thay đổi nếu cần. Quá trình triển khai phải đặt trường EffectiveTime hoặc đặt cờ xác thực phù hợp để loại bỏ việc xác thực vòng đời của chứng chỉ.

Nếu bạn muốn có kết quả xác thực chi tiết, quá trình triển khai có thể khởi chạy các trường CertValidation Results và ValidationCertLen.

Các quá trình triển khai là cần thiết để duy trì mọi tài nguyên được phân bổ trong BeginValidation() cho đến khi EndValidation() tương ứng được gọi. Các hoạt động triển khai được đảm bảo rằng EndValidation() sẽ được gọi chính xác một lần cho mỗi lệnh gọi BeginValidation() thành công.

EncodeNodeCertInfo

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

Mã hoá thông tin chứng chỉ CASE cho nút cục bộ.

Các hoạt động triển khai có thể sử dụng lệnh gọi này để ghi đè phương thức mã hoá mặc định của cấu trúc CertificateInformation CASE cho nút cục bộ. Khi được gọi, quá trình triển khai phải viết một cấu trúc CertificateInformation, tối thiểu phải chứa chứng chỉ thực thể của nút cục bộ. Quá trình triển khai có thể tuỳ ý bao gồm một tập hợp các chứng chỉ và/hoặc neo tin cậy có liên quan.

EncodeNodePayload

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

Mã hoá một tải trọng dành riêng cho ứng dụng để đưa vào thông báo CASE cho ứng dụng ngang hàng.

Việc triển khai phương thức này là không bắt buộc. Phương thức triển khai mặc định trả về một tải trọng có độ dài bằng 0.

EndValidation

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

Được gọi khi kết thúc quá trình xác thực chứng chỉ.

Các quy trình triển khai có thể sử dụng lệnh gọi này để dọn dẹp sau khi quá trình xác thực chứng chỉ hoàn tất. Các hoạt động triển khai được đảm bảo rằng EndValidation() sẽ được gọi chính xác một lần cho mỗi lệnh gọi BeginValidation() thành công.

GenerateNodeSignature

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

Tạo chữ ký bằng cách sử dụng khoá riêng tư của nút cục bộ.

Khi được gọi, các phương thức triển khai phải tính toán chữ ký trên giá trị hàm băm đã cho bằng cách sử dụng khoá riêng tư của nút. Sau đó, chữ ký được tạo phải được viết dưới dạng cấu trúc ECDSASignature CASE vào nội dung TLV được cung cấp bằng thẻ được chỉ định.

Trong trường hợp khoá riêng tư của nút được giữ trong một vùng đệm cục bộ, hàm tiện ích GenerateAndEncodeWeaveECDSASignature() có thể hữu ích khi triển khai phương thức này.

HandleValidationResult

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

Được gọi với kết quả xác thực chứng chỉ.

Các hoạt động triển khai có thể sử dụng lệnh gọi này để kiểm tra và có thể thay đổi kết quả xác thực chứng chỉ của ứng dụng ngang hàng. Nếu quá trình xác thực thành công, validRes sẽ được đặt thành WEAVE_NO_ERROR. Trong trường hợp này, ngữ cảnh xác thực sẽ chứa thông tin chi tiết liên quan đến kết quả. Cụ thể, trường TrustAnchor sẽ được đặt thành chứng chỉ neo tin cậy.

Nếu quá trình triển khai đã khởi tạo các trường CertValidation Results và CertValidationLen trong cấu trúc ValidationContext trong quá trình BeginValidation() được gọi, thì các trường này sẽ chứa kết quả xác thực chi tiết cho từng chứng chỉ trong bộ chứng chỉ.

Các phương pháp triển khai có thể ghi đè giá trị này bằng cách đặt validRes thành giá trị lỗi, do đó khiến việc xác thực không thành công.

Nếu quá trình xác thực không thành công, validRes sẽ phản ánh lý do không thành công. Các hoạt động triển khai có thể ghi đè kết quả thành một giá trị lỗi khác, nhưng KHÔNG ĐƯỢC đặt kết quả thành WEAVE_NO_ERROR.

OnPeerCertsLoaded

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

Được gọi sau khi chứng chỉ của ứng dụng ngang hàng đã được tải.

Các hoạt động triển khai có thể sử dụng lệnh gọi này để hoàn tất chứng chỉ đầu vào và các tiêu chí xác thực sẽ được dùng để xác thực chứng chỉ của ứng dụng ngang hàng. Trong thời gian gọi, các chứng chỉ do ứng dụng ngang hàng cung cấp sẽ được tải vào nhóm chứng chỉ (bao gồm cả chứng chỉ của chính chứng chỉ đó, nếu có). Ngoài ra, các đối số subjectDN và subjectKeyId sẽ được khởi tạo thành các giá trị dùng để phân giải chứng chỉ của ứng dụng ngang hàng qua nhóm chứng chỉ. Nếu ứng dụng ngang hàng cung cấp chứng chỉ của riêng họ (chứ không phải tham chiếu chứng chỉ) thì trường EntityCert trong đối số validCtx sẽ chứa một con trỏ đến chứng chỉ đó.

Trong thời gian gọi lệnh này, các quá trình triển khai có thể sửa đổi nội dung của nhóm chứng chỉ, bao gồm cả việc thêm các chứng chỉ mới. Họ cũng có thể thay đổi các đối số subjectDN, subjectKeyId hoặc validCtx nếu cần. Điều quan trọng nhất là các quá trình triển khai phải điều chỉnh các trường loại chứng chỉ có chứng chỉ được thiết lập trước khi trả lại để đảm bảo rằng chứng chỉ được xử lý đúng trong quá trình xác thực cũng như các hoạt động kiểm soát quyền truy cập tiếp theo.

LƯU Ý: Trong trường hợp ứng dụng ngang hàng cung cấp một tham chiếu chứng chỉ cho chính mình chứ không phải chứng chỉ đầy đủ, trường EntityCert trong ngữ cảnh xác thực sẽ chứa giá trị NULL. Nếu muốn hỗ trợ tham chiếu chứng chỉ, thì quá trình triển khai phải thêm một chứng chỉ khớp với tiêu đề DN và mã khoá của ứng dụng ngang hàng vào nhóm chứng chỉ trước khi trả về.

Việc triển khai phương thức này là không bắt buộc. Việc triển khai mặc định không có tác dụng gì.