Требования

1. Декодировать полученные ЭП по алгоритму base64. В случае использования ЭП для операций с ЦР алгоритмы декодирования должны соответствовать документам [11].

2. Если передано несколько ЭП, проверить все полученные ЭП.

3. Для типа CMScert из входящего сообщения извлечь сертификат отправителя, содержащий открытый ключ и данные.

4. Для типа CMSid из входящего сообщения извлечь данные и идентификатор сертификата открытого ключа. Посредством функции СКЗИ выполнить поиск сертификата в хранилище СКЗИ в соответствии с полученным cryptContext.

5. Вызвать функцию СКЗИ для проверки каждой ЭП по отдельности:

a) проверку выполнить в соответствии с указанным типом подписи и извлеченным открытым ключом;

b) алгоритмы, использующиеся при вычислении значения ЭП, должны соответствовать [2], [20].

КонсультантПлюс: примечание.

Нумерация пунктов дана в соответствии с официальным текстом документа.

7. В случае успешного выполнения проверки всех ЭП вернуть код "ОК". Если хотя бы одна ЭП неверная, вернуть код "INVALID".

8. Если реализаций функций СКЗИ возвращает id сертификатов проверки ЭП, то вернуть их в параметре certIds.

9. В случае неуспешного выполнения какого-либо из перечисленных выше действий, а также если число ЭП не соответствует количеству переданных типов ЭП или получены ошибки при вызове функций СКЗИ, прервать выполнение метода и вернуть код ошибки в соответствии с описанием в разделе 3.2.6.