mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-22 10:19:57 +01:00
ecc-sos,gpg: Use sexp_extract_param_sos to get MPI.
* g10/export.c (sexp_extract_param_sos): Expose. * g10/keygen.c (ecckey_from_sexp): Use it. Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
This commit is contained in:
parent
f71dff40ea
commit
fb9e39dcc9
@ -63,7 +63,7 @@ fixup_when_ecc_private_key (unsigned char *buf, size_t *buflen_p)
|
|||||||
s += n;
|
s += n;
|
||||||
s0 = (unsigned char *)s;
|
s0 = (unsigned char *)s;
|
||||||
n = snext (&s);
|
n = snext (&s);
|
||||||
n0 = s - s0;
|
n0 = s - s0;
|
||||||
|
|
||||||
if (!n)
|
if (!n)
|
||||||
return gpg_error (GPG_ERR_INV_SEXP);
|
return gpg_error (GPG_ERR_INV_SEXP);
|
||||||
@ -78,7 +78,7 @@ fixup_when_ecc_private_key (unsigned char *buf, size_t *buflen_p)
|
|||||||
buflen--;
|
buflen--;
|
||||||
numsize = snprintf (s0, s-s0+1, "%u:", (unsigned int)n);
|
numsize = snprintf (s0, s-s0+1, "%u:", (unsigned int)n);
|
||||||
memmove (s0+numsize, s+1, buflen - (s - buf));
|
memmove (s0+numsize, s+1, buflen - (s - buf));
|
||||||
memset (s0+numsize+buflen - (s - buf), 0, (n0 - numsize) + 1);
|
memset (s0+numsize+buflen - (s - buf), 0, (n0 - numsize) + 1);
|
||||||
buflen -= (n0 - numsize);
|
buflen -= (n0 - numsize);
|
||||||
s = s0+numsize+n;
|
s = s0+numsize+n;
|
||||||
*buflen_p = buflen;
|
*buflen_p = buflen;
|
||||||
|
@ -627,7 +627,7 @@ canon_pk_algo (enum gcry_pk_algos algo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static gpg_error_t
|
gpg_error_t
|
||||||
sexp_extract_param_sos (gcry_sexp_t sexp, const char *param, gcry_mpi_t *r_sos)
|
sexp_extract_param_sos (gcry_sexp_t sexp, const char *param, gcry_mpi_t *r_sos)
|
||||||
{
|
{
|
||||||
gpg_error_t err;
|
gpg_error_t err;
|
||||||
|
17
g10/keygen.c
17
g10/keygen.c
@ -1329,19 +1329,10 @@ ecckey_from_sexp (gcry_mpi_t *array, gcry_sexp_t sexp, int algo)
|
|||||||
if (err)
|
if (err)
|
||||||
goto leave;
|
goto leave;
|
||||||
|
|
||||||
l2 = gcry_sexp_find_token (list, "q", 0);
|
err = sexp_extract_param_sos (list, "q", &array[1])
|
||||||
if (!l2)
|
if (err)
|
||||||
{
|
goto leave;
|
||||||
err = gpg_error (GPG_ERR_NO_OBJ);
|
|
||||||
goto leave;
|
|
||||||
}
|
|
||||||
array[1] = gcry_sexp_nth_mpi (l2, 1, GCRYMPI_FMT_OPAQUE);
|
|
||||||
gcry_sexp_release (l2);
|
|
||||||
if (!array[1])
|
|
||||||
{
|
|
||||||
err = gpg_error (GPG_ERR_INV_OBJ);
|
|
||||||
goto leave;
|
|
||||||
}
|
|
||||||
gcry_sexp_release (list);
|
gcry_sexp_release (list);
|
||||||
|
|
||||||
if (algo == PUBKEY_ALGO_ECDH)
|
if (algo == PUBKEY_ALGO_ECDH)
|
||||||
|
@ -415,6 +415,9 @@ void pop_export_filters (void);
|
|||||||
|
|
||||||
int exact_subkey_match_p (KEYDB_SEARCH_DESC *desc, kbnode_t node);
|
int exact_subkey_match_p (KEYDB_SEARCH_DESC *desc, kbnode_t node);
|
||||||
|
|
||||||
|
gpg_error_t sexp_extract_param_sos (gcry_sexp_t sexp, const char *param,
|
||||||
|
gcry_mpi_t *r_sos);
|
||||||
|
|
||||||
int export_pubkeys (ctrl_t ctrl, strlist_t users, unsigned int options,
|
int export_pubkeys (ctrl_t ctrl, strlist_t users, unsigned int options,
|
||||||
export_stats_t stats);
|
export_stats_t stats);
|
||||||
int export_seckeys (ctrl_t ctrl, strlist_t users, unsigned int options,
|
int export_seckeys (ctrl_t ctrl, strlist_t users, unsigned int options,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user