Let us walk on the 3-isogeny graph
Loading...
Searching...
No Matches
checkct.c
Go to the documentation of this file.
1#undef NDEBUG
2#include <time.h>
3
4#include <secsidh/secsidh.h>
5#include <assert.h>
6#include <string.h>
7#include <stdlib.h>
8#include <stdio.h>
9#include "cycle.h"
10#include "fp-counters.h"
11#include "primes.h"
12#include "ctidh.h"
13#include "ctidh_api.h"
14
15#if GLOBAL_COUNTERS != 0
16#define cprintf(...) printf(__VA_ARGS__)
17#else
18#define cprintf(...)
19#endif
20
21#define CPASTER(x, y) SECSIDH_CTIDH##x##_##y
22#define CEVALUATOR(x, y) CPASTER(x, y)
23#define CONSTNAMESPACE(name) CEVALUATOR(BITS, name)
24#define SK_SIZE CONSTNAMESPACE(SK_SIZE)
25#define PK_SIZE CONSTNAMESPACE(PK_SIZE)
26#define SS_SIZE CONSTNAMESPACE(SS_SIZE)
27
28#define pk_size FNAMESPACE(pk_size)
29#define sk_size FNAMESPACE(sk_size)
30#define ss_size FNAMESPACE(ss_size)
31
32#define FPASTER(x, y) secsidh_CTIDH##x##_##y
33#define FEVALUATOR(x, y) FPASTER(x, y)
34#define FNAMESPACE(name) FEVALUATOR(BITS, name)
35
36#define keygen FNAMESPACE(keygen)
37#define derive FNAMESPACE(derive)
38
39#ifdef ENABLE_CT_TESTING
40#include <valgrind/memcheck.h>
41#endif
42
43static int dumb_fp_isequal(const uint8_t *a, const uint8_t *b, size_t size)
44{
45#ifdef ENABLE_CT_TESTING
46 VALGRIND_MAKE_MEM_DEFINED(a, size);
47 VALGRIND_MAKE_MEM_DEFINED(b, size);
48#endif
49 return memcmp(a, b, size) == 0;
50}
51
52int main(void)
53{
54
55 printf("\033[0;33m// Key generation\033[0m\n");
56
57 printf("sizeof private key = %lu \n", sizeof(private_key));
58 printf("sizeof public key = %lu \n", sizeof(public_key));
59
60 // ----------
61 // Alice
62 printf("\n\033[0;35m// Alice\033[0m\n");
63 uint8_t a[SK_SIZE] = {0}, A[PK_SIZE] = {0}, ss_a[SS_SIZE] = {0};
64 keygen(A, a);
65
66 // ----------
67 // Bob
68 printf("\n\033[0;34m// Bob\033[0m\n");
69 uint8_t b[SK_SIZE], B[PK_SIZE], ss_b[SS_SIZE];
70 keygen(B, b);
71
72 //------------------------------------------------------
73 // Secret sharing derivation
74 printf("\033[0;33m// Secret sharing generation\033[0m\n");
75
76 // ----------------
77 // Alice
78 printf("\n\033[0;35m// Alice\033[0m\n");
79 assert(derive(ss_a, B, a) == 0);
80
81 printf("\n\033[0;34m// Bob\033[0m\n");
82 assert(derive(ss_b, A, b) == 0);
83
84 // =============================
85 // Verifying same secret sharing
86 assert(dumb_fp_isequal(ss_a, ss_b, SS_SIZE));
87
88 //------------------------------------------------------
89 printf("\n\033[0;32m// Successfully secret sharing computation!\033[0m\n");
90 return 0;
91}
92
#define SK_SIZE
Definition checkct.c:24
#define PK_SIZE
Definition checkct.c:25
#define derive
Definition checkct.c:37
#define SS_SIZE
Definition checkct.c:26
#define keygen
Definition checkct.c:36
int main(void)
Definition checkct.c:52
assert(var1 eq var2)
f a
Definition to_model.m:12