コンテンツにスキップ

コールバック関数設定API

以下の関数を使って、ユーザー認証コールバック関数の設定を行います。

ユーザ認証コールバック関数の設定

void wolfSSH_SetUserAuth(WOLFSSH_CTX* ctx , WS_CallbackUserAuthcb);

コールバック関数は、wolfSSH セッションオブジェクトを作成するために使用される WOLFSSH_CTX オブジェクトに設定されます。 この CTX を使用するすべてのセッション は同じコールバック関数を使用します。 このコンテキストは、コールバック関数のコン テキストと混同しないでください。

ユーザ認証コールバックコンテクストデータの設定

void wolfSSH_SetUserAuthCtx(WOLFSSH* ssh , void* ctx);

それぞれの wolfSSH セッションはそれ自身のユーザ認証コンテキストデータを持ってい るか、あるいはいくつかを共有することもできます。 wolfSSH ライブラリはこのコンテ キストデータの内容について何も感知しません。 データの作成、解放、および必要に応 じた排他制御の提供は、アプリケーションの責任です。 コールバックはライブラリから このコンテキストデータを受け取ります。

ユーザ認証コールバックコンテクストデータの取得

void* wolfSSH_GetUserAuthCtx(WOLFSSH* ssh);

提供された wolfSSH セッションに保存されたユーザ認証コンテキストデータへのポイン タを返します。 これはセッションを作成するために使用される wolfSSH のコンテキスト データと混同しないよう注意してください。

Echoserver サンプルプログラムのユーザ認証

サンプルの echoserver は、パスワードと公開鍵を使用してサンプルユーザーとの認証コ ールバックを実装しています。 コールバックの例と wsUserAuth は、wolfSSH コンテキ ストに設定されています:

wolfSSH_SetUserAuth(ctx, wsUserAuth);

パスワードファイルの例(passwd.txt)は、コロンで区切られたユーザー名とパスワー ドの単純なリストです。 このファイル内に存在するデフォルトは次のとおりです:

jill:upthehill
jack:fetchapail

公開鍵ファイルは、ssh-keygen を実行して得た公開鍵出力を 2 つ連結したものです。

ssh-rsa AAAAB3NzaC1yc...d+JI8wrAhfE4x hansel
ssh-rsa AAAAB3NzaC1yc...UoGCPIKuqcFMf gretel

すべてのユーザー認証データは、ユーザー名と、パスワードまたは公開鍵blob のSHA-256 ハッシュのペアをリンクリスト形式で格納されています。

設定ファイル内の公開鍵blob は Base64エンコードされており、ハッシュ前にデコードされます。 ユーザ名 - ハッシュペアのリストへのポインタは新しい wolfSSH セッションに保存されます。

wolfSSH_SetUserAuthCtx(ssh, &pwMapList);

コールバック関数は、最初に authType が公開鍵かパスワードかを調べ、そうでない場合は一般ユーザー認証失敗エラーコードを返します。次に、authData を介して渡された公開鍵またはパスワードをハッシュします。ユーザー名をリスト中から検索し見つけられない場合は無効ユーザーエラーコードを返します。ユーザー名が見つかった場合には、渡された公開鍵またはパスワードの計算ハッシュとペアに格納されているハッシュを比較します。一致した場合、関数は成功を返します。それ以外の場合、無効なパスワードまたは公開鍵 のエラーコードを返します。