* [8] is k (private key)
*/
+#define ECC_PRIME 0
+#define ECC_ORDER 1
+#define ECC_A 2
+#define ECC_B 3
+#define ECC_GX 4
+#define ECC_GY 5
+#define ECC_X 6
+#define ECC_Y 7
+#define ECC_K 8
+
/**
* gnutls_direction_t:
* @GNUTLS_IMPORT: Import direction.
goto cleanup;
}
- ret = _gnutls_mpi_scan_nz(¶ms->params[0], val, val_size);
+ ret = _gnutls_mpi_scan_nz(¶ms->params[ECC_PRIME], val, val_size);
if (ret < 0)
{
gnutls_assert();
goto cleanup;
}
- ret = _gnutls_mpi_scan_nz(¶ms->params[1], val, val_size);
+ ret = _gnutls_mpi_scan_nz(¶ms->params[ECC_ORDER], val, val_size);
if (ret < 0)
{
gnutls_assert();
goto cleanup;
}
- ret = _gnutls_mpi_scan_nz(¶ms->params[2], val, val_size);
+ ret = _gnutls_mpi_scan_nz(¶ms->params[ECC_A], val, val_size);
if (ret < 0)
{
gnutls_assert();
goto cleanup;
}
- ret = _gnutls_mpi_scan_nz(¶ms->params[3], val, val_size);
+ ret = _gnutls_mpi_scan_nz(¶ms->params[ECC_B], val, val_size);
if (ret < 0)
{
gnutls_assert();
goto cleanup;
}
- ret = _gnutls_mpi_scan_nz(¶ms->params[4], val, val_size);
+ ret = _gnutls_mpi_scan_nz(¶ms->params[ECC_GX], val, val_size);
if (ret < 0)
{
gnutls_assert();
goto cleanup;
}
- ret = _gnutls_mpi_scan_nz(¶ms->params[5], val, val_size);
+ ret = _gnutls_mpi_scan_nz(¶ms->params[ECC_GY], val, val_size);
if (ret < 0)
{
gnutls_assert();
*curve = key->params.flags;
/* X */
- ret = _gnutls_mpi_dprint_lz (key->params.params[6], x);
+ ret = _gnutls_mpi_dprint_lz (key->params.params[ECC_X], x);
if (ret < 0)
{
gnutls_assert ();
}
/* Y */
- ret = _gnutls_mpi_dprint_lz (key->params.params[7], y);
+ ret = _gnutls_mpi_dprint_lz (key->params.params[ECC_Y], y);
if (ret < 0)
{
gnutls_assert ();
if (ret < 0)
return gnutls_assert_val(ret);
- if (_gnutls_mpi_scan_nz (&key->params.params[6], x->data, x->size))
+ if (_gnutls_mpi_scan_nz (&key->params.params[ECC_X], x->data, x->size))
{
gnutls_assert ();
ret = GNUTLS_E_MPI_SCAN_FAILED;
}
key->params.params_nr++;
- if (_gnutls_mpi_scan_nz (&key->params.params[7], y->data, y->size))
+ if (_gnutls_mpi_scan_nz (&key->params.params[ECC_Y], y->data, y->size))
{
gnutls_assert ();
ret = GNUTLS_E_MPI_SCAN_FAILED;
}
ret = _gnutls_ecc_ansi_x963_import(ecpoint->data, ecpoint->size,
- &key->params.params[6], &key->params.params[7]);
+ &key->params.params[ECC_X], &key->params.params[ECC_Y]);
if (ret < 0)
{
gnutls_assert ();
ecc_key * priv)
{
priv->type = PK_PRIVATE;
- memcpy(&priv->prime, pk_params->params[0], sizeof(mpz_t));
- memcpy(&priv->order, pk_params->params[1], sizeof(mpz_t));
- memcpy(&priv->A, pk_params->params[2], sizeof(mpz_t));
- memcpy(&priv->B, pk_params->params[3], sizeof(mpz_t));
- memcpy(&priv->Gx, pk_params->params[4], sizeof(mpz_t));
- memcpy(&priv->Gy, pk_params->params[5], sizeof(mpz_t));
- memcpy(&priv->pubkey.x, pk_params->params[6], sizeof(mpz_t));
- memcpy(&priv->pubkey.y, pk_params->params[7], sizeof(mpz_t));
- memcpy(&priv->k, pk_params->params[8], sizeof(mpz_t));
+ memcpy(&priv->prime, pk_params->params[ECC_PRIME], sizeof(mpz_t));
+ memcpy(&priv->order, pk_params->params[ECC_ORDER], sizeof(mpz_t));
+ memcpy(&priv->A, pk_params->params[ECC_A], sizeof(mpz_t));
+ memcpy(&priv->B, pk_params->params[ECC_B], sizeof(mpz_t));
+ memcpy(&priv->Gx, pk_params->params[ECC_GX], sizeof(mpz_t));
+ memcpy(&priv->Gy, pk_params->params[ECC_GY], sizeof(mpz_t));
+ memcpy(&priv->pubkey.x, pk_params->params[ECC_X], sizeof(mpz_t));
+ memcpy(&priv->pubkey.y, pk_params->params[ECC_Y], sizeof(mpz_t));
+ memcpy(&priv->k, pk_params->params[ECC_K], sizeof(mpz_t));
mpz_init_set_ui(priv->pubkey.z, 1);
}
ecc_key * pub)
{
pub->type = PK_PUBLIC;
- memcpy(&pub->prime, pk_params->params[0], sizeof(mpz_t));
- memcpy(&pub->order, pk_params->params[1], sizeof(mpz_t));
- memcpy(&pub->A, pk_params->params[2], sizeof(mpz_t));
- memcpy(&pub->B, pk_params->params[3], sizeof(mpz_t));
- memcpy(&pub->Gx, pk_params->params[4], sizeof(mpz_t));
- memcpy(&pub->Gy, pk_params->params[5], sizeof(mpz_t));
- memcpy(&pub->pubkey.x, pk_params->params[6], sizeof(mpz_t));
- memcpy(&pub->pubkey.y, pk_params->params[7], sizeof(mpz_t));
+ memcpy(&pub->prime, pk_params->params[ECC_PRIME], sizeof(mpz_t));
+ memcpy(&pub->order, pk_params->params[ECC_ORDER], sizeof(mpz_t));
+ memcpy(&pub->A, pk_params->params[ECC_A], sizeof(mpz_t));
+ memcpy(&pub->B, pk_params->params[ECC_B], sizeof(mpz_t));
+ memcpy(&pub->Gx, pk_params->params[ECC_GX], sizeof(mpz_t));
+ memcpy(&pub->Gy, pk_params->params[ECC_GY], sizeof(mpz_t));
+ memcpy(&pub->pubkey.x, pk_params->params[ECC_X], sizeof(mpz_t));
+ memcpy(&pub->pubkey.y, pk_params->params[ECC_Y], sizeof(mpz_t));
mpz_init_set_ui(pub->pubkey.z, 1);
}
_ecc_params_to_pubkey(pub, &ecc_pub);
_ecc_params_to_privkey(priv, &ecc_priv);
- if (ecc_projective_check_point(&ecc_pub.pubkey, pub->params[3], pub->params[0]) != 0)
+ if (ecc_projective_check_point(&ecc_pub.pubkey, pub->params[ECC_B], pub->params[ECC_PRIME]) != 0)
{
ret = gnutls_assert_val(GNUTLS_E_RECEIVED_ILLEGAL_PARAMETER);
goto ecc_cleanup;
}
params->flags = level;
- mpz_set(TOMPZ(params->params[0]), key.prime);
- mpz_set(TOMPZ(params->params[1]), key.order);
- mpz_set(TOMPZ(params->params[2]), key.A);
- mpz_set(TOMPZ(params->params[3]), key.B);
- mpz_set(TOMPZ(params->params[4]), key.Gx);
- mpz_set(TOMPZ(params->params[5]), key.Gy);
- mpz_set(TOMPZ(params->params[6]), key.pubkey.x);
- mpz_set(TOMPZ(params->params[7]), key.pubkey.y);
- mpz_set(TOMPZ(params->params[8]), key.k);
+ mpz_set(TOMPZ(params->params[ECC_PRIME]), key.prime);
+ mpz_set(TOMPZ(params->params[ECC_ORDER]), key.order);
+ mpz_set(TOMPZ(params->params[ECC_A]), key.A);
+ mpz_set(TOMPZ(params->params[ECC_B]), key.B);
+ mpz_set(TOMPZ(params->params[ECC_GX]), key.Gx);
+ mpz_set(TOMPZ(params->params[ECC_GY]), key.Gy);
+ mpz_set(TOMPZ(params->params[ECC_X]), key.pubkey.x);
+ mpz_set(TOMPZ(params->params[ECC_Y]), key.pubkey.y);
+ mpz_set(TOMPZ(params->params[ECC_K]), key.k);
ecc_fail:
ecc_free(&key);
goto cleanup;
}
- ret = _gnutls_mpi_dprint_lz(&key->params.params[8], &x);
+ ret = _gnutls_mpi_dprint_lz(&key->params.params[ECC_K], &x);
if (ret < 0)
{
gnutls_assert ();
/* Eventhough RFC5480 defines the public key to be an ECPoint (i.e. OCTET STRING),
* it is actually copied in raw there. Why do they use ASN.1 anyway?
*/
- return _gnutls_ecc_ansi_x963_import (der, dersize, ¶ms->params[6],
- ¶ms->params[7]);
+ return _gnutls_ecc_ansi_x963_import (der, dersize, ¶ms->params[ECC_X],
+ ¶ms->params[ECC_Y]);
}
if (params->params_nr < ECC_PUBLIC_PARAMS)
return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST);
- result = _gnutls_ecc_ansi_x963_export(params->flags, params->params[6], params->params[7], /*&out*/der);
+ result = _gnutls_ecc_ansi_x963_export(params->flags, params->params[ECC_X], params->params[ECC_Y], /*&out*/der);
if (result < 0)
return gnutls_assert_val(result);
if (params->params_nr != ECC_PRIVATE_PARAMS || oid == NULL)
return gnutls_assert_val(GNUTLS_E_INVALID_REQUEST);
- ret = _gnutls_ecc_ansi_x963_export(params->flags, params->params[6], params->params[7], &pubkey);
+ ret = _gnutls_ecc_ansi_x963_export(params->flags, params->params[ECC_X], params->params[ECC_Y], &pubkey);
if (ret < 0)
return gnutls_assert_val(ret);
goto cleanup;
}
- ret = _gnutls_x509_write_int (*c2, "privateKey", params->params[7], 1);
+ ret = _gnutls_x509_write_int (*c2, "privateKey", params->params[ECC_K], 1);
if (ret < 0)
{
gnutls_assert ();
goto error;
}
- ret = _gnutls_ecc_ansi_x963_import (out.data, out.size, &pkey->params.params[6],
- &pkey->params.params[7]);
+ ret = _gnutls_ecc_ansi_x963_import (out.data, out.size, &pkey->params.params[ECC_X],
+ &pkey->params.params[ECC_Y]);
_gnutls_free_datum(&out);
if (ret < 0)
pkey->params.params_nr += 2;
/* read the private key */
- ret = _gnutls_x509_read_int (pkey_asn, "privateKey", &pkey->params.params[8]);
+ ret = _gnutls_x509_read_int (pkey_asn, "privateKey", &pkey->params.params[ECC_K]);
if (ret < 0)
{
gnutls_assert();
if (ret < 0)
return gnutls_assert_val(ret);
- if (_gnutls_mpi_scan_nz (&key->params.params[6], x->data, x->size))
+ if (_gnutls_mpi_scan_nz (&key->params.params[ECC_X], x->data, x->size))
{
gnutls_assert ();
ret = GNUTLS_E_MPI_SCAN_FAILED;
}
key->params.params_nr++;
- if (_gnutls_mpi_scan_nz (&key->params.params[7], y->data, y->size))
+ if (_gnutls_mpi_scan_nz (&key->params.params[ECC_Y], y->data, y->size))
{
gnutls_assert ();
ret = GNUTLS_E_MPI_SCAN_FAILED;
}
key->params.params_nr++;
- if (_gnutls_mpi_scan_nz (&key->params.params[8], k->data, k->size))
+ if (_gnutls_mpi_scan_nz (&key->params.params[ECC_K], k->data, k->size))
{
gnutls_assert ();
ret = GNUTLS_E_MPI_SCAN_FAILED;
*curve = key->params.flags;
/* X */
- ret = _gnutls_mpi_dprint_lz (key->params.params[6], x);
+ ret = _gnutls_mpi_dprint_lz (key->params.params[ECC_X], x);
if (ret < 0)
{
gnutls_assert ();
}
/* Y */
- ret = _gnutls_mpi_dprint_lz (key->params.params[7], y);
+ ret = _gnutls_mpi_dprint_lz (key->params.params[ECC_Y], y);
if (ret < 0)
{
gnutls_assert ();
/* K */
- ret = _gnutls_mpi_dprint_lz (key->params.params[8], k);
+ ret = _gnutls_mpi_dprint_lz (key->params.params[ECC_K], k);
if (ret < 0)
{
gnutls_assert ();