mirror of
https://github.com/clearml/dropbear
synced 2025-01-31 02:46:58 +00:00
Handle ecdsa-sk flags, reject no-touch
For the time being Dropbear will only allow SK auth with default parameters, user-presence needs to be set. In future handling of authorized_keys option "no-touch-required" can be added. This code would also be refactored to share between ecdsa and ed25519 once I get hardware/emulation to test ed25519.
This commit is contained in:
parent
ecc85f91e6
commit
9007a80616
@ -6,6 +6,7 @@
|
||||
#include "ecc.h"
|
||||
#include "ecdsa.h"
|
||||
#include "sk-ecdsa.h"
|
||||
#include "ssh.h"
|
||||
|
||||
int buf_sk_ecdsa_verify(buffer *buf, const ecc_key *key, const buffer *data_buf, const char* app, unsigned int applen) {
|
||||
hash_state hs;
|
||||
@ -40,6 +41,14 @@ int buf_sk_ecdsa_verify(buffer *buf, const ecc_key *key, const buffer *data_buf,
|
||||
buf_free(sk_buffer);
|
||||
buf_free(sig_buffer);
|
||||
|
||||
/* TODO: allow "no-touch-required" or "verify-required" authorized_keys options */
|
||||
if (!(flags & SSH_SK_USER_PRESENCE_REQD)) {
|
||||
if (ret == DROPBEAR_SUCCESS) {
|
||||
dropbear_log(LOG_WARNING, "Rejecting, user-presence not set");
|
||||
}
|
||||
ret = DROPBEAR_FAILURE;
|
||||
}
|
||||
|
||||
TRACE(("leave buf_sk_ecdsa_verify, ret=%d", ret))
|
||||
return ret;
|
||||
}
|
||||
|
13
sk-ed25519.c
13
sk-ed25519.c
@ -6,6 +6,7 @@
|
||||
#include "buffer.h"
|
||||
#include "curve25519.h"
|
||||
#include "ed25519.h"
|
||||
#include "ssh.h"
|
||||
|
||||
int buf_sk_ed25519_verify(buffer *buf, const dropbear_ed25519_key *key, const buffer *data_buf, const char* app, unsigned int applen) {
|
||||
|
||||
@ -31,6 +32,7 @@ int buf_sk_ed25519_verify(buffer *buf, const dropbear_ed25519_key *key, const bu
|
||||
|
||||
flags = buf_getbyte (buf);
|
||||
counter = buf_getint (buf);
|
||||
/* create the message to be signed */
|
||||
sk_buffer = buf_new (2*SHA256_HASH_SIZE+5);
|
||||
sha256_init (&hs);
|
||||
sha256_process (&hs, app, applen);
|
||||
@ -50,10 +52,15 @@ int buf_sk_ed25519_verify(buffer *buf, const dropbear_ed25519_key *key, const bu
|
||||
ret = DROPBEAR_SUCCESS;
|
||||
}
|
||||
|
||||
out:
|
||||
if (sk_buffer) {
|
||||
buf_free(sk_buffer);
|
||||
/* TODO: allow "no-touch-required" or "verify-required" authorized_keys options */
|
||||
if (!(flags & SSH_SK_USER_PRESENCE_REQD)) {
|
||||
if (ret == DROPBEAR_SUCCESS) {
|
||||
dropbear_log(LOG_WARNING, "Rejecting, user-presence not set");
|
||||
}
|
||||
ret = DROPBEAR_FAILURE;
|
||||
}
|
||||
out:
|
||||
buf_free(sk_buffer);
|
||||
TRACE(("leave buf_sk_ed25519_verify: ret %d", ret))
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user