amagovpt / autenticacao.gov

Middleware Oficial de Identificação Eletrónica em Portugal - Cartão de Cidadão, da Chave Móvel Digital e Sistema de Certificação de atributos profissionais
https://www.autenticacao.gov.pt
European Union Public License 1.2
171 stars 33 forks source link

Obtenção da morada sem validar o pin através do popup #34

Closed BernardoPoiares closed 4 years ago

BernardoPoiares commented 4 years ago

Boa tarde,

Eu estou a tentar utilizar dinamicamente a dll pteidlib.dll para obter os dados do cartão de cidadão, nomeadamente a morada. Nas versões anteriores da dll, a mesma permitia obter a morada sem aparecer o popup de verificação do pin se anteriormente fosse chamada a função PTEID_VerifyPIN e validado com sucesso o pin. No entanto o mesmo já não acontece com as versões mais recentes. Existe alguma possibilidade de validar o pin sem o aparecimento do popup?

miguelblcfigueira commented 4 years ago

Boa tarde,

Sim, existe essa possiblidade. A função PTEID_VerifyPIN é de compatibilidade com o SDK antigo e deixou de suportar essa funcionalidade. Os novos métodos estão descritos no manual do SDK.

Para ler a morada sem aparecer o popup deve-se fazer da seguinte forma:

(...)
PTEID_Pins pins = card.getPins();
PTEID_Pin pin = pins.getPinByPinRef(PTEID_Pin.ADDR_PIN);
if (pin.verifyPin("0000", &triesLeft)){
    PTEID_Address &addr =  card.getAddr();
    const char * municipio =  addr.getMunicipality();
        (...)
}

Atenção para a chamada ao método verifyPin: se o PIN for passado no primeiro argumento, o popup não irá aparecer (documentado aqui).

Será adicionada uma nota ao manual do SDK sobre esta funcionalidade.