Как подписать XML-файл в цифровой форме в ASP.NET с помощью USB-токена и инструмента capicom?

Я хочу знать, как подписать файл XML в ASP.NET C# с помощью токена USB?

Я хочу знать, как получить сертификаты от USB-токена mosearbear и использовать содержащийся в нем закрытый ключ для цифровой подписи XML-файла?

Поскольку USB находится на клиентской машине, и я хочу подписать файл XML в клиентской системе, как это сделать?

Я знаю, что нелегко получить доступ к устройству на клиентском компьютере, но я узнал, что это можно сделать с помощью capicom, но не знаю, как это сделать.

Недавно я узнал, что Microsoft прекратила выпуск Capicom. Так какова его альтернатива?

У меня есть кусок кода, но это не похоже на то, что я ищу. Может кто-нибудь мне помочь?

X509Store store = new X509Store(StoreLocation.CurrentUser);
        store.Open(OpenFlags.ReadOnly);
        X509CertificateCollection certificates =  X509Certificate2UI.SelectFromCollection(store.Certificates,
                                                                                        "Certificados conocidos",
                                                                                        "Por favor seleccione el certificado con el cual desea firmar",
                                                                                        X509SelectionFlag.SingleSelection
                                                                                        );
        store.Close();
        X509Certificate2 certificate = null;
        if (certificates.Count != 0)
        {
            //The selected certificate
            certificate = (X509Certificate2)certificates[0];
        }
        else
        {
            //The user didn't select a certificate
            //return "El usuario canceló la selección de un certificado";
        }
        //Check certificate's atributes to identify the type of certificate (censored)
        if (certificate.Issuer != "CN=............................., OU=................., O=..., C=US")
        {
            //The selected certificate is not of the needed type
           // return "El certificado seleccionado no corresponde a un token ...";
        }
        //Check if the certificate is issued to the current user
        //if (!certificate.Subject.ToUpper().Contains(("E=" + pUserADLogin + "@censoreddomain.com").ToUpper()))
        //{
        //    //return "El certificado seleccionado no corresponde al usuario actual";
        //}
        //Check if the token is currently plugged in
        XmlDocument xmlDoc = new XmlDocument();
        //XmlElement element = xmlDoc.CreateElement("Content", SignedXml.XmlDsigNamespaceUrl.ToString());
        //element.InnerText = "comodin";
       // xmlDoc.AppendChild(element);
        SignedXml signedXml = new SignedXml();
        //try
        //{
        //    signedXml.SigningKey = certificate.PrivateKey;
        //}
        //catch
        //{
        //    //USB Token is not plugged in
        //   // return "El token no se encuentra conectado al equipo";
        //}
        //DataObject dataObject = new DataObject();
        //dataObject.Data = xmlDoc.ChildNodes;
        //dataObject.Id = "CONTENT";
        //signedXml.AddObject(dataObject);
        //Reference reference = new Reference();
        //reference.Uri = "#CONTENT";
        //signedXml.AddReference(reference);
        //Attempt to sign the data. The user will be prompted to enter his PIN
        try
        {
           // signedXml.ComputeSignature();
        }
        catch
        {
            //User didn't enter the correct PIN
           // return "Hubo un error confirmando la identidad del usuario";
        }
        // The user has signed with the correct token

person RachitSharma    schedule 30.01.2015    source источник
comment
Насколько я знаю, в безопасности нет никаких изменений, так как был задан дублирующий вопрос - вам все еще нужен доверенный компонент на стороне клиента.   -  person Alexei Levenkov    schedule 30.01.2015
comment
Но я спрашивал о капикоме. И это было прекращено, так что есть некоторые изменения в безопасности, так как был задан дублирующий вопрос. Спасибо за вашу расширенную поддержку. Намасте.   -  person RachitSharma    schedule 30.01.2015
comment
Боюсь, текущая версия вашего поста не похожа на то, что вы спрашиваете о capicom. Пожалуйста, отредактируйте свой вопрос, чтобы было ясно, почему он не дублирует то, как подписывать XML в ASP.Net с кодом С#.   -  person Alexei Levenkov    schedule 30.01.2015