aboutsummaryrefslogtreecommitdiff
path: root/smc.gp
blob: bc7b51448cd2bf09e344550c0df79a3f34fbc5f1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/* search for a random prime with the specified amount of bits */
\\ randomprime(bits:small=127)=
\\ {
\\ 	local(r:int=4);
\\ 	while(!isprime(r),
\\ 		r = bitor(2^(bits-1) + random(2^(bits-1)-1), 1);
\\ 	);
\\ 	r;
\\ }

smc_hextodec(s:str) =
{
	local(v:vecsmall = Vecsmall(s), ret:int = 0);
	for(i = 1, #v,
		ret = (ret<<4) + if(v[i]<=57 && v[i]>=48, v[i]-48, v[i]<=70 && v[i]>=65, v[i]-55, v[i]<=102 && v[i]>=97, v[i]-87, error("invalid input format"))
	);
	ret;
}

smc_genfield(p:int, g)=
{
	local(q:int);
	q = (p - 1) / 2;
	[Mod(g^2, p), q];
}

smc_genkeypair(field:vec)=
{
	local(x:int=random(field[2]));
	[x, field[1]^x];
}