From ea40d440b857683a31e9d5970e8216701075de6d Mon Sep 17 00:00:00 2001 From: Dmitrii Zhuravlev Date: Tue, 6 Oct 2015 21:59:02 +0300 Subject: [PATCH] Fix ECDSA signature verification [Patch #1] Fix signature verification. [Patch #2] Fix compatibility. Change-Id: Ib1b3769fc42143878d84f58830af1d3976409524 Signed-off-by: Dmitrii Zhuravlev Reviewed-on: https://gerrit.iotivity.org/gerrit/3647 Reviewed-by: Hauke Mehrtens Tested-by: jenkins-iotivity Reviewed-by: Sachin Agrawal (cherry picked from commit b5d9281374cd35e36e4bd348b4884d2f56d20ba8) Reviewed-on: https://gerrit.iotivity.org/gerrit/3755 --- extlibs/tinydtls/crypto.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/extlibs/tinydtls/crypto.c b/extlibs/tinydtls/crypto.c index d8e5e8e..77a8e04 100644 --- a/extlibs/tinydtls/crypto.c +++ b/extlibs/tinydtls/crypto.c @@ -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 -- 2.7.4