Palm Programmer's Laboratory
C/C++ Sync Suite Reference601/17
パスワード ライブラリは拡張アプリケーションがユーザの提供する暗号化されていない文字列が保存されている暗号化されたパスワードと一致するかどうかを検証することを可能にします。
この機能は PWD5.lib の中でライブラリ関数として提供され、password.h の中で宣言されています。
パスワード ライブラリ関数 ^TOP^
この節では、パスワード ライブラリの中の 1 つの関数 PwdVerify() について説明します。
PwdVerify 関数 ^TOP^
目的
ユーザが提供した暗号化されていない文字列が保存されている暗号化されたパスワードと一致するかどうか検証します。
宣言されている場所
password.h
Prototype
BOOL PwdVerify ( char *sEncryptedPwd, const char *sPassword )
パラメータ
- → sEncryptedPwd
- 検証する相手となる暗号化されたパスワードを保持している null で終了する文字バッファへのポインタ。
- → sPassword
- 検証する暗号化されていないパスワードを保持している null で終了する文字バッファへのポインタ。
返り値
sPassword 値が (PwdVerify() がそれを暗号化した後に) sEncryptedPwd 値と一致する場合、true を返します。
値が一致しない場合、false を返します。
- NOTE
- PwdVerify() は大文字/小文字を区別します。この関数は 2 つの文字列が大文字/小文字の区別も含めて一致する場合にのみそれらが一致するとみなします。
コメント
ユーザはプライベート レコードへのアクセスを制御するため、それにデバイスのロックを解除するためにデバイスにパスワードをセットすることができます。HotSync セッションの最中に、HotSync マネージャはデバイスの暗号化されたパスワードをユーザ データ ファイルの中に保存されている暗号化されたパスワードと比較します。それらが一致しない場合 (または、ユーザ データ ファイルがそのユーザのパスワードを保持していない場合)、HotSync マネージャはそのファイルをデバイス上のパスワードで更新します。デスクトップ上では、アプリケーションはユーザのデータへのアクセスを制御するためにそれと同じパスワードを使用することができます。
例えば、アプリケーションがユーザにダイアログ ボックスにパスワードを入力するよう促す場合、そのアプリケーションはユーザの暗号化されたパスワードをユーザ データ ファイルから取得するために UmGetUserPassword() を呼び出さなければなりません。それからそのアプリケーションはユーザが正しいパスワードを入力したかどうかを検証するために PwdVerify() を呼び出します。PwdVerify() はユーザが提供した暗号化されていない文字列 (sPassword) を暗号化し、それを UmGetUserPassword() によって取得された暗号化されたパスワード (sEncryptedPwd) と比較します。ユーザが正しいパスワードを入力した場合、PwdVerify() は true を返します。
互換性
- NOTE
- Palm OS Cobalt はデバイス上にあるユーザのパスワードを上記のようにデスクトップに転送することを許可しません。その代わりに、ユーザは Palm OS Desktop ソフトウェアを使ってデバイス上のパスワードとは別のパスワードをセットすることができ、あなたはそのパスワード対して PwdVerify() を使ってユーザが入力したパスワードを検証することができます。
Palm OS 4.0 以降では、デバイス上のパスワードは大文字/小文字の区別があります。それゆえ、PwdVerify() はユーザが提供した文字列が大文字/小文字の区別も含めて保存されているパスワードと等価である場合にのみ true を返します。
しかしながら、4.0 より前の Palm OS バージョンでは、デバイス上のセキュリティ アプリケーションはユーザがパスワードをセットするときにパスワードの中の大文字をすべて小文字に変換します。それゆえ、すべて小文字に変換されたパスワードとの一致を検出するデスクトップの PwdVerify() 関数に対しては、呼び出し元はユーザが sPassword パラメータ経由で提供する暗号化されていないパスワードに大文字が含まれていないことを保証しなければなりません。sPassword が大文字を含む場合、PwdVerify() は常に false を返します。
あなたが PwdVerify() を呼び出す前にユーザが提供した暗号化されていない文字列を小文字に変換しなければならないかどうかを決定するには、ユーザのデバイスの Palm OS のバージョンを知らなければなりません。HotSync の最中に、デバイスのメジャ Palm OS バージョン番号を取得するために SyncGetHHOSVersion() を呼び出します。HotSync の最中でないときに PwdVerify() を使用するために、あなたはユーザ データ API - 例えば、UmSetInteger() - を使ってユーザの Palm OS バージョンをデスクトップに保存し、後であなたが PwdVerify() を呼び出す前にユーザが提供した文字列を小文字に変換すべきか決定するためにそれを取得することができます。
参照