diff options
Diffstat (limited to 'src/pki_crypto.c')
-rw-r--r-- | src/pki_crypto.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/pki_crypto.c b/src/pki_crypto.c index 29e589f..32ee13d 100644 --- a/src/pki_crypto.c +++ b/src/pki_crypto.c @@ -519,6 +519,35 @@ fail: return NULL; } +int pki_export_pubkey_rsa1(const ssh_key key, + const char *host, + char *rsa1, + size_t rsa1_len) +{ + char *e; + char *n; + int rsa_size = RSA_size(key->rsa); + + e = bignum_bn2dec(key->rsa->e); + if (e == NULL) { + return SSH_ERROR; + } + + n = bignum_bn2dec(key->rsa->n); + if (n == NULL) { + OPENSSL_free(e); + return SSH_ERROR; + } + + snprintf(rsa1, rsa1_len, + "%s %d %s %s\n", + host, rsa_size << 3, e, n); + OPENSSL_free(e); + OPENSSL_free(n); + + return SSH_OK; +} + /** * @internal * |