Class: Sigstore::TUF::Roles

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/sigstore/tuf/roles.rb

Instance Method Summary collapse

Constructor Details

#initialize(data, keys) ⇒ Roles

Returns a new instance of Roles.



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/sigstore/tuf/roles.rb', line 21

def initialize(data, keys)
  @roles =
    case data
    when Hash # root roles
      data.to_h do |role_name, role_data|
        role_data = role_data.merge("name" => role_name, "paths" => nil)
        role = Role.new(role_data, keys)
        [role.name, role]
      end
    when Array # targets roles
      data.to_h do |role_data|
        role = Role.new(role_data, keys)
        [role.name, role]
      end
    else
      raise ArgumentError, "Unexpected data: #{data.inspect}"
    end
end

Instance Method Details

#eachObject



40
41
42
# File 'lib/sigstore/tuf/roles.rb', line 40

def each(&)
  @roles.each(&)
end

#fetch(name) ⇒ Object



49
50
51
# File 'lib/sigstore/tuf/roles.rb', line 49

def fetch(name)
  @roles.fetch(name)
end

#for_target(target_path) ⇒ Object



53
54
55
56
57
58
# File 'lib/sigstore/tuf/roles.rb', line 53

def for_target(target_path)
  select do |_, role|
    # TODO: this needs to be tested
    role.paths.any? { |path| File.fnmatch?(path, target_path, File::FNM_PATHNAME) }
  end.to_h
end

#verify_delegate(type, bytes, signatures) ⇒ Object



44
45
46
47
# File 'lib/sigstore/tuf/roles.rb', line 44

def verify_delegate(type, bytes, signatures)
  role = fetch(type)
  role.verify_delegate(type, bytes, signatures)
end