diff ecc.c @ 763:f744321ac048 ecc

ecdh works against OpenSSH
author Matt Johnston <matt@ucc.asn.au>
date Mon, 08 Apr 2013 23:12:20 +0800
parents a78a38e402d1
children 5503e05ab3a4
line wrap: on
line diff
--- a/ecc.c	Mon Apr 08 00:10:57 2013 +0800
+++ b/ecc.c	Mon Apr 08 23:12:20 2013 +0800
@@ -181,17 +181,6 @@
    	goto done;
    }
 
-#if 0
-   // XXX - possibly not neccessary tests?
-   if (ltc_ecc_is_valid_idx(private_key->idx) == 0 || ltc_ecc_is_valid_idx(public_key->idx) == 0) {
-   	goto done;
-   }
-
-   if (XSTRCMP(private_key->dp->name, public_key->dp->name) != 0) {
-   	goto done;
-   }
-#endif
-
    /* make new point */
    result = ltc_ecc_new_point();
    if (result == NULL) {
@@ -211,20 +200,23 @@
    err = DROPBEAR_SUCCESS;
 done:
 	if (err == DROPBEAR_SUCCESS) {
-		shared_secret = prime;
-		prime = NULL;
+		shared_secret = m_malloc(sizeof(*shared_secret));
+      m_mp_init(shared_secret);
+      mp_copy(result->x, shared_secret);
 	}
 
 	if (prime) {
 	   mp_clear(prime);
 	   m_free(prime);
 	}
-   ltc_ecc_del_point(result);
+   if (result)
+   {
+      ltc_ecc_del_point(result);
+   }
 
    if (err == DROPBEAR_FAILURE) {
    	 dropbear_exit("ECC error");
    }
-
    return shared_secret;
 }