Я хочу знать, как подписать файл 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