1 /* $OpenBSD: hostfile.h,v 1.19 2010/11/29 23:45:51 djm Exp $ */ 2 3 /* 4 * Author: Tatu Ylonen <ylo (at) cs.hut.fi> 5 * Copyright (c) 1995 Tatu Ylonen <ylo (at) cs.hut.fi>, Espoo, Finland 6 * All rights reserved 7 * 8 * As far as I am concerned, the code I have written for this software 9 * can be used freely for any purpose. Any derived versions of this 10 * software must be clearly marked as such, and if the derived work is 11 * incompatible with the protocol description in the RFC file, it must be 12 * called by a name other than "ssh" or "Secure Shell". 13 */ 14 #ifndef HOSTFILE_H 15 #define HOSTFILE_H 16 17 typedef enum { 18 HOST_OK, HOST_NEW, HOST_CHANGED, HOST_REVOKED, HOST_FOUND 19 } HostStatus; 20 21 typedef enum { 22 MRK_ERROR, MRK_NONE, MRK_REVOKE, MRK_CA 23 } HostkeyMarker; 24 25 struct hostkey_entry { 26 char *host; 27 char *file; 28 u_long line; 29 Key *key; 30 HostkeyMarker marker; 31 }; 32 struct hostkeys; 33 34 struct hostkeys *init_hostkeys(void); 35 void load_hostkeys(struct hostkeys *, const char *, const char *); 36 void free_hostkeys(struct hostkeys *); 37 38 HostStatus check_key_in_hostkeys(struct hostkeys *, Key *, 39 const struct hostkey_entry **); 40 int lookup_key_in_hostkeys_by_type(struct hostkeys *, int, 41 const struct hostkey_entry **); 42 43 int hostfile_read_key(char **, u_int *, Key *); 44 int add_host_to_hostfile(const char *, const char *, const Key *, int); 45 46 #define HASH_MAGIC "|1|" 47 #define HASH_DELIM '|' 48 49 #define CA_MARKER "@cert-authority" 50 #define REVOKE_MARKER "@revoked" 51 52 char *host_hash(const char *, const char *, u_int); 53 54 #endif 55