mirror of
https://github.com/kmackay/micro-ecc.git
synced 2026-07-26 13:29:05 +00:00
Add const qualifier where appropriate.
This commit is contained in:
+24
-24
@@ -20,7 +20,7 @@
|
||||
|
||||
#if (uECC_ASM == uECC_asm_fast)
|
||||
|
||||
static uint32_t vli_add(uint32_t *p_result, uint32_t *p_left, uint32_t *p_right)
|
||||
static uint32_t vli_add(uint32_t *p_result, const uint32_t *p_left, const uint32_t *p_right)
|
||||
{
|
||||
uint32_t l_carry = 0;
|
||||
uint32_t l_left;
|
||||
@@ -57,7 +57,7 @@ static uint32_t vli_add(uint32_t *p_result, uint32_t *p_left, uint32_t *p_right)
|
||||
}
|
||||
#define asm_add 1
|
||||
|
||||
static uint32_t vli_sub(uint32_t *p_result, uint32_t *p_left, uint32_t *p_right)
|
||||
static uint32_t vli_sub(uint32_t *p_result, const uint32_t *p_left, const uint32_t *p_right)
|
||||
{
|
||||
uint32_t l_carry = 0;
|
||||
uint32_t l_left;
|
||||
@@ -96,11 +96,11 @@ static uint32_t vli_sub(uint32_t *p_result, uint32_t *p_left, uint32_t *p_right)
|
||||
|
||||
#if (uECC_PLATFORM != uECC_arm_thumb)
|
||||
#if (uECC_WORDS == 5)
|
||||
static void vli_mult(uint32_t *p_result, uint32_t *p_left, uint32_t *p_right)
|
||||
static void vli_mult(uint32_t *p_result, const uint32_t *p_left, const uint32_t *p_right)
|
||||
{
|
||||
register uint32_t *r0 __asm__("r0") = p_result;
|
||||
register uint32_t *r1 __asm__("r1") = p_left;
|
||||
register uint32_t *r2 __asm__("r2") = p_right;
|
||||
register const uint32_t *r1 __asm__("r1") = p_left;
|
||||
register const uint32_t *r2 __asm__("r2") = p_right;
|
||||
|
||||
__asm__ volatile (
|
||||
".syntax unified \n\t"
|
||||
@@ -267,11 +267,11 @@ static void vli_mult(uint32_t *p_result, uint32_t *p_left, uint32_t *p_right)
|
||||
#endif /* (uECC_WORDS == 5) */
|
||||
|
||||
#if (uECC_WORDS == 6)
|
||||
static void vli_mult(uint32_t *p_result, uint32_t *p_left, uint32_t *p_right)
|
||||
static void vli_mult(uint32_t *p_result, const uint32_t *p_left, const uint32_t *p_right)
|
||||
{
|
||||
register uint32_t *r0 __asm__("r0") = p_result;
|
||||
register uint32_t *r1 __asm__("r1") = p_left;
|
||||
register uint32_t *r2 __asm__("r2") = p_right;
|
||||
register const uint32_t *r1 __asm__("r1") = p_left;
|
||||
register const uint32_t *r2 __asm__("r2") = p_right;
|
||||
|
||||
__asm__ volatile (
|
||||
".syntax unified \n\t"
|
||||
@@ -503,11 +503,11 @@ static void vli_mult(uint32_t *p_result, uint32_t *p_left, uint32_t *p_right)
|
||||
#endif /* (uECC_WORDS == 6) */
|
||||
|
||||
#if (uECC_WORDS == 8)
|
||||
static void vli_mult(uint32_t *p_result, uint32_t *p_left, uint32_t *p_right)
|
||||
static void vli_mult(uint32_t *p_result, const uint32_t *p_left, const uint32_t *p_right)
|
||||
{
|
||||
register uint32_t *r0 __asm__("r0") = p_result;
|
||||
register uint32_t *r1 __asm__("r1") = p_left;
|
||||
register uint32_t *r2 __asm__("r2") = p_right;
|
||||
register const uint32_t *r1 __asm__("r1") = p_left;
|
||||
register const uint32_t *r2 __asm__("r2") = p_right;
|
||||
|
||||
__asm__ volatile (
|
||||
".syntax unified \n\t"
|
||||
@@ -924,10 +924,10 @@ static void vli_mult(uint32_t *p_result, uint32_t *p_left, uint32_t *p_right)
|
||||
#endif /* (uECC_WORDS == 8) */
|
||||
|
||||
#if (uECC_WORDS == 5)
|
||||
static void vli_square(uint32_t *p_result, uint32_t *p_left)
|
||||
static void vli_square(uint32_t *p_result, const uint32_t *p_left)
|
||||
{
|
||||
register uint32_t *r0 __asm__("r0") = p_result;
|
||||
register uint32_t *r1 __asm__("r1") = p_left;
|
||||
register const uint32_t *r1 __asm__("r1") = p_left;
|
||||
|
||||
__asm__ volatile (
|
||||
".syntax unified \n\t"
|
||||
@@ -1046,10 +1046,10 @@ static void vli_square(uint32_t *p_result, uint32_t *p_left)
|
||||
#endif /* (uECC_WORDS == 5) */
|
||||
|
||||
#if (uECC_WORDS == 6)
|
||||
static void vli_square(uint32_t *p_result, uint32_t *p_left)
|
||||
static void vli_square(uint32_t *p_result, const uint32_t *p_left)
|
||||
{
|
||||
register uint32_t *r0 __asm__("r0") = p_result;
|
||||
register uint32_t *r1 __asm__("r1") = p_left;
|
||||
register const uint32_t *r1 __asm__("r1") = p_left;
|
||||
|
||||
__asm__ volatile (
|
||||
".syntax unified \n\t"
|
||||
@@ -1204,10 +1204,10 @@ static void vli_square(uint32_t *p_result, uint32_t *p_left)
|
||||
#endif /* (uECC_WORDS == 6) */
|
||||
|
||||
#if (uECC_WORDS == 8)
|
||||
static void vli_square(uint32_t *p_result, uint32_t *p_left)
|
||||
static void vli_square(uint32_t *p_result, const uint32_t *p_left)
|
||||
{
|
||||
register uint32_t *r0 __asm__("r0") = p_result;
|
||||
register uint32_t *r1 __asm__("r1") = p_left;
|
||||
register const uint32_t *r1 __asm__("r1") = p_left;
|
||||
|
||||
__asm__ volatile (
|
||||
".syntax unified \n\t"
|
||||
@@ -1492,7 +1492,7 @@ static void vli_square(uint32_t *p_result, uint32_t *p_left)
|
||||
#endif /* (uECC_ASM == uECC_asm_fast) */
|
||||
|
||||
#if !asm_add
|
||||
static uint32_t vli_add(uint32_t *p_result, uint32_t *p_left, uint32_t *p_right)
|
||||
static uint32_t vli_add(uint32_t *p_result, const uint32_t *p_left, const uint32_t *p_right)
|
||||
{
|
||||
uint32_t l_counter = uECC_WORDS;
|
||||
uint32_t l_carry = 0; /* carry = 0 initially */
|
||||
@@ -1529,7 +1529,7 @@ static uint32_t vli_add(uint32_t *p_result, uint32_t *p_left, uint32_t *p_right)
|
||||
#endif
|
||||
|
||||
#if !asm_sub
|
||||
static uint32_t vli_sub(uint32_t *p_result, uint32_t *p_left, uint32_t *p_right)
|
||||
static uint32_t vli_sub(uint32_t *p_result, const uint32_t *p_left, const uint32_t *p_right)
|
||||
{
|
||||
uint32_t l_counter = uECC_WORDS;
|
||||
uint32_t l_carry = 1; /* carry = 1 initially (means don't borrow) */
|
||||
@@ -1566,7 +1566,7 @@ static uint32_t vli_sub(uint32_t *p_result, uint32_t *p_left, uint32_t *p_right)
|
||||
#endif
|
||||
|
||||
#if !asm_mult
|
||||
static void vli_mult(uint32_t *p_result, uint32_t *p_left, uint32_t *p_right)
|
||||
static void vli_mult(uint32_t *p_result, const uint32_t *p_left, const uint32_t *p_right)
|
||||
{
|
||||
#if (uECC_PLATFORM != uECC_arm_thumb)
|
||||
uint32_t c0 = 0;
|
||||
@@ -1631,8 +1631,8 @@ static void vli_mult(uint32_t *p_result, uint32_t *p_left, uint32_t *p_right)
|
||||
#else /* Thumb-1 */
|
||||
|
||||
register uint32_t *r0 __asm__("r0") = p_result;
|
||||
register uint32_t *r1 __asm__("r1") = p_left;
|
||||
register uint32_t *r2 __asm__("r2") = p_right;
|
||||
register const uint32_t *r1 __asm__("r1") = p_left;
|
||||
register const uint32_t *r2 __asm__("r2") = p_right;
|
||||
|
||||
__asm__ volatile (
|
||||
".syntax unified \n\t"
|
||||
@@ -1725,7 +1725,7 @@ static void vli_mult(uint32_t *p_result, uint32_t *p_left, uint32_t *p_right)
|
||||
|
||||
#if uECC_SQUARE_FUNC
|
||||
#if !asm_square
|
||||
static void vli_square(uint32_t *p_result, uint32_t *p_left)
|
||||
static void vli_square(uint32_t *p_result, const uint32_t *p_left)
|
||||
{
|
||||
#if (uECC_PLATFORM != uECC_arm_thumb)
|
||||
uint32_t c0 = 0;
|
||||
@@ -1800,7 +1800,7 @@ static void vli_square(uint32_t *p_result, uint32_t *p_left)
|
||||
#else
|
||||
|
||||
register uint32_t *r0 __asm__("r0") = p_result;
|
||||
register uint32_t *r1 __asm__("r1") = p_left;
|
||||
register const uint32_t *r1 __asm__("r1") = p_left;
|
||||
|
||||
__asm__ volatile (
|
||||
".syntax unified \n\t"
|
||||
|
||||
+13
-13
@@ -89,7 +89,7 @@ static void vli_rshift1(uint8_t *p_vli)
|
||||
#define asm_rshift1 1
|
||||
|
||||
/* Computes p_result = p_left + p_right, returning carry. Can modify in place. */
|
||||
static uint8_t vli_add(uint8_t *p_result, uint8_t *p_left, uint8_t *p_right)
|
||||
static uint8_t vli_add(uint8_t *p_result, const uint8_t *p_left, const uint8_t *p_right)
|
||||
{
|
||||
uint8_t l_carry = 0;
|
||||
uint8_t l_left;
|
||||
@@ -121,7 +121,7 @@ static uint8_t vli_add(uint8_t *p_result, uint8_t *p_left, uint8_t *p_right)
|
||||
#define asm_add 1
|
||||
|
||||
/* Computes p_result = p_left - p_right, returning borrow. Can modify in place. */
|
||||
static uint8_t vli_sub(uint8_t *p_result, uint8_t *p_left, uint8_t *p_right)
|
||||
static uint8_t vli_sub(uint8_t *p_result, const uint8_t *p_left, const uint8_t *p_right)
|
||||
{
|
||||
uint8_t l_borrow = 0;
|
||||
uint8_t l_left;
|
||||
@@ -154,7 +154,7 @@ static uint8_t vli_sub(uint8_t *p_result, uint8_t *p_left, uint8_t *p_right)
|
||||
|
||||
#if (uECC_BYTES == 20)
|
||||
__attribute((noinline))
|
||||
static void vli_mult(uint8_t *p_result, uint8_t *p_left, uint8_t *p_right)
|
||||
static void vli_mult(uint8_t *p_result, const uint8_t *p_left, const uint8_t *p_right)
|
||||
{
|
||||
__asm__ volatile (
|
||||
"adiw r30, 10 \n\t"
|
||||
@@ -2069,7 +2069,7 @@ static void vli_mult(uint8_t *p_result, uint8_t *p_left, uint8_t *p_right)
|
||||
#define asm_mult 1
|
||||
#elif (uECC_BYTES == 24)
|
||||
__attribute((noinline))
|
||||
static void vli_mult(uint8_t *p_result, uint8_t *p_left, uint8_t *p_right)
|
||||
static void vli_mult(uint8_t *p_result, const uint8_t *p_left, const uint8_t *p_right)
|
||||
{
|
||||
__asm__ volatile (
|
||||
"adiw r30, 20 \n\t"
|
||||
@@ -4852,7 +4852,7 @@ static void vli_mult(uint8_t *p_result, uint8_t *p_left, uint8_t *p_right)
|
||||
#define asm_mult 1
|
||||
#elif (uECC_BYTES == 32)
|
||||
__attribute((noinline))
|
||||
static void vli_mult(uint8_t *p_result, uint8_t *p_left, uint8_t *p_right)
|
||||
static void vli_mult(uint8_t *p_result, const uint8_t *p_left, const uint8_t *p_right)
|
||||
{
|
||||
__asm__ volatile (
|
||||
"adiw r30, 30 \n\t"
|
||||
@@ -9781,7 +9781,7 @@ static void vli_mult(uint8_t *p_result, uint8_t *p_left, uint8_t *p_right)
|
||||
#if uECC_SQUARE_FUNC
|
||||
|
||||
#if (uECC_BYTES == 20)
|
||||
static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
static void vli_square(uint8_t *p_result, const uint8_t *p_left)
|
||||
{
|
||||
__asm__ volatile (
|
||||
"ld r2, x+ \n\t"
|
||||
@@ -10948,7 +10948,7 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
#elif (uECC_BYTES == 24)
|
||||
|
||||
__attribute((noinline))
|
||||
static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
static void vli_square(uint8_t *p_result, const uint8_t *p_left)
|
||||
{
|
||||
__asm__ volatile (
|
||||
"ldi r25, 0 \n\t"
|
||||
@@ -12607,7 +12607,7 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
#elif (uECC_BYTES == 32)
|
||||
|
||||
__attribute((noinline))
|
||||
static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
static void vli_square(uint8_t *p_result, const uint8_t *p_left)
|
||||
{
|
||||
__asm__ volatile (
|
||||
"ldi r25, 0 \n\t"
|
||||
@@ -15442,7 +15442,7 @@ static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
#endif /* uECC_BYTES == xx */
|
||||
#endif /* uECC_SQUARE_FUNC */
|
||||
|
||||
static void vli_modSub_fast(uint8_t *p_result, uint8_t *p_left, uint8_t *p_right)
|
||||
static void vli_modSub_fast(uint8_t *p_result, const uint8_t *p_left, const uint8_t *p_right)
|
||||
{
|
||||
uint8_t t1, t2;
|
||||
__asm__ volatile (
|
||||
@@ -16024,7 +16024,7 @@ static void vli_rshift1(uint8_t *p_vli)
|
||||
#endif
|
||||
|
||||
#if !asm_add
|
||||
static uint8_t vli_add(uint8_t *p_result, uint8_t *p_left, uint8_t *p_right)
|
||||
static uint8_t vli_add(uint8_t *p_result, const uint8_t *p_left, const uint8_t *p_right)
|
||||
{
|
||||
uint8_t i = uECC_BYTES;
|
||||
uint8_t l_carry = 0;
|
||||
@@ -16057,7 +16057,7 @@ static uint8_t vli_add(uint8_t *p_result, uint8_t *p_left, uint8_t *p_right)
|
||||
#endif
|
||||
|
||||
#if !asm_sub
|
||||
static uint8_t vli_sub(uint8_t *p_result, uint8_t *p_left, uint8_t *p_right)
|
||||
static uint8_t vli_sub(uint8_t *p_result, const uint8_t *p_left, const uint8_t *p_right)
|
||||
{
|
||||
uint8_t i = uECC_BYTES;
|
||||
uint8_t l_borrow = 0;
|
||||
@@ -16091,7 +16091,7 @@ static uint8_t vli_sub(uint8_t *p_result, uint8_t *p_left, uint8_t *p_right)
|
||||
|
||||
#if !asm_mult
|
||||
__attribute((noinline))
|
||||
static void vli_mult(uint8_t *p_result, uint8_t *p_left, uint8_t *p_right)
|
||||
static void vli_mult(uint8_t *p_result, const uint8_t *p_left, const uint8_t *p_right)
|
||||
{
|
||||
uint8_t r0 = 0;
|
||||
uint8_t r1 = 0;
|
||||
@@ -16188,7 +16188,7 @@ static void vli_mult(uint8_t *p_result, uint8_t *p_left, uint8_t *p_right)
|
||||
|
||||
#if uECC_SQUARE_FUNC
|
||||
#if !asm_square
|
||||
static void vli_square(uint8_t *p_result, uint8_t *p_left)
|
||||
static void vli_square(uint8_t *p_result, const uint8_t *p_left)
|
||||
{
|
||||
uint8_t r0 = 0;
|
||||
uint8_t r1 = 0;
|
||||
|
||||
@@ -307,20 +307,20 @@ static uECC_word_t vli_isZero(const uECC_word_t *p_vli);
|
||||
static uECC_word_t vli_testBit(const uECC_word_t *p_vli, bitcount_t p_bit);
|
||||
static bitcount_t vli_numBits(const uECC_word_t *p_vli, wordcount_t p_maxWords);
|
||||
static void vli_set(uECC_word_t *p_dest, const uECC_word_t *p_src);
|
||||
static cmpresult_t vli_cmp(uECC_word_t *p_left, uECC_word_t *p_right);
|
||||
static cmpresult_t vli_equal(uECC_word_t *p_left, uECC_word_t *p_right);
|
||||
static cmpresult_t vli_cmp(const uECC_word_t *p_left, const uECC_word_t *p_right);
|
||||
static cmpresult_t vli_equal(const uECC_word_t *p_left, const uECC_word_t *p_right);
|
||||
static void vli_rshift1(uECC_word_t *p_vli);
|
||||
static uECC_word_t vli_add(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right);
|
||||
static uECC_word_t vli_sub(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right);
|
||||
static void vli_mult(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right);
|
||||
static void vli_modAdd(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right, uECC_word_t *p_mod);
|
||||
static void vli_modSub(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right, uECC_word_t *p_mod);
|
||||
static uECC_word_t vli_add(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right);
|
||||
static uECC_word_t vli_sub(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right);
|
||||
static void vli_mult(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right);
|
||||
static void vli_modAdd(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right, const uECC_word_t *p_mod);
|
||||
static void vli_modSub(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right, const uECC_word_t *p_mod);
|
||||
static void vli_mmod_fast(uECC_word_t *RESTRICT p_result, uECC_word_t *RESTRICT p_product);
|
||||
static void vli_modMult_fast(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right);
|
||||
static void vli_modInv(uECC_word_t *p_result, uECC_word_t *p_input, uECC_word_t *p_mod);
|
||||
static void vli_modMult_fast(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right);
|
||||
static void vli_modInv(uECC_word_t *p_result, const uECC_word_t *p_input, const uECC_word_t *p_mod);
|
||||
#if uECC_SQUARE_FUNC
|
||||
static void vli_square(uECC_word_t *p_result, uECC_word_t *p_left);
|
||||
static void vli_modSquare_fast(uECC_word_t *p_result, uECC_word_t *p_left);
|
||||
static void vli_square(uECC_word_t *p_result, const uECC_word_t *p_left);
|
||||
static void vli_modSquare_fast(uECC_word_t *p_result, const uECC_word_t *p_left);
|
||||
#endif
|
||||
|
||||
#if (defined(_WIN32) || defined(_WIN64))
|
||||
@@ -497,7 +497,7 @@ static void vli_set(uECC_word_t *p_dest, const uECC_word_t *p_src)
|
||||
|
||||
/* Returns sign of p_left - p_right. */
|
||||
#if !asm_cmp
|
||||
static cmpresult_t vli_cmp(uECC_word_t *p_left, uECC_word_t *p_right)
|
||||
static cmpresult_t vli_cmp(const uECC_word_t *p_left, const uECC_word_t *p_right)
|
||||
{
|
||||
swordcount_t i;
|
||||
for(i = uECC_WORDS-1; i >= 0; --i)
|
||||
@@ -515,7 +515,7 @@ static cmpresult_t vli_cmp(uECC_word_t *p_left, uECC_word_t *p_right)
|
||||
}
|
||||
#endif
|
||||
|
||||
static cmpresult_t vli_equal(uECC_word_t *p_left, uECC_word_t *p_right)
|
||||
static cmpresult_t vli_equal(const uECC_word_t *p_left, const uECC_word_t *p_right)
|
||||
{
|
||||
uECC_word_t l_result = 0;
|
||||
|
||||
@@ -547,7 +547,7 @@ static void vli_rshift1(uECC_word_t *p_vli)
|
||||
|
||||
/* Computes p_result = p_left + p_right, returning carry. Can modify in place. */
|
||||
#if !asm_add
|
||||
static uECC_word_t vli_add(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right)
|
||||
static uECC_word_t vli_add(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right)
|
||||
{
|
||||
uECC_word_t l_carry = 0;
|
||||
wordcount_t i;
|
||||
@@ -566,7 +566,7 @@ static uECC_word_t vli_add(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word
|
||||
|
||||
/* Computes p_result = p_left - p_right, returning borrow. Can modify in place. */
|
||||
#if !asm_sub
|
||||
static uECC_word_t vli_sub(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right)
|
||||
static uECC_word_t vli_sub(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right)
|
||||
{
|
||||
uECC_word_t l_borrow = 0;
|
||||
wordcount_t i;
|
||||
@@ -625,7 +625,7 @@ static void muladd(uECC_word_t a, uECC_word_t b, uECC_word_t *r0, uECC_word_t *r
|
||||
#endif
|
||||
|
||||
#if !asm_mult
|
||||
static void vli_mult(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right)
|
||||
static void vli_mult(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right)
|
||||
{
|
||||
uECC_word_t r0 = 0;
|
||||
uECC_word_t r1 = 0;
|
||||
@@ -708,7 +708,7 @@ static void mul2add(uECC_word_t a, uECC_word_t b, uECC_word_t *r0, uECC_word_t *
|
||||
#endif
|
||||
}
|
||||
|
||||
static void vli_square(uECC_word_t *p_result, uECC_word_t *p_left)
|
||||
static void vli_square(uECC_word_t *p_result, const uECC_word_t *p_left)
|
||||
{
|
||||
uECC_word_t r0 = 0;
|
||||
uECC_word_t r1 = 0;
|
||||
@@ -750,7 +750,7 @@ static void vli_square(uECC_word_t *p_result, uECC_word_t *p_left)
|
||||
/* Computes p_result = (p_left + p_right) % p_mod.
|
||||
Assumes that p_left < p_mod and p_right < p_mod, p_result != p_mod. */
|
||||
#if !asm_modAdd
|
||||
static void vli_modAdd(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right, uECC_word_t *p_mod)
|
||||
static void vli_modAdd(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right, const uECC_word_t *p_mod)
|
||||
{
|
||||
uECC_word_t l_carry = vli_add(p_result, p_left, p_right);
|
||||
if(l_carry || vli_cmp(p_result, p_mod) >= 0)
|
||||
@@ -763,7 +763,7 @@ static void vli_modAdd(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *
|
||||
/* Computes p_result = (p_left - p_right) % p_mod.
|
||||
Assumes that p_left < p_mod and p_right < p_mod, p_result != p_mod. */
|
||||
#if !asm_modSub
|
||||
static void vli_modSub(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right, uECC_word_t *p_mod)
|
||||
static void vli_modSub(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right, const uECC_word_t *p_mod)
|
||||
{
|
||||
uECC_word_t l_borrow = vli_sub(p_result, p_left, p_right);
|
||||
if(l_borrow)
|
||||
@@ -782,7 +782,7 @@ static void vli_modSub(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *
|
||||
|
||||
#if (uECC_CURVE == uECC_secp160r1 || uECC_CURVE == uECC_secp256k1)
|
||||
/* omega_mult() is defined farther below for the different curves / word sizes */
|
||||
static void omega_mult(uECC_word_t * RESTRICT p_result, uECC_word_t * RESTRICT p_right);
|
||||
static void omega_mult(uECC_word_t * RESTRICT p_result, const uECC_word_t * RESTRICT p_right);
|
||||
|
||||
/* Computes p_result = p_product % curve_p
|
||||
see http://www.isys.uni-klu.ac.at/PDF/2001-0126-MT.pdf page 354
|
||||
@@ -820,7 +820,7 @@ static void vli_mmod_fast(uECC_word_t *RESTRICT p_result, uECC_word_t *RESTRICT
|
||||
#if uECC_CURVE == uECC_secp160r1
|
||||
|
||||
#if uECC_WORD_SIZE == 1
|
||||
static void omega_mult(uint8_t * RESTRICT p_result, uint8_t * RESTRICT p_right)
|
||||
static void omega_mult(uint8_t * RESTRICT p_result, const uint8_t * RESTRICT p_right)
|
||||
{
|
||||
uint8_t l_carry;
|
||||
uint8_t i;
|
||||
@@ -839,7 +839,7 @@ static void omega_mult(uint8_t * RESTRICT p_result, uint8_t * RESTRICT p_right)
|
||||
}
|
||||
}
|
||||
#elif uECC_WORD_SIZE == 4
|
||||
static void omega_mult(uint32_t * RESTRICT p_result, uint32_t * RESTRICT p_right)
|
||||
static void omega_mult(uint32_t * RESTRICT p_result, const uint32_t * RESTRICT p_right)
|
||||
{
|
||||
uint32_t l_carry;
|
||||
unsigned i;
|
||||
@@ -1257,7 +1257,7 @@ static void vli_mmod_fast(uint64_t *RESTRICT p_result, uint64_t *RESTRICT p_prod
|
||||
#elif uECC_CURVE == uECC_secp256k1
|
||||
|
||||
#if uECC_WORD_SIZE == 1
|
||||
static void omega_mult(uint8_t * RESTRICT p_result, uint8_t * RESTRICT p_right)
|
||||
static void omega_mult(uint8_t * RESTRICT p_result, const uint8_t * RESTRICT p_right)
|
||||
{
|
||||
/* Multiply by (2^32 + 2^9 + 2^8 + 2^7 + 2^6 + 2^4 + 1). */
|
||||
uECC_word_t r0 = 0;
|
||||
@@ -1290,7 +1290,7 @@ static void omega_mult(uint8_t * RESTRICT p_result, uint8_t * RESTRICT p_right)
|
||||
p_result[4 + uECC_WORDS] = vli_add(p_result + 4, p_result + 4, p_right); /* add the 2^32 multiple */
|
||||
}
|
||||
#elif uECC_WORD_SIZE == 4
|
||||
static void omega_mult(uint32_t * RESTRICT p_result, uint32_t * RESTRICT p_right)
|
||||
static void omega_mult(uint32_t * RESTRICT p_result, const uint32_t * RESTRICT p_right)
|
||||
{
|
||||
/* Multiply by (2^9 + 2^8 + 2^7 + 2^6 + 2^4 + 1). */
|
||||
uint32_t l_carry = 0;
|
||||
@@ -1307,7 +1307,7 @@ static void omega_mult(uint32_t * RESTRICT p_result, uint32_t * RESTRICT p_right
|
||||
p_result[1 + uECC_WORDS] = vli_add(p_result + 1, p_result + 1, p_right); /* add the 2^32 multiple */
|
||||
}
|
||||
#else
|
||||
static void omega_mult(uint64_t * RESTRICT p_result, uint64_t * RESTRICT p_right)
|
||||
static void omega_mult(uint64_t * RESTRICT p_result, const uint64_t * RESTRICT p_right)
|
||||
{
|
||||
uECC_word_t r0 = 0;
|
||||
uECC_word_t r1 = 0;
|
||||
@@ -1333,7 +1333,7 @@ static void omega_mult(uint64_t * RESTRICT p_result, uint64_t * RESTRICT p_right
|
||||
#endif /* !asm_mmod_fast */
|
||||
|
||||
/* Computes p_result = (p_left * p_right) % curve_p. */
|
||||
static void vli_modMult_fast(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right)
|
||||
static void vli_modMult_fast(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right)
|
||||
{
|
||||
uECC_word_t l_product[2 * uECC_WORDS];
|
||||
vli_mult(l_product, p_left, p_right);
|
||||
@@ -1343,7 +1343,7 @@ static void vli_modMult_fast(uECC_word_t *p_result, uECC_word_t *p_left, uECC_wo
|
||||
#if uECC_SQUARE_FUNC
|
||||
|
||||
/* Computes p_result = p_left^2 % curve_p. */
|
||||
static void vli_modSquare_fast(uECC_word_t *p_result, uECC_word_t *p_left)
|
||||
static void vli_modSquare_fast(uECC_word_t *p_result, const uECC_word_t *p_left)
|
||||
{
|
||||
uECC_word_t l_product[2 * uECC_WORDS];
|
||||
vli_square(l_product, p_left);
|
||||
@@ -1362,7 +1362,7 @@ static void vli_modSquare_fast(uECC_word_t *p_result, uECC_word_t *p_left)
|
||||
See "From Euclid's GCD to Montgomery Multiplication to the Great Divide"
|
||||
https://labs.oracle.com/techrep/2001/smli_tr-2001-95.pdf */
|
||||
#if !asm_modInv
|
||||
static void vli_modInv(uECC_word_t *p_result, uECC_word_t *p_input, uECC_word_t *p_mod)
|
||||
static void vli_modInv(uECC_word_t *p_result, const uECC_word_t *p_input, const uECC_word_t *p_mod)
|
||||
{
|
||||
uECC_word_t a[uECC_WORDS], b[uECC_WORDS], u[uECC_WORDS], v[uECC_WORDS];
|
||||
uECC_word_t l_carry;
|
||||
@@ -1455,7 +1455,7 @@ static void vli_modInv(uECC_word_t *p_result, uECC_word_t *p_input, uECC_word_t
|
||||
/* ------ Point operations ------ */
|
||||
|
||||
/* Returns 1 if p_point is the point at infinity, 0 otherwise. */
|
||||
static cmpresult_t EccPoint_isZero(EccPoint *p_point)
|
||||
static cmpresult_t EccPoint_isZero(const EccPoint *p_point)
|
||||
{
|
||||
return (vli_isZero(p_point->x) && vli_isZero(p_point->y));
|
||||
}
|
||||
@@ -1556,7 +1556,7 @@ static void EccPoint_double_jacobian(uECC_word_t * RESTRICT X1, uECC_word_t * RE
|
||||
#endif
|
||||
|
||||
/* Modify (x1, y1) => (x1 * z^2, y1 * z^3) */
|
||||
static void apply_z(uECC_word_t * RESTRICT X1, uECC_word_t * RESTRICT Y1, uECC_word_t * RESTRICT Z)
|
||||
static void apply_z(uECC_word_t * RESTRICT X1, uECC_word_t * RESTRICT Y1, const uECC_word_t * RESTRICT Z)
|
||||
{
|
||||
uECC_word_t t1[uECC_WORDS];
|
||||
|
||||
@@ -1853,7 +1853,7 @@ void uECC_compress(const uint8_t p_publicKey[uECC_BYTES*2], uint8_t p_compressed
|
||||
}
|
||||
|
||||
/* Computes p_result = x^3 + ax + b. p_result must not overlap x. */
|
||||
static void curve_x_side(uECC_word_t * RESTRICT p_result, uECC_word_t * RESTRICT x)
|
||||
static void curve_x_side(uECC_word_t * RESTRICT p_result, const uECC_word_t * RESTRICT x)
|
||||
{
|
||||
#if (uECC_CURVE == uECC_secp256k1)
|
||||
vli_modSquare_fast(p_result, x); /* r = x^2 */
|
||||
@@ -1937,7 +1937,7 @@ static void vli_set_n(uECC_word_t *p_dest, const uECC_word_t *p_src)
|
||||
p_dest[uECC_N_WORDS-1] = p_src[uECC_N_WORDS-1];
|
||||
}
|
||||
|
||||
static cmpresult_t vli_cmp_n(uECC_word_t *p_left, uECC_word_t *p_right)
|
||||
static cmpresult_t vli_cmp_n(const uECC_word_t *p_left, const uECC_word_t *p_right)
|
||||
{
|
||||
if(p_left[uECC_N_WORDS-1] > p_right[uECC_N_WORDS-1])
|
||||
{
|
||||
@@ -1957,7 +1957,7 @@ static void vli_rshift1_n(uECC_word_t *p_vli)
|
||||
p_vli[uECC_N_WORDS-1] = p_vli[uECC_N_WORDS-1] >> 1;
|
||||
}
|
||||
|
||||
static uECC_word_t vli_add_n(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right)
|
||||
static uECC_word_t vli_add_n(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right)
|
||||
{
|
||||
uECC_word_t l_carry = vli_add(p_result, p_left, p_right);
|
||||
uECC_word_t l_sum = p_left[uECC_N_WORDS-1] + p_right[uECC_N_WORDS-1] + l_carry;
|
||||
@@ -1969,7 +1969,7 @@ static uECC_word_t vli_add_n(uECC_word_t *p_result, uECC_word_t *p_left, uECC_wo
|
||||
return l_carry;
|
||||
}
|
||||
|
||||
static uECC_word_t vli_sub_n(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right)
|
||||
static uECC_word_t vli_sub_n(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right)
|
||||
{
|
||||
uECC_word_t l_borrow = vli_sub(p_result, p_left, p_right);
|
||||
uECC_word_t l_diff = p_left[uECC_N_WORDS-1] - p_right[uECC_N_WORDS-1] - l_borrow;
|
||||
@@ -1994,7 +1994,7 @@ static void muladd(uECC_word_t a, uECC_word_t b, uECC_word_t *r0, uECC_word_t *r
|
||||
#define muladd_exists 1
|
||||
#endif
|
||||
|
||||
static void vli_mult_n(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right)
|
||||
static void vli_mult_n(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right)
|
||||
{
|
||||
uECC_word_t r0 = 0;
|
||||
uECC_word_t r1 = 0;
|
||||
@@ -2018,7 +2018,7 @@ static void vli_mult_n(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *
|
||||
p_result[uECC_N_WORDS*2 - 1] = r0;
|
||||
}
|
||||
|
||||
static void vli_modAdd_n(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right, uECC_word_t *p_mod)
|
||||
static void vli_modAdd_n(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right, const uECC_word_t *p_mod)
|
||||
{
|
||||
uECC_word_t l_carry = vli_add_n(p_result, p_left, p_right);
|
||||
if(l_carry || vli_cmp_n(p_result, p_mod) >= 0)
|
||||
@@ -2027,7 +2027,7 @@ static void vli_modAdd_n(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t
|
||||
}
|
||||
}
|
||||
|
||||
static void vli_modInv_n(uECC_word_t *p_result, uECC_word_t *p_input, uECC_word_t *p_mod)
|
||||
static void vli_modInv_n(uECC_word_t *p_result, const uECC_word_t *p_input, const uECC_word_t *p_mod)
|
||||
{
|
||||
uECC_word_t a[uECC_N_WORDS], b[uECC_N_WORDS], u[uECC_N_WORDS], v[uECC_N_WORDS];
|
||||
uECC_word_t l_carry;
|
||||
@@ -2093,7 +2093,7 @@ static void vli2_rshift1_n(uECC_word_t *p_vli)
|
||||
vli_rshift1_n(p_vli + uECC_N_WORDS);
|
||||
}
|
||||
|
||||
static uECC_word_t vli2_sub_n(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right)
|
||||
static uECC_word_t vli2_sub_n(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right)
|
||||
{
|
||||
uECC_word_t l_borrow = 0;
|
||||
wordcount_t i;
|
||||
@@ -2110,7 +2110,7 @@ static uECC_word_t vli2_sub_n(uECC_word_t *p_result, uECC_word_t *p_left, uECC_w
|
||||
}
|
||||
|
||||
/* Computes p_result = (p_left * p_right) % curve_n. */
|
||||
static void vli_modMult_n(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right)
|
||||
static void vli_modMult_n(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right)
|
||||
{
|
||||
uECC_word_t l_product[2 * uECC_N_WORDS];
|
||||
uECC_word_t l_modMultiple[2 * uECC_N_WORDS];
|
||||
@@ -2148,7 +2148,7 @@ static void vli2_rshift1(uECC_word_t *p_vli)
|
||||
vli_rshift1(p_vli + uECC_WORDS);
|
||||
}
|
||||
|
||||
static uECC_word_t vli2_sub(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right)
|
||||
static uECC_word_t vli2_sub(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right)
|
||||
{
|
||||
uECC_word_t l_borrow = 0;
|
||||
wordcount_t i;
|
||||
@@ -2165,7 +2165,7 @@ static uECC_word_t vli2_sub(uECC_word_t *p_result, uECC_word_t *p_left, uECC_wor
|
||||
}
|
||||
|
||||
/* Computes p_result = (p_left * p_right) % curve_n. */
|
||||
static void vli_modMult_n(uECC_word_t *p_result, uECC_word_t *p_left, uECC_word_t *p_right)
|
||||
static void vli_modMult_n(uECC_word_t *p_result, const uECC_word_t *p_left, const uECC_word_t *p_right)
|
||||
{
|
||||
uECC_word_t l_product[2 * uECC_WORDS];
|
||||
uECC_word_t l_modMultiple[2 * uECC_WORDS];
|
||||
|
||||
Reference in New Issue
Block a user