/[winpt]/trunk/Include/wptKeyserver.h
ViewVC logotype

Diff of /trunk/Include/wptKeyserver.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2 by twoaday, Mon Jan 31 11:02:21 2005 UTC revision 214 by twoaday, Sun May 14 18:40:36 2006 UTC
# Line 1  Line 1 
 /* wptKeyserver.h - Keyserver headerfile  
  *      Copyright (C) 2000-2005 Timo Schulz  
  *  
  * This file is part of WinPT.  
  *  
  * WinPT is free software; you can redistribute it and/or  
  * modify it under the terms of the GNU General Public License  
  * as published by the Free Software Foundation; either version 2  
  * of the License, or (at your option) any later version.  
  *    
  * WinPT is distributed in the hope that it will be useful,  
  * but WITHOUT ANY WARRANTY; without even the implied warranty of  
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU  
  * General Public License for more details.  
  *  
  * You should have received a copy of the GNU General Public License  
  * along with WinPT; if not, write to the Free Software Foundation,  
  * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA  
  */  
   
 #ifndef WPT_KEYSERVER_H  
 #define WPT_KEYSERVER_H  
   
 #define HKP_PORT     11371 /* Horowitz Keyserver Protocol */  
 #define FINGER_PORT     79 /* Finger Protocol */  
   
 #define DEF_HKP_KEYSERVER "http://subkeys.pgp.net"  
   
 enum {  
     PROXY_USER = 0,  
     PROXY_PASS = 1,  
 };  
   
 enum {  
     KSPROTO_HTTP   = 0,  
     KSPROTO_LDAP   = 1,  
     KSPROTO_FINGER = 2  
 };  
   
 struct keyserver_ctx {  
     const char *   name;  
     unsigned short port;  
     const char *   pattern;  
 };  
   
 struct keyserver {  
     char *  name;  
     int     port;  
     int     used;  
     int     proto;  
 };  
   
 struct keyserver_proxy_ctx {  
     int     port;  
     char *  host;  
     char *  user;  
     char *  base64_user;  
     char *  pass;  
 };  
   
 struct keyserver_node {  
     keyserver_node *    next;  
     keyserver           host;  
     int                 used;  
 };  
   
 struct keyserver_cfgfile {  
     keyserver_node *    list;  
     keyserver_proxy_ctx proxy;  
     int                 nlist;  
 };  
   
 #define MAX_KEYSERVERS 32  
 extern keyserver server[MAX_KEYSERVERS]; /* runtime initialized */  
 extern char * default_keyserver;  
 extern unsigned short default_keyserver_port;  
   
 struct keyserver_key {  
     int     bits;  
     char    keyid[8+1];  
     char    date[10+1];  
     char    uid[384];  
 };  
   
 const char* kserver_strerror( void );  
   
 /*-- Winsock2 support --*/  
 int wsock_init( void );  
 void wsock_end( void );  
 const char* wsock_strerror( void );  
   
 /*-- Keyserver config --*/  
 int kserver_load_conf (const char *conf);  
 const char* kserver_check_keyid( const char *keyid );  
 const char* kserver_get_proxy( int *r_port );  
 const char* kserver_get_proxy_info( int id );  
   
 int kserver_read_config( const char *fname, keyserver_cfgfile **ret_cfg );  
 int kserver_write_config( const char *fname, keyserver_cfgfile *cfg );  
 void kserver_cfgfile_release( keyserver_cfgfile *cfg );  
 void kserver_change_proxy( keyserver_proxy_ctx *ctx );  
 void proxy_release( keyserver_proxy_ctx *ctx );  
 const char * kserver_get_hostname (int idx, int type, unsigned short *port);  
 void keyserver_set_default (const char *hostname, unsigned short port);  
 void set_default_kserver (void);  
   
 /*-- General --*/  
 int kserver_check_inet_connection (void);  
 int kserver_connect (const char *hostname, unsigned short port, int *conn_fd);  
 int kserver_sendkey (const char *hostname, unsigned short port, const char *pubkey, int len);  
 int kserver_recvkey (const char *hostname, unsigned short port,  
                      const char *keyid, char *key, int maxkeylen);  
   
 int kserver_search_init(const char *hostname, unsigned short port, const char *keyid, int *conn_fd);  
 int kserver_search_chkresp (int conn_fd);  
 int kserver_search (int conn_fd, keyserver_key *key);  
   
 /*-- Finger/LDAP Protocol --*/  
 int  ldap_recvkey (const char *hostname, const char *keyid, char *key,  
                    int maxkeylen);  
 int finger_recvkey (const char * host, const char * user, char * key,  
                     int maxkeylen);  
   
 /*-- Dialog support --*/  
 int hkp_send_key (HWND dlg, const char *kserver, unsigned short port, const char *pattern);  
 int hkp_recv_key (HWND dlg, const char *kserver, unsigned short port, const char *pattern,  
                   int proto, int flags);  
   
 #endif /* WPT_KEYSERVER_H_ */  
1    /* wptKeyserver.h - Keyserver headerfile
2     *      Copyright (C) 2000-2006 Timo Schulz
3     *
4     * This file is part of WinPT.
5     *
6     * WinPT is free software; you can redistribute it and/or
7     * modify it under the terms of the GNU General Public License
8     * as published by the Free Software Foundation; either version 2
9     * of the License, or (at your option) any later version.
10     *  
11     * WinPT is distributed in the hope that it will be useful,
12     * but WITHOUT ANY WARRANTY; without even the implied warranty of
13     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14     * General Public License for more details.
15     *
16     * You should have received a copy of the GNU General Public License
17     * along with WinPT; if not, write to the Free Software Foundation,
18     * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19     */
20    
21    #ifndef WPT_KEYSERVER_H
22    #define WPT_KEYSERVER_H
23    
24    #define HKP_PORT     11371 /* Horowitz Keyserver Protocol */
25    #define FINGER_PORT     79 /* Finger Protocol */
26    
27    /* Default keyserver URL. */
28    #define DEF_HKP_KEYSERVER "http://subkeys.pgp.net"
29    
30    /* Valid proxy protocols. */
31    enum proxy_proto_t {
32        PROXY_PROTO_NONE = 0,
33        PROXY_PROTO_HTTP,
34        PROXY_PROTO_SOCKS4,
35        PROXY_PROTO_SOCKS5
36    };
37    
38    /* Valid proxy authentications. */
39    enum proxy_auth_t {
40        PROXY_AUTH_NONE = 0,
41        PROXY_AUTH_PLAIN = 2
42    };
43    
44    /* Valid key server protocols. */
45    enum ksproto_t {
46        KSPROTO_HTTP   = 0,
47        KSPROTO_LDAP   = 1,
48        KSPROTO_FINGER = 2
49    };
50    #define KSPROTO_HKP 0 /* alias for http */
51    
52    struct keyserver_ctx {
53        const char    *name;
54        unsigned short port;
55        const char    *pattern;
56    };
57    
58    struct keyserver {
59        char *name;     /* name of the keyserver. */
60        int   port;     /* used tcp port. */
61        int   used;     /* 1=entry will be used. */
62        int   proto;    /* protocol (0..2). */
63    };
64    
65    /* Proxy configuration context. */
66    struct keyserver_proxy_s {
67        int   proto;        /* protocol. */
68        int   port;         /* server port. */
69        char *host;         /* server host. */
70        int   auth_mode;    /* authentication mode. */
71        char *user;         /* user. */
72        char *base64_user;  /* base64 encoded user. */
73        char *pass;         /* password. */
74    };
75    typedef struct keyserver_proxy_s *keyserver_proxy_t;
76    
77    #define MAX_KEYSERVERS 32
78    extern keyserver server[MAX_KEYSERVERS]; /* runtime initialized */
79    extern char *default_keyserver;
80    extern WORD default_keyserver_port;
81    extern keyserver_proxy_s proxy;
82    
83    
84    struct keyserver_uid_s {
85        struct keyserver_uid_s *next;
86        long creation;
87        long expires;
88        char *uid;
89    };
90    
91    struct keyserver_key_s {
92        int    algo;                    /* pubkey algorithm. */
93        int    bits;                    /* length of the key. */
94        char   *keyid;                  /* keyid of the key. */
95        long   creation;                /* creation date. */
96        long   expires;
97        struct keyserver_uid_s *uids;   /* list ofuser-ids. */
98        const struct keyserver_uid_s *main_uid;
99    };
100    
101    
102    /*-- wptSOCKS.cpp --*/
103    int socks_handshake (keyserver_proxy_t ctx, int conn_fd,
104                         const char *hostname, WORD port);
105    
106    /*-- Winsock2 support --*/
107    int wsock_init (void);
108    void wsock_end (void);
109    const char* wsock_strerror (void);
110    
111    /*-- Keyserver config --*/
112    int kserver_load_conf (const char *conf);
113    int kserver_save_conf (const char *conf);
114    const char* kserver_check_keyid (const char *keyid);
115    void kserver_proxy_release (keyserver_proxy_t ctx);
116    const char* kserver_get_hostname (int idx, int type, unsigned short *port);
117    void keyserver_set_default (const char *hostname, unsigned short port);
118    void kserver_set_socket_timeout (int nsec);
119    
120    /*-- General --*/
121    int check_IP_or_hostname (const char *name);
122    const char* kserver_strerror (void);
123    int kserver_check_inet_connection (void);
124    int kserver_connect (const char *hostname, WORD port, int *conn_fd);
125    int kserver_sendkey (const char *hostname, WORD port,
126                         const char *pubkey, int len);
127    int kserver_recvkey (const char *hostname, WORD port,
128                         const char *keyid, char **r_key, int *r_keylen);
129    int kserver_search_begin (const char *hostname, WORD port,
130                              const char *pattern, int *conn_fd, int *nkeys);
131    int kserver_search_next (int conn_fd, keyserver_key_s **r_key);
132    void kserver_search_end (int conn_fd);
133    void kserver_release_key (keyserver_key_s *key);
134    
135    /*-- Finger/LDAP Protocol --*/
136    int  ldap_recvkey (const char *hostname, const char *keyid,
137                       char **r_key, int *r_keylen);
138    int finger_recvkey (const char *host, const char *user,
139                        char **r_key, int *r_keylen);
140    
141    /*-- Dialog support --*/
142    int hkp_send_key (HWND dlg, const char *kserver, unsigned short port,
143                      const char *pattern);
144    int hkp_recv_key (HWND dlg, const char *kserver, unsigned short port,
145                      const char *pattern, int proto, int flags);
146    
147    #endif /* WPT_KEYSERVER_H */

Legend:
Removed from v.2  
changed lines
  Added in v.214

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26