Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

nl::Weave::Profiles::Bảo mật::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à hành động xác thực được ủy quyền trong quá trình thiết lập phiên CASE.

Tóm tắt

Tính kế thừa

Các 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á trọng tải dành riêng cho ứng dụng để đưa vào thông báo CASE đối với ứng dụng ngang hàng.
EndValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual void
Được gọi ở 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 khóa 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 kèm theo 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

Bắt đầu xác thực

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

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

Mỗi chứng chỉ được tải vào bộ chứng chỉ sẽ được chỉ định một loại chứng chỉ mặc định theo hàm tải. Việc triển khai phải điều chỉnh các loại này nếu cần để đảm bảo xử lý đúng cách chứng chỉ 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 chạy với một tập hợp tiêu chí xác thực mặc định. Việc này có thể thay đổi khi cần thiết. Quá trình triển khai phải đặt trườngTrường thời gian hiệu quả hoặc đặt cờ xác thực thích hợp để chặn xác thực vòng đời chứng chỉ.

Nếu muốn có kết quả xác thực chi tiết, thì việc triển khai có thể khởi tạo các trường CertValidationResults và CertValidationLen.

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

Mã hóa Nút

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 phương thức 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 CASE Thông tin chứng chỉ cho nút cục bộ. Khi được gọi, quá trình triển khai sẽ ghi cấu trúc Chứng chỉ chứa tối thiểu là 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ỉ có liên quan và/hoặc neo tin cậy.

Mã hóa Nút thành phần tải

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

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

Bạn 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 sẽ trả về trọng tải có độ dài bằng 0.

Xác thực kết thúc

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

Được gọi ở cuối quá trình xác thực chứng chỉ.

Quá 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 phương thức 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 thành công đến BeginValidation().

CreateNodeSignature

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

Khi được gọi, việ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\39;s. Sau đó, chữ ký được tạo sẽ được ghi dưới dạng cấu trúc ECCASESignature CASE sang chữ viết TLV được cung cấp bằng cách sử dụng thẻ đã chỉ định.

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

Xử lý kết quả xác thực

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

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

Các phương thức 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 của chứng chỉ ngang hàng. Nếu 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 về kết quả. Cụ thể, trường neo tin cậy sẽ được đặt thành chứng chỉ neo tin cậy.

Nếu quá trình triển khai khởi chạy các trường CertValidationResult và CertValidationLen trong cấu trúc ValidationContext trong quá trình gọiBeginAuthentication(), 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 đè phương thức này bằng cách đặt validRes thành một giá trị lỗi, do đó khiến quá trình xác thực không thành công.

Nếu không xác thực được, validRes sẽ phản ánh lý do lỗi. Việc triển khai có thể ghi đè kết quả thành một giá trị lỗi khác, nhưng PHẢI KHÔNG đặt kết quả thành WEAVE_NO_ERROR.

Đã tải OnNgangCerts

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ỉ nhập và tiêu chí xác thực sẽ được dùng để thực hiện xác thực chứng chỉ ngang hàng. Tại thời điểm gọi, các 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ỉ riêng, nếu có). Ngoài ra, các đối số objectDN và subjectKeyId sẽ được khởi tạo cho các giá trị dùng để phân giải chứng chỉ ngang hàng từ bộ chứng chỉ. Nếu ứng dụng ngang hàng cung cấp chứng chỉ riêng (thay vì tham chiếu chứng chỉ), thì trường EntityCert trong đối số validCtx sẽ chứa một con trỏ (pointer) đến chứng chỉ đó.

Trong quá trình này, 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 chứng chỉ mới. Họ cũng có thể thay đổi các đối số objectDN, SubjectKeyId hoặc validCtx nếu cần. Điều quan trọng nhất là các hoạt động triển khai phải điều chỉnh các trường loại chứng chỉ với nhóm chứng chỉ đã đặt trước khi quay lại để đảm bảo xử lý chính xác các chứng chỉ trong quá trình xác thực và các hoạt động kiểm tra quyền 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ợ các tệp 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 Tên chủ đề và mã khóa đối tượng của ứng dụng ngang hàng vào chứng chỉ đã đặt trước khi trả lại.

Bạn không bắt buộc phải triển khai phương thức này. Quá trình triển khai mặc định không thực hiện gì.