| // Copyright 2022 Google LLC |
| // |
| // 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 |
| // |
| // http://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"; |
| |
| package mobstore.proto; |
| |
| option java_package = "com.google.mobiledatadownload"; |
| option java_outer_classname = "TransformProto"; |
| option objc_class_prefix = "MOB"; |
| |
| // Description of transforms that are to be applied by MobStore to a stream. |
| // |
| // Following MobStore convention, they are applied in the order in which they |
| // appear on write, and reverse on read. Serialization as a URI fragment |
| // preserves order. |
| // |
| // eg "transform=compress+encrypt(aes_gcm_key=12345)" |
| message Transforms { |
| repeated Transform transform = 1; |
| } |
| |
| // Specification for an individual transform. |
| message Transform { |
| oneof transform { |
| CompressTransform compress = 1; |
| EncryptTransform encrypt = 2; |
| IntegrityTransform integrity = 3; |
| ZipTransform zip = 4; |
| CustomTransform custom = 5; |
| } |
| } |
| |
| // The compression transform. It has no parameters. |
| // |
| // eg "compress" |
| message CompressTransform {} |
| |
| // The encryption transform. If no params are given, it uses the keystore |
| // to manage keys. Alternatively, the key can be stored in the URI itself. |
| // |
| // eg "encrypt", "encrypt(aes_gcm_key=12345)" |
| message EncryptTransform { |
| oneof key { |
| string aes_gcm_key_base64 = 1; |
| } |
| } |
| |
| // The integrity transform. If the hash is included, it can be verified. |
| // Otherwise, it can be retrieved after reading or writing with the |
| // ComputedUri API. |
| // |
| // eg "integrity", "integrity(sha256=12345)" |
| message IntegrityTransform { |
| oneof hash { |
| string sha256 = 1; |
| } |
| } |
| |
| // The ZIP decompress transform. It requires a target file param. |
| message ZipTransform { |
| // required |
| optional string target = 1; |
| } |
| |
| // A custom transform. The transform with the specified name must be registered |
| // with MobStore FileStorage. |
| message CustomTransform { |
| // required |
| optional string name = 1; |
| |
| message SubParam { |
| // required |
| optional string key = 1; |
| optional string value = 2; |
| } |
| repeated SubParam subparam = 2; |
| } |