De fato.. pois não há tratamento para o erro "80100004"..
Não posso simplesmente, comentar a Linha, como sugerido... isso faria o ACBr ignorar todos os erros...
Os erros precisam ser compreendidos e tratados...
Por favor seja mais específico... Observe que essa sub-procedure "CheckPINError", é chamada em 3 locais. Qual é exatamente a chamada, que originou o problema...
if dwKeySpec = CERT_NCRYPT_KEY_SPEC then
begin
if not GetCNGProviderIsHardware(ProviderOrKeyHandle) then
Exit;
Ret := NCryptSetProperty( ProviderOrKeyHandle, // Não testado...
NCRYPT_PIN_PROPERTY,
PBYTE(APass),
Length(APass)+1, 0);
CheckPINError(Ret); // AQUI ?
end
else
begin
if not GetCSPProviderIsHardware(ProviderOrKeyHandle) then
Exit;
if CryptSetProvParam(ProviderOrKeyHandle, PP_KEYEXCHANGE_PIN, PBYTE(APass), 0) then
CheckPINError(); // AQUI ?
if not CryptSetProvParam(ProviderOrKeyHandle, PP_SIGNATURE_PIN, PBYTE(APass), 0) then
CheckPINError(); // OU AQUI ?
end;