summaryrefslogtreecommitdiff
path: root/cipher/elgamal.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2013-10-16 16:20:56 +0200
committerWerner Koch <wk@gnupg.org>2013-10-16 16:20:56 +0200
commita329b6abf00c990faf1986f9fbad7b4d71c13bcb (patch)
tree52b1f995cbc863404fb8a01005f3d17c29706655 /cipher/elgamal.c
parent45aa6131e93fac89d46733b3436d960f35fb99b2 (diff)
downloadlibgcrypt-a329b6abf00c990faf1986f9fbad7b4d71c13bcb.tar.gz
sexp: Add function gcry_sexp_extract_param.
* src/gcrypt.h.in (_GCRY_GCC_ATTR_SENTINEL): New. (gcry_sexp_extract_param): New. * src/visibility.c (gcry_sexp_extract_param): New. * src/visibility.h (gcry_sexp_extract_param): Add hack to detect internal use. * cipher/pubkey-util.c (_gcry_pk_util_extract_mpis): Move and split into ... * src/sexp.c (_gcry_sexp_vextract_param) (_gcry_sexp_extract_param): this. Change all callers. Add support for buffer descriptors and a path option/ * tests/tsexp.c (die, hex2buffer, hex2mpi, hex2mpiopa): New. (cmp_mpihex, cmp_bufhex): New. (check_extract_param): New. Signed-off-by: Werner Koch <wk@gnupg.org>
Diffstat (limited to 'cipher/elgamal.c')
-rw-r--r--cipher/elgamal.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/cipher/elgamal.c b/cipher/elgamal.c
index 691e122b..432ba6fd 100644
--- a/cipher/elgamal.c
+++ b/cipher/elgamal.c
@@ -735,9 +735,9 @@ elg_check_secret_key (gcry_sexp_t keyparms)
gcry_err_code_t rc;
ELG_secret_key sk = {NULL, NULL, NULL, NULL};
- rc = _gcry_pk_util_extract_mpis (keyparms, "pgyx",
- &sk.p, &sk.g, &sk.y, &sk.x,
- NULL);
+ rc = _gcry_sexp_extract_param (keyparms, NULL, "pgyx",
+ &sk.p, &sk.g, &sk.y, &sk.x,
+ NULL);
if (rc)
goto leave;
@@ -781,7 +781,8 @@ elg_encrypt (gcry_sexp_t *r_ciph, gcry_sexp_t s_data, gcry_sexp_t keyparms)
}
/* Extract the key. */
- rc = _gcry_pk_util_extract_mpis (keyparms, "pgy", &pk.p, &pk.g, &pk.y, NULL);
+ rc = _gcry_sexp_extract_param (keyparms, NULL, "pgy",
+ &pk.p, &pk.g, &pk.y, NULL);
if (rc)
goto leave;
if (DBG_CIPHER)
@@ -831,7 +832,7 @@ elg_decrypt (gcry_sexp_t *r_plain, gcry_sexp_t s_data, gcry_sexp_t keyparms)
rc = _gcry_pk_util_preparse_encval (s_data, elg_names, &l1, &ctx);
if (rc)
goto leave;
- rc = _gcry_pk_util_extract_mpis (l1, "ab", &data_a, &data_b, NULL);
+ rc = _gcry_sexp_extract_param (l1, NULL, "ab", &data_a, &data_b, NULL);
if (rc)
goto leave;
if (DBG_CIPHER)
@@ -846,9 +847,9 @@ elg_decrypt (gcry_sexp_t *r_plain, gcry_sexp_t s_data, gcry_sexp_t keyparms)
}
/* Extract the key. */
- rc = _gcry_pk_util_extract_mpis (keyparms, "pgyx",
- &sk.p, &sk.g, &sk.y, &sk.x,
- NULL);
+ rc = _gcry_sexp_extract_param (keyparms, NULL, "pgyx",
+ &sk.p, &sk.g, &sk.y, &sk.x,
+ NULL);
if (rc)
goto leave;
if (DBG_CIPHER)
@@ -940,8 +941,8 @@ elg_sign (gcry_sexp_t *r_sig, gcry_sexp_t s_data, gcry_sexp_t keyparms)
}
/* Extract the key. */
- rc = _gcry_pk_util_extract_mpis (keyparms, "pgyx",
- &sk.p, &sk.g, &sk.y, &sk.x, NULL);
+ rc = _gcry_sexp_extract_param (keyparms, NULL, "pgyx",
+ &sk.p, &sk.g, &sk.y, &sk.x, NULL);
if (rc)
goto leave;
if (DBG_CIPHER)
@@ -1008,7 +1009,7 @@ elg_verify (gcry_sexp_t s_sig, gcry_sexp_t s_data, gcry_sexp_t s_keyparms)
rc = _gcry_pk_util_preparse_sigval (s_sig, elg_names, &l1, NULL);
if (rc)
goto leave;
- rc = _gcry_pk_util_extract_mpis (l1, "rs", &sig_r, &sig_s, NULL);
+ rc = _gcry_sexp_extract_param (l1, NULL, "rs", &sig_r, &sig_s, NULL);
if (rc)
goto leave;
if (DBG_CIPHER)
@@ -1018,8 +1019,8 @@ elg_verify (gcry_sexp_t s_sig, gcry_sexp_t s_data, gcry_sexp_t s_keyparms)
}
/* Extract the key. */
- rc = _gcry_pk_util_extract_mpis (s_keyparms, "pgy",
- &pk.p, &pk.g, &pk.y, NULL);
+ rc = _gcry_sexp_extract_param (s_keyparms, NULL, "pgy",
+ &pk.p, &pk.g, &pk.y, NULL);
if (rc)
goto leave;
if (DBG_CIPHER)