Compatibilidade com Portugal_eID_Middleware_v1.61.0

Mar 3, 2016 at 11:33 AM
Com o upgrade do middleware para a versão 1.61, lançado em Janeiro a propósito do windows 10, penso que se perdeu a compatibilidade com esta versão da eidpt.dll.
Comparei o ficheiro pteidlib.h da versão que ainda funcionava (v1.60) com o da última versão (v1.61) e verifiquei que na mais recente foram removidas algumas estruturas e enumerados que eram utilizados na eidpt.dll.

Já alguém se deparou com este problema?
Apr 1, 2016 at 2:56 PM
Sim, também me aconteceu o mesmo...
Tive de voltar a instalar a versão 1.60, para que tudo funcione.
Apr 12, 2016 at 2:46 PM
Edited Apr 12, 2016 at 3:55 PM
Estou com o mesmo problema. Também ocorre com o Windows 8.1. Acho que acontece com qualquer sistema operativo. O middleware deixou de funcionar com versão da eidpt.dll em versões posteriores à 1.60.

Alguém tem o setup da versão 1.60 do middleware ou sabe onde o posso arranjar ?

Queria instalar num PC Windows 10 e não encontro o setup dessa versão. No site do cartão de cidadão apenas está disponível a versão mais recente do setup.

Obrigado.
Apr 13, 2016 at 2:43 PM
Para contornar o problema, alterei o código fonte da eidpt, uma vez que temos acesso ao mesmo, deixando-o coerente com as bibliotecas que são instaladas na versão 1.61.
Basicamente, comentando/eliminando o código que está "a mais" na eidpt e compilando a nova dll, voltamos a ter compatibilidade (pelo menos no que eu necessito: leitura de dados gerais e morada).

Verifiquei que com essas alterações, quando temos a versão anterior (1.60) instalada, também funciona.

Espero que a dica tenha sido útil.

Obrigado.
Apr 15, 2016 at 9:24 AM
Seria possível indicar quais as alterações que é necessário fazer?
Tenho o código fonte mas não sei que alterações é necessário fazer.

Obrigado.
Apr 19, 2016 at 5:44 PM
Necessitei de alterar 2 ficheiros:
pteidlib.h
eidpt.cpp


No ficheiro eidpt.cpp alterar as seguintes funções:

long EIDPT::CAP_ChangeCapPin
CapPinChangeState EIDPT::CAP_GetCapPinChangeProgress()
void EIDPT::CAP_CancelCapPinChange()


para:
long EIDPT::CAP_ChangeCapPin(String^ server, array<Byte>^ serverCACertificate, ProxyInfo^ proxyInfo, String^ oldPin, String^ newPin)
{
    return 0;
}
CapPinChangeState EIDPT::CAP_GetCapPinChangeProgress()
{
    tCapPinChangeState state;
    return (CapPinChangeState)state;
}
void EIDPT::CAP_CancelCapPinChange()
{
}
Em pteidlib.h, mesmo no final do ficheiro comentar/apagar:
__
PTEIDLIB_API long PTEID_CAP_ChangeCapPin(........
PTEIDLIB_API tCapPinChangeState PTEID_CAP_GetCapPinChangeProgress();
PTEIDLIB_API void PTEID_CAP_SetCapPinChangeCallback(void(_USERENTRY * callback)(tCapPinChangeState state));
PTEIDLIB_API void PTEID_CAP_CancelCapPinChange();__




// -//-
Mar 22 at 11:01 PM
Ola Boa noite,

Acho que estou a ter o mesmo problema que descreveram. Ja fiz as alterações aqui indicadas, mas continua a não funcionar.
Será se alguem pode disponiblizar o seu código.

Obrigado,
Marcelo