{{div_begin}} [[← 16 章に戻る|C/C++ Sync Suite Reference601/16]] [[↑トップへ|C/C++ Sync Suite Reference601]] [[18 章に進む →|C/C++ Sync Suite Reference601/18]] {{div_end}} {{div_begin style="margin-bottom:-10px"}} !!!17 パスワード ライブラリ {{div_end}} {{div_begin "style='position:absolute;right:0px;font-size:70%;margin-right:15px;margin-top:15px;width:250px;height:900px;'"}} *{{goto Password Library Functions,パスワード ライブラリ関数}} **{{goto PwdVerify,PwdVerify}} {{div_end}} {{div_begin "style='position:relative;padding:0px;padding-right:5px;padding-left:10px;margin-right:250px;margin-top:20px;width:auto;border-right-style:dotted;border-right-width:2px;border-right-color:silver;'"}} パスワード ライブラリは拡張アプリケーションがユーザの提供する暗号化されていない文字列が保存されている暗号化されたパスワードと一致するかどうかを検証することを可能にします。 この機能は {{span style='color:blue;font-family:monospace;',PWD5.lib}} の中でライブラリ関数として提供され、{{span style='color:blue;font-family:monospace;',password.h}} の中で宣言されています。 *{{goto Password Library Functions,パスワード ライブラリ関数}} !!{{anchor Password Library Functions}}パスワード ライブラリ関数 {{goto top,^TOP^}} この節では、パスワード ライブラリの中の 1 つの関数 {{goto PwdVerify,PwdVerify()}} について説明します。 !{{anchor PwdVerify}}PwdVerify 関数 {{goto top,^TOP^}} '''目的''' ユーザが提供した暗号化されていない文字列が保存されている暗号化されたパスワードと一致するかどうか検証します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',password.h}} '''Prototype''' BOOL PwdVerify ( char *sEncryptedPwd, const char *sPassword ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ sEncryptedPwd}} **検証する相手となる暗号化されたパスワードを保持している null で終了する文字バッファへのポインタ。 *{{span style='color:blue;font-family:monospace;',→ sPassword}} **検証する暗号化されていないパスワードを保持している null で終了する文字バッファへのポインタ。 '''返り値''' {{span style='color:blue;font-family:monospace;',sPassword}} 値が ({{span style='color:blue;font-family:monospace;',PwdVerify()}} がそれを暗号化した後に) {{span style='color:blue;font-family:monospace;',sEncryptedPwd}} 値と一致する場合、{{span style='color:blue;font-family:monospace;',true}} を返します。 値が一致しない場合、{{span style='color:blue;font-family:monospace;',false}} を返します。 ::NOTE :::{{span style='color:blue;font-family:monospace;',PwdVerify()}} は大文字/小文字を区別します。この関数は 2 つの文字列が大文字/小文字の区別も含めて一致する場合にのみそれらが一致するとみなします。 '''コメント''' ユーザはプライベート レコードへのアクセスを制御するため、それにデバイスのロックを解除するためにデバイスにパスワードをセットすることができます。HotSync セッションの最中に、HotSync マネージャはデバイスの暗号化されたパスワードをユーザ データ ファイルの中に保存されている暗号化されたパスワードと比較します。それらが一致しない場合 (または、ユーザ データ ファイルがそのユーザのパスワードを保持していない場合)、HotSync マネージャはそのファイルをデバイス上のパスワードで更新します。デスクトップ上では、アプリケーションはユーザのデータへのアクセスを制御するためにそれと同じパスワードを使用することができます。 例えば、アプリケーションがユーザにダイアログ ボックスにパスワードを入力するよう促す場合、そのアプリケーションはユーザの暗号化されたパスワードをユーザ データ ファイルから取得するために {{goto UmGetUserPassword,UmGetUserPassword()|C/C++ Sync Suite Reference601/16}} を呼び出さなければなりません。それからそのアプリケーションはユーザが正しいパスワードを入力したかどうかを検証するために {{span style='color:blue;font-family:monospace;',PwdVerify()}} を呼び出します。{{span style='color:blue;font-family:monospace;',PwdVerify()}} はユーザが提供した暗号化されていない文字列 ({{span style='color:blue;font-family:monospace;',sPassword}}) を暗号化し、それを {{goto UmGetUserPassword,UmGetUserPassword()|C/C++ Sync Suite Reference601/16}} によって取得された暗号化されたパスワード ({{span style='color:blue;font-family:monospace;',sEncryptedPwd}}) と比較します。ユーザが正しいパスワードを入力した場合、{{span style='color:blue;font-family:monospace;',PwdVerify()}} は {{span style='color:blue;font-family:monospace;',true}} を返します。 '''互換性''' ::NOTE :::Palm OS Cobalt はデバイス上にあるユーザのパスワードを上記のようにデスクトップに転送することを許可しません。その代わりに、ユーザは Palm OS Desktop ソフトウェアを使ってデバイス上のパスワードとは別のパスワードをセットすることができ、あなたはそのパスワード対して {{span style='color:blue;font-family:monospace;',PwdVerify()}} を使ってユーザが入力したパスワードを検証することができます。 Palm OS 4.0 以降では、デバイス上のパスワードは大文字/小文字の区別があります。それゆえ、{{span style='color:blue;font-family:monospace;',PwdVerify()}} はユーザが提供した文字列が大文字/小文字の区別も含めて保存されているパスワードと等価である場合にのみ {{span style='color:blue;font-family:monospace;',true}} を返します。 しかしながら、4.0 より前の Palm OS バージョンでは、デバイス上のセキュリティ アプリケーションはユーザがパスワードをセットするときにパスワードの中の大文字をすべて小文字に変換します。それゆえ、すべて小文字に変換されたパスワードとの一致を検出するデスクトップの {{span style='color:blue;font-family:monospace;',PwdVerify()}} 関数に対しては、呼び出し元はユーザが {{span style='color:blue;font-family:monospace;',sPassword}} パラメータ経由で提供する暗号化されていないパスワードに大文字が含まれていないことを保証しなければなりません。{{span style='color:blue;font-family:monospace;',sPassword}} が大文字を含む場合、{{span style='color:blue;font-family:monospace;',PwdVerify()}} は常に {{span style='color:blue;font-family:monospace;',false}} を返します。 あなたが {{span style='color:blue;font-family:monospace;',PwdVerify()}} を呼び出す前にユーザが提供した暗号化されていない文字列を小文字に変換しなければならないかどうかを決定するには、ユーザのデバイスの Palm OS のバージョンを知らなければなりません。HotSync の最中に、デバイスのメジャ Palm OS バージョン番号を取得するために {{goto SyncGetHHOSVersion,SyncGetHHOSVersion()|C/C++ Sync Suite Reference601/5-2}} を呼び出します。HotSync の最中でないときに {{span style='color:blue;font-family:monospace;',PwdVerify()}} を使用するために、あなたはユーザ データ API - 例えば、{{goto UmSetInteger,UmSetInteger()|C/C++ Sync Suite Reference601/16}} - を使ってユーザの Palm OS バージョンをデスクトップに保存し、後であなたが {{span style='color:blue;font-family:monospace;',PwdVerify()}} を呼び出す前にユーザが提供した文字列を小文字に変換すべきか決定するためにそれを取得することができます。 '''参照''' {{goto UmGetUserPassword,UmGetUserPassword()|C/C++ Sync Suite Reference601/16}} {{div_end}} {{div_begin "style='border-top-style:solid;border-top-width:1px;border-top-color:silver;'"}} [[← 16 章に戻る|C/C++ Sync Suite Reference601/16]] [[↑トップへ|C/C++ Sync Suite Reference601]] [[18 章に進む →|C/C++ Sync Suite Reference601/18]] {{div_end}}