echo Success on build success
[shamirs] / shamirssecret.c
index c7409e78a689726dc15a77c95551e9ee58b31850..e3bbe49eb1cbc0ccbd563656b0893c4d3949fb80 100644 (file)
@@ -17,8 +17,6 @@
  * Place - Suite 330, Boston, MA 02111-1307 USA.
  */
 
-#include <stdint.h>
-
 #ifndef IN_KERNEL
 #include <assert.h>
 #define CHECKSTATE(x) assert(x)
 
 #include "shamirssecret.h"
 
+#ifndef noinline
+#define noinline __attribute__((noinline))
+#endif
+
 /*
  * Calculations across the finite field GF(2^8)
  */
@@ -87,7 +89,7 @@ static const uint8_t log[P] = {
        0x4a, 0xed, 0xde, 0xc5, 0x31, 0xfe, 0x18, 0x0d, 0x63, 0x8c, 0x80, 0xc0, 0xf7, 0x70, 0x07};
 
 // We disable lots of optimizations that result in non-constant runtime (+/- branch delays)
-static uint8_t field_mul_ret(uint8_t calc, uint8_t a, uint8_t b) __attribute__((optimize("-O0"))) __attribute__((noinline));
+static uint8_t field_mul_ret(uint8_t calc, uint8_t a, uint8_t b) __attribute__((optimize("-O0"))) noinline;
 static uint8_t field_mul_ret(uint8_t calc, uint8_t a, uint8_t b) {
        uint8_t ret, ret2;
        if (a == 0)
@@ -110,7 +112,7 @@ static uint8_t field_invert(uint8_t a) {
 }
 
 // We disable lots of optimizations that result in non-constant runtime (+/- branch delays)
-static uint8_t field_pow_ret(uint8_t calc, uint8_t a, uint8_t e) __attribute__((optimize("-O0"))) __attribute__((noinline));
+static uint8_t field_pow_ret(uint8_t calc, uint8_t a, uint8_t e) __attribute__((optimize("-O0"))) noinline;
 static uint8_t field_pow_ret(uint8_t calc, uint8_t a, uint8_t e) {
        uint8_t ret, ret2;
        if (a == 0)
@@ -185,9 +187,9 @@ int main() {
  * coefficients[0] == secret, the rest are random values
  */
 uint8_t calculateQ(uint8_t coefficients[], uint8_t shares_required, uint8_t x) {
+       uint8_t ret = coefficients[0], i;
        CHECKSTATE(x != 0); // q(0) == secret, though so does a[0]
-       uint8_t ret = coefficients[0];
-       for (uint8_t i = 1; i < shares_required; i++) {
+       for (i = 1; i < shares_required; i++) {
                ret = field_add(ret, field_mul(coefficients[i], field_pow(x, i)));
        }
        return ret;
@@ -199,10 +201,10 @@ uint8_t calculateQ(uint8_t coefficients[], uint8_t shares_required, uint8_t x) {
 uint8_t calculateSecret(uint8_t x[], uint8_t q[], uint8_t shares_required) {
        // Calculate the x^0 term using a derivation of the forumula at
        // http://en.wikipedia.org/wiki/Lagrange_polynomial#Example_2
-       uint8_t ret = 0;
-       for (uint8_t i = 0; i < shares_required; i++) {
+       uint8_t ret = 0, i, j;
+       for (i = 0; i < shares_required; i++) {
                uint8_t temp = q[i];
-               for (uint8_t j = 0; j < shares_required; j++) {
+               for (j = 0; j < shares_required; j++) {
                        if (i == j)
                                continue;
                        temp = field_mul(temp, field_neg(x[j]));