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.

nl :: Dệt :: Hồ sơ :: Bảo vệ:: TÌNH HUỐNG :: 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à hành động xác thực được giao trong TRƯỜNG HỢP lập phiên.

Tóm lược

Di sản

Chỉ đạo lớp con biết: 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 TRƯỜNG HỢP Thông tin Giấy chứng nhận cho nút địa phương.
EncodeNodePayload (const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen)
virtual WEAVE_ERROR
Mã hóa một tải trọng ứng dụng cụ thể để được bao gồm trong TRƯỜNG HỢP thông điệp tới đồng đẳng.
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ỉ.

Triển khai phải khởi tạo đã cung cấp WeaveCertificateSet đối tượng có đủ nguồn lực để xử lý các xác nhận giấy chứng nhận sắp tới. Tại thời điểm này Triển khai có thể tải gốc đáng tin cậy hoặc chứng chỉ CA vào tập giấy chứng nhận, 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. Triển khai nên điều chỉnh các loại nếu cần thiết để đảm bảo việc điều trị chính xác của các giấy chứng nhận trong xác nhận, và sự phân công đúng WeaveAuthMode cho TRƯỜNG HỢP tương tác.

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.

Triển khai được yêu cầu phải duy trì bất kỳ nguồn lực phân bổ trong BeginValidation () cho đến khi tương ứng EndValidation () được gọi được thực hiện. Triển khai được đảm bảo rằng EndValidation () sẽ được gọi đúng một lần cho mỗi cuộc gọi thành công đến BeginValidation () .

EncodeNodeCertInfo

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

Mã hóa TRƯỜNG HỢP Thông tin Giấy chứng nhận cho nút địa phương.

Triển khai có thể sử dụng cuộc gọi này để ghi đè mã hóa mặc định của TRƯỜNG HỢP cấu trúc CertificateInformation cho nút địa phương. 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 một tải trọng ứng dụng cụ thể để được bao gồm trong TRƯỜNG HỢP thông điệp tới đồng đẳng.

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. Triển khai được đảm bảo rằng EndValidation () sẽ được gọi đúng một lần cho mỗi cuộc 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 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. Chữ ký được tạo ra sau đó nên được viết dưới dạng một TRƯỜNG HỢP cấu trúc ECDSASignature để được cung cấp TLV viết sử dụng thẻ theo quy định.

Trong trường hợp khóa riêng của nút được tổ chức trong một bộ đệm địa phương, GenerateAndEncodeWeaveECDSASignature () chức năng tiện ích có thể hữu ích cho việc thực hiện 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 thực hiện khởi tạo các CertValidationResults và các lĩnh vực CertValidationLen trong ValidationContext cấu trúc trong BeginValidation () được gọi, sau đó các trường này sẽ chứa kết quả xác nhận chi tiết cho từng giấy chứng nhận 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, 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ó (thay vì 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, việ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ì.