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 포함) |