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 hành động 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
Các lớp con trực tiếp đã biết: 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á CASE Thông tin chứng chỉ cho nút cục bộ.
|
EncodeNodePayload(const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen)
|
virtual WEAVE_ERROR
Mã hoá tải trọng dành riêng cho ứng dụng để đưa vào thông báo CASE cho máy ngang hàng.
|
EndValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
|
virtual void
Được gọi khi kết thúc quy 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ỉ.
Quá trình triển khai phải khởi chạy đố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, 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 tập hợp chứng chỉ sẽ được hàm tải chỉ định một loại chứng chỉ mặc định. Các hoạt động triển khai nên điều chỉnh các loại này nếu cần để đảm bảo xử lý chính xác chứng chỉ 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 được cung cấp sẽ được khởi tạo bằng một tập hợp các tiêu chí xác thực mặc định mà 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 thích hợp để ngăn chặn việc xác thực thời gian hoạt động 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 CertValidationResults và CertValidationLen.
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 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 BeginValidation() thành công.
EncodeNodeCertInfo
virtual WEAVE_ERROR EncodeNodeCertInfo( const BeginSessionContext & msgCtx, TLVWriter & writer )=0
Mã hoá CASE Thông tin chứng chỉ 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 đè cách 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 sẽ ghi cấu trúc CertificateInformation chứa ít nhất 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ỉ 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á tải trọng dành riêng cho ứng dụng để đưa vào thông báo CASE cho máy 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ề 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 quy trình 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 để 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 đúng 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 phương thức triển khai phải tính toán chữ ký trên giá trị băm đã cho bằng khoá riêng tư của nút. Sau đó, chữ ký được tạo sẽ được viết dưới dạng cấu trúc ECDSASignature CASE vào TLV được cung cấp bằng cách sử dụ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 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 TrustAnchor 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 CertValidationResults và CertValidationLen trong cấu trúc ValidationContext trong lệnh 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 hợp chứng chỉ.
Các hoạt động triển khai có thể ghi đè điều 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 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 phương thứ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 tải chứng chỉ của máy ngang hàng.
Các hoạt động triển khai có thể sử dụng lệnh gọi này để hoàn tất các chứng chỉ đầu vào và tiêu chí xác thực sẽ được dùng để xác thực chứng chỉ của đối tác. Tại thời điểm gọi, các chứng chỉ do máy ngang hàng cung cấp sẽ được tải vào tập hợp chứng chỉ (bao gồm cả chứng chỉ của chính máy ngang hàng đó, 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 máy ngang hàng từ tập hợp chứng chỉ. Nếu máy ngang cung cấp chứng chỉ của riêng mình (thay vì tham chiếu chứng chỉ), thì trường EntityCert trong đối số validCtx sẽ chứa con trỏ đến chứng chỉ đó.
Trong lệnh gọi này, các hoạt động triển khai có thể sửa đổi nội dung của tập hợp chứng chỉ, bao gồm cả việc thêm chứng chỉ mới. Các hàm này cũng có thể thay đổi đối số subjectDN, subjectKeyId hoặc validCtx nếu cần. Quan trọng nhất, quá trình triển khai phải điều chỉnh các trường loại chứng chỉ bằng bộ chứng chỉ trước khi trả về để đả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 bước 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 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ới nhóm chứng chỉ trước khi trả về.
Bạn không bắt buộc phải triển khai phương thức này. Việc triển khai mặc định không làm gì cả.