問題タブ [security-framework]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - SecItemImport を使用した PKCS12 のインポート
Apple のOS X に関するドキュメントSecItemImport
では、 を使用してSecKeyRef
. 関数のシグネチャは次のようになります。
次のコードは、単一の RSA キーを含む PKCS12 バイト配列のロードを試みます。
上記をコンパイルするには、clang filename.c -framework Security -framework CoreFoundation
.
このコードはエラー (OSStatus 0) を返しませんが、配列に解析済みのSecKeyRef
. かなりの数の異なるフラグを試しましたが、必要なデータを返すことができませんでした。私が間違っていることを誰かが知っていますか?
macos - OS X キーチェーンに関連付けられた見えないファイル
通常、キーチェーンファイル (拡張子.keychain
は ) には、同じディレクトリにある目に見えないファイルが関連付けられているようです。
この非表示のファイルには、常に次のプロパティがあります。
- 空です (0 バイト)。
- その権限は
0444
(すべてのユーザーに対して読み取り専用) です。 その名前は、
/li>.fl
8 個の 16 進文字が続くもので構成されます。例えば:
非表示のファイルは削除できますが、キーチェーンの内容が次に変更されると、非表示のファイルが同じ名前で再作成されます。
キーチェーン アクセスユーティリティを使用して説明する手順を次に示します。
- [ファイル] > [新しいキーチェーン]を選択し、作成先のディレクトリを選択して、新しいキーチェーンを作成します。新しいキーチェーンと同じディレクトリに非表示のファイルが作成されます。
- 非表示のファイルを削除します (Finder またはターミナルを使用)。
- キーチェーンの内容を変更します。たとえば、File > New Secure Note Itemを選択して、キーチェーンにセキュア ノートを追加します。非表示のファイルは同じ名前で再作成されます。
- File > Delete Keychain > Delete References & Files を選択して、キーチェーンを削除します。非表示のファイルも削除されます。
これが OS X 10.8および10.9で発生することを確認しました。
アップデート
security
ターミナルでApple のツールを使用してキーチェーンを操作すると、同じ非表示のファイルが作成されます。
新しいキーチェーンを作成します。非表示のファイルも作成されます。
/li>見えないファイルを削除します。
/li>キーチェーンの内容を変更します (例: インターネット パスワードを追加するなど)。非表示のファイルが同じ名前で再作成されます。
/li>キーチェーンを削除します。非表示ファイルも削除されます。
/li>
質問
- これらの目に見えないファイルが作成されるのはなぜですか? 彼らの目的は何ですか?
fl
ファイル名の意味は何ですか?- ファイル名に含まれる 8 つの 16 進文字は何ですか? キーチェーンを識別するある種の一意の ID またはハッシュ?
- キーチェーンが作成または変更されたときにこれらのファイルが作成されないようにする方法はありますか?
objective-c - 信頼できるアプリケーションから OS X キーチェーン項目にアクセスする
キーチェーンを作成してから、事前定義された信頼できるアプリケーション リストを含む項目を追加しています。
Keychain Access アプリケーションで新しく作成したキーチェーンを開くと、信頼できるアプリのリストに自分のアプリケーションが表示されます。
問題は、信頼できるアプリケーションの 1 つを介してそのキーチェーンからキーを読み取ろうとしたときです。
genericPassErr
に等しい-25293
、つまり
Error: 0xFFFF9D33 -25293 The user name or passphrase you entered is not correct.
コードの前半で を実行SecKeychainSetUserInteractionAllowed(0)
し、この行をコメントアウトすると、アプリケーションがキーチェーンにアクセスする許可を求めるプロンプトがシステムから表示されます。許可すると、すべて正常に実行されます。ただし、要点は、ユーザーにプロンプトを表示せずにそれを実行できる必要があるということです。アプリを ACL に追加したので、このように動作することを期待しています。私が間違っていることを知っていますか?
添付のスクリーンショットで「すべてのプログラムがこのアイテムにアクセスできる」ラジオボックスにチェックを入れると、すべてがプロンプトなしで機能します。しかし、リストされているアプリだけにアクセスできるようにしたくありません。
ios - 暗号化された形式のキーチェーン パスワードを取得する
Keychain、Security.framework、および Apple の KeychainWrapper クラスを使用して、ユーザーのパスワードをアプリに安全に保存する iOS アプリに取り組んでいます。
このアプリにより、ユーザーはアカウントを作成できます。ユーザーがアカウントを作成すると、アプリは暗号化されたバージョンのユーザー パスワードをサーバーに送信する必要があります (POST 要求)。
これはすべて機能しますが、データを安全に保存して取得できるという問題がありますが、データの暗号化されたバージョンを取得する方法がわかりません。
つまり、ユーザーがアカウントを作成し、パスワードを「hello」に設定したとします。次に、それをキーチェーンに安全に保存するようにアプリを設定します。
そのため、iOS はそれを暗号化し、キーチェーンに保存します。この質問のために、暗号化されたバージョンが「h235llo」であるとしましょう。
サーバーにパスワードを送信したいとき、「こんにちは」を送信したくありません。「h235llo」(暗号化された文字列)を送信したい。暗号化された文字列にアクセスするにはどうすればよいですか?
キーチェーンにアクセスするために使用しているコードは次のとおりです。
ユーザー名/パスワードをキーチェーンに安全に保存するために、次のようにしています。
そして、キーチェーンからユーザー名/パスワードを安全に取得するために、私はこれを行っています:
この問題について何か助けていただければ幸いです。
時間をありがとう、ダン。