FileIsSignedEx не получает информацию, если поле подписи старое

Я использую следующий API, чтобы проверить, подписан ли файлCoSign Signature Local > Signature Local COM Methods for Signing and Verifying > SAPICryptCOM Functions > FileIsSignedEx

Пример:

SAPI.FileIsSignedEx(
          hSession,
          SAPI_ENUM_FILE_TYPE.SAPI_ENUM_FILE_OFFICE_XML_PACKAGE,
          fileName,
          null,
          0,
          ref isSigned
      );

`

Это работает, если файл имеет более новое поле подписи. Имя поля в файле *.docx выглядит примерно так: {388F8850-55AF-4729-BE27-F1E5FCAC5A8F}

Однако если файл.docx содержит более старое поле подписи, функция всегда возвращает 0(false), даже если файл подписан. Имя более старого поля подписи ArGrDigsig2

Связанные функции, такие как SignatureFieldInfoGet также не возвращайте ничего для более старого поля, даже если оно подписано сегодня.

Есть идеи, что здесь происходит?

Старое поле и новое поле

1 ответ

Решение

Более старые поля подписи с именем "ArGrDigsign" являются полями подписи ARX CoSign Legacy. Эти подписи являются собственностью ARX CoSign для офисных документов. Эти подписи реализованы с помощью макросов MS и могут использоваться только из приложений MS Office. Только новые стандартные подписи строк подписи Office или DocuSign можно использовать также через API-интерфейсы DSA, такие как SAPI Local.

Другие вопросы по тегам