Wineの下でOS Xで実行できるWindowsアプリケーションがあります。便宜上、アプリケーションを OS X アプリ ( xxx.appWineBottler に基づくフォルダーの ZIP アーカイブ) としてパックします。
CFBundleExecutableアプリのメインの実行可能ファイル ( のタグで定義Info.plist) は、バイナリではなくシェル スクリプトであることに注意してください。
OS X Gatekeeper を通過するようにアプリケーションに署名したいと考えています。私の完全なビルド プロセスは Windows で実行されるため (実際には Mac をまったく持っていないため)、Windows で署名する必要があります。
_CodeSignatureアプリに署名すると、次の4 つのファイルを含むフォルダーが作成されることが既にわかりました。
CodeDirectory
CodeRequirements
CodeResources
CodeSignature
これらのファイルの内容を説明する仕様は見つかりませんでした。
実験的に、これCodeResourcesはアプリ内のすべてのファイルの SHA-1 ハッシュを含む XML ファイルであることがわかりました。私はそれを生み出すことができます。
CodeRequirementsバイナリファイルの内容は固定のようです。アプリの内容と変わらないようです。ご確認いただければ幸いです。このファイルは何に適していますか?
バイナリファイルに関してはCodeDirectory、CodeSignature私には手がかりがありません。
どちらのファイルも、アプリのコンテンツによって変化します。アプリ ファイルの変更 (プレーン テキストのライセンス ファイルを含む) は、それらに影響を与えるようです。
CodeSignature明らかに署名が含まれています。ファイル内のコード署名証明書に関するプレーンテキスト情報を確認できます。ファイルを生成できるツールはありますか? 署名なので、かなり標準的なはずです。ただし、生成をより困難にする追加のバイナリ メタデータが存在する可能性があります。具体的に何に署名するか知っている人はいますか?CodeResourcesアプリ内の他のすべてのファイルを説明しているため、ファイルのみに署名していると想像できます。それとも、実際にアプリ内のすべてのファイルに再帰的に署名しますか?
ネイティブの OS X アプリCodeResourcesのみです。したがって、実際には署名はありません_CodeSignature。メインの実行可能バイナリに署名が埋め込まれているためだと思います。Info.plist私の [Windows] バイナリ (上記のように直接参照されていませんが) は、 Windows を使用してコード署名されていることに注意してくださいsigntool.exe。codesign -d -vvv xxx.app出力には証明書に関する情報が含まれているため、OS X は参照がなくても署名を認識しているようです。
Executable=/Applications/WinSCP.app/Contents/MacOS/startwine
Identifier=WinSCP
Format=bundle with generic
CodeDirectory v=20100 size=135 flags=0x0(none) hashes=1+3 location=embedded
Hash type=sha1 size=20
CDHash=a1ef4f04b2c1b4b793788ce3ab9d7881528f3d95
Signature size=4867
Authority=Martin Prikryl
Authority=VeriSign Class 3 Code Signing 2010 CA
Authority=VeriSign Class 3 Public Primary Certification Authority - G5
Signed Time=23.4.2014 23:51:18
Info.plist entries=14
Sealed Resources version=2 rules=12 files=846
Internal requirements count=2 size=136
紛らわしいのは、バイナリ名がまったく言及されていないことです。とにかく、それはゲートキーパーを喜ばせません。上記のテストは、既にCodeResourcesファイルが含まれているアプリに対して実行されることに注意してください (これはおそらく、ファイルの内容と一致するものとしてもSealed Resources version参照されます)。rulesfiles