다음을 통해 공유


PIBIO_ENGINE_IDENTIFY_FEATURE_SET_SECURE_FN 콜백 함수(winbio_adapter.h)

Windows 생체 인식 프레임워크에서 호출하여 현재 기능 집합에서 템플릿을 빌드하고 데이터베이스에서 일치하는 템플릿을 찾습니다. 일치하는 항목을 찾을 수 있는 경우 엔진 어댑터는 ID, 하위팩터, 권한 부여AuthorizationSize 필드를 채워야 합니다.

구문

PIBIO_ENGINE_IDENTIFY_FEATURE_SET_SECURE_FN PibioEngineIdentifyFeatureSetSecureFn;

HRESULT PibioEngineIdentifyFeatureSetSecureFn(
  PWINBIO_PIPELINE Pipeline,
  const UCHAR *Nonce,
  SIZE_T NonceSize,
  const UCHAR *KeyIdentifier,
  SIZE_T KeyIdentifierSize,
  PWINBIO_IDENTITY Identity,
  PWINBIO_BIOMETRIC_SUBTYPE SubFactor,
  PWINBIO_REJECT_DETAIL RejectDetail,
  PUCHAR *Authorization,
  PSIZE_T AuthorizationSize
)
{...}

매개 변수

Pipeline

작업을 수행하는 생체 인식 단위와 연결된 WINBIO_PIPELINE 구조체에 대한 포인터입니다.

Nonce

nonce를 포함하는 버퍼에 대한 포인터입니다.

NonceSize

Nonce 매개 변수로 지정된 버퍼의 크기(바이트)입니다.

KeyIdentifier

EngineAdapterCreateKey에 대한 이전 호출의 키 식별자가 포함된 버퍼에 대한 포인터

KeyIdentifierSize

KeyIdentifier 매개 변수에 지정된 버퍼의 크기(바이트)입니다.

Identity

데이터베이스에서 복구된 템플릿의 SID를 포함하는 WINBIO_IDENTITY 구조체에 대한 포인터입니다. 이 값은 일치하는 항목이 있는 경우에만 반환됩니다.

SubFactor

RejectDetail

캡처 실패로 인해 엔진이 일치하는 작업을 수행할 수 없는 경우 추가 정보를 수신하는 변수에 대한 포인터입니다. 가장 최근 캡처가 성공하면 이 매개 변수를 0으로 설정합니다.

Authorization

HMAC입니다. 설명 섹션을 참조하세요.

AuthorizationSize

Authorization 매개 변수에 지정된 버퍼의 크기(바이트)입니다.

반환 값

어떤 이유로든 키를 사용할 수 없는 경우 WINBIO_E_INVALID_KEY_IDENTIFIER 반환되어야 합니다. WINBIO_E_INVALID_KEY_IDENTIFIER 반환되면 센서와 TPM이 다시 프로비전됩니다.

설명

권한 부여 버퍼에는 다음 SHA256_HMAC 포함됩니다.

SHA256_HMAC(Key, SHA256(Nonce || 0xffffffe2 || SHA256(AccountSid))

  • 키는 EngineAdapterCreateKey에서 전달되고 KeyIdentifier 매개 변수로 식별되는 HMAC 키입니다.

  • nonce

    Nonce는 Nonce 매개 변수입니다.

  • 0xffffffe2

    big-endian 형식의 32비트 부호 없는 정수입니다.

  • AccountSid

    Identity 매개 변수에서 참조하는 사용자의 계정 SID입니다. SID 바이트는 WINBIO_IDENTITY 구조체에서 가져올 수 있습니다.

예제

다음은 SHA256 HMAC 계산의 의사 코드 구현입니다.

// Hash the AccountSid.
    assert(Identity->Type == WINBIO_ID_TYPE_SID);
    hashHandle = CreateHash(SHA256_ALGORITHM);
    HashData(
        hashHandle, 
        Identity->Value.AccountSid.Data, 
        Identity->Value.AccountSid.Size);
    identityHash = FinishHash(hashHandle);

    // Hash the parameters.
    BYTE bytes[] = {0xff, 0xff, 0xff, 0xe2};
    hashHandle = CreateHash(SHA256_ALGORITHM);
    HashData(hashHandle, Nonce, NonceSize);
    HashData(hashHandle, bytes, sizeof(bytes));
    HashData(hashHandle, identityHash, SHA256_DIGEST_LENGTH);
    parameterHash = FinishHash(hashHandle);

    // Calculate the authorization HMAC
    key, keySize = GetKeyFromIdentifier(KeyIdentifier, KeyIdentifierSize);
    hashHandle = CreateHash(HMAC_SHA256_ALGORITHM, key, keySize);
    HashData(hashHandle, parameterHash, SHA256_DIGEST_LENGTH);
    authorization = FinishHash(hashHandle);

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 10 [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2016 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 winbio_adapter.h(Winbio_adapter.h 포함)