xref: /aosp_15_r20/external/mobile-data-download/proto/transform.proto (revision 6fa6b5e213d87a73421ed761ee7d492115d5f98c)
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