У меня были проблемы с отсутствием поддержки алгоритма подписи RSA-SHA512.Это может быть достигнуто с помощью алгоритма пользовательской подписи.Затем добавьте его в Алгоритм подписи по умолчанию в вашей пользовательской привязке.
public class MyCustomAlgorithmSuite : SecurityAlgorithmSuite { }
Также создайте для него подпись как:
public class RsaPkCs1Sha512SignatureDescription : SignatureDescription
{}
Затем добавьте его в:
CryptoConfig.AddAlgorithm(typeof(RsaPkCs1Sha512SignatureDescription),
"http://www.w3.org/2001/04/xmldsig-more#rsa-sha512");
Однако мы столкнулись с проблемой подписания токена BinarySecurity.Его можно подписать, добавив:
assymetricKey.EndpointSupportingTokenParameters.Signed.Add(new X509SecurityTokenParameters());
Однако это создаст новый подписанный двоичный токен безопасности, и вы получите два BST.Решение этого заключается в следующем:
assymetricKey.InitiatorTokenParameters = new System.ServiceModel.Security.Tokens.X509SecurityTokenParameters { InclusionMode = SecurityTokenInclusionMode.Never};
assymetricKey.RecipientTokenParameters = new System.ServiceModel.Security.Tokens.X509SecurityTokenParameters { InclusionMode = SecurityTokenInclusionMode.Never};
Это портит вашу SignedInfo, чтобы потерять ссылку на BST, и мы застряли.
В любом случае мы в конечном итоге не использовали возможности WCF и вместо этого использовали:
SignedXML class.
Для ссылки на то, как его использовать, есть ссылка: https://gist.github.com/luizvaz/43ccbd85b16b6802218b50b6d34c26de
Также,Следует отметить, что если вы реализуете алгоритм подписи RSA-SHA512 из сертификата, то вам нужно будет использовать метод расширения (обязательно используйте .net 4.6.2 или выше).Для старых версий:
SignedXml Compute Signature с SHA256
signedXml.SigningKey = RSACertificateExtensions.GetRSAPrivateKey(cert);
Кроме того, если вы добавляете префикс к подписи как ds
, вам необходимо удалитьссылки из SignedInfo
, пересчитать подпись и добавить ее обратно.
Создать цифровую подпись, но с определенным префиксом пространства имен ("ds:")
Надеюсьэто помогает иметь подобные проблемы.