Попробовал канонизировать xml при помощи сервиса(надеюсь тут тот же механизм). Для начала убрал все переводы строки и лишние символы в исходном xml:
<?xml version='1.0' encoding='utf-8'?><root><last_name>admin</last_name><first_name>admin2</first_name></root>
Потом канонизировал при помощи
сервиса:
<root><last_name>admin</last_name><first_name>admin2</first_name></root>
Затем, подписал при помощи вашей тестовой странички:
<?xml version="1.0" encoding="utf-8" standalone="no"?><root><last_name>admin</last_name><first_name>admin2</first_name><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gost34310-gost34311"/>
<ds:Reference URI="">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#gost34311"/>
<ds:DigestValue>ZYffHE1u7regSQJ14cOLuu88Iro6GQNzK8j6ubmVyLg=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>
sX1nz9HXMcw38AqPYUyYK+URNEhoqdXPTEX8uNgE4sl7BI8+yTOqcZ4TjRwpwKTdb+aOC6XwS6o4
LhxBJvbfCA==
</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
MIIEnTCCBEegAwIBAgIUYaPUdrsOgTr4tXZneSlJ3d6Gf8owDQYJKoMOAwoBAQECBQAwgc8xCzAJ
BgNVBAYTAktaMRUwEwYDVQQHDAzQkNCh0KLQkNCd0JAxFTATBgNVBAgMDNCQ0KHQotCQ0J3QkDFM
MEoGA1UECgxD0KDQnNCaIMKr0JzQldCc0JvQldCa0JXQotCi0IbQmiDQotCV0KXQndCY0JrQkNCb
0KvSmiDSmtCr0JfQnNCV0KLCuzFEMEIGA1UEAww70rDQm9Ci0KLQq9KaINCa0KPTmNCb0JDQndCU
0KvQoNCj0KjQqyDQntCg0KLQkNCb0KvSmiAoR09TVCkwHhcNMTUxMjIyMDgzOTA1WhcNMTYxMjIx
MDgzOTA1WjCB2zEeMBwGA1UEAwwV0KLQldCh0KLQntCSINCi0JXQodCiMRUwEwYDVQQEDAzQotCV
0KHQotCe0JIxGDAWBgNVBAUTD0lJTjEyMzQ1Njc4OTAxMTELMAkGA1UEBhMCS1oxFTATBgNVBAcM
DNCQ0KHQotCQ0J3QkDEVMBMGA1UECAwM0JDQodCi0JDQndCQMRgwFgYDVQQKDA/QkNCeICLQotCV
0KHQoiIxGDAWBgNVBAsMD0JJTjEyMzQ1Njc4OTAyMTEZMBcGA1UEKgwQ0KLQldCh0KLQntCS0JjQ
pzBsMCUGCSqDDgMKAQEBATAYBgoqgw4DCgEBAQEBBgoqgw4DCgEDAQEAA0MABEDqkHMfO3LOeVRE
Zj4/qzkq+IQ4GY1gkWb8WYb6f6q9JVIxII+2UR7wAk9pamqHdomzLMy+F36y0zan1ygoXlQ/o4IB
2zCCAdcwDgYDVR0PAQH/BAQDAgbAMCgGA1UdJQQhMB8GCCsGAQUFBwMEBggqgw4DAwQBAgYJKoMO
AwMEAQIBMA8GA1UdIwQIMAaABFW1tK4wHQYDVR0OBBYEFMAltOD4scJt4eOB13cfX41Ae6drMF4G
A1UdIARXMFUwUwYHKoMOAwMCAjBIMCEGCCsGAQUFBwIBFhVodHRwOi8vcGtpLmdvdi5rei9jcHMw
IwYIKwYBBQUHAgIwFwwVaHR0cDovL3BraS5nb3Yua3ovY3BzMFAGA1UdHwRJMEcwRaBDoEGGHmh0
dHA6Ly9jcmwucGtpLmdvdi5rei9nb3N0LmNybIYfaHR0cDovL2NybDEucGtpLmdvdi5rei9nb3N0
LmNybDBUBgNVHS4ETTBLMEmgR6BFhiBodHRwOi8vY3JsLnBraS5nb3Yua3ovZF9nb3N0LmNybIYh
aHR0cDovL2NybDEucGtpLmdvdi5rei9kX2dvc3QuY3JsMGMGCCsGAQUFBwEBBFcwVTAvBggrBgEF
BQcwAoYjaHR0cDovL3BraS5nb3Yua3ovY2VydC9wa2lfZ29zdC5jZXIwIgYIKwYBBQUHMAGGFmh0
dHA6Ly9vY3NwLnBraS5nb3Yua3owDQYJKoMOAwoBAQECBQADQQB1QhmJ0beLzTf1H9Xl1h/QSRDg
BUxzoeqySxLqXDHMynfAEBcEBdsigLOmacpsW/MjLRwh6avmiP/yVUVA2Ofg
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature></root>
Попробовал получить hash от канонизированной строки по GOST:
6587df1c4d6eeeb7a0490275e1c38bbaef3c22ba3a1903732bc8fab9b995c8b8
В base64 это:
NjU4N2RmMWM0ZDZlZWViN2EwNDkwMjc1ZTFjMzhiYmFlZjNjMjJiYTNhMTkwMzczMmJjOGZhYjliOTk1YzhiOA==
В общем, не сходится хеш. Что не так?
P.S. А какой вариант вы имели ввиду, кроме xml?