diff --git a/gnupg-1.9.22-ccid-driver-fix.diff b/gnupg-1.9.22-ccid-driver-fix.diff
deleted file mode 100644
index 83a8e77..0000000
--- a/gnupg-1.9.22-ccid-driver-fix.diff
+++ /dev/null
@@ -1,42 +0,0 @@
-Index: scd/ccid-driver.c
-===================================================================
---- scd/ccid-driver.c.orig
-+++ scd/ccid-driver.c
-@@ -75,8 +75,6 @@
- # include <config.h>
- #endif
- 
--#if defined(HAVE_LIBUSB) || defined(TEST)
--
- #include <errno.h>
- #include <stdio.h>
- #include <stdlib.h>
-@@ -91,7 +89,14 @@
- #include "ccid-driver.h"
- 
- #define DRVNAME "ccid-driver: "
--
-+static int debug_level;     /* Flag to control the debug output. 
-+                               0 = No debugging
-+                               1 = USB I/O info
-+                               2 = T=1 protocol tracing
-+                              */
-+ 
-+#if defined(HAVE_LIBUSB) || defined(TEST)
-+#include <usb.h>
- 
- /* Depending on how this source is used we either define our error
-    output to go to stderr or to the jnlib based logging functions.  We
-@@ -250,11 +255,7 @@ struct ccid_driver_s 
- 
- 
- static int initialized_usb; /* Tracks whether USB has been initialized. */
--static int debug_level;     /* Flag to control the debug output. 
--                               0 = No debugging
--                               1 = USB I/O info
--                               2 = T=1 protocol tracing
--                              */
-+
- 
- 
- static unsigned int compute_edc (const unsigned char *data, size_t datalen,
diff --git a/gnupg-2.0.10-tmpdir.diff b/gnupg-2.0.10-tmpdir.diff
index e475481..8dfbbfd 100644
--- a/gnupg-2.0.10-tmpdir.diff
+++ b/gnupg-2.0.10-tmpdir.diff
@@ -1,7 +1,9 @@
 # create gpg-agent socket in TMPDIR
---- ./agent/gpg-agent.c.orig	2008-12-18 10:48:44.000000000 +0100
-+++ ./agent/gpg-agent.c	2009-01-12 13:26:21.000000000 +0100
-@@ -910,6 +910,10 @@ main (int argc, char **argv )
+Index: gnupg-2.0.12/agent/gpg-agent.c
+===================================================================
+--- gnupg-2.0.12.orig/agent/gpg-agent.c	2009-06-03 18:07:56.000000000 +0200
++++ gnupg-2.0.12/agent/gpg-agent.c	2009-06-18 11:40:02.000000000 +0200
+@@ -937,6 +937,10 @@ main (int argc, char **argv )
        gnupg_fd_t fd_ssh;
        pid_t pid;
  
@@ -12,7 +14,7 @@
        /* Remove the DISPLAY variable so that a pinentry does not
           default to a specific display.  There is still a default
           display when gpg-agent was started using --display or a
-@@ -921,13 +925,23 @@ main (int argc, char **argv )
+@@ -948,13 +952,23 @@ main (int argc, char **argv )
          unsetenv ("DISPLAY");
  #endif
  
diff --git a/gnupg-2.0.11.tar.bz2 b/gnupg-2.0.11.tar.bz2
deleted file mode 100644
index 3458079..0000000
--- a/gnupg-2.0.11.tar.bz2
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:8c40148ad471f4a7e583bc5f84ebf652c395b303deaf2583b11e51f43fa8b47c
-size 3852869
diff --git a/gnupg-2.0.12.tar.bz2 b/gnupg-2.0.12.tar.bz2
new file mode 100644
index 0000000..4b28b61
--- /dev/null
+++ b/gnupg-2.0.12.tar.bz2
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9633e104c519fade1c9fce5843d1f70439b156bcc446aa270ea8192d461d9cce
+size 3924196
diff --git a/gnupg-2.0.4-default-tty.diff b/gnupg-2.0.4-default-tty.diff
index 806ed2c..904eb08 100644
--- a/gnupg-2.0.4-default-tty.diff
+++ b/gnupg-2.0.4-default-tty.diff
@@ -1,7 +1,9 @@
 # sets default tty to /dev/tty
---- common/asshelp.c
-+++ common/asshelp.c
-@@ -95,6 +95,8 @@
+Index: common/asshelp.c
+===================================================================
+--- common/asshelp.c.orig	2008-10-20 14:54:58.000000000 +0200
++++ common/asshelp.c	2009-06-18 11:41:47.000000000 +0200
+@@ -97,6 +97,8 @@ send_pinentry_environment (assuan_contex
        dft_ttyname = getenv ("GPG_TTY");
        if ((!dft_ttyname || !*dft_ttyname) && ttyname (0))
          dft_ttyname = ttyname (0);
@@ -10,9 +12,11 @@
      }
    if (opt_ttyname || dft_ttyname)
      {
---- common/simple-pwquery.c
-+++ common/simple-pwquery.c
-@@ -222,6 +222,8 @@
+Index: common/simple-pwquery.c
+===================================================================
+--- common/simple-pwquery.c.orig	2009-05-20 09:39:10.000000000 +0200
++++ common/simple-pwquery.c	2009-06-18 11:41:47.000000000 +0200
+@@ -225,6 +225,8 @@ agent_send_all_options (int fd)
  #ifndef HAVE_W32_SYSTEM
    if ((!dft_ttyname || !*dft_ttyname) && ttyname (0))
      dft_ttyname = ttyname (0);
diff --git a/gnupg-2.0.4-install_tools.diff b/gnupg-2.0.4-install_tools.diff
index 40cb322..ff6e009 100644
--- a/gnupg-2.0.4-install_tools.diff
+++ b/gnupg-2.0.4-install_tools.diff
@@ -1,6 +1,8 @@
---- tools/Makefile.am.orig
-+++ tools/Makefile.am
-@@ -25,8 +25,8 @@ EXTRA_DIST = \
+Index: tools/Makefile.am
+===================================================================
+--- tools/Makefile.am.orig	2009-04-17 19:39:47.000000000 +0200
++++ tools/Makefile.am	2009-06-18 11:41:20.000000000 +0200
+@@ -32,8 +32,8 @@ sbin_SCRIPTS = addgnupghome applygnupgde
  
  bin_SCRIPTS = gpgsm-gencert.sh
  if HAVE_USTAR
@@ -11,7 +13,7 @@
  endif
  
  if BUILD_SYMCRYPTRUN
-@@ -43,14 +43,14 @@ endif
+@@ -44,14 +44,14 @@ endif
  
  bin_PROGRAMS = gpgconf gpg-connect-agent gpgkey2ssh ${symcryptrun}
  if !HAVE_W32_SYSTEM
diff --git a/gnupg-2.0.9-RSA_ES.patch b/gnupg-2.0.9-RSA_ES.patch
index febef55..d78b9b5 100644
--- a/gnupg-2.0.9-RSA_ES.patch
+++ b/gnupg-2.0.9-RSA_ES.patch
@@ -1,7 +1,9 @@
 # adds back support for deprecated RSA_E, RSA_S algorithms
---- gnupg-2.0.9.orig/g10/misc.c
-+++ gnupg-2.0.9/g10/misc.c
-@@ -1285,6 +1285,8 @@ pubkey_get_npkey( int algo )
+Index: gnupg-2.0.12/g10/misc.c
+===================================================================
+--- gnupg-2.0.12.orig/g10/misc.c	2009-06-05 15:58:27.000000000 +0200
++++ gnupg-2.0.12/g10/misc.c	2009-06-18 11:42:19.000000000 +0200
+@@ -1308,6 +1308,8 @@ pubkey_get_npkey( int algo )
  
    if (algo == GCRY_PK_ELG_E)
      algo = GCRY_PK_ELG;
@@ -10,7 +12,7 @@
    if (gcry_pk_algo_info( algo, GCRYCTL_GET_ALGO_NPKEY, NULL, &n))
      n = 0;
    return n;
-@@ -1298,6 +1300,8 @@ pubkey_get_nskey( int algo )
+@@ -1321,6 +1323,8 @@ pubkey_get_nskey( int algo )
  
    if (algo == GCRY_PK_ELG_E)
      algo = GCRY_PK_ELG;
@@ -19,7 +21,7 @@
    if (gcry_pk_algo_info( algo, GCRYCTL_GET_ALGO_NSKEY, NULL, &n ))
      n = 0;
    return n;
-@@ -1311,6 +1315,8 @@ pubkey_get_nsig( int algo )
+@@ -1334,6 +1338,8 @@ pubkey_get_nsig( int algo )
  
    if (algo == GCRY_PK_ELG_E)
      algo = GCRY_PK_ELG;
@@ -28,7 +30,7 @@
    if (gcry_pk_algo_info( algo, GCRYCTL_GET_ALGO_NSIGN, NULL, &n))
      n = 0;
    return n;
-@@ -1324,6 +1330,8 @@ pubkey_get_nenc( int algo )
+@@ -1347,6 +1353,8 @@ pubkey_get_nenc( int algo )
    
    if (algo == GCRY_PK_ELG_E)
      algo = GCRY_PK_ELG;
diff --git a/gnupg-2.0.9-langinfo.patch b/gnupg-2.0.9-langinfo.patch
index 87a515f..4b0cab0 100644
--- a/gnupg-2.0.9-langinfo.patch
+++ b/gnupg-2.0.9-langinfo.patch
@@ -1,7 +1,9 @@
 # fix [bnc#305725] - non latin characters displayed incorrectly by pinentry
---- jnlib/utf8conv.c
-+++ jnlib/utf8conv.c
-@@ -205,6 +205,7 @@
+Index: jnlib/utf8conv.c
+===================================================================
+--- jnlib/utf8conv.c.orig	2008-11-04 15:39:06.000000000 +0100
++++ jnlib/utf8conv.c	2009-06-18 11:42:36.000000000 +0200
+@@ -203,6 +203,7 @@ set_native_charset (const char *newset)
  #else /*!HAVE_W32_SYSTEM*/
        
  #ifdef HAVE_LANGINFO_CODESET
diff --git a/gpg2-fix-rtsignals.patch b/gpg2-fix-rtsignals.patch
deleted file mode 100644
index ecf773c..0000000
--- a/gpg2-fix-rtsignals.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-# bnc#481463
-#
-# Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=499569
-# agent/gpg-agent.c: Deinit the threading library before exec'ing
-# the command to run in --daemon mode. And because that still doesn't
-# restore the sigprocmask, do that manually. Closes: #499569
-#
-Index: gnupg-2.0.11/agent/gpg-agent.c
-===================================================================
---- gnupg-2.0.11.orig/agent/gpg-agent.c	2009-03-18 13:35:59.000000000 +0100
-+++ gnupg-2.0.11/agent/gpg-agent.c	2009-03-18 13:43:46.000000000 +0100
-@@ -528,6 +528,8 @@
-   int gpgconf_list = 0;
-   gpg_error_t err;
-   const char *env_file_name = NULL;
-+  sigset_t initial_sigs;
-+
- 
- 
-   set_strusage (my_strusage);
-@@ -537,6 +539,8 @@
-      somewhere after the option parsing */
-   log_set_prefix ("gpg-agent", JNLIB_LOG_WITH_PREFIX|JNLIB_LOG_WITH_PID); 
- 
-+  sigprocmask(SIG_SETMASK, NULL, &initial_sigs);
-+
-   /* Make sure that our subsystems are ready.  */
-   i18n_init ();
-   init_common_subsystems ();
-@@ -1053,6 +1057,14 @@
-                   kill (pid, SIGTERM );
-                   exit (1);
-                 }
-+              if (! pth_kill())
-+                {
-+                  log_error ("failed to clean up threading");
-+                  kill (pid, SIGTERM );
-+                  exit (1);
-+                }
-+              sigprocmask(SIG_SETMASK, &initial_sigs, NULL);
-+
-               execvp (argv[0], argv);
-               log_error ("failed to run the command: %s\n", strerror (errno));
-               kill (pid, SIGTERM);
diff --git a/gpg2.changes b/gpg2.changes
index 56d1da0..6575007 100644
--- a/gpg2.changes
+++ b/gpg2.changes
@@ -1,3 +1,23 @@
+-------------------------------------------------------------------
+Thu Jun 18 13:22:00 CEST 2009 - puzel@novell.com
+
+- update to gnupg-2.0.12
+ * GPGSM now always lists ephemeral certificates if specified by
+   fingerprint or keygrip.
+ * New command "KEYINFO" for GPG_AGENT.  GPGSM now also returns
+   information about smartcards.
+ * Made sure not to leak file descriptors if running gpg-agent with a
+   command.  Restore the signal mask to solve a problem in Mono.
+ * Changed order of the confirmation questions for root certificates
+   and store negative answers in trustlist.txt.
+ * Better synchronization of concurrent smartcard sessions.
+ * Support 2048 bit OpenPGP cards.
+ * Support Telesec Netkey 3 cards.
+ * The gpg-protect-tool now uses gpg-agent via libassuan.
+ * Changed code to avoid a possible Mac OS X system freeze.
+- drop gpg2-fix-rtsignals.patch (fixed upstream)
+- drop gnupg-1.9.22-ccid-driver-fix.diff (unused)
+
 -------------------------------------------------------------------
 Thu Jun 11 11:19:58 CEST 2009 - puzel@suse.cz
 
diff --git a/gpg2.spec b/gpg2.spec
index cc66be3..a759311 100644
--- a/gpg2.spec
+++ b/gpg2.spec
@@ -1,5 +1,5 @@
 #
-# spec file for package gpg2 (Version 2.0.11)
+# spec file for package gpg2 (Version 2.0.12)
 #
 # Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
@@ -19,8 +19,8 @@
 
 
 Name:           gpg2
-Version:        2.0.11
-Release:        4
+Version:        2.0.12
+Release:        1
 BuildRequires:  expect fdupes libpth-devel
 BuildRequires:  libgpg-error-devel >= 1.4
 BuildRequires:  libgcrypt-devel >= 1.4.0
@@ -44,12 +44,10 @@ Obsoletes:      newpg gpg <= 1.4.9
 Summary:        GnuPG 2
 Source:         gnupg-%{version}.tar.bz2
 Patch5:         gnupg-2.0.10-tmpdir.diff
-Patch6:         gnupg-1.9.22-ccid-driver-fix.diff
 Patch7:         gnupg-2.0.4-install_tools.diff
 Patch9:         gnupg-2.0.4-default-tty.diff
 Patch10:        gnupg-2.0.9-RSA_ES.patch
 Patch11:        gnupg-2.0.9-langinfo.patch
-Patch12:        gpg2-fix-rtsignals.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
 %description
@@ -67,13 +65,10 @@ Authors:
 %prep
 %setup  -q -n gnupg-%version
 %patch5 -p1
-# Patch disabled - it does not apply to 2.0.11 and it is unclear, what it is actually good for
-#% patch6
 %patch7
 %patch9
 %patch10 -p1
 %patch11
-%patch12 -p1
 
 %build
 # Required for patch7:
@@ -155,6 +150,23 @@ $RPM_BUILD_ROOT/usr/bin/gpgsplit -v -p secsplit- --secret-to-public --uncompress
 %config(noreplace) %{_sysconfdir}/gnupg/gpgconf.conf
 
 %changelog
+* Thu Jun 18 2009 puzel@novell.com
+- update to gnupg-2.0.12
+  * GPGSM now always lists ephemeral certificates if specified by
+  fingerprint or keygrip.
+  * New command "KEYINFO" for GPG_AGENT.  GPGSM now also returns
+  information about smartcards.
+  * Made sure not to leak file descriptors if running gpg-agent with a
+  command.  Restore the signal mask to solve a problem in Mono.
+  * Changed order of the confirmation questions for root certificates
+  and store negative answers in trustlist.txt.
+  * Better synchronization of concurrent smartcard sessions.
+  * Support 2048 bit OpenPGP cards.
+  * Support Telesec Netkey 3 cards.
+  * The gpg-protect-tool now uses gpg-agent via libassuan.
+  * Changed code to avoid a possible Mac OS X system freeze.
+- drop gpg2-fix-rtsignals.patch (fixed upstream)
+- drop gnupg-1.9.22-ccid-driver-fix.diff (unused)
 * Thu Jun 11 2009 puzel@suse.cz
 - change BuildRequires: (pth-devel -> libpth-devel)
 * Mon Jun 01 2009 puzel@suse.cz