リンク先のブログ投稿で説明されているように、AppxBlockMap.xml ファイルには、パッケージ内のすべてのファイルの暗号化ブロック ハッシュが格納されます。パッケージが Authenticode を使用して署名されている場合、このファイルはデジタル署名で検証および保護されます。
したがって、Windows では次の 2 つのツールがあります。
- パッケージ (.zip 形式) とブロックマップ ファイルを同時に作成するMakeAppx.exe。これは重要です。ブロック マップの内容は .zip ファイルのビットに密接に対応しているため、このステップでは任意の圧縮ツールを使用することはできません。ZIP API を使用して zip/app パッケージの作成をプログラムする必要があります。
- 「標準」認証コードを使用して署名をパッケージに追加するSignTool.exe 。
Windows API では、
Packaging APIを使用して MakeAppx と同じことを行うことができ、 SignerSign 関数を使用して SignTool と同じことを行うことができます。
MakeAppx プロセス全体は文書化されていませんが、ブロックマップ スキーマは実際にはここで説明されています:比較的理解しやすいパッケージ ブロック マップ スキーマ リファレンス。
PE ドキュメントの Authenticode 署名は、Windows Authenticode Portable Executable Signature Formatに記載されています。
ただし、これは PE (.dll、.exe など) ファイル専用であり (.CAB ファイルに署名することも可能であることに注意してください)、SignerSign が AppxSignature.p7x をビルドする方法が文書化されているとは思いません。ただし、https ://github.com/facebook/fb-util-for-appx というオープン ソース ツールがあります。このファイルhttps://github.com/facebook/fb-util-for-appx/blob/master/PrivateHeaders/APPX/Sign.hは、署名の入力として何を使用する必要があるかを宣言しています。彼らがその情報をどこで手に入れたのか、私にはわかりません。