2012-01-15 22 views

答えて

0

グレート質問の方に私をポイントしてください!このコーディングを行っていたら、まずキーチェーンサービスを使って解決策を考えようと思います。

まず、キーチェーンアイテムを取得する必要があります。言って、`SecItemCopyMatching()'

これは、見つかったアイテムへの参照を返します。好ましくは、SecCertificateRef(アップルのKeychain Services Referenceガイドに詳細に記載されている)。

私の頭の上からSecCertificateRefのメタデータ(または有効期限)を明示的に取得する簡単な方法はありません。 There's a code snippet I found on books.google.com "証明書の妥当性をチェックする"(218ぺージ& 219 - 私はそれをあなたのためにリンクしました)は、証明書が一致するキーに基づいて使用を許可するかどうかを確認するチェック(その例では、件名またはドメイン名です;あなたにとっては有効期限です)。彼らの技術はあなたを助けるかもしれません。

OpenSSLを使用する場合、I found an answer where you can come up with the expiration date from the command line using the openssl toolです。あなたが証明書のハンドルを得ることができれば、私はこれもプログラマチックに行うことができます。

+0

こんにちは、ありがとうございました。どちらも参考になります。 – user1150393

+1

こんにちは、ありがとうございました。どちらも参考になります。 証明書がキ​​ーチェーンに保存されていないため、最初のアプローチを使用できませんでした。証明書をファイルに保存しています。 私はopensslに進みました、それは簡単で簡単です。 手順: 1)d2i_PKCS12_fp APIを使用してPKCS12を取得します。 2)PKCS12_parse APIを使用してx509を解析して取得します。 3)最後にX509_get_notAfterを使用してx509から有効期限を取得します。 アップルがなぜSecGetResultやiOSの他の有用なAPIを整えたのかよくわかりません。 – user1150393

+0

確かに分かりませんが、私の推測では、PKCS12以外の種類の証明書を扱う必要があるため、可能な限り多くの種類の証明書を処理できるように、Appleが提供するコードはできるだけ一般的にする必要があります。 –

関連する問題