aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2010-02-26 10:52:05 +0000
committerWerner Koch <[email protected]>2010-02-26 10:52:05 +0000
commit0e018d7144a1b18d750ce655e2ab0cb495808fca (patch)
tree8c940c4753f3ca765d92d2b1a127a6a8ab343abc
parentProvide default strings for the pinentry. (diff)
downloadgnupg-0e018d7144a1b18d750ce655e2ab0cb495808fca.tar.gz
gnupg-0e018d7144a1b18d750ce655e2ab0cb495808fca.zip
Some minor changes and typo fixes.
Started to implement a TCP option in gpg-connect-agent.
Diffstat (limited to '')
-rw-r--r--ChangeLog6
-rw-r--r--agent/call-pinentry.c15
-rwxr-xr-xautogen.sh42
-rw-r--r--common/tlv.c2
-rw-r--r--configure.ac6
-rw-r--r--g10/sign.c15
-rw-r--r--tools/ChangeLog4
-rw-r--r--tools/gpg-connect-agent.c50
8 files changed, 120 insertions, 20 deletions
diff --git a/ChangeLog b/ChangeLog
index 9bdbdc0fc..b72f89c5a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-02-26 Werner Koch <[email protected]>
+
+ * configure.ac (HAVE_W32CE_SYSTEM): New ac_define and
+ am_conditional.
+ * autogen.sh: New option --build-w32ce.
+
2009-12-08 Werner Koch <[email protected]>
* configure.ac (USE_DNS_CERT): Support ADNS.
diff --git a/agent/call-pinentry.c b/agent/call-pinentry.c
index 28cf59af8..fab9b8e1d 100644
--- a/agent/call-pinentry.c
+++ b/agent/call-pinentry.c
@@ -394,20 +394,25 @@ start_pinentry (ctrl_t ctrl)
may help a pinentry to avoid implementing localization code. */
static struct { const char *key, *value; } tbl[] = {
/* TRANSLATORS: These are labels for buttons etc used in
- Pinentries. A underscore indicates that the next letter
- should be used as an accelerator. The actual to be
- translated text starts after the second vertical bar. */
+ Pinentries. An underscore indicates that the next letter
+ should be used as an accelerator. Double the underscore for
+ a literal one. The actual to be translated text starts after
+ the second vertical bar. */
{ "ok", N_("|pinentry-label|_OK") },
{ "cancel", N_("|pinentry-label|_Cancel") },
+ { "prompt", N_("|pinentry-label|PIN:") },
{ NULL, NULL}
};
char *optstr;
int idx;
+ const char *s, *s2;
for (idx=0; tbl[idx].key; idx++)
{
- if (asprintf (&optstr, "OPTION default-ok=%s",
- tbl[idx].key, _(tbl[idx].value)) < 0 )
+ s = _(tbl[idx].value);
+ if (*s == '|' && (s2=strchr (s+1,'|')))
+ s = s2+1;
+ if (asprintf (&optstr, "OPTION default-%s=%s", tbl[idx].key, s) < 0 )
return unlock_pinentry (out_of_core ());
assuan_transact (entry_ctx, optstr, NULL, NULL, NULL, NULL, NULL,
NULL);
diff --git a/autogen.sh b/autogen.sh
index a7e701550..86552ee0d 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -45,9 +45,28 @@ if test x"$1" = x"--force"; then
shift
fi
+# Convenience option to use certain configure options for some hosts.
+myhost=""
+myhostsub=""
+case "$1" in
+ --build-w32)
+ myhost="w32"
+ ;;
+ --build-w32ce)
+ myhost="w32"
+ myhostsub="ce"
+ ;;
+ --build-amd64)
+ myhost="amd64"
+ ;;
+ *)
+ ;;
+esac
+
+
# ***** W32 build script *******
# Used to cross-compile for Windows.
-if test "$1" = "--build-w32"; then
+if [ "$myhost" = "w32" ]; then
tmp=`dirname $0`
tsdir=`cd "$tmp"; pwd`
shift
@@ -57,12 +76,21 @@ if test "$1" = "--build-w32"; then
fi
build=`$tsdir/scripts/config.guess`
- [ -z "$w32root" ] && w32root="$HOME/w32root"
+ case $myhostsub in
+ ce)
+ [ -z "$w32root" ] && w32root="$HOME/w32ce_root"
+ toolprefixes="arm-mingw32ce"
+ ;;
+ *)
+ [ -z "$w32root" ] && w32root="$HOME/w32root"
+ toolprefixes="i586-mingw32msvc i386-mingw32msvc mingw32"
+ ;;
+ esac
echo "Using $w32root as standard install directory" >&2
# Locate the cross compiler
crossbindir=
- for host in i586-mingw32msvc i386-mingw32msvc mingw32; do
+ for host in $toolprefixes; do
if ${host}-gcc --version >/dev/null 2>&1 ; then
crossbindir=/usr/${host}/bin
conf_CC="CC=${host}-gcc"
@@ -71,8 +99,10 @@ if test "$1" = "--build-w32"; then
done
if [ -z "$crossbindir" ]; then
echo "Cross compiler kit not installed" >&2
- echo "Under Debian GNU/Linux, you may install it using" >&2
- echo " apt-get install mingw32 mingw32-runtime mingw32-binutils" >&2
+ if [ -z "$sub" ]; then
+ echo "Under Debian GNU/Linux, you may install it using" >&2
+ echo " apt-get install mingw32 mingw32-runtime mingw32-binutils" >&2
+ fi
echo "Stop." >&2
exit 1
fi
@@ -102,7 +132,7 @@ fi
# ***** AMD64 cross build script *******
# Used to cross-compile for AMD64 (for testing)
-if test "$1" = "--build-amd64"; then
+if [ "$myhost" = "amd64" ]; then
tmp=`dirname $0`
tsdir=`cd "$tmp"; pwd`
shift
diff --git a/common/tlv.c b/common/tlv.c
index c68756406..3453b29f6 100644
--- a/common/tlv.c
+++ b/common/tlv.c
@@ -234,7 +234,7 @@ _parse_ber_header (unsigned char const **buffer, size_t *size,
/* FIXME: The following function should not go into this file but for
now it is easier to keep it here. */
-/* Return the next token of an canconical encoded S-expression. BUF
+/* Return the next token of an canonical encoded S-expression. BUF
is the pointer to the S-expression and BUFLEN is a pointer to the
length of this S-expression (used to validate the syntax). Both
are updated to reflect the new position. The token itself is
diff --git a/configure.ac b/configure.ac
index f56c154e6..7ac5ec05a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -483,6 +483,7 @@ AC_ARG_VAR(CC_FOR_BUILD,[build system C compiler])
try_gettext=yes
have_dosish_system=no
have_w32_system=no
+have_w32ce_system=no
use_simple_gettext=no
case "${host}" in
*-mingw32*)
@@ -499,6 +500,7 @@ case "${host}" in
disable_keyserver_path=yes
have_dosish_system=yes
have_w32_system=yes
+ case "${host}" in *-mingw32ce*) have_w32ce_system=yes ;; esac
try_gettext="no"
use_simple_gettext=yes
;;
@@ -563,8 +565,12 @@ AM_CONDITIONAL(USE_SIMPLE_GETTEXT, test x"$use_simple_gettext" = xyes)
if test "$have_w32_system" = yes; then
AC_DEFINE(HAVE_W32_SYSTEM,1, [Defined if we run on a W32 API based system])
+ if test "$have_w32ce_system" = yes; then
+ AC_DEFINE(HAVE_W32CE_SYSTEM,1,[Defined if we run on WindowsCE])
+ fi
fi
AM_CONDITIONAL(HAVE_W32_SYSTEM, test "$have_w32_system" = yes)
+AM_CONDITIONAL(HAVE_W32CE_SYSTEM, test "$have_w32ce_system" = yes)
if test "$disable_keyserver_path" = yes; then
AC_DEFINE(DISABLE_KEYSERVER_PATH,1,
diff --git a/g10/sign.c b/g10/sign.c
index 9c732799f..604802577 100644
--- a/g10/sign.c
+++ b/g10/sign.c
@@ -421,13 +421,16 @@ hash_for (PKT_public_key *pk)
return match_dsa_hash(qbytes);
}
- else if (/*FIXME: call agent
- pk->is_protected && sk->protect.s2k.mode==1002*/ 0)
+ else if (0
+ /* FIXME: call agent sk->is_protected && sk->protect.s2k.mode == 1002
+ && sk->protect.ivlen == 16
+ && !memcmp (sk->protect.iv, "\xD2\x76\x00\x01\x24\x01\x01", 7)*/)
{
- /* The secret key lives on a smartcard, and current smartcards only
- handle SHA-1 and RIPEMD/160. This is correct now, but may
- need revision as the cards add algorithms. */
-
+ /* The sk lives on a smartcard, and old smartcards only handle
+ SHA-1 and RIPEMD/160. Newer smartcards (v2.0) don't have
+ this restriction anymore. Fortunately the serial number
+ encodes the version of the card and thus we know that this
+ key is on a v1 card. */
if(opt.personal_digest_prefs)
{
prefitem_t *prefs;
diff --git a/tools/ChangeLog b/tools/ChangeLog
index 2008882a4..d9fe5a463 100644
--- a/tools/ChangeLog
+++ b/tools/ChangeLog
@@ -1,3 +1,7 @@
+2010-02-26 Werner Koch <[email protected]>
+
+ * gpg-connect-agent.c (main): New option --tcp-socket.
+
2010-01-10 Werner Koch <[email protected]>
* symcryptrun.c (utmp.h): Remove header; it is not used.
diff --git a/tools/gpg-connect-agent.c b/tools/gpg-connect-agent.c
index 4acda0171..86ef2a642 100644
--- a/tools/gpg-connect-agent.c
+++ b/tools/gpg-connect-agent.c
@@ -49,6 +49,7 @@ enum cmd_and_opt_values
oQuiet = 'q',
oVerbose = 'v',
oRawSocket = 'S',
+ oTcpSocket = 'T',
oExec = 'E',
oRun = 'r',
oSubst = 's',
@@ -72,6 +73,8 @@ static ARGPARSE_OPTS opts[] = {
ARGPARSE_s_n (oDecode,"decode", N_("decode received data lines")),
ARGPARSE_s_s (oRawSocket, "raw-socket",
N_("|NAME|connect to Assuan socket NAME")),
+ ARGPARSE_s_s (oTcpSocket, "tcp-socket",
+ N_("|ADDR|connect to Assuan server at ADDR")),
ARGPARSE_s_n (oExec, "exec",
N_("run the Assuan server given on the command line")),
ARGPARSE_s_n (oNoExtConnect, "no-ext-connect",
@@ -96,6 +99,7 @@ struct
int hex; /* Print data lines in hex format. */
int decode; /* Decode received data lines. */
const char *raw_socket; /* Name of socket to connect in raw mode. */
+ const char *tcp_socket; /* Name of server to connect in tcp mode. */
int exec; /* Run the pgm given on the command line. */
unsigned int connect_flags; /* Flags used for connecting. */
int enable_varsubst; /* Set if variable substitution is enabled. */
@@ -1177,6 +1181,7 @@ main (int argc, char **argv)
case oHex: opt.hex = 1; break;
case oDecode: opt.decode = 1; break;
case oRawSocket: opt.raw_socket = pargs.r.ret_str; break;
+ case oTcpSocket: opt.tcp_socket = pargs.r.ret_str; break;
case oExec: opt.exec = 1; break;
case oNoExtConnect: opt.connect_flags &= ~(1); break;
case oRun: opt_run = pargs.r.ret_str; break;
@@ -1207,8 +1212,23 @@ main (int argc, char **argv)
cmdline_commands = argv;
if (opt.exec && opt.raw_socket)
- log_info (_("option \"%s\" ignored due to \"%s\"\n"),
- "--raw-socket", "--exec");
+ {
+ opt.raw_socket = NULL;
+ log_info (_("option \"%s\" ignored due to \"%s\"\n"),
+ "--raw-socket", "--exec");
+ }
+ if (opt.exec && opt.tcp_socket)
+ {
+ opt.tcp_socket = NULL;
+ log_info (_("option \"%s\" ignored due to \"%s\"\n"),
+ "--tcp-socket", "--exec");
+ }
+ if (opt.tcp_socket && opt.raw_socket)
+ {
+ opt.tcp_socket = NULL;
+ log_info (_("option \"%s\" ignored due to \"%s\"\n"),
+ "--tcp-socket", "--raw-socket");
+ }
if (opt_run && !(script_fp = fopen (opt_run, "r")))
{
@@ -1269,6 +1289,32 @@ main (int argc, char **argv)
if (opt.verbose)
log_info ("connection to socket `%s' established\n", opt.raw_socket);
}
+ else if (opt.tcp_socket)
+ {
+ char *url;
+
+ url = xstrconcat ("assuan://", opt.tcp_socket, NULL);
+
+ rc = assuan_new (&ctx);
+ if (rc)
+ {
+ log_error ("assuan_new failed: %s\n", gpg_strerror (rc));
+ exit (1);
+ }
+
+ rc = assuan_socket_connect (ctx, opt.tcp_socket, 0, 0);
+ if (rc)
+ {
+ log_error ("can't connect to server `%s': %s\n",
+ opt.tcp_socket, gpg_strerror (rc));
+ exit (1);
+ }
+
+ if (opt.verbose)
+ log_info ("connection to socket `%s' established\n", url);
+
+ xfree (url);
+ }
else
ctx = start_agent ();