Запрос метки времени с хэшем файла, уже сгенерированным в клиенте
Мне нужно сделать запрос Timpestamp к TSA большого файла данных, и поэтому я генерирую хэш в клиенте, используя javscript crypto-js.
Проблема возникает, когда позже в Java я пытаюсь сделать запрос. Очевидно, что методу TimeStampRequestGenerator.generate требуется параметр byte[], который в примерах я могу определить, который является объектом MessageDigest, сгенерированным из содержимого файла, и я не могу найти способ использовать только сгенерированный хеш.
Можно ли сделать запрос, используя только хэш файла, уже сгенерированного?
Спасибо
1 ответ
После тяжелого тестирования я нашел решение.
Хэш SHA-256, сгенерированный в javascript, может использоваться непосредственно в bouncyclaste после некоторого преобразования типов следующим образом:
byte[] decodedHex = Hex.decodeHex(digest.toCharArray());
так что вы можете использовать его как обычный
java.security.MessageDigest
когда они оба преобразуются в
byte[]
полный код здесь:
// Get hash code as hexadecimal string (generated by crypto-js)
String digest = servletRequest.getParameter("digest");
// hexadecimal to string decoder
byte[] decodedHex = Hex.decodeHex(digest.toCharArray());
// Timestamp request
TimeStampRequestGenerator reqgen = new TimeStampRequestGenerator();
TimeStampRequest req = reqgen.generate(TSPAlgorithms.SHA256, decodedHex);
byte request[] = req.getEncoded();
...