tail head cat sleep
QR code linking to this page

manページ  — SKEY

名称

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

内容

ライブラリ

libskey

書式


#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

SKEY (3) December 22, 1996

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.

The most important thing in the programming language is the name. A language will not succeed without a good name. I have recently invented a very good name and now I am looking for a suitable language.
— Donald Knuth