Вы не могли бы прояснить мне как использовать ваш пример в /examples/java TSPTest.java?
Принцип работы поискала в интернете - вот что нашла.
Хеш вычисляется из данных.Этот хеш посылается TSA, TSA генерирует timestamp для хеша и вычисляет хеш этого объединения. Этот хеш, например, может быть подписан в цифровой форме с приватным ключом TSA. Этот подписанный хеш и timestamp возвращаются на подписанную сторону timestamp, который хранит их с оригинальными данными.
<Signature Id="MySecondSignature" ...>
[p01] <SignedInfo>
[ ] ...
[p02] <Reference URI="
www.w3.org/TR/xml-stylesheet/">
[ ] ...
[p03] <Reference URI="#AMadeUpTimeStamp"
[p04] Type="
www.w3.org/2000/09/xmldsig#SignatureProperties">
[p05] <Transforms>
[p06] <Transform Algorithm="
www.w3.org/2006/12/xml-c14n11"/>
[p07] </Transforms>
[p08] <DigestMethod Algorithm="
www.w3.org/2000/09/xmldsig#sha1"/>
[p09] <DigestValue>dGhpcyBpcyBub3QgYSBzaWduYXR1cmUK...</DigestValue>
[p10] </Reference>
[p11] </SignedInfo>
[p12] ...
[p13] <Object>
[p14] <SignatureProperties>
[p15] <SignatureProperty Id="AMadeUpTimeStamp" Target="#MySecondSignature">
[p16] <timestamp xmlns="
www.ietf.org/rfcXXXX.txt">
[p17] <date>19990914</date>
[p18] <time>14:34:34:34</time>
[p19] </timestamp>
[p20] </SignatureProperty>
[p21] </SignatureProperties>
[p22] </Object>
[p23]</Signature>
Для подписи: И здесь у меня вопрос? TSPTest.java возвращает мне время, которое я должна поместить в тег SignatureProperties(как в примере выше)? А новый хеш поместить в Reference URI="#AMadeUpTimeStamp" DigestValue?
Для проверки подписи: И второй вопрос, как осуществлять проверку? Проверяется цифровая подпись TSA путём дешифрования подписанного хеша, полученного от TSA, с помощью открытого ключа TSA. В результате получается дешифрованный хеш. Какие методы из библиотеки для этого использовать?