summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/libuecc/ecc.h1
-rw-r--r--src/ec25519_secret.c9
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;
+}