我正在使用以下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
这样的相关函数即使今天签名也不会为旧字段返回任何内容。
知道这里发生了什么吗?
名为“ArGrDigsign”的旧签名字段是ARX CoSign Legacy签名字段。这些签名是ARX CoSign办公文档的专有签名。这些签名使用MS宏实现,只能在MS Office应用程序中使用。只有新的标准Office或DocuSign签名行签名也可以通过SAPA API(如SAPI Local)使用。