Jump to content

Recommended Posts

Posted

Boa tarde.

Sei que já existem alguns tópicos com este assunto mas estou um pouco (muito) confuso.

Estou a desenvolver uma aplicação que terá de ter acesso à Autenticação do Cartão de Cidadão.

Já tenho o middleware instalado.

Inicialmente estava a tentar usar a eidpt.dll, mas dava-me erro de dependências.

Usando a pteidlib_dotnet.dll está a dar o erro "PTEID Error Code : 9" a fazer eidpt.Pteid.GetID().

Alguém me pode dar uma ajuda?

Obrigado.

  • 2 months later...
Posted (edited)

Já procurei nesses sites mas a informação que existe é datada. Vou expor o meu problema com código para que talvez seja mais fácil perceber a quem vê de fora.

Linguagem: C#

Framework: .NET 4

Sistema Operativo: Windows 10 x64

Build: 32bits

Classe de leitura do cartão (criei apenas para prova de conceito)


class CCReader
{
public void GetInfoFromCard()
{
var citizen = new Citizen();

try
{

EIDPT.Init("");
EIDPT.SetSODChecking(false);

var id = EIDPT.GetID();
var picture = EIDPT.GetPicture();
var ms = new MemoryStream(picture.Bytes, 0, picture.BytesLength, false);
//var image = CSJ2K.J2kImage.FromStream(ms);
//image.Save(@"fotos\" + id.NIF + ".jpeg");
ms.Close();

citizen.FirstName = id.FirstName;
citizen.LastName = id.Name;
citizen.FirstNameFather = id.FirstNameFather;
citizen.LastNameFather = id.NameFather;
citizen.FirstNameMother = id.FirstNameMother;
citizen.LastNameMother = id.NameMother;
//citizen.Name = Classes.Methods.UppercaseFirstLetter(id.FirstName) + " " + Classes.Methods.UppercaseFirstLetter(id.Name);
citizen.Sex = id.Sex;
citizen.Birthday = id.BirthDate;
citizen.ID = id.BI;
citizen.FatherName = id.FirstNameFather + " " + id.NameFather;
citizen.MotherName = id.FirstNameMother + " " + id.NameMother;
citizen.TaxNumber = id.NIF;
citizen.SocialSecurity = id.NSS;
//citizen.Photo = image;

// address
var address = EIDPT.GetAddress();
citizen.District = address.DistrictDescription;
citizen.Municipality = address.MunicipalityDescription;
citizen.CivilParish = address.FreguesiaDescription;
citizen.Address = address.StreetType + " " + address.Street + " Nº " + address.Door;
citizen.Locality = address.Locality;
citizen.Zip = address.CP4 + "-" + address.CP3 + " " + address.Postal;

EIDPT.Exit(ExitMode.LEAVE_CARD);
}
catch (Exception ex)
{
Console.WriteLine("Error reading data: " + ex.Message);
}
}
}

class Citizen
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string FirstNameFather { get; set; }
public string LastNameFather { get; set; }
public string FirstNameMother { get; set; }
public string LastNameMother { get; set; }
public string Name { get; set; }
public string Sex { get; set; }
public string Birthday { get; set; }
public string ID { get; set; }
public string FatherName { get; set; }
public string MotherName { get; set; }
public string TaxNumber { get; set; }
public string SocialSecurity { get; set; }
public string Photo { get; set; }

// address
public string District { get; set; }
public string Municipality { get; set; }
public string CivilParish { get; set; }
public string Address { get; set; }
public string Locality { get; set; }
public string Zip { get; set; }
}

AS dependências que adicionei ao projecto são:

eidpt.dll (fonte)

pteidlib_dotnet.dll (fonte)

O programa compila, mas ao arrancar obtenho este erro:

Não foi possível carregar o ficheiro ou assemblagem 'eidpt.dll' ou uma das respectivas dependências. Impossível localizar o módulo especificado.

Por sugestão de alguns comentários (inclusive neste forum) fiz download da ferramenta depends.exe e analisei o ficheiro eidpt.dll. O resultado foi uma serie de libs em falta para a lib referenciada pteidlib_dotnet.dll:

MSVCR120.DLL

KERNEL32.DLL

MSVCP120.DLL

MSCOREE.DLL

Alguém tem ideia de como meter o meu programa básico a correr? É preciso mais alguma lib específica?

Edited by rmpt
Posted (edited)

Ninguém responde nem reage, mas vou deixar a minha solução para o problema, já que afinal de contas é muito simples e poderá ser util para alguém no futuro...

Tecnologia: C#

SO: Windows 10

Versão .NET: 4

Còdigo fonte: aqui

Fontes: kitcc, svn.gov.pt, cartaodecidadao.pt

Para o desenvolvimento da minha aplicação estava a usar a DLL de instalação do middleware: pteidlib_dotnet.dll

Acontece que existem 2 instalações da mesma coisa, em sites diferentes... A que usei em primeiro lugar foi do svn.gov.pt. A aplicação instalada funciona bem, mas ao usar a dll em causa dá erro pois está desactualizada! Desinstalei o que tinha feito download de svn.gov.pt e instalei o middleware que se encontra em cartaodecidadao.pt e funcionou à primeira.

Ou seja, façam download de cartaodecidadao.pt e usem a dll pteidlib_dotnet.dll que é instalada em C:\Windows\System32.

Agora um desabafo: acho vergonhoso que não exista o raio de uma página onde estejam os conteúdos e passos necessários. A informação está em 3 páginas diferentes, com links mortos, documentos antigos e software desactualizado. Acho que não custava muito criar uma página única que fosse actualizada com passos simples tipo:

  1. Faça download da dll X
  2. Faça download do projecto de exemplo Y
  3. Referencie a dll no seu projecto
  4. Corra

Uma pessoa tem de andar à cabeçada e inventar soluções no meio de informação datada e dispersa e tem de deduzir conclusões para uma coisa que é modernização do país.

#Fim de desabafo

Espero que isto ajude alguém no futuro

Edited by rmpt
  • 3 weeks later...
  • 1 month later...
Posted

Olá, eu continuo com o problema...

SO é windows 8.1 Pro a 64 bit

.net framework 4.0 (tenho até à 4.6.1 instalado mas na aplicação estou a usar a 4)

Fonte aqui (código de vb.net) adaptada mas é basicamente o mesmo, retirei os controlos aos cartões e adicionei umas funções directas que abrem a ligação ao leitor trazem o nome/nif/... e fecham a ligação - algo muito simples.

Se adicionar um módulo à classe e as chamar dentro da mesma aplicação tudo corre bem. mas se gravar a classe como DLL e a referenciar noutra aplicação tenho um problema:

Citação

An unhandled exception of type 'System.IO.FileLoadException' occurred in testedll.exe

Additional information: Não foi possível carregar o ficheiro ou assemblagem 'pteidlib_dotnet, Version=1.0.5946.33561, Culture=neutral, PublicKeyToken=null' ou uma das respectivas dependências. É necessário uma assemblagem com nome seguro. (Excepção de HRESULT: 0x80131044)

A minha dll está a funcionar porque o retorno é a string de excepção que tenho no código mas ao tentar usar a função scCinit() (que usa a pteidlib_dotnet) tenho logo problemas

Alguém sabe como resolver isto? sou eu que estou a tentar inventar a roda?

Muito obrigada

Carla Faria

  • 10 months later...
  • 3 years later...
Posted

Muito bom dia a todos,

Estou a tentar desenvolver uma aplicação em C# para realizar a leitura dos dados do Cartão de Cidadão e surgiu o seguinte erro:

“Não é possível localizar um ponto de entrada com o nome ‘CSharp_PTEID_ReaderSet_initSDK__SWIG_1’ na DLL ‘pteidlibCS_Wrapper’ ??

Linguagem: C# - Visual Studio 2019.

Sistema Operativo: Windows 10 x64.

Alguém me pode ajudar? Obrigado!

  • 2 months later...
Posted
Em 22/05/2020 às 12:30, mamf disse:

Muito bom dia a todos,

Estou a tentar desenvolver uma aplicação em C# para realizar a leitura dos dados do Cartão de Cidadão e surgiu o seguinte erro:

“Não é possível localizar um ponto de entrada com o nome ‘CSharp_PTEID_ReaderSet_initSDK__SWIG_1’ na DLL ‘pteidlibCS_Wrapper’ ??

Linguagem: C# - Visual Studio 2019.

Sistema Operativo: Windows 10 x64.

Alguém me pode ajudar? Obrigado!

Boa tarde,

 

Alguém chegou a encontrar solução para este erro?

Obrigado

  • 1 year later...
Posted
Em 22/05/2020 às 12:30, mamf disse:

Muito bom dia a todos,

Estou a tentar desenvolver uma aplicação em C# para realizar a leitura dos dados do Cartão de Cidadão e surgiu o seguinte erro:

“Não é possível localizar um ponto de entrada com o nome ‘CSharp_PTEID_ReaderSet_initSDK__SWIG_1’ na DLL ‘pteidlibCS_Wrapper’ ??

Linguagem: C# - Visual Studio 2019.

Sistema Operativo: Windows 10 x64.

Alguém me pode ajudar? Obrigado!

Boa tarde, estou com o mesmo erro, alguém já desbloqueou .?..

  • 6 months later...
Posted

Bom dia a todos,

Estou a tentar arranjar forma de ler os dados de cartão de cidadão (morada, nif, cc, foto) através de um browser usando o PHP. Já pesquisei neste forum e no Google e encontro algumas coisas mas acabo por não conseguir encaixar tudo e criar uma solução que funcione.

Alguém já tentou e conseguiu fazer isso e pode-me ajudar? Eu pago o serviço a quem me ajudar ou me fizer isso, neste caso enviem MP.

Obrigado e melhores cumprs,

  • 10 months later...
Posted (edited)
Em 14/04/2022 às 10:10, Filipe Csota disse:

Bom dia a todos,

Estou a tentar arranjar forma de ler os dados de cartão de cidadão (morada, nif, cc, foto) através de um browser usando o PHP. Já pesquisei neste forum e no Google e encontro algumas coisas mas acabo por não conseguir encaixar tudo e criar uma solução que funcione.

Alguém já tentou e conseguiu fazer isso e pode-me ajudar? Eu pago o serviço a quem me ajudar ou me fizer isso, neste caso enviem MP.

Obrigado e melhores cumprs,

Olá,

se ainda for a tempo, experimenta esta: https://github.com/rmpt/citizen-card-reader/releases

Faz exatamente o que descreveste.

Edited by rmpt
  • 1 month later...
  • 1 year later...
Posted

Olá viva,

estou a tentar utilizar o plugin oficial Autenticao.gov com objectivo de extrair os dados do Cartão do Cidadão incluindo a morada.

O repositório não ajuda muito, alguém sabe se é possível utilizar o plugin para extrair os dados ?

A ferramenta de diagnóstico do plugin em http://127.0.0.1:35153/network indica que o plugin é no fundo um web server mas não encontro API.

Obrigado e cumprimentos

R.

Posted
On 7/5/2024 at 6:16 AM, Roedor said:

Olá viva,

estou a tentar utilizar o plugin oficial Autenticao.gov com objectivo de extrair os dados do Cartão do Cidadão incluindo a morada.

O repositório não ajuda muito, alguém sabe se é possível utilizar o plugin para extrair os dados ?

A ferramenta de diagnóstico do plugin em http://127.0.0.1:35153/network indica que o plugin é no fundo um web server mas não encontro API.

Obrigado e cumprimentos

R.

Tentei contactar a AMA para ver se esclarecem. Enviaram documentação mas penso que não é o que estou a tentar obter com o Plugin.

Alguém usa o Plugin Autenticação.Gov ?

Obrigado e cumprimentos,

R. 

Posted
On 4/28/2023 at 11:04 AM, herberto said:

Alguém tem informações como ler os dados nome, norada do CC em PHP- Obrigada

o @rmpt tem um que lança um servidor em java na port 8080, mas penso que não lê os dados da Morada.

  • 3 months later...
Posted (edited)
On 7/9/2024 at 7:43 PM, Roedor said:

o @rmpt tem um que lança um servidor em java na port 8080, mas penso que não lê os dados da Morada.

On 10/28/2024 at 6:19 PM, Roedor said:

@rmpt consegues por favor confirmar se a tua versão lê os dados da morada ?

Já tentei contactar o @rmpt no github mas sem sucesso, o meu problema é outro: a velocidade da leitura do cartão de cidadão. Basicamente o cartão é lido após 10s, mas já verifiquei que não é uma anomalia da solução do @rmpt, desenvolvida em Java. Fiz uma em python e C# e o resultado é o mesmo.

Já testei 3 leitores de cartões diferentes (de valor € baixo) e o resultado é o mesmo: 10 ou mais segundos para ler a informação do cartão. Aliás, se utilizar a App do Gov (Windows) e inserir o cartão, demora na mesma 10s para apresentar a informação. Mas o @rmpt chegou-me a dizer que o cartão dele era lido em 1/2 segundos e gostava de saber com que leitor de cartões..

Edited by bioshock
Posted
On 10/30/2024 at 3:12 PM, bioshock said:

Já tentei contactar o @rmpt no github mas sem sucesso, o meu problema é outro: a velocidade da leitura do cartão de cidadão. Basicamente o cartão é lido após 10s, mas já verifiquei que não é uma anomalia da solução do @rmpt, desenvolvida em Java. Fiz uma em python e C# e o resultado é o mesmo.

Já testei 3 leitores de cartões diferentes (de valor € baixo) e o resultado é o mesmo: 10 ou mais segundos para ler a informação do cartão. Aliás, se utilizar a App do Gov (Windows) e inserir o cartão, demora na mesma 10s para apresentar a informação. Mas o @rmpt chegou-me a dizer que o cartão dele era lido em 1/2 segundos e gostava de saber com que leitor de cartões..

interessante, tanto tempo de diferença não deveria mesmo ser da app mas sim da leitura no cartão. Os smartcards são geralmente lentos. Será que os dados do @rmpt estavam em cache, para ser tão rápido ?

Acabei de testar em MacOS na app oficial Autenticaçao.Gov, com o leitor da Ewent EW1052 e demorou cerca de 9 segundos para ler os dados do cartão, e depois cerca de 6 segundos após inserir o PIN da Morada.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.