# -*- coding: utf-8 -*-
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: chromiumos/signing.proto
"""Generated protocol buffer code."""
from chromite.third_party.google.protobuf.internal import builder as _builder
from chromite.third_party.google.protobuf import descriptor as _descriptor
from chromite.third_party.google.protobuf import descriptor_pool as _descriptor_pool
from chromite.third_party.google.protobuf import symbol_database as _symbol_database
# @@protoc_insertion_point(imports)

_sym_db = _symbol_database.Default()


from chromite.api.gen.chromiumos import build_report_pb2 as chromiumos_dot_build__report__pb2
from chromite.api.gen.chromiumos import common_pb2 as chromiumos_dot_common__pb2


DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18\x63hromiumos/signing.proto\x12\nchromiumos\x1a\x1d\x63hromiumos/build_report.proto\x1a\x17\x63hromiumos/common.proto\"\x98\x02\n\rSigningConfig\x12\x14\n\x0c\x64isplay_name\x18\x01 \x01(\t\x12\x0e\n\x06keyset\x18\x02 \x01(\t\x12$\n\x07\x63hannel\x18\n \x01(\x0e\x32\x13.chromiumos.Channel\x12)\n\nimage_type\x18\x03 \x01(\x0e\x32\x15.chromiumos.ImageType\x12\x14\n\x0crecovery_zip\x18\x04 \x01(\x08\x12\x1a\n\x12\x65nsure_no_password\x18\x05 \x01(\x08\x12\x17\n\x0f\x66irmware_update\x18\x06 \x01(\x08\x12\x13\n\x0binput_files\x18\x07 \x03(\t\x12\x14\n\x0coutput_names\x18\x08 \x03(\t\x12\x14\n\x0c\x61rchive_path\x18\t \x01(\tJ\x04\x08\x0b\x10\x0c\"\x85\x01\n\x18\x42uildTargetSigningConfig\x12\x14\n\x0c\x62uild_target\x18\x01 \x01(\t\x12\x0e\n\x06keyset\x18\x03 \x01(\t\x12\x0f\n\x07version\x18\x04 \x01(\t\x12\x32\n\x0fsigning_configs\x18\x02 \x03(\x0b\x32\x19.chromiumos.SigningConfig\"g\n\x19\x42uildTargetSigningConfigs\x12J\n\x1c\x62uild_target_signing_configs\x18\x01 \x03(\x0b\x32$.chromiumos.BuildTargetSigningConfig\"\x8e\x01\n\x0eSignedArtifact\x12)\n\x06status\x18\x01 \x01(\x0e\x32\x19.chromiumos.SigningStatus\x12\x1c\n\x14signed_artifact_name\x18\x02 \x01(\t\x12\x33\n\x0f\x61rtifact_hashes\x18\x03 \x01(\x0b\x32\x1a.chromiumos.ArtifactHashes\"\xff\x02\n\x10\x41rchiveArtifacts\x12\x1a\n\x12input_archive_name\x18\x01 \x01(\t\x12)\n\nimage_type\x18\x07 \x01(\x0e\x32\x15.chromiumos.ImageType\x12\x0e\n\x06keyset\x18\x02 \x01(\t\x12\x14\n\x0ckeyset_is_mp\x18\n \x01(\x08\x12\x34\n\x10signed_artifacts\x18\x03 \x03(\x0b\x32\x1a.chromiumos.SignedArtifact\x12\x14\n\x0c\x62uild_target\x18\x04 \x01(\t\x12$\n\x07\x63hannel\x18\x05 \x01(\x0e\x32\x13.chromiumos.Channel\x12\x33\n\x0fkeyset_versions\x18\x08 \x01(\x0b\x32\x1a.chromiumos.KeysetVersions\x12Q\n\x0esigning_status\x18\t \x01(\x0e\x32\x39.chromiumos.BuildReport.SignedBuildMetadata.SigningStatusJ\x04\x08\x06\x10\x07\"U\n\x1a\x42uildTargetSignedArtifacts\x12\x37\n\x11\x61rchive_artifacts\x18\x01 \x03(\x0b\x32\x1c.chromiumos.ArchiveArtifacts\"|\n\x0eKeysetVersions\x12\x1c\n\x14\x66irmware_key_version\x18\x01 \x01(\x05\x12\x18\n\x10\x66irmware_version\x18\x02 \x01(\x05\x12\x1a\n\x12kernel_key_version\x18\x03 \x01(\x05\x12\x16\n\x0ekernel_version\x18\x04 \x01(\x05\"P\n\x0e\x41rtifactHashes\x12\x12\n\nsigned_md5\x18\x01 \x01(\t\x12\x13\n\x0bsigned_sha1\x18\x02 \x01(\t\x12\x15\n\rsigned_sha256\x18\x03 \x01(\t*M\n\rSigningStatus\x12\x14\n\x10STATUS_UNDEFINED\x10\x00\x12\x12\n\x0eSTATUS_SUCCESS\x10\x01\x12\x12\n\x0eSTATUS_FAILURE\x10\x02\x42Y\n!com.google.chrome.crosinfra.protoZ4go.chromium.org/chromiumos/infra/proto/go/chromiumosb\x06proto3')

_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'chromiumos.signing_pb2', globals())
if _descriptor._USE_C_DESCRIPTORS == False:

  DESCRIPTOR._options = None
  DESCRIPTOR._serialized_options = b'\n!com.google.chrome.crosinfra.protoZ4go.chromium.org/chromiumos/infra/proto/go/chromiumos'
  _SIGNINGSTATUS._serialized_start=1446
  _SIGNINGSTATUS._serialized_end=1523
  _SIGNINGCONFIG._serialized_start=97
  _SIGNINGCONFIG._serialized_end=377
  _BUILDTARGETSIGNINGCONFIG._serialized_start=380
  _BUILDTARGETSIGNINGCONFIG._serialized_end=513
  _BUILDTARGETSIGNINGCONFIGS._serialized_start=515
  _BUILDTARGETSIGNINGCONFIGS._serialized_end=618
  _SIGNEDARTIFACT._serialized_start=621
  _SIGNEDARTIFACT._serialized_end=763
  _ARCHIVEARTIFACTS._serialized_start=766
  _ARCHIVEARTIFACTS._serialized_end=1149
  _BUILDTARGETSIGNEDARTIFACTS._serialized_start=1151
  _BUILDTARGETSIGNEDARTIFACTS._serialized_end=1236
  _KEYSETVERSIONS._serialized_start=1238
  _KEYSETVERSIONS._serialized_end=1362
  _ARTIFACTHASHES._serialized_start=1364
  _ARTIFACTHASHES._serialized_end=1444
# @@protoc_insertion_point(module_scope)
