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;

Параметры

CMSBytesDER-кодированный отделённый CMS SignedData
DataИсходные покрытые байты — тот же вход, что хешировался при подписи
SignerIndexПроверяемый подписант с нулевым индексом
SignerCountПринимает число подписантов, найденных в CMS
NativeErrorПринимает грубый класс сбоя: 13 для повреждённого входа, 50 для проблем с дайджестом или статус CNG упавшего примитива

Возвращаемые значения

0CMS разобран, но его алгоритм подписи не из современного набора, и этот верификатор не отвечает за него
1Подписант успешно проверен
2Не удался шаг разбора, дайджеста или примитива; причина в NativeError

Примечания

Сравнение дайджеста сообщения выполняется за постоянное время, а параметры PSS должны называть тот же дайджест, что и SignerInfo, в духе RFC 4056; результат 0 говорит вызывающему передать блоб платформенному верификатору

См. также

PLBuildModernDetachedCMS, PLIsModernDetachedCMS, PLCertificateSubjectAndIssuer