Typo fixes
[gnupg.git] / scd / card.c
index 02b7bfd..7a41ab7 100644 (file)
@@ -15,7 +15,8 @@
  *
  * 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
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ * USA.
  */
 
 #include <config.h>
 #ifdef HAVE_OPENSC
 #include <opensc/pkcs15.h>
 #endif
-#include <ksba.h>
 
 #include "scdaemon.h"
+#include <ksba.h>
+
 #include "card-common.h"
 
 /* Map the SC error codes to the GNUPG ones */
@@ -52,16 +54,19 @@ map_sc_err (int rc)
 #endif
     default: e = GPG_ERR_CARD; break;
     }
-  return gpg_err_make (GPG_ERR_SOURCE_UNKNOWN, e);
+  /* It does not make much sense to further distingusih the error
+     source between OpenSC and SCD.  Thus we use SCD as source
+     here. */
+  return gpg_err_make (GPG_ERR_SOURCE_SCD, e);
 }
 
 /* Get the keygrip from CERT, return 0 on success */
 int
-card_help_get_keygrip (KsbaCert cert, unsigned char *array)
+card_help_get_keygrip (ksba_cert_t cert, unsigned char *array)
 {
   gcry_sexp_t s_pkey;
   int rc;
-  KsbaSexp p;
+  ksba_sexp_t p;
   size_t n;
   
   p = ksba_cert_get_public_key (cert);
@@ -88,7 +93,7 @@ card_help_get_keygrip (KsbaCert cert, unsigned char *array)
 
 \f
 /* Create a new context for the card and figures out some basic
-   information of the card.  Detects whgether a PKCS_15 application is
+   information of the card.  Detects whether a PKCS_15 application is
    stored.
 
    Common errors: GPG_ERR_CARD_NOT_PRESENT */
@@ -99,9 +104,12 @@ card_open (CARD *rcard)
   CARD card;
   int rc;
 
+  if (opt.disable_opensc)
+    return gpg_error (GPG_ERR_NOT_SUPPORTED);
+
   card = xtrycalloc (1, sizeof *card);
   if (!card)
-    return out_of_core ();
+    return gpg_error (gpg_err_code_from_errno (errno));
   card->reader = 0;
   
   rc = sc_establish_context (&card->ctx, "scdaemon");
@@ -268,7 +276,7 @@ find_iccsn (const unsigned char *buffer, size_t length, char **serial)
 
   *serial = p = xtrymalloc (2*n+1);
   if (!*serial)
-    return out_of_core ();
+    return gpg_error (gpg_err_code_from_errno (errno));
   for (; n; n--, p += 2, s++)
     sprintf (p, "%02X", *s);
   *p = 0;
@@ -318,8 +326,6 @@ card_get_serial_and_stamp (CARD card, char **serial, time_t *stamp)
         }
       if (card->p15card)
         card_p15_bind (card);
-      else
-        card_dinsig_bind (card);
       card->fnc.initialized = 1;
     }
       
@@ -382,7 +388,7 @@ card_get_serial_and_stamp (CARD card, char **serial, time_t *stamp)
       *serial = NULL;
       p = xtrymalloc (strlen (efser) + 7);
       if (!p)
-          rc = out_of_core ();
+          rc = gpg_error (gpg_err_code_from_errno (errno));
       else
         {
           strcpy (p, "FF0100");
@@ -398,7 +404,7 @@ card_get_serial_and_stamp (CARD card, char **serial, time_t *stamp)
         {
           xfree (*serial);
           *serial = NULL;
-          rc = out_of_core ();
+          rc = gpg_error (gpg_err_code_from_errno (errno));
         }
       else
         {
@@ -458,6 +464,7 @@ card_enum_keypairs (CARD card, int idx,
       100 := Regular X.509 cert
       101 := Trusted X.509 cert
       102 := Useful X.509 cert
+      110 := Root CA cert (DINSIG)
  */
 int
 card_enum_certs (CARD card, int idx, char **certid, int *certtype)