Mercurial > dropbear
comparison signkey.h @ 1739:13d834efc376 fuzz
merge from main
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Thu, 15 Oct 2020 19:55:15 +0800 |
parents | d5cdc60db08e |
children | 35d504d59c05 |
comparison
equal
deleted
inserted
replaced
1562:768ebf737aa0 | 1739:13d834efc376 |
---|---|
24 | 24 |
25 #ifndef DROPBEAR_SIGNKEY_H_ | 25 #ifndef DROPBEAR_SIGNKEY_H_ |
26 #define DROPBEAR_SIGNKEY_H_ | 26 #define DROPBEAR_SIGNKEY_H_ |
27 | 27 |
28 #include "buffer.h" | 28 #include "buffer.h" |
29 #include "dss.h" | |
30 #include "rsa.h" | |
31 | 29 |
30 /* Forward declarations */ | |
31 struct dropbear_DSS_Key; | |
32 struct dropbear_RSA_Key; | |
33 struct dropbear_ED25519_Key; | |
34 | |
35 /* Must match with signature_type below */ | |
32 enum signkey_type { | 36 enum signkey_type { |
33 #if DROPBEAR_RSA | 37 #if DROPBEAR_RSA |
34 DROPBEAR_SIGNKEY_RSA, | 38 DROPBEAR_SIGNKEY_RSA, |
35 #endif | 39 #endif |
36 #if DROPBEAR_DSS | 40 #if DROPBEAR_DSS |
39 #if DROPBEAR_ECDSA | 43 #if DROPBEAR_ECDSA |
40 DROPBEAR_SIGNKEY_ECDSA_NISTP256, | 44 DROPBEAR_SIGNKEY_ECDSA_NISTP256, |
41 DROPBEAR_SIGNKEY_ECDSA_NISTP384, | 45 DROPBEAR_SIGNKEY_ECDSA_NISTP384, |
42 DROPBEAR_SIGNKEY_ECDSA_NISTP521, | 46 DROPBEAR_SIGNKEY_ECDSA_NISTP521, |
43 #endif /* DROPBEAR_ECDSA */ | 47 #endif /* DROPBEAR_ECDSA */ |
48 #if DROPBEAR_ED25519 | |
49 DROPBEAR_SIGNKEY_ED25519, | |
50 #endif | |
44 DROPBEAR_SIGNKEY_NUM_NAMED, | 51 DROPBEAR_SIGNKEY_NUM_NAMED, |
45 DROPBEAR_SIGNKEY_ECDSA_KEYGEN = 70, /* just "ecdsa" for keygen */ | 52 DROPBEAR_SIGNKEY_ECDSA_KEYGEN = 70, /* just "ecdsa" for keygen */ |
46 DROPBEAR_SIGNKEY_ANY = 80, | 53 DROPBEAR_SIGNKEY_ANY = 80, |
47 DROPBEAR_SIGNKEY_NONE = 90, | 54 DROPBEAR_SIGNKEY_NONE = 90, |
55 }; | |
56 | |
57 /* Must match with signkey_type above, apart from rsa */ | |
58 enum signature_type { | |
59 #if DROPBEAR_DSS | |
60 DROPBEAR_SIGNATURE_DSS = DROPBEAR_SIGNKEY_DSS, | |
61 #endif | |
62 #if DROPBEAR_ECDSA | |
63 DROPBEAR_SIGNATURE_ECDSA_NISTP256 = DROPBEAR_SIGNKEY_ECDSA_NISTP256, | |
64 DROPBEAR_SIGNATURE_ECDSA_NISTP384 = DROPBEAR_SIGNKEY_ECDSA_NISTP384, | |
65 DROPBEAR_SIGNATURE_ECDSA_NISTP521 = DROPBEAR_SIGNKEY_ECDSA_NISTP521, | |
66 #endif /* DROPBEAR_ECDSA */ | |
67 #if DROPBEAR_ED25519 | |
68 DROPBEAR_SIGNATURE_ED25519 = DROPBEAR_SIGNKEY_ED25519, | |
69 #endif | |
70 #if DROPBEAR_RSA_SHA1 | |
71 DROPBEAR_SIGNATURE_RSA_SHA1 = 100, /* ssh-rsa signature (sha1) */ | |
72 #endif | |
73 #if DROPBEAR_RSA_SHA256 | |
74 DROPBEAR_SIGNATURE_RSA_SHA256 = 101, /* rsa-sha2-256 signature. has a ssh-rsa key */ | |
75 #endif | |
76 DROPBEAR_SIGNATURE_NONE = DROPBEAR_SIGNKEY_NONE, | |
48 }; | 77 }; |
49 | 78 |
50 | 79 |
51 /* Sources for signing keys */ | 80 /* Sources for signing keys */ |
52 typedef enum { | 81 typedef enum { |
60 enum signkey_type type; | 89 enum signkey_type type; |
61 signkey_source source; | 90 signkey_source source; |
62 char *filename; | 91 char *filename; |
63 | 92 |
64 #if DROPBEAR_DSS | 93 #if DROPBEAR_DSS |
65 dropbear_dss_key * dsskey; | 94 struct dropbear_DSS_Key * dsskey; |
66 #endif | 95 #endif |
67 #if DROPBEAR_RSA | 96 #if DROPBEAR_RSA |
68 dropbear_rsa_key * rsakey; | 97 struct dropbear_RSA_Key * rsakey; |
69 #endif | 98 #endif |
70 #if DROPBEAR_ECDSA | 99 #if DROPBEAR_ECDSA |
71 #if DROPBEAR_ECC_256 | 100 #if DROPBEAR_ECC_256 |
72 ecc_key * ecckey256; | 101 ecc_key * ecckey256; |
73 #endif | 102 #endif |
76 #endif | 105 #endif |
77 #if DROPBEAR_ECC_521 | 106 #if DROPBEAR_ECC_521 |
78 ecc_key * ecckey521; | 107 ecc_key * ecckey521; |
79 #endif | 108 #endif |
80 #endif | 109 #endif |
110 #if DROPBEAR_ED25519 | |
111 struct dropbear_ED25519_Key * ed25519key; | |
112 #endif | |
81 }; | 113 }; |
82 | 114 |
83 typedef struct SIGN_key sign_key; | 115 typedef struct SIGN_key sign_key; |
84 | 116 |
85 sign_key * new_sign_key(void); | 117 sign_key * new_sign_key(void); |
86 const char* signkey_name_from_type(enum signkey_type type, unsigned int *namelen); | 118 const char* signkey_name_from_type(enum signkey_type type, unsigned int *namelen); |
87 enum signkey_type signkey_type_from_name(const char* name, unsigned int namelen); | 119 enum signkey_type signkey_type_from_name(const char* name, unsigned int namelen); |
120 const char* signature_name_from_type(enum signature_type type, unsigned int *namelen); | |
121 enum signature_type signature_type_from_name(const char* name, unsigned int namelen); | |
122 enum signkey_type signkey_type_from_signature(enum signature_type sigtype); | |
123 enum signature_type signature_type_from_signkey(enum signkey_type keytype); | |
124 | |
88 int buf_get_pub_key(buffer *buf, sign_key *key, enum signkey_type *type); | 125 int buf_get_pub_key(buffer *buf, sign_key *key, enum signkey_type *type); |
89 int buf_get_priv_key(buffer* buf, sign_key *key, enum signkey_type *type); | 126 int buf_get_priv_key(buffer* buf, sign_key *key, enum signkey_type *type); |
90 void buf_put_pub_key(buffer* buf, sign_key *key, enum signkey_type type); | 127 void buf_put_pub_key(buffer* buf, sign_key *key, enum signkey_type type); |
91 void buf_put_priv_key(buffer* buf, sign_key *key, enum signkey_type type); | 128 void buf_put_priv_key(buffer* buf, sign_key *key, enum signkey_type type); |
92 void sign_key_free(sign_key *key); | 129 void sign_key_free(sign_key *key); |
93 void buf_put_sign(buffer* buf, sign_key *key, enum signkey_type type, const buffer *data_buf); | 130 void buf_put_sign(buffer* buf, sign_key *key, enum signature_type sigtype, const buffer *data_buf); |
94 #if DROPBEAR_SIGNKEY_VERIFY | 131 #if DROPBEAR_SIGNKEY_VERIFY |
95 int buf_verify(buffer * buf, sign_key *key, const buffer *data_buf); | 132 int buf_verify(buffer * buf, sign_key *key, enum signature_type expect_sigtype, const buffer *data_buf); |
96 char * sign_key_fingerprint(const unsigned char* keyblob, unsigned int keybloblen); | 133 char * sign_key_fingerprint(const unsigned char* keyblob, unsigned int keybloblen); |
97 #endif | 134 #endif |
98 int cmp_base64_key(const unsigned char* keyblob, unsigned int keybloblen, | 135 int cmp_base64_key(const unsigned char* keyblob, unsigned int keybloblen, |
99 const unsigned char* algoname, unsigned int algolen, | 136 const unsigned char* algoname, unsigned int algolen, |
100 const buffer * line, char ** fingerprint); | 137 const buffer * line, char ** fingerprint); |