INSECURE and INEFFICIENT reference implementation for the four variants of the [ECVRF]https://github.com/cfrg/draft-irtf-cfrg-vrf) (see also IETF's site, which may be a bit behind). Requires GMP and NTL.
!!!!!!!!!!!!!!!!!!!!!!!!! WARNING !!!!!!!!!!!!!!!!!!!!!!!!!
THIS CODE IS INSECURE AND NOT TO BE USED FOR ACTUAL CRYPTO!!! IT IS ALSO INEFFICIENT AND COBBLED TOGETHER TOO QUICKLY TO BE ANY GOOD!!! DO NOT USE IT!!!
It was written as a reference implementation only, in order to generate test vectors.
Compiling notes: if you are having trouble compiling, check what version
of GMP and NTL you have. Mine worked with GMP 6.1.2 and NTL 10.5.0. In particular, earlier versions of the NTL may require you to add a few more #include
declarations:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<NTL/ZZ.h>
#include<NTL/ZZ_p.h>
Also, conversion from string to ZZ_p
may not work directly; you may have to convert to ZZ
first and then to ZZ_p
.