Let us walk on the 3-isogeny graph
Loading...
Searching...
No Matches
csidh.c File Reference
#include <time.h>
#include <secsidh/secsidh.h>
#include "cycle.h"
#include "fp-counters.h"
#include "csidh.h"
#include "csidh_api.h"
#include <inttypes.h>
#include <assert.h>
#include <stdio.h>
#include <string.h>
Include dependency graph for csidh.c:

Go to the source code of this file.

Macros

#define cprintf(...)
#define BITS   2047d221
#define CPASTER(x, y)
#define CEVALUATOR(x, y)
#define CONSTNAMESPACE(name)
#define SK_SIZE   CONSTNAMESPACE(SK_SIZE)
#define PK_SIZE   CONSTNAMESPACE(PK_SIZE)
#define SS_SIZE   CONSTNAMESPACE(SS_SIZE)
#define FPASTER(x, y)
#define FEVALUATOR(x, y)
#define FNAMESPACE(name)
#define keygen   FNAMESPACE(keygen)
#define derive   FNAMESPACE(derive)
#define pk_size   FNAMESPACE(pk_size)
#define sk_size   FNAMESPACE(sk_size)
#define ss_size   FNAMESPACE(ss_size)

Functions

int main (void)

Macro Definition Documentation

◆ BITS

#define BITS   2047d221

Definition at line 21 of file csidh.c.

◆ CEVALUATOR

#define CEVALUATOR ( x,
y )
Value:
CPASTER(x, y)
#define CPASTER(x, y)
Definition checkct.c:21

Definition at line 26 of file csidh.c.

◆ CONSTNAMESPACE

#define CONSTNAMESPACE ( name)
Value:
#define CEVALUATOR(x, y)
Definition checkct.c:22
#define BITS
Definition csidh.c:21

Definition at line 27 of file csidh.c.

◆ CPASTER

#define CPASTER ( x,
y )
Value:
SECSIDH_CSIDH##x##_##y

Definition at line 25 of file csidh.c.

◆ cprintf

#define cprintf ( ...)

Definition at line 17 of file csidh.c.

Referenced by main().

◆ derive

#define derive   FNAMESPACE(derive)

Definition at line 37 of file csidh.c.

Referenced by main().

◆ FEVALUATOR

#define FEVALUATOR ( x,
y )
Value:
FPASTER(x, y)
#define FPASTER(x, y)
Definition checkct.c:32

Definition at line 33 of file csidh.c.

◆ FNAMESPACE

#define FNAMESPACE ( name)
Value:
#define FEVALUATOR(x, y)
Definition checkct.c:33

Definition at line 34 of file csidh.c.

◆ FPASTER

#define FPASTER ( x,
y )
Value:
secsidh_CSIDH##x##_##y

Definition at line 32 of file csidh.c.

◆ keygen

#define keygen   FNAMESPACE(keygen)

Definition at line 36 of file csidh.c.

Referenced by main().

◆ PK_SIZE

#define PK_SIZE   CONSTNAMESPACE(PK_SIZE)

Definition at line 29 of file csidh.c.

◆ pk_size

#define pk_size   FNAMESPACE(pk_size)

Definition at line 39 of file csidh.c.

◆ SK_SIZE

#define SK_SIZE   CONSTNAMESPACE(SK_SIZE)

Definition at line 28 of file csidh.c.

◆ sk_size

#define sk_size   FNAMESPACE(sk_size)

Definition at line 40 of file csidh.c.

◆ SS_SIZE

#define SS_SIZE   CONSTNAMESPACE(SS_SIZE)

Definition at line 30 of file csidh.c.

◆ ss_size

#define ss_size   FNAMESPACE(ss_size)

Definition at line 41 of file csidh.c.

Function Documentation

◆ main()

int main ( void )

Definition at line 56 of file csidh.c.

57{
58 ticks cc0, cc1; // for measuringthe clock cycles
59 printf("PK_SIZE = %d and pk_size = %d\n", (int) PK_SIZE, (int) pk_size);
60 printf("SK_SIZE = %d and sk_size = %d\n", (int) SK_SIZE, (int) sk_size);
61 printf("SS_SIZE = %d and ss_size = %d\n", (int) SS_SIZE, (int) ss_size);
65
66 //------------------------------------------------------
67 // Key generation
68 printf("\033[0;33m// --------------\033[0m\n");
69 printf("\033[0;33m// Key generation\033[0m\n");
70
71 // ----------
72 // Alice
73 printf("\n\033[0;35m// Alice\033[0m\n");
74 uint8_t a[SK_SIZE], A[PK_SIZE], ss_a[PK_SIZE];
75 cc0 = getticks();
76 keygen(A, a);
77 cc1 = getticks();
78 //ss_print(a, "sk_a", SK_SIZE);
79 ss_print(A, "pk_a", PK_SIZE);
80 cprintf("Running-time (millions): %2.03lfM + %2.03lfS + %2.03lfa = \033[1;35m%2.03lfM\033[0m\n", (1.0 * fpmul) / 1000000.0, (1.0 * fpsqr) / 1000000.0, (1.0 * fpadd) / 1000000.0, (1.0 * (fpmul + fpsqr)) / 1000000.0);
81 printf("Clock cycles (millions): \033[1;35m%7.03lf\033[0m\n", ( 1.0 * (cc1 - cc0)) / 1000000.0);
82
83 // ----------
84 // Bob
85 printf("\n\033[0;34m// Bob\033[0m\n");
86 uint8_t b[SK_SIZE], B[PK_SIZE], ss_b[SS_SIZE];
87 cc0 = getticks();
88 keygen(B, b);
89 cc1 = getticks();
90 //ss_print(b, "sk_b", SK_SIZE);
91 ss_print(B, "pk_b", PK_SIZE);
92 cprintf("Running-time (millions): %2.03lfM + %2.03lfS + %2.03lfa = \033[1;34m%2.03lfM\033[0m\n", (1.0 * fpmul) / 1000000.0, (1.0 * fpsqr) / 1000000.0, (1.0 * fpadd) / 1000000.0, (1.0 * (fpmul + fpsqr)) / 1000000.0);
93 printf("Clock cycles (millions): \033[1;34m%7.03lf\033[0m\n", ( 1.0 * (cc1 - cc0)) / 1000000.0);
94
95 //------------------------------------------------------
96 // Secret sharing derivation
97 printf("\n\033[0;33m// -------------------------\033[0m\n");
98 printf("\033[0;33m// Secret sharing generation\033[0m\n");
99
100 // ----------------
101 // Alice
102 printf("\n\033[0;35m// Alice\033[0m\n");
103 cc0 = getticks();
104 assert(derive(ss_a, B, a) == 0);
105 cc1 = getticks();
106 ss_print(ss_a, "ss_a", SS_SIZE);
107 cprintf("Running-time (millions) [without validation]: %2.03lfM + %2.03lfS + %2.03lfa = \033[1;35m%2.03lfM\033[0m\n",
108 (1.0 * fpmul) / 1000000.0, (1.0 * fpsqr) / 1000000.0, (1.0 * fpadd) / 1000000.0, (1.0 * (fpmul + fpsqr)) / 1000000.0);
109 printf("Clock cycles (millions) [including validation]: \033[1;35m%7.03lf\033[0m\n", ( 1.0 * (cc1 - cc0)) / 1000000.0);
110
111 // ----------------
112 // Bob
113 printf("\n\033[0;34m// Bob\033[0m\n");
114 cc0 = getticks();
115 assert(derive(ss_b, A, b) == 0);
116 cc1 = getticks();
117 ss_print(ss_b, "ss_b", SS_SIZE);
118 cprintf("Running-time (millions) [without validation]: %2.03lfM + %2.03lfS + %2.03lfa = \033[1;34m%2.03lfM\033[0m\n",
119 (1.0 * fpmul) / 1000000.0, (1.0 * fpsqr) / 1000000.0, (1.0 * fpadd) / 1000000.0, (1.0 * (fpmul + fpsqr)) / 1000000.0);
120 printf("Clock cycles (millions) [including validation]: \033[1;34m%7.03lf\033[0m\n", ( 1.0 * (cc1 - cc0)) / 1000000.0);
121
122 // =============================
123 // Verifying same secret sharing
124 assert( dumb_fp_isequal(ss_a, ss_b, SS_SIZE) );
125
126 //------------------------------------------------------
127 printf("\n\033[0;32m// Successfully secret sharing computation!\033[0m\n");
128 return 0;
129}
#define SK_SIZE
Definition checkct.c:24
#define PK_SIZE
Definition checkct.c:25
#define sk_size
Definition checkct.c:29
#define SS_SIZE
Definition checkct.c:26
#define pk_size
Definition checkct.c:28
#define ss_size
Definition checkct.c:30
#define derive
Definition csidh.c:37
#define keygen
Definition csidh.c:36
#define cprintf(...)
Definition csidh.c:17
assert(var1 eq var2)
A
Definition tests.py:29
f a
Definition to_model.m:12

References a, assert(), cprintf, derive, keygen, PK_SIZE, pk_size, SK_SIZE, sk_size, SS_SIZE, and ss_size.

Here is the call graph for this function: