コード例 #1
0
        public void SimpleWnioDokument()
        {
            // arrange
            var dokument = new Dokument();

            dokument.Opis.Data.Czas.Wartosc = "2020-01-01";

            dokument.Dane.Naglowek.Nazwa.Wartosc = "test.pdf";
            dokument.Dane.Data.Czas.Wartosc      = "2020-01-01";

            dokument.Tresc.Zalaczniki = new Zalacznik[]
            {
                new Zalacznik()
                {
                    Format         = "application/pdf",
                    DaneZalacznika = new DaneZalacznika()
                    {
                        Zawartosc = File.ReadAllBytes("test.pdf")
                    }
                }
            };

            // act
            var xml = dokument.ToXmlDocument();

            // assert
            Assert.IsNotNull(xml);
            Assert.IsTrue(xml.OuterXml.Length > 0);
        }
コード例 #2
0
        static void Main(string[] args)
        {
            try
            {
                // arrange
                var xml  = File.ReadAllText("test.xml", Encoding.UTF8);
                var pdf  = File.ReadAllBytes("test.pdf");
                var cert = Program.Certificate;
                if (cert == null)
                {
                    Console.WriteLine("No certificate selected.");
                    Environment.Exit(0);
                }

                var dokument = new Dokument();

                dokument.Opis.Data.Czas.Wartosc = DateTime.Now.ToString("o");

                dokument.Dane.Data.Czas.Wartosc = DateTime.Now.ToString("yyyy-MM-dd");

                dokument.Dane.Adresaci.Podmiot.Osoba          = new Osoba();
                dokument.Dane.Adresaci.Podmiot.Osoba.Nazwisko = "Kowalski";
                dokument.Dane.Adresaci.Podmiot.Osoba.Imie     = "Jan";

                dokument.Dane.Nadawcy.Podmiot.Instytucja = new Instytucja();
                dokument.Dane.Nadawcy.Podmiot.Instytucja.NazwaInstytucji   = "Urząd miasta Widliszki Wielkie";
                dokument.Dane.Nadawcy.Podmiot.Instytucja.Adres.Miejscowosc = "Widliszki Wielkie";
                dokument.Dane.Nadawcy.Podmiot.Instytucja.Adres.Ulica       = "Kwiatowa";
                dokument.Dane.Nadawcy.Podmiot.Instytucja.Adres.Budynek     = "1-8";
                dokument.Dane.Nadawcy.Podmiot.Instytucja.Adres.Poczta      = "11-110";

                dokument.Tresc.MiejscowoscDokumentu = "Widliszki Wielkie";
                dokument.Tresc.Tytul = "Zawiadomienie w sprawie 1234/2019";
                dokument.Tresc.RodzajWnioskuRozszerzony.JakisInny = "inne pismo";
                dokument.Tresc.RodzajWnioskuRozszerzony.Rodzaj    = "zawiadomienie";
                dokument.Tresc.Informacje = new Informacja[]
                {
                    new Informacja()
                    {
                        Wartosc = "Ala ma kota"
                    },
                    new Informacja()
                    {
                        Wartosc = "Basia ma wózek widłowy"
                    }
                };
                dokument.Tresc.Zalaczniki = new Zalacznik[]
                {
                    new Zalacznik()
                    {
                        Format         = "application/octet-stream",
                        NazwaPliku     = "test.pdf",
                        DaneZalacznika = new DaneZalacznika()
                        {
                            Zawartosc = pdf
                        }
                    }
                };
                // act

                var namespaces = new XmlSerializerNamespaces();
                //namespaces.Add("", ePUAP.Client.Constants.Namespaces.WNIO_PODPISANYDOKUMENT);
                namespaces.Add("wnio", ePUAP.Client.Constants.Namespaces.CRD_WNIO);
                namespaces.Add("meta", ePUAP.Client.Constants.Namespaces.CRD_META);
                namespaces.Add("str", ePUAP.Client.Constants.Namespaces.CRD_STR);
                namespaces.Add("adr", ePUAP.Client.Constants.Namespaces.CRD_ADR);
                namespaces.Add("oso", ePUAP.Client.Constants.Namespaces.CRD_OSO);
                namespaces.Add("inst", ePUAP.Client.Constants.Namespaces.CRD_INST);

                // wnio:Dokument
                var document = dokument.ToXmlDocument(namespaces);
                var pi       = document.CreateProcessingInstruction(
                    "xml-stylesheet",
                    "type=\"text/xsl\" href=\"http://crd.gov.pl/wzor/2013/12/12/1410/styl.xsl\"");
                document.InsertAfter(pi, document.FirstChild);
                //var document = new XmlDocument();
                //document.LoadXml(xml);

                var signed     = new XAdESBESSigner().Sign(document, cert);
                var signedName = string.Format("test.{0}.xml", DateTime.Now.Ticks);
                if (signed != null)
                {
                    // save signed document without BOM
                    File.WriteAllText(signedName, document.OuterXml, new UTF8Encoding(false));
                }

                Console.WriteLine("signed.");

                // verification
                var signedXml            = new SignedXml(document);
                var messageSignatureNode = document.GetElementsByTagName("Signature")[0];

                signedXml.LoadXml((XmlElement)messageSignatureNode);

                // check the signature and return the result.
                var verification = signedXml.CheckSignature(cert, true);
                Console.WriteLine("Verification: {0}", verification);

                // transformation
                using (var xmlReader = new StreamReader(signedName, new UTF8Encoding(false)))
                {
                    var xPathDoc = new XPathDocument(xmlReader);
                    var xslTrans = new XslCompiledTransform();
                    xslTrans.Load("http://crd.gov.pl/wzor/2013/12/12/1410/styl.xsl");
                    using (var writer = new XmlTextWriter(string.Format("result.{0}.html", DateTime.Now.Ticks), null))
                    {
                        xslTrans.Transform(xPathDoc, null, writer);
                        writer.Flush();
                    }
                }
            }
            catch (Exception ex)
            {
                while (ex != null)
                {
                    Console.WriteLine(ex.Message);
                    ex = ex.InnerException;
                }
            }

            Console.ReadLine();
        }
コード例 #3
0
        /// <summary>
        /// ExternalUploadServlet
        /// </summary>
        /// <returns></returns>
        public ActionResult ExternalUploadServlet()
        {
            var model = new ExternalUploadServletModel();

            // https://stackoverflow.com/questions/17279712/what-is-the-smallest-possible-valid-pdf
            var pdf = Convert.FromBase64String("JVBERi0xLg10cmFpbGVyPDwvUm9vdDw8L1BhZ2VzPDwvS2lkc1s8PC9NZWRpYUJveFswIDAgMyAzXT4+XT4+Pj4+Pg==");

            var dokument = new Dokument();

            dokument.Opis.Data.Czas.Wartosc = DateTime.Now.ToString("o");

            dokument.Dane.Data.Czas.Wartosc = DateTime.Now.ToString("yyyy-MM-dd");

            dokument.Dane.Adresaci.Podmiot.Osoba          = new Osoba();
            dokument.Dane.Adresaci.Podmiot.Osoba.Nazwisko = "Kowalski";
            dokument.Dane.Adresaci.Podmiot.Osoba.Imie     = "Jan";

            dokument.Dane.Nadawcy.Podmiot.Instytucja = new Instytucja();
            dokument.Dane.Nadawcy.Podmiot.Instytucja.NazwaInstytucji   = "Urząd miasta Widliszki Wielkie";
            dokument.Dane.Nadawcy.Podmiot.Instytucja.Adres.Miejscowosc = "Widliszki Wielkie";
            dokument.Dane.Nadawcy.Podmiot.Instytucja.Adres.Ulica       = "Kwiatowa";
            dokument.Dane.Nadawcy.Podmiot.Instytucja.Adres.Budynek     = "1-8";
            dokument.Dane.Nadawcy.Podmiot.Instytucja.Adres.Poczta      = "11-110";

            dokument.Tresc.MiejscowoscDokumentu = "Widliszki Wielkie";
            dokument.Tresc.Tytul = "Zawiadomienie w sprawie 1234/2019";
            dokument.Tresc.RodzajWnioskuRozszerzony.JakisInny = "inne pismo";
            dokument.Tresc.RodzajWnioskuRozszerzony.Rodzaj    = "zawiadomienie";
            dokument.Tresc.Informacje = new Informacja[]
            {
                new Informacja()
                {
                    Wartosc = "Ala ma kota"
                },
                new Informacja()
                {
                    Wartosc = "Basia ma wózek widłowy"
                }
            };
            dokument.Tresc.Zalaczniki = new Zalacznik[]
            {
                new Zalacznik()
                {
                    Format         = "application/octet-stream",
                    NazwaPliku     = "test.pdf",
                    DaneZalacznika = new DaneZalacznika()
                    {
                        Zawartosc = pdf
                    }
                }
            };
            // act

            var namespaces = new XmlSerializerNamespaces();

            //namespaces.Add("", ePUAP.Client.Constants.Namespaces.WNIO_PODPISANYDOKUMENT);
            namespaces.Add("wnio", ePUAP.Client.Constants.Namespaces.CRD_WNIO);
            namespaces.Add("meta", ePUAP.Client.Constants.Namespaces.CRD_META);
            namespaces.Add("str", ePUAP.Client.Constants.Namespaces.CRD_STR);
            namespaces.Add("adr", ePUAP.Client.Constants.Namespaces.CRD_ADR);
            namespaces.Add("oso", ePUAP.Client.Constants.Namespaces.CRD_OSO);
            namespaces.Add("inst", ePUAP.Client.Constants.Namespaces.CRD_INST);

            // wnio:Dokument
            var document = dokument.ToXmlDocument(namespaces);
            var pi       = document.CreateProcessingInstruction(
                "xml-stylesheet",
                "type=\"text/xsl\" href=\"http://crd.gov.pl/wzor/2013/12/12/1410/styl.xsl\"");

            document.InsertAfter(pi, document.FirstChild);

            model.XML = document.OuterXml;


            return(View(model));
        }