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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
bf9dc2d9c2b1 more bits on ecc branch
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
3
bf9dc2d9c2b1 more bits on ecc branch
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
4 #include "includes.h"
bf9dc2d9c2b1 more bits on ecc branch
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
5
bf9dc2d9c2b1 more bits on ecc branch
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
6 #include "buffer.h"
bf9dc2d9c2b1 more bits on ecc branch
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
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
bf9dc2d9c2b1 more bits on ecc branch
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
9
bf9dc2d9c2b1 more bits on ecc branch
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
10 struct dropbear_ecc_curve {
857
c19acba28590 use oldstyle comments
Matt Johnston <matt@ucc.asn.au>
parents: 793
diff changeset
11 int ltc_size; /* to match the byte sizes in ltc_ecc_sets[] */
c19acba28590 use oldstyle comments
Matt Johnston <matt@ucc.asn.au>
parents: 793
diff changeset
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
bf9dc2d9c2b1 more bits on ecc branch
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
15 };
bf9dc2d9c2b1 more bits on ecc branch
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
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
bf9dc2d9c2b1 more bits on ecc branch
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
24
857
c19acba28590 use oldstyle comments
Matt Johnston <matt@ucc.asn.au>
parents: 793
diff changeset
25 /* "pubkey" refers to a point, but LTC uses ecc_key structure for both public
c19acba28590 use oldstyle comments
Matt Johnston <matt@ucc.asn.au>
parents: 793
diff changeset
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
bf9dc2d9c2b1 more bits on ecc branch
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
29 int buf_get_ecc_privkey_string(buffer *buf, ecc_key *key);
bf9dc2d9c2b1 more bits on ecc branch
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
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
bf9dc2d9c2b1 more bits on ecc branch
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
32
bf9dc2d9c2b1 more bits on ecc branch
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
33 #endif
bf9dc2d9c2b1 more bits on ecc branch
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
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 */