mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-22 10:19:57 +01:00
gpgsm does now build and a dummy server can be started.
This commit is contained in:
parent
1f79656dad
commit
4fcb72b382
@ -20,6 +20,7 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
INCLUDES = -I.. -I$(top_srcdir)/include
|
||||
BUILT_SOURCES = assuan-errors.c
|
||||
|
||||
noinst_LIBRARIES = libassuan.a
|
||||
|
||||
@ -29,7 +30,11 @@ libassuan_a_SOURCES = \
|
||||
assuan.h \
|
||||
assuan-defs.h \
|
||||
assuan-util.c \
|
||||
assuan-errors.c \
|
||||
assuan-buffer.c \
|
||||
assuan-handler.c \
|
||||
assuan-pipe-server.c
|
||||
|
||||
|
||||
assuan-errors.c : assuan.h
|
||||
$(srcdir)/mkerrors < $(srcdir)/assuan.h > assuan-errors.c
|
||||
|
@ -76,8 +76,8 @@ int assuan_register_command (ASSUAN_CONTEXT ctx,
|
||||
|
||||
|
||||
/*-- assuan-pipe-server.c --*/
|
||||
|
||||
|
||||
int assuan_init_pipe_server (ASSUAN_CONTEXT *r_ctx, int filedes[2]);
|
||||
void assuan_deinit_pipe_server (ASSUAN_CONTEXT ctx);
|
||||
|
||||
|
||||
/*-- assuan-util.c --*/
|
||||
@ -85,6 +85,8 @@ void assuan_set_malloc_hooks ( void *(*new_alloc_func)(size_t n),
|
||||
void *(*new_realloc_func)(void *p, size_t n),
|
||||
void (*new_free_func)(void*) );
|
||||
|
||||
/*-- assuan-errors.c (built) --*/
|
||||
const char *assuan_strerror (AssuanError err);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
71
assuan/mkerrors
Executable file
71
assuan/mkerrors
Executable file
@ -0,0 +1,71 @@
|
||||
#!/bin/sh
|
||||
# mkerrors - Extract error strings from assuan.h
|
||||
# and create C source for assuan_strerror
|
||||
# Copyright (C) 2001 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
|
||||
|
||||
cat <<EOF
|
||||
/* Generated automatically by mkerrors */
|
||||
/* Do not edit! */
|
||||
|
||||
#include <stdio.h>
|
||||
#include "assuan.h"
|
||||
|
||||
/**
|
||||
* assuan_strerror:
|
||||
* @err: Error code
|
||||
*
|
||||
* This function returns a textual representaion of the given
|
||||
* errorcode. If this is an unknown value, a string with the value
|
||||
* is returned (Beware: it is hold in a static buffer).
|
||||
*
|
||||
* Return value: String with the error description.
|
||||
**/
|
||||
const char *
|
||||
assuan_strerror (AssuanError err)
|
||||
{
|
||||
const char *s;
|
||||
static char buf[25];
|
||||
|
||||
switch (err)
|
||||
{
|
||||
EOF
|
||||
|
||||
awk '
|
||||
/ASSUAN_No_Error/ { okay=1 }
|
||||
!okay {next}
|
||||
/}/ { exit 0 }
|
||||
/ASSUAN_[A-Za-z_]*/ { print_code($1) }
|
||||
|
||||
|
||||
function print_code( s )
|
||||
{
|
||||
printf " case %s: s=\"", s ;
|
||||
gsub(/_/, " ", s );
|
||||
printf "%s\"; break;\n", substr(s,8);
|
||||
}
|
||||
'
|
||||
|
||||
cat <<EOF
|
||||
default: sprintf (buf, "ec=%d", err ); s=buf; break;
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
EOF
|
@ -18,19 +18,16 @@
|
||||
|
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
#INCLUDES = -I.. -I$(top_srcdir)/include -I$(top_srcdir)/intl
|
||||
#EXTRA_DIST =
|
||||
|
||||
#noinst_PROGRAMS = gpgd
|
||||
bin_PROGRAMS = gpgsm
|
||||
|
||||
gpgsm_SOURCES = gpgsm.c
|
||||
|
||||
|
||||
|
||||
#install-data-local:
|
||||
# $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)
|
||||
# $(INSTALL_DATA) $(srcdir)/options.skel \
|
||||
# $(DESTDIR)$(pkgdatadir)/options.skel
|
||||
INCLUDES = -I$(top_srcdir)/include -I$(top_srcdir)/intl
|
||||
LDFLAGS = @LDFLAGS@ $(LIBGCRYPT_LIBS)
|
||||
|
||||
gpgsm_SOURCES = \
|
||||
gpgsm.c gpgsm.h \
|
||||
util.h \
|
||||
server.c
|
||||
|
||||
gpgsm_LDADD = ../jnlib/libjnlib.a ../assuan/libassuan.a
|
||||
|
||||
|
||||
|
1032
sm/gpgsm.c
1032
sm/gpgsm.c
File diff suppressed because it is too large
Load Diff
86
sm/gpgsm.h
Normal file
86
sm/gpgsm.h
Normal file
@ -0,0 +1,86 @@
|
||||
/* gpgsm.h - Global definitions for GpgSM
|
||||
* Copyright (C) 2001 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
|
||||
*/
|
||||
|
||||
#ifndef GPGSM_H
|
||||
#define GPGSM_H
|
||||
|
||||
#include "util.h"
|
||||
|
||||
/* A large struct name "opt" to keep global flags */
|
||||
struct {
|
||||
unsigned int debug; /* debug flags (DBG_foo_VALUE) */
|
||||
int verbose; /* verbosity level */
|
||||
int quiet; /* be as quiet as possible */
|
||||
int batch; /* run in batch mode, i.e w/o any user interaction */
|
||||
int answer_yes; /* assume yes on most questions */
|
||||
int answer_no; /* assume no on most questions */
|
||||
int dry_run; /* don't change any persistent data */
|
||||
|
||||
const char *homedir; /* configuration directory name */
|
||||
char *outfile; /* name of output file */
|
||||
|
||||
int with_colons; /* use column delimited output format */
|
||||
int with_key_data;/* include raw key in the column delimted output */
|
||||
|
||||
int fingerprint; /* list fingerprints in all key listings */
|
||||
|
||||
int armor; /* force base64 armoring */
|
||||
int no_armor; /* don't try to figure out whether data is base64 armored*/
|
||||
|
||||
int def_cipher_algo; /* cipher algorithm to use if nothing else is know */
|
||||
int def_digest_algo; /* Ditto for hash algorithm */
|
||||
int def_compress_algo; /* Ditto for compress algorithm */
|
||||
|
||||
char *def_recipient; /* userID of the default recipient */
|
||||
int def_recipient_self; /* The default recipient is the default key */
|
||||
|
||||
int always_trust; /* Trust the given keys even if there is no
|
||||
valid certification path */
|
||||
int skip_verify; /* do not check signatures on data */
|
||||
|
||||
int lock_once; /* Keep lock once they are set */
|
||||
|
||||
int ignore_time_conflict; /* Ignore certain time conflicts */
|
||||
|
||||
} opt;
|
||||
|
||||
|
||||
#define DBG_X509_VALUE 1 /* debug x.509 data reading/writing */
|
||||
#define DBG_MPI_VALUE 2 /* debug mpi details */
|
||||
#define DBG_CIPHER_VALUE 4 /* debug cipher handling */
|
||||
#define DBG_MEMORY_VALUE 32 /* debug memory allocation stuff */
|
||||
#define DBG_CACHE_VALUE 64 /* debug the caching */
|
||||
#define DBG_MEMSTAT_VALUE 128 /* show memory statistics */
|
||||
#define DBG_HASHING_VALUE 512 /* debug hashing operations */
|
||||
|
||||
#define DBG_X509 (opt.debug & DBG_X509_VALUE)
|
||||
#define DBG_CIPHER (opt.debug & DBG_CIPHER_VALUE)
|
||||
#define DBG_MEMORY (opt.debug & DBG_MEMORY_VALUE)
|
||||
#define DBG_CACHE (opt.debug & DBG_CACHE_VALUE)
|
||||
#define DBG_HASHING (opt.debug & DBG_HASHING_VALUE)
|
||||
|
||||
/*-- gpgsm.c --*/
|
||||
void gpgsm_exit (int rc);
|
||||
|
||||
/*-- server.c --*/
|
||||
void gpgsm_server (void);
|
||||
|
||||
|
||||
#endif /*GPGSM_H*/
|
56
sm/server.c
Normal file
56
sm/server.c
Normal file
@ -0,0 +1,56 @@
|
||||
/* server.c - Server mode and main entry point
|
||||
* Copyright (C) 2001 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 <config.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "gpgsm.h"
|
||||
#include "../assuan/assuan.h"
|
||||
|
||||
|
||||
|
||||
void
|
||||
gpgsm_server (void)
|
||||
{
|
||||
int rc;
|
||||
int filedes[2];
|
||||
ASSUAN_CONTEXT ctx;
|
||||
|
||||
/* For now we use a simple pipe based server so that we can work
|
||||
from scripts. We will later add options to run as a daemon and
|
||||
wait for requests on a Unix domain socket */
|
||||
filedes[0] = 0;
|
||||
filedes[1] = 1;
|
||||
rc = assuan_init_pipe_server (&ctx, filedes);
|
||||
if (rc)
|
||||
{
|
||||
log_error ("failed to initialize the server: %s\n",
|
||||
assuan_strerror(rc));
|
||||
gpgsm_exit (2);
|
||||
}
|
||||
|
||||
|
||||
assuan_deinit_pipe_server (ctx);
|
||||
}
|
46
sm/util.h
Normal file
46
sm/util.h
Normal file
@ -0,0 +1,46 @@
|
||||
/* util.h - Utility functions for GpgSM
|
||||
* Copyright (C) 2001 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
|
||||
*/
|
||||
|
||||
#ifndef UTIL_H
|
||||
#define UTIL_H
|
||||
|
||||
#include <gcrypt.h> /* we need this for the memory function protos */
|
||||
|
||||
#include "../jnlib/logging.h"
|
||||
#include "../jnlib/argparse.h"
|
||||
#include "../jnlib/stringhelp.h"
|
||||
#include "../jnlib/mischelp.h"
|
||||
#include "../jnlib/strlist.h"
|
||||
#include "../jnlib/dotlock.h"
|
||||
|
||||
#define xtrymalloc(a) gcry_malloc ((a))
|
||||
#define xtrycalloc(a,b) gcry_calloc ((a),(b))
|
||||
#define xtryrealloc(a,b) gcry_realloc ((a),(b))
|
||||
#define xtrystrdup(a) gcry_strdup ((a))
|
||||
#define xfree(a) gcry_free ((a))
|
||||
|
||||
#define xmalloc(a) gcry_xmalloc ((a))
|
||||
#define xcalloc(a,b) gcry_xcalloc ((a),(b))
|
||||
#define xrealloc(a,b) gcry_xrealloc ((a),(b))
|
||||
#define xstrdup(a) gcry_xstrdup ((a))
|
||||
|
||||
|
||||
|
||||
#endif /*UTIL_H*/
|
Loading…
x
Reference in New Issue
Block a user