/* Copyright 2018 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 = "proto2";

package securegcm;

option java_package = "com.google.security.cryptauth.lib.securegcm";
option java_outer_classname = "SecureGcmPasswordlessAuthProto";
option objc_class_prefix = "SGCM";


message IdentityAssertion {

  // Browser data contains the challenge, origin, etc.
  optional bytes browser_data_hash = 1;

  // A counter that we expect to increase.
  optional int64 counter = 2;

  // An integer encoding whether the user actively approved this assertion,
  // or whether the phone auto-issued the assertion.
  // Possible values are:
  // 1: User explicitly approved the login.
  // 0: Phone approved login without consulting the user.
  optional int32 user_approval = 3;
}
