次の表に、いくつかの SASL インタフェースについての簡単な説明を示します。
表 E–1 クライアントとサーバーに共通する SASL 関数| 機能 | 説明 | 
|---|---|
| sasl_version | SASL ライブラリのバージョン情報を取得します。 | 
| sasl_done | SASL のすべての広域的状態を解放します。 | 
| sasl_dispose | 接続が完了したときに sasl_conn_t を破棄します。 | 
| sasl_getprop | プロパティー (ユーザー名、セキュリティー層に関する情報など) を取得します。 | 
| sasl_setprop | SASL プロパティーを設定します。 | 
| sasl_errdetail | 接続に関する最新のエラーから文字列を生成します。 | 
| sasl_errstring | SASL エラーコードを文字列に変換します。 | 
| sasl_encode | セキュリティー層を使用して送信するデータを符号化します。 | 
| sasl_encodev | セキュリティー層を介して伝送するデータブロックを符号化します。入力パラメータとして iovec * を使用します。 | 
| sasl_listmech | 使用できる機構のリストを作成します。 | 
| sasl_global_listmech | 考えられるすべての機構の配列を戻します。このインタフェースは現在使用されていません。 | 
| sasl_seterror | sasl_errdetail() によって戻されるエラー文字列を設定します。 | 
| sasl_idle | アイドル期間中またはネットワークの往復中に計算を行うように saslib を設定します。 | 
| sasl_decode | セキュリティー層を使用して受信したデータを復号化します。 | 
表 E–2 クライアント専用の基本的な SASL 関数
| 機能 | 説明 | 
|---|---|
| sasl_client_init | クライアントプラグインをロードおよび初期化するために最初に 1 度だけ呼び出されます。 | 
| sasl_client_new | クライアント接続を初期化します。sasl_conn_t コンテキストを設定します。 | 
| sasl_client_start | 接続に使用する機構を選択します。 | 
| sasl_client_step | 認証ステップを実行します。 | 
表 E–3 サーバーの基本的な SASL 関数 (クライアントでは任意)
| 機能 | 説明 | 
|---|---|
| sasl_server_init | サーバープラグインをロードおよび初期化するために最初に 1 度だけ呼び出されます。 | 
| sasl_server_new | サーバー接続を初期化します。sasl_conn_t コンテキストを設定します。 | 
| sasl_server_start | 認証の交換を開始します。 | 
| sasl_server_step | 認証交換ステップを実行します。 | 
| sasl_checkpass | 平文のパスフレーズを検査します。 | 
| sasl_checkapop | APOP のチャレンジおよび応答を検査します。擬似 APOP 機構 (CRAM-MD5 機構に似ている) を使用します。省略可能。このインタフェースは現在使用されていません。 | 
| sasl_user_exists | ユーザーが存在するかどうかを確認します。 | 
| sasl_setpass | パスワードを変更します。ユーザーエントリを追加します (省略可能)。 | 
| sasl_auxprop_request | 補助プロパティーを要求します。 | 
| sasl_auxprop_getctx | 接続用の補助プロパティーコンテキストを取得します。 | 
表 E–4 基本サービスを構成するための SASL 関数
| 機能 | 説明 | 
|---|---|
| sasl_set_alloc | 記憶域割り当て関数を割り当てます。このインタフェースは現在使用されていません。 | 
| sasl_set_mutex | 相互排他関数を割り当てます。このインタフェースは現在使用されていません。 | 
| sasl_client_add_plugin | クライアントプラグインを追加します。 | 
| sasl_server_add_plugin | サーバープラグインを追加します。 | 
| sasl_canonuser_add_plugin | ユーザーの正規化プラグインを追加します。 | 
| sasl_auxprop_add_plugin | 補助プロパティープラグインを追加します。 | 
表 E–5 SASL ユーティリティー関数
| 機能 | 説明 | 
|---|---|
| sasl_decode64 | 復号化に Base64 を使用します。 | 
| sasl_encode64 | 符号化に Base64 を使用します。 | 
| sasl_utf8verify | 文字列が有効な UTF-8 かどうかを確認します。 | 
| sasl_erasebuffer | セキュリティーに気を配る必要があるバッファーまたはパスワードを消去します。実装では回復されにくい消去ロジックを使用することがあります。 | 
表 E–6 SASL プロパティー関数
| 機能 | 説明 | 
|---|---|
| prop_clear() | 値と要求をプロパティーコンテキストから消去します (要求は省略可能) | 
| prop_dispose() | プロパティーコンテキストを破棄します | 
| prop_dup() | 既存の propctx の内容を複製して新しい propctx を作成します | 
| prop_erase() | プロパティーの値を消去します | 
| prop_format() | 要求されたプロパティー名を文字列に書式設定します | 
| prop_get() | コンテキストから propval 構造体の配列を戻します | 
| prop_getnames() | プロパティー名のリストを指定して、struct propval の配列を埋めます | 
| prop_new() | プロパティーコンテキストを作成します | 
| prop_request() | プロパティー名を要求に追加します | 
| prop_set() | プロパティー値をコンテキストに追加します | 
| prop_setvals() | プロパティーの値を設定します | 
| sasl_auxprop_getctx() | 接続用の補助プロパティーコンテキストを取得します | 
| sasl_auxprop_request() | 補助プロパティーを要求します | 
表 E–7 コールバックデータ型
| コールバック | 説明 | 
|---|---|
| sasl_getopt_t | オプション値を取得します。クライアントでもサーバーでも使用されます。 | 
| sasl_log_t | メッセージハンドラをロギングします。クライアントでもサーバーでも使用されます。 | 
| sasl_getpath_t | 機構を探すためのパスを取得します。クライアントでもサーバーでも使用されます。 | 
| sasl_verifyfile_t | ファイルが SASL によって使用されるかどうかを確認します。クライアントでもサーバーでも使用されます。 | 
| sasl_canon_user_t | ユーザー名の正規化関数。クライアントでもサーバーでも使用されます。 | 
| sasl_getsimple_t | ユーザーと言語のリストを取得します。クライアントでのみ使用されます。 | 
| sasl_getsecret_t | 認証シークレットを取得します。クライアントでのみ使用されます。 | 
| sasl_chalprompt_t | チャレンジを表示し、応答を入力するよう求めます。クライアントでのみ使用されます。 | 
| sasl_getrealm_t | 認証レルムを取得します。クライアントでのみ使用されます。 | 
| sasl_authorize_t | ポリシーのコールバックを承認します。サーバーでのみ使用されます。 | 
| sasl_server_userdb_checkpass_t | 平文のパスワードを検証します。サーバーでのみ使用されます。 | 
| sasl_server_userdb_setpass_t | 平文のパスワードを設定します。サーバーでのみ使用されます。 | 
表 E–8 SASL インクルードファイル
| インクルードファイル | コメント | 
|---|---|
| sasl/saslplug.h | |
| sasl/sasl.h | プラグインの開発に必要です | 
| sasl/saslutil.h | |
| sasl/prop.h | 
表 E–9 SASL 戻りコード: 一般
| 戻りコード | 説明 | 
|---|---|
| SASL_BADMAC | 整合性検査が失敗しました | 
| SASL_BADVERS | 機構のバージョンが一致しません | 
| SASL_BADPARAM | 指定されたパラメータが無効です | 
| SASL_BADPROT | プロトコルが正しくありません。操作を取り消します | 
| SASL_BUFOVER | バッファーがオーバーフローしました | 
| SASL_CONTINUE | 認証には別の手順が必要です | 
| SASL_FAIL | 一般的なエラー | 
| SASL_NOMECH | 機構がサポートされていません | 
| SASL_NOMEM | メモリー不足のため、操作を完了できません | 
| SASL_NOTDONE | 交換の後期になるまで情報を要求できません | 
| SASL_NOTINIT | SASL ライブラリが初期化されていません | 
| SASL_OK | 結果が正常です | 
| SASL_TRYAGAIN | 一時的に発生する障害 (弱い鍵など) | 
表 E–10 SASL 戻りコード: クライアント専用
| 機能 | 説明 | 
|---|---|
| SASL_BADSERV | サーバーが相互認証ステップに失敗しました | 
| SASL_INTERACT | ユーザーの操作が必要です | 
| SASL_WRONGMECH | 要求された機能が機構でサポートされていません | 
表 E–11 SASL 戻りコード: サーバー専用
| 機能 | 説明 | 
|---|---|
| SASL_BADAUTH | 認証エラー | 
| SASL_BADVERS | バージョンがプラグインと一致していません | 
| SASL_DISABLED | アカウントが無効です | 
| SASL_ENCRYPT | 機構を使用するには暗号化が必要です | 
| SASL_EXPIRED | パスフレーズの有効期限が切れているため、リセットする必要があります | 
| SASL_NOAUTHZ | 承認エラー | 
| SASL_NOUSER | ユーザーが見つかりません | 
| SASL_NOVERIFY | ユーザーは存在するが、検査方法がありません | 
| SASL_TOOWEAK | このユーザーに対して機構が弱すぎます | 
| SASL_TRANS | 使い捨て平文パスワードで、ユーザーに要求された機構が使用できるようになります | 
| SASL_UNAVAIL | リモート認証サーバーが使用できません | 
表 E–12 SASL 戻りコード – パスワード操作
| 機能 | 説明 | 
|---|---|
| SASL_NOCHANGE | 指定された変更は必要ありません | 
| SASL_NOUSERPASS | ユーザーが指定したパスワードは許可されていません | 
| SASL_PWLOCK | パスフレーズがロックされています | 
| SASL_WEAKPASS | セキュリティーポリシーに対してパスフレーズが弱すぎます |