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
164 stars 33 forks source link

Assinatura com certificado digital em MAC #158

Open nsemedo opened 5 months ago

nsemedo commented 5 months ago

Estamos a criar um executável em Mac que recebe um PDF, invoca a vossa API de assinatura e devolve o PDF devidamente assinado.

Estamos a usar código que já funcionou. Contudo, neste momento, deixou de funcionar ao tentarmos compilar num Mac mais recente.

Estamos a usar um Mac com CPU Apple Silicon M2 (testámos também num M1) e a compilação, que antes funcionava, reclama que a vossa biblioteca é x86_64 e não arm64. Como tal não permite usar. Mesmo quando se altera o target da compilação para x86_64. Dá um erro ao importar a lib libpteidlib.dylib ignorando-a.

Instalei a versão mais recente do Autenticação.gov.pt e fui buscar a biblioteca e os headers à pasta de instaação, como detalhado no vosso documento no github (https://amagovpt.github.io/docs.autenticacao.gov/manual_sdk.html):

image

Vocês têm alguma versão desta biblioteca para Apple silicon ou um exemplo funcional em C++ para Mac que permita receber um PDF, invocar a assinatura e devolva o PDF assinado? Vi vários exemplos neste site mas o problema é o mesmo (reclama da biblioteca).

Tentámos compilar tanto por linha de comandos como através de um projeto no Xcode. Ambos com o mesmo resultado.

Tragio commented 5 months ago

Pelos vistos isto está ligado a esta issue: https://github.com/amagovpt/autenticacao.gov/issues/107

Também estou à procura de uma solução 🤔

agrr commented 5 months ago

Boa tarde @nsemedo devo esclarecer duas questões aqui:

  1. O SDK da versão atualmente publicada (3.11.0) tem apenas bibliotecas x86_64, por isso utilizando Macs com processador Apple Sillicon, é necessário usar a flag -arch x86_64 nos comandos de compilação e linkagem. Esta insuficiência será resolvida na próxima release 3.12.0 tal como referimos no issue #107.

  2. Existe um bug em particular na libpteidlib.dylibque está incluida na release 3.11.0. O atributo LC_ID_DYLIB da biblioteca não está bem definido o que obriga o utilizador da mesma a especificar o caminho completo para o dynamic loader a conseguir carregar. Para utilizar esta versão do SDK em MacOS deve ser corrigida a referência para a biblioteca na vossa aplicação com um comando deste género: install_name_tool -change libpteidlib.2.dylib /usr/local/lib/libpteidlib.2.dylib NOME_DA_APLICACAO Na versão 3.12.0 do SDK este workaround no processo de desenvolvimento deixará de ser necessário.

nsemedo commented 4 months ago

Boa tarde @agrr ,

existe alguma previsão para o lançamento da versão 3.12.0?

agrr commented 4 months ago

Boa tarde, já está disponível a versão 3.12.0 em pré-release:

https://github.com/amagovpt/autenticacao.gov/releases/tag/v3.12.0