Fix ECDSA signature verification
authorDmitrii Zhuravlev <d.zhuravlev@samsung.com>
Tue, 6 Oct 2015 18:59:02 +0000 (21:59 +0300)
committerSachin Agrawal <sachin.agrawal@intel.com>
Thu, 8 Oct 2015 23:04:18 +0000 (23:04 +0000)
[Patch #1] Fix signature verification.
[Patch #2] Fix compatibility.

Change-Id: Ib1b3769fc42143878d84f58830af1d3976409524
Signed-off-by: Dmitrii Zhuravlev <d.zhuravlev@samsung.com>
Reviewed-on: https://gerrit.iotivity.org/gerrit/3647
Reviewed-by: Hauke Mehrtens <hauke.mehrtens@lantiq.com>
Tested-by: jenkins-iotivity <jenkins-iotivity@opendaylight.org>
Reviewed-by: Sachin Agrawal <sachin.agrawal@intel.com>
(cherry picked from commit b5d9281374cd35e36e4bd348b4884d2f56d20ba8)
Reviewed-on: https://gerrit.iotivity.org/gerrit/3755

extlibs/tinydtls/crypto.c

index d8e5e8e..77a8e04 100644 (file)
@@ -585,8 +585,13 @@ dtls_ecdsa_create_sig_hash(const unsigned char *priv_key, size_t key_size,
         return 0;
 
     uECC_sign(priv_key, sign_hash, sign);
-    memcpy(point_r, sign, 32);
-    memcpy(point_s, sign + 32, 32);
+
+    int i;
+    for (i = 0; i < 32; i++)
+    {
+        ((uint8_t *) point_r)[i] = sign[31 - i];
+        ((uint8_t *) point_s)[i] = sign[63 - i];
+    }
 }
 
 void