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.
Trang này được dịch bởi Cloud Translation API.
Switch to English

nl :: Dệt :: Hồ sơ :: Bảo vệ:: TRƯỜNG HỢP :: 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 hành động xác thực được ủy quyền trong quá trình thiết lập phiên CASE .

Tóm lược

Di sản

Các lớp con đã biết trực tiếp: nl :: Weave :: DeviceManager :: WeaveDeviceManager

Chức năng công cộng

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ã hóa 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ã hóa trọng tải dành riêng cho ứng dụng để đưa vào thông báo CASE cho đồng nghiệp.
EndValidation (const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual void
Được gọi khi kết thúc 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 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 các chứng chỉ ngang hàng đã được tải.

Chức năng công cộng

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

Việc 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ý quá trình xác thực chứng chỉ sắp tới. Tại thời điểm này, Triển khai có thể tải chứng chỉ gốc hoặc CA đáng tin cậy vào bộ chứng chỉ hoặc đợi cho đến khi OnPeerCertsLoaded () được gọi.

Mỗi chứng chỉ được nạp 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 phải điều chỉnh các loại này khi cần thiết để đảm bảo việc xử lý chứng chỉ chính xác trong quá trình xác thực và chỉ định chính xác WeaveAuthMode cho các tương tác CASE .

Bối cảnh xác thực được cung cấp sẽ được khởi tạo với một tập hợp các tiêu chí xác thực mặc định, mà việc triển khai có thể thay đổi nếu cần. Việc triển khai phải đặt trường Thời gian hiệu quả hoặc đặt cờ xác thực thích hợp để ngăn xác thực thời gian tồn tại của chứng chỉ.

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

Việc triển khai được yêu cầu để duy trì bất kỳ tài nguyên nào được cấp phát trong suốt BeginValidation () cho đến khi EndValidation () tương ứng được gọi được thực hiện. Việ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ần gọi thành công tới BeginValidation () .

EncodeNodeCertInfo

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

Mã hóa 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 đè mã hóa mặc định của cấu trúc CASE CertificateInformation cho nút cục bộ. Khi được gọi, việc triển khai phải viết một cấu trúc CertificateInformation chứa tối thiểu chứng chỉ thực thể của nút cục bộ. Việc triển khai có thể tùy chọn bao gồm một tập hợp các chứng chỉ liên quan và / hoặc neo tin cậy.

EncodeNodePayload

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

Mã hóa trọng tải dành riêng cho ứng dụng để đưa vào thông báo CASE cho đồng nghiệp.

Việc triển khai phương pháp này là tùy chọn. Việc triển khai mặc định trả về trọng tải có độ dài bằng không.

EndValidation

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

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

Việc triển khai có thể sử dụng lệnh gọi này để thực hiện dọn dẹp sau khi quá trình xác thực chứng nhận hoàn tất. Việ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ần gọi thành công tới 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 khóa riêng của nút cục bộ.

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

Trong trường hợp khóa riêng của nút được giữ trong bộ đệm cục bộ, hàm tiện ích GenerateAndEncodeWeaveECDSASignature () có thể hữu ích để triển khai phương pháp 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ỉ.

Việ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 chứng chỉ của người ngang hàng. Nếu xác thực thành công, các validRes sẽ được đặt thành WEAVE_NO_ERROR. Trong trường hợp này, bối cảnh xác nhận sẽ chứa các chi tiết liên quan đến kết quả. Đặc biệt, trường TrustAnchor sẽ được đặt thành chứng chỉ neo tin cậy.

Nếu việc triển khai khởi tạo các trường CertValidationResults và CertValidationLen trong cấu trúc ValidationContext trong khi gọi BeginValidation () , 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 tập chứng chỉ.

Việc triển khai có thể ghi đè điều này bằng cách đặt các validRes thành một giá trị lỗi, do đó làm cho việc xác thực không thành công.

Nếu xác thực không thành công, các validRes sẽ phản ánh 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 các chứng chỉ ngang hàng đã được tải.

Việc triển khai có thể sử dụng lệnh gọi này để hoàn thiện các chứng chỉ đầu vào và các tiêu chí xác thực sẽ được sử dụng để thực hiện xác nhận chứng chỉ ngang hàng. Tại thời điểm cuộc gọi, các chứng chỉ do máy ngang hàng cung cấp sẽ được tải vào bộ chứng chỉ (bao gồm chứng chỉ của chính nó, 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 sử dụng để phân giải chứng chỉ ngang hàng từ tập chứng chỉ. Nếu ngang hàng cung cấp chứng chỉ của chính nó (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 được gọi này, các triển khai có thể sửa đổi nội dung của tập chứng chỉ, bao gồm cả việc thêm chứng chỉ mới. Chúng cũng có thể thay đổi các đối số subjectDN, subjectKeyId hoặc validCtx nếu cần. Quan trọng nhất, việc triển khai phải điều chỉnh các trường loại chứng chỉ với chứng chỉ được đặt trước khi quay lại để đảm bảo xử lý đúng chứng chỉ trong quá trình xác thực và kiểm tra kiểm soát truy cập tiếp theo.

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

Việc triển khai phương pháp này là tùy chọn. Việc thực hiện mặc định không có gì.