# frozen_string_literal: true

# Copyright 2021 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.

# Auto-generated by gapic-generator-ruby. DO NOT EDIT!


module Grafeas
  module V1
    # Note kind that represents a logical attestation "role" or "authority". For
    # example, an organization might have one `Authority` for "QA" and one for
    # "build". This note is intended to act strictly as a grouping mechanism for
    # the attached occurrences (Attestations). This grouping mechanism also
    # provides a security boundary, since IAM ACLs gate the ability for a principle
    # to attach an occurrence to a given note. It also provides a single point of
    # lookup to find all attached attestation occurrences, even if they don't all
    # live in the same project.
    # @!attribute [rw] hint
    #   @return [::Grafeas::V1::AttestationNote::Hint]
    #     Hint hints at the purpose of the attestation authority.
    class AttestationNote
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods

      # This submessage provides human-readable hints about the purpose of the
      # authority. Because the name of a note acts as its resource reference, it is
      # important to disambiguate the canonical name of the Note (which might be a
      # UUID for security purposes) from "readable" names more suitable for debug
      # output. Note that these hints should not be used to look up authorities in
      # security sensitive contexts, such as when looking up attestations to
      # verify.
      # @!attribute [rw] human_readable_name
      #   @return [::String]
      #     Required. The human readable name of this attestation authority, for
      #     example "qa".
      class Hint
        include ::Google::Protobuf::MessageExts
        extend ::Google::Protobuf::MessageExts::ClassMethods
      end
    end

    # @!attribute [rw] compact_jwt
    #   @return [::String]
    #     The compact encoding of a JWS, which is always three base64 encoded strings
    #     joined by periods. For details, see:
    #     https://tools.ietf.org/html/rfc7515.html#section-3.1
    class Jwt
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end

    # Occurrence that represents a single "attestation". The authenticity of an
    # attestation can be verified using the attached signature. If the verifier
    # trusts the public key of the signer, then verifying the signature is
    # sufficient to establish trust. In this circumstance, the authority to which
    # this attestation is attached is primarily useful for lookup (how to find
    # this attestation if you already know the authority and artifact to be
    # verified) and intent (for which authority this attestation was intended to
    # sign.
    # @!attribute [rw] serialized_payload
    #   @return [::String]
    #     Required. The serialized payload that is verified by one or more
    #     `signatures`.
    # @!attribute [rw] signatures
    #   @return [::Array<::Grafeas::V1::Signature>]
    #     One or more signatures over `serialized_payload`.  Verifier implementations
    #     should consider this attestation message verified if at least one
    #     `signature` verifies `serialized_payload`.  See `Signature` in common.proto
    #     for more details on signature structure and verification.
    # @!attribute [rw] jwts
    #   @return [::Array<::Grafeas::V1::Jwt>]
    #     One or more JWTs encoding a self-contained attestation.
    #     Each JWT encodes the payload that it verifies within the JWT itself.
    #     Verifier implementation SHOULD ignore the `serialized_payload` field
    #     when verifying these JWTs.
    #     If only JWTs are present on this AttestationOccurrence, then the
    #     `serialized_payload` SHOULD be left empty.
    #     Each JWT SHOULD encode a claim specific to the `resource_uri` of this
    #     Occurrence, but this is not validated by Grafeas metadata API
    #     implementations.  The JWT itself is opaque to Grafeas.
    class AttestationOccurrence
      include ::Google::Protobuf::MessageExts
      extend ::Google::Protobuf::MessageExts::ClassMethods
    end
  end
end
