Giter Club home page Giter Club logo

rdsignatures's Introduction

RDSignatures

Assinatura de XML's com Cartão da Ordem e Cartão de Cidadão em C#

Possível:

  • Autenticação
  • Assinatura Digital

Instalar

Instalar via NuGet Gallery https://www.nuget.org/packages/RDSignatures/1.0.0?_src=template

  Install-Package RDSignatures -Version 1.0.0

Requer ainda de dois programas adicionais:

Cartão de Cidadão

Cartão da Ordem dos Médicos

Como utilizar

  1. Primeira Etapa
  • Necessário obter o certificado "pai" e "filho" para efetuar tanto a autenticação e assinatura

Exemplo Autenticação CC:

//obter o certificado de autenticacao "filho" através do nome que da pessoa, possível retornar NULL caso não encontre
X509Certificate2 certChildAutenticacaoCC = RDSignaturesClass.ReturnCertificate("EC de Autenticação do Cartão de Cidadão 0017", "RICARDO MANUEL PATRÍCIO SOARES");

//obter o certificado de autenticacao "pai" através do issuer name do certificado "filho"
X509Certificate2 certRootAutenticacaoCC = RDSignaturesClass.ReturnCertificate(certChildAutenticacaoCC.IssuerName.Name);

Exemplo Assinatura Digital CC:

//obter o certificado de assinatura "filho" através do nome que da pessoa, possível retornar NULL caso não encontre
X509Certificate2 certChildAssinaturaCC = RDSignaturesClass.ReturnCertificate("EC de Assinatura Digital Qualificada do Cartão de Cidadão 0017", "RICARDO MANUEL PATRÍCIO SOARES");

//obter o certificado de assinatura "pai" através do issuer name do certificado "filho"
X509Certificate2 certRootAssinaturaCC = RDSignaturesClass.ReturnCertificate(certChildAssinaturaCC.IssuerName.Name);

Exemplo Autenticação OM:

//obter o certificado de autenticacao "filho" através do nome que da pessoa, possível retornar NULL caso não encontre
X509Certificate2 certChildAutenticacaoOM = RDSignaturesClass.ReturnCertificate("MULTICERT Trust Services Certification Authority 002", "[Autenticação] (espécimen)");

//obter o certificado de autenticacao "pai" através do issuer name do certificado "filho"
X509Certificate2 certRootAutenticacaoOM = RDSignaturesClass.ReturnCertificate(certChildAutenticacaoOM.IssuerName.Name);

Exemplo Assinatura Digital OM:

//obter o certificado de assinatura "filho" através do nome que da pessoa, possível retornar NULL caso não encontre
X509Certificate2 certChildAssinaturaOM = RDSignaturesClass.ReturnCertificate("MULTICERT Trust Services Certification Authority 002", "[Assinatura Qualificada] (espécimen)");

//obter o certificado de assinatura "pai" através do issuer name do certificado "filho"
X509Certificate2 certRootAssinaturaOM = RDSignaturesClass.ReturnCertificate(certChildAutenticacaoOM.IssuerName.Name);
  1. Segunda Etapa
  • Necessário enviar o XML em string e os certificados obtidos na primeira etapa, necessário ainda enviar o tipo de CanonicalizationMethod e SignatureMethod

Exemplo:

//obter o SignedXml com os parametros necessarios para preencher um request
SignedXml xmlSignedObject = RDSignaturesClass.SignXmlFileWithCertificate(xml, certRootAutenticacaoCC, certChildAssinaturaCC, SignedXml.XmlDsigCanonicalizationWithCommentsUrl, SignedXml.XmlDsigRSASHA1Url);

Authors

🔗 Links

email

linkedin

github

rdsignatures's People

Contributors

ricardosoares97 avatar

Stargazers

 avatar

Watchers

 avatar

rdsignatures's Issues

Ordem dos certificados e resultado do Digestvalue

Olá @RicardoSoares97,

Desculpa abrir um ticket por causa disto, mas temo que estou prestes a rebentar com o SPMS e a forma deles responderem a qualquer pedido de ajuda.

Estou com algumas dificuldades em validar o XML e desesperadamente peço aqui algum input.

O nosso Digestvalue nunca coincide com o validador deles.

Dúvidas:

  • a assinatura é feita com base em todo o XML, desde a opening à closing tag, certo? E não apenas à porção da receita / prescrição.
  • os certificados que enviamos são o Autenticação Root e o Assinatura Child, certo? Ou devem ser ambos Assinatura?

SignedXml xmlSignedObject = RDSignaturesClass.SignXmlFileWithCertificate(xml, certRootAutenticacaoCC, certChildAssinaturaCC, SignedXml.XmlDsigCanonicalizationWithCommentsUrl, SignedXml.XmlDsigRSASHA1Url);

Obrigado desde já.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.