1 #ifndef DROPBEAR_DROPBEAR_ECC_H
2 #define DROPBEAR_DROPBEAR_ECC_H
11 struct dropbear_ecc_curve
{
12 int ltc_size
; /* to match the byte sizes in ltc_ecc_sets[] */
13 const ltc_ecc_set_type
*dp
; /* curve domain parameters */
14 const struct ltc_hash_descriptor
*hash_desc
;
18 extern struct dropbear_ecc_curve ecc_curve_nistp256
;
19 extern struct dropbear_ecc_curve ecc_curve_nistp384
;
20 extern struct dropbear_ecc_curve ecc_curve_nistp521
;
21 extern struct dropbear_ecc_curve
*dropbear_ecc_curves
[];
23 void dropbear_ecc_fill_dp(void);
24 struct dropbear_ecc_curve
* curve_for_dp(const ltc_ecc_set_type
*dp
);
26 /* "pubkey" refers to a point, but LTC uses ecc_key structure for both public
28 void buf_put_ecc_raw_pubkey_string(buffer
*buf
, ecc_key
*key
);
29 ecc_key
* buf_get_ecc_raw_pubkey(buffer
*buf
, const struct dropbear_ecc_curve
*curve
);
30 int buf_get_ecc_privkey_string(buffer
*buf
, ecc_key
*key
);
32 mp_int
* dropbear_ecc_shared_secret(ecc_key
*pub_key
, ecc_key
*priv_key
);
36 #endif /* DROPBEAR_DROPBEAR_ECC_H */