From: Nikos Mavrogiannopoulos Date: Sat, 14 Jul 2012 08:11:49 +0000 (+0200) Subject: minor fixes in TPM code X-Git-Tag: gnutls_3_1_0pre0~60 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=61e04c3e3f0ca09eacbe9f7a44d40dc52c7aebb4;p=thirdparty%2Fgnutls.git minor fixes in TPM code --- diff --git a/lib/gnutls_privkey.c b/lib/gnutls_privkey.c index 66aece2556..cb0aa00621 100644 --- a/lib/gnutls_privkey.c +++ b/lib/gnutls_privkey.c @@ -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) diff --git a/lib/includes/gnutls/abstract.h b/lib/includes/gnutls/abstract.h index 08fea1a6d9..6dce2e78b8 100644 --- a/lib/includes/gnutls/abstract.h +++ b/lib/includes/gnutls/abstract.h @@ -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); diff --git a/lib/tpm.c b/lib/tpm.c index c9cdbd349d..54ba061c2d 100644 --- 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)