diff --git a/ChangeLog b/ChangeLog index 83c67d4..bd7783d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-02-21 Niibe Yutaka + + * src/call-ec_p256.c (ecdsa_sign): Fix secret key access. + 2013-02-20 Niibe Yutaka * src/openpgp.c (cmd_internal_authenticate): Support ECDSA for diff --git a/src/call-ec_p256.c b/src/call-ec_p256.c index 722614b..a929fb1 100644 --- a/src/call-ec_p256.c +++ b/src/call-ec_p256.c @@ -40,14 +40,18 @@ ecdsa_sign (const uint8_t *hash, uint8_t *output, const struct key_data *kd) { int i; - bn256 r[1], s[1], z[1]; + bn256 r[1], s[1], z[1], d[1]; uint8_t *p; + p = (uint8_t *)d; + for (i = 0; i < ECDSA_BYTE_SIZE; i++) + p[ECDSA_BYTE_SIZE - i - 1] = kd->data[i]; + p = (uint8_t *)z; for (i = 0; i < ECDSA_BYTE_SIZE; i++) p[ECDSA_BYTE_SIZE - i - 1] = hash[i]; - ecdsa (r, s, z, (const bn256 *)kd); + ecdsa (r, s, z, d); p = (uint8_t *)r; for (i = 0; i < ECDSA_BYTE_SIZE; i++) *output++ = p[ECDSA_BYTE_SIZE - i - 1];