summaryrefslogtreecommitdiff
path: root/src/ecdsa.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/ecdsa.h')
-rw-r--r--src/ecdsa.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/ecdsa.h b/src/ecdsa.h
new file mode 100644
index 0000000..01cb134
--- /dev/null
+++ b/src/ecdsa.h
@@ -0,0 +1,36 @@
+#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_ */