Sha256: 33597cba6a84fdf7226ed83f9577c297b316674c08429ee2435e27203448dbc9
Contents?: true
Size: 1.24 KB
Versions: 1
Compression:
Stored size: 1.24 KB
Contents
# typed: false # frozen_string_literal: true require 'openssl' require_relative 'decompressor' module MooTool # Module for Apple's IMG4 encryption and signing format module Img4 # An instance of a IMG4 file class File attr_reader :payload, :manifest def initialize(path) @path = path der = ::File.binread(path) @data = OpenSSL::ASN1.decode(der) case @data.first.value when 'IM4P' @type = @data.value[1].value @build = @data.value[2].value @payload = MooTool::Decompressor.new(@data.value[3].value).value when 'IMG4', 'IM4M' raise 'Not implemented' else raise "Unknown IMG4 type #{@data.first.value}" end @manifest = Digest.new(@payload) if @payload.start_with?('IM4M') end def payload? !@payload.nil? end def manifest? !@manifest.nil? end def basename basename = ::File.basename(@path) extension = ::File.extname(basename) "#{basename.chomp(extension)}.#{@type}" end def extract_payload output_path = ::File.join(::File.dirname(@path), basename) ::File.write(output_path, @payload) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mootool-0.2.8 | lib/mootool/models/img4.rb |