summaryrefslogtreecommitdiffhomepage
path: root/signkey.c
diff options
context:
space:
mode:
authorMatt Johnston <matt@ucc.asn.au>2009-07-06 12:59:13 +0000
committerMatt Johnston <matt@ucc.asn.au>2009-07-06 12:59:13 +0000
commitc742137dc8c8dd2163a2353d3382fdf2cae44c24 (patch)
tree25f52a38fb21d20051e2e44faa40ab25f45a5cad /signkey.c
parent9dc9aff0164ba777ae9806e9608af09aaf1a786e (diff)
New standard linked list to use, rather than adhoc SignKeyList or TCPFwdList
--HG-- branch : agent-client extra : convert_revision : 5465e639cc3f5ee0c6c55f0de6e7b6d5a8769da3
Diffstat (limited to 'signkey.c')
-rw-r--r--signkey.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/signkey.c b/signkey.c
index c1ef5e2..9bc4845 100644
--- a/signkey.c
+++ b/signkey.c
@@ -40,8 +40,10 @@ sign_key * new_sign_key() {
#ifdef DROPBEAR_RSA
ret->rsakey = NULL;
#endif
+ ret->filename = NULL;
+ ret->type = DROPBEAR_SIGNKEY_NONE;
+ ret->source = SIGNKEY_SOURCE_INVALID;
return ret;
-
}
/* Returns "ssh-dss" or "ssh-rsa" corresponding to the type. Exits fatally
@@ -81,6 +83,9 @@ int signkey_type_from_name(const char* name, int namelen) {
}
#endif
+ TRACE(("signkey_type_from_name unexpected key type."))
+ printhex("Key type", name, namelen);
+
return DROPBEAR_SIGNKEY_NONE;
}
@@ -101,8 +106,11 @@ int buf_get_pub_key(buffer *buf, sign_key *key, int *type) {
m_free(ident);
if (*type != DROPBEAR_SIGNKEY_ANY && *type != keytype) {
+ TRACE(("buf_get_pub_key bad type - got %d, expected %d", keytype, type))
return DROPBEAR_FAILURE;
}
+
+ TRACE(("buf_get_pub_key keytype is %d"))
*type = keytype;
@@ -255,6 +263,8 @@ void sign_key_free(sign_key *key) {
key->rsakey = NULL;
#endif
+ m_free(key->filename);
+
m_free(key);
TRACE(("leave sign_key_free"))
}
@@ -358,7 +368,6 @@ void buf_put_sign(buffer* buf, sign_key *key, int type,
const unsigned char *data, unsigned int len) {
buffer *sigblob;
-
sigblob = buf_new(MAX_PUBKEY_SIZE);
#ifdef DROPBEAR_DSS
@@ -374,7 +383,6 @@ void buf_put_sign(buffer* buf, sign_key *key, int type,
if (sigblob->len == 0) {
dropbear_exit("non-matching signing type");
}
-
buf_setpos(sigblob, 0);
buf_putstring(buf, buf_getptr(sigblob, sigblob->len),
sigblob->len);