ec-field-test.c: Make the field-element type use internal format.
[secnet] / f25519.h
index 8450748..c0ce117 100644 (file)
--- a/f25519.h
+++ b/f25519.h
@@ -1,42 +1,3 @@
-/*
- * f25519.h: arithmetic modulo 2^255 - 19
- */
-/*
- * This file is Free Software.  It has been modified to as part of its
- * incorporation into secnet.
- *
- * Copyright 2017 Mark Wooding
- *
- * You may redistribute this file and/or modify it under the terms of
- * the permissive licence shown below.
- *
- * You may redistribute secnet as a whole and/or modify it under the
- * terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, see
- * https://www.gnu.org/licenses/gpl.html.
- */
-/*
- * Imported from Catacomb, and lightly modified for Secnet (2017-04-30):
- *
- *   * Use `fake-mLib-bits.h' in place of the real <mLib/bits.h>.
- *
- *   * Remove the 16/32-bit implementation, since C99 always has 64-bit
- *     arithmetic.
- *
- *   * Disable some of the operations which aren't needed for X25519.
- *     (They're used for Ed25519, which we don't need.)
- *
- * The file's original comment headers are preserved below.
- */
 /* -*-c-*-
  *
  * Arithmetic modulo 2^255 - 19
@@ -46,7 +7,26 @@
 
 /*----- Licensing notice --------------------------------------------------*
  *
- * This file is part of Catacomb.
+ * This file is part of secnet.
+ * See README for full list of copyright holders.
+ *
+ * secnet is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version d of the License, or
+ * (at your option) any later version.
+ *
+ * secnet is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * version 3 along with secnet; if not, see
+ * https://www.gnu.org/licenses/gpl.html.
+ *
+ * This file was originally part of Catacomb, but has been automatically
+ * modified for incorporation into secnet: see `import-catacomb-crypto'
+ * for details.
  *
  * Catacomb is free software; you can redistribute it and/or modify
  * it under the terms of the GNU Library General Public License as
@@ -85,9 +65,9 @@ typedef union {
   int32 p26[10];
 } f25519;
 
-/*----- Functions provided ------------------------------------------------*/
+  typedef int32 f25519_piece;
 
-#define F25519_TRIM_X25519
+/*----- Functions provided ------------------------------------------------*/
 
 /* --- @f25519_set@ --- *
  *
@@ -140,8 +120,6 @@ extern void f25519_load(f25519 */*z*/, const octet /*xv*/[32]);
 
 extern void f25519_store(octet /*zv*/[32], const f25519 */*x*/);
 
-#ifndef F25519_TRIM_X25519
-
 /* --- @f25519_pick2@ --- *
  *
  * Arguments:  @f25519 *z@ = where to put the result (may alias @x@ or @y@)
@@ -175,8 +153,6 @@ extern void f25519_pick2(f25519 */*z*/, const f25519 */*x*/,
 extern void f25519_pickn(f25519 */*z*/, const f25519 */*v*/, size_t /*n*/,
                         size_t /*i*/);
 
-#endif
-
 /* --- @f25519_condswap@ --- *
  *
  * Arguments:  @f25519 *x, *y@ = two operands
@@ -217,8 +193,6 @@ extern void f25519_add(f25519 */*z*/,
 extern void f25519_sub(f25519 */*z*/,
                       const f25519 */*x*/, const f25519 */*y*/);
 
-#ifndef F25519_TRIM_X25519
-
 /* --- @f25519_neg@ --- *
  *
  * Arguments:  @f25519 *z@ = where to put the result (may alias @x@)
@@ -246,8 +220,6 @@ extern void f25519_neg(f25519 */*z*/, const f25519 */*x*/);
 
 extern void f25519_condneg(f25519 */*z*/, const f25519 */*x*/, uint32 /*m*/);
 
-#endif
-
 /* --- @f25519_mulconst@ --- *
  *
  * Arguments:  @f25519 *z@ = where to put the result (may alias @x@)
@@ -300,8 +272,6 @@ extern void f25519_sqr(f25519 */*z*/, const f25519 */*x*/);
 
 extern void f25519_inv(f25519 */*z*/, const f25519 */*x*/);
 
-#ifndef F25519_TRIM_X25519
-
 /* --- @f25519_quosqrt@ --- *
  *
  * Arguments:  @f25519 *z@ = where to put the result (may alias @x@ or @y@)
@@ -318,8 +288,6 @@ extern void f25519_inv(f25519 */*z*/, const f25519 */*x*/);
 extern int f25519_quosqrt(f25519 */*z*/,
                          const f25519 */*x*/, const f25519 */*y*/);
 
-#endif
-
 /*----- That's all, folks -------------------------------------------------*/
 
 #ifdef __cplusplus