blob: a8b2e8550289047e72ffe82af2da0e3e0a0566f4 [file] [log] [blame]
// 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;
}