~ubuntu-branches/ubuntu/precise/gnutls28/precise

« back to all changes in this revision

Viewing changes to lib/nettle/pk.c

  • Committer: Package Import Robot
  • Author(s): Andreas Metzler
  • Date: 2011-09-20 19:37:06 UTC
  • mfrom: (1.1.3)
  • Revision ID: package-import@ubuntu.com-20110920193706-a9phjijvddzg3nkl
Tags: 3.0.3-1
* New upstream version. (Includes a fix for #640639)
* Bump shlibs.

Show diffs side-by-side

added added

removed removed

Lines of Context:
97
97
        mpz_init_set_ui(priv->pubkey.z, 1);
98
98
}
99
99
 
 
100
static void _ecc_params_clear(ecc_key * key)
 
101
{
 
102
  mpz_clear(key->pubkey.z);
 
103
}
 
104
 
100
105
static void 
101
106
_ecc_params_to_pubkey(const gnutls_pk_params_st * pk_params,
102
107
                       ecc_key * pub)
126
131
        int curve = priv->flags;
127
132
        unsigned long sz;
128
133
 
 
134
        out->data = NULL;
 
135
 
129
136
        if (is_supported_curve(curve) == 0)
130
137
          return gnutls_assert_val(GNUTLS_E_ECC_NO_SUPPORTED_CURVES);
131
138
 
135
142
        sz = ECC_BUF_SIZE;
136
143
        out->data = gnutls_malloc(sz);
137
144
        if (out->data == NULL)
138
 
          return gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
 
145
          {
 
146
            ret = gnutls_assert_val(GNUTLS_E_MEMORY_ERROR);
 
147
            goto ecc_cleanup;
 
148
          }
139
149
 
140
150
        ret = ecc_shared_secret(&ecc_priv, &ecc_pub, out->data, &sz);
141
151
        if (ret != 0)
 
152
          ret = gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR);
 
153
 
 
154
ecc_cleanup:
 
155
        _ecc_params_clear(&ecc_pub);
 
156
        _ecc_params_clear(&ecc_priv);
 
157
 
 
158
        if (ret < 0)
142
159
          {
143
160
            gnutls_free(out->data);
144
 
            return gnutls_assert_val(GNUTLS_E_INTERNAL_ERROR);
 
161
            return ret;
145
162
          }
 
163
 
146
164
        out->size = sz;
147
165
        break;
148
166
      }
378
396
 
379
397
      ecdsa_fail:
380
398
        dsa_signature_clear (&sig);
 
399
        _ecc_params_clear( &priv);
381
400
 
382
401
        if (ret < 0)
383
402
          {
560
579
 
561
580
        _gnutls_mpi_release (&tmp[0]);
562
581
        _gnutls_mpi_release (&tmp[1]);
 
582
        _ecc_params_clear( &pub);
563
583
        break;
564
584
      }
565
585
    case GNUTLS_PK_DSA: