nl::Weave::Profiles::Security::CASE::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
피어의 인증서가 로드된 후에 호출됩니다.

공개 함수

BeginValidation

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

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

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

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

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

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

구현은 해당하는 EndValidation()이 호출될 때까지 BeginValidation() 중에 할당된 리소스를 유지해야 합니다. EndValidation()BeginValidation() 호출이 성공할 때마다 정확히 한 번씩 호출됩니다.

EncodeNodeCertInfo

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

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

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

EncodeNodePayload

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

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

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

EndValidation

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

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

구현에서는 이 호출을 사용하여 인증 확인이 완료된 후 정리를 실행할 수 있습니다. EndValidation()BeginValidation() 호출이 성공할 때마다 정확히 한 번씩 호출됩니다.

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와 일치하는 인증서를 인증서 세트에 추가해야 합니다.

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