using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Kz.GammaTech.Xml;
using System.IO;
using Kz.GammaTech.Crypto;

namespace SignXmlElement
{
    class Program
    {
        static void Main(string[] args)
        {
            FileStream file = new FileStream("input.xml", FileMode.Open);
            byte[] arr = new byte[file.Length];
            file.Read(arr, 0, (int)file.Length);
            file.Close();
            MemoryStream mem_stream = new MemoryStream(arr);
            MemoryStream stream_write = new MemoryStream();         
            StreamReader p12 = new StreamReader("123456789.p12");
            Stream p12_base = p12.BaseStream;
            XmlSigned xml_s = new XmlSigned();
            TumarProfile profile = new TumarProfile("profile://12345", "123");
           /// Варианты подписи
           //  xml_s.SignXmlFile("c:\\1\\3xml.xml", "c:\\1\\3xml_output.xml", profile); // профайл, подписываем файл
           //  xml_s.SignXmlFile(mem_stream, stream_write, p12_base, "12345"); // блоб p12 (pfx), подписываем поток
           //  xml_s.SignXmlFile("c:\\1\\3xml.xml", "c:\\1\\3xml_output.xml", "c:\\key.bin", ""); // путь к контейнеру, подписываем файл
           //  xml_s.SignXmlAttribute(mem_stream, stream_write, "Element_name", p12_base, "12345"); // блоб p12 (pfx), подписываем элемент
           //  xml_s.SignXmlAttribute("c:\\1\\3xml.xml", "c:\\1\\3xml_output.xml","Element_name", "c:\\key.bin", "") //  путь к контейнеру, подписываем элемент           
            Console.WriteLine("Xml signed");
                     
            if (xml_s.VerifyXmlFile("c:\\1\\3xml_output.xml"))
                Console.WriteLine("verify");
            else Console.WriteLine("fail");
        }
    }
}
