12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- /*
- * Copyright 2017 Google Inc.
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- syntax = "proto2";
- option optimize_for = LITE_RUNTIME;
- package rlwe;
- option go_package = "github.com/google/shell-encryption";
- // NTT Polynomial
- message SerializedNttPolynomial {
- // Coefficients of the polynomial
- optional bytes coeffs = 1;
- // Number of coefficients of the polynomial.
- optional int32 num_coeffs = 2;
- }
- // RLWE Ciphertext
- message SerializedSymmetricRlweCiphertext {
- // Polynomials composing the ciphertext
- repeated SerializedNttPolynomial c = 1;
- // The power of the secret key that the ciphertext is encrypted with.
- optional int32 power_of_s = 2;
- // A heuristic on the amount of error in the ciphertext.
- optional double error = 3;
- }
- // RLWE RelinearizationKey
- message SerializedRelinearizationKey {
- // Polynomial composing the matrix
- repeated SerializedNttPolynomial c = 1;
- // The modulus used to decompose the coefficients of the polynomials. Ranges
- // from 1 to the number of bits of the modulus.
- optional int32 log_decomposition_modulus = 2;
- // For n parts, the key can relinearize an n-component ciphertext to a
- // 2-component ciphertext.
- optional int32 num_parts = 3;
- // Seed used to compress this key.
- optional bytes prng_seed = 4; // Required
- // The power of s that corresponds to the key. The field is 1 if the key is
- // RelinearizationKey.
- optional int32 power_of_s = 5;
- }
- // RLWE GaloisKeys.
- message SerializedGaloisKey {
- // The key-switching matrix
- optional SerializedRelinearizationKey key = 1;
- }
|