summaryrefslogtreecommitdiffhomepage
path: root/gensignkey.c
diff options
context:
space:
mode:
Diffstat (limited to 'gensignkey.c')
-rw-r--r--gensignkey.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/gensignkey.c b/gensignkey.c
index 4691de0..8317fea 100644
--- a/gensignkey.c
+++ b/gensignkey.c
@@ -7,9 +7,6 @@
#include "signkey.h"
#include "dbrandom.h"
-#define RSA_DEFAULT_SIZE 2048
-#define DSS_DEFAULT_SIZE 1024
-
/* Returns DROPBEAR_SUCCESS or DROPBEAR_FAILURE */
static int buf_writefile(buffer * buf, const char * filename) {
int ret = DROPBEAR_FAILURE;
@@ -55,11 +52,12 @@ static int get_default_bits(enum signkey_type keytype)
switch (keytype) {
#if DROPBEAR_RSA
case DROPBEAR_SIGNKEY_RSA:
- return RSA_DEFAULT_SIZE;
+ return DROPBEAR_DEFAULT_RSA_SIZE;
#endif
#if DROPBEAR_DSS
case DROPBEAR_SIGNKEY_DSS:
- return DSS_DEFAULT_SIZE;
+ /* DSS for SSH only defines 1024 bits */
+ return 1024;
#endif
#if DROPBEAR_ECDSA
case DROPBEAR_SIGNKEY_ECDSA_KEYGEN:
@@ -76,6 +74,14 @@ static int get_default_bits(enum signkey_type keytype)
}
}
+int signkey_generate_get_bits(enum signkey_type keytype, int bits) {
+ if (bits == 0)
+ {
+ bits = get_default_bits(keytype);
+ }
+ return bits;
+}
+
/* if skip_exist is set it will silently return if the key file exists */
int signkey_generate(enum signkey_type keytype, int bits, const char* filename, int skip_exist)
{
@@ -83,10 +89,7 @@ int signkey_generate(enum signkey_type keytype, int bits, const char* filename,
buffer *buf = NULL;
char *fn_temp = NULL;
int ret = DROPBEAR_FAILURE;
- if (bits == 0)
- {
- bits = get_default_bits(keytype);
- }
+ bits = signkey_generate_get_bits(keytype, bits);
/* now we can generate the key */
key = new_sign_key();