デジタル署名付きソフト配布プロジェクトもリブートさせるべく、最近存在を知った親指シフト入力方式向けのデバイスドライバ「ファイル置き場(ソフトウェア) — もしかしたら開発室 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した方が良さそうですが、直して再トライしてみようと思います。旨く出来たら有償になりますが、配布できるようになると思います。
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%%に変えれば良い。しかしながらなかなか厳しい。
結局のところ、断念していたVisual Studio 2013上に、filterドライバ、layoutのDLL、ユーティリティの実行ファイルのbuild環境を構築した。
ユーティリティであるconfig_utyは、Visual Studioの自動変換に任せた。filterドライバやlayoutドライバは、それぞれFilter DriverやEmpty DLL for Driversをプロジェクト生成時に雛形として選んで、ソースコードを置き換えるようにすると移行できた。
Visual Studioは規定だといろんなところに出来たものを出力するので整理が必要だが、一応すべてのバイナリがbuild出来るたように見える。ただしデバイスドライバ名がfilter1.sysなどになっているので直す必要がある。
構成証明署名は結論から言うと断念。infファイルではインストールできないデバイスドライバだと判断され、パートナーセンターでエラーになる。結局通常の署名までしかできないので、その方向でトライしてみたところ、x86環境ではインストールできるようになった。x64環境では、catファイルだけの署名ではデバイスドライバとしてインストールに失敗するので、全部のファイルにつけた後で、catファイルを作って署名することにトライしてみる。
sysやdllに署名を付け、catファイルにつけても、テストモードで無いとインストールできない。また再起動後は、署名無しドライバだと判断され機能しない。昨日とは異なる結論だが、infを手直しして、構成証明署名を取るしかないという結論になる。
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.