| ||||
| ||||
Проблема: Подписываем файл одним сертификатом. Потом добавляем к полученной подписи подпись на том же самом сертификате, т.е. подписей оказывается две, но сделаны они на одних и тех же ключах. Проверка же такой подписи не проходит - первую подпись проверяет, вторую уже нет. Что в такой ситуации можно сделать? Не давать два раза подписывать одним и тем же ключом? Или еще есть какие способы? | ||||
Ответы: | ||||
| ||||
Должно работать. Вы какое приложение используете? | ||||
| ||||
Я использую CryptoApi:). Как делаю: CryptSignMessage - создаю подпись. Потом на этом же сертификате CryptMsgUpdate с ключем добавления подписчика. При проверке я получаю количество подписчиков, в данном примере оно равно двум. И в цикле делаю проверку с помощью CryptVerifySignMessage, первую подпись находит нормально и проверяет, а на вторую говорит ошибку - неправильная подпись. | ||||
| ||||
CryptVerifySignMessage - это, вероятно, CryptVerifyMessageSignature ? Или нет? А скакими параметрами вызывается? | ||||
| ||||
Стандартно все. В цикле кручу функцию (в случае 2х подписей, два раза) CryptVerifyMessageSignature( &verifyParam, signerIndex, signedMessage, signedMessageLength, message, &messageLength, NULL); Просто не понятно, почему подписывается нормально в любом случае, а проверяется нормально только если подписи сделаны на разных сертификатах. При одном и том же коде. Но, вообще, все должно быть нормально, т.е. никаких ограничений CryptoApi не накладывает в таких случаях? Возможно, где-то ошибка в callback функции или еще где, просто сейчас под рукой кода нет, не могу сам себя проверить на свежую голову. | ||||