SKEY(3)

명칭
skeylookup, skeyverify, skeychallenge, skeyinfo, skeyaccess, skey_getpass, skey_crypt - S/Key 패스워드 제어 테이블 액세스용의 프로그램 라이브러리 routine

프로그램 라이브러리
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)

해설
이러한 routine는, 컴퓨터 시스템에의 액세스에 사용된다 S/Key 일시 패스워드 시스템을 서포트합니다. S/Key 시스템 자체에 대한 자세한 것은, skey(1) (을)를 참조해 주세요.

skeylookup() (은)는, 한때의 패스워드 데이타베이스로 엔트리를 검출합니다. 처리가 성공하면(자)(지정의 이름에 대응하는 엔트리가 검출되면(자)), 호출 바탕으로야는 건네받은 skey 구조를 묻을 수 있는 0 이 돌려주어집니다. 파일의 읽어내/기입 포인터는 검출된 레코드의 선두에 배치됩니다. 지정의 이름에 대응하는 엔트리가 발견되지 않는 경우는, 파일의 읽어내/기입 포인터가 파일의 말미에 배치되어 routine는 1 을 돌려줍니다. 데이타베이스가 열리지 않는 경우, 또는 액세스 에러가 발생하는 경우, skeylookup() (은)는 -1 을 돌려줍니다.

skeyinfo() 함수는, 유저 「이름」용의 skey 정보를 look 올라갑니다. 처리가 성공하면(자), 호출원의 skey 구조를 묻을 수 있어 skeyinfo() (은)는 0 을 돌려줍니다. 옵션의 챌린지 string 버퍼가 주어졌을 경우는, 그것이 갱신됩니다. 처리가 실패하면(자)(예를 들어, 이름이 미지의 경우, 또는 데이타베이스에 액세스 할 수 없는 경우),-1 가 돌려주어집니다.

skeychallenge() (은)는, 「이름」에 대한 skey 챌린지 string를 돌려줍니다. 처리가 성공하면(자), 호출원의 skey 구조를 묻을 수 있어 함수는 0 을 돌려줍니다. 파일 읽어내/기입 포인터는 레코드의 선두에 남겨집니다. 처리가 성공하지 않으면(즉, 이름이 발견되지 않으면), 함수는 -1 (을)를 돌려주어, 데이타베이스는 닫혀집니다.

skeyverify() (은)는, s/key 챌린지에의 응답을 검증합니다. 이 함수가 0 을 돌려주었을 경우, 검증은 성공이며, 데이타베이스는 업데이트 되고 있습니다. 1 이 돌려주어졌을 경우, 검증은 처리 실패해, 데이타베이스는 변화하지 않는 그대로입니다. -1 하지만 돌려주어졌을 경우, 어떠한 종류의 에러가 데이타베이스에 대해 발생하고 있어, 데이타베이스는 변화하지 않는 그대로입니다. s/key 데이타베이스는 반드시 이 호출에 의해 닫혀집니다.

skey_getpass() 함수를 사용해, 정규의 패스워드 또는 s/key 패스워드를 읽어낼 수가 있습니다. 사용하는 prompt는, 함수에게 건네집니다. 유저가 검증할 수 있는 완전한(안전한) struct passwd 와 함께에입니다. skey_getpass() (은)는, 유저의 패스워드를 꺼내려고 하는 최초의 시도에 대해 표준 프로그램 라이브러리 getpass 를 사용해, 그것이 공백의 경우, 반향 해 S/Key 패스워드 (을)를 꺼냅니다. 어느 경우에서도, 입력한 string는 호출해 바탕으로 돌려주어집니다.

skey_crypt() (은)는, 표준 프로그램 라이브러리 crypt(3) 용무의 래퍼 함수입니다. 이것은, 지정의 s/key 패스워드 또는 정규의 패스워드의 어느 쪽인지가 OK 의 경우, 암호화된 UNIX 패스워드를 돌려줍니다. skey_crypt() (은)는, 최초로 skey 방식에 의해 지정 패스워드의 확인을 시도해 그것을 확인할 수 있는 경우는, 유저가 올바른 UNIX 패스워드를 실제로 입력했는지와 같이, passwd 구조로부터 암호화된 패스워드를 돌려줍니다. s/key 패스워드 검증이 기능하지 않는 경우, 패스워드는 통상의 방법으로 암호화되어 결과는 호출해 바탕으로 건네받습니다. passwd 구조 포인터가 NULL 의 경우, skey_crypt() (은)는, NULL 가 아닌 string를 돌려줍니다. 이 string는 유효한 UNIX 패스워드라고는 말할 수 없습니다(즉, 「:」이 들어간 string입니다).

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