.\" Copyright (c) 1996 .\" David L. Nugent. All Rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY DAVID L. NUGENT AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL DAVID L. NUGENT OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %Id: skey.3,v 1.8 1998/08/05 23:42:10 jdp Exp % .\" .\" $FreeBSD$ .Dd December 22, 1996 .Dt SKEY 3 .Os .Sh 名称 .Nm skeylookup , .Nm skeyverify , .Nm skeychallenge , .Nm skeyinfo , .Nm skeyaccess , .Nm skey_getpass , .Nm skey_crypt .Nd S/Key パスワード制御テーブルアクセス用のライブラリルーチン .Sh 書式 .Fd #include .Fd #include .Ft int .Fn skeylookup "struct skey *mp" "const char *name" .Ft int .Fn skeyverify "struct skey *mp" "char *response" .Ft int .Fn skeychallenge "struct skey *mp" "const char *name" "char *challenge" .Ft int .Fn skeyinfo "struct skey *mp" "const char *name" "char *ss" .Ft int .Fn skeyaccess "char *user" "const char *port" "const char *host" "const char *addr" .Ft char * .Fn skey_getpass "const char *prompt" "struct passwd *pwd" "int pwok" .Ft char * .Fn skey_crypt "char *pp" "char *salt" "struct passwd *pwd" "int pwok" .Sh 解説 これらのルーチンは、コンピュータシステムへのアクセスに使用される S/Key 一時パスワードシステムをサポートします。 S/Key システム自体についての詳細は、 .Xr skey 1 を参照してください。 .Pp .Pp .Fn skeylookup は、一時のパスワードデータベースでエントリを検出します。 処理が成功すると(指定の名前に対応するエントリが検出されると)、 呼び出し元によって渡された skey 構造が埋められ 0 が返されます。 ファイルの読み取り/書き込みポインタは検出されたレコードの先頭に配置されます。 指定の名前に対応するエントリが見つからない場合は、 ファイルの読み取り/書き込みポインタがファイルの末尾に配置され、 ルーチンは 1 を返します。 データベースが開けない場合、またはアクセスエラーが発生する場合、 .Fn skeylookup は -1 を返します。 .Pp .Fn skeyinfo 関数は、ユーザ「名」用の skey 情報をルックアップします。 処理が成功すると、呼び出し元の skey 構造が埋められ、 .Fn skeyinfo は 0 を返します。 オプションのチャレンジストリングバッファが与えられた場合は、それが更新されます。 処理が失敗すると(たとえば、名前が未知の場合、または データベースにアクセスできない場合)、-1 が返されます。 .Pp .Fn skeychallenge は、「名前」についての skey チャレンジストリングを返します。 処理が成功すると、呼び出し元の skey 構造が埋められ、関数は 0 を 返します。ファイル読み取り/書き込みポインタは レコードの先頭に残されます。 処理が成功しないと(すなわち、名前が見つからないと)、関数は -1 を返し、データベースは閉じられます。 .Pp .Fn skeyverify は、s/key チャレンジへの応答を検証します。 この関数が 0 を返した場合、検証は成功であり、 データベースはアップデートされています。 1 が返された場合、検証は処理失敗し、データベースは変化しないままです。 -1 が返された場合、何らかの種類のエラーがデータベースについて発生しており、 データベースは変化しないままです。 s/key データベースは必ずこの呼び出しによって閉じられます。 .Pp .Fn skey_getpass 関数を使用して、正規のパスワードまたは s/key パスワードを 読み取ることができます。 使用するプロンプトは、関数に渡されます。ユーザが 検証できる完全な(安全な) struct passwd と一緒にです。 .Fn skey_getpass は、ユーザのパスワードを取り出そうとする最初の試みにおいて標準ライブラリ getpass を使用し、それがブランクの場合、エコーバックして S/Key パスワード を取り出します。 いずれの場合でも、入力したストリングは呼び出し元に 返されます。 .Pp .Fn skey_crypt は、標準ライブラリ .Xr crypt 3 用のラッパー関数です。 これは、指定の s/key パスワードまたは正規のパスワードのどちらかが OK の場合、暗号化された UNIX パスワードを返します。 .Fn skey_crypt は、最初に skey 方式によって指定パスワードの確認を試み、 それが確認できる場合は、ユーザが正しい UNIX パスワードを実際に 入力したかのように、passwd 構造から暗号化されたパスワードを返します。 s/key パスワード検証が機能しない場合、 パスワードは通常の方法で暗号化され、結果は呼び出し元に渡されます。 passwd 構造ポインタが NULL の場合、 .Fn skey_crypt は、NULL でないストリングを返します。このストリングは有効な UNIX パスワードとは言えません(すなわち、「:」の入ったストリングです)。 .Pp .Fn skeyaccess 関数は、ユーザ名、グループメンバ、端末ポート、ホスト名、および ネットワークの組み合わせについて、従来の UNIX (S/Key でない) パスワードが使用できるかどうかを判定します。UNIX パスワードが使用できる場合、 .Fn skeyaccess は、ゼロでない値を返します。UNIX パスワードが使用できない場合、 0 を返します。 この関数が使用する skey.access 構成ファイルのレイアウトと構造の詳細については、 .Xr skey.access 5 を参照してください。 .Sh 戻り値 上記を参照。 .Sh 関連項目 .Xr skey 1 , .Xr skey.access 5 .Sh バグ 複数のプロセスからの同時アクセスを防止するために s/key データベースについては助言のロックは行われません。 これはファイル内でキーが追加または更新されるときは、通常、 問題ではありませんが、キーが除去されるときは問題がある可能性があります。 .Sh 作者 .An Phil Karn , .An Neil M. Haller , .An John S. Walden , .An Scott Chasin