Mercurial > dropbear
comparison signkey.h @ 1683:41bf8f216644
merge rsa-sha256
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Tue, 26 May 2020 00:24:02 +0800 |
parents | d5cdc60db08e |
children | 35d504d59c05 |
comparison
equal
deleted
inserted
replaced
1673:e0871128e61f | 1683:41bf8f216644 |
---|---|
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 #include "ed25519.h" | |
32 | 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 */ | |
33 enum signkey_type { | 36 enum signkey_type { |
34 #if DROPBEAR_RSA | 37 #if DROPBEAR_RSA |
35 DROPBEAR_SIGNKEY_RSA, | 38 DROPBEAR_SIGNKEY_RSA, |
36 #endif | 39 #endif |
37 #if DROPBEAR_DSS | 40 #if DROPBEAR_DSS |
49 DROPBEAR_SIGNKEY_ECDSA_KEYGEN = 70, /* just "ecdsa" for keygen */ | 52 DROPBEAR_SIGNKEY_ECDSA_KEYGEN = 70, /* just "ecdsa" for keygen */ |
50 DROPBEAR_SIGNKEY_ANY = 80, | 53 DROPBEAR_SIGNKEY_ANY = 80, |
51 DROPBEAR_SIGNKEY_NONE = 90, | 54 DROPBEAR_SIGNKEY_NONE = 90, |
52 }; | 55 }; |
53 | 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, | |
77 }; | |
78 | |
54 | 79 |
55 /* Sources for signing keys */ | 80 /* Sources for signing keys */ |
56 typedef enum { | 81 typedef enum { |
57 SIGNKEY_SOURCE_RAW_FILE, | 82 SIGNKEY_SOURCE_RAW_FILE, |
58 SIGNKEY_SOURCE_AGENT, | 83 SIGNKEY_SOURCE_AGENT, |
64 enum signkey_type type; | 89 enum signkey_type type; |
65 signkey_source source; | 90 signkey_source source; |
66 char *filename; | 91 char *filename; |
67 | 92 |
68 #if DROPBEAR_DSS | 93 #if DROPBEAR_DSS |
69 dropbear_dss_key * dsskey; | 94 struct dropbear_DSS_Key * dsskey; |
70 #endif | 95 #endif |
71 #if DROPBEAR_RSA | 96 #if DROPBEAR_RSA |
72 dropbear_rsa_key * rsakey; | 97 struct dropbear_RSA_Key * rsakey; |
73 #endif | 98 #endif |
74 #if DROPBEAR_ECDSA | 99 #if DROPBEAR_ECDSA |
75 #if DROPBEAR_ECC_256 | 100 #if DROPBEAR_ECC_256 |
76 ecc_key * ecckey256; | 101 ecc_key * ecckey256; |
77 #endif | 102 #endif |
81 #if DROPBEAR_ECC_521 | 106 #if DROPBEAR_ECC_521 |
82 ecc_key * ecckey521; | 107 ecc_key * ecckey521; |
83 #endif | 108 #endif |
84 #endif | 109 #endif |
85 #if DROPBEAR_ED25519 | 110 #if DROPBEAR_ED25519 |
86 dropbear_ed25519_key * ed25519key; | 111 struct dropbear_ED25519_Key * ed25519key; |
87 #endif | 112 #endif |
88 }; | 113 }; |
89 | 114 |
90 typedef struct SIGN_key sign_key; | 115 typedef struct SIGN_key sign_key; |
91 | 116 |
92 sign_key * new_sign_key(void); | 117 sign_key * new_sign_key(void); |
93 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); |
94 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 | |
95 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); |
96 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); |
97 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); |
98 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); |
99 void sign_key_free(sign_key *key); | 129 void sign_key_free(sign_key *key); |
100 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); |
101 #if DROPBEAR_SIGNKEY_VERIFY | 131 #if DROPBEAR_SIGNKEY_VERIFY |
102 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); |
103 char * sign_key_fingerprint(const unsigned char* keyblob, unsigned int keybloblen); | 133 char * sign_key_fingerprint(const unsigned char* keyblob, unsigned int keybloblen); |
104 #endif | 134 #endif |
105 int cmp_base64_key(const unsigned char* keyblob, unsigned int keybloblen, | 135 int cmp_base64_key(const unsigned char* keyblob, unsigned int keybloblen, |
106 const unsigned char* algoname, unsigned int algolen, | 136 const unsigned char* algoname, unsigned int algolen, |
107 const buffer * line, char ** fingerprint); | 137 const buffer * line, char ** fingerprint); |