1
0
mirror of https://git.libssh.org/projects/libssh.git synced 2025-08-08 19:02:06 +03:00

pki: Add ssh_pki_export_pubkey_rsa1().

This commit is contained in:
Andreas Schneider
2011-09-05 11:02:23 +02:00
parent 6901e25085
commit 808c7a9be4
5 changed files with 90 additions and 0 deletions

View File

@@ -1145,6 +1145,51 @@ fail:
return NULL;
}
int pki_export_pubkey_rsa1(const ssh_key key,
const char *host,
char *rsa1,
size_t rsa1_len)
{
gcry_sexp_t sexp;
int rsa_size;
bignum b;
char *e, *n;
sexp = gcry_sexp_find_token(key->rsa, "e", 0);
if (sexp == NULL) {
return SSH_ERROR;
}
b = gcry_sexp_nth_mpi(sexp, 1, GCRYMPI_FMT_USG);
gcry_sexp_release(sexp);
if (b == NULL) {
return SSH_ERROR;
}
e = bignum_bn2dec(b);
sexp = gcry_sexp_find_token(key->rsa, "n", 0);
if (sexp == NULL) {
SAFE_FREE(e);
return SSH_ERROR;
}
b = gcry_sexp_nth_mpi(sexp, 1, GCRYMPI_FMT_USG);
gcry_sexp_release(sexp);
if (b == NULL) {
SAFE_FREE(e);
return SSH_ERROR;
}
n = bignum_bn2dec(b);
rsa_size = (gcry_pk_get_nbits(key->rsa) + 7) / 8;
snprintf(rsa1, rsa1_len,
"%s %d %s %s\n",
host, rsa_size << 3, e, n);
SAFE_FREE(e);
SAFE_FREE(n);
return SSH_OK;
}
ssh_string pki_signature_to_blob(const ssh_signature sig)
{
char buffer[40] = {0};