5

公開鍵を固定しようとしています。がありSecKeyRef、をシリアル化したいと思いSecRSAPublicKeyCopyPublicSerializationます。SecRSAPublicKeyCopyPublicSerializationPKCS#1(つまり、SubjectPublicKeyInfo)でシリアル化され、機能はhttp://www.opensource.apple.com/source/Security/Security-55163.44/sec/Security/SecRSAKey.cに記載されています。

PKCS#1は、公開鍵(つまり、SubjectPublicKeyInfo)のASN.1エンコーディングです。そのフォーマットはピン留めに適しています。慣れていない人にとって、ピン留めは、ホストに期待される証明書または公開鍵のホワイトリストです。これらは通常、ホストを識別するときに交換可能ですが、そうでない場合もあります。たとえば、Googleの公開鍵は静的(固定)ですが、Googleは「外部」X509証明書をローテーションします。この場合、証明書ではなく公開鍵を固定します。

の適切なヘッダーとフレームワークはSecRSAPublicKeyCopyPublicSerialization何ですか?を含めましSecurity.frameworkたが、の宣言がなく、SecRSAPublicKeyCopyPublicSerializationリンク中に関数がありません。私は含めようとしましたSecRSAKey.h

不器用なタグについて申し訳ありません。

ジェフ

4

1 に答える 1

3
static OSStatus SecRSAPublicKeyCopyPublicSerialization(SecKeyRef key, CFDataRef* serialized)

セキュリティ フレームワークによって内部的に使用される静的関数であり、フレームワークの外部からこの関数を呼び出すことはできません。

SecItemExportを見てください。SecKeyRefこの関数は、 aを異なる外部表現に変換できます。

更新:タグを見逃していSecItemExportOSX 10.7 以降でのみ使用でき、iOS では使用できません。

iOS では、(私が思うに) キーを KeyChain ( SecItemAdd)に追加し、 SecItemCopyMatching()( を にkSecReturnData設定してYES) を使用して生データを取得する必要があります。

「CryptoExercise」サンプル プロジェクトのSecKeyWrapper.mgetPublicKeyRefメソッドが役立つ場合があります。

于 2013-02-07T09:41:52.867 に答える