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);