Mercurial > dropbear
annotate ecc.h @ 1653:76189c9ffea2
External Public-Key Authentication API (#72)
* Implemented dynamic loading of an external plug-in shared library to delegate public key authentication
* Moved conditional compilation of the plugin infrastructure into the configure.ac script to be able to add -ldl to dropbear build only when the flag is enabled
* Added tags file to the ignore list
* Updated API to have the constructor to return function pointers in the pliugin instance. Added support for passing user name to the checkpubkey function. Added options to the session returned by the plugin and have dropbear to parse and process them
* Added -rdynamic to the linker flags when EPKA is enabled
* Changed the API to pass a previously created session to the checkPubKey function (created during preauth)
* Added documentation to the API
* Added parameter addrstring to plugin creation function
* Modified the API to retrieve the auth options. Instead of having them as field of the EPKASession struct, they are stored internally (plugin-dependent) in the plugin/session and retrieved through a pointer to a function (in the session)
* Changed option string to be a simple char * instead of unsigned char *
author | fabriziobertocci <fabriziobertocci@gmail.com> |
---|---|
date | Wed, 15 May 2019 09:43:57 -0400 |
parents | d68d61e7056a |
children |
rev | line source |
---|---|
1036
deed0571cacc
DROPBEAR_ prefix for include guards to avoid collisions
Thorsten Horstmann <thorsten.horstmann@web.de>
parents:
857
diff
changeset
|
1 #ifndef DROPBEAR_DROPBEAR_ECC_H |
deed0571cacc
DROPBEAR_ prefix for include guards to avoid collisions
Thorsten Horstmann <thorsten.horstmann@web.de>
parents:
857
diff
changeset
|
2 #define DROPBEAR_DROPBEAR_ECC_H |
756 | 3 |
4 #include "includes.h" | |
5 | |
6 #include "buffer.h" | |
7 | |
1295
750ec4ec4cbe
Convert #ifdef to #if, other build changes
Matt Johnston <matt@ucc.asn.au>
parents:
1276
diff
changeset
|
8 #if DROPBEAR_ECC |
756 | 9 |
10 struct dropbear_ecc_curve { | |
857 | 11 int ltc_size; /* to match the byte sizes in ltc_ecc_sets[] */ |
12 const ltc_ecc_set_type *dp; /* curve domain parameters */ | |
793
70625eed40c9
A bit of work on ecdsa for host/auth keys
Matt Johnston <matt@ucc.asn.au>
parents:
767
diff
changeset
|
13 const struct ltc_hash_descriptor *hash_desc; |
1107
4f3335bba3d9
Turn dropbear_ecc_curve's name into const char *
Gaël PORTAY <gael.portay@gmail.com>
parents:
1036
diff
changeset
|
14 const char *name; |
756 | 15 }; |
16 | |
767
e465ed10c51d
Be safer with how we handle ltc_ecc_sets[] (particularly with
Matt Johnston <matt@ucc.asn.au>
parents:
766
diff
changeset
|
17 extern struct dropbear_ecc_curve ecc_curve_nistp256; |
e465ed10c51d
Be safer with how we handle ltc_ecc_sets[] (particularly with
Matt Johnston <matt@ucc.asn.au>
parents:
766
diff
changeset
|
18 extern struct dropbear_ecc_curve ecc_curve_nistp384; |
e465ed10c51d
Be safer with how we handle ltc_ecc_sets[] (particularly with
Matt Johnston <matt@ucc.asn.au>
parents:
766
diff
changeset
|
19 extern struct dropbear_ecc_curve ecc_curve_nistp521; |
e465ed10c51d
Be safer with how we handle ltc_ecc_sets[] (particularly with
Matt Johnston <matt@ucc.asn.au>
parents:
766
diff
changeset
|
20 extern struct dropbear_ecc_curve *dropbear_ecc_curves[]; |
e465ed10c51d
Be safer with how we handle ltc_ecc_sets[] (particularly with
Matt Johnston <matt@ucc.asn.au>
parents:
766
diff
changeset
|
21 |
1276
9169e4e7cbee
fix empty C prototypes
Francois Perrad <francois.perrad@gadz.org>
parents:
1107
diff
changeset
|
22 void dropbear_ecc_fill_dp(void); |
793
70625eed40c9
A bit of work on ecdsa for host/auth keys
Matt Johnston <matt@ucc.asn.au>
parents:
767
diff
changeset
|
23 struct dropbear_ecc_curve* curve_for_dp(const ltc_ecc_set_type *dp); |
756 | 24 |
857 | 25 /* "pubkey" refers to a point, but LTC uses ecc_key structure for both public |
26 and private keys */ | |
765
5503e05ab3a4
- Rename buf_put_ecc_pubkey_string() to buf_put_ecc_raw_pubkey_string()
Matt Johnston <matt@ucc.asn.au>
parents:
762
diff
changeset
|
27 void buf_put_ecc_raw_pubkey_string(buffer *buf, ecc_key *key); |
5503e05ab3a4
- Rename buf_put_ecc_pubkey_string() to buf_put_ecc_raw_pubkey_string()
Matt Johnston <matt@ucc.asn.au>
parents:
762
diff
changeset
|
28 ecc_key * buf_get_ecc_raw_pubkey(buffer *buf, const struct dropbear_ecc_curve *curve); |
756 | 29 int buf_get_ecc_privkey_string(buffer *buf, ecc_key *key); |
30 | |
1459
06d52bcb8094
Pointer parameter could be declared as pointing to const
Francois Perrad <francois.perrad@gadz.org>
parents:
1295
diff
changeset
|
31 mp_int * dropbear_ecc_shared_secret(ecc_key *pub_key, const ecc_key *priv_key); |
756 | 32 |
33 #endif | |
34 | |
1036
deed0571cacc
DROPBEAR_ prefix for include guards to avoid collisions
Thorsten Horstmann <thorsten.horstmann@web.de>
parents:
857
diff
changeset
|
35 #endif /* DROPBEAR_DROPBEAR_ECC_H */ |