]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
minor fixes in TPM code
authorNikos Mavrogiannopoulos <nmav@gnutls.org>
Sat, 14 Jul 2012 08:11:49 +0000 (10:11 +0200)
committerNikos Mavrogiannopoulos <nmav@gnutls.org>
Sat, 14 Jul 2012 08:11:49 +0000 (10:11 +0200)
lib/gnutls_privkey.c
lib/includes/gnutls/abstract.h
lib/tpm.c

index 66aece2556dae9ee9f1eca85170ae9ca214ca21f..cb0aa006219b52952396a70e9994d6179e58b1b2 100644 (file)
@@ -967,6 +967,7 @@ cleanup:
  * gnutls_privkey_import_url:
  * @key: A key of type #gnutls_pubkey_t
  * @url: A PKCS 11 url
+ * @flags: should be zero
  *
  * This function will import a PKCS11 or TPM URL as a
  * private key.
@@ -977,7 +978,7 @@ cleanup:
  * Since: 3.1.0
  **/
 int
-gnutls_privkey_import_url (gnutls_privkey_t key, const char *url)
+gnutls_privkey_import_url (gnutls_privkey_t key, const char *url, unsigned int flags)
 {
 #ifdef ENABLE_PKCS11
   if (strstr(url, "pkcs11:") != NULL)
index 08fea1a6d9a91a140b1c42ae6374497cc0ca6e8a..6dce2e78b85746c178d7d36a8f23ed1813b92ca4 100644 (file)
@@ -225,7 +225,7 @@ gnutls_privkey_import_tpm_url (gnutls_privkey_t pkey,
           const char* url, const char *srk_password, const char *key_password,
           unsigned int flags);
 
-int gnutls_privkey_import_url (gnutls_privkey_t key, const char *url);
+int gnutls_privkey_import_url (gnutls_privkey_t key, const char *url, unsigned int flags);
 
 int gnutls_privkey_import_pkcs11_url (gnutls_privkey_t key, const char *url);
 
index c9cdbd349d48a8669c1666195507ee1032b53ec6..54ba061c2dd184a85c85511fcabed55497aa65a6 100644 (file)
--- a/lib/tpm.c
+++ b/lib/tpm.c
@@ -76,7 +76,7 @@ static int encode_tpmkey_url(char** url, const TSS_UUID* uuid, const TSS_UUID* p
 
 static int tss_err_pwd(TSS_RESULT err, int pwd_error)
 {
-  _gnutls_debug_log("TPM error: %s (%x)\n", Trspi_Error_String(err), (unsigned int)Trspi_Error_Code(err));
+  _gnutls_debug_log("TPM (%s) error: %s (%x)\n", Trspi_Error_Layer(err), Trspi_Error_String(err), (unsigned int)Trspi_Error_Code(err));
 
   switch(ERROR_LAYER(err))
     {
@@ -88,9 +88,10 @@ static int tss_err_pwd(TSS_RESULT err, int pwd_error)
             case TPM_E_NOSRK:
               return GNUTLS_E_TPM_UNINITIALIZED;
             default:
-              return GNUTLS_E_TPM_ERROR;
+              return gnutls_assert_val(GNUTLS_E_TPM_ERROR);
           }
       case TSS_LAYER_TCS:
+      case TSS_LAYER_TSP:
         switch(ERROR_CODE(err))
           {
             case TSS_E_COMM_FAILURE:
@@ -101,10 +102,10 @@ static int tss_err_pwd(TSS_RESULT err, int pwd_error)
             case TSS_E_PS_KEY_NOTFOUND:
               return GNUTLS_E_TPM_KEY_NOT_FOUND;
             default:
-              return GNUTLS_E_TPM_ERROR;
+              return gnutls_assert_val(GNUTLS_E_TPM_ERROR);
           }
        default:
-         return GNUTLS_E_TPM_ERROR;
+         return gnutls_assert_val(GNUTLS_E_TPM_ERROR);
     }
 }
 
@@ -275,8 +276,6 @@ int err, ret;
   if (err)
     {
       gnutls_assert ();
-      _gnutls_debug_log ("Failed to set TPM PIN: %s\n",
-                        Trspi_Error_String (err));
       ret = tss_err(err);
       goto out_srkpol;
     }
@@ -455,9 +454,6 @@ import_tpm_key (gnutls_privkey_t pkey,
          if (err)
            {
              gnutls_assert ();
-             _gnutls_debug_log
-                 ("Failed to create key policy object: %s\n",
-                  Trspi_Error_String (err));
               ret = tss_err(err);
              goto out_key;
            }
@@ -466,8 +462,6 @@ import_tpm_key (gnutls_privkey_t pkey,
          if (err)
            {
              gnutls_assert ();
-             _gnutls_debug_log ("Failed to assign policy to key: %s\n",
-                                Trspi_Error_String (err));
               ret = tss_err(err);
              goto out_key_policy;
            }
@@ -479,8 +473,6 @@ import_tpm_key (gnutls_privkey_t pkey,
       if (err)
        {
          gnutls_assert ();
-         _gnutls_debug_log ("Failed to set key PIN: %s\n",
-                            Trspi_Error_String (err));
           ret = tss_err_key(err);
          goto out_key_policy;
        }
@@ -722,7 +714,7 @@ static int decode_tpmkey_url(const char* url, struct tpmkey_url_st *s)
     {
       p += sizeof ("file=") - 1;
       size = strlen(p);
-      s->filename = gnutls_malloc(size);
+      s->filename = gnutls_malloc(size+1);
       if (s->filename == NULL)
         return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
 
@@ -732,6 +724,7 @@ static int decode_tpmkey_url(const char* url, struct tpmkey_url_st *s)
           gnutls_assert();
           goto cleanup;
         }
+      s->filename[size] = 0;
     }
   else if ((p = strstr(url, "uuid=")) != NULL)
    {
@@ -825,6 +818,7 @@ int ret;
       if (ret < 0)
         {
           gnutls_assert();
+          _gnutls_debug_log("Error loading %s\n", durl.filename);
           goto cleanup;
         }
 
@@ -949,20 +943,9 @@ struct tpm_ctx_st s;
                                         asn1.size, asn1.data, &s.tpm_key);
       if (err != 0)
         {
-          if (srk_password)
-            {
-              gnutls_assert ();
-              _gnutls_debug_log
-                  ("Failed to load TPM key blob: %s\n",
-                   Trspi_Error_String (err));
-            }
-
-          if (err)
-            {
-              gnutls_assert ();
-              ret = tss_err(err);
-              goto out_blob;
-            }
+          gnutls_assert ();
+          ret = tss_err(err);
+          goto out_blob;
         }
     }
   else if (uuid)