29.05.2006 17:19:52Со-подписывание одним и тем же сертификатом, что и первоначальная подпись. Проверка не проходит. Ответов: 4
Кирилл
Проблема:
Подписываем файл одним сертификатом. Потом добавляем к полученной подписи подпись на том же самом сертификате, т.е. подписей оказывается две, но сделаны они на одних и тех же ключах. Проверка же такой подписи не проходит - первую подпись проверяет, вторую уже нет. Что в такой ситуации можно сделать? Не давать два раза подписывать одним и тем же ключом? Или еще есть какие способы?
 
Ответы:
30.05.2006 10:47:40Василий
Должно работать.
Вы какое приложение используете?
30.05.2006 11:41:29Кирилл
Я использую CryptoApi:). Как делаю:
CryptSignMessage - создаю подпись. Потом на этом же сертификате CryptMsgUpdate с ключем добавления подписчика. При проверке я получаю количество подписчиков, в данном примере оно равно двум. И в цикле делаю проверку с помощью CryptVerifySignMessage, первую подпись находит нормально и проверяет, а на вторую говорит ошибку - неправильная подпись.
30.05.2006 12:30:27Василий
CryptVerifySignMessage - это, вероятно, CryptVerifyMessageSignature ? Или нет?
А скакими параметрами вызывается?
31.05.2006 0:11:16Кирилл
Стандартно все.
В цикле кручу функцию (в случае 2х подписей, два раза)
CryptVerifyMessageSignature(
&verifyParam,
signerIndex,
signedMessage,
signedMessageLength,
message,
&messageLength,
NULL);
Просто не понятно, почему подписывается нормально в любом случае, а проверяется нормально только если подписи сделаны на разных сертификатах. При одном и том же коде. Но, вообще, все должно быть нормально, т.е. никаких ограничений CryptoApi не накладывает в таких случаях? Возможно, где-то ошибка в callback функции или еще где, просто сейчас под рукой кода нет, не могу сам себя проверить на свежую голову.