スポンサーリンク

SKEY(3) FreeBSD ライブラリ関数マニュアル SKEY(3)

名称

skeylookup, skeyverify, skeychallenge, skeyinfo, skeyaccess, skey_getpass, skey_crypt − S/Key パスワード制御テーブルアクセス用のライブ ラリルーチン

ライブラリ

S/Key Password Control Table Access Library (libskey, −lskey)

書式

#include <stdio.h>
#include <skey.h>

int

skeylookup(struct skey *mp, const char *name);

int

skeyverify(struct skey *mp, char *response);

int

skeychallenge(struct skey *mp, const char *name, char *challenge);

int

skeyinfo(struct skey *mp, const char *name, char *ss);

int

skeyaccess(char *user, const char *port, const char *host, const char *addr);

char *

skey_getpass(const char *prompt, struct passwd *pwd, int pwok);

char *

skey_crypt(char *pp, char *salt, struct passwd *pwd, int pwok);

解説

これらのルーチンは、コンピュータシステムへのアクセスに使用される S/Key 一 時パスワードシステムをサポートします。 S/Key システム自体についての詳細 は、 skey(1) を参照してください。

skeylookup() は、一時のパスワードデータベースでエントリを検出します。処理 が成功すると(指定の名前に対応するエントリが検出されると)、呼び出し元に よって渡された skey 構造が埋められ 0 が返されます。ファイルの読み取り/書 き込みポインタは検出されたレコードの先頭に配置されます。指定の名前に対応 するエントリが見つからない場合は、ファイルの読み取り/書き込みポインタが ファイルの末尾に配置され、ルーチンは 1 を返します。データベースが開けない 場合、またはアクセスエラーが発生する場合、 skeylookup() は -1 を返しま す。

skeyinfo() 関数は、ユーザ「名」用の skey 情報をルックアップします。処理が 成功すると、呼び出し元の skey 構造が埋められ、 skeyinfo() は 0 を返しま す。オプションのチャレンジストリングバッファが与えられた場合は、それが更 新されます。処理が失敗すると(たとえば、名前が未知の場合、またはデータベー スにアクセスできない場合)、-1 が返されます。

skeychallenge() は、「名前」についての skey チャレンジストリングを返しま す。処理が成功すると、呼び出し元の skey 構造が埋められ、関数は 0 を返しま す。ファイル読み取り/書き込みポインタはレコードの先頭に残されます。処理が 成功しないと(すなわち、名前が見つからないと)、関数は -1 を返し、データ ベースは閉じられます。

skeyverify() は、s/key チャレンジへの応答を検証します。この関数が 0 を返 した場合、検証は成功であり、データベースはアップデートされています。 1 が 返された場合、検証は処理失敗し、データベースは変化しないままです。 -1 が 返された場合、何らかの種類のエラーがデータベースについて発生しており、 データベースは変化しないままです。 s/key データベースは必ずこの呼び出しに よって閉じられます。

skey_getpass() 関数を使用して、正規のパスワードまたは s/key パスワードを 読み取ることができます。使用するプロンプトは、関数に渡されます。ユーザが 検証できる完全な(安全な) struct passwd と一緒にです。 skey_getpass() は、 ユーザのパスワードを取り出そうとする最初の試みにおいて標準ライブラリ getpass を使用し、それがブランクの場合、エコーバックして S/Key パスワード を取り出します。いずれの場合でも、入力したストリングは呼び出し元に返され ます。

skey_crypt() は、標準ライブラリ crypt(3) 用のラッパ関数です。これは、指定 の s/key パスワードまたは正規のパスワードのどちらかが OK の場合、暗号化さ れた UNIX パスワードを返します。 skey_crypt() は、最初に skey 方式によっ て指定パスワードの確認を試み、それが確認できる場合は、ユーザが正しい UNIX パスワードを実際に入力したかのように、passwd 構造から暗号化されたパスワー ドを返します。 s/key パスワード検証が機能しない場合、パスワードは通常の方 法で暗号化され、結果は呼び出し元に渡されます。 passwd 構造ポインタが NULL の場合、 skey_crypt() は、NULL でないストリングを返します。このストリング は有効な UNIX パスワードとは言えません(すなわち、「:」の入ったストリング です)。

skeyaccess() 関数は、ユーザ名、グループメンバ、端末ポート、ホスト名、およ びネットワークの組み合わせについて、従来の UNIX (S/Key でない) パスワード が使用できるかどうかを判定します。UNIX パスワードが使用できる場合、 skeyaccess() は、ゼロでない値を返します。UNIX パスワードが使用できない場 合、 0 を返します。この関数が使用する skey.access 構成ファイルのレイアウ トと構造の詳細については、 skey.access(5) を参照してください。

戻り値

上記を参照。

関連項目

skey(1), skey.access(5)

バグ

複数のプロセスからの同時アクセスを防止するために s/key データベースについ ては助言のロックは行われません。これはファイル内でキーが追加または更新さ れるときは、通常、問題ではありませんが、キーが除去されるときは問題がある 可能性があります。

作者

Phil Karn,
Neil M. Haller,
John S. Walden,
Scott Chasin

FreeBSD 10.0 December 22, 1996 FreeBSD 10.0

スポンサーリンク