1*6fa6b5e2SAndroid Build Coastguard Worker// Copyright 2022 Google LLC 2*6fa6b5e2SAndroid Build Coastguard Worker// 3*6fa6b5e2SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*6fa6b5e2SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*6fa6b5e2SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*6fa6b5e2SAndroid Build Coastguard Worker// 7*6fa6b5e2SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*6fa6b5e2SAndroid Build Coastguard Worker// 9*6fa6b5e2SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*6fa6b5e2SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*6fa6b5e2SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*6fa6b5e2SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*6fa6b5e2SAndroid Build Coastguard Worker// limitations under the License. 14*6fa6b5e2SAndroid Build Coastguard Workersyntax = "proto2"; 15*6fa6b5e2SAndroid Build Coastguard Worker 16*6fa6b5e2SAndroid Build Coastguard Workerpackage mobstore.proto; 17*6fa6b5e2SAndroid Build Coastguard Worker 18*6fa6b5e2SAndroid Build Coastguard Workeroption java_package = "com.google.mobiledatadownload"; 19*6fa6b5e2SAndroid Build Coastguard Workeroption java_outer_classname = "TransformProto"; 20*6fa6b5e2SAndroid Build Coastguard Workeroption objc_class_prefix = "MOB"; 21*6fa6b5e2SAndroid Build Coastguard Worker 22*6fa6b5e2SAndroid Build Coastguard Worker// Description of transforms that are to be applied by MobStore to a stream. 23*6fa6b5e2SAndroid Build Coastguard Worker// 24*6fa6b5e2SAndroid Build Coastguard Worker// Following MobStore convention, they are applied in the order in which they 25*6fa6b5e2SAndroid Build Coastguard Worker// appear on write, and reverse on read. Serialization as a URI fragment 26*6fa6b5e2SAndroid Build Coastguard Worker// preserves order. 27*6fa6b5e2SAndroid Build Coastguard Worker// 28*6fa6b5e2SAndroid Build Coastguard Worker// eg "transform=compress+encrypt(aes_gcm_key=12345)" 29*6fa6b5e2SAndroid Build Coastguard Workermessage Transforms { 30*6fa6b5e2SAndroid Build Coastguard Worker repeated Transform transform = 1; 31*6fa6b5e2SAndroid Build Coastguard Worker} 32*6fa6b5e2SAndroid Build Coastguard Worker 33*6fa6b5e2SAndroid Build Coastguard Worker// Specification for an individual transform. 34*6fa6b5e2SAndroid Build Coastguard Workermessage Transform { 35*6fa6b5e2SAndroid Build Coastguard Worker oneof transform { 36*6fa6b5e2SAndroid Build Coastguard Worker CompressTransform compress = 1; 37*6fa6b5e2SAndroid Build Coastguard Worker EncryptTransform encrypt = 2; 38*6fa6b5e2SAndroid Build Coastguard Worker IntegrityTransform integrity = 3; 39*6fa6b5e2SAndroid Build Coastguard Worker ZipTransform zip = 4; 40*6fa6b5e2SAndroid Build Coastguard Worker CustomTransform custom = 5; 41*6fa6b5e2SAndroid Build Coastguard Worker } 42*6fa6b5e2SAndroid Build Coastguard Worker} 43*6fa6b5e2SAndroid Build Coastguard Worker 44*6fa6b5e2SAndroid Build Coastguard Worker// The compression transform. It has no parameters. 45*6fa6b5e2SAndroid Build Coastguard Worker// 46*6fa6b5e2SAndroid Build Coastguard Worker// eg "compress" 47*6fa6b5e2SAndroid Build Coastguard Workermessage CompressTransform {} 48*6fa6b5e2SAndroid Build Coastguard Worker 49*6fa6b5e2SAndroid Build Coastguard Worker// The encryption transform. If no params are given, it uses the keystore 50*6fa6b5e2SAndroid Build Coastguard Worker// to manage keys. Alternatively, the key can be stored in the URI itself. 51*6fa6b5e2SAndroid Build Coastguard Worker// 52*6fa6b5e2SAndroid Build Coastguard Worker// eg "encrypt", "encrypt(aes_gcm_key=12345)" 53*6fa6b5e2SAndroid Build Coastguard Workermessage EncryptTransform { 54*6fa6b5e2SAndroid Build Coastguard Worker oneof key { 55*6fa6b5e2SAndroid Build Coastguard Worker string aes_gcm_key_base64 = 1; 56*6fa6b5e2SAndroid Build Coastguard Worker } 57*6fa6b5e2SAndroid Build Coastguard Worker} 58*6fa6b5e2SAndroid Build Coastguard Worker 59*6fa6b5e2SAndroid Build Coastguard Worker// The integrity transform. If the hash is included, it can be verified. 60*6fa6b5e2SAndroid Build Coastguard Worker// Otherwise, it can be retrieved after reading or writing with the 61*6fa6b5e2SAndroid Build Coastguard Worker// ComputedUri API. 62*6fa6b5e2SAndroid Build Coastguard Worker// 63*6fa6b5e2SAndroid Build Coastguard Worker// eg "integrity", "integrity(sha256=12345)" 64*6fa6b5e2SAndroid Build Coastguard Workermessage IntegrityTransform { 65*6fa6b5e2SAndroid Build Coastguard Worker oneof hash { 66*6fa6b5e2SAndroid Build Coastguard Worker string sha256 = 1; 67*6fa6b5e2SAndroid Build Coastguard Worker } 68*6fa6b5e2SAndroid Build Coastguard Worker} 69*6fa6b5e2SAndroid Build Coastguard Worker 70*6fa6b5e2SAndroid Build Coastguard Worker// The ZIP decompress transform. It requires a target file param. 71*6fa6b5e2SAndroid Build Coastguard Workermessage ZipTransform { 72*6fa6b5e2SAndroid Build Coastguard Worker // required 73*6fa6b5e2SAndroid Build Coastguard Worker optional string target = 1; 74*6fa6b5e2SAndroid Build Coastguard Worker} 75*6fa6b5e2SAndroid Build Coastguard Worker 76*6fa6b5e2SAndroid Build Coastguard Worker// A custom transform. The transform with the specified name must be registered 77*6fa6b5e2SAndroid Build Coastguard Worker// with MobStore FileStorage. 78*6fa6b5e2SAndroid Build Coastguard Workermessage CustomTransform { 79*6fa6b5e2SAndroid Build Coastguard Worker // required 80*6fa6b5e2SAndroid Build Coastguard Worker optional string name = 1; 81*6fa6b5e2SAndroid Build Coastguard Worker 82*6fa6b5e2SAndroid Build Coastguard Worker message SubParam { 83*6fa6b5e2SAndroid Build Coastguard Worker // required 84*6fa6b5e2SAndroid Build Coastguard Worker optional string key = 1; 85*6fa6b5e2SAndroid Build Coastguard Worker optional string value = 2; 86*6fa6b5e2SAndroid Build Coastguard Worker } 87*6fa6b5e2SAndroid Build Coastguard Worker repeated SubParam subparam = 2; 88*6fa6b5e2SAndroid Build Coastguard Worker} 89