PLVerifyModernDetachedCMS
Криптография, цифровые подписи
Описание
Проверяет подписанта современного отделённого CMS по исходным байтам данных
Верификатор разбирает SignedData, сверяет дайджест сообщения из подписанных атрибутов с данными, затем проверяет сырую подпись открытым ключом сертификата подписанта: чистый Pascal Ed25519, ECDSA по параметрам кривой или RSA PKCS#1 и PSS через CNG
Синтаксис
Delphi
Function PLVerifyModernDetachedCMS(Const CMSBytes, Data: AnsiString;
SignerIndex: Integer; Out SignerCount: Integer;
Out NativeError: Cardinal): Integer;Параметры
| CMSBytes | DER-кодированный отделённый CMS SignedData |
|---|---|
| Data | Исходные покрытые байты — тот же вход, что хешировался при подписи |
| SignerIndex | Проверяемый подписант с нулевым индексом |
| SignerCount | Принимает число подписантов, найденных в CMS |
| NativeError | Принимает грубый класс сбоя: 13 для повреждённого входа, 50 для проблем с дайджестом или статус CNG упавшего примитива |
Возвращаемые значения
| 0 | CMS разобран, но его алгоритм подписи не из современного набора, и этот верификатор не отвечает за него |
|---|---|
| 1 | Подписант успешно проверен |
| 2 | Не удался шаг разбора, дайджеста или примитива; причина в NativeError |
Примечания
Сравнение дайджеста сообщения выполняется за постоянное время, а параметры PSS должны называть тот же дайджест, что и SignerInfo, в духе RFC 4056; результат 0 говорит вызывающему передать блоб платформенному верификатору
См. также
PLBuildModernDetachedCMS, PLIsModernDetachedCMS, PLCertificateSubjectAndIssuer