예제 #1
0
        public static java.security.cert.X509Certificate loadCertificate(string patchCerticate, string clave, out PrivateKey privatekey, out Provider provider)
        {
            java.security.cert.X509Certificate certificate = null;
            provider   = null;
            privatekey = null;

            //Cargar el certificado Digital
            KeyStore ks = KeyStore.getInstance("PKCS12");

            ks.load(new BufferedInputStream(new FileInputStream(patchCerticate)), clave.ToCharArray());
            IPKStoreManager storeManager = new KSStore(ks, new PassStoreKS(clave));
            //Cargar certificados
            List certificates = storeManager.getSignCertificates();

            if (certificates.size() > 0)
            {
                certificate = (java.security.cert.X509Certificate)certificates.get(1);

                //Obtener la clave privada asociada al certificado
                privatekey = storeManager.getPrivateKey(certificate);

                //Obtener el Proveedorde la criptografía
                provider = storeManager.getProvider(certificate);
            }

            return(certificate);
        }
예제 #2
0
        public static void firmar(string Archivo)
        {
            string     path = @"C:\Firma\fabricio_fortunato_mero_mosquera.p12";
            PrivateKey privatekey;
            Provider   provider;

            java.security.cert.X509Certificate certificate = LayerLogic.ClassLibrary.Complementos.Firmar.loadCertificate(path, "FFmm_1978", out privatekey, out provider);
            if (certificate != null)
            {
                //Creamos el documento a firmar
                DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                dbf.setNamespaceAware(true);
                DocumentBuilder db = dbf.newDocumentBuilder();

                //C#
                var    base64 = System.Convert.FromBase64String(Archivo);
                string bytes  = System.Text.Encoding.UTF8.GetString(base64);

                ByteArrayInputStream bs        = new ByteArrayInputStream(System.Text.Encoding.UTF8.GetBytes(bytes));
                Document             documento = dbf.newDocumentBuilder().parse(bs);
                //Creamos datos a firmar

                DataToSign dataToSign = new DataToSign();
                dataToSign.setXadesFormat(EnumFormatoFirma.XAdES_BES); //XAdES-EPES
                dataToSign.setAddPolicy(false);
                dataToSign.setXMLEncoding(encoding);
                dataToSign.setEnveloped(true);
                dataToSign.addObject(new ObjectToSign(new InternObjectToSign(nodoFirma), "comprobante", null, "text/xml", null));
                dataToSign.setParentSignNode(nodoFirma);
                //dataToSign.setDocument(LoadXML(NombreArchivo));
                dataToSign.setDocument(documento);

                //Firmar
                Object[] res = new FirmaXML().signFile(certificate, dataToSign, privatekey, provider);

                Document doc = (Document)res[0];
                //Transformar a string
                org.w3c.dom.ls.DOMImplementationLS domImplementation = (org.w3c.dom.ls.DOMImplementationLS)doc.getImplementation();
                org.w3c.dom.ls.LSSerializer        lsSerializer      = domImplementation.createLSSerializer();
                Archivo = lsSerializer.writeToString(doc).Replace("UTF-16", "UTF-8");

                //C#

                var    ArchivoFirmado = Encoding.UTF8.GetBytes(Archivo);
                string firmado        = Convert.ToBase64String(ArchivoFirmado);

                var    base642 = System.Convert.FromBase64String(firmado);
                string bytes2  = System.Text.Encoding.UTF8.GetString(base642);
            }
        }
        public __X509Certificate2(byte[] rawData)
        {
            try
            {
                var certFactory = CertificateFactory.getInstance("X.509");

                InputStream ins = new ByteArrayInputStream((sbyte[])(object)rawData);

                this.InternalElement = (X509Certificate)certFactory.generateCertificate(ins);
            }
            catch
            {
                throw;
            }
        }
 public static X509Certificate2 ConvertCertificate(X509Certificate certificate)
 {
     return(new X509Certificate2(certificate.getEncoded()));
 }
예제 #5
0
 public void checkServerTrusted(X509Certificate[] arg0, String arg1) { }
예제 #6
0
 public void checkClientTrusted(X509Certificate[] arg0, String arg1) { }
예제 #7
0
 public char[] getPassword(X509Certificate certificate, string alias)
 {
     return _password.ToCharArray();
 }
예제 #8
0
        public static string Firmalo(string pathCertificado, string password, string sRutaXml, string RutaXmlFirmado, string PathServer)
        {
            sRutaXml = sRutaXml.Trim();
            string result = "";

            if (sRutaXml.Length == 0)
            {
                result = "Por favor indique la ruta al XML";
                return(result);
            }
            if (!System.IO.File.Exists(sRutaXml))
            {
                result = "No existe el archivo XML especificado";
                return(result);
            }
            //My.Settings.Save()
            java.security.PrivateKey privateKey = null;
            Provider provider = null;
            //muestra el selector de Windows
            Certificado cer = new Certificado();

            java.security.cert.X509Certificate certificate = Certificado.LoadCertificate(pathCertificado, password, ref privateKey, ref provider);
            if (certificate == null)
            {
                result = "Seleccione un certificado";
                return(result);
            }

            if (certificate != null)
            {
                //Política de firma (Con las librerías JAVA, esto se define en tiempo de ejecución)
                TrustFactory.instance             = es.mityc.javasign.trust.TrustExtendFactory.newInstance();
                TrustFactory.truster              = es.mityc.javasign.trust.MyPropsTruster.getInstance();
                PoliciesManager.POLICY_SIGN       = new es.mityc.javasign.xml.xades.policy.facturae.Facturae31Manager();
                PoliciesManager.POLICY_VALIDATION = new es.mityc.javasign.xml.xades.policy.facturae.Facturae31Manager();

                //Crear datos a firmar
                DataToSign dataToSign = new DataToSign();
                dataToSign.setXadesFormat(EnumFormatoFirma.XAdES_BES);
                //XAdES-EPES
                dataToSign.setEsquema(XAdESSchemas.XAdES_132);
                dataToSign.setPolicyKey("facturae31");
                //Da igual lo que pongamos aquí, la política de firma se define arriba
                dataToSign.setAddPolicy(true);
                dataToSign.setXMLEncoding("UTF-8");
                dataToSign.setEnveloped(true);
                dataToSign.addObject(new ObjectToSign(new InternObjectToSign("comprobante"), "powered by Tech Link", null, "text/xml", null));
                dataToSign.setDocument(LoadXML(sRutaXml));

                //Firmar
                object[] res = new es.mityc.firmaJava.libreria.xades.FirmaXML().signFile(certificate, dataToSign, privateKey, provider);

                //var PathServer = @"C:\Users\Public\Documents\ArchivosXml";
                //Copiamos el archivo en la direccion correspondiente
                if (!Directory.Exists(PathServer + @"\Firmados\"))
                {
                    Directory.CreateDirectory(PathServer + @"\Firmados\");
                }


                System.IO.File.Copy(sRutaXml, RutaXmlFirmado, true);

                // Guardamos la firma a un fichero

                sRutaXml = RutaXmlFirmado;

                //Modificamos
                FileOutputStream fos = new FileOutputStream(sRutaXml);
                UtilidadTratarNodo.saveDocumentToOutputStream(((Document)res[0]), fos, true);
                fos.close();
            }
            return(result);
        }