Home | History | Annotate | Line # | Download | only in libskey
      1  1.10  dholland /*	$NetBSD: skey.h,v 1.10 2016/01/22 23:25:51 dholland Exp $	*/
      2   1.3   thorpej 
      3   1.1   deraadt /*
      4   1.1   deraadt  * S/KEY v1.1b (skey.h)
      5   1.1   deraadt  *
      6   1.1   deraadt  * Authors:
      7   1.1   deraadt  *          Neil M. Haller <nmh (at) thumper.bellcore.com>
      8   1.1   deraadt  *          Philip R. Karn <karn (at) chicago.qualcomm.com>
      9   1.1   deraadt  *          John S. Walden <jsw (at) thumper.bellcore.com>
     10   1.1   deraadt  *
     11   1.1   deraadt  * Modifications:
     12   1.1   deraadt  *          Scott Chasin <chasin (at) crimelab.com>
     13   1.7       mjl  *          Todd C. Miller <Todd.Miller (at) courtesan.com>
     14   1.1   deraadt  *
     15   1.1   deraadt  * Main client header
     16   1.1   deraadt  */
     17   1.1   deraadt 
     18  1.10  dholland #include <stdio.h>
     19  1.10  dholland 
     20   1.1   deraadt /* Server-side data structure for reading keys file during login */
     21   1.9     perry struct skey {
     22   1.1   deraadt   FILE *keyfile;
     23   1.1   deraadt   char buf[256];
     24   1.1   deraadt   char *logname;
     25   1.1   deraadt   int n;
     26   1.1   deraadt   char *seed;
     27   1.1   deraadt   char *val;
     28   1.1   deraadt   long recstart;		/* needed so reread of buffer is efficient */
     29   1.1   deraadt };
     30   1.1   deraadt 
     31   1.1   deraadt /* Client-side structure for scanning data stream for challenge */
     32   1.9     perry struct mc {
     33   1.1   deraadt   char buf[256];
     34   1.1   deraadt   int skip;
     35   1.1   deraadt   int cnt;
     36   1.1   deraadt };
     37   1.1   deraadt 
     38   1.7       mjl /* Maximum sequence number we allow */
     39   1.7       mjl #ifndef SKEY_MAX_SEQ
     40   1.9     perry #define SKEY_MAX_SEQ		10000
     41   1.7       mjl #endif
     42   1.7       mjl 
     43   1.7       mjl /* Minimum secret password length (rfc2289) */
     44   1.7       mjl #ifndef SKEY_MIN_PW_LEN
     45   1.9     perry #define SKEY_MIN_PW_LEN		10
     46   1.7       mjl #endif
     47   1.7       mjl 
     48   1.7       mjl /* Max secret password length (rfc2289 says 63 but allows more) */
     49   1.7       mjl #ifndef SKEY_MAX_PW_LEN
     50   1.9     perry #define SKEY_MAX_PW_LEN		255
     51   1.7       mjl #endif
     52   1.7       mjl 
     53   1.7       mjl /* Max length of an S/Key seed (rfc2289) */
     54   1.7       mjl #ifndef SKEY_MAX_SEED_LEN
     55   1.9     perry #define SKEY_MAX_SEED_LEN	16
     56   1.7       mjl #endif
     57   1.7       mjl 
     58   1.7       mjl /* Max length of S/Key challenge (otp-???? 9999 seed) */
     59   1.7       mjl #ifndef SKEY_MAX_CHALLENGE
     60   1.9     perry #define SKEY_MAX_CHALLENGE     (11 + SKEY_MAX_HASHNAME_LEN + SKEY_MAX_SEED_LEN)
     61   1.7       mjl #endif
     62   1.7       mjl 
     63   1.7       mjl /* Max length of hash algorithm name (md4/md5/sha1/rmd160) */
     64   1.9     perry #define SKEY_MAX_HASHNAME_LEN	6
     65   1.7       mjl 
     66   1.7       mjl /* Size of a binary key (not NULL-terminated) */
     67   1.9     perry #define SKEY_BINKEY_SIZE	8
     68   1.7       mjl 
     69   1.7       mjl /* Location of random file for bogus challenges */
     70   1.9     perry #define _SKEY_RAND_FILE_PATH_	"/var/db/host.random"
     71   1.2        pk 
     72   1.7       mjl /* Prototypes */
     73   1.9     perry void f(char *);
     74   1.9     perry int keycrunch(char *, const char *, const char *);
     75   1.9     perry char *btoe(char *, const char *);
     76   1.9     perry char *put8(char *, const char *);
     77   1.9     perry int etob(char *, const char *);
     78   1.9     perry void rip(char *);
     79   1.9     perry int skeychallenge(struct skey *, const char *, char *, size_t);
     80   1.9     perry int skeylookup(struct skey *, const char *);
     81   1.9     perry int skeyverify(struct skey *, char *);
     82   1.9     perry void sevenbit(char *);
     83   1.9     perry void backspace(char *);
     84   1.9     perry const char *skipspace(const char *);
     85   1.9     perry char *readpass(char *, int);
     86   1.9     perry char *readskey(char *, int);
     87   1.9     perry int skey_authenticate(const char *);
     88   1.9     perry int skey_passcheck(const char *, char *);
     89   1.9     perry const char *skey_keyinfo(const char *);
     90   1.9     perry int skey_haskey(const char *);
     91   1.9     perry int getskeyprompt(struct skey *, char *, char *);
     92   1.9     perry int atob8(char *, const char *);
     93   1.9     perry int btoa8(char *, const char *);
     94   1.9     perry int htoi(int);
     95   1.9     perry const char *skey_get_algorithm(void);
     96   1.9     perry const char *skey_set_algorithm(const char *);
     97   1.9     perry int skeygetnext(struct skey *);
     98   1.9     perry int skeyzero(struct skey *, char *);
     99