0

我正在使用以下 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即使今天已签署,相关函数也不会为旧字段返回任何内容。

知道这里发生了什么吗?

旧领域和新领域

4

1 回答 1

1

名为“ArGrDigsign 的旧签名字段是 ARX CoSign Legacy 签名字段。这些签名是 ARX CoSign 用于办公文档的专有签名。这些签名是通过 MS 宏实现的,并且只能在 MS Office 应用程序中使用。只有新的标准 Office 或 DocuSign 签名行签名也可以通过 SAPI Local 等 DSA API 使用。

于 2017-12-28T09:33:06.330 回答