aboutsummaryrefslogtreecommitdiff
path: root/src/pki_crypto.c
diff options
context:
space:
mode:
authorAris Adamantiadis <aris@0xbadc0de.be>2011-09-24 01:36:58 +0200
committerAris Adamantiadis <aris@0xbadc0de.be>2011-09-24 01:36:58 +0200
commite38f2f933b3f091fa4d9beed917e31f82bcf6a1c (patch)
tree528ed58a85c5c31ec6d257559af6164d223a06b8 /src/pki_crypto.c
parent21d68112b869697a54536086956545543cbe9ec6 (diff)
downloadlibssh-e38f2f933b3f091fa4d9beed917e31f82bcf6a1c.tar.gz
libssh-e38f2f933b3f091fa4d9beed917e31f82bcf6a1c.tar.xz
libssh-e38f2f933b3f091fa4d9beed917e31f82bcf6a1c.zip
pki: ssh_pki_generate
for both gcrypt and openssl
Diffstat (limited to 'src/pki_crypto.c')
-rw-r--r--src/pki_crypto.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/pki_crypto.c b/src/pki_crypto.c
index 130b5e5b..850ea668 100644
--- a/src/pki_crypto.c
+++ b/src/pki_crypto.c
@@ -244,6 +244,29 @@ fail:
return NULL;
}
+int pki_key_generate_rsa(ssh_key key, int parameter){
+ key->rsa = RSA_generate_key(parameter, 65537, NULL, NULL);
+ if(key->rsa == NULL)
+ return SSH_ERROR;
+ return SSH_OK;
+}
+
+int pki_key_generate_dss(ssh_key key, int parameter){
+ int rc;
+ key->dsa = DSA_generate_parameters(parameter, NULL, 0, NULL, NULL,
+ NULL, NULL);
+ if(key->dsa == NULL){
+ return SSH_ERROR;
+ }
+ rc = DSA_generate_key(key->dsa);
+ if (rc != 1){
+ DSA_free(key->dsa);
+ key->dsa=NULL;
+ return SSH_ERROR;
+ }
+ return SSH_OK;
+}
+
ssh_key pki_private_key_from_base64(const char *b64_key,
const char *passphrase,
ssh_auth_callback auth_fn,