Jump to content

Assinatura digital PDF


Morfas3

Recommended Posts

Boa tarde,

Implementei a assinatura digital com chave móvel a uns anos, na altura era necessário cumprir uns certos requisitos para iniciar o desenvolvimento, por exemplo: necessário o registo e activação da chave móvel no ambiente de pré-produção da AMA.

Aconselho-te a entrares em contacto com a AMA para saber quais os passos a seguir.

Cumps.

Link to comment
Share on other sites

8 minutes ago, gatpereira said:

Boa tarde,

Implementei a assinatura digital com chave móvel a uns anos, na altura era necessário cumprir uns certos requisitos para iniciar o desenvolvimento, por exemplo: necessário o registo e activação da chave móvel no ambiente de pré-produção da AMA.

Aconselho-te a entrares em contacto com a AMA para saber quais os passos a seguir.

Cumps.

Boas, 

Obrigado pela resposta, eu ja estou a invocar o serviço deles, ja activei a chave movel, já assino e tudo.

O problema que me deparo é que o pdf aparece com erros a informar que foi alterado ou corrupto, o que me leva a querer que ou estou a construir mal o hash do documento que é enviado para eles, ou estou a inserir erradamente a assinatura no pdf ou entao eles estão a retornar mal a assinatura.

Mas estou mais inclinado para a 1º hipotese.

Link to comment
Share on other sites

12 minutes ago, IRlyDunno said:

Olá @Morfas3

Conseguiste ter algum sucesso neste projeto de assinatura com a CMD?
Seria possível partilhares como estas a invocar o serviço, ou onde tem a documentação para tal?
 

Consegui ter sucesso sim,

A invocação do serviço da ama não foi propriamente o problema, mas diz me onde tas a ter problema.

Eu usei o Itext7 para assinar o documento.

Link to comment
Share on other sites

bom dia,
estou a tentar implementar uma solução C# onde seja possivel assinar documento com base na chave movél digital (sem recurso ao CC).
no SDK disponibilizado não é possivel fazer isto sem um CC no leitor e a propria AMA já comunicou que essa funcionalidade não está dísponivel

Pelo que entendi @Morfas3 é que conseguiu alcançar com sucesso esta solução de assinatura  de documentos com CMD, é isso?
 

Link to comment
Share on other sites

Pois mas sem ter a documentação/wsdl dos serviços e credencias para acesso ao serviço, não consegue fazer nada.

O meu contacto com a ama foi a partir de um cliente para onde trabalhei. E sim eles também se queixaram do tempo de resposta.

Se calhar o que está a tentar usar é biblioteca que eles disponibilizam para conectar o cartão de cidadão ou estou errado? 

Link to comment
Share on other sites

Viva @reznor,

Também estou a encontrar alguns problemas com o itext..

Quando fazes 

SignDetached(IExternalSignature externalSignature, X509Certificate[] chain, ICollection<ICrlClient> crlList, IOcspClient ocspClient, ITSAClient tsaClient, int estimatedSize, CryptoStandard sigtype)

o "externalSignature" é a nossa hash assinada, a "chain" são os certificados de conta de assinatura e o "CryptoStandard sigtype" é igual a DigestAlgorithms.SHA256 ?
Isto é suficiente?

Link to comment
Share on other sites

têm de usar o singdeferred

using (PdfReader reader = new PdfReader("_nome_ficheiro"))
            {
                using (FileStream fileStream = new FileStream($"_nome_ficheiro_assinado_ouput", FileMode.Create))
                {
                    Org.BouncyCastle.X509.X509Certificate[] chain = this.getUserCertificateChain(userBasePath);
                    PdfSigner signer = new PdfSigner(reader, fileStream, new StampingProperties());
                    IExternalSignatureContainer external = new MyExternalcontainer(signature, chain.ToList());
                    PdfSigner.SignDeferred(signer.GetDocument(), Signature_Field_Name, fileStream, external);

                    fileStream.Close();
                    fileStream.Dispose();
                }
                reader.Close();
            }

 

  • Thanks 1
Link to comment
Share on other sites

Mas antes de aplicarem a assinatura no documento, no momento de  ir buscar o hash do documento têm de "desenhar" uma assinatura em branco no pdf isto para não terem o problema que tive que quando abria o pdf dizia me que a assinatura era inválida.

No myexternalContainer é preciso implementar este método

  public byte[] Sign(Stream inputStream)
        {
            PdfPKCS7 sgn = new PdfPKCS7(null, certificado.ToArray, "SHA256", false);
            sgn.SetExternalDigest(this.SignedHash, null, "RSA");
            return sgn.GetEncodedPKCS7();
        }

vou tentar perceber o que foi feito na assinatura em branco porque isso é um passo anterior de aplicar assinatura 

Link to comment
Share on other sites

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.