| // Copyright 2023 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 | |
| // | |
| // https://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 = "proto3"; | |
| package privacy.ppn; | |
| import "quiche/blind_sign_auth/proto/attestation.proto"; | |
| import "quiche/blind_sign_auth/proto/proxy_layer.proto"; | |
| import "quiche/blind_sign_auth/proto/public_metadata.proto"; | |
| import "anonymous_tokens/proto/anonymous_tokens.proto"; | |
| option java_multiple_files = true; | |
| option java_package = "com.google.privacy.ppn.proto"; | |
| // Request data needed to prepare for AuthAndSign. | |
| message GetInitialDataRequest { | |
| // Whether the client wants to use attestation as part of authentication. | |
| bool use_attestation = 1; | |
| // A string uniquely identifying the strategy this client should be | |
| // authenticated with. | |
| string service_type = 2; | |
| enum LocationGranularity { | |
| UNKNOWN = 0; | |
| COUNTRY = 1; | |
| // Geographic area with population greater than 1 million. | |
| CITY_GEOS = 2; | |
| } | |
| // The user selected granularity of exit IP location. | |
| LocationGranularity location_granularity = 3; | |
| // Indicates what validation rules the client uses for public metadata. | |
| int64 validation_version = 4; | |
| // Only set for some service types where multi layer proxies are supported. | |
| ProxyLayer proxy_layer = 5; | |
| } | |
| // Contains data needed to perform blind signing and prepare for calling | |
| // AuthAndSign. | |
| message GetInitialDataResponse { | |
| reserved 4; | |
| anonymous_tokens.RSABlindSignaturePublicKey | |
| at_public_metadata_public_key = 1; | |
| // Version will match the validation version in the request. | |
| privacy.ppn.PublicMetadataInfo public_metadata_info = 2; | |
| // Data needed to set up attestation, included if use_attestation is true or | |
| // if the service_type input requires it. | |
| privacy.ppn.PrepareAttestationData attestation = 3; | |
| // Data needed to support the privacy pass specification. | |
| message PrivacyPassData { | |
| bytes token_key_id = 1; | |
| bytes public_metadata_extensions = 2; | |
| } | |
| PrivacyPassData privacy_pass_data = 5; | |
| } |