summaryrefslogtreecommitdiffhomepage
path: root/signkey.h
diff options
context:
space:
mode:
authorMatt Johnston <matt@ucc.asn.au>2020-05-17 23:58:31 +0800
committerMatt Johnston <matt@ucc.asn.au>2020-05-17 23:58:31 +0800
commit972d723484d89c71e73ed63cc17bb2a6ce8cca5a (patch)
treea235001a141556ea7e2578ff12f2765d6a953280 /signkey.h
parent7dc2f36c3e2d21455ae432da4d8f338e7dc0668c (diff)
split signkey_type and signature_type for RSA sha1 vs sha256
Diffstat (limited to 'signkey.h')
-rw-r--r--signkey.h36
1 files changed, 28 insertions, 8 deletions
diff --git a/signkey.h b/signkey.h
index 78b237b..9468509 100644
--- a/signkey.h
+++ b/signkey.h
@@ -32,6 +32,7 @@ struct dropbear_DSS_Key;
struct dropbear_RSA_Key;
struct dropbear_ED25519_Key;
+/* Must match with signature_type below */
enum signkey_type {
#if DROPBEAR_RSA
DROPBEAR_SIGNKEY_RSA,
@@ -49,13 +50,32 @@ enum signkey_type {
#endif
DROPBEAR_SIGNKEY_NUM_NAMED,
DROPBEAR_SIGNKEY_ECDSA_KEYGEN = 70, /* just "ecdsa" for keygen */
-#if DROPBEAR_RSA_SHA256
- DROPBEAR_SIGNKEY_RSA_SHA256, /* rsa-sha2-256 signature. has a ssh-rsa key */
-#endif
DROPBEAR_SIGNKEY_ANY = 80,
DROPBEAR_SIGNKEY_NONE = 90,
};
+/* Must match with signkey_type above, apart from rsa */
+enum signature_type {
+#if DROPBEAR_DSS
+ DROPBEAR_SIGNATURE_DSS = DROPBEAR_SIGNKEY_DSS,
+#endif
+#if DROPBEAR_ECDSA
+ DROPBEAR_SIGNATURE_ECDSA_NISTP256 = DROPBEAR_SIGNKEY_ECDSA_NISTP256,
+ DROPBEAR_SIGNATURE_ECDSA_NISTP384 = DROPBEAR_SIGNKEY_ECDSA_NISTP384,
+ DROPBEAR_SIGNATURE_ECDSA_NISTP521 = DROPBEAR_SIGNKEY_ECDSA_NISTP521,
+#endif /* DROPBEAR_ECDSA */
+#if DROPBEAR_ED25519
+ DROPBEAR_SIGNATURE_ED25519 = DROPBEAR_SIGNKEY_ED25519,
+#endif
+#if DROPBEAR_RSA_SHA1
+ DROPBEAR_SIGNATURE_RSA_SHA1 = 100, /* ssh-rsa signature (sha1) */
+#endif
+#if DROPBEAR_RSA_SHA256
+ DROPBEAR_SIGNATURE_RSA_SHA256 = 101, /* rsa-sha2-256 signature. has a ssh-rsa key */
+#endif
+ DROPBEAR_SIGNATURE_NONE = DROPBEAR_SIGNKEY_NONE,
+};
+
/* Sources for signing keys */
typedef enum {
@@ -97,17 +117,17 @@ typedef struct SIGN_key sign_key;
sign_key * new_sign_key(void);
const char* signkey_name_from_type(enum signkey_type type, unsigned int *namelen);
enum signkey_type signkey_type_from_name(const char* name, unsigned int namelen);
-const char* signature_name_from_type(enum signkey_type type, unsigned int *namelen);
-enum signkey_type signature_type_from_name(const char* name, unsigned int namelen);
-enum signkey_type signkey_type_from_signature(enum signkey_type sigtype);
+const char* signature_name_from_type(enum signature_type type, unsigned int *namelen);
+enum signature_type signature_type_from_name(const char* name, unsigned int namelen);
+enum signkey_type signkey_type_from_signature(enum signature_type sigtype);
int buf_get_pub_key(buffer *buf, sign_key *key, enum signkey_type *type);
int buf_get_priv_key(buffer* buf, sign_key *key, enum signkey_type *type);
void buf_put_pub_key(buffer* buf, sign_key *key, enum signkey_type type);
void buf_put_priv_key(buffer* buf, sign_key *key, enum signkey_type type);
void sign_key_free(sign_key *key);
-void buf_put_sign(buffer* buf, sign_key *key, enum signkey_type sigtype, const buffer *data_buf);
+void buf_put_sign(buffer* buf, sign_key *key, enum signature_type sigtype, const buffer *data_buf);
#if DROPBEAR_SIGNKEY_VERIFY
-int buf_verify(buffer * buf, sign_key *key, enum signkey_type type, const buffer *data_buf);
+int buf_verify(buffer * buf, sign_key *key, enum signature_type expect_sigtype, const buffer *data_buf);
char * sign_key_fingerprint(const unsigned char* keyblob, unsigned int keybloblen);
#endif
int cmp_base64_key(const unsigned char* keyblob, unsigned int keybloblen,