,이처럼 .pfx 파일에서 X509의 인증서를 얻을 경우
X509Certificate2 certificate = new X509Certificate2(certFile, pfxPassword);
RSACryptoServiceProvider rsaCsp = (RSACryptoServiceProvider) certificate.PrivateKey;
는 그런 다음과 같이 공개 키 부분을 내보낼 수 있습니다
rsaCsp.ToXmlString(false);
을 " 거짓 "부분은 공공 조각 만 수출하고 개인 작품은 수출하지 말라는 내용입니다. (RSA.ToXmlString에 대한 문서)
그리고 다음 검증 응용 프로그램에서,
RSACryptoServiceProvider csp = new RSACryptoServiceProvider();
csp.FromXmlString(PublicKeyXml);
bool isValid = VerifyXml(xmlDoc, rsa2);
를 사용하고 VerifyXml이 CheckSignature()
를 호출합니다. 그것은 다음과 같은 :
private Boolean VerifyXml(XmlDocument Doc, RSA Key)
{
// Create a new SignedXml object and pass it
// the XML document class.
var signedXml = new System.Security.Cryptography.Xml.SignedXml(Doc);
// Find the "Signature" node and create a new XmlNodeList object.
XmlNodeList nodeList = Doc.GetElementsByTagName("Signature");
// Throw an exception if no signature was found.
if (nodeList.Count <= 0)
{
throw new CryptographicException("Verification failed: No Signature was found in the document.");
}
// Though it is possible to have multiple signatures on
// an XML document, this app only supports one signature for
// the entire XML document. Throw an exception
// if more than one signature was found.
if (nodeList.Count >= 2)
{
throw new CryptographicException("Verification failed: More that one signature was found for the document.");
}
// Load the first <signature> node.
signedXml.LoadXml((XmlElement)nodeList[0]);
// Check the signature and return the result.
return signedXml.CheckSignature(Key);
}
고마워요, 그게 내가 정확히 알지 못했던 것입니다. 이제 "서명자"인증서를 얻고 .cer 파일을 "검증 자"로 사용하려면 X509Store의 인증서를 사용해야한다는 것을 알고 있습니다. – willvv