[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 4/5] pki_gcrypt: Rework 'pki_publickey_to_blob'
[Thread Prev] | [Thread Next]
- Subject: [PATCH 4/5] pki_gcrypt: Rework 'pki_publickey_to_blob'
- From: Justus Winter <justus@xxxxxxxxxxx>
- Reply-to: libssh@xxxxxxxxxx
- Date: Tue, 22 Mar 2016 11:47:32 +0100
- To: libssh@xxxxxxxxxx
- Cc: Justus Winter <justus@xxxxxxxxxxx>
* src/pki_gcrypt.c (pki_publickey_to_blob): Rework using the new helper 'ssh_sexp_extract_mpi'. Signed-off-by: Justus Winter <justus@xxxxxxxxxxx> --- src/pki_gcrypt.c | 62 +++++++++++--------------------------------------------- 1 file changed, 12 insertions(+), 50 deletions(-) diff --git a/src/pki_gcrypt.c b/src/pki_gcrypt.c index ef4cf4a..90ddd4c 100644 --- a/src/pki_gcrypt.c +++ b/src/pki_gcrypt.c @@ -1001,9 +1001,6 @@ ssh_string pki_publickey_to_blob(const ssh_key key) ssh_string p = NULL; ssh_string g = NULL; ssh_string q = NULL; - const char *tmp = NULL; - size_t size; - gcry_sexp_t sexp; int rc; buffer = ssh_buffer_new(); @@ -1035,52 +1032,29 @@ ssh_string pki_publickey_to_blob(const ssh_key key) switch (key->type) { case SSH_KEYTYPE_DSS: - sexp = gcry_sexp_find_token(key->dsa, "p", 0); - if (sexp == NULL) { - goto fail; - } - tmp = gcry_sexp_nth_data(sexp, 1, &size); - p = ssh_string_new(size); + p = ssh_sexp_extract_mpi(key->dsa, "p", GCRYMPI_FMT_STD, + GCRYMPI_FMT_STD); if (p == NULL) { goto fail; } - ssh_string_fill(p, (char *) tmp, size); - gcry_sexp_release(sexp); - sexp = gcry_sexp_find_token(key->dsa, "q", 0); - if (sexp == NULL) { - goto fail; - } - tmp = gcry_sexp_nth_data(sexp, 1, &size); - q = ssh_string_new(size); + q = ssh_sexp_extract_mpi(key->dsa, "q", GCRYMPI_FMT_STD, + GCRYMPI_FMT_STD); if (q == NULL) { goto fail; } - ssh_string_fill(q, (char *) tmp, size); - gcry_sexp_release(sexp); - sexp = gcry_sexp_find_token(key->dsa, "g", 0); - if (sexp == NULL) { - goto fail; - } - tmp = gcry_sexp_nth_data(sexp, 1, &size); - g = ssh_string_new(size); + g = ssh_sexp_extract_mpi(key->dsa, "g", GCRYMPI_FMT_STD, + GCRYMPI_FMT_STD); if (g == NULL) { goto fail; } - ssh_string_fill(g, (char *) tmp, size); - gcry_sexp_release(sexp); - sexp = gcry_sexp_find_token(key->dsa, "y", 0); - if (sexp == NULL) { - goto fail; - } - tmp = gcry_sexp_nth_data(sexp, 1, &size); - n = ssh_string_new(size); + n = ssh_sexp_extract_mpi(key->dsa, "y", GCRYMPI_FMT_STD, + GCRYMPI_FMT_STD); if (n == NULL) { goto fail; } - ssh_string_fill(n, (char *) tmp, size); if (ssh_buffer_add_ssh_string(buffer, p) < 0) { goto fail; @@ -1107,29 +1081,17 @@ ssh_string pki_publickey_to_blob(const ssh_key key) break; case SSH_KEYTYPE_RSA: case SSH_KEYTYPE_RSA1: - sexp = gcry_sexp_find_token(key->rsa, "e", 0); - if (sexp == NULL) { - goto fail; - } - tmp = gcry_sexp_nth_data(sexp, 1, &size); - e = ssh_string_new(size); + e = ssh_sexp_extract_mpi(key->rsa, "e", GCRYMPI_FMT_STD, + GCRYMPI_FMT_STD); if (e == NULL) { goto fail; } - ssh_string_fill(e, (char *) tmp, size); - gcry_sexp_release(sexp); - sexp = gcry_sexp_find_token(key->rsa, "n", 0); - if (sexp == NULL) { - goto fail; - } - tmp = gcry_sexp_nth_data(sexp, 1, &size); - n = ssh_string_new(size); + n = ssh_sexp_extract_mpi(key->rsa, "n", GCRYMPI_FMT_STD, + GCRYMPI_FMT_STD); if (n == NULL) { goto fail; } - ssh_string_fill(n, (char *) tmp, size); - gcry_sexp_release(sexp); if (ssh_buffer_add_ssh_string(buffer, e) < 0) { goto fail; -- 2.1.4
Re: [PATCH 1/5] options: Check if a port has been given | Andreas Schneider <asn@xxxxxxxxxxxxxx> |
[PATCH 1/5] options: Check if a port has been given | Justus Winter <justus@xxxxxxxxxxx> |