Mám 3 dotazy k postupu kontroly časové značky a podpisu při odpovědi služby (PollResponse) na odeslání podání. Odpověď vypadá takto:
[bodies xmlns="http://www.government-gateway.cz/wcf/submission"]
[Body xmlns="http://www.govtalk.gov.uk/CM/envelope"]
[Signature xmlns="http://www.podani.gov.cz/TxE/timestamp" Version="1.0"]
[DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /]
[TimeStamp]
[date]20110419[/date]
[time]11:50:56[/time]
[/TimeStamp]
[SignatureValue]MIIOLQ...[/SignatureValue]
[/Signature]
[/Body]
[/bodies]
1) Jak je potřeba tuto strukturu upravit před výpočtem hashe? Má v ní zůstat jako root element bodies, nebo jen Body? Má v ní být element SignatureValue (prázdný), nebo má být úplně odstraněn? Prosím o přesnou definici, protože v dokumentaci i zde na foru se vyskytuje několik různých variant.
2) Jak správně porovnávat hash upravené struktury s dekodovaným hashem z elementu SignatureValue? Dekodovaný hash má 80 bajtů, SHA1 hash struktury pochopitelně 20... Podle návodu zde na foru by se měl hash struktury upravit tím, že se převede na hexa, a pak na utf-16 - co je špatně na tomto postupu v C#:
string hexa = BitConverter.ToString(hash).Replace("-", string.Empty);
byte[] hashHexa = Encoding.UTF8.GetBytes(hexa);
, kterým získám 40 bajtů, které pak můžu porovnávat s dekodovaným hashem (kde vynechávám každý druhý bajt, který je díky utf-16 nulový)?
3) V dokumentaci se píše, že od roku 2011 bude používán SHA-2. Testovací rozhraní VREP stále vrací SHA-1. Kdy dojde ke změně?
Děkuji