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
43
static
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
52
int
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
SK_SIZE
#define SK_SIZE
Definition
checkct.c:24
PK_SIZE
#define PK_SIZE
Definition
checkct.c:25
derive
#define derive
Definition
checkct.c:37
SS_SIZE
#define SS_SIZE
Definition
checkct.c:26
keygen
#define keygen
Definition
checkct.c:36
main
int main(void)
Definition
checkct.c:52
ctidh.h
ctidh_api.h
cycle.h
fp-counters.h
assert
assert(var1 eq var2)
primes.h
private_key
Definition
ctidh.h:31
public_key
Definition
ctidh.h:39
a
f a
Definition
to_model.m:12
E:
pqc-engineering-ssec-23
dCTIDH
main
checkct.c
Generated by
1.14.0