Sha256: ce130cffb2d843d617d820ba00240a9d8e6807f698a22f25ac4ef756be13c62e

Contents?: true

Size: 721 Bytes

Versions: 3

Compression:

Stored size: 721 Bytes

Contents

module EFIValidate
  class EALFParser
    class EALFParseError < Exception; end

    attr_reader :header, :rows

    def initialize(data)
      @header = EFIValidate::EALFHeader.read(data, 97)

      raise EALFParseError, 'File header magic mismatch.' unless @header.ealf_magic == EFIValidate::EALFHeader::EALF_MAGIC
      raise EALFParseError, 'Only SHA256 EALF is supported.' unless @header.ealf_hash_function == EFIValidate::EALFHeader::EALF_HASH_SHA256

      @rows = []
      @header.ealf_rows.times do
        @rows << EFIValidate::EALFRow.read(data, @header.row_size).tap { |row| row.header = @header }
      end
    end

    def self.read(file)
      EFIValidate::EALFParser.new(File.open(file))
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
efivalidate-1.2.0 lib/efivalidate/ealf_parser.rb
efivalidate-1.1.0 lib/efivalidate/ealf_parser.rb
efivalidate-1.0.0 lib/efivalidate/ealf_parser.rb