Mercurial > dropbear
annotate ecc.h @ 1715:3974f087d9c0
Disallow leading lines before the ident for server (#102)
Per RFC4253 4.2 clients must be able to process other lines of data
before the version string, server behavior is not defined neither
with MUST/SHOULD nor with MAY.
If server process up to 50 lines too - it may cause too long hanging
session with invalid/evil client that consume host resources and
potentially may lead to DDoS on poor embedded boxes.
Let's require first line from client to be version string and fail
early if it's not - matches both RFC and real OpenSSH behavior.
author | Vladislav Grishenko <themiron@users.noreply.github.com> |
---|---|
date | Mon, 15 Jun 2020 18:22:18 +0500 |
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 */ |