packages feed

lol-0.7.0.0: Lol.proto

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;
}