Проверьте файл TimestampResponse с помощью подписанного файла CADES.JAVA

Программисты JAVA общаются здесь
Anonymous
Проверьте файл TimestampResponse с помощью подписанного файла CADES.

Сообщение Anonymous »

У меня есть два файла: файл с подписью CADES (p7m) и файл с отдельной временной меткой подписанного файла (tsr).
Я хочу проверить tsr с помощью p7m, чтобы убедиться, что временная метка соответствует файлу p7m. .
Для проверки я использовал Java (java11) и jumpycastle (1.56).
От tsd я получаю MessageImprintDigest:

Код: Выделить всё

byte[] byteTsr = org.apache.commons.io.FileUtils.readFileToByteArray(new File(fileTsr));
org.bouncycastle.tsp.TimeStampResponse response = new TimeStampResponse(byteTsr);
org.bouncycastle.tsp.TimeStampToken tstoken = response.getTimeStampToken();
TimeStampTokenInfo tstInfo = tstoken.getTimeStampInfo();
String responseMessageDigest = Base64.encode(tstInfo.getMessageImprintDigest());
От p7m я получаю MessageImprintDigest:

Код: Выделить всё

TimeStampRequest request = null;
try(FileInputStream fis = new FileInputStream(new File(filep7m))){
CMSSignedData signedData = new CMSSignedData(fis);
SignerInformationStore signers = signedData.getSignerInfos();
SignerInformation si = (SignerInformation)signers.getSigners().iterator().next();
Security.addProvider(new BouncyCastleProvider());

TimeStampRequestGenerator generator = new TimeStampRequestGenerator();
request = generator.generate(TSPAlgorithms.SHA256, signDigest);
}
String requestMessageDigest = Base64.encode(request.getMessageImprintDigest());
но responseMessageDigest отличается от requestMessageDigest.
Почему?
Если я проверю p7m и tsr с помощью внешнего инструмента, соответствие будет правильным и проверка будет успешной.Кто может мне помочь?
Заранее спасибо.
Я ожидал, что MessageImprintDigest из TimestampResponse равен MessageImprintDiget из TimestampRequest.
На самом деле это не так.

Подробнее здесь: https://stackoverflow.com/questions/790 ... cades-file

Вернуться в «JAVA»