[ブログに戻る](/ja/blog) # .dwgファイルへのデジタル署名の添付と検証

Iakov Shamrai 9月 07, 2017 [\#getting started](/ja/blog/tag/getting-started) [\#Example](/ja/blog/tag/example)

<a class="a2a_button_facebook"></a><a class="a2a_button_twitter"></a><a class="a2a_button_linkedin"></a>

Teigha 4.3.1の新しいリリースでは、.dwgファイルにデジタル署名を添付し、.dwgファイルのデジタル署名を検証できます。デジタル署名は、ファイルがどこから来たのか、およびデジタル署名が作成された時点でのファイルの状態を示し、検証はこの情報を確認します。

#### デジタル署名の添付

デジタル署名を添付するには、信頼できるベンダーから発行されたデジタル証明書（デジタルID）が必要です。認証局（CA）は通常、証明書ストアに登録するために必要なPFXファイルとパスワードを発行します。さらに、ルートCA証明書を信頼済みとしてインストールする必要があります。

例えば、Microsoft® Windows®では、Internet Explorer（ツール\\インターネットオプション\\コンテンツ\\証明書）で利用できる証明書のインポートウィザードを使用して証明書をインポートできます。

ストアに証明書を登録した後、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値を返します。

- eOk: 検証プロセスがエラーなしで完了し、verifResultMsgに検証結果が含まれている場合。
- eCantOpenFile: drawingFullPathで指定された図面ファイルを開けない場合。
- eInvalidInput: 図面ファイルが、検証プロセスを実行できないバージョンである場合。

呼び出しは次のとおりです。

OdString verifResultMsg;

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

```

詳細については、OdDwgSignExサンプルアプリケーションの関連ソースコード（Drawing\\Examples\\win\\OdDwgSignEx）を参照してください。

#### OdDwgSignExサンプルアプリケーションと関連ソースコード

Teighaには、デジタル署名APIと連携するWindowsプラットフォームで利用可能なOdDwgSignExサンプルアプリケーションがあります。

サンプルは、デジタル署名情報（拡張ソースコード：Kernel\\Extensions\\win\\Cryptを参照）を操作するために、Windows用のOdCryptインターフェース（OdWinNTCrypt）の実装を使用しています。

サンプルを開始するには、まず上記のようにストアに証明書をインポートしてください。

次の図は、OdDwgSignExサンプルを使用して.dwgファイルにデジタル署名を添付および検証する方法を示しています。

![image1](/files/inline-images/image001_12.png)![image2](/files/inline-images/image002_6.png)![image3](/files/inline-images/image003_6.png)

## 今すぐ始める

**ODAソフトウェアを60日間無料でお試しください。  
リスクなし、クレジットカード不要。**

[無料で試す](https://www.opendesign.com/ja/free-trial)
