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

Đây là 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 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 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 (Trường hợp sử dụng) cho ứng dụng ngang hàng.
EndValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual void
Được gọi vào cuối 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 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 xác thực chứng chỉ.

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

Mỗi chứng chỉ được tải vào bộ chứng chỉ sẽ được hàm tải gán một loại chứng chỉ mặc định. Việc triển khai nên đ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 chính xác WeaveAuthMode cho các hoạt động tương tác CASE.

Ngữ cảnh xác thực đã cung cấp sẽ được khởi động bằng một bộ tiêu chí xác thực mặc định mà phương thức triển khai có thể thay đổi khi cần. Quá trình triển khai phải đặt trường hiệu quả (EffectTime) hoặc đặt các cờ xác thực thích hợp để ngăn việc xác thực thời gian tồn tại của chứng chỉ.

Nếu 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 CertValidationResults và CertValidationLen.

Bạn cần triển khai để duy trì mọi tài nguyên được phân bổ trong quá trình BeginValidation() cho đến khi thực hiện lệnh gọi EndValidation() tương ứng. Các quy trình triển khai đả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 thành công đến BeginValidation().

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ộ.

Việc triển khai có thể sử dụng lệnh gọi này để ghi đè chế độ mã hoá mặc định của cấu trúc CertificateInformation CASE (Thông tin chứng chỉ) cho nút cục bộ. Khi được gọi, quy trình triển khai phải ghi cấu trúc CertificateInformation chứa, ở mức tối thiểu, chứng chỉ thực thể của nút cục bộ. Quá trình triển khai có thể bao gồm một nhóm các chứng chỉ liên quan và/hoặc neo tin cậy (không bắt buộc).

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 (Trường hợp sử dụng) cho ứng dụng ngang hàng.

Không bắt buộc phải triển khai phương thức này. Cách triển khai mặc định trả về 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 vào cuối 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 nhận hoàn tất. Các quy trình triển khai đả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 thành công đến BeginValidation().

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 khoá riêng tư của nút cục bộ.

Khi được gọi, các quá trình triển khai phải tính toán chữ ký trên giá trị băm đã cho bằng cách sử dụng khoá riêng tư của nút. Sau đó, bạn phải viết chữ ký đã tạo dưới dạng cấu trúc ECDSAChữ ký CASEthành chữ 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 lưu trong vùng đệm cục bộ, thì hàm tiện ích GenerateAndEncodeWeaveECDSASignature() có thể hữu ích cho việc 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ỉ.

Quá trình 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 xác thực thành công, thì 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 các 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 CertValidationResults và CertValidationLen trong cấu trúc ValidationContext trong lệnh gọi BeginValidation() cung cấp, 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 quy trình triển khai có thể ghi đè giá trị này bằng cách đặt validRes thành một giá trị lỗi, khiến việc xác thực không thành công.

Nếu xác thực không thành công, validRes sẽ cho biết lý do không thành công. Việc 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.

Quá trình 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à tiêu chí xác thực sẽ dùng để xác thực chứng chỉ của ứng dụng ngang hàng. Tại thời điểm gọi, chứng chỉ do ứng dụng ngang hàng cung cấp sẽ được tải vào bộ chứng chỉ (bao gồm cả chứng chỉ của chính bộ 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ị sẽ được dùng để phân giải chứng chỉ của ứng dụng ngang hàng từ bộ chứng chỉ. Nếu ứng dụng ngang hàng cung cấp chứng chỉ của riêng mình (thay vì tham chiếu chứng chỉ), thì trường Cert (Chứng chỉ thực thể) trong đối số validCtx sẽ chứa con trỏ đến chứng chỉ đó.

Trong lệnh gọi này, quá trình triển khai có thể sửa đổi nội dung của bộ chứng chỉ, bao gồm cả việc thêm chứng chỉ mới. Chúng cũng có thể thay đổi đối số subjectDN, subjectKeyId hoặc đối số validCtx nếu cần. Quan trọng nhất là việc triển khai phải điều chỉnh các trường loại chứng chỉ có chứng chỉ được đặt trước khi trả lại để đảm bảo xử lý chứng chỉ đúng cách trong quá trình xác thực và kiểm tra 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 tham chiếu chứng chỉ cho chính nó thay vì chứng chỉ đầy đủ, trường EntityCert trong ngữ cảnh xác thực sẽ chứa NULL. Nếu muốn hỗ trợ việc tham chiếu chứng chỉ, triển khai phải thêm chứng chỉ khớp với DN của chủ thể ngang hàng và mã khoá vào bộ chứng chỉ trước khi trả về.

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