Mercurial > dropbear
view ecdsa.h @ 1855:35d504d59c05
Implement server-side support for sk-ecdsa U2F-backed keys (#142)
* Implement server-side support for sk-ecdsa U2F-backed keys
* Fix out-of-bounds read on normal ecdsa-sha2-[identifier] keys
* Fix one more potential out-of-bounds read
* Check if nistp256 curve is used in sk-ecdsa-sha2- key
It's the only allowed curve per PROTOCOL.u2f specification
* Implement server-side support for sk-ed25519 FIDO2-backed keys
* Keys with type sk-* make no sense as host keys, so they should be
disabled
* fix typo
* Make sk-ecdsa call buf_ecdsa_verify
This reduces code duplication, the SK code just handles the
different message format.
* Reduce sk specific code
The application id can be stored in signkey, then we don't need
to call sk-specific functions from svr-authpubkey
* Remove debugging output, which causes compilation errors with DEBUG_TRACE disabled
* Proper cleanup of sk_app
Co-authored-by: Matt Johnston <[email protected]>
author | egor-duda <egor-duda@users.noreply.github.com> |
---|---|
date | Sat, 22 Jan 2022 16:53:04 +0300 |
parents | 99ca393afc56 |
children |
line wrap: on
line source
#ifndef DROPBEAR_ECDSA_H_ #define DROPBEAR_ECDSA_H_ #include "includes.h" #include "buffer.h" #include "signkey.h" #if DROPBEAR_ECDSA /* prefer 256 or 384 since those are SHOULD for draft-ietf-curdle-ssh-kex-sha2.txt */ #if DROPBEAR_ECC_256 #define ECDSA_DEFAULT_SIZE 256 #elif DROPBEAR_ECC_384 #define ECDSA_DEFAULT_SIZE 384 #elif DROPBEAR_ECC_521 #define ECDSA_DEFAULT_SIZE 521 #else #error ECDSA cannot be enabled without enabling at least one size (256, 384, 521) #endif ecc_key *gen_ecdsa_priv_key(unsigned int bit_size); ecc_key *buf_get_ecdsa_pub_key(buffer* buf); ecc_key *buf_get_ecdsa_priv_key(buffer *buf); void buf_put_ecdsa_pub_key(buffer *buf, ecc_key *key); void buf_put_ecdsa_priv_key(buffer *buf, ecc_key *key); enum signkey_type ecdsa_signkey_type(const ecc_key * key); void buf_put_ecdsa_sign(buffer *buf, const ecc_key *key, const buffer *data_buf); int buf_ecdsa_verify(buffer *buf, const ecc_key *key, const buffer *data_buf); /* Returns 1 on success */ int signkey_is_ecdsa(enum signkey_type type); #endif #endif /* DROPBEAR_ECDSA_H_ */