Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기
컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

nl::매트::프로필::보안::케이스::WeaveCASEAuthDelegate

이 클래스는 추상 클래스입니다.

#include <src/lib/profiles/security/WeaveCASE.h>

CASE 세션 설정 중에 인증 작업이 위임되는 추상 인터페이스입니다.

요약

상속

직접 알려진 서브클래스: nl::Weave::DeviceManager::WeaveDeviceManager

공개 함수

BeginValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual WEAVE_ERROR
인증서 유효성 검사 시작 시 호출됩니다.
EncodeNodeCertInfo(const BeginSessionContext & msgCtx, TLVWriter & writer)=0
virtual WEAVE_ERROR
로컬 노드의 CASE 인증서 정보를 인코딩합니다.
EncodeNodePayload(const BeginSessionContext & msgCtx, uint8_t *payloadBuf, uint16_t payloadBufSize, uint16_t & payloadLen)
virtual WEAVE_ERROR
CASE 메시지에 포함될 애플리케이션별 페이로드를 피어에 인코딩합니다.
EndValidation(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet)=0
virtual void
인증서 유효성 검사 종료 시 호출됩니다.
GenerateNodeSignature(const BeginSessionContext & msgCtx, const uint8_t *msgHash, uint8_t msgHashLen, TLVWriter & writer, uint64_t tag)=0
virtual WEAVE_ERROR
로컬 노드의 비공개 키를 사용하여 서명을 생성합니다.
HandleValidationResult(const BeginSessionContext & msgCtx, ValidationContext & validCtx, WeaveCertificateSet & certSet, WEAVE_ERROR & validRes)=0
virtual WEAVE_ERROR
인증서 유효성 검사의 결과로 호출됩니다.
OnPeerCertsLoaded(const BeginSessionContext & msgCtx, WeaveDN & subjectDN, CertificateKeyId & subjectKeyId, ValidationContext & validCtx, WeaveCertificateSet & certSet)
virtual WEAVE_ERROR
피어의 인증서가 로드된 후 호출됩니다.

공개 함수

Validate 검증

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

인증서 유효성 검사 시작 시 호출됩니다.

구현은 예정된 인증서 유효성 검사를 처리하기에 충분한 리소스로 제공된 WeaveCertificateSet 객체를 초기화해야 합니다. 이때 구현은 신뢰할 수 있는 루트 또는 CA 인증서를 인증서 세트에 로드하거나 OnPeerCertsLoaded()가 호출될 때까지 기다립니다.

인증서 세트에 로드된 각 인증서에는 로드 함수에 의해 기본 인증서 유형이 할당됩니다. 구현 시 유효성 검사를 하는 동안 인증서가 올바르게 처리되고 CASE 상호작용을 위해 WeaveAuthMode가 올바르게 할당되도록 필요에 따라 이러한 유형을 조정해야 합니다.

제공된 유효성 검사 컨텍스트는 필요에 따라 구현이 변경될 수 있는 기본 유효성 검사 기준 집합으로 초기화됩니다. 구현은 EffectiveTime 필드를 설정하거나 적절한 유효성 검사 플래그를 설정하여 인증서 전체 기간 유효성 검사를 억제해야 합니다.

자세한 유효성 검사 결과가 필요한 경우 구현 시 CertValidationResults 및 CertValidationLen 필드를 초기화할 수 있습니다.

해당하는 EndValidation()이 호출될 때까지 BeginValidation() 중에 할당된 리소스를 유지하려면 구현이 필요합니다. 구현 시 BeginValidation()이 호출될 때마다 EndValidation()이 정확히 한 번 호출됩니다.

인코딩 노드 인증서 정보

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

로컬 노드의 CASE 인증서 정보를 인코딩합니다.

구현에서는 이 호출을 사용하여 로컬 노드에 대한 CASE CertificateInformation 구조의 기본 인코딩을 재정의할 수 있습니다. 호출 시 구현은 최소한 로컬 노드의 엔티티 인증서를 포함하는 CertificateInformation 구조를 작성해야 합니다. 구현에는 선택적으로 관련 인증서 또는 트러스트 앵커 집합을 포함할 수 있습니다.

인코딩 노드 페이로드

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

CASE 메시지에 포함될 애플리케이션별 페이로드를 피어에 인코딩합니다.

이 메서드의 구현은 선택사항입니다. 기본 구현은 길이가 0인 페이로드를 반환합니다.

종료 확인

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

인증서 유효성 검사 종료 시 호출됩니다.

인증 검증이 완료되면 구현에서 이 호출을 사용하여 정리 작업을 실행할 수 있습니다. 구현 시 BeginValidation()이 호출될 때마다 EndValidation()이 정확히 한 번 호출됩니다.

GenerateNodeSignature

virtual WEAVE_ERROR GenerateNodeSignature(
  const BeginSessionContext & msgCtx,
  const uint8_t *msgHash,
  uint8_t msgHashLen,
  TLVWriter & writer,
  uint64_t tag
)=0

로컬 노드의 비공개 키를 사용하여 서명을 생성합니다.

이 메서드를 호출하면 구현이 노드의 비공개 키를 사용하여 지정된 해시 값에 대한 서명을 계산해야 합니다. 생성된 서명은 지정된 태그를 사용하여 제공된 TLV 쓰기에 CASE ECDSASignature 구조 형식으로 작성해야 합니다.

노드의 비공개 키가 로컬 버퍼에 보관된 경우 이 메서드를 구현하는 데 GenerateAndEncodeWeaveECDSASignature() 유틸리티 함수가 유용할 수 있습니다.

HandleValidationResult

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

인증서 유효성 검사의 결과로 호출됩니다.

구현에서는 이 호출을 사용하여 피어의 인증서 유효성 검사 결과를 검사하고 변경할 수도 있습니다. 유효성 검사에 성공하면 validRes가 WEAVE_NO_ERROR로 설정됩니다. 이 경우 유효성 검사 컨텍스트에 결과와 관련된 세부정보가 포함됩니다. 특히 TrustAnchor 필드는 트러스트 앵커 인증서로 설정됩니다.

구현이 BeginValidation() 호출 중에 ValidationContext 구조 내에서 CertValidationResults 및 CertValidationLen 필드를 초기화한 경우 이러한 필드에는 인증서 세트의 각 인증서에 대한 자세한 유효성 검사 결과가 포함됩니다.

구현 시 validRes를 오류 값으로 설정하여 이를 재정의할 수 있으며, 이로 인해 유효성 검사가 실패할 수 있습니다.

검증이 실패하면 validRes에 실패 이유가 반영됩니다. 구현 시 결과를 다른 오류 값으로 재정의할 수 있지만 결과를 WEAVE_NO_ERROR로 설정하면 안 됩니다(MUST NOT).

OnPeerCertsLoaded

virtual WEAVE_ERROR OnPeerCertsLoaded(
  const BeginSessionContext & msgCtx,
  WeaveDN & subjectDN,
  CertificateKeyId & subjectKeyId,
  ValidationContext & validCtx,
  WeaveCertificateSet & certSet
)

피어의 인증서가 로드된 후 호출됩니다.

구현은 이 호출을 사용하여 입력 인증서 및 피어 인증서의 유효성 검사를 수행하는 데 사용될 유효성 검사 기준을 확정할 수 있습니다. 호출 시 피어에서 제공한 인증서가 인증서 세트 (있는 경우 자체 인증서 포함)에 로드됩니다. 또한 subjectDN 및 subjectKeyId 인수는 인증서 집합에서 동종 앱의 인증서를 확인하는 데 사용되는 값으로 초기화되었습니다. 피어가 인증서 참조가 아닌 자체 인증서를 제공한 경우 validCtx 인수 내의 EntityCert 필드에 해당 인증서에 대한 포인터가 포함됩니다.

이 과정에서 구현은 새 인증서 추가를 포함하여 인증서 세트의 내용을 수정할 수 있습니다. 필요에 따라 subjectDN, subjectKeyId 또는 validCtx 인수를 변경할 수도 있습니다. 무엇보다도 구현은 유효성 검사와 후속 액세스 제어 확인 중에 인증서가 올바르게 처리되도록 반환 전에 인증서 세트로 인증서 유형 필드를 조정해야 합니다.

참고: 피어가 전체 인증서가 아니라 인증서 참조를 직접 제공하는 경우 유효성 검사 컨텍스트의 EntityCert 필드에는 NULL이 포함됩니다. 구현에서 인증서 참조를 지원하려면 피어의 주체 DN 및 키 ID와 일치하는 인증서를 반환하기 전에 인증서 세트에 추가해야 합니다.

이 메서드의 구현은 선택사항입니다. 기본 구현에서는 아무 작업도 하지 않습니다.