PAM_CONV(3) | FreeBSD Library Functions Manual | PAM_CONV(3) |
名称
pam_conv — PAM 会話システムライブラリ
Pluggable Authentication Module Library (libpam, -lpam)書式
#include < security/pam_appl.h>
struct pam_message { int msg_style; char *msg; }; struct pam_response { char *resp; int resp_retcode; }; struct pam_conv { int (*conv)(int, const struct pam_message **, struct pam_response **, void *); void *appdata_ptr; };
解説
PAM ライブラリは、ユーザとの通信のためにアプリケーションで定義されたコールバックを使用します。このコールバックはトランザクションの始めで pam_start() に渡された struct pam_conv で指定されます。また、 PAM_CONV 項目の値を変更することによって、PAM トランザクションの間の任意の時点で会話関数を設定するかまたは変更することができます。会話関数の最初の引数は処理するメッセージ (最大 PAM_NUM_MSG までの) の数を指定します。 2 つ目の引数は実際のメッセージを含む pam_message 構造体へのポインタの配列へのポインタです。
各メッセージは struct pam_message の msg_style メンバによって指定された 4 つのタイプの 1 つを持つことができます:
- PAM_PROMPT_ECHO_OFF
- プロンプトを表示して、端末にそれをエコーしないでユーザの応答を受け付けます。これはパスワードで一般的に使用されます。
- PAM_PROMPT_ECHO_ON
- プロンプトを表示して、端末にそれをエコーしてユーザの応答を受け付けます。これはログイン名とワンタイムパスフレーズで一般的に使用されます。
- PAM_ERROR_MSG
- エラーメッセージを表示します。
- PAM_TEXT_INFO
- 通知メッセージを表示します。
いずれの場合にも、表示するプロンプトまたはメッセージは struct pam_message の msg メンバによって指されます。それは終端のヌル文字を含んで、最大 PAM_MAX_MSG_SIZE 文字です。
成功すれば、会話関数は、渡されたメッセージごとに 1 つの struct pam_response の連続した配列を割り当てて書き込むべきです。各メッセージへのユーザの応答へのポインタ (または、通知またはエラーメッセージの場合は NULL) は対応する struct pam_response の resp メンバに格納されるべきです。各応答は終端のヌル文字を含んで、最大 PAM_MAX_RESP_SIZE 文字です。
struct pam_response の resp_retcode メンバは、未使用であり、0 に設定されるべきです。
会話関数は 3 つ目の引数によって指された位置にこの配列へのポインタを格納するべきです。 free(3) を使用して、この配列と応答自体の両方を解放することは呼び出し側の責任です。合法的にそうすることを確実にするのは会話関数の責任です。
struct pam_conv の appdata_ptr メンバはその 4 つ目と最後の引数として会話関数に変更せずに渡します。
失敗すれば、会話関数は割り付けたたすべてのリソースを解放して、事前に定義された PAM エラーコードの 1 つを返すべきです。
戻り値
会話関数は次の値の 1 つを返すべきです:- [ PAM_BUF_ERR]
- メモリバッファエラー。
- [ PAM_CONV_ERR]
- 会話失敗。
- [ PAM_SUCCESS]
- 成功。
- [ PAM_SYSTEM_ERR]
- システムエラー。
関連項目
openpam_nullconv(3), openpam_ttyconv(3), pam(3), pam_error(3), pam_get_item(3), pam_info(3), pam_prompt(3), pam_set_item(3), pam_start(3)規格
X/Open Single Sign-On Service (XSSO) - Pluggable Authentication Modules, June 1997.作者
OpenPAM ライブラリとこのマニュアルページは FreeBSD プロジェクトのために DARPA CHATS 研究プログラムの一部として DARPA/SPAWAR 規約 N66001-01-C-8035 (“CBOSS”) の下で ThinkSec AS と Network Associates Laboratories, the Security Research Division of Network Associates, Inc. によって開発されました。OpenPAM ライブラリは、
<des@des.no>によって保守されています。September 7, 2013 | FreeBSD |