89 lines
2.5 KiB
Protocol Buffer
89 lines
2.5 KiB
Protocol Buffer
// 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;
|
|
}
|