У меня есть .xml
файл, который должен быть подписан с digital certificate
в формате PKCS#7 version 1.5 (RFC 2315)
и DER (ITU-T Recommendation X.690
Этот .xml
будет отправлен в правительство. WebService
которые принимают только формат, упомянутый выше.
То, что я могу сделать - благодаря этому сайту, это цифровой знак .xml
с файлом .pfx
который я сгенерировал с помощью Certificate Export Wizard
описанного ниже. Класс, который я использую для подписания, указан на указанном веб-сайте или здесь.
Из того, что я пытался понять до сих пор, мне нужно будет подписать файл .xml
с .pfx
файлом в соответствии со стандартами X.690
но я могу получить доступ к этому пространству имен:
using System.Security.Cryptography.X509Certificates;
что, очевидно, для формата X.509.
Заметка:
Есть несколько вещей, с которыми я запутался - экспортировать сертификат в .pfx
Я использую Internet Explorer - Certificate Export Wizard
откуда я могу:
Да - экспортировать секретные ключи - тогда он будет сгенерирован в PKCS#12
но .pfx
Нет - не экспортировать закрытые ключи - Сертификат в соответствии со стандартами Cryptographic Message Syntax Standard - PKCS#7
который, как мне кажется, мне нужен, но я бы получил файл .p7b
Я должен сказать, что я новичок в сертификатах и цифровых подписях, поэтому я даже не уверен, правильно ли я экспортирую сертификат, а во-вторых, как я могу подписываться в соответствии со стандартами X.690
.
Могу ли я узнать, как подписать в соответствии с форматом X.690, пожалуйста?
Спасибо всем за ваше время и ответы.
Мой код следующий:
bool res = false;
try
{
byte[] certBytes = System.IO.File.ReadAllBytes(pvkPath);
X509Certificate2 cert = new X509Certificate2(certBytes, certPass);
XmlDocument doc = new XmlDocument();
doc.Load(xmlPath);
// sign the document with the private key of the certificate
XmlDsig.SignXml(doc, cert);
// save the document
doc.Save(xmlSavePath);
// verify that the document has a signature
bool hasSignature = XmlDsig.HasSignatureElement(doc);
return res = true;
}
catch (Exception)
{ return res; }
fo Цифровая подпись в формате PKCS # 7/CMS - это blob, который содержит сертификат публичного ключа XML + signer x509 (файл.cer) + цифровую подпись. Весь blob закодирован в формате ASN 1.0 (X690). Могут быть изменения в блобе из-за отсутствия исходных данных или сертификата подписывающего лица. Этот вариант называется отрывными сигнатурами.
Цифровая подпись генерируется, когда вы подписываете свой XML файл с помощью закрытого ключа подписывающего лица. Эта подпись может быть проверена, когда вы отправляете свой XML файл + подписанный открытый ключ (как файл X509.cer) + цифровую подпись стороне, которая заинтересована в ее проверке.
PFX/p12 - это контейнер, содержащий как закрытый ключ, так и открытый ключ. Вы получаете эту ключевую пару либо от своего правительства, либо от ваших одобренных правительством ключевых хранителей. Затем вы будете использовать этот PFX для выполнения цифровой подписи.
PKCS # 7 поддерживается cryptoAPI.
Вышеизложенные основы. Это должно позволить вам сделать ваши запросы более четкими.
file.xml.p7m
с закрытым ключом файла.pfx
поэтому я создал новый файлfile.xml.p7m
который, по вашему мнению, является одной из двух частей, которые мне нужно отправить - нужно ли мне прикрепить к нему открытый ключ? Еще раз большое спасибо.