Sha256: 322328de1e0cfd075d67956f38ea079a4604ac48dad02323c2abcc598d954193

Contents?: true

Size: 1.08 KB

Versions: 1

Compression:

Stored size: 1.08 KB

Contents

# frozen_string_literal: true

require "tpm/key_attestation/version"
require "tpm/certify_validator"

module TPM
  class KeyAttestation
    class Error < StandardError; end

    attr_reader :certify_info, :signature, :certified_object, :signing_key, :algorithm, :qualifying_data

    def initialize(certify_info, signature, certified_object, signing_key, qualifying_data, algorithm: "RS256")
      @certify_info = certify_info
      @signature = signature

      @certified_object = certified_object
      @signing_key = signing_key
      @algorithm = algorithm
      @qualifying_data = qualifying_data
    end

    def key
      if certify_validator.valid?(signing_key)
        public_area.key
      end
    end

    def valid?
      !!key
    end

    private

    def certify_validator
      @certify_validator ||=
        TPM::CertifyValidator.new(
          certify_info,
          signature,
          qualifying_data,
          certified_object,
          algorithm: algorithm
        )
    end

    def public_area
      @public_area ||= TPM::PublicArea.new(certified_object)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tpm-key_attestation-0.5.0 lib/tpm/key_attestation.rb