From b15e268c8aa0234a00f785c869feb0a61b2ab5c4 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 11 Oct 2004 12:45:50 +0000 Subject: [PATCH] Oops commited binary instead of source. --- keyserver/gpgkeys_finger | Bin 140825 -> 0 bytes keyserver/gpgkeys_finger.c | 550 +++++++++++++++++++++++++++++++++++++ 2 files changed, 550 insertions(+) delete mode 100755 keyserver/gpgkeys_finger create mode 100644 keyserver/gpgkeys_finger.c diff --git a/keyserver/gpgkeys_finger b/keyserver/gpgkeys_finger deleted file mode 100755 index 2e46a1e10e890d754086b31431f4cca1470f20ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140825 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 z 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 Ubhy@7!2}{L6vA*SaBN=wA4u&EnE(I) diff --git a/keyserver/gpgkeys_finger.c b/keyserver/gpgkeys_finger.c new file mode 100644 index 000000000..967fa8176 --- /dev/null +++ b/keyserver/gpgkeys_finger.c @@ -0,0 +1,550 @@ +/* gpgkeys_finger.c - fetch a key via finger + * Copyright (C) 2004 Free Software Foundation, Inc. + * + * This file is part of GnuPG. + * + * GnuPG 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. + * + * GnuPG 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 this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + */ + +#include +#include +#include +#include +#include +#include +#ifdef HAVE_GETOPT_H +#include +#endif + +#ifdef _WIN32 +#include +#else +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#define INCLUDED_BY_MAIN_MODULE 1 +#include "util.h" +#include "keyserver.h" + +#ifdef _WIN32 +#define sock_close(a) closesocket(a) +#else +#define sock_close(a) close(a) +#endif + + +extern char *optarg; +extern int optind; + +#define GET 0 +#define MAX_LINE 80 + +static int verbose=0; +static char path[1024]; +static FILE *input, *output, *console; + +#define BEGIN "-----BEGIN PGP PUBLIC KEY BLOCK-----" +#define END "-----END PGP PUBLIC KEY BLOCK-----" + + +#ifdef _WIN32 +static void +deinit_sockets (void) +{ + WSACleanup(); +} + +static void +init_sockets (void) +{ + static int initialized; + static WSADATA wsdata; + + if (initialized) + return; + + if (WSAStartup (0x0101, &wsdata) ) + { + fprintf (console, "error initializing socket library: ec=%d\n", + (int)WSAGetLastError () ); + return; + } + if (wsdata.wVersion < 0x0001) + { + fprintf (console, "socket library version is %x.%x - but 1.1 needed\n", + LOBYTE(wsdata.wVersion), HIBYTE(wsdata.wVersion)); + WSACleanup(); + return; + } + atexit (deinit_sockets); + initialized = 1; +} +#endif /*_WIN32*/ + + +/* Connect to SERVER at PORT and return a file descriptor or -1 on + error. */ +static int +connect_server (const char *server, unsigned short port) +{ + int sock = -1; + +#ifdef _WIN32 + struct hostent *hp; + struct sockaddr_in addr; + unsigned long l; + + init_sockets (); + + memset (&addr, 0, sizeof addr); + addr.sin_family = AF_INET; + addr.sin_port = htons (port); + + /* Win32 gethostbyname doesn't handle IP addresses internally, so we + try inet_addr first on that platform only. */ + if ((l = inet_addr (server)) != SOCKET_ERROR) + memcpy (&ad.sin_addr, &l, sizeof l); + else if ((hp = gethostbyname (server))) + { + if (hp->h_addrtype != AF_INET) + { + fprintf (console, "gpgkeys: unknown address family for `%s'\n", + server); + return -1; + } + if (hp->h_length != 4) + { + fprintf (console, "gpgkeys: illegal address length for`%s'\n", + server); + return -1; + } + memcpy (&addr.sin_addr, hp->h_addr, hp->h_length); + } + else + { + fprintf (console, "gpgkeys: host `%s' not found: ec=%d\n", + server, (int)WSAGetLastError ()); + return -1; + } + + sock = socket (AF_INET, SOCK_STREAM, 0); + if (sock == INVALID_SOCKET) + { + fprintf (console, "gpgkeys: error creating socket: ec=%d\n", + (int)WSAGetLastError ()); + return -1; + } + + if (connect (sock, (struct sockaddr *)&addr, sizeof addr)) + { + fprintf (console, "gpgkeys: error connecting `%s': ec=%d\n", + server, (int)WSAGetLastError ()); + sock_close (sock); + return -1; + } + +#else + + struct sockaddr_in addr; + struct hostent *host; + + addr.sin_family = AF_INET; + addr.sin_port = htons (port); + host = gethostbyname ((char*)server); + if (!host) + { + fprintf (console, "gpgkeys: host `%s' not found: %s\n", + server, strerror (errno)); + return -1; + } + + addr.sin_addr = *(struct in_addr*)host->h_addr; + + sock = socket (AF_INET, SOCK_STREAM, 0); + if (sock == -1) + { + fprintf (console, "gpgkeys: error creating socket: %s\n", + strerror (errno)); + return -1; + } + + if (connect (sock, (struct sockaddr *)&addr, sizeof addr) == -1) + { + fprintf (console, "gpgkeys: error connecting `%s': %s\n", + server, strerror (errno)); + close (sock); + return -1; + } +#endif + + return sock; +} + +static int +write_server (int sock, const char *data, size_t length) +{ + int nleft; + + nleft = length; + while (nleft > 0) + { + int nwritten; + +#ifdef _WIN32 + nwritten = send (sock, data, nleft, 0); + if ( nwritten == SOCKET_ERROR ) + { + fprintf (console, "gpgkeys: write failed: ec=%d\n", + (int)WSAGetLastError ()); + return -1; + } +#else + nwritten = write (sock, data, nleft); + if (nwritten == -1) + { + if (errno == EINTR) + continue; + if (errno == EAGAIN) + { + struct timeval tv; + + tv.tv_sec = 0; + tv.tv_usec = 50000; + select(0, NULL, NULL, NULL, &tv); + continue; + } + fprintf (console, "gpgkeys: write failed: %s\n", strerror(errno)); + return -1; + } +#endif + nleft -=nwritten; + data += nwritten; + } + + return 0; +} + + +/* Send the finger REQUEST to the server. Returns 0 and a file descriptor + in R_SOCK if the request was sucessful. */ +static int +send_request (const char *request, int *r_sock) +{ + char *server; + char *name; + int sock; + + *r_sock = -1; + name = strdup (request); + if (!name) + { + fprintf(console,"gpgkeys: out of memory\n"); + return KEYSERVER_NO_MEMORY; + } + + server = strchr (name, '@'); + if (!server) + { + fprintf (console, "gpgkeys: no name included in request\n"); + free (name); + return KEYSERVER_GENERAL_ERROR; + } + *server++ = 0; + + sock = connect_server (server, 79); + if (sock == -1) + { + free (name); + return KEYSERVER_UNREACHABLE; + } + + if (write_server (sock, name, strlen (name)) + || write_server (sock, "\r\n", 2)) + { + free (name); + sock_close (sock); + return KEYSERVER_GENERAL_ERROR; + } + free (name); + *r_sock = sock; + return 0; +} + + + +static int +get_key (char *getkey) +{ + int rc; + int sock; + IOBUF fp_read; + unsigned int maxlen, buflen, gotit=0; + unsigned char *line = NULL; + + if (strncmp (getkey,"0x",2)==0) + getkey+=2; + + /* Frankly we don't know what keys the server will return; we + indicated the requested key anyway. */ + fprintf(output,"KEY 0x%s BEGIN\n",getkey); + + rc = send_request (path, &sock); + if(rc) + { + fprintf(output,"KEY 0x%s FAILED %d\n",getkey, rc); + sock_close (sock); + return KEYSERVER_OK; + } + + /* Hmmm, we use iobuf here only to cope with Windows socket + peculiarities (we can't used fdopen). */ + fp_read = iobuf_sockopen (sock , "r"); + if (!fp_read) + { + fprintf(output,"KEY 0x%s FAILED %d\n",getkey, KEYSERVER_INTERNAL_ERROR); + sock_close (sock); + return KEYSERVER_OK; + } + + while ( iobuf_read_line ( fp_read, &line, &buflen, &maxlen)) + { + maxlen=1024; + + if(gotit) + { + fputs (line, output); + if (!strncmp(line,END,strlen(END))) + break; + } + else if(!strncmp(line,BEGIN,strlen(BEGIN))) + { + fputs (line,output); + gotit=1; + } + } + + if(gotit) + fprintf (output,"KEY 0x%s END\n", getkey); + else + { + fprintf (console,"gpgkeys: key %s not found on keyserver\n",getkey); + fprintf (output,"KEY 0x%s FAILED %d\n", + getkey,KEYSERVER_KEY_NOT_FOUND); + } + + m_free(line); + iobuf_close (fp_read); + + return KEYSERVER_OK; +} + + +int +main(int argc,char *argv[]) +{ + int arg,action=-1,ret=KEYSERVER_INTERNAL_ERROR; + char line[MAX_LINE]; + char *thekey=NULL; + + console=stderr; + + while((arg=getopt(argc,argv,"hVo:"))!=-1) + switch(arg) + { + default: + case 'h': + fprintf(console,"-h\thelp\n"); + fprintf(console,"-V\tversion\n"); + fprintf(console,"-o\toutput to this file\n"); + return KEYSERVER_OK; + + case 'V': + fprintf(stdout,"%d\n%s\n",KEYSERVER_PROTO_VERSION,VERSION); + return KEYSERVER_OK; + + case 'o': + output=fopen(optarg,"w"); + if(output==NULL) + { + fprintf(console,"gpgkeys: Cannot open output file \"%s\": %s\n", + optarg,strerror(errno)); + return KEYSERVER_INTERNAL_ERROR; + } + + break; + } + + if(argc>optind) + { + input=fopen(argv[optind],"r"); + if(input==NULL) + { + fprintf(console,"gpgkeys: Cannot open input file \"%s\": %s\n", + argv[optind],strerror(errno)); + return KEYSERVER_INTERNAL_ERROR; + } + } + + if(input==NULL) + input=stdin; + + if(output==NULL) + output=stdout; + + /* Get the command and info block */ + + while(fgets(line,MAX_LINE,input)!=NULL) + { + int version; + char commandstr[7]; + char optionstr[256]; + char hash; + + if(line[0]=='\n') + break; + + if(sscanf(line,"%c",&hash)==1 && hash=='#') + continue; + + if(sscanf(line,"COMMAND %6s\n",commandstr)==1) + { + commandstr[6]='\0'; + + if(strcasecmp(commandstr,"get")==0) + action=GET; + + continue; + } + + if(sscanf(line,"OPAQUE %1023s\n",path)==1) + { + path[1023]='\0'; + continue; + } + + if(sscanf(line,"VERSION %d\n",&version)==1) + { + if(version!=KEYSERVER_PROTO_VERSION) + { + ret=KEYSERVER_VERSION_ERROR; + goto fail; + } + + continue; + } + + if(sscanf(line,"OPTION %255s\n",optionstr)==1) + { + int no=0; + char *start=&optionstr[0]; + + optionstr[255]='\0'; + + if(strncasecmp(optionstr,"no-",3)==0) + { + no=1; + start=&optionstr[3]; + } + + if(strcasecmp(start,"verbose")==0) + { + if(no) + verbose--; + else + verbose++; + } + + continue; + } + } + + /* If it's a GET or a SEARCH, the next thing to come in is the + keyids. If it's a SEND, then there are no keyids. */ + + if(action==GET) + { + /* Eat the rest of the file */ + for(;;) + { + if(fgets(line,MAX_LINE,input)==NULL) + break; + else + { + if(line[0]=='\n' || line[0]=='\0') + break; + + if(!thekey) + { + thekey=strdup(line); + if(!thekey) + { + fprintf(console,"gpgkeys: out of memory while " + "building key list\n"); + ret=KEYSERVER_NO_MEMORY; + goto fail; + } + + /* Trim the trailing \n */ + thekey[strlen(line)-1]='\0'; + } + } + } + } + else + { + fprintf(console, + "gpgkeys: this keyserver type only supports key retrieval\n"); + goto fail; + } + + if(!thekey || !*path) + { + fprintf(console,"gpgkeys: invalid keyserver instructions\n"); + goto fail; + } + + /* Send the response */ + + fprintf(output,"VERSION %d\n",KEYSERVER_PROTO_VERSION); + fprintf(output,"PROGRAM %s\n\n",VERSION); + + if (verbose>1) + { + if(path[0]) + fprintf(console,"Path:\t\t%s\n",path); + fprintf(console,"Command:\tGET\n"); + } + + ret = get_key(thekey); + + fail: + + free(thekey); + + if(input!=stdin) + fclose(input); + + if(output!=stdout) + fclose(output); + + return ret; +}