diff options
Diffstat (limited to 'gp-scripts/smc.gp')
-rw-r--r-- | gp-scripts/smc.gp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/gp-scripts/smc.gp b/gp-scripts/smc.gp new file mode 100644 index 0000000..2b7e188 --- /dev/null +++ b/gp-scripts/smc.gp | |||
@@ -0,0 +1,35 @@ | |||
1 | /* search for a random prime with the specified amount of bits */ | ||
2 | \\ randomprime(bits:small=127)= | ||
3 | \\ { | ||
4 | \\ local(r:int=4); | ||
5 | \\ while(!isprime(r), | ||
6 | \\ r = bitor(2^(bits-1) + random(2^(bits-1)-1), 1); | ||
7 | \\ ); | ||
8 | \\ r; | ||
9 | \\ } | ||
10 | |||
11 | smc_hextodec(s:str) = | ||
12 | { | ||
13 | local(v:vecsmall = Vecsmall(s), ret:int = 0); | ||
14 | for(i = 1, #v, | ||
15 | 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")) | ||
16 | ); | ||
17 | ret; | ||
18 | } | ||
19 | |||
20 | smc_genbid(k:small, bid:small, g)= | ||
21 | { | ||
22 | vector(k,j,g^(bid==j)); | ||
23 | } | ||
24 | |||
25 | smc_genalpha(k:small, b:vec, r:vec, y)= | ||
26 | { | ||
27 | vector(k, j, b[j]*y^r[j]); | ||
28 | } | ||
29 | |||
30 | smc_genbeta(k:small, r:vec, g)= | ||
31 | { | ||
32 | vector(k, j, g^r[j]); | ||
33 | } | ||
34 | |||
35 | |||