Я пытаюсь реализовать подпрограмму для цифровой подписи XML и могу правильно вычислить хэш информации, которая должна быть подписана. Однако у меня возникают проблемы с самой подписью, поскольку мне не удается создать настоящую строку для подписи.
Прямо сейчас у меня есть это:
<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></SignatureMethod> <Reference URI=""> <Transforms> <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform> </Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod> <DigestValue>eDSx9uS7oB++bnG/6tGiD/l8374=</DigestValue> </Reference> </SignedInfo>
Использование только CR вместо CRLF. Нет пробелов для отступов (там, где пост показывает пробел между тегами, есть CR)
Есть предложения по подсчету действительной подписи?
P.D. Я изменил алгоритм канонизации на ИСКЛЮЧИТЕЛЬНЫЙ, и он работает, но требуется использовать ВКЛЮЧЕНО.
Заранее большое спасибо.
Вот предложение: убедитесь, что вы скопировали правильные определения пространства имен для всех тегов и атрибутов. Вот еще немного информации.
http://anilsaldhana.blogspot.com/2009/07/exclusive-versus-inclusive.html http://lists.oasis -open.org / архив / WSS / 200311 / msg00058.html
Конечно, вы действительно не должны в первую очередь реализовывать свою собственную библиотеку XML DigSig. Я настоятельно рекомендую вам взглянуть на некоторые библиотеки с открытым исходным кодом, прежде чем продолжить. Там должно быть достаточно примеров библиотек, которые делают этот вид канонизации. В любом случае вы можете проверить их.