コードでバイナリの署名証明書を検証する方法を見つけようとしています。たとえば、「codesign -vvvvd /YourApp/Executable」というコマンドを実行すると、「Authority: Apple Root CA」などの出力が表示される場合があります。コードでこれを行う方法を探しています。正しい方向へのプッシュまたはナッジは際立っています。
ありがとう!
コードでバイナリの署名証明書を検証する方法を見つけようとしています。たとえば、「codesign -vvvvd /YourApp/Executable」というコマンドを実行すると、「Authority: Apple Root CA」などの出力が表示される場合があります。コードでこれを行う方法を探しています。正しい方向へのプッシュまたはナッジは際立っています。
ありがとう!
Macでは、コード署名および検証機能SecStaticCode
を提供します。SecCode
具体的にSecCodeCopySelf()
はSecCodeCheckValidityWithErrors()
、現在のアプリケーションのコード署名をチェックするために使用されます。
(同じ証明書または他の証明書を使用して)変更および再署名されたアプリケーションは、事実上検出できないことに注意してください。アプリケーションを変更して再署名できる人は、検証コードをスタブアウトまたは無効にする可能性があるためです。上記の関数は、せいぜい、正直な人を正直に保つソリューションです。
iOSの場合、Appleの公式の見解は、ジェイルブレイクの検出などを試みてはならず、OSを信頼して正しく実行する必要があるというものです。動的にロードされたコードを実行したり、他のアプリケーションのバイナリデータを読み取ったりすることはできないため、そのプラットフォームでコード署名を検証できることはあまり役に立ちません。(Appleの公式の立場があなたにとって役立つかどうかは、まったく別の議論です。)
これは、コード署名サービスまたはOleBegemannのコードを使用するOSXアプリケーションで可能ですが、iOSでは可能ではないようです。