为 .dwg 文件附加和验证数字签名

随着 Teigha 4.3.1 新版本的发布,您可以为 .dwg 文件附加数字签名并验证 .dwg 文件的数字签名。数字签名表明文件来源以及创建数字签名时文件的状态,而验证则确认此信息。

附加数字签名

要附加数字签名,您应该拥有由认可供应商颁发的数字证书(数字 ID)。证书颁发机构 (CA) 通常会颁发 PFX 文件和密码,这是在证书存储中注册所必需的。此外,您还需要安装根 CA 证书作为受信任的证书。

例如,在 Microsoft Windows 上,您可以使用 Internet Explorer 中提供的证书导入向导(工具\Internet 选项\内容\证书)来导入证书。

在存储中注册证书后,您可以使用 Teigha 签署 .dwg 文件。

要在保存图形时对其进行签名,首先将相应的参数设置为 OdSecurityParams,然后使用 OdDbDatabase::setSecurityParams() 方法将参数传递给要保存的数据库。例如:

OdSecurityParams secParam;
secParam.sCertSubject = certSubject;
secParam.sCertIssuer = certIssuer;
secParam.sCertSerialNum = certSerialNum;
secParam.nFlags = SECURITYPARAMS_SIGN_DATA;

pDb->setSecurityParams(secParam);

紧接着,打开一个目标流进行读写:

OdStreamBufPtr pTargetFileBuf = createFile(m_drawingFilePath, (Oda::FileAccessMode)(Oda::kFileRead | Oda::kFileWrite), Oda::kShareDenyReadWrite, Oda::kCreateAlways);

然后调用 OdDbDatabase::writeFile() 方法:

pDb->writeFile(pTargetFileBuf, OdDb::kDwg, OdDb::kDHL_CURRENT);

您为 OdSecurityParams 字段设置的证书参数必须与可以构建完整证书链(从您的证书到根证书的链)的证书相对应。

要获取合适证书的参数,您的自定义应用程序应使用依赖于系统的机制访问证书存储。有关详细信息,请参阅 OdDwgSignEx 示例应用程序的相关源代码 (Drawing\Examples\win\OdDwgSignEx)。

验证数字签名

要验证附加到 .dwg 文件的数字签名,请使用 Teigha API 中的相应全局函数:

TOOLKIT_EXPORT OdResult validateDrawingSignature(const OdString& drawingFullPath, OdString& verifResultMsg, OdSignatureDescriptionData* pSignDesc);

文件的完整路径应作为第一个参数传递给函数。

该函数返回验证结果消息 (verifResultMsg 字符串),并填充由作为参数传递的地址 (pSignDesc) 定位的 OdSignatureDescriptionData 结构。

此外,它返回以下 OdResult 值之一:

  • 如果验证过程完成且没有错误,并且 verifResultMsg 包含验证结果,则为 eOk。
  • 如果无法打开 drawingFullPath 指定的图形文件,则为 eCantOpenFile。
  • 如果图形文件版本无法执行验证过程,则为 eInvalidInput。

调用如下:

OdString verifResultMsg;

OdSignatureDescriptionData sigData;
OdResult res;
res = validateDrawingSignature(m_drawingFilePath, verifResultMsg, &sigData);

有关详细信息,请参阅 OdDwgSignEx 示例应用程序的相关源代码 (Drawing\Examples\win\OdDwgSignEx)。

OdDwgSignEx 示例应用程序和相关源代码

Teigha 提供了 OdDwgSignEx 示例应用程序,可在 Windows 平台上使用数字签名 API。

该示例使用 OdCrypt 接口的 Windows 实现 (OdWinNTCrypt) 来操作数字签名信息(请参阅扩展源代码:Kernel\Extensions\win\Crypt)。

要启动示例,首先按照上述说明在存储中导入您的证书。

下图说明了如何使用 OdDwgSignEx 示例为 .dwg 文件附加和验证数字签名。

image1 image2 image3

 

今天就开始行动

免费试用 ODA 软件 60 天。
无风险,无需信用卡。

免费试用