如果签名字段是旧的,则 FileIsSignedEx 不会获取信息

FileIsSignedEx is not getting the information if the signature field is old

我正在使用以下 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 文件包含较旧的签名字段,则函数始终 returns 0(false),即使文件已签名。旧签名字段的名称是 ArGrDigsig2

SignatureFieldInfoGet这样的相关函数也return老字段就算今天签了也没用

知道这里发生了什么吗?

Old field and new field

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