opie.h revision 59121
1/* opie.h: Data structures and values for the OPIE authentication 2 system that a program might need. 3 4%%% portions-copyright-cmetz-96 5Portions of this software are Copyright 1996-1998 by Craig Metz, All Rights 6Reserved. The Inner Net License Version 2 applies to these portions of 7the software. 8You should have received a copy of the license with this software. If 9you didn't get a copy, you may request one from <license@inner.net>. 10 11Portions of this software are Copyright 1995 by Randall Atkinson and Dan 12McDonald, All Rights Reserved. All Rights under this copyright are assigned 13to the U.S. Naval Research Laboratory (NRL). The NRL Copyright Notice and 14License Agreement applies to this software. 15 16 History: 17 18 Modified by cmetz for OPIE 2.32. Added symbolic flag names for 19 opiepasswd(). Added __opieparsechallenge() prototype. 20 Modified by cmetz for OPIE 2.31. Removed active attack protection. 21 Modified by cmetz for OPIE 2.3. Renamed PTR to VOIDPTR. Added 22 re-init key and extension file fields to struct opie. Added 23 opie_ prefix on struct opie members. Added opie_flags field 24 and definitions. Added more prototypes. Changed opiehash() 25 prototype. 26 Modified by cmetz for OPIE 2.22. Define __P correctly if this file 27 is included in a third-party program. 28 Modified by cmetz for OPIE 2.2. Re-did prototypes. Added FUNCTION 29 definition et al. Multiple-include protection. Added struct 30 utsname fake. Got rid of gethostname() cruft. Moved UINT4 31 here. Provide for *seek whence values. Move MDx context here 32 and unify. Re-did prototypes. 33 Modified at NRL for OPIE 2.0. 34 Written at Bellcore for the S/Key Version 1 software distribution 35 (skey.h). 36 37$FreeBSD: head/contrib/opie/opie.h 59121 2000-04-10 11:18:54Z kris $ 38*/ 39#ifndef _OPIE_H 40#define _OPIE_H 1 41 42struct opie { 43 int opie_flags; 44 char opie_buf[256]; 45 char *opie_principal; 46 int opie_n; 47 char *opie_seed; 48 char *opie_val; 49 long opie_recstart; 50}; 51 52#define __OPIE_FLAGS_RW 1 53#define __OPIE_FLAGS_READ 2 54 55/* Minimum length of a secret password */ 56#define OPIE_SECRET_MIN 10 57 58/* Maximum length of a secret password */ 59#define OPIE_SECRET_MAX 127 60 61/* Minimum length of a seed */ 62#define OPIE_SEED_MIN 5 63 64/* Maximum length of a seed */ 65#define OPIE_SEED_MAX 16 66 67/* Maximum length of a challenge (otp-md? 9999 seed) */ 68#define OPIE_CHALLENGE_MAX (7+1+4+1+OPIE_SEED_MAX) 69 70/* Maximum length of a response that we allow */ 71#define OPIE_RESPONSE_MAX (9+1+19+1+9+OPIE_SEED_MAX+1+19+1+19+1+19) 72 73/* Maximum length of a principal (read: user name) */ 74#define OPIE_PRINCIPAL_MAX 32 75 76#include <sys/cdefs.h> 77 78__BEGIN_DECLS 79int opieaccessfile __P((char *)); 80int rdnets __P((long)); 81int isaddr __P((register char *)); 82int opiealways __P((char *)); 83char *opieatob8 __P((char *,char *)); 84void opiebackspace __P((char *)); 85char *opiebtoa8 __P((char *,char *)); 86char *opiebtoe __P((char *,char *)); 87char *opiebtoh __P((char *,char *)); 88int opieetob __P((char *,char *)); 89int opiechallenge __P((struct opie *,char *,char *)); 90int opiegenerator __P((char *,char *,char *)); 91int opiegetsequence __P((struct opie *)); 92void opiehash __P((void *, unsigned)); 93int opiehtoi __P((register char)); 94int opiekeycrunch __P((int, char *, char *, char *)); 95int opielock __P((char *)); 96int opielookup __P((struct opie *,char *)); 97int opiepasscheck __P((char *)); 98void opierandomchallenge __P((char *)); 99char * opieskipspace __P((register char *)); 100void opiestripcrlf __P((char *)); 101int opieverify __P((struct opie *,char *)); 102int opiepasswd __P((struct opie *, int, char *, int, char *, char *)); 103char *opiereadpass __P((char *, int, int)); 104int opielogin __P((char *line, char *name, char *host)); 105__END_DECLS 106 107#if _OPIE 108#define VOIDPTR void * 109#define VOIDRET void 110#define NOARGS void 111#define FUNCTION(arglist, args) (args) 112#define AND , 113#define FUNCTION_NOARGS () 114#define UINT4 u_int32_t 115 116__BEGIN_DECLS 117struct utmp; 118int __opiegetutmpentry __P((char *, struct utmp *)); 119#ifdef EOF 120FILE *__opieopen __P((char *, int, int)); 121#endif /* EOF */ 122int __opiereadrec __P((struct opie *)); 123int __opiewriterec __P((struct opie *)); 124int __opieparsechallenge __P((char *buffer, int *algorithm, int *sequence, char **seed, int *exts)); 125__END_DECLS 126#endif /* _OPIE */ 127 128#define OPIEPASSWD_CONSOLE 1 129#define OPIEPASSWD_FORCE 2 130 131#endif /* _OPIE_H */ 132