EN JA
PAM_CONV(3)
PAM_CONV(3) FreeBSD Library Functions Manual PAM_CONV(3)

名称

pam_convPAM 会話システム

ライブラリ

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_messagemsg_style メンバによって指定された 4 つのタイプの 1 つを持つことができます:

PAM_PROMPT_ECHO_OFF
プロンプトを表示して、端末にそれをエコーしないでユーザの応答を受け付けます。これはパスワードで一般的に使用されます。
PAM_PROMPT_ECHO_ON
プロンプトを表示して、端末にそれをエコーしてユーザの応答を受け付けます。これはログイン名とワンタイムパスフレーズで一般的に使用されます。
PAM_ERROR_MSG
エラーメッセージを表示します。
PAM_TEXT_INFO
通知メッセージを表示します。

いずれの場合にも、表示するプロンプトまたはメッセージは struct pam_messagemsg メンバによって指されます。それは終端のヌル文字を含んで、最大 PAM_MAX_MSG_SIZE 文字です。

成功すれば、会話関数は、渡されたメッセージごとに 1 つの struct pam_response の連続した配列を割り当てて書き込むべきです。各メッセージへのユーザの応答へのポインタ (または、通知またはエラーメッセージの場合は NULL) は対応する struct pam_responseresp メンバに格納されるべきです。各応答は終端のヌル文字を含んで、最大 PAM_MAX_RESP_SIZE 文字です。

struct pam_responseresp_retcode メンバは、未使用であり、0 に設定されるべきです。

会話関数は 3 つ目の引数によって指された位置にこの配列へのポインタを格納するべきです。 free(3) を使用して、この配列と応答自体の両方を解放することは呼び出し側の責任です。合法的にそうすることを確実にするのは会話関数の責任です。

struct pam_convappdata_ptr メンバはその 4 つ目と最後の引数として会話関数に変更せずに渡します。

失敗すれば、会話関数は割り付けたたすべてのリソースを解放して、事前に定義された PAM エラーコードの 1 つを返すべきです。

戻り値

会話関数は次の値の 1 つを返すべきです:
[ PAM_BUF_ERR]
メモリバッファエラー。
[ PAM_CONV_ERR]
会話失敗。
[ PAM_SUCCESS]
成功。
[ PAM_SYSTEM_ERR]
システムエラー。

規格

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 ライブラリは、 Dag-Erling Smørgrav <des@des.no>によって保守されています。

September 7, 2013 FreeBSD