diff options
-rw-r--r-- | include/libuecc/ecc.h | 1 | ||||
-rw-r--r-- | src/ec25519_secret.c | 9 |
2 files changed, 10 insertions, 0 deletions
diff --git a/include/libuecc/ecc.h b/include/libuecc/ecc.h index e2fc545..cf584cf 100644 --- a/include/libuecc/ecc.h +++ b/include/libuecc/ecc.h @@ -57,5 +57,6 @@ void ecc_25519_secret_add(ecc_secret_key_256 *out, const ecc_secret_key_256 *in1 void ecc_25519_secret_sub(ecc_secret_key_256 *out, const ecc_secret_key_256 *in1, const ecc_secret_key_256 *in2); void ecc_25519_secret_reduce(ecc_secret_key_256 *out, const ecc_secret_key_256 *in); void ecc_25519_secret_mult(ecc_secret_key_256 *out, const ecc_secret_key_256 *in1, const ecc_secret_key_256 *in2); +void ecc_25519_secret_sanitize(ecc_secret_key_256 *out, const ecc_secret_key_256 *in); #endif /* _LIBUECC_ECC_H_ */ diff --git a/src/ec25519_secret.c b/src/ec25519_secret.c index 5819a6c..9108613 100644 --- a/src/ec25519_secret.c +++ b/src/ec25519_secret.c @@ -176,3 +176,12 @@ void ecc_25519_secret_mult(ecc_secret_key_256 *out, const ecc_secret_key_256 *in montgomery(out->s, R, C); } +/* TODO implement properly, rule out zero etc. */ +void ecc_25519_secret_sanitize(ecc_secret_key_256 *out, const ecc_secret_key_256 *in) { + int i; + + for (i = 0; i < 32; i++) + out->s[i] = in->s[i]; + + out->s[31] |= 0x80; +} |