Сбой XML Проверка подписи с использованием SignedXml - PullRequest
1 голос
/ 18 апреля 2020

У меня есть подписанный XML Файл

`<UAPermission lastUpdated="" permissionArtifactId="" ttl="" txnId=""><Permission><Owner operatorId=""><Pilot uaplNo="" validTo=""/></Owner><FlightDetails><UADetails uinNo="1234"/><FlightPurpose frequency="" shortDesc="Provisional test"/><PayloadDetails payloadDetails="Not specified" payloadWeight="Not specified"/><FlightParameters flightEndTime="2020-04-18T18:37:58.806628+05:30" flightStartTime="2020-04-18T18:37:58.806628+05:30" frequenciesUsed=""><Coordinates><Coordinate latitude="12.934158" longitude="77.609316"/><Coordinate latitude="12.934796" longitude="77.609852"/><Coordinate latitude="12.934183" longitude="77.610646"/><Coordinate latitude="12.933551" longitude="77.6101"/><Coordinate latitude="12.934158" longitude="77.609316"/></Coordinates></FlightParameters></FlightDetails></Permission><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2006/12/xml-c14n11"/><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><Transform Algorithm="http://www.w3.org/2006/12/xml-c14n11"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/><DigestValue>7b+RL24SjU2HWN27A7xt11CItND+fUqiKK/LC2oDot0=</DigestValue></Reference></SignedInfo><SignatureValue>EwA5FKviXIafAVaafcDk8zx2BcMdPbIryR0SulNc7+DpebK8vlkuNVb0C7vIdsT+nXAcvICbqbQHHqHMRDnxLdnKLB48pNAzN+u4b48C9VX5LlZzXfBA+vd4kobs2H2Oc/H6QpNcOyrd8U64Et+w1wZ7YX3FdBzfqBKtWP0+1JNGi05gfs4YBSVSIempxz+q58KzbSxDSizdpw+tztazstRd7pQy//wgGhVWp0ESYZNQb291194RWbbYTD6Q0MPAeDMAODotwnD45u0JByRirWrTqoIRwIjuau3+OZvAxSrmvjg7H2tg1sojKn5L1v2Dr9OZHo2jAP/uBKjbge5O4w==</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIC8TCCAdmgAwIBAgIJAJRDnqfLydHvMA0GCSqGSIb3DQEBCwUAMA8xDTALBgNV
BAMMBHRlc3QwHhcNMTkwMzI2MDcxMTQzWhcNMjkwMzIzMDcxMTQzWjAPMQ0wCwYD
VQQDDAR0ZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq51cjR/m
cgd0nWO33O3SM84yu3DRdaG8OMYSqzPixY5R+D8niOTVLZvOtaFROSneP1JmUAca
Bn5sFhsFxgpJX8O6ee0m9PqLL+LKjexEs5dZ85IG8GqF+UJABaKfBeTPOgI5NAwo
yZPBphzxsra1fH2OV2roaCf4ErMnYluuyey/VfFlHTVgC5+VX2wvO+o6pYUuzdNq
CvgYwZrMEDCXm+08iZk/qpLgqgUCQTs8qGu/Y0d/EqwGmv9xN8tyxX+IbaeQM7uz
tN8PbMf8wY40OqdgNmgaVmMR4mfAO2XJiryR5Y8JACDGf3dhmcDrdtfmNjaHR109
o2/wUPhSdWB/3QIDAQABo1AwTjAdBgNVHQ4EFgQUR4p2KJJXG5cZ8STI66RG6l2o
7yowHwYDVR0jBBgwFoAUR4p2KJJXG5cZ8STI66RG6l2o7yowDAYDVR0TBAUwAwEB
/zANBgkqhkiG9w0BAQsFAAOCAQEAV3uurlHMtyopefBpdGj59eLWCrpRYJLKbDtL
FCj+tY1/uiwogUMNsEEHEBeEdwM+PIPuzWZ4tSYQ+SvdCCt4/6e9x+c2/1mZKhnR
zL/s9o70RyWZXQO+Dz43B5aIIy/qARUhLxU2NVL42q90pInIh/ltT02IVkcibwDn
sM4XJhsSyvQlRyYXdPzDeBjEOVYFpafLbC/7a5FBuNwfNKEMWhOj6AELnC8fWb3m
aNevhjSH5amGU2XrUp6yIdWUL2HuW7ReSer93Lg6iYujd/aaqk+pWE5bQsC+r2kH
pNcpntHJLsd9E1cwzWCJiEM9zK4GXqKV/QDUdPC6FYfEf+ti9A==
</X509Certificate></X509Data></KeyInfo></Signature></UAPermission>`

, для которого я пытаюсь проверить его подпись в. Net Framework. но поскольку нет поддержки алгоритма преобразования http://www.w3.org/2006/12/xml-c14n11, я использую обходной путь, как описано здесь , и использую следующий фрагмент кода, чтобы вернуть действительность выбранного файла

if (Name == null)
throw new ArgumentNullException("Name");

// Create a new XML document.
XmlDocument xmlDocument = new XmlDocument();

// Format using white spaces.
xmlDocument.PreserveWhitespace = true;

// Load the passed XML file into the document. 
xmlDocument.Load(Name);

// Create a new SignedXml object and pass it
// the XML document class.
SignedXml signedXml = new SignedXml(xmlDocument);

// Find the "Signature" node and create a new
// XmlNodeList object.
XmlNodeList nodeList = xmlDocument.GetElementsByTagName("Signature");

// Load the signature node.
signedXml.LoadXml((XmlElement)nodeList[0]);

// Check the signature and return the result.
return signedXml.CheckSignature();

, который теперь возвращает False вместо исключения «Обнаружено неизвестное преобразование.», Я беспомощно застрял! Я пробовал разные методы, как в здесь и здесь но все же не повезло. Может ли кто-нибудь порекомендовать мне подходящий ресурс для проверки подписи, или, возможно, какой-нибудь обходной путь для устранения проблемы?

...