デジタル署名付きソフト配布プロジェクト

親指の友Mk-II デバイスドライバへの署名

デジタル署名付きソフト配布プロジェクトもリブートさせるべく、最近存在を知った親指シフト入力方式向けのデバイスドライバ「ファイル置き場(ソフトウェア) — もしかしたら開発室 https://kiyoto-y.github.io/exe_w.htm 」から「親指の友Mk-II デバイスドライバ」が入っているzipファイルをダウンロードして、何も考えず(つまり手元でbuildしたりせずに)、中に入っているデバイスドライバを .cabファイルに固めて、EV署名を付けて、マイクロソフトのサイトにて、構成証明署名にチャレンジしてみました。

.cabファイルを作る

c:\>c:\windows\system32\makecab /F filellist_x64.txt /D MaxDiskSize=1024000
Cabinet Maker - Lossless Data Compression Tool

53,831 bytes in 5 files
Total files:              5
Bytes before:        53,831
Bytes after:         16,684
After/Before:            30.99% compression
Time:                     0.07 seconds ( 0 hr  0 min  0.07 sec)
Throughput:             730.13 Kb/second

EV署名を付ける

c:\>"C:\Program Files (x86)\Windows Kits\10\bin\x64\signtool.exe" sign /tr
http://timestamp.digicert.com /fd sha256 /td sha256 /a 1.cab
C:\Users\applet\Documents\Visual Studio 2013\Projects\kbf_oya_mk2_v20l23\release\disk64>"C:\Program Files (x86)\Windows Kits\10\bin\x64\signtool.exe" sign /tr http://timestamp.digicert.com /fd sha256 /td sha256 /a 1.cab
Done Adding Additional Store
Successfully signed: 1.cab

マイクロソフトのサイトにて構成証明署名を実施する

Windows ハードウェアデベロッパーセンターからダッシュボードをクリックして、マイクロソフトアカウントにてログインして、マイクロソフトパートナーセンターの自分のアイコンから既定のディレクトリを選ぶと、Hardwareのところに行けるので、そこからSubmit new Hardwareをクリックすると、.cabファイルをコミットするところに行けます。(ダッシュボードからHardwareを選ぶ行き方だといつまでもAzure Active Directoryに入れず難儀します。)

Private Product ID	Product Name	Submission Status	Submission Created Date	Submission Type	Permission	Source	Shared Product ID	Submission ID	Certification Type	Submission Name
14236307932332800	kbf_oya_mk2_x64	Failed	2020/03/18	Initial	Author	Applet LLC	400007636	1152921505689490492	Attestation	kbf_oya_mk2_x64
13765273937102421	kbf_oya_mk2_x86	Failed	2020/03/18	Initial	Author	Applet LLC	400007574	1152921505689490264	Attestation	kbf_oya_mk2_x86
14294233073285828	nodoka86	Complete	2020/03/07	Initial	Author	Applet LLC	400001152	1152921505689456039	Attestation	nodoka86
13518659989654461	nodoka64	Complete	2020/03/06	Initial	Author	Applet LLC	400001018	1152921505689455637	Attestation	nodoka64

上にも出ているように結果はFailでした。infファイルに不具合があり受け付けてもらえずでした。

InfVerif failed for Driver. Partial Log:Error 1235 in kbf_oya_mk2.inf, line 95 : String token ‘SystemRoot’ not defined in [Strings] section – if intending to use a literal ‘%’ in a string, use ‘%%’ instead.

真面目に手元でbuildした方が良さそうですが、直して再トライしてみようと思います。旨く出来たら有償になりますが、配布できるようになると思います。

親指の友Mk-II デバイスドライバへの署名” への6件のフィードバック

  1. Visual Studio 2013あたりで、build出来るようトライしていたが直すところ多すぎるので断念。コマンドプロンプトから実行に変える。x64とx86を同じコマンドプロンプトで実行すると失敗するので、分ける必要がある。またWindows Server 2003 SP1 DDK(C:\WinDDK\3790.1830)ではbuild出来るが、x64はWDK(6001.18002)以降にしたいところ。しかしWDKだと、layoutドライバのbuildではシンボルが一部未解決となり失敗する。infファイルの不具合については解決策は判明。%SystemRoot%を%%SytemRoot%%に変えれば良い。しかしながらなかなか厳しい。

  2. 結局のところ、断念していたVisual Studio 2013上に、filterドライバ、layoutのDLL、ユーティリティの実行ファイルのbuild環境を構築した。

    ユーティリティであるconfig_utyは、Visual Studioの自動変換に任せた。filterドライバやlayoutドライバは、それぞれFilter DriverやEmpty DLL for Driversをプロジェクト生成時に雛形として選んで、ソースコードを置き換えるようにすると移行できた。

    Visual Studioは規定だといろんなところに出来たものを出力するので整理が必要だが、一応すべてのバイナリがbuild出来るたように見える。ただしデバイスドライバ名がfilter1.sysなどになっているので直す必要がある。

  3. 構成証明署名は結論から言うと断念。infファイルではインストールできないデバイスドライバだと判断され、パートナーセンターでエラーになる。結局通常の署名までしかできないので、その方向でトライしてみたところ、x86環境ではインストールできるようになった。x64環境では、catファイルだけの署名ではデバイスドライバとしてインストールに失敗するので、全部のファイルにつけた後で、catファイルを作って署名することにトライしてみる。

    1. sysやdllに署名を付け、catファイルにつけても、テストモードで無いとインストールできない。また再起動後は、署名無しドライバだと判断され機能しない。昨日とは異なる結論だが、infを手直しして、構成証明署名を取るしかないという結論になる。

  4. infファイルの内容を最小限にして、再度構成証明署名にトライ。以下のエラーでFail。これは日本は既に3/22になっているのに、米国は未だなので失敗している。orz. 明日やり直してみましょう。

    22.9.7: DriverVer set to a date in the future (postdated DriverVer not allowed) in x64\kbf_oya_mk2.inf.

コメントを残す