package crypto.proto.lol; // Proto messages for cyclotomic rings and other basic types in Lol // run this: // hprotoc Lol.proto // protoc Lol.proto [-cpp_out=path/to/cpp/parser] [--java_out=path/to/java/parser] [--python_out=path/to/python/parser] // a linear function from one cyclotomic ring to another, over a // common subring. 'coeffs' contains the function outputs on the // relative decoding basis of the domain ring. message LinearRq { required uint32 e = 1; required uint32 r = 2; repeated RqProduct coeffs = 3; } // For each of the following, the "xs" array is with respect to the // decoding basis. // cyclotomic ring over the integers message R { required uint32 m = 1; repeated sint64 xs = 2; } // cyclotomic ring modulo a single modulus message Rq { required uint32 m = 1; required uint64 q = 2; repeated sint64 xs = 3; } // Cyclotomic field message K { required uint32 m = 1; repeated double xs = 2; } // cyclotomic field modulo a single modulus message Kq { required uint32 m = 1; required uint64 q = 2; repeated double xs = 3; } // cyclotomic ring modulo the product of one or more moduli message RqProduct { repeated Rq rqs = 1; } // cyclotomic field modulo the product of one or more moduli message KqProduct { repeated Kq kqs = 1; } // used to serialize GHC.Fingerprint.Fingerprint. Obviously not // intended to be platform independent. message TypeRep { required uint64 a = 1; required uint64 b = 2; }